roosterjs 9.55.0 → 9.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/rooster.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- // Type definitions for roosterjs (Version 9.55.0)
1
+ // Type definitions for roosterjs (Version 9.56.0)
2
2
  // Generated by dts tool from roosterjs
3
3
  // Project: https://github.com/Microsoft/roosterjs
4
4
 
@@ -103,6 +103,11 @@ type ContentModelHyperLinkFormat = LinkFormat & TextColorFormat & BackgroundColo
103
103
  */
104
104
  type ContentModelCodeFormat = FontFamilyFormat & DisplayFormat;
105
105
 
106
+ /**
107
+ * The format object for a data element (<data>) in Content Model
108
+ */
109
+ type ContentModelDataFormat = DataValueFormat;
110
+
106
111
  /**
107
112
  * Type for FormatContainer
108
113
  */
@@ -217,6 +222,10 @@ interface ContentModelFormatMap {
217
222
  * Format type for code
218
223
  */
219
224
  code: FontFamilyFormat;
225
+ /**
226
+ * Format type for data, used by HTML <data> element
227
+ */
228
+ data: ContentModelDataFormat;
220
229
  /**
221
230
  * Format type for dataset
222
231
  */
@@ -285,6 +294,10 @@ interface FormatHandlerTypeMap {
285
294
  * Format for DatasetFormat
286
295
  */
287
296
  dataset: DatasetFormat;
297
+ /**
298
+ * Format for DataValueFormat, used by HTML <data> element
299
+ */
300
+ dataValue: DataValueFormat;
288
301
  /**
289
302
  * Format for DirectionFormat
290
303
  */
@@ -506,6 +519,16 @@ type LetterSpacingFormat = {
506
519
  letterSpacing?: string;
507
520
  };
508
521
 
522
+ /**
523
+ * Format of the value of a HTML "data" element
524
+ */
525
+ type DataValueFormat = {
526
+ /**
527
+ * The machine-readable value, represented by the "value" attribute of a HTML "data" element
528
+ */
529
+ dataValue?: string;
530
+ };
531
+
509
532
  /**
510
533
  * Format of line height
511
534
  */
@@ -2171,6 +2194,10 @@ interface ContentModelSegmentBase<T extends ContentModelSegmentType, TFormat ext
2171
2194
  * Code info
2172
2195
  */
2173
2196
  code?: ContentModelCode;
2197
+ /**
2198
+ * Data info, used by HTML &lt;data&gt; element
2199
+ */
2200
+ data?: ContentModelData;
2174
2201
  }
2175
2202
 
2176
2203
  /**
@@ -2195,6 +2222,10 @@ interface ReadonlyContentModelSegmentBase<T extends ContentModelSegmentType, TFo
2195
2222
  * Code info
2196
2223
  */
2197
2224
  readonly code?: ReadonlyContentModelCode;
2225
+ /**
2226
+ * Data info, used by HTML &lt;data&gt; element
2227
+ */
2228
+ readonly data?: ReadonlyContentModelData;
2198
2229
  }
2199
2230
 
2200
2231
  /**
@@ -2209,6 +2240,10 @@ interface ShallowMutableContentModelSegmentBase<T extends ContentModelSegmentTyp
2209
2240
  * Code info
2210
2241
  */
2211
2242
  code?: ContentModelCode;
2243
+ /**
2244
+ * Data info, used by HTML &lt;data&gt; element
2245
+ */
2246
+ data?: ContentModelData;
2212
2247
  }
2213
2248
 
2214
2249
  /**
@@ -2240,6 +2275,22 @@ interface ContentModelCode extends MutableMark, ContentModelWithFormat<ContentMo
2240
2275
  * since code is also a kind of segment, with some extra information
2241
2276
  */
