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