roosterjs 9.44.0 → 9.45.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-amd-min.js +1 -1
- package/dist/rooster-amd-min.js.map +1 -1
- package/dist/rooster-amd.d.ts +79 -8
- package/dist/rooster-amd.js +855 -248
- package/dist/rooster-amd.js.map +1 -1
- package/dist/rooster-min.js +1 -1
- package/dist/rooster-min.js.map +1 -1
- package/dist/rooster-react-amd-min.js +1 -1
- package/dist/rooster-react-amd-min.js.map +1 -1
- package/dist/rooster-react-amd.d.ts +1 -1
- package/dist/rooster-react-amd.js +10 -1
- package/dist/rooster-react-amd.js.map +1 -1
- package/dist/rooster-react-min.js +1 -1
- package/dist/rooster-react-min.js.map +1 -1
- package/dist/rooster-react.d.ts +1 -1
- package/dist/rooster-react.js +10 -1
- package/dist/rooster-react.js.map +1 -1
- package/dist/rooster.d.ts +79 -8
- package/dist/rooster.js +855 -248
- package/dist/rooster.js.map +1 -1
- package/package.json +8 -8
package/dist/rooster.js
CHANGED
|
@@ -2343,6 +2343,10 @@ function setModelDirection(model, direction) {
|
|
|
2343
2343
|
item.levels.forEach(function (level) {
|
|
2344
2344
|
level.format.direction = calcDirection;
|
|
2345
2345
|
});
|
|
2346
|
+
// We already set direction on levels, no need to keep it on list item level
|
|
2347
|
+
delete item.format.direction;
|
|
2348
|
+
// Remove textAlign to let it be calculated based on direction change
|
|
2349
|
+
delete item.format.textAlign;
|
|
2346
2350
|
item.blocks.forEach(function (block) { return internalSetDirection(block, calcDirection); });
|
|
2347
2351
|
});
|
|
2348
2352
|
}
|
|
@@ -4363,9 +4367,18 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
4363
4367
|
exports.alignTableCellVertically = exports.alignTableCellHorizontally = void 0;
|
|
4364
4368
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
4365
4369
|
var TextAlignValueMap = {
|
|
4366
|
-
alignCellLeft:
|
|
4367
|
-
|
|
4368
|
-
|
|
4370
|
+
alignCellLeft: {
|
|
4371
|
+
ltr: 'start',
|
|
4372
|
+
rtl: 'end',
|
|
4373
|
+
},
|
|
4374
|
+
alignCellCenter: {
|
|
4375
|
+
ltr: 'center',
|
|
4376
|
+
rtl: 'center',
|
|
4377
|
+
},
|
|
4378
|
+
alignCellRight: {
|
|
4379
|
+
ltr: 'end',
|
|
4380
|
+
rtl: 'start',
|
|
4381
|
+
},
|
|
4369
4382
|
};
|
|
4370
4383
|
var VerticalAlignValueMap = {
|
|
4371
4384
|
alignCellTop: 'top',
|
|
@@ -4377,7 +4390,8 @@ var VerticalAlignValueMap = {
|
|
|
4377
4390
|
*/
|
|
4378
4391
|
function alignTableCellHorizontally(table, operation) {
|
|
4379
4392
|
alignTableCellInternal(table, function (cell) {
|
|
4380
|
-
cell.format.textAlign =
|
|
4393
|
+
cell.format.textAlign =
|
|
4394
|
+
TextAlignValueMap[operation][cell.format.direction == 'rtl' ? 'rtl' : 'ltr'];
|
|
4381
4395
|
});
|
|
4382
4396
|
}
|
|
4383
4397
|
exports.alignTableCellHorizontally = alignTableCellHorizontally;
|
|
@@ -4540,12 +4554,12 @@ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-mo
|
|
|
4540
4554
|
/**
|
|
4541
4555
|
* @internal
|
|
4542
4556
|
*/
|
|
4543
|
-
function createTableStructure(parent, columns, rows) {
|
|
4557
|
+
function createTableStructure(parent, columns, rows, cellFormat) {
|
|
4544
4558
|
var table = (0, roosterjs_content_model_dom_1.createTable)(rows);
|
|
4545
4559
|
(0, roosterjs_content_model_dom_1.addBlock)(parent, table);
|
|
4546
4560
|
table.rows.forEach(function (row) {
|
|
4547
4561
|
for (var i = 0; i < columns; i++) {
|
|
4548
|
-
var cell = (0, roosterjs_content_model_dom_1.createTableCell)();
|
|
4562
|
+
var cell = (0, roosterjs_content_model_dom_1.createTableCell)(undefined /*spanLeftOrColSpan */, undefined /*spanAboveOrRowSpan */, undefined /* isHeader */, cellFormat);
|
|
4549
4563
|
row.cells.push(cell);
|
|
4550
4564
|
}
|
|
4551
4565
|
});
|
|
@@ -7137,19 +7151,21 @@ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-mo
|
|
|
7137
7151
|
* @param rows Number of rows in table
|
|
7138
7152
|
* @param tableMetadataFormat (Optional) The table format that are stored as metadata. If not passed, the default format will be applied: background color: #FFF; border color: #ABABAB
|
|
7139
7153
|
* @param format (Optional) The table format used for style attributes
|
|
7154
|
+
* @param cellFormat (Optional) custom format for table cells, except for borders styles, for borders use tableMetadataFormat
|
|
7140
7155
|
*/
|
|
7141
|
-
function insertTable(editor, columns, rows, tableMetadataFormat, format) {
|
|
7156
|
+
function insertTable(editor, columns, rows, tableMetadataFormat, format, customCellFormat) {
|
|
7142
7157
|
editor.focus();
|
|
7143
7158
|
editor.formatContentModel(function (model, context) {
|
|
7144
7159
|
var _a, _b, _c;
|
|
7145
7160
|
var insertPosition = (0, roosterjs_content_model_dom_1.deleteSelection)(model, [], context).insertPoint;
|
|
7146
7161
|
if (insertPosition) {
|
|
7147
7162
|
var doc = (0, roosterjs_content_model_dom_1.createContentModelDocument)();
|
|
7148
|
-
var table = (0, createTableStructure_1.createTableStructure)(doc, columns, rows);
|
|
7163
|
+
var table = (0, createTableStructure_1.createTableStructure)(doc, columns, rows, customCellFormat);
|
|
7149
7164
|
if (format) {
|
|
7150
7165
|
table.format = (0, tslib_1.__assign)({}, format);
|
|
7151
7166
|
}
|
|
7152
7167
|
(0, roosterjs_content_model_dom_1.normalizeTable)(table, editor.getPendingFormat() || insertPosition.marker.format);
|
|
7168
|
+
initCellWidth(table);
|
|
7153
7169
|
(0, adjustIndentation_1.adjustTableIndentation)(insertPosition, table);
|
|
7154
7170
|
// Assign default vertical align
|
|
7155
7171
|
tableMetadataFormat = tableMetadataFormat || { verticalAlign: 'top' };
|
|
@@ -7174,6 +7190,28 @@ function insertTable(editor, columns, rows, tableMetadataFormat, format) {
|
|
|
7174
7190
|
});
|
|
7175
7191
|
}
|
|
7176
7192
|
exports.insertTable = insertTable;
|
|
7193
|
+
function initCellWidth(table) {
|
|
7194
|
+
var columns = Math.max.apply(Math, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(table.rows.map(function (row) { return row.cells.length; })), false));
|
|
7195
|
+
for (var i = 0; i < columns; i++) {
|
|
7196
|
+
if (table.widths[i] === undefined) {
|
|
7197
|
+
table.widths[i] = getTableCellWidth(columns);
|
|
7198
|
+
}
|
|
7199
|
+
else if (table.widths[i] < roosterjs_content_model_dom_1.MIN_ALLOWED_TABLE_CELL_WIDTH) {
|
|
7200
|
+
table.widths[i] = roosterjs_content_model_dom_1.MIN_ALLOWED_TABLE_CELL_WIDTH;
|
|
7201
|
+
}
|
|
7202
|
+
}
|
|
7203
|
+
}
|
|
7204
|
+
function getTableCellWidth(columns) {
|
|
7205
|
+
if (columns <= 4) {
|
|
7206
|
+
return 120;
|
|
7207
|
+
}
|
|
7208
|
+
else if (columns <= 6) {
|
|
7209
|
+
return 100;
|
|
7210
|
+
}
|
|
7211
|
+
else {
|
|
7212
|
+
return 70;
|
|
7213
|
+
}
|
|
7214
|
+
}
|
|
7177
7215
|
|
|
7178
7216
|
|
|
7179
7217
|
/***/ }),
|
|
@@ -8610,7 +8648,9 @@ function exportContent(editor, mode, optionsOrCallbacks) {
|
|
|
8610
8648
|
case 'HTMLFast':
|
|
8611
8649
|
var clonedRoot = editor.getDOMHelper().getClonedRoot();
|
|
8612
8650
|
if (editor.isDarkMode()) {
|
|
8613
|
-
(0, roosterjs_content_model_dom_1.transformColor)(clonedRoot, false /*includeSelf*/, 'darkToLight', editor.getColorManager()
|
|
8651
|
+
(0, roosterjs_content_model_dom_1.transformColor)(clonedRoot, false /*includeSelf*/, 'darkToLight', editor.getColorManager(), {
|
|
8652
|
+
tableBorders: editor.isExperimentalFeatureEnabled('TransformTableBorderColors'),
|
|
8653
|
+
});
|
|
8614
8654
|
}
|
|
8615
8655
|
return getHTMLFromDOM(editor, clonedRoot);
|
|
8616
8656
|
case 'HTML':
|
|
@@ -10051,7 +10091,9 @@ function restoreSnapshotColors(core, snapshot) {
|
|
|
10051
10091
|
var isDarkMode = core.lifecycle.isDarkMode;
|
|
10052
10092
|
core.darkColorHandler.updateKnownColor(isDarkMode); // Pass no parameter to force update all colors
|
|
10053
10093
|
if (!!snapshot.isDarkMode != !!isDarkMode) {
|
|
10054
|
-
(0, roosterjs_content_model_dom_1.transformColor)(core.physicalRoot, false /*includeSelf*/, isDarkMode ? 'lightToDark' : 'darkToLight', core.darkColorHandler
|
|
10094
|
+
(0, roosterjs_content_model_dom_1.transformColor)(core.physicalRoot, false /*includeSelf*/, isDarkMode ? 'lightToDark' : 'darkToLight', core.darkColorHandler, {
|
|
10095
|
+
tableBorders: core.experimentalFeatures.indexOf('TransformTableBorderColors') > -1,
|
|
10096
|
+
});
|
|
10055
10097
|
}
|
|
10056
10098
|
}
|
|
10057
10099
|
exports.restoreSnapshotColors = restoreSnapshotColors;
|
|
@@ -12716,7 +12758,9 @@ var EntityPlugin = /** @class */ (function () {
|
|
|
12716
12758
|
canPersist: eventResult === null || eventResult === void 0 ? void 0 : eventResult.shouldPersist,
|
|
12717
12759
|
};
|
|
12718
12760
|
if (editor.isDarkMode()) {
|
|
12719
|
-
(0, roosterjs_content_model_dom_1.transformColor)(wrapper, true /*includeSelf*/, 'lightToDark', editor.getColorManager()
|
|
12761
|
+
(0, roosterjs_content_model_dom_1.transformColor)(wrapper, true /*includeSelf*/, 'lightToDark', editor.getColorManager(), {
|
|
12762
|
+
tableBorders: editor.isExperimentalFeatureEnabled('TransformTableBorderColors'),
|
|
12763
|
+
});
|
|
12720
12764
|
}
|
|
12721
12765
|
}
|
|
12722
12766
|
else if (id) {
|
|
@@ -14985,7 +15029,9 @@ var Editor = /** @class */ (function () {
|
|
|
14985
15029
|
var result = node.cloneNode(true /*deep*/);
|
|
14986
15030
|
if (_this.isDarkMode()) {
|
|
14987
15031
|
var colorHandler = _this.getColorManager();
|
|
14988
|
-
(0, roosterjs_content_model_dom_1.transformColor)(result, true /*includeSelf*/, 'darkToLight', colorHandler
|
|
15032
|
+
(0, roosterjs_content_model_dom_1.transformColor)(result, true /*includeSelf*/, 'darkToLight', colorHandler, {
|
|
15033
|
+
tableBorders: _this.isExperimentalFeatureEnabled('TransformTableBorderColors'),
|
|
15034
|
+
});
|
|
14989
15035
|
result.style.color = result.style.color || 'inherit';
|
|
14990
15036
|
result.style.backgroundColor = result.style.backgroundColor || 'inherit';
|
|
14991
15037
|
}
|
|
@@ -15123,7 +15169,7 @@ var Editor = /** @class */ (function () {
|
|
|
15123
15169
|
* @returns The HTML document which contains this editor
|
|
15124
15170
|
*/
|
|
15125
15171
|
Editor.prototype.getDocument = function () {
|
|
15126
|
-
return this.getCore().
|
|
15172
|
+
return this.getCore().environment.document;
|
|
15127
15173
|
};
|
|
15128
15174
|
/**
|
|
15129
15175
|
* Focus to this editor, the selection was restored to where it was before, no unexpected scroll.
|
|
@@ -15185,7 +15231,9 @@ var Editor = /** @class */ (function () {
|
|
|
15185
15231
|
Editor.prototype.setDarkModeState = function (isDarkMode) {
|
|
15186
15232
|
var core = this.getCore();
|
|
15187
15233
|
if (!!isDarkMode != core.lifecycle.isDarkMode) {
|
|
15188
|
-
(0, roosterjs_content_model_dom_1.transformColor)(core.physicalRoot, false /*includeSelf*/, isDarkMode ? 'lightToDark' : 'darkToLight', core.darkColorHandler
|
|
15234
|
+
(0, roosterjs_content_model_dom_1.transformColor)(core.physicalRoot, false /*includeSelf*/, isDarkMode ? 'lightToDark' : 'darkToLight', core.darkColorHandler, {
|
|
15235
|
+
tableBorders: this.isExperimentalFeatureEnabled('TransformTableBorderColors'),
|
|
15236
|
+
});
|
|
15189
15237
|
core.lifecycle.isDarkMode = !!isDarkMode;
|
|
15190
15238
|
core.api.triggerEvent(core, {
|
|
15191
15239
|
eventType: 'contentChanged',
|
|
@@ -15576,12 +15624,13 @@ function createEditorEnvironment(contentDiv, options) {
|
|
|
15576
15624
|
var userAgent = (_b = navigator === null || navigator === void 0 ? void 0 : navigator.userAgent) !== null && _b !== void 0 ? _b : '';
|
|
15577
15625
|
var appVersion = (_c = navigator === null || navigator === void 0 ? void 0 : navigator.appVersion) !== null && _c !== void 0 ? _c : '';
|
|
15578
15626
|
return {
|
|
15627
|
+
document: contentDiv.ownerDocument,
|
|
15579
15628
|
domToModelSettings: (0, createEditorDefaultSettings_1.createDomToModelSettings)(options),
|
|
15580
15629
|
modelToDomSettings: (0, createEditorDefaultSettings_1.createModelToDomSettings)(options),
|
|
15581
15630
|
isMac: appVersion.indexOf('Mac') != -1,
|
|
15582
15631
|
isAndroid: /android/i.test(userAgent),
|
|
15583
15632
|
isIOS: /iPad|iPhone/.test(userAgent),
|
|
15584
|
-
isSafari: userAgent.indexOf('
|
|
15633
|
+
isSafari: userAgent.indexOf('AppleWebKit') >= 0 &&
|
|
15585
15634
|
userAgent.indexOf('Chrome') < 0 &&
|
|
15586
15635
|
userAgent.indexOf('Android') < 0,
|
|
15587
15636
|
isMobileOrTablet: getIsMobileOrTablet(userAgent),
|
|
@@ -17407,7 +17456,12 @@ exports.ContextStyles = [
|
|
|
17407
17456
|
'paddingRight',
|
|
17408
17457
|
];
|
|
17409
17458
|
/**
|
|
17410
|
-
*
|
|
17459
|
+
* Content Model Element Processor for format container elements (e.g., blockquote, div)
|
|
17460
|
+
* Processes elements that create FormatContainer blocks in the content model.
|
|
17461
|
+
* This processor can be used in processorOverride to customize how specific elements are processed.
|
|
17462
|
+
* @param group The parent block group
|
|
17463
|
+
* @param element The DOM element to process
|
|
17464
|
+
* @param context DOM to Content Model context
|
|
17411
17465
|
*/
|
|
17412
17466
|
var formatContainerProcessor = function (group, element, context) {
|
|
17413
17467
|
(0, stackFormat_1.stackFormat)(context, { segment: 'shallowCloneForBlock', paragraph: 'shallowClone' }, function () {
|
|
@@ -20013,25 +20067,50 @@ function process(fontFamily, result, start, end) {
|
|
|
20013
20067
|
|
|
20014
20068
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20015
20069
|
exports.transformColor = void 0;
|
|
20070
|
+
var borderKeys_1 = __webpack_require__(/*! ../../formatHandlers/utils/borderKeys */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/borderKeys.ts");
|
|
20071
|
+
var isElementOfType_1 = __webpack_require__(/*! ../isElementOfType */ "./packages/roosterjs-content-model-dom/lib/domUtils/isElementOfType.ts");
|
|
20016
20072
|
var color_1 = __webpack_require__(/*! ../../formatHandlers/utils/color */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts");
|
|
20017
20073
|
/**
|
|
20018
20074
|
* Edit and transform color of elements between light mode and dark mode
|
|
20075
|
+
* By default, text and background colors are transformed for all elements.
|
|
20019
20076
|
* @param rootNode The root DOM node to transform
|
|
20020
20077
|
* @param includeSelf True to transform the root node as well, otherwise false
|
|
20021
20078
|
* @param direction To specify the transform direction, light to dark, or dark to light
|
|
20022
20079
|
* @param darkColorHandler The dark color handler object to help do color transformation
|
|
20080
|
+
* @param transformColorOptions Configuration options for controlling which elements and styles undergo color transformation.
|
|
20023
20081
|
*/
|
|
20024
|
-
function transformColor(rootNode, includeSelf, direction, darkColorHandler) {
|
|
20082
|
+
function transformColor(rootNode, includeSelf, direction, darkColorHandler, transformColorOptions) {
|
|
20025
20083
|
var toDarkMode = direction == 'lightToDark';
|
|
20084
|
+
var tableBorders = (transformColorOptions === null || transformColorOptions === void 0 ? void 0 : transformColorOptions.tableBorders) || false;
|
|
20026
20085
|
var transformer = function (element) {
|
|
20027
20086
|
var textColor = (0, color_1.getColor)(element, false /*isBackground*/, !toDarkMode, darkColorHandler);
|
|
20028
20087
|
var backColor = (0, color_1.getColor)(element, true /*isBackground*/, !toDarkMode, darkColorHandler);
|
|
20029
20088
|
(0, color_1.setColor)(element, textColor, false /*isBackground*/, toDarkMode, darkColorHandler);
|
|
20030
20089
|
(0, color_1.setColor)(element, backColor, true /*isBackground*/, toDarkMode, darkColorHandler);
|
|
20090
|
+
if (tableBorders) {
|
|
20091
|
+
transformBorderColor(element, toDarkMode, darkColorHandler);
|
|
20092
|
+
}
|
|
20031
20093
|
};
|
|
20032
20094
|
iterateElements(rootNode, transformer, includeSelf);
|
|
20033
20095
|
}
|
|
20034
20096
|
exports.transformColor = transformColor;
|
|
20097
|
+
function transformBorderColor(element, toDarkMode, darkColorHandler) {
|
|
20098
|
+
if ((0, isElementOfType_1.isElementOfType)(element, 'td') || (0, isElementOfType_1.isElementOfType)(element, 'th')) {
|
|
20099
|
+
borderKeys_1.BorderKeys.forEach(function (key) {
|
|
20100
|
+
var borderColorProperty = borderKeys_1.BorderColorKeyMap[key];
|
|
20101
|
+
var style = element.style.getPropertyValue(borderColorProperty);
|
|
20102
|
+
if (style) {
|
|
20103
|
+
var lightColor = (0, color_1.getLightModeColor)(style, !toDarkMode, darkColorHandler);
|
|
20104
|
+
if (lightColor) {
|
|
20105
|
+
var transformedColor = (0, color_1.adaptColor)(element, lightColor, 'border', toDarkMode, darkColorHandler);
|
|
20106
|
+
if (transformedColor) {
|
|
20107
|
+
element.style.setProperty(borderColorProperty, transformedColor);
|
|
20108
|
+
}
|
|
20109
|
+
}
|
|
20110
|
+
}
|
|
20111
|
+
});
|
|
20112
|
+
}
|
|
20113
|
+
}
|
|
20035
20114
|
function iterateElements(root, transformer, includeSelf) {
|
|
20036
20115
|
if (includeSelf && isHTMLElement(root)) {
|
|
20037
20116
|
transformer(root);
|
|
@@ -20479,30 +20558,14 @@ exports.textAlignFormatHandler = {
|
|
|
20479
20558
|
var _a;
|
|
20480
20559
|
directionFormatHandler_1.directionFormatHandler.parse(format, element, context, defaultStyle);
|
|
20481
20560
|
var textAlign = element.style.textAlign || defaultStyle.textAlign;
|
|
20482
|
-
if (element.
|
|
20483
|
-
((_a = element.parentElement) === null || _a === void 0 ? void 0 : _a.style.display) === 'flex' &&
|
|
20484
|
-
element.parentElement.style.flexDirection === 'column' &&
|
|
20485
|
-
element.style.alignSelf) {
|
|
20486
|
-
// For LI element with flex style applied, we use its "align-self" style value instead since LI has a different implementation for align
|
|
20487
|
-
textAlign = element.style.alignSelf;
|
|
20488
|
-
}
|
|
20489
|
-
if (textAlign) {
|
|
20561
|
+
if (textAlign && ((_a = element.parentElement) === null || _a === void 0 ? void 0 : _a.style.display) !== 'flex') {
|
|
20490
20562
|
format.textAlign = (0, dir_1.calcAlign)(textAlign, format.direction);
|
|
20491
20563
|
}
|
|
20492
20564
|
},
|
|
20493
20565
|
apply: function (format, element) {
|
|
20494
20566
|
var dir = format.direction == 'rtl' ? 'rtl' : 'ltr';
|
|
20495
20567
|
if (format.textAlign) {
|
|
20496
|
-
|
|
20497
|
-
var parentTag = parent_1 === null || parent_1 === void 0 ? void 0 : parent_1.tagName;
|
|
20498
|
-
if (element.tagName == 'LI' && parent_1 && (parentTag == 'OL' || parentTag == 'UL')) {
|
|
20499
|
-
element.style.alignSelf = format.textAlign;
|
|
20500
|
-
element.parentElement.style.flexDirection = 'column';
|
|
20501
|
-
element.parentElement.style.display = 'flex';
|
|
20502
|
-
}
|
|
20503
|
-
else {
|
|
20504
|
-
element.style.textAlign = dir_1.ResultMap[format.textAlign][dir];
|
|
20505
|
-
}
|
|
20568
|
+
element.style.textAlign = dir_1.ResultMap[format.textAlign][dir];
|
|
20506
20569
|
}
|
|
20507
20570
|
},
|
|
20508
20571
|
};
|
|
@@ -20669,27 +20732,96 @@ exports.borderBoxFormatHandler = {
|
|
|
20669
20732
|
};
|
|
20670
20733
|
|
|
20671
20734
|
|
|
20735
|
+
/***/ }),
|
|
20736
|
+
|
|
20737
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderColorFormatHandler.ts":
|
|
20738
|
+
/*!****************************************************************************************************!*\
|
|
20739
|
+
!*** ./packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderColorFormatHandler.ts ***!
|
|
20740
|
+
\****************************************************************************************************/
|
|
20741
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
20742
|
+
|
|
20743
|
+
"use strict";
|
|
20744
|
+
|
|
20745
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20746
|
+
exports.borderColorFormatHandler = void 0;
|
|
20747
|
+
var color_1 = __webpack_require__(/*! ../utils/color */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts");
|
|
20748
|
+
var borderKeys_1 = __webpack_require__(/*! ../utils/borderKeys */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/borderKeys.ts");
|
|
20749
|
+
var borderValues_1 = __webpack_require__(/*! ../../domUtils/style/borderValues */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts");
|
|
20750
|
+
/**
|
|
20751
|
+
* Keys of border width
|
|
20752
|
+
*/
|
|
20753
|
+
var BorderWidthKeyMap = {
|
|
20754
|
+
borderTop: 'border-top-width',
|
|
20755
|
+
borderRight: 'border-right-width',
|
|
20756
|
+
borderBottom: 'border-bottom-width',
|
|
20757
|
+
borderLeft: 'border-left-width',
|
|
20758
|
+
};
|
|
20759
|
+
/**
|
|
20760
|
+
* Keys of border styles
|
|
20761
|
+
*/
|
|
20762
|
+
var BorderStyleKeyMap = {
|
|
20763
|
+
borderTop: 'border-top-style',
|
|
20764
|
+
borderRight: 'border-right-style',
|
|
20765
|
+
borderBottom: 'border-bottom-style',
|
|
20766
|
+
borderLeft: 'border-left-style',
|
|
20767
|
+
};
|
|
20768
|
+
/**
|
|
20769
|
+
* @internal
|
|
20770
|
+
*/
|
|
20771
|
+
exports.borderColorFormatHandler = {
|
|
20772
|
+
parse: function (format, element, context) {
|
|
20773
|
+
if (context.experimentalFeatures &&
|
|
20774
|
+
context.experimentalFeatures.indexOf('TransformTableBorderColors') > -1) {
|
|
20775
|
+
borderKeys_1.BorderKeys.forEach(function (key) {
|
|
20776
|
+
var width = element.style.getPropertyValue(BorderWidthKeyMap[key]);
|
|
20777
|
+
var style = element.style.getPropertyValue(BorderStyleKeyMap[key]);
|
|
20778
|
+
var borderColor = (0, color_1.retrieveElementColor)(element, key);
|
|
20779
|
+
if (borderColor) {
|
|
20780
|
+
var lightModeColor = (0, color_1.getLightModeColor)(borderColor, !!context.isDarkMode, context.darkColorHandler);
|
|
20781
|
+
format[key] = (0, borderValues_1.combineBorderValue)({
|
|
20782
|
+
width: width,
|
|
20783
|
+
style: style,
|
|
20784
|
+
color: lightModeColor,
|
|
20785
|
+
});
|
|
20786
|
+
}
|
|
20787
|
+
});
|
|
20788
|
+
}
|
|
20789
|
+
},
|
|
20790
|
+
apply: function (format, element, context) {
|
|
20791
|
+
if (context.experimentalFeatures &&
|
|
20792
|
+
context.experimentalFeatures.indexOf('TransformTableBorderColors') > -1) {
|
|
20793
|
+
borderKeys_1.BorderKeys.forEach(function (key) {
|
|
20794
|
+
var value = format[key];
|
|
20795
|
+
if (value) {
|
|
20796
|
+
var borderValues = (0, borderValues_1.extractBorderValues)(value);
|
|
20797
|
+
if (borderValues.color) {
|
|
20798
|
+
var transformedColor = (0, color_1.adaptColor)(element, borderValues.color, 'border', !!context.isDarkMode, context.darkColorHandler);
|
|
20799
|
+
if (transformedColor) {
|
|
20800
|
+
var borderColorProperty = borderKeys_1.BorderColorKeyMap[key];
|
|
20801
|
+
element.style.setProperty(borderColorProperty, transformedColor);
|
|
20802
|
+
}
|
|
20803
|
+
}
|
|
20804
|
+
}
|
|
20805
|
+
});
|
|
20806
|
+
}
|
|
20807
|
+
},
|
|
20808
|
+
};
|
|
20809
|
+
|
|
20810
|
+
|
|
20672
20811
|
/***/ }),
|
|
20673
20812
|
|
|
20674
20813
|
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts":
|
|
20675
20814
|
/*!***********************************************************************************************!*\
|
|
20676
20815
|
!*** ./packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts ***!
|
|
20677
20816
|
\***********************************************************************************************/
|
|
20678
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
20817
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
20679
20818
|
|
|
20680
20819
|
"use strict";
|
|
20681
20820
|
|
|
20682
20821
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20683
|
-
exports.borderFormatHandler =
|
|
20684
|
-
|
|
20685
|
-
|
|
20686
|
-
*/
|
|
20687
|
-
exports.BorderKeys = [
|
|
20688
|
-
'borderTop',
|
|
20689
|
-
'borderRight',
|
|
20690
|
-
'borderBottom',
|
|
20691
|
-
'borderLeft',
|
|
20692
|
-
];
|
|
20822
|
+
exports.borderFormatHandler = void 0;
|
|
20823
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
20824
|
+
var borderKeys_1 = __webpack_require__(/*! ../utils/borderKeys */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/borderKeys.ts");
|
|
20693
20825
|
// This array needs to match BorderKeys array
|
|
20694
20826
|
var BorderWidthKeys = [
|
|
20695
20827
|
'borderTopWidth',
|
|
@@ -20703,13 +20835,13 @@ var BorderRadiusKeys = [
|
|
|
20703
20835
|
'borderBottomLeftRadius',
|
|
20704
20836
|
'borderBottomRightRadius',
|
|
20705
20837
|
];
|
|
20706
|
-
var AllKeys =
|
|
20838
|
+
var AllKeys = (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(borderKeys_1.BorderKeys), false), (0, tslib_1.__read)(BorderRadiusKeys), false);
|
|
20707
20839
|
/**
|
|
20708
20840
|
* @internal
|
|
20709
20841
|
*/
|
|
20710
20842
|
exports.borderFormatHandler = {
|
|
20711
20843
|
parse: function (format, element, _, defaultStyle) {
|
|
20712
|
-
|
|
20844
|
+
borderKeys_1.BorderKeys.forEach(function (key, i) {
|
|
20713
20845
|
var _a;
|
|
20714
20846
|
var value = element.style[key];
|
|
20715
20847
|
var defaultWidth = (_a = defaultStyle[BorderWidthKeys[i]]) !== null && _a !== void 0 ? _a : '0px';
|
|
@@ -21064,6 +21196,7 @@ var ariaFormatHandler_1 = __webpack_require__(/*! ./common/ariaFormatHandler */
|
|
|
21064
21196
|
var backgroundColorFormatHandler_1 = __webpack_require__(/*! ./common/backgroundColorFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/backgroundColorFormatHandler.ts");
|
|
21065
21197
|
var boldFormatHandler_1 = __webpack_require__(/*! ./segment/boldFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/boldFormatHandler.ts");
|
|
21066
21198
|
var borderBoxFormatHandler_1 = __webpack_require__(/*! ./common/borderBoxFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderBoxFormatHandler.ts");
|
|
21199
|
+
var borderColorFormatHandler_1 = __webpack_require__(/*! ./common/borderColorFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderColorFormatHandler.ts");
|
|
21067
21200
|
var borderFormatHandler_1 = __webpack_require__(/*! ./common/borderFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts");
|
|
21068
21201
|
var boxShadowFormatHandler_1 = __webpack_require__(/*! ./common/boxShadowFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts");
|
|
21069
21202
|
var datasetFormatHandler_1 = __webpack_require__(/*! ./common/datasetFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts");
|
|
@@ -21078,9 +21211,11 @@ var htmlAlignFormatHandler_1 = __webpack_require__(/*! ./block/htmlAlignFormatHa
|
|
|
21078
21211
|
var idFormatHandler_1 = __webpack_require__(/*! ./common/idFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts");
|
|
21079
21212
|
var imageStateFormatHandler_1 = __webpack_require__(/*! ./segment/imageStateFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/imageStateFormatHandler.ts");
|
|
21080
21213
|
var italicFormatHandler_1 = __webpack_require__(/*! ./segment/italicFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts");
|
|
21214
|
+
var legacyTableBorderFormatHandler_1 = __webpack_require__(/*! ./table/legacyTableBorderFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/table/legacyTableBorderFormatHandler.ts");
|
|
21081
21215
|
var letterSpacingFormatHandler_1 = __webpack_require__(/*! ./segment/letterSpacingFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts");
|
|
21082
21216
|
var lineHeightFormatHandler_1 = __webpack_require__(/*! ./block/lineHeightFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts");
|
|
21083
21217
|
var linkFormatHandler_1 = __webpack_require__(/*! ./segment/linkFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/linkFormatHandler.ts");
|
|
21218
|
+
var listItemAlignFormatHandler_1 = __webpack_require__(/*! ./list/listItemAlignFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/list/listItemAlignFormatHandler.ts");
|
|
21084
21219
|
var listItemThreadFormatHandler_1 = __webpack_require__(/*! ./list/listItemThreadFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/list/listItemThreadFormatHandler.ts");
|
|
21085
21220
|
var listLevelThreadFormatHandler_1 = __webpack_require__(/*! ./list/listLevelThreadFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/list/listLevelThreadFormatHandler.ts");
|
|
21086
21221
|
var listStyleFormatHandler_1 = __webpack_require__(/*! ./list/listStyleFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/list/listStyleFormatHandler.ts");
|
|
@@ -21107,6 +21242,7 @@ var defaultFormatHandlerMap = {
|
|
|
21107
21242
|
bold: boldFormatHandler_1.boldFormatHandler,
|
|
21108
21243
|
border: borderFormatHandler_1.borderFormatHandler,
|
|
21109
21244
|
borderBox: borderBoxFormatHandler_1.borderBoxFormatHandler,
|
|
21245
|
+
borderColor: borderColorFormatHandler_1.borderColorFormatHandler,
|
|
21110
21246
|
boxShadow: boxShadowFormatHandler_1.boxShadowFormatHandler,
|
|
21111
21247
|
dataset: datasetFormatHandler_1.datasetFormatHandler,
|
|
21112
21248
|
direction: directionFormatHandler_1.directionFormatHandler,
|
|
@@ -21119,9 +21255,11 @@ var defaultFormatHandlerMap = {
|
|
|
21119
21255
|
id: idFormatHandler_1.idFormatHandler,
|
|
21120
21256
|
imageState: imageStateFormatHandler_1.imageStateFormatHandler,
|
|
21121
21257
|
italic: italicFormatHandler_1.italicFormatHandler,
|
|
21258
|
+
legacyTableBorder: legacyTableBorderFormatHandler_1.legacyTableBorderFormatHandler,
|
|
21122
21259
|
letterSpacing: letterSpacingFormatHandler_1.letterSpacingFormatHandler,
|
|
21123
21260
|
lineHeight: lineHeightFormatHandler_1.lineHeightFormatHandler,
|
|
21124
21261
|
link: linkFormatHandler_1.linkFormatHandler,
|
|
21262
|
+
listItemAlign: listItemAlignFormatHandler_1.listItemAlignFormatHandler,
|
|
21125
21263
|
listItemThread: listItemThreadFormatHandler_1.listItemThreadFormatHandler,
|
|
21126
21264
|
listLevelThread: listLevelThreadFormatHandler_1.listLevelThreadFormatHandler,
|
|
21127
21265
|
listStyle: listStyleFormatHandler_1.listStyleFormatHandler,
|
|
@@ -21175,13 +21313,7 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
21175
21313
|
block: sharedBlockFormats,
|
|
21176
21314
|
listItemThread: ['listItemThread'],
|
|
21177
21315
|
listLevelThread: ['listLevelThread'],
|
|
21178
|
-
listItemElement: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedBlockFormats), false), [
|
|
21179
|
-
'direction',
|
|
21180
|
-
'textAlign',
|
|
21181
|
-
'lineHeight',
|
|
21182
|
-
'margin',
|
|
21183
|
-
'listStyle',
|
|
21184
|
-
], false),
|
|
21316
|
+
listItemElement: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedBlockFormats), false), ['listItemAlign', 'margin', 'listStyle'], false),
|
|
21185
21317
|
listLevel: ['direction', 'textAlign', 'margin', 'padding', 'listStyle', 'backgroundColor'],
|
|
21186
21318
|
styleBasedSegment: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(styleBasedSegmentFormats), false), ['textColor', 'backgroundColor', 'lineHeight'], false),
|
|
21187
21319
|
elementBasedSegment: elementBasedSegmentFormats,
|
|
@@ -21196,6 +21328,7 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
21196
21328
|
], false),
|
|
21197
21329
|
tableCell: [
|
|
21198
21330
|
'border',
|
|
21331
|
+
'borderColor',
|
|
21199
21332
|
'backgroundColor',
|
|
21200
21333
|
'padding',
|
|
21201
21334
|
'verticalAlign',
|
|
@@ -21220,7 +21353,7 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
21220
21353
|
'direction',
|
|
21221
21354
|
'role',
|
|
21222
21355
|
],
|
|
21223
|
-
tableBorder: ['borderBox', 'tableSpacing'],
|
|
21356
|
+
tableBorder: ['borderBox', 'tableSpacing', 'legacyTableBorder'],
|
|
21224
21357
|
tableCellBorder: ['borderBox'],
|
|
21225
21358
|
image: [
|
|
21226
21359
|
'id',
|
|
@@ -21306,6 +21439,53 @@ exports.entityFormatHandler = {
|
|
|
21306
21439
|
};
|
|
21307
21440
|
|
|
21308
21441
|
|
|
21442
|
+
/***/ }),
|
|
21443
|
+
|
|
21444
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/list/listItemAlignFormatHandler.ts":
|
|
21445
|
+
/*!****************************************************************************************************!*\
|
|
21446
|
+
!*** ./packages/roosterjs-content-model-dom/lib/formatHandlers/list/listItemAlignFormatHandler.ts ***!
|
|
21447
|
+
\****************************************************************************************************/
|
|
21448
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
21449
|
+
|
|
21450
|
+
"use strict";
|
|
21451
|
+
|
|
21452
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
21453
|
+
exports.listItemAlignFormatHandler = void 0;
|
|
21454
|
+
var dir_1 = __webpack_require__(/*! ../utils/dir */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/dir.ts");
|
|
21455
|
+
/**
|
|
21456
|
+
* @internal
|
|
21457
|
+
*/
|
|
21458
|
+
exports.listItemAlignFormatHandler = {
|
|
21459
|
+
parse: function (format, element, context) {
|
|
21460
|
+
var _a;
|
|
21461
|
+
// For list, we usually use align-self to implement alignment
|
|
21462
|
+
if (element.style.alignSelf) {
|
|
21463
|
+
format.textAlign = (0, dir_1.calcAlign)(element.style.alignSelf, context.blockFormat.direction);
|
|
21464
|
+
}
|
|
21465
|
+
else if (element.style.textAlign && ((_a = element.parentElement) === null || _a === void 0 ? void 0 : _a.style.display) !== 'flex') {
|
|
21466
|
+
var align = element.style.textAlign;
|
|
21467
|
+
// For RTL environment, 'start' and 'end' in textAlign means opposite direction compared to LTR unless parent is using flex display
|
|
21468
|
+
if (context.blockFormat.direction === 'rtl' && (align == 'start' || align == 'end')) {
|
|
21469
|
+
align = align == 'start' ? 'end' : 'start';
|
|
21470
|
+
}
|
|
21471
|
+
format.textAlign = (0, dir_1.calcAlign)(align, context.blockFormat.direction);
|
|
21472
|
+
}
|
|
21473
|
+
},
|
|
21474
|
+
apply: function (format, element) {
|
|
21475
|
+
if (format.textAlign) {
|
|
21476
|
+
var parent_1 = element.parentElement;
|
|
21477
|
+
element.style.alignSelf = format.textAlign;
|
|
21478
|
+
// For list item we use align-self to implement textAlign rather than text-align
|
|
21479
|
+
element.style.removeProperty('text-align');
|
|
21480
|
+
if (parent_1) {
|
|
21481
|
+
parent_1.style.flexDirection = 'column';
|
|
21482
|
+
parent_1.style.display = 'flex';
|
|
21483
|
+
}
|
|
21484
|
+
}
|
|
21485
|
+
},
|
|
21486
|
+
};
|
|
21487
|
+
|
|
21488
|
+
|
|
21309
21489
|
/***/ }),
|
|
21310
21490
|
|
|
21311
21491
|
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/list/listItemThreadFormatHandler.ts":
|
|
@@ -21981,6 +22161,50 @@ exports.underlineFormatHandler = {
|
|
|
21981
22161
|
};
|
|
21982
22162
|
|
|
21983
22163
|
|
|
22164
|
+
/***/ }),
|
|
22165
|
+
|
|
22166
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/table/legacyTableBorderFormatHandler.ts":
|
|
22167
|
+
/*!*********************************************************************************************************!*\
|
|
22168
|
+
!*** ./packages/roosterjs-content-model-dom/lib/formatHandlers/table/legacyTableBorderFormatHandler.ts ***!
|
|
22169
|
+
\*********************************************************************************************************/
|
|
22170
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
22171
|
+
|
|
22172
|
+
"use strict";
|
|
22173
|
+
|
|
22174
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
22175
|
+
exports.legacyTableBorderFormatHandler = void 0;
|
|
22176
|
+
/**
|
|
22177
|
+
* @internal
|
|
22178
|
+
*/
|
|
22179
|
+
exports.legacyTableBorderFormatHandler = {
|
|
22180
|
+
parse: function (format, element) {
|
|
22181
|
+
var border = element.getAttribute('border');
|
|
22182
|
+
var cellSpacing = element.getAttribute('cellspacing');
|
|
22183
|
+
var cellpadding = element.getAttribute('cellpadding');
|
|
22184
|
+
if (border) {
|
|
22185
|
+
format.legacyTableBorder = border;
|
|
22186
|
+
}
|
|
22187
|
+
if (cellSpacing) {
|
|
22188
|
+
format.cellSpacing = cellSpacing;
|
|
22189
|
+
}
|
|
22190
|
+
if (cellpadding) {
|
|
22191
|
+
format.cellPadding = cellpadding;
|
|
22192
|
+
}
|
|
22193
|
+
},
|
|
22194
|
+
apply: function (format, element) {
|
|
22195
|
+
if (format.legacyTableBorder) {
|
|
22196
|
+
element.setAttribute('border', format.legacyTableBorder);
|
|
22197
|
+
}
|
|
22198
|
+
if (format.cellSpacing) {
|
|
22199
|
+
element.setAttribute('cellspacing', format.cellSpacing);
|
|
22200
|
+
}
|
|
22201
|
+
if (format.cellPadding) {
|
|
22202
|
+
element.setAttribute('cellpadding', format.cellPadding);
|
|
22203
|
+
}
|
|
22204
|
+
},
|
|
22205
|
+
};
|
|
22206
|
+
|
|
22207
|
+
|
|
21984
22208
|
/***/ }),
|
|
21985
22209
|
|
|
21986
22210
|
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/table/tableLayoutFormatHandler.ts":
|
|
@@ -22025,7 +22249,6 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
22025
22249
|
exports.tableSpacingFormatHandler = void 0;
|
|
22026
22250
|
var BorderCollapsed = 'collapse';
|
|
22027
22251
|
var BorderSeparate = 'separate';
|
|
22028
|
-
var CellPadding = 'cellPadding';
|
|
22029
22252
|
/**
|
|
22030
22253
|
* @internal
|
|
22031
22254
|
*/
|
|
@@ -22034,12 +22257,6 @@ exports.tableSpacingFormatHandler = {
|
|
|
22034
22257
|
if (element.style.borderCollapse == BorderCollapsed) {
|
|
22035
22258
|
format.borderCollapse = true;
|
|
22036
22259
|
}
|
|
22037
|
-
else {
|
|
22038
|
-
var cellPadding = element.getAttribute(CellPadding);
|
|
22039
|
-
if (cellPadding) {
|
|
22040
|
-
format.borderCollapse = true;
|
|
22041
|
-
}
|
|
22042
|
-
}
|
|
22043
22260
|
if (element.style.borderCollapse == BorderSeparate) {
|
|
22044
22261
|
format.borderSeparate = true;
|
|
22045
22262
|
}
|
|
@@ -22087,6 +22304,38 @@ exports.textColorOnTableCellFormatHandler = {
|
|
|
22087
22304
|
};
|
|
22088
22305
|
|
|
22089
22306
|
|
|
22307
|
+
/***/ }),
|
|
22308
|
+
|
|
22309
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/borderKeys.ts":
|
|
22310
|
+
/*!*************************************************************************************!*\
|
|
22311
|
+
!*** ./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/borderKeys.ts ***!
|
|
22312
|
+
\*************************************************************************************/
|
|
22313
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
22314
|
+
|
|
22315
|
+
"use strict";
|
|
22316
|
+
|
|
22317
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
22318
|
+
exports.BorderColorKeyMap = exports.BorderKeys = void 0;
|
|
22319
|
+
/**
|
|
22320
|
+
* Keys of border items
|
|
22321
|
+
*/
|
|
22322
|
+
exports.BorderKeys = [
|
|
22323
|
+
'borderTop',
|
|
22324
|
+
'borderRight',
|
|
22325
|
+
'borderBottom',
|
|
22326
|
+
'borderLeft',
|
|
22327
|
+
];
|
|
22328
|
+
/**
|
|
22329
|
+
* @internal
|
|
22330
|
+
*/
|
|
22331
|
+
exports.BorderColorKeyMap = {
|
|
22332
|
+
borderTop: 'border-top-color',
|
|
22333
|
+
borderRight: 'border-right-color',
|
|
22334
|
+
borderBottom: 'border-bottom-color',
|
|
22335
|
+
borderLeft: 'border-left-color',
|
|
22336
|
+
};
|
|
22337
|
+
|
|
22338
|
+
|
|
22090
22339
|
/***/ }),
|
|
22091
22340
|
|
|
22092
22341
|
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts":
|
|
@@ -22098,8 +22347,9 @@ exports.textColorOnTableCellFormatHandler = {
|
|
|
22098
22347
|
"use strict";
|
|
22099
22348
|
|
|
22100
22349
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
22101
|
-
exports.parseColor = exports.defaultGenerateColorKey = exports.setColor = exports.getColor = exports.DeprecatedColors = void 0;
|
|
22350
|
+
exports.parseColor = exports.defaultGenerateColorKey = exports.adaptColor = exports.setColor = exports.retrieveElementColor = exports.getLightModeColor = exports.getColor = exports.DeprecatedColors = void 0;
|
|
22102
22351
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
22352
|
+
var borderKeys_1 = __webpack_require__(/*! ./borderKeys */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/borderKeys.ts");
|
|
22103
22353
|
var getObjectKeys_1 = __webpack_require__(/*! ../../domUtils/getObjectKeys */ "./packages/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts");
|
|
22104
22354
|
/**
|
|
22105
22355
|
* List of deprecated colors
|
|
@@ -22147,13 +22397,20 @@ var COLOR_VAR_PREFIX = '--darkColor';
|
|
|
22147
22397
|
* @param fallback @optional Fallback color to use if no color is found from the element
|
|
22148
22398
|
*/
|
|
22149
22399
|
function getColor(element, isBackground, isDarkMode, darkColorHandler, fallback) {
|
|
22150
|
-
var color = (isBackground ?
|
|
22151
|
-
|
|
22152
|
-
|
|
22153
|
-
|
|
22154
|
-
|
|
22400
|
+
var color = retrieveElementColor(element, isBackground ? 'background' : 'text', fallback);
|
|
22401
|
+
return color
|
|
22402
|
+
? getLightModeColor(color, isDarkMode, darkColorHandler, isBackground ? undefined : BlackColor)
|
|
22403
|
+
: undefined;
|
|
22404
|
+
}
|
|
22405
|
+
exports.getColor = getColor;
|
|
22406
|
+
/**
|
|
22407
|
+
* @internal
|
|
22408
|
+
*/
|
|
22409
|
+
function getLightModeColor(color, isDarkMode, darkColorHandler, fallback) {
|
|
22410
|
+
if (exports.DeprecatedColors.indexOf(color) > -1) {
|
|
22411
|
+
return fallback;
|
|
22155
22412
|
}
|
|
22156
|
-
else if (darkColorHandler
|
|
22413
|
+
else if (darkColorHandler) {
|
|
22157
22414
|
var match = color.startsWith(VARIABLE_PREFIX) ? VARIABLE_REGEX.exec(color) : null;
|
|
22158
22415
|
if (match) {
|
|
22159
22416
|
color = match[2] || '';
|
|
@@ -22162,12 +22419,26 @@ function getColor(element, isBackground, isDarkMode, darkColorHandler, fallback)
|
|
|
22162
22419
|
// 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
|
|
22163
22420
|
// 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
|
|
22164
22421
|
// light color as light mode color. Otherwise we need to drop this color to avoid show "white on white" content.
|
|
22165
|
-
|
|
22422
|
+
return findLightColorFromDarkColor(color, darkColorHandler.knownColors) || '';
|
|
22166
22423
|
}
|
|
22167
22424
|
}
|
|
22168
22425
|
return color;
|
|
22169
22426
|
}
|
|
22170
|
-
exports.
|
|
22427
|
+
exports.getLightModeColor = getLightModeColor;
|
|
22428
|
+
/**
|
|
22429
|
+
* @internal
|
|
22430
|
+
*/
|
|
22431
|
+
function retrieveElementColor(element, source, fallback) {
|
|
22432
|
+
switch (source) {
|
|
22433
|
+
case 'text':
|
|
22434
|
+
return element.style.color || element.getAttribute('color') || fallback;
|
|
22435
|
+
case 'background':
|
|
22436
|
+
return element.style.backgroundColor || element.getAttribute('bgcolor') || fallback;
|
|
22437
|
+
default:
|
|
22438
|
+
return element.style.getPropertyValue(borderKeys_1.BorderColorKeyMap[source]) || fallback;
|
|
22439
|
+
}
|
|
22440
|
+
}
|
|
22441
|
+
exports.retrieveElementColor = retrieveElementColor;
|
|
22171
22442
|
/**
|
|
22172
22443
|
* Set color to given HTML element
|
|
22173
22444
|
* @param element The element to set color to
|
|
@@ -22177,12 +22448,20 @@ exports.getColor = getColor;
|
|
|
22177
22448
|
* @param darkColorHandler @optional The dark color handler object to help manager dark mode color
|
|
22178
22449
|
*/
|
|
22179
22450
|
function setColor(element, color, isBackground, isDarkMode, darkColorHandler) {
|
|
22451
|
+
var newColor = adaptColor(element, color, isBackground ? 'background' : 'text', isDarkMode, darkColorHandler);
|
|
22452
|
+
element.removeAttribute(isBackground ? 'bgcolor' : 'color');
|
|
22453
|
+
element.style.setProperty(isBackground ? 'background-color' : 'color', newColor || null);
|
|
22454
|
+
}
|
|
22455
|
+
exports.setColor = setColor;
|
|
22456
|
+
/**
|
|
22457
|
+
* @internal
|
|
22458
|
+
*/
|
|
22459
|
+
function adaptColor(element, color, colorType, isDarkMode, darkColorHandler) {
|
|
22180
22460
|
var _a, _b;
|
|
22181
22461
|
var match = color && color.startsWith(VARIABLE_PREFIX) ? VARIABLE_REGEX.exec(color) : null;
|
|
22182
22462
|
var _c = (0, tslib_1.__read)(match !== null && match !== void 0 ? match : [], 3), _ = _c[0], existingKey = _c[1], fallbackColor = _c[2];
|
|
22183
22463
|
color = fallbackColor !== null && fallbackColor !== void 0 ? fallbackColor : color;
|
|
22184
22464
|
if (darkColorHandler && color) {
|
|
22185
|
-
var colorType = isBackground ? 'background' : 'text';
|
|
22186
22465
|
var key = existingKey ||
|
|
22187
22466
|
darkColorHandler.generateColorKey(color, undefined /*baseLValue*/, colorType, element);
|
|
22188
22467
|
var darkModeColor = ((_b = (_a = darkColorHandler.knownColors) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.darkModeColor) ||
|
|
@@ -22193,10 +22472,9 @@ function setColor(element, color, isBackground, isDarkMode, darkColorHandler) {
|
|
|
22193
22472
|
});
|
|
22194
22473
|
color = isDarkMode ? "" + VARIABLE_PREFIX + key + ", " + color + VARIABLE_POSTFIX : color;
|
|
22195
22474
|
}
|
|
22196
|
-
|
|
22197
|
-
element.style.setProperty(isBackground ? 'background-color' : 'color', color || null);
|
|
22475
|
+
return color;
|
|
22198
22476
|
}
|
|
22199
|
-
exports.
|
|
22477
|
+
exports.adaptColor = adaptColor;
|
|
22200
22478
|
/**
|
|
22201
22479
|
* Generate color key for dark color
|
|
22202
22480
|
* @param lightColor The input light color
|
|
@@ -22432,10 +22710,10 @@ exports.shouldSetValue = shouldSetValue;
|
|
|
22432
22710
|
"use strict";
|
|
22433
22711
|
|
|
22434
22712
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
22435
|
-
exports.
|
|
22436
|
-
exports.
|
|
22437
|
-
exports.
|
|
22438
|
-
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 = void 0;
|
|
22713
|
+
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;
|
|
22714
|
+
exports.isCharacterValue = 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;
|
|
22715
|
+
exports.getImageMetadata = exports.updateImageMetadata = exports.runEditSteps = 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.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.isCursorMovingKey = exports.isModifierKey = void 0;
|
|
22716
|
+
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 = void 0;
|
|
22439
22717
|
var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
|
|
22440
22718
|
Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
|
|
22441
22719
|
var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
|
|
@@ -22450,6 +22728,8 @@ var entityProcessor_1 = __webpack_require__(/*! ./domToModel/processors/entityPr
|
|
|
22450
22728
|
Object.defineProperty(exports, "entityProcessor", ({ enumerable: true, get: function () { return entityProcessor_1.entityProcessor; } }));
|
|
22451
22729
|
var tableProcessor_1 = __webpack_require__(/*! ./domToModel/processors/tableProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/tableProcessor.ts");
|
|
22452
22730
|
Object.defineProperty(exports, "tableProcessor", ({ enumerable: true, get: function () { return tableProcessor_1.tableProcessor; } }));
|
|
22731
|
+
var formatContainerProcessor_1 = __webpack_require__(/*! ./domToModel/processors/formatContainerProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts");
|
|
22732
|
+
Object.defineProperty(exports, "formatContainerProcessor", ({ enumerable: true, get: function () { return formatContainerProcessor_1.formatContainerProcessor; } }));
|
|
22453
22733
|
var getRegularSelectionOffsets_1 = __webpack_require__(/*! ./domToModel/utils/getRegularSelectionOffsets */ "./packages/roosterjs-content-model-dom/lib/domToModel/utils/getRegularSelectionOffsets.ts");
|
|
22454
22734
|
Object.defineProperty(exports, "getRegularSelectionOffsets", ({ enumerable: true, get: function () { return getRegularSelectionOffsets_1.getRegularSelectionOffsets; } }));
|
|
22455
22735
|
var parseFormat_1 = __webpack_require__(/*! ./domToModel/utils/parseFormat */ "./packages/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts");
|
|
@@ -22582,8 +22862,8 @@ var getAutoListStyleType_1 = __webpack_require__(/*! ./modelApi/list/getAutoList
|
|
|
22582
22862
|
Object.defineProperty(exports, "getAutoListStyleType", ({ enumerable: true, get: function () { return getAutoListStyleType_1.getAutoListStyleType; } }));
|
|
22583
22863
|
var parseValueWithUnit_1 = __webpack_require__(/*! ./formatHandlers/utils/parseValueWithUnit */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts");
|
|
22584
22864
|
Object.defineProperty(exports, "parseValueWithUnit", ({ enumerable: true, get: function () { return parseValueWithUnit_1.parseValueWithUnit; } }));
|
|
22585
|
-
var
|
|
22586
|
-
Object.defineProperty(exports, "BorderKeys", ({ enumerable: true, get: function () { return
|
|
22865
|
+
var borderKeys_1 = __webpack_require__(/*! ./formatHandlers/utils/borderKeys */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/borderKeys.ts");
|
|
22866
|
+
Object.defineProperty(exports, "BorderKeys", ({ enumerable: true, get: function () { return borderKeys_1.BorderKeys; } }));
|
|
22587
22867
|
var color_1 = __webpack_require__(/*! ./formatHandlers/utils/color */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts");
|
|
22588
22868
|
Object.defineProperty(exports, "DeprecatedColors", ({ enumerable: true, get: function () { return color_1.DeprecatedColors; } }));
|
|
22589
22869
|
Object.defineProperty(exports, "getColor", ({ enumerable: true, get: function () { return color_1.getColor; } }));
|
|
@@ -23586,10 +23866,10 @@ function normalizeLastTextSegment(paragraph, segment, lastInlineSegment) {
|
|
|
23586
23866
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23587
23867
|
exports.normalizeSegmentFormat = void 0;
|
|
23588
23868
|
var createContentModelDocument_1 = __webpack_require__(/*! ../creators/createContentModelDocument */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts");
|
|
23869
|
+
var createDomToModelContext_1 = __webpack_require__(/*! ../../domToModel/context/createDomToModelContext */ "./packages/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts");
|
|
23870
|
+
var createModelToDomContext_1 = __webpack_require__(/*! ../../modelToDom/context/createModelToDomContext */ "./packages/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts");
|
|
23589
23871
|
var createText_1 = __webpack_require__(/*! ../creators/createText */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts");
|
|
23590
23872
|
var ensureParagraph_1 = __webpack_require__(/*! ./ensureParagraph */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/ensureParagraph.ts");
|
|
23591
|
-
var createModelToDomContext_1 = __webpack_require__(/*! ../../modelToDom/context/createModelToDomContext */ "./packages/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts");
|
|
23592
|
-
var createDomToModelContext_1 = __webpack_require__(/*! ../../domToModel/context/createDomToModelContext */ "./packages/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts");
|
|
23593
23873
|
/**
|
|
23594
23874
|
* Some format values can be changed when apply to DOM, such as font family.
|
|
23595
23875
|
* This function will normalize the format and return the same string after DOM modification.
|
|
@@ -23598,7 +23878,7 @@ var createDomToModelContext_1 = __webpack_require__(/*! ../../domToModel/context
|
|
|
23598
23878
|
*/
|
|
23599
23879
|
function normalizeSegmentFormat(format, environment) {
|
|
23600
23880
|
var _a, _b;
|
|
23601
|
-
var span = document.createElement('span');
|
|
23881
|
+
var span = environment.document.createElement('span');
|
|
23602
23882
|
var segment = (0, createText_1.createText)('text', format);
|
|
23603
23883
|
var domToModelContext = (0, createDomToModelContext_1.createDomToModelContextWithConfig)(environment.domToModelSettings.calculated);
|
|
23604
23884
|
var modelToDomContext = (0, createModelToDomContext_1.createModelToDomContextWithConfig)(environment.modelToDomSettings.calculated);
|
|
@@ -24235,7 +24515,7 @@ var _a;
|
|
|
24235
24515
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
24236
24516
|
exports.setFirstColumnFormatBorders = exports.applyTableFormat = void 0;
|
|
24237
24517
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
24238
|
-
var
|
|
24518
|
+
var borderKeys_1 = __webpack_require__(/*! ../../formatHandlers/utils/borderKeys */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/borderKeys.ts");
|
|
24239
24519
|
var borderValues_1 = __webpack_require__(/*! ../../domUtils/style/borderValues */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts");
|
|
24240
24520
|
var mutate_1 = __webpack_require__(/*! ../common/mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
24241
24521
|
var setTableCellBackgroundColor_1 = __webpack_require__(/*! ./setTableCellBackgroundColor */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/setTableCellBackgroundColor.ts");
|
|
@@ -24398,7 +24678,7 @@ function formatCells(rows, format, metaOverrides) {
|
|
|
24398
24678
|
];
|
|
24399
24679
|
transparentBorderMatrix === null || transparentBorderMatrix === void 0 ? void 0 : transparentBorderMatrix.forEach(function (alwaysUseTransparent, i) {
|
|
24400
24680
|
var borderColor = (!alwaysUseTransparent && formatColor_1[i]) || '';
|
|
24401
|
-
cell.format[
|
|
24681
|
+
cell.format[borderKeys_1.BorderKeys[i]] = (0, borderValues_1.combineBorderValue)({
|
|
24402
24682
|
style: getBorderStyleFromColor(borderColor),
|
|
24403
24683
|
width: '1px',
|
|
24404
24684
|
color: borderColor,
|
|
@@ -25658,7 +25938,7 @@ exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = 22;
|
|
|
25658
25938
|
* Normalize a Content Model table, make sure:
|
|
25659
25939
|
* 1. Fist cells are not spanned
|
|
25660
25940
|
* 2. Only first column and row can have headers
|
|
25661
|
-
* 3. All cells have content
|
|
25941
|
+
* 3. All cells have content
|
|
25662
25942
|
* 4. Table and table row have correct width/height
|
|
25663
25943
|
* 5. Spanned cell has no child blocks
|
|
25664
25944
|
* 6. default format is correctly applied
|
|
@@ -25668,9 +25948,10 @@ exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = 22;
|
|
|
25668
25948
|
function normalizeTable(readonlyTable, defaultSegmentFormat) {
|
|
25669
25949
|
var _a;
|
|
25670
25950
|
var table = (0, mutate_1.mutateBlock)(readonlyTable);
|
|
25671
|
-
//
|
|
25951
|
+
// Collapse border and use border box for table in roosterjs to make layout simpler
|
|
25952
|
+
// But if this is a legacy style table (table with deprecated border attributes), we should not change its border model
|
|
25672
25953
|
var format = table.format;
|
|
25673
|
-
if (!format.
|
|
25954
|
+
if (!format.cellSpacing && !format.cellPadding && !format.legacyTableBorder) {
|
|
25674
25955
|
format.borderCollapse = true;
|
|
25675
25956
|
format.useBorderBox = true;
|
|
25676
25957
|
}
|
|
@@ -25702,15 +25983,6 @@ function normalizeTable(readonlyTable, defaultSegmentFormat) {
|
|
|
25702
25983
|
row.height = exports.MIN_ALLOWED_TABLE_CELL_HEIGHT;
|
|
25703
25984
|
}
|
|
25704
25985
|
});
|
|
25705
|
-
var columns = Math.max.apply(Math, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(table.rows.map(function (row) { return row.cells.length; })), false));
|
|
25706
|
-
for (var i = 0; i < columns; i++) {
|
|
25707
|
-
if (table.widths[i] === undefined) {
|
|
25708
|
-
table.widths[i] = getTableCellWidth(columns);
|
|
25709
|
-
}
|
|
25710
|
-
else if (table.widths[i] < exports.MIN_ALLOWED_TABLE_CELL_WIDTH) {
|
|
25711
|
-
table.widths[i] = exports.MIN_ALLOWED_TABLE_CELL_WIDTH;
|
|
25712
|
-
}
|
|
25713
|
-
}
|
|
25714
25986
|
// Move blocks from spanned cell to its main cell if any,
|
|
25715
25987
|
// and remove rows/columns if all cells in it are spanned
|
|
25716
25988
|
var colCount = ((_a = table.rows[0]) === null || _a === void 0 ? void 0 : _a.cells.length) || 0;
|
|
@@ -25724,7 +25996,13 @@ function normalizeTable(readonlyTable, defaultSegmentFormat) {
|
|
|
25724
25996
|
});
|
|
25725
25997
|
if (table.rows.every(function (row) { var _a; return (_a = row.cells[colIndex]) === null || _a === void 0 ? void 0 : _a.spanLeft; })) {
|
|
25726
25998
|
table.rows.forEach(function (row) { return row.cells.splice(colIndex, 1); });
|
|
25727
|
-
|
|
25999
|
+
if (typeof table.widths[colIndex] === 'number' &&
|
|
26000
|
+
typeof table.widths[colIndex - 1] === 'number') {
|
|
26001
|
+
table.widths.splice(colIndex - 1, 2, table.widths[colIndex - 1] + table.widths[colIndex]);
|
|
26002
|
+
}
|
|
26003
|
+
else {
|
|
26004
|
+
table.widths.splice(colIndex, 1);
|
|
26005
|
+
}
|
|
25728
26006
|
}
|
|
25729
26007
|
};
|
|
25730
26008
|
for (var colIndex = colCount - 1; colIndex > 0; colIndex--) {
|
|
@@ -25749,17 +26027,6 @@ function normalizeTable(readonlyTable, defaultSegmentFormat) {
|
|
|
25749
26027
|
}
|
|
25750
26028
|
}
|
|
25751
26029
|
exports.normalizeTable = normalizeTable;
|
|
25752
|
-
function getTableCellWidth(columns) {
|
|
25753
|
-
if (columns <= 4) {
|
|
25754
|
-
return 120;
|
|
25755
|
-
}
|
|
25756
|
-
else if (columns <= 6) {
|
|
25757
|
-
return 100;
|
|
25758
|
-
}
|
|
25759
|
-
else {
|
|
25760
|
-
return 70;
|
|
25761
|
-
}
|
|
25762
|
-
}
|
|
25763
26030
|
function tryMoveBlocks(targetCell, sourceCell) {
|
|
25764
26031
|
var _a;
|
|
25765
26032
|
var onlyHasEmptyOrBr = sourceCell.blocks.every(function (block) { return block.blockType == 'Paragraph' && hasOnlyBrSegment(block.segments); });
|
|
@@ -28110,7 +28377,7 @@ var parseValueWithUnit_1 = __webpack_require__(/*! ../../formatHandlers/utils/pa
|
|
|
28110
28377
|
*/
|
|
28111
28378
|
var handleImage = function (doc, parent, imageModel, context, segmentNodes) {
|
|
28112
28379
|
var img = doc.createElement('img');
|
|
28113
|
-
var element =
|
|
28380
|
+
var element = doc.createElement('span');
|
|
28114
28381
|
parent.appendChild(element);
|
|
28115
28382
|
element.appendChild(img);
|
|
28116
28383
|
img.src = imageModel.src;
|
|
@@ -30591,8 +30858,12 @@ function retrieveStringFromParsedTable(tsInfo) {
|
|
|
30591
30858
|
var parsedTable = tsInfo.parsedTable, firstCo = tsInfo.firstCo, lastCo = tsInfo.lastCo;
|
|
30592
30859
|
var result = '';
|
|
30593
30860
|
if (lastCo) {
|
|
30594
|
-
|
|
30595
|
-
|
|
30861
|
+
var firstCol = Math.min(firstCo.col, lastCo.col);
|
|
30862
|
+
var lastCol = Math.max(firstCo.col, lastCo.col);
|
|
30863
|
+
var firstRow = Math.min(firstCo.row, lastCo.row);
|
|
30864
|
+
var lastRow = Math.max(firstCo.row, lastCo.row);
|
|
30865
|
+
for (var r = firstRow; r <= lastRow; r++) {
|
|
30866
|
+
for (var c = firstCol; c <= lastCol; c++) {
|
|
30596
30867
|
var cell = parsedTable[r] && parsedTable[r][c];
|
|
30597
30868
|
if (cell && typeof cell != 'string') {
|
|
30598
30869
|
result += ' ' + cell.innerText + ',';
|
|
@@ -30640,13 +30911,6 @@ function getIsSelectingOrUnselecting(prevTableSelection, newTableSelection) {
|
|
|
30640
30911
|
// Same area but different positions
|
|
30641
30912
|
return 'selecting';
|
|
30642
30913
|
}
|
|
30643
|
-
if (prevFirstColumn !== newFirstColumn ||
|
|
30644
|
-
prevFirstRow !== newFirstRow ||
|
|
30645
|
-
prevLastColumn !== newLastColumn ||
|
|
30646
|
-
prevLastRow !== newLastRow) {
|
|
30647
|
-
return 'selecting';
|
|
30648
|
-
}
|
|
30649
|
-
return null;
|
|
30650
30914
|
}
|
|
30651
30915
|
exports.getIsSelectingOrUnselecting = getIsSelectingOrUnselecting;
|
|
30652
30916
|
|
|
@@ -30722,8 +30986,8 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
30722
30986
|
autoTel: autoTel,
|
|
30723
30987
|
autoMailto: autoMailto,
|
|
30724
30988
|
});
|
|
30725
|
-
if (linkSegment) {
|
|
30726
|
-
return createAnchor(((_a = linkSegment.link) === null || _a === void 0 ? void 0 : _a.format.href) || '', linkSegment.text);
|
|
30989
|
+
if (linkSegment && _this.editor) {
|
|
30990
|
+
return createAnchor(_this.editor.getDocument(), ((_a = linkSegment.link) === null || _a === void 0 ? void 0 : _a.format.href) || '', linkSegment.text);
|
|
30727
30991
|
}
|
|
30728
30992
|
return false;
|
|
30729
30993
|
},
|
|
@@ -30952,8 +31216,8 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
30952
31216
|
return AutoFormatPlugin;
|
|
30953
31217
|
}());
|
|
30954
31218
|
exports.AutoFormatPlugin = AutoFormatPlugin;
|
|
30955
|
-
var createAnchor = function (url, text) {
|
|
30956
|
-
var anchor =
|
|
31219
|
+
var createAnchor = function (doc, url, text) {
|
|
31220
|
+
var anchor = doc.createElement('a');
|
|
30957
31221
|
anchor.href = url;
|
|
30958
31222
|
anchor.textContent = text;
|
|
30959
31223
|
return anchor;
|
|
@@ -31651,7 +31915,8 @@ var ORDINAL_LENGTH = 2;
|
|
|
31651
31915
|
var numericValue = null;
|
|
31652
31916
|
if (numberSegment &&
|
|
31653
31917
|
numberSegment.segmentType == 'Text' &&
|
|
31654
|
-
(numericValue = getNumericValue(numberSegment.text, true /* checkFullText */))
|
|
31918
|
+
(numericValue = getNumericValue(numberSegment.text, true /* checkFullText */)) !==
|
|
31919
|
+
null &&
|
|
31655
31920
|
getOrdinal(numericValue) === value) {
|
|
31656
31921
|
shouldAddSuperScript = true;
|
|
31657
31922
|
}
|
|
@@ -31659,7 +31924,7 @@ var ORDINAL_LENGTH = 2;
|
|
|
31659
31924
|
else {
|
|
31660
31925
|
var ordinal = value.substring(value.length - ORDINAL_LENGTH); // This value is equal st, nd, rd, th
|
|
31661
31926
|
var numericValue = getNumericValue(value); //This is the numeric part. Ex: 10th, numeric value =
|
|
31662
|
-
if (numericValue && getOrdinal(numericValue) === ordinal) {
|
|
31927
|
+
if (numericValue !== null && getOrdinal(numericValue) === ordinal) {
|
|
31663
31928
|
shouldAddSuperScript = true;
|
|
31664
31929
|
}
|
|
31665
31930
|
}
|
|
@@ -32388,25 +32653,55 @@ var insertNewLine = function (quote, parent, quoteIndex, paragraph) {
|
|
|
32388
32653
|
|
|
32389
32654
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
32390
32655
|
exports.deleteList = void 0;
|
|
32656
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
32391
32657
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
32392
32658
|
/**
|
|
32393
32659
|
* @internal
|
|
32394
32660
|
*/
|
|
32395
32661
|
var deleteList = function (context) {
|
|
32662
|
+
var _a, _b;
|
|
32396
32663
|
if (context.deleteResult != 'notDeleted') {
|
|
32397
32664
|
return;
|
|
32398
32665
|
}
|
|
32399
|
-
var
|
|
32400
|
-
|
|
32401
|
-
|
|
32402
|
-
|
|
32403
|
-
|
|
32404
|
-
|
|
32405
|
-
|
|
32406
|
-
|
|
32666
|
+
var _c = context.insertPoint, paragraph = _c.paragraph, marker = _c.marker, path = _c.path;
|
|
32667
|
+
var index = (0, roosterjs_content_model_dom_1.getClosestAncestorBlockGroupIndex)(path, ['ListItem'], ['TableCell', 'FormatContainer']);
|
|
32668
|
+
var item = path[index];
|
|
32669
|
+
var parent = path[index + 1];
|
|
32670
|
+
if ((item === null || item === void 0 ? void 0 : item.blockGroupType) == 'ListItem' &&
|
|
32671
|
+
item.levels.length > 0 &&
|
|
32672
|
+
paragraph.segments[0] == marker &&
|
|
32673
|
+
parent) {
|
|
32674
|
+
var mutableList = (0, roosterjs_content_model_dom_1.mutateBlock)(item);
|
|
32675
|
+
var lastLevel = mutableList.levels[mutableList.levels.length - 1];
|
|
32676
|
+
var listItemIndex = parent.blocks.indexOf(item);
|
|
32677
|
+
var previousItem = parent.blocks[listItemIndex - 1];
|
|
32678
|
+
// 1. If the last level is dummy, just remove it (legacy behavior)
|
|
32679
|
+
// 2. If focus is at the beginning of list item and previous block is a list item with the same level count,
|
|
32680
|
+
// merge current list item into previous one
|
|
32681
|
+
// 3. Otherwise, split the list item. Keep the blocks before the paragraph in the current list item,
|
|
32682
|
+
// move the rest to a new list item (if there are multiple levels) or directly to parent (if only one level)
|
|
32683
|
+
if (lastLevel.format.displayForDummyItem == 'block') {
|
|
32684
|
+
mutableList.levels.pop();
|
|
32685
|
+
context.deleteResult = 'range';
|
|
32686
|
+
}
|
|
32687
|
+
else if (item.blocks[0] == paragraph &&
|
|
32688
|
+
(previousItem === null || previousItem === void 0 ? void 0 : previousItem.blockType) == 'BlockGroup' &&
|
|
32689
|
+
previousItem.blockGroupType == 'ListItem' &&
|
|
32690
|
+
previousItem.levels.length == mutableList.levels.length) {
|
|
32691
|
+
var mutablePreviousItem = (0, roosterjs_content_model_dom_1.mutateBlock)(previousItem);
|
|
32692
|
+
(_a = mutablePreviousItem.blocks).push.apply(_a, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(mutableList.blocks), false));
|
|
32693
|
+
(0, roosterjs_content_model_dom_1.mutateBlock)(parent).blocks.splice(listItemIndex, 1);
|
|
32694
|
+
context.deleteResult = 'range';
|
|
32695
|
+
}
|
|
32696
|
+
else {
|
|
32697
|
+
var removedBlocks = mutableList.blocks.splice(mutableList.blocks.indexOf(paragraph), mutableList.blocks.length);
|
|
32698
|
+
if (mutableList.levels.length > 1) {
|
|
32699
|
+
var newListItem = (0, roosterjs_content_model_dom_1.createListItem)(mutableList.levels.slice(0, -1), mutableList.format);
|
|
32700
|
+
newListItem.blocks = removedBlocks.map(function (block) { return (0, roosterjs_content_model_dom_1.mutateBlock)(block); });
|
|
32701
|
+
(0, roosterjs_content_model_dom_1.mutateBlock)(parent).blocks.splice(listItemIndex + 1, 0, newListItem);
|
|
32407
32702
|
}
|
|
32408
32703
|
else {
|
|
32409
|
-
|
|
32704
|
+
(_b = (0, roosterjs_content_model_dom_1.mutateBlock)(parent).blocks).splice.apply(_b, (0, tslib_1.__spreadArray)([listItemIndex + 1, 0], (0, tslib_1.__read)(removedBlocks), false));
|
|
32410
32705
|
}
|
|
32411
32706
|
context.deleteResult = 'range';
|
|
32412
32707
|
}
|
|
@@ -33679,11 +33974,12 @@ var FindReplacePlugin = /** @class */ (function () {
|
|
|
33679
33974
|
* @param editor The editor object
|
|
33680
33975
|
*/
|
|
33681
33976
|
FindReplacePlugin.prototype.initialize = function (editor) {
|
|
33682
|
-
var _a;
|
|
33683
33977
|
this.editor = editor;
|
|
33684
|
-
var win =
|
|
33685
|
-
|
|
33686
|
-
|
|
33978
|
+
var win = editor.getDocument().defaultView;
|
|
33979
|
+
if (win) {
|
|
33980
|
+
this.context.findHighlight.initialize(win);
|
|
33981
|
+
this.context.replaceHighlight.initialize(win);
|
|
33982
|
+
}
|
|
33687
33983
|
this.editor.setEditorStyle(constants_1.FindHighlightRuleKey, this.findHighlightStyle, [
|
|
33688
33984
|
constants_1.FindHighlightSelector,
|
|
33689
33985
|
]);
|
|
@@ -36253,9 +36549,11 @@ function generateDataURL(image, editInfo) {
|
|
|
36253
36549
|
var height = heightPx || image.clientHeight;
|
|
36254
36550
|
var imageWidth = nWidth * (1 - left - right);
|
|
36255
36551
|
var imageHeight = nHeight * (1 - top - bottom);
|
|
36552
|
+
var doc = image.ownerDocument;
|
|
36553
|
+
var win = doc.defaultView;
|
|
36256
36554
|
// Adjust the canvas size and scaling for high display resolution
|
|
36257
|
-
var devicePixelRatio =
|
|
36258
|
-
var canvas =
|
|
36555
|
+
var devicePixelRatio = (win === null || win === void 0 ? void 0 : win.devicePixelRatio) || 1;
|
|
36556
|
+
var canvas = doc.createElement('canvas');
|
|
36259
36557
|
var targetWidth = generatedImageSize.targetWidth, targetHeight = generatedImageSize.targetHeight;
|
|
36260
36558
|
canvas.width = targetWidth * devicePixelRatio;
|
|
36261
36559
|
canvas.height = targetHeight * devicePixelRatio;
|
|
@@ -40421,13 +40719,13 @@ var TableEditPlugin = /** @class */ (function () {
|
|
|
40421
40719
|
}
|
|
40422
40720
|
};
|
|
40423
40721
|
this.onMouseMove = function (event) {
|
|
40424
|
-
var _a;
|
|
40722
|
+
var _a, _b;
|
|
40425
40723
|
var e = event;
|
|
40426
|
-
|
|
40724
|
+
var editorWindow = (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.getDocument().defaultView;
|
|
40725
|
+
if (e.buttons > 0 || !editorWindow) {
|
|
40427
40726
|
return;
|
|
40428
40727
|
}
|
|
40429
40728
|
_this.ensureTableRects();
|
|
40430
|
-
var editorWindow = _this.editor.getDocument().defaultView || window;
|
|
40431
40729
|
var x = e.pageX - editorWindow.scrollX;
|
|
40432
40730
|
var y = e.pageY - editorWindow.scrollY;
|
|
40433
40731
|
var currentTable = null;
|
|
@@ -40446,7 +40744,7 @@ var TableEditPlugin = /** @class */ (function () {
|
|
|
40446
40744
|
}
|
|
40447
40745
|
}
|
|
40448
40746
|
_this.setTableEditor(currentTable, e);
|
|
40449
|
-
(
|
|
40747
|
+
(_b = _this.tableEditor) === null || _b === void 0 ? void 0 : _b.onMouseMove(x, y);
|
|
40450
40748
|
};
|
|
40451
40749
|
this.invalidateTableRects = function () {
|
|
40452
40750
|
_this.tableRectMap = null;
|
|
@@ -40566,6 +40864,7 @@ var CellResizer_1 = __webpack_require__(/*! ./features/CellResizer */ "./package
|
|
|
40566
40864
|
var TableInserter_1 = __webpack_require__(/*! ./features/TableInserter */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableInserter.ts");
|
|
40567
40865
|
var TableMover_1 = __webpack_require__(/*! ./features/TableMover */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableMover.ts");
|
|
40568
40866
|
var TableResizer_1 = __webpack_require__(/*! ./features/TableResizer */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableResizer.ts");
|
|
40867
|
+
var TableRowColumnSelector_1 = __webpack_require__(/*! ./features/TableRowColumnSelector */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableRowColumnSelector.ts");
|
|
40569
40868
|
var TableEditFeature_1 = __webpack_require__(/*! ./features/TableEditFeature */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableEditFeature.ts");
|
|
40570
40869
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
40571
40870
|
var INSERTER_HOVER_OFFSET = 6;
|
|
@@ -40625,6 +40924,9 @@ var TableEditor = /** @class */ (function () {
|
|
|
40625
40924
|
this.tableResizer = null;
|
|
40626
40925
|
// 6 - Move as well as select whole table
|
|
40627
40926
|
this.tableMover = null;
|
|
40927
|
+
// 7 - Select whole column or row
|
|
40928
|
+
this.tableColumnSelector = null;
|
|
40929
|
+
this.tableRowSelector = null;
|
|
40628
40930
|
this.range = null;
|
|
40629
40931
|
this.onEditorCreated = function (featureType, element) {
|
|
40630
40932
|
var _a;
|
|
@@ -40666,6 +40968,7 @@ var TableEditor = /** @class */ (function () {
|
|
|
40666
40968
|
_this.disposeTableResizer();
|
|
40667
40969
|
_this.disposeTableInserter();
|
|
40668
40970
|
_this.disposeCellResizers();
|
|
40971
|
+
_this.disposeTableSelector();
|
|
40669
40972
|
};
|
|
40670
40973
|
this.onEndTableMove = function (disposeHandler) {
|
|
40671
40974
|
if (disposeHandler) {
|
|
@@ -40721,6 +41024,7 @@ var TableEditor = /** @class */ (function () {
|
|
|
40721
41024
|
this.disposeCellResizers();
|
|
40722
41025
|
this.disposeTableInserter();
|
|
40723
41026
|
this.disposeTableMover();
|
|
41027
|
+
this.disposeTableSelector();
|
|
40724
41028
|
};
|
|
40725
41029
|
TableEditor.prototype.isEditing = function () {
|
|
40726
41030
|
return this.isCurrentlyEditing;
|
|
@@ -40733,9 +41037,11 @@ var TableEditor = /** @class */ (function () {
|
|
|
40733
41037
|
this.verticalInserter,
|
|
40734
41038
|
this.horizontalResizer,
|
|
40735
41039
|
this.verticalResizer,
|
|
41040
|
+
this.tableColumnSelector,
|
|
41041
|
+
this.tableRowSelector,
|
|
40736
41042
|
]
|
|
40737
41043
|
.filter(function (feature) { return !!(feature === null || feature === void 0 ? void 0 : feature.div); })
|
|
40738
|
-
.some(function (feature) { return (feature === null || feature === void 0 ? void 0 : feature.div) == node; });
|
|
41044
|
+
.some(function (feature) { return (feature === null || feature === void 0 ? void 0 : feature.div) == node || ((feature === null || feature === void 0 ? void 0 : feature.div) && feature.div.contains(node)); });
|
|
40739
41045
|
};
|
|
40740
41046
|
/**
|
|
40741
41047
|
* public only for testing purposes
|
|
@@ -40811,6 +41117,17 @@ var TableEditor = /** @class */ (function () {
|
|
|
40811
41117
|
break;
|
|
40812
41118
|
}
|
|
40813
41119
|
}
|
|
41120
|
+
if (topOrSide == 0 /* top */) {
|
|
41121
|
+
!this.isFeatureDisabled('TableColumnSelector') &&
|
|
41122
|
+
this.setSelectorRowColumn(false /*isRow*/);
|
|
41123
|
+
}
|
|
41124
|
+
else if (topOrSide == 1 /* side */) {
|
|
41125
|
+
!this.isFeatureDisabled('TableRowSelector') &&
|
|
41126
|
+
this.setSelectorRowColumn(true /*isRow*/);
|
|
41127
|
+
}
|
|
41128
|
+
else {
|
|
41129
|
+
this.setSelectorRowColumn(null);
|
|
41130
|
+
}
|
|
40814
41131
|
// Create Mover and Resizer
|
|
40815
41132
|
this.setEditorFeatures();
|
|
40816
41133
|
};
|
|
@@ -40852,6 +41169,14 @@ var TableEditor = /** @class */ (function () {
|
|
|
40852
41169
|
}
|
|
40853
41170
|
}
|
|
40854
41171
|
};
|
|
41172
|
+
TableEditor.prototype.setSelectorRowColumn = function (isRowSelector /*undefined means to clear both*/) {
|
|
41173
|
+
if (isRowSelector !== null && !this.tableRowSelector && !this.tableColumnSelector) {
|
|
41174
|
+
this.tableRowSelector = (0, TableRowColumnSelector_1.createTableRowColumnSelector)(this.editor, this.table, !!isRowSelector, this.anchorContainer, this.onEditorCreated);
|
|
41175
|
+
}
|
|
41176
|
+
else {
|
|
41177
|
+
this.disposeTableSelector();
|
|
41178
|
+
}
|
|
41179
|
+
};
|
|
40855
41180
|
TableEditor.prototype.disposeTableResizer = function () {
|
|
40856
41181
|
if (this.tableResizer) {
|
|
40857
41182
|
(0, TableEditFeature_1.disposeTableEditFeature)(this.tableResizer);
|
|
@@ -40868,6 +41193,16 @@ var TableEditor = /** @class */ (function () {
|
|
|
40868
41193
|
this.verticalInserter = null;
|
|
40869
41194
|
}
|
|
40870
41195
|
};
|
|
41196
|
+
TableEditor.prototype.disposeTableSelector = function () {
|
|
41197
|
+
if (this.tableColumnSelector) {
|
|
41198
|
+
(0, TableEditFeature_1.disposeTableEditFeature)(this.tableColumnSelector);
|
|
41199
|
+
this.tableColumnSelector = null;
|
|
41200
|
+
}
|
|
41201
|
+
if (this.tableRowSelector) {
|
|
41202
|
+
(0, TableEditFeature_1.disposeTableEditFeature)(this.tableRowSelector);
|
|
41203
|
+
this.tableRowSelector = null;
|
|
41204
|
+
}
|
|
41205
|
+
};
|
|
40871
41206
|
TableEditor.prototype.disposeCellResizers = function () {
|
|
40872
41207
|
if (this.horizontalResizer) {
|
|
40873
41208
|
(0, TableEditFeature_1.disposeTableEditFeature)(this.horizontalResizer);
|
|
@@ -40984,40 +41319,61 @@ function onDragStart(context, event) {
|
|
|
40984
41319
|
var td = context.td, onStart = context.onStart;
|
|
40985
41320
|
var rect = (0, roosterjs_content_model_dom_1.normalizeRect)(td.getBoundingClientRect());
|
|
40986
41321
|
// Get cell coordinates
|
|
40987
|
-
var
|
|
40988
|
-
var
|
|
40989
|
-
var
|
|
40990
|
-
if (rowIndex == undefined) {
|
|
40991
|
-
return {
|
|
40992
|
-
cmTable: undefined,
|
|
40993
|
-
anchorColumn: undefined,
|
|
40994
|
-
anchorRow: undefined,
|
|
40995
|
-
anchorRowHeight: -1,
|
|
40996
|
-
allWidths: [],
|
|
40997
|
-
}; // Just a fallback
|
|
40998
|
-
}
|
|
41322
|
+
var rowIndex;
|
|
41323
|
+
var columnIndex;
|
|
41324
|
+
var nextColumnIndex = -1;
|
|
40999
41325
|
var editor = context.editor, table = context.table;
|
|
41000
41326
|
// Get Table block in content model
|
|
41001
41327
|
var cmTable = (0, getTableFromContentModel_1.getCMTableFromTable)(editor, table);
|
|
41002
41328
|
if (rect && cmTable) {
|
|
41329
|
+
for (var r = 0; r < (cmTable === null || cmTable === void 0 ? void 0 : cmTable.rows.length); r++) {
|
|
41330
|
+
for (var c = 0; c < cmTable.rows[r].cells.length; c++) {
|
|
41331
|
+
var cell = cmTable.rows[r].cells[c];
|
|
41332
|
+
if (cell.cachedElement == td) {
|
|
41333
|
+
// Target cell found, record its position
|
|
41334
|
+
rowIndex = r;
|
|
41335
|
+
columnIndex = c;
|
|
41336
|
+
}
|
|
41337
|
+
else if (rowIndex != undefined && columnIndex != undefined) {
|
|
41338
|
+
// rowIndex and columnIndex are already found, we can find nextColumnIndex now
|
|
41339
|
+
if (!cell.cachedElement) {
|
|
41340
|
+
// No cached element means this cell is merged, so this could potentially be the right side of column
|
|
41341
|
+
// We are trying to find the last merged cell so we can modify its width later
|
|
41342
|
+
columnIndex = c;
|
|
41343
|
+
}
|
|
41344
|
+
else {
|
|
41345
|
+
// Since we already found the target cell, the first cell with cachedElement after that must be the next column
|
|
41346
|
+
nextColumnIndex = c;
|
|
41347
|
+
break;
|
|
41348
|
+
}
|
|
41349
|
+
}
|
|
41350
|
+
}
|
|
41351
|
+
// As long as rowIndex is found, we can break here, no matter if nextColumnIndex is found or not
|
|
41352
|
+
// because for the last column case, nextColumnIndex will be -1
|
|
41353
|
+
if (rowIndex != undefined) {
|
|
41354
|
+
break;
|
|
41355
|
+
}
|
|
41356
|
+
}
|
|
41003
41357
|
onStart();
|
|
41004
|
-
|
|
41005
|
-
|
|
41006
|
-
|
|
41007
|
-
|
|
41008
|
-
|
|
41009
|
-
|
|
41010
|
-
|
|
41011
|
-
|
|
41012
|
-
|
|
41013
|
-
|
|
41014
|
-
cmTable: cmTable,
|
|
41015
|
-
anchorColumn: undefined,
|
|
41016
|
-
anchorRow: undefined,
|
|
41017
|
-
anchorRowHeight: -1,
|
|
41018
|
-
allWidths: [],
|
|
41019
|
-
}; // Just a fallback
|
|
41358
|
+
if (rowIndex !== undefined) {
|
|
41359
|
+
return {
|
|
41360
|
+
cmTable: cmTable,
|
|
41361
|
+
anchorColumn: columnIndex,
|
|
41362
|
+
nextColumn: nextColumnIndex,
|
|
41363
|
+
anchorRow: rowIndex,
|
|
41364
|
+
anchorRowHeight: cmTable.rows[rowIndex].height,
|
|
41365
|
+
allWidths: (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(cmTable.widths), false),
|
|
41366
|
+
};
|
|
41367
|
+
}
|
|
41020
41368
|
}
|
|
41369
|
+
return {
|
|
41370
|
+
cmTable: cmTable,
|
|
41371
|
+
anchorColumn: undefined,
|
|
41372
|
+
anchorRow: undefined,
|
|
41373
|
+
anchorRowHeight: -1,
|
|
41374
|
+
allWidths: [],
|
|
41375
|
+
nextColumn: -1,
|
|
41376
|
+
}; // Just a fallback
|
|
41021
41377
|
}
|
|
41022
41378
|
exports.onDragStart = onDragStart;
|
|
41023
41379
|
/**
|
|
@@ -41025,7 +41381,6 @@ exports.onDragStart = onDragStart;
|
|
|
41025
41381
|
* Exported for testing
|
|
41026
41382
|
*/
|
|
41027
41383
|
function onDraggingHorizontal(context, event, initValue, deltaX, deltaY) {
|
|
41028
|
-
var table = context.table;
|
|
41029
41384
|
var cmTable = initValue.cmTable, anchorRow = initValue.anchorRow, anchorRowHeight = initValue.anchorRowHeight;
|
|
41030
41385
|
// Assign new widths and heights to the CM table
|
|
41031
41386
|
if (cmTable && anchorRow != undefined && cmTable.rows[anchorRow] != undefined) {
|
|
@@ -41034,11 +41389,13 @@ function onDraggingHorizontal(context, event, initValue, deltaX, deltaY) {
|
|
|
41034
41389
|
// Normalize the new height value
|
|
41035
41390
|
var newHeight = Math.max(cmTable.rows[anchorRow].height, roosterjs_content_model_dom_1.MIN_ALLOWED_TABLE_CELL_HEIGHT);
|
|
41036
41391
|
// Writeback CM Table size changes to DOM Table
|
|
41037
|
-
var tableRow =
|
|
41038
|
-
for (var col = 0; col < tableRow.
|
|
41039
|
-
var td = tableRow
|
|
41040
|
-
td
|
|
41041
|
-
|
|
41392
|
+
var tableRow = cmTable.rows[anchorRow].cells;
|
|
41393
|
+
for (var col = 0; col < tableRow.length; col++) {
|
|
41394
|
+
var td = tableRow[col].cachedElement;
|
|
41395
|
+
if (td) {
|
|
41396
|
+
td.style.height = newHeight + 'px';
|
|
41397
|
+
td.style.boxSizing = 'border-box';
|
|
41398
|
+
}
|
|
41042
41399
|
}
|
|
41043
41400
|
return true;
|
|
41044
41401
|
}
|
|
@@ -41053,15 +41410,13 @@ exports.onDraggingHorizontal = onDraggingHorizontal;
|
|
|
41053
41410
|
*/
|
|
41054
41411
|
function onDraggingVertical(context, event, initValue, deltaX) {
|
|
41055
41412
|
var table = context.table, isRTL = context.isRTL;
|
|
41056
|
-
var cmTable = initValue.cmTable, anchorColumn = initValue.anchorColumn, allWidths = initValue.allWidths;
|
|
41413
|
+
var cmTable = initValue.cmTable, anchorColumn = initValue.anchorColumn, nextColumn = initValue.nextColumn, allWidths = initValue.allWidths;
|
|
41057
41414
|
// Assign new widths and heights to the CM table
|
|
41058
41415
|
if (cmTable && anchorColumn != undefined) {
|
|
41059
41416
|
var mutableTable = (0, roosterjs_content_model_dom_1.mutateBlock)(cmTable);
|
|
41060
|
-
// Modify the CM Table size
|
|
41061
|
-
var lastColumn = anchorColumn == cmTable.widths.length - 1;
|
|
41062
41417
|
var change = deltaX * (isRTL ? -1 : 1);
|
|
41063
41418
|
// This is the last column
|
|
41064
|
-
if (
|
|
41419
|
+
if (nextColumn == -1) {
|
|
41065
41420
|
// Only the last column changes
|
|
41066
41421
|
// Normalize the new width value
|
|
41067
41422
|
var newWidth = Math.max(allWidths[anchorColumn] + change, roosterjs_content_model_dom_1.MIN_ALLOWED_TABLE_CELL_WIDTH);
|
|
@@ -41070,21 +41425,37 @@ function onDraggingVertical(context, event, initValue, deltaX) {
|
|
|
41070
41425
|
else {
|
|
41071
41426
|
// Any other two columns
|
|
41072
41427
|
var anchorChange = allWidths[anchorColumn] + change;
|
|
41073
|
-
var nextAnchorChange = allWidths[
|
|
41428
|
+
var nextAnchorChange = allWidths[nextColumn] - change;
|
|
41074
41429
|
if (anchorChange < roosterjs_content_model_dom_1.MIN_ALLOWED_TABLE_CELL_WIDTH ||
|
|
41075
41430
|
nextAnchorChange < roosterjs_content_model_dom_1.MIN_ALLOWED_TABLE_CELL_WIDTH) {
|
|
41076
41431
|
return false;
|
|
41077
41432
|
}
|
|
41078
41433
|
mutableTable.widths[anchorColumn] = anchorChange;
|
|
41079
|
-
mutableTable.widths[
|
|
41434
|
+
mutableTable.widths[nextColumn] = nextAnchorChange;
|
|
41080
41435
|
}
|
|
41081
|
-
//
|
|
41082
|
-
for (var row = 0; row <
|
|
41083
|
-
var tableRow =
|
|
41084
|
-
|
|
41085
|
-
|
|
41086
|
-
|
|
41087
|
-
td
|
|
41436
|
+
// Write back CM Table size changes to DOM Table
|
|
41437
|
+
for (var row = 0; row < cmTable.rows.length; row++) {
|
|
41438
|
+
var tableRow = cmTable.rows[row].cells;
|
|
41439
|
+
var lastTd = null;
|
|
41440
|
+
var lastWidth = 0;
|
|
41441
|
+
for (var col = 0; col < tableRow.length; col++) {
|
|
41442
|
+
var td = tableRow[col].cachedElement;
|
|
41443
|
+
if (td) {
|
|
41444
|
+
td.style.boxSizing = 'border-box';
|
|
41445
|
+
lastTd = td;
|
|
41446
|
+
lastWidth = cmTable.widths[col];
|
|
41447
|
+
}
|
|
41448
|
+
else if (lastTd && tableRow[col].spanLeft) {
|
|
41449
|
+
lastWidth += cmTable.widths[col];
|
|
41450
|
+
}
|
|
41451
|
+
else if (tableRow[col].spanAbove) {
|
|
41452
|
+
// For span above case, we don't need to adjust width, just clear lastTd and lastWidth
|
|
41453
|
+
lastTd = null;
|
|
41454
|
+
lastWidth = 0;
|
|
41455
|
+
}
|
|
41456
|
+
if (lastTd) {
|
|
41457
|
+
lastTd.style.width = lastWidth + 'px';
|
|
41458
|
+
}
|
|
41088
41459
|
}
|
|
41089
41460
|
}
|
|
41090
41461
|
if (context.originalWidth > 0) {
|
|
@@ -41303,8 +41674,8 @@ var createElement_1 = __webpack_require__(/*! ../../../pluginUtils/CreateElement
|
|
|
41303
41674
|
var DragAndDropHelper_1 = __webpack_require__(/*! ../../../pluginUtils/DragAndDrop/DragAndDropHelper */ "./packages/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/DragAndDropHelper.ts");
|
|
41304
41675
|
var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
|
|
41305
41676
|
var getTableFromContentModel_1 = __webpack_require__(/*! ../utils/getTableFromContentModel */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/utils/getTableFromContentModel.ts");
|
|
41306
|
-
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
41307
41677
|
var getNodePositionFromEvent_1 = __webpack_require__(/*! ../../../utils/getNodePositionFromEvent */ "./packages/roosterjs-content-model-plugins/lib/utils/getNodePositionFromEvent.ts");
|
|
41678
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
41308
41679
|
var TABLE_MOVER_LENGTH = 12;
|
|
41309
41680
|
/**
|
|
41310
41681
|
* @internal
|
|
@@ -41404,7 +41775,7 @@ function onDragStart(context) {
|
|
|
41404
41775
|
tag: 'div',
|
|
41405
41776
|
style: 'position: fixed; user-select: none; border: 1px solid #808080',
|
|
41406
41777
|
};
|
|
41407
|
-
var tableRect = (0, createElement_1.createElement)(createElementData,
|
|
41778
|
+
var tableRect = (0, createElement_1.createElement)(createElementData, editor.getDocument());
|
|
41408
41779
|
tableRect.style.width = trect.width + "px";
|
|
41409
41780
|
tableRect.style.height = trect.height + "px";
|
|
41410
41781
|
tableRect.style.top = trect.top + "px";
|
|
@@ -41732,6 +42103,239 @@ function isTableBottomVisible(editor, rect, contentDiv) {
|
|
|
41732
42103
|
}
|
|
41733
42104
|
|
|
41734
42105
|
|
|
42106
|
+
/***/ }),
|
|
42107
|
+
|
|
42108
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableRowColumnSelector.ts":
|
|
42109
|
+
/*!***********************************************************************************************************!*\
|
|
42110
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/features/TableRowColumnSelector.ts ***!
|
|
42111
|
+
\***********************************************************************************************************/
|
|
42112
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
42113
|
+
|
|
42114
|
+
"use strict";
|
|
42115
|
+
|
|
42116
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
42117
|
+
exports.onDragEnd = exports.onDragging = exports.onDragStart = exports.createTableRowColumnSelector = void 0;
|
|
42118
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
42119
|
+
var createElement_1 = __webpack_require__(/*! ../../../pluginUtils/CreateElement/createElement */ "./packages/roosterjs-content-model-plugins/lib/pluginUtils/CreateElement/createElement.ts");
|
|
42120
|
+
var DragAndDropHelper_1 = __webpack_require__(/*! ../../../pluginUtils/DragAndDrop/DragAndDropHelper */ "./packages/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/DragAndDropHelper.ts");
|
|
42121
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
42122
|
+
var STABLE_DOWN_ARROW_CURSOR = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij48dGV4dCB4PSI4IiB5PSIxMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNCIgZmlsbD0iYmxhY2siPiYjMTI5MDk1OzwvdGV4dD48L3N2Zz4=';
|
|
42123
|
+
var STABLE_RIGHT_ARROW_CURSOR = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij48dGV4dCB4PSI4IiB5PSIxMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNCIgZmlsbD0iYmxhY2siIHRyYW5zZm9ybT0icm90YXRlKC05MCA4IDgpIj4mIzEyOTA5NTs8L3RleHQ+PC9zdmc+';
|
|
42124
|
+
/**
|
|
42125
|
+
* @internal
|
|
42126
|
+
*/
|
|
42127
|
+
function createTableRowColumnSelector(editor, table, isRowSelector, anchorContainer, onTableEditorCreated) {
|
|
42128
|
+
var _a;
|
|
42129
|
+
var doc = editor.getDocument();
|
|
42130
|
+
var zoomScale = editor.getDOMHelper().calculateZoomScale();
|
|
42131
|
+
var containerDiv = doc.createElement('div');
|
|
42132
|
+
containerDiv.style.cssText = 'position: fixed; pointer-events: none;';
|
|
42133
|
+
var cells = isRowSelector
|
|
42134
|
+
? Array.from(table.rows)
|
|
42135
|
+
.map(function (row) { return row.cells[0]; })
|
|
42136
|
+
.filter(function (cell) { return cell; })
|
|
42137
|
+
: Array.from(((_a = table.rows[0]) === null || _a === void 0 ? void 0 : _a.cells) || []);
|
|
42138
|
+
var handlers = [];
|
|
42139
|
+
cells.forEach(function (cell) {
|
|
42140
|
+
var cellRect = (0, roosterjs_content_model_dom_1.normalizeRect)(cell.getBoundingClientRect());
|
|
42141
|
+
if (cellRect) {
|
|
42142
|
+
var createElementData = getInsertElementData(cellRect, isRowSelector);
|
|
42143
|
+
var cellDiv = (0, createElement_1.createElement)(createElementData, doc);
|
|
42144
|
+
containerDiv.appendChild(cellDiv);
|
|
42145
|
+
var context = {
|
|
42146
|
+
table: table,
|
|
42147
|
+
zoomScale: zoomScale,
|
|
42148
|
+
editor: editor,
|
|
42149
|
+
div: cellDiv,
|
|
42150
|
+
isRow: isRowSelector,
|
|
42151
|
+
};
|
|
42152
|
+
var handler = new TableRowColumnSelectorHandler(cellDiv, isRowSelector, context, {
|
|
42153
|
+
onDragStart: onDragStart,
|
|
42154
|
+
onDragging: onDragging,
|
|
42155
|
+
onDragEnd: onDragEnd,
|
|
42156
|
+
}, zoomScale, onTableEditorCreated, editor.getEnvironment().isMobileOrTablet);
|
|
42157
|
+
handlers.push(handler);
|
|
42158
|
+
}
|
|
42159
|
+
});
|
|
42160
|
+
(anchorContainer || doc.body).appendChild(containerDiv);
|
|
42161
|
+
var compositeHandler = {
|
|
42162
|
+
dispose: function () {
|
|
42163
|
+
handlers.forEach(function (h) { return h.dispose(); });
|
|
42164
|
+
},
|
|
42165
|
+
};
|
|
42166
|
+
return { div: containerDiv, featureHandler: compositeHandler, node: table };
|
|
42167
|
+
}
|
|
42168
|
+
exports.createTableRowColumnSelector = createTableRowColumnSelector;
|
|
42169
|
+
var TableRowColumnSelectorHandler = /** @class */ (function (_super) {
|
|
42170
|
+
(0, tslib_1.__extends)(TableRowColumnSelectorHandler, _super);
|
|
42171
|
+
function TableRowColumnSelectorHandler(div, isRow, context, handler, zoomScale, onTableEditorCreated, forceMobile) {
|
|
42172
|
+
var _this = _super.call(this, div, context, function () { }, handler, zoomScale, forceMobile) || this;
|
|
42173
|
+
_this.isRow = isRow;
|
|
42174
|
+
_this.disposer = onTableEditorCreated === null || onTableEditorCreated === void 0 ? void 0 : onTableEditorCreated(_this.isRow ? 'TableRowSelector' : 'TableColumnSelector', div);
|
|
42175
|
+
return _this;
|
|
42176
|
+
}
|
|
42177
|
+
TableRowColumnSelectorHandler.prototype.dispose = function () {
|
|
42178
|
+
var _a;
|
|
42179
|
+
(_a = this.disposer) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
42180
|
+
this.disposer = undefined;
|
|
42181
|
+
};
|
|
42182
|
+
return TableRowColumnSelectorHandler;
|
|
42183
|
+
}(DragAndDropHelper_1.DragAndDropHelper));
|
|
42184
|
+
/**
|
|
42185
|
+
* @internal
|
|
42186
|
+
* Helper function to calculate current row/column index from mouse coordinates during drag
|
|
42187
|
+
*/
|
|
42188
|
+
function getCurrentIndexFromMouse(table, x, y, isRow) {
|
|
42189
|
+
if (isRow) {
|
|
42190
|
+
for (var i = 0; i < table.rows.length; i++) {
|
|
42191
|
+
var row = table.rows[i];
|
|
42192
|
+
for (var j = 0; j < row.cells.length; j++) {
|
|
42193
|
+
var cell = row.cells[j];
|
|
42194
|
+
var cellRect = (0, roosterjs_content_model_dom_1.normalizeRect)(cell.getBoundingClientRect());
|
|
42195
|
+
if (cellRect && y >= cellRect.top && y <= cellRect.bottom) {
|
|
42196
|
+
return i;
|
|
42197
|
+
}
|
|
42198
|
+
}
|
|
42199
|
+
}
|
|
42200
|
+
return Math.max(0, table.rows.length - 1);
|
|
42201
|
+
}
|
|
42202
|
+
else {
|
|
42203
|
+
if (!table.rows[0]) {
|
|
42204
|
+
return 0;
|
|
42205
|
+
}
|
|
42206
|
+
var firstRow = table.rows[0];
|
|
42207
|
+
for (var i = 0; i < firstRow.cells.length; i++) {
|
|
42208
|
+
var cell = firstRow.cells[i];
|
|
42209
|
+
var cellRect = (0, roosterjs_content_model_dom_1.normalizeRect)(cell.getBoundingClientRect());
|
|
42210
|
+
if (cellRect && x >= cellRect.left && x <= cellRect.right) {
|
|
42211
|
+
return i;
|
|
42212
|
+
}
|
|
42213
|
+
}
|
|
42214
|
+
return firstRow.cells.length - 1;
|
|
42215
|
+
}
|
|
42216
|
+
}
|
|
42217
|
+
/**
|
|
42218
|
+
* @internal
|
|
42219
|
+
* Exported for testing
|
|
42220
|
+
*/
|
|
42221
|
+
function onDragStart(context, event) {
|
|
42222
|
+
var table = context.table, editor = context.editor, isRow = context.isRow;
|
|
42223
|
+
editor.setDOMSelection(null);
|
|
42224
|
+
var parsedTable = (0, roosterjs_content_model_dom_1.parseTableCells)(table);
|
|
42225
|
+
var startIndex = getCurrentIndexFromMouse(table, event.clientX, event.clientY, isRow);
|
|
42226
|
+
if (isRow) {
|
|
42227
|
+
var columnNumber = parsedTable[startIndex].length - 1;
|
|
42228
|
+
var initialSelection = {
|
|
42229
|
+
type: 'table',
|
|
42230
|
+
table: table,
|
|
42231
|
+
firstRow: startIndex,
|
|
42232
|
+
lastRow: startIndex,
|
|
42233
|
+
firstColumn: 0,
|
|
42234
|
+
lastColumn: columnNumber,
|
|
42235
|
+
};
|
|
42236
|
+
return {
|
|
42237
|
+
cmTable: undefined,
|
|
42238
|
+
initialSelection: initialSelection,
|
|
42239
|
+
parsedTable: parsedTable,
|
|
42240
|
+
startIndex: startIndex,
|
|
42241
|
+
};
|
|
42242
|
+
}
|
|
42243
|
+
else {
|
|
42244
|
+
var rowNumber = parsedTable.length - 1;
|
|
42245
|
+
var initialSelection = {
|
|
42246
|
+
type: 'table',
|
|
42247
|
+
table: table,
|
|
42248
|
+
firstRow: 0,
|
|
42249
|
+
lastRow: rowNumber,
|
|
42250
|
+
firstColumn: startIndex,
|
|
42251
|
+
lastColumn: startIndex,
|
|
42252
|
+
};
|
|
42253
|
+
return {
|
|
42254
|
+
cmTable: undefined,
|
|
42255
|
+
initialSelection: initialSelection,
|
|
42256
|
+
parsedTable: parsedTable,
|
|
42257
|
+
startIndex: startIndex,
|
|
42258
|
+
};
|
|
42259
|
+
}
|
|
42260
|
+
}
|
|
42261
|
+
exports.onDragStart = onDragStart;
|
|
42262
|
+
/**
|
|
42263
|
+
* @internal
|
|
42264
|
+
* Exported for testing
|
|
42265
|
+
*/
|
|
42266
|
+
function onDragging(context, event, initValue) {
|
|
42267
|
+
if (!initValue) {
|
|
42268
|
+
return false;
|
|
42269
|
+
}
|
|
42270
|
+
var table = context.table, editor = context.editor, isRow = context.isRow;
|
|
42271
|
+
var parsedTable = initValue.parsedTable, startIndex = initValue.startIndex;
|
|
42272
|
+
var currentIndex = getCurrentIndexFromMouse(table, event.clientX, event.clientY, isRow);
|
|
42273
|
+
if (isRow) {
|
|
42274
|
+
var columnNumber = parsedTable[startIndex].length - 1;
|
|
42275
|
+
var firstRow = Math.min(startIndex, currentIndex);
|
|
42276
|
+
var lastRow = Math.max(startIndex, currentIndex);
|
|
42277
|
+
editor.setDOMSelection({
|
|
42278
|
+
type: 'table',
|
|
42279
|
+
table: table,
|
|
42280
|
+
firstRow: firstRow,
|
|
42281
|
+
firstColumn: 0,
|
|
42282
|
+
lastRow: lastRow,
|
|
42283
|
+
lastColumn: columnNumber,
|
|
42284
|
+
});
|
|
42285
|
+
}
|
|
42286
|
+
else {
|
|
42287
|
+
var firstColumn = Math.min(startIndex, currentIndex);
|
|
42288
|
+
var lastColumn = Math.max(startIndex, currentIndex);
|
|
42289
|
+
var rowNumber = parsedTable.length - 1;
|
|
42290
|
+
editor.setDOMSelection({
|
|
42291
|
+
type: 'table',
|
|
42292
|
+
table: table,
|
|
42293
|
+
firstRow: 0,
|
|
42294
|
+
firstColumn: firstColumn,
|
|
42295
|
+
lastColumn: lastColumn,
|
|
42296
|
+
lastRow: rowNumber,
|
|
42297
|
+
});
|
|
42298
|
+
}
|
|
42299
|
+
return true;
|
|
42300
|
+
}
|
|
42301
|
+
exports.onDragging = onDragging;
|
|
42302
|
+
/**
|
|
42303
|
+
* @internal
|
|
42304
|
+
* Exported for testing
|
|
42305
|
+
*/
|
|
42306
|
+
function onDragEnd(context, event, initValue) {
|
|
42307
|
+
if (!initValue) {
|
|
42308
|
+
return false;
|
|
42309
|
+
}
|
|
42310
|
+
var editor = context.editor;
|
|
42311
|
+
var selection = editor.getDOMSelection();
|
|
42312
|
+
if ((selection === null || selection === void 0 ? void 0 : selection.type) !== 'table') {
|
|
42313
|
+
editor.setDOMSelection(initValue.initialSelection);
|
|
42314
|
+
}
|
|
42315
|
+
return true;
|
|
42316
|
+
}
|
|
42317
|
+
exports.onDragEnd = onDragEnd;
|
|
42318
|
+
function getInsertElementData(rect, isRowSelector) {
|
|
42319
|
+
var MIN_DISTANCE_FROM_BOUNDARY = 5;
|
|
42320
|
+
var GAP_FROM_CELL = 5;
|
|
42321
|
+
var cellLength = isRowSelector ? rect.bottom - rect.top : rect.right - rect.left;
|
|
42322
|
+
var maxSelectorSize = Math.max(16, cellLength - MIN_DISTANCE_FROM_BOUNDARY * 2);
|
|
42323
|
+
var SELECTOR_SIZE = cellLength >= 32 ? Math.min(cellLength - 16, maxSelectorSize) : 16;
|
|
42324
|
+
var centerOffset = (cellLength - SELECTOR_SIZE) / 2;
|
|
42325
|
+
var size = isRowSelector
|
|
42326
|
+
? "width: 5px; height: " + SELECTOR_SIZE + "px; top: " + (rect.top + centerOffset) + "px; left: " + (rect.left - 5 - GAP_FROM_CELL) + "px"
|
|
42327
|
+
: "width: " + SELECTOR_SIZE + "px; height: 5px; top: " + (rect.top - 5 - GAP_FROM_CELL) + "px; left: " + (rect.left + centerOffset) + "px";
|
|
42328
|
+
var cursor = isRowSelector
|
|
42329
|
+
? "url(\"" + STABLE_RIGHT_ARROW_CURSOR + "\"), auto"
|
|
42330
|
+
: "url(\"" + STABLE_DOWN_ARROW_CURSOR + "\") , auto";
|
|
42331
|
+
var outerDivStyle = "position: fixed; " + size + "; background-color: transparent; cursor: " + cursor + "; pointer-events: auto;";
|
|
42332
|
+
return {
|
|
42333
|
+
tag: 'div',
|
|
42334
|
+
style: outerDivStyle,
|
|
42335
|
+
};
|
|
42336
|
+
}
|
|
42337
|
+
|
|
42338
|
+
|
|
41735
42339
|
/***/ }),
|
|
41736
42340
|
|
|
41737
42341
|
/***/ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/utils/getTableFromContentModel.ts":
|
|
@@ -41754,6 +42358,7 @@ function getCMTableFromTable(editor, table) {
|
|
|
41754
42358
|
var context = (0, roosterjs_content_model_dom_1.createDomToModelContext)({
|
|
41755
42359
|
zoomScale: editor.getDOMHelper().calculateZoomScale(),
|
|
41756
42360
|
recalculateTableSize: true,
|
|
42361
|
+
allowCacheElement: true, // We need this cache so we can retrieve TD element and update TD width and height when resizing table
|
|
41757
42362
|
});
|
|
41758
42363
|
context.elementProcessors.element(model, table, context);
|
|
41759
42364
|
var firstBlock = model.blocks[0];
|
|
@@ -41823,7 +42428,7 @@ var TouchPlugin = /** @class */ (function () {
|
|
|
41823
42428
|
*/
|
|
41824
42429
|
TouchPlugin.prototype.onPluginEvent = function (event) {
|
|
41825
42430
|
var _this = this;
|
|
41826
|
-
var _a, _b, _c
|
|
42431
|
+
var _a, _b, _c;
|
|
41827
42432
|
if (!this.editor) {
|
|
41828
42433
|
return;
|
|
41829
42434
|
}
|
|
@@ -41832,57 +42437,59 @@ var TouchPlugin = /** @class */ (function () {
|
|
|
41832
42437
|
this.isDblClicked = false;
|
|
41833
42438
|
this.isTouchPenPointerEvent = true;
|
|
41834
42439
|
event.originalEvent.preventDefault();
|
|
41835
|
-
var targetWindow =
|
|
41836
|
-
if (
|
|
41837
|
-
|
|
41838
|
-
|
|
41839
|
-
|
|
41840
|
-
|
|
41841
|
-
|
|
41842
|
-
if (
|
|
41843
|
-
_this.
|
|
41844
|
-
|
|
41845
|
-
|
|
41846
|
-
|
|
41847
|
-
|
|
41848
|
-
|
|
41849
|
-
|
|
41850
|
-
|
|
41851
|
-
|
|
41852
|
-
|
|
41853
|
-
|
|
41854
|
-
|
|
41855
|
-
|
|
41856
|
-
|
|
41857
|
-
|
|
41858
|
-
|
|
41859
|
-
|
|
41860
|
-
|
|
41861
|
-
|
|
41862
|
-
|
|
41863
|
-
|
|
41864
|
-
|
|
41865
|
-
|
|
41866
|
-
|
|
41867
|
-
|
|
41868
|
-
|
|
41869
|
-
|
|
41870
|
-
|
|
41871
|
-
|
|
41872
|
-
|
|
42440
|
+
var targetWindow = this.editor.getDocument().defaultView;
|
|
42441
|
+
if (targetWindow) {
|
|
42442
|
+
if (this.timer) {
|
|
42443
|
+
targetWindow.clearTimeout(this.timer);
|
|
42444
|
+
}
|
|
42445
|
+
this.timer = targetWindow.setTimeout(function () {
|
|
42446
|
+
_this.timer = 0;
|
|
42447
|
+
if (_this.editor) {
|
|
42448
|
+
if (!_this.isDblClicked) {
|
|
42449
|
+
_this.editor.focus();
|
|
42450
|
+
var caretPosition = (0, getNodePositionFromEvent_1.getNodePositionFromEvent)(_this.editor, event.rawEvent.x, event.rawEvent.y);
|
|
42451
|
+
var newRange = _this.editor.getDocument().createRange();
|
|
42452
|
+
if (caretPosition) {
|
|
42453
|
+
var node = caretPosition.node, offset = caretPosition.offset;
|
|
42454
|
+
// Place cursor at same position of browser handler by default
|
|
42455
|
+
newRange.setStart(node, offset);
|
|
42456
|
+
newRange.setEnd(node, offset);
|
|
42457
|
+
var nodeTextContent = node.textContent || '';
|
|
42458
|
+
var charAtSelection = nodeTextContent[offset];
|
|
42459
|
+
if (node.nodeType === Node.TEXT_NODE &&
|
|
42460
|
+
charAtSelection &&
|
|
42461
|
+
!SPACE_MATCHING_REGEX.test(charAtSelection) &&
|
|
42462
|
+
!PUNCTUATION_MATCHING_REGEX.test(charAtSelection)) {
|
|
42463
|
+
var _a = findWordBoundaries(nodeTextContent, offset), wordStart = _a.wordStart, wordEnd = _a.wordEnd;
|
|
42464
|
+
// Move cursor to the calculated offset
|
|
42465
|
+
var leftCursorWordLength = offset - wordStart;
|
|
42466
|
+
var rightCursorWordLength = wordEnd - offset;
|
|
42467
|
+
var movingOffset = leftCursorWordLength >= rightCursorWordLength
|
|
42468
|
+
? rightCursorWordLength
|
|
42469
|
+
: -leftCursorWordLength;
|
|
42470
|
+
movingOffset =
|
|
42471
|
+
Math.abs(movingOffset) > MAX_TOUCH_MOVE_DISTANCE
|
|
42472
|
+
? 0
|
|
42473
|
+
: movingOffset;
|
|
42474
|
+
var newOffsetPosition = offset + movingOffset;
|
|
42475
|
+
if (movingOffset !== 0 &&
|
|
42476
|
+
nodeTextContent.length >= newOffsetPosition) {
|
|
42477
|
+
newRange.setStart(node, newOffsetPosition);
|
|
42478
|
+
newRange.setEnd(node, newOffsetPosition);
|
|
42479
|
+
}
|
|
41873
42480
|
}
|
|
41874
42481
|
}
|
|
42482
|
+
_this.editor.setDOMSelection({
|
|
42483
|
+
type: 'range',
|
|
42484
|
+
range: newRange,
|
|
42485
|
+
isReverted: false,
|
|
42486
|
+
});
|
|
42487
|
+
// reset values
|
|
42488
|
+
_this.isTouchPenPointerEvent = false;
|
|
41875
42489
|
}
|
|
41876
|
-
_this.editor.setDOMSelection({
|
|
41877
|
-
type: 'range',
|
|
41878
|
-
range: newRange,
|
|
41879
|
-
isReverted: false,
|
|
41880
|
-
});
|
|
41881
|
-
// reset values
|
|
41882
|
-
_this.isTouchPenPointerEvent = false;
|
|
41883
42490
|
}
|
|
41884
|
-
}
|
|
41885
|
-
}
|
|
42491
|
+
}, POINTER_DETECTION_DELAY);
|
|
42492
|
+
}
|
|
41886
42493
|
break;
|
|
41887
42494
|
case 'doubleClick':
|
|
41888
42495
|
if (this.isTouchPenPointerEvent) {
|
|
@@ -41898,7 +42505,7 @@ var TouchPlugin = /** @class */ (function () {
|
|
|
41898
42505
|
var char = nodeTextContent.charAt(offset);
|
|
41899
42506
|
// Check if the clicked character is a punctuation mark, then highlight that character only
|
|
41900
42507
|
if (PUNCTUATION_MATCHING_REGEX.test(char)) {
|
|
41901
|
-
var newRange = (
|
|
42508
|
+
var newRange = (_a = this.editor.getDocument()) === null || _a === void 0 ? void 0 : _a.createRange();
|
|
41902
42509
|
if (newRange) {
|
|
41903
42510
|
newRange.setStart(node, offset);
|
|
41904
42511
|
newRange.setEnd(node, offset + 1);
|
|
@@ -41920,7 +42527,7 @@ var TouchPlugin = /** @class */ (function () {
|
|
|
41920
42527
|
SPACE_MATCHING_REGEX.test(nodeTextContent.charAt(start - 1))) {
|
|
41921
42528
|
start--;
|
|
41922
42529
|
}
|
|
41923
|
-
var newRange = (
|
|
42530
|
+
var newRange = (_b = this.editor.getDocument()) === null || _b === void 0 ? void 0 : _b.createRange();
|
|
41924
42531
|
if (newRange) {
|
|
41925
42532
|
newRange.setStart(node, start);
|
|
41926
42533
|
newRange.setEnd(node, start + 1);
|
|
@@ -41933,8 +42540,8 @@ var TouchPlugin = /** @class */ (function () {
|
|
|
41933
42540
|
}
|
|
41934
42541
|
}
|
|
41935
42542
|
else {
|
|
41936
|
-
var
|
|
41937
|
-
var newRange = (
|
|
42543
|
+
var _d = findWordBoundaries(nodeTextContent, offset), wordStart = _d.wordStart, wordEnd = _d.wordEnd;
|
|
42544
|
+
var newRange = (_c = this.editor.getDocument()) === null || _c === void 0 ? void 0 : _c.createRange();
|
|
41938
42545
|
if (newRange) {
|
|
41939
42546
|
newRange.setStart(node, wordStart);
|
|
41940
42547
|
newRange.setEnd(node, wordEnd);
|