2242
2277
  interface ReadonlyContentModelCode extends ReadonlyMark, ReadonlyContentModelWithFormat<ContentModelCodeFormat> {
2278
+ }
2279
+
2280
+ /**
2281
+ * Represent data info of Content Model, used by HTML &lt;data&gt; element.
2282
+ * ContentModelData is a decorator but not a standalone model type, instead it need to be put inside a ContentModelSegment
2283
+ * since the &lt;data&gt; element is also a kind of segment, with some extra information
2284
+ */
2285
+ interface ContentModelData extends MutableMark, ContentModelWithFormat<ContentModelDataFormat> {
2286
+ }
2287
+
2288
+ /**
2289
+ * Represent data info of Content Model, used by HTML &lt;data&gt; element. (Readonly)
2290
+ * ContentModelData is a decorator but not a standalone model type, instead it need to be put inside a ContentModelSegment
2291
+ * since the &lt;data&gt; element is also a kind of segment, with some extra information
2292
+ */
2293
+ interface ReadonlyContentModelData extends ReadonlyMark, ReadonlyContentModelWithFormat<ContentModelDataFormat> {
2243
2294
  }
2244
2295
 
2245
2296
  /**
@@ -2287,12 +2338,12 @@ interface ReadonlyContentModelParagraphDecorator extends ReadonlyMark, ReadonlyC
2287
2338
  /**
2288
2339
  * Union type for segment decorators
2289
2340
  */
2290
- type ContentModelDecorator = ContentModelLink | ContentModelCode | ContentModelListLevel;
2341
+ type ContentModelDecorator = ContentModelLink | ContentModelCode | ContentModelData | ContentModelListLevel;
2291
2342
 
2292
2343
  /**
2293
2344
  * Union type for segment decorators (Readonly)
2294
2345
  */
2295
- type ReadonlyContentModelDecorator = ReadonlyContentModelLink | ReadonlyContentModelCode | ReadonlyContentModelListLevel;
2346
+ type ReadonlyContentModelDecorator = ReadonlyContentModelLink | ReadonlyContentModelCode | ReadonlyContentModelData | ReadonlyContentModelListLevel;
2296
2347
 
2297
2348
  /**
2298
2349
  * Content Model of List Level
@@ -3048,6 +3099,10 @@ interface DomToModelDecoratorContext {
3048
3099
  * Context of code info
3049
3100
  */
3050
3101
  code: ContentModelCode;
3102
+ /**
3103
+ * Context of data info, used by HTML &lt;data&gt; element
3104
+ */
3105
+ data: ContentModelData;
3051
3106
  /**
3052
3107
  * Context for paragraph decorator
3053
3108
  */
