roosterjs 9.25.0 → 9.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/rooster-amd-min.js +1 -1
- package/dist/rooster-amd-min.js.map +1 -1
- package/dist/rooster-amd.d.ts +12 -3
- package/dist/rooster-amd.js +67 -36
- 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.js +53 -53
- package/dist/rooster-react.js.map +1 -1
- package/dist/rooster.d.ts +12 -3
- package/dist/rooster.js +67 -36
- package/dist/rooster.js.map +1 -1
- package/package.json +7 -7
package/dist/rooster.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Type definitions for roosterjs (Version 9.
|
|
1
|
+
// Type definitions for roosterjs (Version 9.26.0)
|
|
2
2
|
// Generated by dts tool from roosterjs
|
|
3
3
|
// Project: https://github.com/Microsoft/roosterjs
|
|
4
4
|
|
|
@@ -2828,7 +2828,7 @@ interface EditorContext {
|
|
|
2828
2828
|
/**
|
|
2829
2829
|
* When set to true, size of table will be recalculated when converting from DOM to Content Model.
|
|
2830
2830
|
*/
|
|
2831
|
-
recalculateTableSize?: boolean;
|
|
2831
|
+
recalculateTableSize?: boolean | 'all' | 'selected' | 'none';
|
|
2832
2832
|
}
|
|
2833
2833
|
|
|
2834
2834
|
/**
|
|
@@ -3087,7 +3087,16 @@ interface DomToModelOptionForCreateModel extends DomToModelOption {
|
|
|
3087
3087
|
/**
|
|
3088
3088
|
* When set to true, it will try to reuse cached content model if any
|
|
3089
3089
|
*/
|
|
3090
|
-
tryGetFromCache
|
|
3090
|
+
tryGetFromCache?: boolean;
|
|
3091
|
+
/**
|
|
3092
|
+
* Whether recalculate table size when parse table
|
|
3093
|
+
* 'all' or true means recalculate all tables in the model
|
|
3094
|
+
* 'selected' means recalculate only selected tables in the model
|
|
3095
|
+
* 'none' or false means do not recalculate any table in the model
|
|
3096
|
+
*
|
|
3097
|
+
* When this option is passed, "tryGetFromCache" will be ignored.
|
|
3098
|
+
*/
|
|
3099
|
+
recalculateTableSize?: boolean | 'all' | 'selected' | 'none';
|
|
3091
3100
|
}
|
|
3092
3101
|
|
|
3093
3102
|
/**
|
package/dist/rooster.js
CHANGED
|
@@ -4302,16 +4302,18 @@ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-mo
|
|
|
4302
4302
|
function clearSelectedCells(table, sel) {
|
|
4303
4303
|
if (sel.firstColumn >= 0 &&
|
|
4304
4304
|
sel.firstRow >= 0 &&
|
|
4305
|
-
sel.
|
|
4306
|
-
sel.
|
|
4305
|
+
sel.lastRow < table.rows.length &&
|
|
4306
|
+
sel.lastColumn < table.rows[sel.lastRow].cells.length) {
|
|
4307
4307
|
for (var i = sel.firstRow; i <= sel.lastRow; i++) {
|
|
4308
4308
|
var row = table.rows[i];
|
|
4309
4309
|
for (var j = sel.firstColumn; j <= sel.lastColumn; j++) {
|
|
4310
4310
|
var cell = row.cells[j];
|
|
4311
|
-
if (cell
|
|
4312
|
-
|
|
4311
|
+
if (cell) {
|
|
4312
|
+
if (cell.isSelected) {
|
|
4313
|
+
(0, roosterjs_content_model_dom_1.mutateBlock)(cell).isSelected = false;
|
|
4314
|
+
}
|
|
4315
|
+
(0, roosterjs_content_model_dom_1.setSelection)(cell);
|
|
4313
4316
|
}
|
|
4314
|
-
(0, roosterjs_content_model_dom_1.setSelection)(cell);
|
|
4315
4317
|
}
|
|
4316
4318
|
}
|
|
4317
4319
|
}
|
|
@@ -4753,7 +4755,9 @@ function splitTableCellHorizontally(table) {
|
|
|
4753
4755
|
table.rows.forEach(function (row, rowIndex) {
|
|
4754
4756
|
var cell = row.cells[colIndex];
|
|
4755
4757
|
if (cell) {
|
|
4756
|
-
var
|
|
4758
|
+
var mutableCell = (0, roosterjs_content_model_dom_1.mutateBlock)(cell);
|
|
4759
|
+
delete mutableCell.format.width;
|
|
4760
|
+
var newCell = (0, roosterjs_content_model_dom_1.createTableCell)(cell.spanLeft, cell.spanAbove, cell.isHeader, mutableCell.format);
|
|
4757
4761
|
newCell.dataset = (0, tslib_1.__assign)({}, cell.dataset);
|
|
4758
4762
|
if (rowIndex < sel.firstRow || rowIndex > sel.lastRow) {
|
|
4759
4763
|
newCell.spanLeft = true;
|
|
@@ -4819,7 +4823,9 @@ function splitTableCellVertically(table) {
|
|
|
4819
4823
|
format: (0, tslib_1.__assign)({}, row.format),
|
|
4820
4824
|
height: newHeight,
|
|
4821
4825
|
cells: row.cells.map(function (cell, colIndex) {
|
|
4822
|
-
var
|
|
4826
|
+
var mutableCell = (0, roosterjs_content_model_dom_1.mutateBlock)(cell);
|
|
4827
|
+
delete mutableCell.format.height;
|
|
4828
|
+
var newCell = (0, roosterjs_content_model_dom_1.createTableCell)(cell.spanLeft, cell.spanAbove, cell.isHeader, mutableCell.format);
|
|
4823
4829
|
newCell.dataset = (0, tslib_1.__assign)({}, cell.dataset);
|
|
4824
4830
|
if (colIndex < sel.firstColumn || colIndex > sel.lastColumn) {
|
|
4825
4831
|
newCell.spanAbove = true;
|
|
@@ -7384,6 +7390,8 @@ function formatTableWithContentModel(editor, apiName, callback, selectionOverrid
|
|
|
7384
7390
|
}, {
|
|
7385
7391
|
apiName: apiName,
|
|
7386
7392
|
selectionOverride: selectionOverride,
|
|
7393
|
+
}, {
|
|
7394
|
+
recalculateTableSize: 'selected',
|
|
7387
7395
|
});
|
|
7388
7396
|
}
|
|
7389
7397
|
exports.formatTableWithContentModel = formatTableWithContentModel;
|
|
@@ -8892,7 +8900,8 @@ var createContentModel = function (core, option, selectionOverride) {
|
|
|
8892
8900
|
var _a;
|
|
8893
8901
|
// Flush all mutations if any, so that we can get an up-to-date Content Model
|
|
8894
8902
|
(_a = core.cache.textMutationObserver) === null || _a === void 0 ? void 0 : _a.flushMutations();
|
|
8895
|
-
|
|
8903
|
+
var tryGetFromCache = !option || (option.tryGetFromCache && typeof option.recalculateTableSize === 'undefined');
|
|
8904
|
+
if (!selectionOverride && tryGetFromCache) {
|
|
8896
8905
|
var cachedModel = core.cache.cachedModel;
|
|
8897
8906
|
if (cachedModel) {
|
|
8898
8907
|
// When in shadow edit, use a cloned model so we won't pollute the cached one
|
|
@@ -8906,6 +8915,7 @@ var createContentModel = function (core, option, selectionOverride) {
|
|
|
8906
8915
|
: selectionOverride || core.api.getDOMSelection(core) || undefined;
|
|
8907
8916
|
var saveIndex = !option && !selectionOverride;
|
|
8908
8917
|
var editorContext = core.api.createEditorContext(core, saveIndex);
|
|
8918
|
+
editorContext.recalculateTableSize = option === null || option === void 0 ? void 0 : option.recalculateTableSize;
|
|
8909
8919
|
var settings = core.environment.domToModelSettings;
|
|
8910
8920
|
var domToModelContext = option
|
|
8911
8921
|
? (0, roosterjs_content_model_dom_1.createDomToModelContext)(editorContext, settings.builtIn, settings.customized, option)
|
|
@@ -17256,6 +17266,7 @@ var addBlock_1 = __webpack_require__(/*! ../../modelApi/common/addBlock */ "./pa
|
|
|
17256
17266
|
var createTable_1 = __webpack_require__(/*! ../../modelApi/creators/createTable */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createTable.ts");
|
|
17257
17267
|
var createTableCell_1 = __webpack_require__(/*! ../../modelApi/creators/createTableCell */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createTableCell.ts");
|
|
17258
17268
|
var getBoundingClientRect_1 = __webpack_require__(/*! ../utils/getBoundingClientRect */ "./packages/roosterjs-content-model-dom/lib/domToModel/utils/getBoundingClientRect.ts");
|
|
17269
|
+
var getSelectionRootNode_1 = __webpack_require__(/*! ../../domUtils/selection/getSelectionRootNode */ "./packages/roosterjs-content-model-dom/lib/domUtils/selection/getSelectionRootNode.ts");
|
|
17259
17270
|
var isElementOfType_1 = __webpack_require__(/*! ../../domUtils/isElementOfType */ "./packages/roosterjs-content-model-dom/lib/domUtils/isElementOfType.ts");
|
|
17260
17271
|
var isNodeOfType_1 = __webpack_require__(/*! ../../domUtils/isNodeOfType */ "./packages/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts");
|
|
17261
17272
|
var parseFormat_1 = __webpack_require__(/*! ../utils/parseFormat */ "./packages/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts");
|
|
@@ -17286,6 +17297,7 @@ var tableProcessor = function (group, tableElement, context) {
|
|
|
17286
17297
|
var tableSelection = ((_a = context.selection) === null || _a === void 0 ? void 0 : _a.type) == 'table' ? context.selection : null;
|
|
17287
17298
|
var selectedTable = tableSelection === null || tableSelection === void 0 ? void 0 : tableSelection.table;
|
|
17288
17299
|
var hasTableSelection = selectedTable == tableElement;
|
|
17300
|
+
var recalculateTableSize = shouldRecalculateTableSize(tableElement, context);
|
|
17289
17301
|
if (context.allowCacheElement) {
|
|
17290
17302
|
table.cachedElement = tableElement;
|
|
17291
17303
|
}
|
|
@@ -17328,7 +17340,7 @@ var tableProcessor = function (group, tableElement, context) {
|
|
|
17328
17340
|
for (; tableRow.cells[targetCol]; targetCol++) { }
|
|
17329
17341
|
var td = tr.cells[sourceCol];
|
|
17330
17342
|
var hasSelectionBeforeCell = context.isInSelection;
|
|
17331
|
-
if (
|
|
17343
|
+
if (recalculateTableSize) {
|
|
17332
17344
|
var colEnd = targetCol + td.colSpan;
|
|
17333
17345
|
var rowEnd = row + td.rowSpan;
|
|
17334
17346
|
var needCalcWidth = columnPositions[colEnd] === undefined;
|
|
@@ -17472,6 +17484,21 @@ function processColGroup(table, context, result) {
|
|
|
17472
17484
|
}
|
|
17473
17485
|
return hasColGroup;
|
|
17474
17486
|
}
|
|
17487
|
+
function shouldRecalculateTableSize(table, context) {
|
|
17488
|
+
switch (context.recalculateTableSize) {
|
|
17489
|
+
case true:
|
|
17490
|
+
case 'all':
|
|
17491
|
+
return true;
|
|
17492
|
+
case 'selected':
|
|
17493
|
+
var selectionRoot = (0, getSelectionRootNode_1.getSelectionRootNode)(context.selection);
|
|
17494
|
+
return (!!selectionRoot &&
|
|
17495
|
+
(selectionRoot == table ||
|
|
17496
|
+
table.contains(selectionRoot) ||
|
|
17497
|
+
selectionRoot.contains(table)));
|
|
17498
|
+
default:
|
|
17499
|
+
return false;
|
|
17500
|
+
}
|
|
17501
|
+
}
|
|
17475
17502
|
|
|
17476
17503
|
|
|
17477
17504
|
/***/ }),
|
|
@@ -31486,9 +31513,10 @@ function handleTabOnTable(model, rawEvent) {
|
|
|
31486
31513
|
}
|
|
31487
31514
|
exports.handleTabOnTable = handleTabOnTable;
|
|
31488
31515
|
function isWholeTableSelected(tableModel) {
|
|
31489
|
-
var _a, _b
|
|
31490
|
-
|
|
31491
|
-
|
|
31516
|
+
var _a, _b;
|
|
31517
|
+
var lastRow = tableModel.rows[tableModel.rows.length - 1];
|
|
31518
|
+
var lastCell = lastRow === null || lastRow === void 0 ? void 0 : lastRow.cells[lastRow.cells.length - 1];
|
|
31519
|
+
return ((_b = (_a = tableModel.rows[0]) === null || _a === void 0 ? void 0 : _a.cells[0]) === null || _b === void 0 ? void 0 : _b.isSelected) && (lastCell === null || lastCell === void 0 ? void 0 : lastCell.isSelected);
|
|
31492
31520
|
}
|
|
31493
31521
|
|
|
31494
31522
|
|
|
@@ -31511,32 +31539,35 @@ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-mo
|
|
|
31511
31539
|
* @internal
|
|
31512
31540
|
*/
|
|
31513
31541
|
function handleTabOnTableCell(model, cell, rawEvent) {
|
|
31514
|
-
var _a, _b
|
|
31542
|
+
var _a, _b;
|
|
31515
31543
|
var readonlyTableModel = (0, roosterjs_content_model_dom_1.getFirstSelectedTable)(model)[0];
|
|
31516
|
-
|
|
31517
|
-
|
|
31518
|
-
readonlyTableModel
|
|
31519
|
-
|
|
31520
|
-
var
|
|
31521
|
-
(
|
|
31522
|
-
|
|
31523
|
-
|
|
31524
|
-
|
|
31525
|
-
|
|
31526
|
-
|
|
31527
|
-
|
|
31528
|
-
|
|
31529
|
-
|
|
31530
|
-
|
|
31531
|
-
|
|
31532
|
-
|
|
31533
|
-
var
|
|
31534
|
-
|
|
31535
|
-
|
|
31536
|
-
|
|
31544
|
+
if (readonlyTableModel) {
|
|
31545
|
+
// Check if cursor is on last cell of the table
|
|
31546
|
+
var lastRow = readonlyTableModel.rows[readonlyTableModel.rows.length - 1];
|
|
31547
|
+
var lastColumn = lastRow ? lastRow.cells.length - 1 : -1;
|
|
31548
|
+
var lastCell = lastRow === null || lastRow === void 0 ? void 0 : lastRow.cells[lastColumn];
|
|
31549
|
+
if (!rawEvent.shiftKey && lastCell && lastCell === cell) {
|
|
31550
|
+
var tableModel = (0, roosterjs_content_model_dom_1.mutateBlock)(readonlyTableModel);
|
|
31551
|
+
(0, roosterjs_content_model_api_1.insertTableRow)(tableModel, 'insertBelow');
|
|
31552
|
+
// Clear Table selection
|
|
31553
|
+
(0, roosterjs_content_model_api_1.clearSelectedCells)(tableModel, {
|
|
31554
|
+
firstRow: tableModel.rows.length - 1,
|
|
31555
|
+
firstColumn: 0,
|
|
31556
|
+
lastRow: tableModel.rows.length - 1,
|
|
31557
|
+
lastColumn: lastColumn,
|
|
31558
|
+
});
|
|
31559
|
+
(0, roosterjs_content_model_dom_1.normalizeTable)(tableModel, model.format);
|
|
31560
|
+
// Add selection marker to the first cell of the new row
|
|
31561
|
+
var markerParagraph = (_b = (_a = tableModel.rows[tableModel.rows.length - 1]) === null || _a === void 0 ? void 0 : _a.cells[0]) === null || _b === void 0 ? void 0 : _b.blocks[0];
|
|
31562
|
+
if (markerParagraph.blockType == 'Paragraph') {
|
|
31563
|
+
var marker = (0, roosterjs_content_model_dom_1.createSelectionMarker)(model.format);
|
|
31564
|
+
(0, roosterjs_content_model_dom_1.mutateBlock)(markerParagraph).segments.unshift(marker);
|
|
31565
|
+
(0, roosterjs_content_model_dom_1.setParagraphNotImplicit)(markerParagraph);
|
|
31566
|
+
(0, roosterjs_content_model_dom_1.setSelection)(tableModel.rows[tableModel.rows.length - 1].cells[0], marker);
|
|
31567
|
+
}
|
|
31568
|
+
rawEvent.preventDefault();
|
|
31569
|
+
return true;
|
|
31537
31570
|
}
|
|
31538
|
-
rawEvent.preventDefault();
|
|
31539
|
-
return true;
|
|
31540
31571
|
}
|
|
31541
31572
|
return false;
|
|
31542
31573
|
}
|