roosterjs 9.4.0 → 9.4.1

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.4.0)
1
+ // Type definitions for roosterjs (Version 9.4.1)
2
2
  // Generated by dts tool from roosterjs
3
3
  // Project: https://github.com/Microsoft/roosterjs
4
4
 
package/dist/rooster.js CHANGED
@@ -8573,7 +8573,7 @@ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-mo
8573
8573
  */
8574
8574
  var formatContentModel = function (core, formatter, options, domToModelOptions) {
8575
8575
  var _a;
8576
- var _b = options || {}, apiName = _b.apiName, onNodeCreated = _b.onNodeCreated, getChangeData = _b.getChangeData, changeSource = _b.changeSource, rawEvent = _b.rawEvent, selectionOverride = _b.selectionOverride, scrollCaretIntoView = _b.scrollCaretIntoView;
8576
+ var _b = options || {}, onNodeCreated = _b.onNodeCreated, getChangeData = _b.getChangeData, rawEvent = _b.rawEvent, selectionOverride = _b.selectionOverride, scrollCaretIntoView = _b.scrollCaretIntoView;
8577
8577
  var model = core.api.createContentModel(core, domToModelOptions, selectionOverride);
8578
8578
  var context = {
8579
8579
  newEntities: [],
@@ -8607,9 +8607,9 @@ var formatContentModel = function (core, formatter, options, domToModelOptions)
8607
8607
  eventType: 'contentChanged',
8608
8608
  contentModel: clearModelCache ? undefined : model,
8609
8609
  selection: clearModelCache ? undefined : selection,
8610
- source: changeSource || roosterjs_content_model_dom_1.ChangeSource.Format,
8610
+ source: (options === null || options === void 0 ? void 0 : options.changeSource) || roosterjs_content_model_dom_1.ChangeSource.Format,
8611
8611
  data: getChangeData === null || getChangeData === void 0 ? void 0 : getChangeData(),
8612
- formatApiName: apiName,
8612
+ formatApiName: options === null || options === void 0 ? void 0 : options.apiName,
8613
8613
  changedEntities: getChangedEntities(context, rawEvent),
8614
8614
  };
8615
8615
  core.api.triggerEvent(core, eventData, true /*broadcast*/);
@@ -22190,6 +22190,21 @@ var mutate_1 = __webpack_require__(/*! ../common/mutate */ "./packages/roosterjs
22190
22190
  var normalizeContentModel_1 = __webpack_require__(/*! ../common/normalizeContentModel */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts");
22191
22191
  var normalizeTable_1 = __webpack_require__(/*! ./normalizeTable */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/normalizeTable.ts");
22192
22192
  var HeadingTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
22193
+ // An object to provide keys of required properties of segment format, do NOT use any of its values
22194
+ var RequiredEmptySegmentFormat = {
22195
+ backgroundColor: null,
22196
+ fontFamily: null,
22197
+ fontSize: null,
22198
+ fontWeight: null,
22199
+ italic: null,
22200
+ letterSpacing: null,
22201
+ lineHeight: null,
22202
+ strikethrough: null,
22203
+ superOrSubScriptSequence: null,
22204
+ textColor: null,
22205
+ underline: null,
22206
+ };
22207
+ var KeysOfSegmentFormat = (0, getObjectKeys_1.getObjectKeys)(RequiredEmptySegmentFormat);
22193
22208
  /**
22194
22209
  * Merge source model into target mode
22195
22210
  * @param target Target Content Model that will merge content into
@@ -22421,6 +22436,9 @@ function applyDefaultFormat(group, format, applyDefaultFormatOption) {
22421
22436
  applyDefaultFormat(segment, format, applyDefaultFormatOption);
22422
22437
  }
22423
22438
  segment.format = mergeSegmentFormat(applyDefaultFormatOption, format, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, paragraphFormat_1), segment.format));
22439
+ if (segment.link) {
22440
+ segment.link.format = mergeSegmentFormat(applyDefaultFormatOption, getSegmentFormatInLinkFormat(format), segment.link.format);
22441
+ }
22424
22442
  });
22425
22443
  if (applyDefaultFormatOption === 'keepSourceEmphasisFormat') {
22426
22444
  delete paragraph.decorator;
@@ -22434,9 +22452,26 @@ function mergeBlockFormat(applyDefaultFormatOption, block) {
22434
22452
  delete (0, mutate_1.mutateBlock)(block).format.backgroundColor;
22435
22453
  }
22436
22454
  }
22455
+ /**
22456
+ * Hyperlink format type definition only contains textColor, backgroundColor and underline.
22457
+ * So create a minimum object with the styles supported in Hyperlink to be used in merge.
22458
+ */
22459
+ function getSegmentFormatInLinkFormat(targetFormat) {
22460
+ var result = {};
22461
+ if (targetFormat.textColor) {
22462
+ result.textColor = targetFormat.textColor;
22463
+ }
22464
+ if (targetFormat.backgroundColor) {
22465
+ result.backgroundColor = targetFormat.backgroundColor;
22466
+ }
22467
+ if (targetFormat.underline) {
22468
+ result.underline = targetFormat.underline;
22469
+ }
22470
+ return result;
22471
+ }
22437
22472
  function mergeSegmentFormat(applyDefaultFormatOption, targetFormat, sourceFormat) {
22438
22473
  return applyDefaultFormatOption == 'mergeAll'
22439
- ? (0, tslib_1.__assign)((0, tslib_1.__assign)({}, targetFormat), sourceFormat) : (0, tslib_1.__assign)((0, tslib_1.__assign)({}, targetFormat), getSemanticFormat(sourceFormat));
22474
+ ? (0, tslib_1.__assign)((0, tslib_1.__assign)({}, targetFormat), sourceFormat) : (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, getFormatWithoutSegmentFormat(sourceFormat)), targetFormat), getSemanticFormat(sourceFormat));
22440
22475
  }
22441
22476
  function getSemanticFormat(segmentFormat) {
22442
22477
  var result = {};
@@ -22452,6 +22487,15 @@ function getSemanticFormat(segmentFormat) {
22452
22487
  }
22453
22488
  return result;
22454
22489
  }
22490
+ /**
22491
+ * Segment format can also contain other type of metadata, for example in Images/Hyperlink,
22492
+ * we want to preserve these properties when merging format
22493
+ */
22494
+ function getFormatWithoutSegmentFormat(sourceFormat) {
22495
+ var resultFormat = (0, tslib_1.__assign)({}, sourceFormat);
22496
+ KeysOfSegmentFormat.forEach(function (key) { return delete resultFormat[key]; });
22497
+ return resultFormat;
22498
+ }
22455
22499
 
22456
22500
 
22457
22501
  /***/ }),