@@ -7363,9 +7418,10 @@ function createTableCell(spanLeftOrColSpan?: boolean | number, spanAboveOrRowSpa
7363
7418
  * @param text Text of this model
7364
7419
  * @param format @optional The format of this model
7365
7420
  * @param link @optional The link decorator
7366
- * @param code @option The code decorator
7421
+ * @param code @optional The code decorator
7422
+ * @param data @optional The data decorator
7367
7423
  */
7368
- function createText(text: string, format?: Readonly<ContentModelSegmentFormat>, link?: ReadonlyContentModelLink, code?: ReadonlyContentModelCode): ContentModelText;
7424
+ function createText(text: string, format?: Readonly<ContentModelSegmentFormat>, link?: ReadonlyContentModelLink, code?: ReadonlyContentModelCode, data?: ReadonlyContentModelData): ContentModelText;
7369
7425
 
7370
7426
  /**
7371
7427
  * Create a ContentModelImage model
package/dist/rooster.js CHANGED
@@ -16812,6 +16812,8 @@ function createAriaLiveElement(document) {
16812
16812
  div.style.height = '1px';
16813
16813
  div.style.overflow = 'hidden';
16814
16814
  div.style.position = 'absolute';
16815
+ div.style.top = '0';
16816
+ div.style.left = '0';
16815
16817
  div.style.whiteSpace = 'nowrap';
16816
16818
  div.style.width = '1px';
16817
16819
  div.ariaLive = 'assertive';
@@ -17613,6 +17615,9 @@ function createDomToModelDecoratorContext() {
17613
17615
  code: {
17614
17616
  format: {},
17615
17617
  },
17618
+ data: {
17619
+ format: {},
17620
+ },
17616
17621
  blockDecorator: {
17617
17622
  format: {},
17618
17623
  tagName: '',
@@ -17684,6 +17689,7 @@ exports.defaultProcessorMap = void 0;
17684
17689
  var brProcessor_1 = __webpack_require__(/*! ../processors/brProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/brProcessor.ts");
17685
17690
  var childProcessor_1 = __webpack_require__(/*! ../processors/childProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/childProcessor.ts");
17686
17691
  var codeProcessor_1 = __webpack_require__(/*! ../processors/codeProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/codeProcessor.ts");
17692
+ var dataProcessor_1 = __webpack_require__(/*! ../processors/dataProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/dataProcessor.ts");
17687
17693
  var delimiterProcessor_1 = __webpack_require__(/*! ../processors/delimiterProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts");
17688
17694
  var elementProcessor_1 = __webpack_require__(/*! ../processors/elementProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/elementProcessor.ts");
17689
17695
  var entityProcessor_1 = __webpack_require__(/*! ../processors/entityProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts");
@@ -17710,6 +17716,7 @@ exports.defaultProcessorMap = {
17710
17716
  blockquote: knownElementProcessor_1.knownElementProcessor,
17711
17717
  br: brProcessor_1.brProcessor,
17712
17718
  code: codeProcessor_1.codeProcessor,
17719
+ data: dataProcessor_1.dataProcessor,
17713
17720
  dd: formatContainerProcessor_1.formatContainerProcessor,
17714
17721
  del: knownElementProcessor_1.knownElementProcessor,
17715
17722
  div: knownElementProcessor_1.knownElementProcessor,
@@ -17965,6 +17972,33 @@ var codeProcessor = function (group, element, context) {
17965
17972
  exports.codeProcessor = codeProcessor;
17966
17973
 
17967
17974
 
17975
+ /***/ },
17976
+
17977
+ /***/ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/dataProcessor.ts"
17978
+ /*!*****************************************************************************************!*\
17979
+ !*** ./packages/roosterjs-content-model-dom/lib/domToModel/processors/dataProcessor.ts ***!
17980
+ \*****************************************************************************************/
17981
+ (__unused_webpack_module, exports, __webpack_require__) {
17982
+
17983
+ "use strict";
17984
+
17985
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
17986
+ exports.dataProcessor = void 0;
17987
+ var knownElementProcessor_1 = __webpack_require__(/*! ./knownElementProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/knownElementProcessor.ts");
17988
+ var parseFormat_1 = __webpack_require__(/*! ../utils/parseFormat */ "./packages/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts");
17989
+ var stackFormat_1 = __webpack_require__(/*! ../utils/stackFormat */ "./packages/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts");
17990
+ /**
17991
+ * @internal
17992
+ */
17993
+ var dataProcessor = function (group, element, context) {
17994
+ (0, stackFormat_1.stackFormat)(context, { data: 'empty' }, function () {
17995
+ (0, parseFormat_1.parseFormat)(element, context.formatParsers.data, context.data.format, context);
17996
+ (0, knownElementProcessor_1.knownElementProcessor)(group, element, context);
17997
+ });
17998
+ };
17999
+ exports.dataProcessor = dataProcessor;
18000
+
18001
+
17968
18002
  /***/ },
17969
18003
 
17970
18004
  /***/ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts"
@@ -19403,13 +19437,14 @@ var SkippedStylesForTable = [
19403
19437
  * @internal
19404
19438
  */
19405
19439
  function stackFormat(context, options, callback) {
19406
- var segmentFormat = context.segmentFormat, blockFormat = context.blockFormat, linkFormat = context.link, codeFormat = context.code, decoratorFormat = context.blockDecorator;
19407
- var segment = options.segment, paragraph = options.paragraph, link = options.link, code = options.code, blockDecorator = options.blockDecorator;
19440
+ var segmentFormat = context.segmentFormat, blockFormat = context.blockFormat, linkFormat = context.link, codeFormat = context.code, dataFormat = context.data, decoratorFormat = context.blockDecorator;
19441
+ var segment = options.segment, paragraph = options.paragraph, link = options.link, code = options.code, data = options.data, blockDecorator = options.blockDecorator;
19408
19442
  try {
19409
19443
  context.segmentFormat = stackFormatInternal(segmentFormat, segment);
19410
19444
  context.blockFormat = stackFormatInternal(blockFormat, paragraph);
19411
19445
  context.link = stackLinkInternal(linkFormat, link);
19412
19446
  context.code = stackCodeInternal(codeFormat, code);
19447
+ context.data = stackDataInternal(dataFormat, data);
19413
19448
  context.blockDecorator = stackDecoratorInternal(decoratorFormat, blockDecorator);
19414
19449
  callback();
19415
19450
  }
@@ -19418,6 +19453,7 @@ function stackFormat(context, options, callback) {
19418
19453
  context.blockFormat = blockFormat;
19419
19454
  context.link = linkFormat;
19420
19455
  context.code = codeFormat;
19456
+ context.data = dataFormat;
19421
19457
  context.blockDecorator = decoratorFormat;
19422
19458
  }
19423
19459
  }
@@ -19460,6 +19496,16 @@ function stackCodeInternal(codeFormat, code) {
19460
19496
  return codeFormat;
19461
19497
  }
19462
19498
  }
19499
+ function stackDataInternal(dataFormat, data) {
19500
+ switch (data) {
19501
+ case 'empty':
19502
+ return {
19503
+ format: {},
19504
+ };
19505
+ default:
19506
+ return dataFormat;
19507
+ }
19508
+ }
19463
19509
  function stackDecoratorInternal(format, decorator) {
19464
19510
  switch (decorator) {
19465
19511
  case 'empty':
@@ -22242,6 +22288,7 @@ var borderColorFormatHandler_1 = __webpack_require__(/*! ./common/borderColorFor
22242
22288
  var borderFormatHandler_1 = __webpack_require__(/*! ./common/borderFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts");
22243
22289
  var boxShadowFormatHandler_1 = __webpack_require__(/*! ./common/boxShadowFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts");
22244
22290
  var datasetFormatHandler_1 = __webpack_require__(/*! ./common/datasetFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts");
22291
+ var dataValueFormatHandler_1 = __webpack_require__(/*! ./segment/dataValueFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/dataValueFormatHandler.ts");
22245
22292
  var directionFormatHandler_1 = __webpack_require__(/*! ./block/directionFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/block/directionFormatHandler.ts");
22246
22293
  var displayFormatHandler_1 = __webpack_require__(/*! ./block/displayFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/block/displayFormatHandler.ts");
22247
22294
  var entityFormatHandler_1 = __webpack_require__(/*! ./entity/entityFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/entity/entityFormatHandler.ts");
@@ -22287,6 +22334,7 @@ var defaultFormatHandlerMap = {
22287
22334
  borderColor: borderColorFormatHandler_1.borderColorFormatHandler,
22288
22335
  boxShadow: boxShadowFormatHandler_1.boxShadowFormatHandler,
22289
22336
  dataset: datasetFormatHandler_1.datasetFormatHandler,
22337
+ dataValue: dataValueFormatHandler_1.dataValueFormatHandler,
22290
22338
  direction: directionFormatHandler_1.directionFormatHandler,
22291
22339
  display: displayFormatHandler_1.displayFormatHandler,
22292
22340
  float: floatFormatHandler_1.floatFormatHandler,
@@ -22428,6 +22476,7 @@ exports.defaultFormatKeysPerCategory = {
22428
22476
  ],
22429
22477
  segmentUnderLink: ['textColor'],
22430
22478
  code: ['fontFamily', 'display'],
22479
+ data: ['dataValue'],
22431
22480
  dataset: ['dataset'],
22432
22481
  divider: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedBlockFormats), false), (0, tslib_1.__read)(sharedContainerFormats), false), ['display', 'size', 'htmlAlign'], false),
22433
22482
  container: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedContainerFormats), false), ['htmlAlign', 'size', 'display', 'id'], false),
@@ -22718,6 +22767,37 @@ exports.boldFormatHandler = {
22718
22767
  };
22719
22768
 
22720
22769
 
22770
+ /***/ },
22771
+
22772
+ /***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/dataValueFormatHandler.ts"
22773
+ /*!***************************************************************************************************!*\
22774
+ !*** ./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/dataValueFormatHandler.ts ***!
22775
+ \***************************************************************************************************/
22776
+ (__unused_webpack_module, exports) {
22777
+
22778
+ "use strict";
22779
+
22780
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
22781
+ exports.dataValueFormatHandler = void 0;
22782
+ /**
22783
+ * @internal
22784
+ * Format handler for the "value" attribute of a HTML &lt;data&gt; element
22785
+ */
22786
+ exports.dataValueFormatHandler = {
22787
+ parse: function (format, element) {
22788
+ var _a;
22789
+ if (element.hasAttribute('value')) {
22790
+ format.dataValue = (_a = element.getAttribute('value')) !== null && _a !== void 0 ? _a : '';
22791
+ }
22792
+ },
22793
+ apply: function (format, element) {
22794
+ if (format.dataValue != undefined) {
22795
+ element.setAttribute('value', format.dataValue);
22796
+ }
22797
+ },
22798
+ };
22799
+
22800
+
22721
22801
  /***/ },
22722
22802
 
22723
22803
  /***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/fontFamilyFormatHandler.ts"
@@ -23758,9 +23838,9 @@ exports.shouldSetValue = shouldSetValue;
23758
23838
 
23759
23839
  Object.defineProperty(exports, "__esModule", ({ value: true }));
23760
23840
  exports.createImage = exports.createText = exports.createTableCell = exports.createTable = exports.createSelectionMarker = exports.createParagraph = exports.createFormatContainer = exports.createListItem = exports.createBr = exports.isLinkUndeletable = exports.setLinkUndeletable = exports.scrollRectIntoView = exports.normalizeRect = exports.isWhiteSpacePreserved = exports.reuseCachedElement = exports.findClosestBlockEntityContainer = exports.isBlockEntityContainer = exports.isEntityDelimiter = exports.addDelimiters = exports.generateEntityClassNames = exports.parseEntityFormat = exports.getAllEntityWrappers = exports.findClosestEntityWrapper = exports.isEntityElement = exports.unwrap = exports.wrap = exports.wrapAllChildNodes = exports.moveChildNodes = exports.toArray = exports.getSafeIdSelector = exports.getObjectKeys = exports.isElementOfType = exports.isNodeOfType = exports.hasMetadata = exports.getMetadata = exports.updateMetadata = exports.buildSelectionMarker = exports.isBlockElement = exports.areSameFormats = exports.parseFormat = exports.getRegularSelectionOffsets = exports.formatContainerProcessor = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
23761
- exports.trimModelForSelection = exports.getDOMInsertPointRect = exports.getSelectionRootNode = exports.isBold = exports.createModelToDomConfig = exports.createModelToDomContextWithConfig = exports.createModelToDomContext = exports.createDomToModelConfig = exports.createDomToModelContextWithConfig = exports.createDomToModelContext = exports.defaultGenerateColorKey = exports.parseColor = exports.setColor = exports.getColor = exports.DeprecatedColors = exports.BorderKeys = exports.parseValueWithUnit = exports.getAutoListStyleType = exports.getOrderedListNumberStr = exports.ParagraphFormats = exports.ListFormatsToMove = exports.ListFormatsToKeep = exports.ListFormats = exports.copyFormat = exports.setParagraphNotImplicit = exports.normalizeSegmentFormat = exports.mergeTextSegments = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = exports.unwrapBlock = exports.isGeneralSegment = exports.normalizeContentModel = exports.normalizeParagraph = exports.addTextSegment = exports.addLink = exports.addCode = exports.addBlock = exports.mutateSegment = exports.mutateSegments = exports.mutateBlock = exports.createTableRow = exports.createEmptyModel = exports.createListLevel = exports.createDivider = exports.createEntity = exports.createGeneralBlock = exports.createGeneralSegment = exports.createParagraphDecorator = exports.createContentModelDocument = void 0;
23762
- exports.getClosestAncestorBlockGroupIndex = exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = exports.MIN_ALLOWED_TABLE_CELL_WIDTH = exports.normalizeTable = exports.setFirstColumnFormatBorders = exports.applyTableFormat = exports.deleteBlock = exports.deleteSegment = exports.deleteSelection = exports.mergeModel = exports.cloneModelForPaste = exports.cloneModel = exports.setSelection = exports.hasSelectionInBlockGroup = exports.hasSelectionInSegment = exports.hasSelectionInBlock = exports.getSelectedCells = exports.getSelectedSegmentsAndParagraphs = exports.getSelectedSegments = exports.getSelectedParagraphs = exports.getOperationalBlocks = exports.getFirstSelectedTable = exports.getFirstSelectedListItem = exports.iterateSelections = exports.isBlockGroupOfType = exports.getRangesByText = exports.getImageState = exports.setImageState = exports.getParagraphMarker = exports.setParagraphMarker = exports.cacheGetEventData = exports.extractClipboardItems = exports.normalizeFontFamily = exports.transformColor = exports.retrieveDocumentMetadata = exports.readFile = exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.getNodePositionFromEvent = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = void 0;
23763
- exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = exports.getTableMetadata = exports.updateTableMetadata = exports.getTableCellMetadata = exports.updateTableCellMetadata = exports.getImageMetadata = exports.updateImageMetadata = exports.runEditSteps = void 0;
23841
+ exports.getDOMInsertPointRect = exports.getSelectionRootNode = exports.isBold = exports.createModelToDomConfig = exports.createModelToDomContextWithConfig = exports.createModelToDomContext = exports.createDomToModelConfig = exports.createDomToModelContextWithConfig = exports.createDomToModelContext = exports.defaultGenerateColorKey = exports.parseColor = exports.setColor = exports.getColor = exports.DeprecatedColors = exports.BorderKeys = exports.parseValueWithUnit = exports.getAutoListStyleType = exports.getOrderedListNumberStr = exports.ParagraphFormats = exports.ListFormatsToMove = exports.ListFormatsToKeep = exports.ListFormats = exports.copyFormat = exports.setParagraphNotImplicit = exports.normalizeSegmentFormat = exports.mergeTextSegments = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = exports.unwrapBlock = exports.isGeneralSegment = exports.normalizeContentModel = exports.normalizeParagraph = exports.addTextSegment = exports.addLink = exports.addData = exports.addCode = exports.addBlock = exports.mutateSegment = exports.mutateSegments = exports.mutateBlock = exports.createTableRow = exports.createEmptyModel = exports.createListLevel = exports.createDivider = exports.createEntity = exports.createGeneralBlock = exports.createGeneralSegment = exports.createParagraphDecorator = exports.createContentModelDocument = void 0;
23842
+ exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = exports.MIN_ALLOWED_TABLE_CELL_WIDTH = exports.normalizeTable = exports.setFirstColumnFormatBorders = exports.applyTableFormat = exports.deleteBlock = exports.deleteSegment = exports.deleteSelection = exports.mergeModel = exports.cloneModelForPaste = exports.cloneModel = exports.setSelection = exports.hasSelectionInBlockGroup = exports.hasSelectionInSegment = exports.hasSelectionInBlock = exports.getSelectedCells = exports.getSelectedSegmentsAndParagraphs = exports.getSelectedSegments = exports.getSelectedParagraphs = exports.getOperationalBlocks = exports.getFirstSelectedTable = exports.getFirstSelectedListItem = exports.iterateSelections = exports.isBlockGroupOfType = exports.getRangesByText = exports.getImageState = exports.setImageState = exports.getParagraphMarker = exports.setParagraphMarker = exports.cacheGetEventData = exports.extractClipboardItems = exports.normalizeFontFamily = exports.transformColor = exports.retrieveDocumentMetadata = exports.readFile = exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.getNodePositionFromEvent = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = exports.trimModelForSelection = void 0;
23843
+ exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = exports.getTableMetadata = exports.updateTableMetadata = exports.getTableCellMetadata = exports.updateTableCellMetadata = exports.getImageMetadata = exports.updateImageMetadata = exports.runEditSteps = exports.getClosestAncestorBlockGroupIndex = void 0;
23764
23844
  var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
23765
23845
  Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
23766
23846
  var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
@@ -23874,7 +23954,9 @@ Object.defineProperty(exports, "addBlock", ({ enumerable: true, get: function ()
23874
23954
  var addDecorators_1 = __webpack_require__(/*! ./modelApi/common/addDecorators */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts");
23875
23955
  Object.defineProperty(exports, "addCode", ({ enumerable: true, get: function () { return addDecorators_1.addCode; } }));
23876
23956
  var addDecorators_2 = __webpack_require__(/*! ./modelApi/common/addDecorators */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts");
23877
- Object.defineProperty(exports, "addLink", ({ enumerable: true, get: function () { return addDecorators_2.addLink; } }));
23957
+ Object.defineProperty(exports, "addData", ({ enumerable: true, get: function () { return addDecorators_2.addData; } }));
23958
+ var addDecorators_3 = __webpack_require__(/*! ./modelApi/common/addDecorators */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts");
23959
+ Object.defineProperty(exports, "addLink", ({ enumerable: true, get: function () { return addDecorators_3.addLink; } }));
23878
23960
  var addTextSegment_1 = __webpack_require__(/*! ./modelApi/common/addTextSegment */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addTextSegment.ts");
23879
23961
  Object.defineProperty(exports, "addTextSegment", ({ enumerable: true, get: function () { return addTextSegment_1.addTextSegment; } }));
23880
23962
  var normalizeParagraph_1 = __webpack_require__(/*! ./modelApi/common/normalizeParagraph */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts");
@@ -24195,7 +24277,7 @@ exports.addBlock = addBlock;
24195
24277
  "use strict";
24196
24278
 
24197
24279
  Object.defineProperty(exports, "__esModule", ({ value: true }));
24198
- exports.addDecorators = exports.addCode = exports.addLink = void 0;
24280
+ exports.addDecorators = exports.addData = exports.addCode = exports.addLink = void 0;
24199
24281
  var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
24200
24282
  /**
24201
24283
  * @internal
@@ -24222,12 +24304,27 @@ function addCode(segment, code) {
24222
24304
  }
24223
24305
  }
24224
24306
  exports.addCode = addCode;
24307
+ /**
24308
+ * @internal
24309
+ * Add a data decorator into segment if any
24310
+ * @param segment The segment to add decorator to
24311
+ * @param data The data decorator to add
24312
+ */
24313
+ function addData(segment, data) {
24314
+ if (data.format.dataValue != undefined) {
24315
+ segment.data = {
24316
+ format: (0, tslib_1.__assign)({}, data.format),
24317
+ };
24318
+ }
24319
+ }
24320
+ exports.addData = addData;
24225
24321
  /**
24226
24322
  * @internal
24227
24323
  */
24228
24324
  function addDecorators(segment, context) {
24229
24325
  addLink(segment, context.link);
24230
24326
  addCode(segment, context.code);
24327
+ addData(segment, context.data);
24231
24328
  }
24232
24329
  exports.addDecorators = addDecorators;
24233
24330
 
@@ -24512,7 +24609,8 @@ function segmentsWithSameFormat(seg1, seg2) {
24512
24609
  return (!!seg1.isSelected == !!seg2.isSelected &&
24513
24610
  (0, areSameFormats_1.areSameFormats)(seg1.format, seg2.format) &&
24514
24611
  areSameLinks(seg1.link, seg2.link) &&
24515
- areSameCodes(seg1.code, seg2.code));
24612
+ areSameCodes(seg1.code, seg2.code) &&
24613
+ areSameData(seg1.data, seg2.data));
24516
24614
  }
24517
24615
  function areSameLinks(link1, link2) {
24518
24616
  return ((!link1 && !link2) ||
@@ -24524,6 +24622,9 @@ function areSameLinks(link1, link2) {
24524
24622
  function areSameCodes(code1, code2) {
24525
24623
  return (!code1 && !code2) || (code1 && code2 && (0, areSameFormats_1.areSameFormats)(code1.format, code2.format));
24526
24624
  }
24625
+ function areSameData(data1, data2) {
24626
+ return (!data1 && !data2) || (data1 && data2 && (0, areSameFormats_1.areSameFormats)(data1.format, data2.format));
24627
+ }
24527
24628
 
24528
24629
 
24529
24630
  /***/ },
@@ -25609,9 +25710,10 @@ var addDecorators_1 = __webpack_require__(/*! ../common/addDecorators */ "./pack
25609
25710
  * @param text Text of this model
25610
25711
  * @param format @optional The format of this model
25611
25712
  * @param link @optional The link decorator
25612
- * @param code @option The code decorator
25713
+ * @param code @optional The code decorator
25714
+ * @param data @optional The data decorator
25613
25715
  */
25614
- function createText(text, format, link, code) {
25716
+ function createText(text, format, link, code, data) {
25615
25717
  var result = {
25616
25718
  segmentType: 'Text',
25617
25719
  text: text,
@@ -25623,6 +25725,9 @@ function createText(text, format, link, code) {
25623
25725
  if (code) {
25624
25726
  (0, addDecorators_1.addCode)(result, code);
25625
25727
  }
25728
+ if (data) {
25729
+ (0, addDecorators_1.addData)(result, data);
25730
+ }
25626
25731
  return result;
25627
25732
  }
25628
25733
  exports.createText = createText;
@@ -26090,7 +26195,7 @@ function cloneBlockGroupBase(group, options) {
26090
26195
  };
26091
26196
  }
26092
26197
  function cloneSegmentBase(segment) {
26093
- var segmentType = segment.segmentType, isSelected = segment.isSelected, code = segment.code, link = segment.link;
26198
+ var segmentType = segment.segmentType, isSelected = segment.isSelected, code = segment.code, link = segment.link, data = segment.data;
26094
26199
  var newSegment = Object.assign({
26095
26200
  segmentType: segmentType,
26096
26201
  isSelected: isSelected,
@@ -26101,6 +26206,9 @@ function cloneSegmentBase(segment) {
26101
26206
  if (link) {
26102
26207
  newSegment.link = Object.assign(cloneModelWithFormat(link), cloneModelWithDataset(link));
26103
26208
  }
26209
+ if (data) {
26210
+ newSegment.data = cloneModelWithFormat(data);
26211
+ }
26104
26212
  return newSegment;
26105
26213
  }
26106
26214
  function cloneEntity(entity, options) {
@@ -30136,7 +30244,7 @@ var moveChildNodes_1 = __webpack_require__(/*! ../../domUtils/moveChildNodes */
30136
30244
  * @internal
30137
30245
  */
30138
30246
  var handleSegmentDecorator = function (_, parent, segment, context) {
30139
- var code = segment.code, link = segment.link;
30247
+ var code = segment.code, link = segment.link, data = segment.data;
30140
30248
  if ((0, isNodeOfType_1.isNodeOfType)(parent, 'ELEMENT_NODE')) {
30141
30249
  if (link) {
30142
30250
  (0, stackFormat_1.stackFormat)(context, 'a', function () {
@@ -30155,6 +30263,14 @@ var handleSegmentDecorator = function (_, parent, segment, context) {
30155
30263
  (_a = context.onNodeCreated) === null || _a === void 0 ? void 0 : _a.call(context, code, codeNode);
30156
30264
  });
30157
30265
  }
30266
+ if (data) {
30267
+ (0, stackFormat_1.stackFormat)(context, 'data', function () {
30268
+ var _a;
30269
+ var dataNode = (0, moveChildNodes_1.wrapAllChildNodes)(parent, 'data');
30270
+ (0, applyFormat_1.applyFormat)(dataNode, context.formatAppliers.data, data.format, context);
30271
+ (_a = context.onNodeCreated) === null || _a === void 0 ? void 0 : _a.call(context, data, dataNode);
30272
+ });
30273
+ }
30158
30274
  }
30159
30275
  };
30160
30276
  exports.handleSegmentDecorator = handleSegmentDecorator;
@@ -30339,7 +30455,20 @@ exports.handleText = handleText;
30339
30455
  Object.defineProperty(exports, "__esModule", ({ value: true }));
30340
30456
  exports.mergeNode = void 0;
30341
30457
  var isNodeOfType_1 = __webpack_require__(/*! ../../domUtils/isNodeOfType */ "./packages/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts");
30342
- var OptimizeTags = ['SPAN', 'B', 'EM', 'I', 'U', 'SUB', 'SUP', 'STRIKE', 'S', 'A', 'CODE'];
30458
+ var OptimizeTags = [
30459
+ 'SPAN',
30460
+ 'B',
30461
+ 'EM',
30462
+ 'I',
30463
+ 'U',
30464
+ 'SUB',
30465
+ 'SUP',
30466
+ 'STRIKE',
30467
+ 'S',
30468
+ 'A',
30469
+ 'CODE',
30470
+ 'DATA',
30471
+ ];
30343
30472
  /**
30344
30473
  * @internal
30345
30474
  */