roosterjs 8.53.0 → 8.55.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 +23 -10
- package/dist/rooster-amd.js +213 -153
- 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.d.ts +23 -10
- package/dist/rooster.js +213 -153
- package/dist/rooster.js.map +1 -1
- package/package.json +7 -7
package/dist/rooster.js
CHANGED
|
@@ -2725,7 +2725,7 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
|
|
|
2725
2725
|
* Get element based Format State at cursor
|
|
2726
2726
|
* @param editor The editor instance
|
|
2727
2727
|
* @param event (Optional) The plugin event, it stores the event cached data for looking up.
|
|
2728
|
-
* In this function the event cache is used to get list state and
|
|
2728
|
+
* In this function the event cache is used to get list state and heading level. If not passed,
|
|
2729
2729
|
* it will query the node within selection to get the info
|
|
2730
2730
|
* @returns An ElementBasedFormatState object
|
|
2731
2731
|
*/
|
|
@@ -2739,17 +2739,19 @@ function getElementBasedFormatState(editor, event) {
|
|
|
2739
2739
|
var endingBlock = editor.getBlockElementAtNode(range.endContainer);
|
|
2740
2740
|
multiline = endingBlock && startingBlock ? !endingBlock.equals(startingBlock) : false;
|
|
2741
2741
|
}
|
|
2742
|
-
var
|
|
2742
|
+
var headingTag = (0, roosterjs_editor_dom_1.getTagOfNode)(editor.getElementAtCursor('H1,H2,H3,H4,H5,H6', undefined /*startFrom*/, event));
|
|
2743
2743
|
var table = editor.queryElements('table', 1 /* OnSelection */)[0];
|
|
2744
2744
|
var tableFormat = table ? (0, roosterjs_editor_dom_1.getTableFormatInfo)(table) : undefined;
|
|
2745
|
-
var
|
|
2745
|
+
var hasTableHeader = (table === null || table === void 0 ? void 0 : table.rows[0])
|
|
2746
2746
|
? (0, roosterjs_editor_dom_1.toArray)(table.rows[0].cells).every(function (cell) { return (0, roosterjs_editor_dom_1.getTagOfNode)(cell) == 'TH'; })
|
|
2747
2747
|
: undefined;
|
|
2748
|
+
var headingLevel = (headingTag && parseInt(headingTag[1])) || 0;
|
|
2748
2749
|
return {
|
|
2749
2750
|
isBullet: listTag == 'UL',
|
|
2750
2751
|
isNumbering: listTag == 'OL',
|
|
2751
2752
|
isMultilineSelection: multiline,
|
|
2752
|
-
|
|
2753
|
+
headingLevel: headingLevel,
|
|
2754
|
+
headerLevel: headingLevel,
|
|
2753
2755
|
canUnlink: !!editor.queryElements('a[href]', 1 /* OnSelection */)[0],
|
|
2754
2756
|
canAddImageAltText: !!editor.queryElements('img', 1 /* OnSelection */)[0],
|
|
2755
2757
|
isBlockQuote: !!editor.queryElements('blockquote', 1 /* OnSelection */)[0],
|
|
@@ -2757,7 +2759,7 @@ function getElementBasedFormatState(editor, event) {
|
|
|
2757
2759
|
isCodeBlock: !!editor.queryElements('pre>code', 1 /* OnSelection */)[0],
|
|
2758
2760
|
isInTable: !!table,
|
|
2759
2761
|
tableFormat: tableFormat || {},
|
|
2760
|
-
tableHasHeader:
|
|
2762
|
+
tableHasHeader: hasTableHeader,
|
|
2761
2763
|
canMergeTableCell: canMergeTableCell(editor),
|
|
2762
2764
|
};
|
|
2763
2765
|
}
|
|
@@ -2768,7 +2770,7 @@ exports.getElementBasedFormatState = getElementBasedFormatState;
|
|
|
2768
2770
|
* bold, italic, underline, font name, font size, etc.
|
|
2769
2771
|
* @param editor The editor instance
|
|
2770
2772
|
* @param event (Optional) The plugin event, it stores the event cached data for looking up.
|
|
2771
|
-
* In this function the event cache is used to get list state and
|
|
2773
|
+
* In this function the event cache is used to get list state and heading level. If not passed,
|
|
2772
2774
|
* it will query the node within selection to get the info
|
|
2773
2775
|
* @returns The format state at cursor
|
|
2774
2776
|
*/
|
|
@@ -3294,6 +3296,66 @@ function setFontSize(editor, fontSize) {
|
|
|
3294
3296
|
exports["default"] = setFontSize;
|
|
3295
3297
|
|
|
3296
3298
|
|
|
3299
|
+
/***/ }),
|
|
3300
|
+
|
|
3301
|
+
/***/ "./packages/roosterjs-editor-api/lib/format/setHeadingLevel.ts":
|
|
3302
|
+
/*!*********************************************************************!*\
|
|
3303
|
+
!*** ./packages/roosterjs-editor-api/lib/format/setHeadingLevel.ts ***!
|
|
3304
|
+
\*********************************************************************/
|
|
3305
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
3306
|
+
|
|
3307
|
+
"use strict";
|
|
3308
|
+
|
|
3309
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
3310
|
+
exports.toggleHeader = void 0;
|
|
3311
|
+
var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
|
|
3312
|
+
var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
|
|
3313
|
+
/**
|
|
3314
|
+
* Set heading level at selection
|
|
3315
|
+
* @param editor The editor instance
|
|
3316
|
+
* @param level The heading level, can be a number from 0 to 6, in which 1 ~ 6 refers to
|
|
3317
|
+
* the HTML heading element <H1> to <H6>, 0 means no heading
|
|
3318
|
+
* if passed in param is outside the range, will be rounded to nearest number in the range
|
|
3319
|
+
*/
|
|
3320
|
+
function setHeadingLevel(editor, level) {
|
|
3321
|
+
level = Math.min(Math.max(Math.round(level), 0), 6);
|
|
3322
|
+
(0, formatUndoSnapshot_1.default)(editor, function () {
|
|
3323
|
+
editor.focus();
|
|
3324
|
+
var wrapped = false;
|
|
3325
|
+
editor.queryElements('H1,H2,H3,H4,H5,H6', 1 /* OnSelection */, function (heading) {
|
|
3326
|
+
if (!wrapped) {
|
|
3327
|
+
editor.getDocument().execCommand("formatBlock" /* FormatBlock */, false, '<DIV>');
|
|
3328
|
+
wrapped = true;
|
|
3329
|
+
}
|
|
3330
|
+
var div = editor.getDocument().createElement('div');
|
|
3331
|
+
(0, roosterjs_editor_dom_1.moveChildNodes)(div, heading);
|
|
3332
|
+
editor.replaceNode(heading, div);
|
|
3333
|
+
});
|
|
3334
|
+
if (level > 0) {
|
|
3335
|
+
var traverser = editor.getSelectionTraverser();
|
|
3336
|
+
var blockElement = traverser === null || traverser === void 0 ? void 0 : traverser.currentBlockElement;
|
|
3337
|
+
var sanitizer = new roosterjs_editor_dom_1.HtmlSanitizer({
|
|
3338
|
+
cssStyleCallbacks: {
|
|
3339
|
+
'font-size': function () { return false; },
|
|
3340
|
+
},
|
|
3341
|
+
});
|
|
3342
|
+
while (blockElement) {
|
|
3343
|
+
var element = blockElement.collapseToSingleElement();
|
|
3344
|
+
sanitizer.sanitize(element);
|
|
3345
|
+
blockElement = traverser === null || traverser === void 0 ? void 0 : traverser.getNextBlockElement();
|
|
3346
|
+
}
|
|
3347
|
+
editor.getDocument().execCommand("formatBlock" /* FormatBlock */, false, "<H" + level + ">");
|
|
3348
|
+
}
|
|
3349
|
+
}, 'toggleHeader');
|
|
3350
|
+
}
|
|
3351
|
+
exports["default"] = setHeadingLevel;
|
|
3352
|
+
/**
|
|
3353
|
+
* @deprecated Use setHeadingLevel instead
|
|
3354
|
+
* Keep this for compatibility only, will be removed in next major release
|
|
3355
|
+
*/
|
|
3356
|
+
exports.toggleHeader = setHeadingLevel;
|
|
3357
|
+
|
|
3358
|
+
|
|
3297
3359
|
/***/ }),
|
|
3298
3360
|
|
|
3299
3361
|
/***/ "./packages/roosterjs-editor-api/lib/format/setImageAltText.ts":
|
|
@@ -3638,60 +3700,6 @@ function toggleCodeBlock(editor, styler) {
|
|
|
3638
3700
|
exports["default"] = toggleCodeBlock;
|
|
3639
3701
|
|
|
3640
3702
|
|
|
3641
|
-
/***/ }),
|
|
3642
|
-
|
|
3643
|
-
/***/ "./packages/roosterjs-editor-api/lib/format/toggleHeader.ts":
|
|
3644
|
-
/*!******************************************************************!*\
|
|
3645
|
-
!*** ./packages/roosterjs-editor-api/lib/format/toggleHeader.ts ***!
|
|
3646
|
-
\******************************************************************/
|
|
3647
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
3648
|
-
|
|
3649
|
-
"use strict";
|
|
3650
|
-
|
|
3651
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
3652
|
-
var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
|
|
3653
|
-
var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
|
|
3654
|
-
/**
|
|
3655
|
-
* Toggle header at selection
|
|
3656
|
-
* @param editor The editor instance
|
|
3657
|
-
* @param level The header level, can be a number from 0 to 6, in which 1 ~ 6 refers to
|
|
3658
|
-
* the HTML header element <H1> to <H6>, 0 means no header
|
|
3659
|
-
* if passed in param is outside the range, will be rounded to nearest number in the range
|
|
3660
|
-
*/
|
|
3661
|
-
function toggleHeader(editor, level) {
|
|
3662
|
-
level = Math.min(Math.max(Math.round(level), 0), 6);
|
|
3663
|
-
(0, formatUndoSnapshot_1.default)(editor, function () {
|
|
3664
|
-
editor.focus();
|
|
3665
|
-
var wrapped = false;
|
|
3666
|
-
editor.queryElements('H1,H2,H3,H4,H5,H6', 1 /* OnSelection */, function (header) {
|
|
3667
|
-
if (!wrapped) {
|
|
3668
|
-
editor.getDocument().execCommand("formatBlock" /* FormatBlock */, false, '<DIV>');
|
|
3669
|
-
wrapped = true;
|
|
3670
|
-
}
|
|
3671
|
-
var div = editor.getDocument().createElement('div');
|
|
3672
|
-
(0, roosterjs_editor_dom_1.moveChildNodes)(div, header);
|
|
3673
|
-
editor.replaceNode(header, div);
|
|
3674
|
-
});
|
|
3675
|
-
if (level > 0) {
|
|
3676
|
-
var traverser = editor.getSelectionTraverser();
|
|
3677
|
-
var blockElement = traverser === null || traverser === void 0 ? void 0 : traverser.currentBlockElement;
|
|
3678
|
-
var sanitizer = new roosterjs_editor_dom_1.HtmlSanitizer({
|
|
3679
|
-
cssStyleCallbacks: {
|
|
3680
|
-
'font-size': function () { return false; },
|
|
3681
|
-
},
|
|
3682
|
-
});
|
|
3683
|
-
while (blockElement) {
|
|
3684
|
-
var element = blockElement.collapseToSingleElement();
|
|
3685
|
-
sanitizer.sanitize(element);
|
|
3686
|
-
blockElement = traverser === null || traverser === void 0 ? void 0 : traverser.getNextBlockElement();
|
|
3687
|
-
}
|
|
3688
|
-
editor.getDocument().execCommand("formatBlock" /* FormatBlock */, false, "<H" + level + ">");
|
|
3689
|
-
}
|
|
3690
|
-
}, 'toggleHeader');
|
|
3691
|
-
}
|
|
3692
|
-
exports["default"] = toggleHeader;
|
|
3693
|
-
|
|
3694
|
-
|
|
3695
3703
|
/***/ }),
|
|
3696
3704
|
|
|
3697
3705
|
/***/ "./packages/roosterjs-editor-api/lib/format/toggleItalic.ts":
|
|
@@ -3866,7 +3874,7 @@ exports["default"] = toggleUnderline;
|
|
|
3866
3874
|
"use strict";
|
|
3867
3875
|
|
|
3868
3876
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
3869
|
-
exports.experimentCommitListChains = exports.commitListChains = exports.blockFormat = exports.toggleListType = exports.applyCellShading = exports.toggleHeader = exports.toggleUnderline = exports.toggleSuperscript = exports.toggleSubscript = exports.toggleStrikethrough = exports.toggleCodeBlock = exports.toggleBlockQuote = exports.setOrderedListNumbering = exports.toggleNumbering = exports.toggleItalic = exports.toggleBullet = exports.toggleBold = exports.changeCapitalization = exports.setIndentation = exports.setImageAltText = exports.setFontSize = exports.setFontName = exports.setDirection = exports.setTextColor = exports.setBackgroundColor = exports.setAlignment = exports.rotateElement = exports.replaceWithNode = exports.removeLink = exports.formatTable = exports.editTable = exports.insertTable = exports.insertImage = exports.insertEntity = exports.getElementBasedFormatState = exports.getFormatState = exports.createLink = exports.clearFormat = exports.clearBlockFormat = exports.FONT_SIZES = exports.changeFontSize = void 0;
|
|
3877
|
+
exports.experimentCommitListChains = exports.commitListChains = exports.blockFormat = exports.toggleListType = exports.applyCellShading = exports.toggleHeader = exports.setHeadingLevel = exports.toggleUnderline = exports.toggleSuperscript = exports.toggleSubscript = exports.toggleStrikethrough = exports.toggleCodeBlock = exports.toggleBlockQuote = exports.setOrderedListNumbering = exports.toggleNumbering = exports.toggleItalic = exports.toggleBullet = exports.toggleBold = exports.changeCapitalization = exports.setIndentation = exports.setImageAltText = exports.setFontSize = exports.setFontName = exports.setDirection = exports.setTextColor = exports.setBackgroundColor = exports.setAlignment = exports.rotateElement = exports.replaceWithNode = exports.removeLink = exports.formatTable = exports.editTable = exports.insertTable = exports.insertImage = exports.insertEntity = exports.getElementBasedFormatState = exports.getFormatState = exports.createLink = exports.clearFormat = exports.clearBlockFormat = exports.FONT_SIZES = exports.changeFontSize = void 0;
|
|
3870
3878
|
var changeFontSize_1 = __webpack_require__(/*! ./format/changeFontSize */ "./packages/roosterjs-editor-api/lib/format/changeFontSize.ts");
|
|
3871
3879
|
Object.defineProperty(exports, "changeFontSize", ({ enumerable: true, get: function () { return changeFontSize_1.default; } }));
|
|
3872
3880
|
Object.defineProperty(exports, "FONT_SIZES", ({ enumerable: true, get: function () { return changeFontSize_1.FONT_SIZES; } }));
|
|
@@ -3935,8 +3943,9 @@ var toggleSuperscript_1 = __webpack_require__(/*! ./format/toggleSuperscript */
|
|
|
3935
3943
|
Object.defineProperty(exports, "toggleSuperscript", ({ enumerable: true, get: function () { return toggleSuperscript_1.default; } }));
|
|
3936
3944
|
var toggleUnderline_1 = __webpack_require__(/*! ./format/toggleUnderline */ "./packages/roosterjs-editor-api/lib/format/toggleUnderline.ts");
|
|
3937
3945
|
Object.defineProperty(exports, "toggleUnderline", ({ enumerable: true, get: function () { return toggleUnderline_1.default; } }));
|
|
3938
|
-
var
|
|
3939
|
-
Object.defineProperty(exports, "
|
|
3946
|
+
var setHeadingLevel_1 = __webpack_require__(/*! ./format/setHeadingLevel */ "./packages/roosterjs-editor-api/lib/format/setHeadingLevel.ts");
|
|
3947
|
+
Object.defineProperty(exports, "setHeadingLevel", ({ enumerable: true, get: function () { return setHeadingLevel_1.default; } }));
|
|
3948
|
+
Object.defineProperty(exports, "toggleHeader", ({ enumerable: true, get: function () { return setHeadingLevel_1.toggleHeader; } }));
|
|
3940
3949
|
var applyCellShading_1 = __webpack_require__(/*! ./table/applyCellShading */ "./packages/roosterjs-editor-api/lib/table/applyCellShading.ts");
|
|
3941
3950
|
Object.defineProperty(exports, "applyCellShading", ({ enumerable: true, get: function () { return applyCellShading_1.default; } }));
|
|
3942
3951
|
var toggleListType_1 = __webpack_require__(/*! ./utils/toggleListType */ "./packages/roosterjs-editor-api/lib/utils/toggleListType.ts");
|
|
@@ -4977,8 +4986,10 @@ function createFragmentFromClipboardData(core, clipboardData, position, pasteAsT
|
|
|
4977
4986
|
// Paste text
|
|
4978
4987
|
(0, roosterjs_editor_dom_1.handleTextPaste)(text, position, fragment);
|
|
4979
4988
|
}
|
|
4980
|
-
// Step 4: Trigger BeforePasteEvent so that plugins can do proper change before paste
|
|
4981
|
-
|
|
4989
|
+
// Step 4: Trigger BeforePasteEvent so that plugins can do proper change before paste, when the type of paste is different than Plain Text
|
|
4990
|
+
if (event.pasteType !== 1 /* AsPlainText */) {
|
|
4991
|
+
core.api.triggerEvent(core, event, true /*broadcast*/);
|
|
4992
|
+
}
|
|
4982
4993
|
// Step 5. Sanitize the fragment before paste to make sure the content is safe
|
|
4983
4994
|
(0, roosterjs_editor_dom_1.sanitizePasteContent)(event, position);
|
|
4984
4995
|
return fragment;
|
|
@@ -6811,6 +6822,14 @@ var DOMEventPlugin = /** @class */ (function () {
|
|
|
6811
6822
|
var _a;
|
|
6812
6823
|
this.editor = null;
|
|
6813
6824
|
this.disposer = null;
|
|
6825
|
+
this.onDragStart = function (e) {
|
|
6826
|
+
var _a;
|
|
6827
|
+
var dragEvent = e;
|
|
6828
|
+
var element = (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.getElementAtCursor('*', dragEvent.target);
|
|
6829
|
+
if (element && !element.isContentEditable) {
|
|
6830
|
+
dragEvent.preventDefault();
|
|
6831
|
+
}
|
|
6832
|
+
};
|
|
6814
6833
|
this.onDrop = function () {
|
|
6815
6834
|
var _a;
|
|
6816
6835
|
(_a = _this.editor) === null || _a === void 0 ? void 0 : _a.runAsync(function (editor) {
|
|
@@ -6933,7 +6952,8 @@ var DOMEventPlugin = /** @class */ (function () {
|
|
|
6933
6952
|
rawEvent: rawEvent,
|
|
6934
6953
|
});
|
|
6935
6954
|
},
|
|
6936
|
-
// 4. Drop event
|
|
6955
|
+
// 4. Drag and Drop event
|
|
6956
|
+
dragstart: this.onDragStart,
|
|
6937
6957
|
drop: this.onDrop,
|
|
6938
6958
|
// 5. Focus management
|
|
6939
6959
|
focus: this.onFocus
|
|
@@ -7139,7 +7159,6 @@ var EntityPlugin = /** @class */ (function () {
|
|
|
7139
7159
|
function EntityPlugin() {
|
|
7140
7160
|
var _this = this;
|
|
7141
7161
|
this.editor = null;
|
|
7142
|
-
this.disposer = null;
|
|
7143
7162
|
this.handleCutEvent = function (event) {
|
|
7144
7163
|
var _a;
|
|
7145
7164
|
var range = (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.getSelectionRange();
|
|
@@ -7147,14 +7166,6 @@ var EntityPlugin = /** @class */ (function () {
|
|
|
7147
7166
|
_this.checkRemoveEntityForRange(event);
|
|
7148
7167
|
}
|
|
7149
7168
|
};
|
|
7150
|
-
this.onDragStart = function (e) {
|
|
7151
|
-
var _a, _b;
|
|
7152
|
-
var dragEvent = e;
|
|
7153
|
-
var entityWrapper = (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.getElementAtCursor((0, roosterjs_editor_dom_1.getEntitySelector)(), dragEvent.target);
|
|
7154
|
-
if (entityWrapper && ((_b = (0, roosterjs_editor_dom_1.getEntityFromElement)(entityWrapper)) === null || _b === void 0 ? void 0 : _b.isReadonly)) {
|
|
7155
|
-
dragEvent.preventDefault();
|
|
7156
|
-
}
|
|
7157
|
-
};
|
|
7158
7169
|
this.state = {
|
|
7159
7170
|
entityMap: {},
|
|
7160
7171
|
};
|
|
@@ -7171,15 +7182,11 @@ var EntityPlugin = /** @class */ (function () {
|
|
|
7171
7182
|
*/
|
|
7172
7183
|
EntityPlugin.prototype.initialize = function (editor) {
|
|
7173
7184
|
this.editor = editor;
|
|
7174
|
-
this.disposer = this.editor.addDomEventHandler('dragstart', this.onDragStart);
|
|
7175
7185
|
};
|
|
7176
7186
|
/**
|
|
7177
7187
|
* Dispose this plugin
|
|
7178
7188
|
*/
|
|
7179
7189
|
EntityPlugin.prototype.dispose = function () {
|
|
7180
|
-
var _a;
|
|
7181
|
-
(_a = this.disposer) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
7182
|
-
this.disposer = null;
|
|
7183
7190
|
this.editor = null;
|
|
7184
7191
|
this.state.entityMap = {};
|
|
7185
7192
|
};
|
|
@@ -9721,10 +9728,12 @@ var EditorBase = /** @class */ (function () {
|
|
|
9721
9728
|
/**
|
|
9722
9729
|
* Transform the given node and all its child nodes to dark mode color if editor is in dark mode
|
|
9723
9730
|
* @param node The node to transform
|
|
9731
|
+
* @param direction The transform direction. @default ColorTransformDirection.LightToDark
|
|
9724
9732
|
*/
|
|
9725
|
-
EditorBase.prototype.transformToDarkColor = function (node) {
|
|
9733
|
+
EditorBase.prototype.transformToDarkColor = function (node, direction) {
|
|
9734
|
+
if (direction === void 0) { direction = 0 /* LightToDark */; }
|
|
9726
9735
|
var core = this.getCore();
|
|
9727
|
-
core.api.transformColor(core, node, true /*includeSelf*/, null /*callback*/,
|
|
9736
|
+
core.api.transformColor(core, node, true /*includeSelf*/, null /*callback*/, direction);
|
|
9728
9737
|
};
|
|
9729
9738
|
/**
|
|
9730
9739
|
* Get a darkColorHandler object for this editor.
|
|
@@ -17763,6 +17772,17 @@ var VTable = /** @class */ (function () {
|
|
|
17763
17772
|
}
|
|
17764
17773
|
}
|
|
17765
17774
|
}
|
|
17775
|
+
for (var col = 0; col < _this.cells[rowIndex].length; col++) {
|
|
17776
|
+
if (!_this.cells[rowIndex][col]) {
|
|
17777
|
+
_this.cells[rowIndex][col] = {
|
|
17778
|
+
td: null,
|
|
17779
|
+
spanLeft: false,
|
|
17780
|
+
spanAbove: false,
|
|
17781
|
+
width: undefined,
|
|
17782
|
+
height: undefined,
|
|
17783
|
+
};
|
|
17784
|
+
}
|
|
17785
|
+
}
|
|
17766
17786
|
});
|
|
17767
17787
|
this.formatInfo = (0, tableFormatInfo_1.getTableFormatInfo)(this.table);
|
|
17768
17788
|
if (normalizeSize) {
|
|
@@ -24180,7 +24200,7 @@ var ImageEdit = /** @class */ (function () {
|
|
|
24180
24200
|
var cropHandles = getEditElements(wrapper, "r_cropH" /* CropHandle */);
|
|
24181
24201
|
// Cropping and resizing will show different UI, so check if it is cropping here first
|
|
24182
24202
|
_this.isCropping = cropContainers.length == 1 && cropOverlays.length == 4;
|
|
24183
|
-
var _c = _this.editInfo, angleRad = _c.angleRad, bottomPercent = _c.bottomPercent, leftPercent = _c.leftPercent, rightPercent = _c.rightPercent, topPercent = _c.topPercent;
|
|
24203
|
+
var _c = _this.editInfo, angleRad = _c.angleRad, bottomPercent = _c.bottomPercent, leftPercent = _c.leftPercent, rightPercent = _c.rightPercent, topPercent = _c.topPercent, flippedHorizontal = _c.flippedHorizontal, flippedVertical = _c.flippedVertical;
|
|
24184
24204
|
// Width/height of the image
|
|
24185
24205
|
var _d = (0, getGeneratedImageSize_1.default)(_this.editInfo, _this.isCropping), targetWidth = _d.targetWidth, targetHeight = _d.targetHeight, originalWidth = _d.originalWidth, originalHeight = _d.originalHeight, visibleWidth = _d.visibleWidth, visibleHeight = _d.visibleHeight;
|
|
24186
24206
|
var marginHorizontal = (targetWidth - visibleWidth) / 2;
|
|
@@ -24199,6 +24219,8 @@ var ImageEdit = /** @class */ (function () {
|
|
|
24199
24219
|
// Update size of the image
|
|
24200
24220
|
_this.clonedImage.style.width = getPx(originalWidth);
|
|
24201
24221
|
_this.clonedImage.style.height = getPx(originalHeight);
|
|
24222
|
+
//Update flip direction
|
|
24223
|
+
setFlipped(_this.clonedImage.parentElement, flippedHorizontal, flippedVertical);
|
|
24202
24224
|
if (_this.isCropping) {
|
|
24203
24225
|
// For crop, we also need to set position of the overlays
|
|
24204
24226
|
setSize(cropContainers[0], cropLeftPx, cropTopPx, cropRightPx, cropBottomPx, undefined, undefined);
|
|
@@ -24222,7 +24244,7 @@ var ImageEdit = /** @class */ (function () {
|
|
|
24222
24244
|
var viewport = (_b = _this.editor) === null || _b === void 0 ? void 0 : _b.getVisibleViewport();
|
|
24223
24245
|
var isSmall = isASmallImage(targetWidth, targetHeight);
|
|
24224
24246
|
if (rotateHandle && rotateCenter && viewport) {
|
|
24225
|
-
(0, Rotator_1.updateRotateHandleState)(viewport, rotateCenter, rotateHandle, isSmall);
|
|
24247
|
+
(0, Rotator_1.updateRotateHandleState)(viewport, angleRad, wrapper, rotateCenter, rotateHandle, isSmall);
|
|
24226
24248
|
}
|
|
24227
24249
|
updateSideHandlesVisibility(resizeHandles, isSmall);
|
|
24228
24250
|
updateHandleCursor(resizeHandles, angleRad);
|
|
@@ -24273,7 +24295,7 @@ var ImageEdit = /** @class */ (function () {
|
|
|
24273
24295
|
* @param e PluginEvent object
|
|
24274
24296
|
*/
|
|
24275
24297
|
ImageEdit.prototype.onPluginEvent = function (e) {
|
|
24276
|
-
var _a;
|
|
24298
|
+
var _a, _b;
|
|
24277
24299
|
switch (e.eventType) {
|
|
24278
24300
|
case 22 /* SelectionChanged */:
|
|
24279
24301
|
if (e.selectionRangeEx &&
|
|
@@ -24293,6 +24315,13 @@ var ImageEdit = /** @class */ (function () {
|
|
|
24293
24315
|
this.setEditingImage(null);
|
|
24294
24316
|
}
|
|
24295
24317
|
break;
|
|
24318
|
+
case 6 /* MouseUp */:
|
|
24319
|
+
// When mouse up, if the image and the shadow span exists, the editing mode is on.
|
|
24320
|
+
// To make sure the selection did not jump to the shadow root, reselect the image.
|
|
24321
|
+
if (this.image && this.shadowSpan) {
|
|
24322
|
+
(_a = this.editor) === null || _a === void 0 ? void 0 : _a.select(this.image);
|
|
24323
|
+
}
|
|
24324
|
+
break;
|
|
24296
24325
|
case 0 /* KeyDown */:
|
|
24297
24326
|
this.setEditingImage(null);
|
|
24298
24327
|
break;
|
|
@@ -24302,7 +24331,7 @@ var ImageEdit = /** @class */ (function () {
|
|
|
24302
24331
|
break;
|
|
24303
24332
|
case 8 /* ExtractContentWithDom */:
|
|
24304
24333
|
// When extract content, remove all image info since they may not be valid when load the content again
|
|
24305
|
-
if ((
|
|
24334
|
+
if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.imageSelector) {
|
|
24306
24335
|
(0, roosterjs_editor_dom_1.toArray)(e.clonedRoot.querySelectorAll(this.options.imageSelector)).forEach(function (img) {
|
|
24307
24336
|
(0, editInfo_1.deleteEditInfo)(img);
|
|
24308
24337
|
});
|
|
@@ -24443,7 +24472,6 @@ var ImageEdit = /** @class */ (function () {
|
|
|
24443
24472
|
// Set image src to original src to help show editing UI, also it will be used when regenerate image dataURL after editing
|
|
24444
24473
|
if (this.clonedImage) {
|
|
24445
24474
|
this.clonedImage.src = (_c = this.pngSource) !== null && _c !== void 0 ? _c : this.editInfo.src;
|
|
24446
|
-
setFlipped(this.clonedImage, this.editInfo.flippedHorizontal, this.editInfo.flippedVertical);
|
|
24447
24475
|
this.clonedImage.style.position = 'absolute';
|
|
24448
24476
|
}
|
|
24449
24477
|
// Get HTML for all edit elements (resize handle, rotate handle, crop handle and overlay, ...) and create HTML element
|
|
@@ -24614,7 +24642,9 @@ function getColorString(color, isDarkMode) {
|
|
|
24614
24642
|
return isDarkMode ? color.darkModeColor.trim() : color.lightModeColor.trim();
|
|
24615
24643
|
}
|
|
24616
24644
|
function setFlipped(element, flippedHorizontally, flippedVertically) {
|
|
24617
|
-
|
|
24645
|
+
if (element) {
|
|
24646
|
+
element.style.transform = "scale(" + (flippedHorizontally ? -1 : 1) + ", " + (flippedVertically ? -1 : 1) + ")";
|
|
24647
|
+
}
|
|
24618
24648
|
}
|
|
24619
24649
|
|
|
24620
24650
|
|
|
@@ -24786,7 +24816,7 @@ function loadImage(img, src, callback) {
|
|
|
24786
24816
|
"use strict";
|
|
24787
24817
|
|
|
24788
24818
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
24789
|
-
exports.MIN_HEIGHT_WIDTH = exports.
|
|
24819
|
+
exports.MIN_HEIGHT_WIDTH = exports.YS_CROP = exports.XS_CROP = exports.CROP_HANDLE_WIDTH = exports.CROP_HANDLE_SIZE = exports.ROTATE_HANDLE_TOP = exports.ROTATE_WIDTH = exports.Ys = exports.Xs = exports.ROTATION = exports.ROTATE_ICON_MARGIN = exports.DEFAULT_ROTATE_HANDLE_HEIGHT = exports.DEG_PER_RAD = exports.ROTATE_GAP = exports.ROTATE_SIZE = exports.RESIZE_HANDLE_MARGIN = exports.RESIZE_HANDLE_SIZE = void 0;
|
|
24790
24820
|
exports.RESIZE_HANDLE_SIZE = 10;
|
|
24791
24821
|
exports.RESIZE_HANDLE_MARGIN = 6;
|
|
24792
24822
|
exports.ROTATE_SIZE = 32;
|
|
@@ -24800,12 +24830,14 @@ exports.ROTATION = {
|
|
|
24800
24830
|
ne: 180,
|
|
24801
24831
|
se: 270,
|
|
24802
24832
|
};
|
|
24833
|
+
exports.Xs = ['w', '', 'e'];
|
|
24834
|
+
exports.Ys = ['s', '', 'n'];
|
|
24803
24835
|
exports.ROTATE_WIDTH = 1;
|
|
24804
24836
|
exports.ROTATE_HANDLE_TOP = exports.ROTATE_GAP + exports.RESIZE_HANDLE_MARGIN;
|
|
24805
24837
|
exports.CROP_HANDLE_SIZE = 22;
|
|
24806
24838
|
exports.CROP_HANDLE_WIDTH = 7;
|
|
24807
|
-
exports.
|
|
24808
|
-
exports.
|
|
24839
|
+
exports.XS_CROP = ['w', 'e'];
|
|
24840
|
+
exports.YS_CROP = ['s', 'n'];
|
|
24809
24841
|
exports.MIN_HEIGHT_WIDTH = 3 * exports.RESIZE_HANDLE_SIZE + 2 * exports.RESIZE_HANDLE_MARGIN;
|
|
24810
24842
|
|
|
24811
24843
|
|
|
@@ -25234,8 +25266,8 @@ exports.tryToConvertGifToPng = tryToConvertGifToPng;
|
|
|
25234
25266
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
25235
25267
|
exports.getCropHTML = exports.Cropper = void 0;
|
|
25236
25268
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
25237
|
-
var constants_1 = __webpack_require__(/*! ../constants/constants */ "./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/constants.ts");
|
|
25238
25269
|
var Resizer_1 = __webpack_require__(/*! ./Resizer */ "./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/imageEditors/Resizer.ts");
|
|
25270
|
+
var constants_1 = __webpack_require__(/*! ../constants/constants */ "./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/constants/constants.ts");
|
|
25239
25271
|
/**
|
|
25240
25272
|
* @internal
|
|
25241
25273
|
* Crop handle for DragAndDropHelper
|
|
@@ -25307,7 +25339,9 @@ function getCropHTML() {
|
|
|
25307
25339
|
children: [],
|
|
25308
25340
|
};
|
|
25309
25341
|
if (containerHTML) {
|
|
25310
|
-
constants_1.
|
|
25342
|
+
constants_1.XS_CROP.forEach(function (x) {
|
|
25343
|
+
return constants_1.YS_CROP.forEach(function (y) { var _a; return (_a = containerHTML.children) === null || _a === void 0 ? void 0 : _a.push(getCropHTMLInternal(x, y)); });
|
|
25344
|
+
});
|
|
25311
25345
|
}
|
|
25312
25346
|
return [containerHTML, overlayHTML, overlayHTML, overlayHTML, overlayHTML];
|
|
25313
25347
|
}
|
|
@@ -25597,7 +25631,7 @@ exports.Rotator = {
|
|
|
25597
25631
|
* Move rotate handle. When image is very close to the border of editor, rotate handle may not be visible.
|
|
25598
25632
|
* Fix it by reduce the distance from image to rotate handle
|
|
25599
25633
|
*/
|
|
25600
|
-
function updateRotateHandleState(editorRect, rotateCenter, rotateHandle, isSmallImage) {
|
|
25634
|
+
function updateRotateHandleState(editorRect, angleRad, wrapper, rotateCenter, rotateHandle, isSmallImage) {
|
|
25601
25635
|
if (isSmallImage) {
|
|
25602
25636
|
rotateCenter.style.display = 'none';
|
|
25603
25637
|
rotateHandle.style.display = 'none';
|
|
@@ -25607,23 +25641,30 @@ function updateRotateHandleState(editorRect, rotateCenter, rotateHandle, isSmall
|
|
|
25607
25641
|
rotateCenter.style.display = '';
|
|
25608
25642
|
rotateHandle.style.display = '';
|
|
25609
25643
|
var rotateHandleRect = rotateHandle.getBoundingClientRect();
|
|
25610
|
-
|
|
25611
|
-
|
|
25612
|
-
var left = rotateHandleRect.left - editorRect.left;
|
|
25613
|
-
var right = rotateHandleRect.right - editorRect.right;
|
|
25614
|
-
var bottom = rotateHandleRect.bottom - editorRect.bottom;
|
|
25644
|
+
var wrapperRect = wrapper.getBoundingClientRect();
|
|
25645
|
+
if (rotateHandleRect && wrapperRect) {
|
|
25615
25646
|
var adjustedDistance = Number.MAX_SAFE_INTEGER;
|
|
25616
|
-
|
|
25647
|
+
var angle = angleRad * constants_1.DEG_PER_RAD;
|
|
25648
|
+
if (angle < 45 && angle > -45 && wrapperRect.top - editorRect.top < constants_1.ROTATE_GAP) {
|
|
25649
|
+
var top_1 = rotateHandleRect.top - editorRect.top;
|
|
25617
25650
|
adjustedDistance = top_1;
|
|
25618
25651
|
}
|
|
25619
|
-
else if (
|
|
25652
|
+
else if (angle <= -80 &&
|
|
25653
|
+
angle >= -100 &&
|
|
25654
|
+
wrapperRect.left - editorRect.left < constants_1.ROTATE_GAP) {
|
|
25655
|
+
var left = rotateHandleRect.left - editorRect.left;
|
|
25620
25656
|
adjustedDistance = left;
|
|
25621
25657
|
}
|
|
25622
|
-
else if (
|
|
25623
|
-
|
|
25658
|
+
else if (angle >= 80 &&
|
|
25659
|
+
angle <= 100 &&
|
|
25660
|
+
editorRect.right - wrapperRect.right < constants_1.ROTATE_GAP) {
|
|
25661
|
+
var right = rotateHandleRect.right - editorRect.right;
|
|
25662
|
+
adjustedDistance = Math.min(editorRect.right - wrapperRect.right, right);
|
|
25624
25663
|
}
|
|
25625
|
-
else if (
|
|
25626
|
-
|
|
25664
|
+
else if ((angle <= -160 || angle >= 160) &&
|
|
25665
|
+
editorRect.bottom - wrapperRect.bottom < constants_1.ROTATE_GAP) {
|
|
25666
|
+
var bottom = rotateHandleRect.bottom - editorRect.bottom;
|
|
25667
|
+
adjustedDistance = Math.min(editorRect.bottom - wrapperRect.bottom, bottom);
|
|
25627
25668
|
}
|
|
25628
25669
|
var rotateGap = Math.max(Math.min(constants_1.ROTATE_GAP, adjustedDistance), 0);
|
|
25629
25670
|
var rotateTop = Math.max(Math.min(constants_1.ROTATE_SIZE, adjustedDistance - rotateGap), 0);
|
|
@@ -25888,6 +25929,7 @@ var Paste = /** @class */ (function () {
|
|
|
25888
25929
|
}
|
|
25889
25930
|
(0, sanitizeLinks_1.default)(sanitizingOption);
|
|
25890
25931
|
(0, sanitizeHtmlColorsFromPastedContent_1.default)(sanitizingOption);
|
|
25932
|
+
sanitizeBlockStyles(sanitizingOption);
|
|
25891
25933
|
// Replace unknown tags with SPAN
|
|
25892
25934
|
sanitizingOption.unknownTagReplacement = this.unknownTagReplacement;
|
|
25893
25935
|
}
|
|
@@ -25895,6 +25937,11 @@ var Paste = /** @class */ (function () {
|
|
|
25895
25937
|
return Paste;
|
|
25896
25938
|
}());
|
|
25897
25939
|
exports["default"] = Paste;
|
|
25940
|
+
function sanitizeBlockStyles(sanitizingOption) {
|
|
25941
|
+
(0, roosterjs_editor_dom_1.chainSanitizerCallback)(sanitizingOption.cssStyleCallbacks, 'display', function (value) {
|
|
25942
|
+
return value != 'flex'; // return whether we keep the style
|
|
25943
|
+
});
|
|
25944
|
+
}
|
|
25898
25945
|
|
|
25899
25946
|
|
|
25900
25947
|
/***/ }),
|
|
@@ -26972,7 +27019,7 @@ function convertPastedContentFromWord(event) {
|
|
|
26972
27019
|
});
|
|
26973
27020
|
var wordConverter = (0, wordConverter_1.createWordConverter)();
|
|
26974
27021
|
// First find all the nodes that we need to check for list item information
|
|
26975
|
-
// This call will return all the p and
|
|
27022
|
+
// This call will return all the p and heading elements under the root node.. These are the elements that
|
|
26976
27023
|
// Word uses a list items, so we'll only process them and avoid walking the whole tree.
|
|
26977
27024
|
var elements = fragment.querySelectorAll(LIST_ELEMENTS_SELECTOR);
|
|
26978
27025
|
if (elements.length > 0) {
|
|
@@ -28316,12 +28363,12 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
|
|
|
28316
28363
|
* @internal
|
|
28317
28364
|
*/
|
|
28318
28365
|
function handleKeyDownEvent(event, state, editor) {
|
|
28319
|
-
var _a;
|
|
28320
|
-
var _b = event.rawEvent, shiftKey = _b.shiftKey, ctrlKey = _b.ctrlKey, metaKey = _b.metaKey, which = _b.which, defaultPrevented = _b.defaultPrevented;
|
|
28366
|
+
var _a = event.rawEvent, shiftKey = _a.shiftKey, ctrlKey = _a.ctrlKey, metaKey = _a.metaKey, which = _a.which, defaultPrevented = _a.defaultPrevented;
|
|
28321
28367
|
if ((shiftKey && (ctrlKey || metaKey)) || which == 16 /* SHIFT */ || defaultPrevented) {
|
|
28322
28368
|
state.preventKeyUp = defaultPrevented;
|
|
28323
28369
|
return;
|
|
28324
28370
|
}
|
|
28371
|
+
var range = editor.getSelectionRangeEx();
|
|
28325
28372
|
if (shiftKey) {
|
|
28326
28373
|
if (!state.firstTarget) {
|
|
28327
28374
|
var pos = editor.getFocusedPosition();
|
|
@@ -28353,9 +28400,14 @@ function handleKeyDownEvent(event, state, editor) {
|
|
|
28353
28400
|
}
|
|
28354
28401
|
});
|
|
28355
28402
|
}
|
|
28356
|
-
else if ((
|
|
28403
|
+
else if ((range === null || range === void 0 ? void 0 : range.type) == 1 /* TableSelection */ &&
|
|
28357
28404
|
(!(0, roosterjs_editor_dom_1.isCtrlOrMetaPressed)(event.rawEvent) || which == 36 /* HOME */ || which == 35 /* END */)) {
|
|
28358
|
-
|
|
28405
|
+
// Select all content in the first cell
|
|
28406
|
+
var row = range.ranges[0];
|
|
28407
|
+
var firstCell = row.startContainer.childNodes[row.startOffset];
|
|
28408
|
+
var children = firstCell.childNodes;
|
|
28409
|
+
var contentRange = (0, roosterjs_editor_dom_1.createRange)(children[0], children[children.length - 1]);
|
|
28410
|
+
editor.select(contentRange);
|
|
28359
28411
|
}
|
|
28360
28412
|
}
|
|
28361
28413
|
exports.handleKeyDownEvent = handleKeyDownEvent;
|
|
@@ -28484,6 +28536,7 @@ function shouldConvertToTableSelection(state, editor) {
|
|
|
28484
28536
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
28485
28537
|
exports.handleKeyUpEvent = void 0;
|
|
28486
28538
|
var clearState_1 = __webpack_require__(/*! ../utils/clearState */ "./packages/roosterjs-editor-plugins/lib/plugins/TableCellSelection/utils/clearState.ts");
|
|
28539
|
+
var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
|
|
28487
28540
|
var IGNORE_KEY_UP_KEYS = [
|
|
28488
28541
|
16 /* SHIFT */,
|
|
28489
28542
|
18 /* ALT */,
|
|
@@ -28501,6 +28554,9 @@ function handleKeyUpEvent(event, state, editor) {
|
|
|
28501
28554
|
state.firstTarget &&
|
|
28502
28555
|
!state.preventKeyUp &&
|
|
28503
28556
|
IGNORE_KEY_UP_KEYS.indexOf(which) == -1) {
|
|
28557
|
+
if ((0, roosterjs_editor_dom_1.isCharacterValue)(event.rawEvent)) {
|
|
28558
|
+
editor.addUndoSnapshot();
|
|
28559
|
+
}
|
|
28504
28560
|
(0, clearState_1.clearState)(state, editor);
|
|
28505
28561
|
}
|
|
28506
28562
|
state.preventKeyUp = false;
|
|
@@ -28539,8 +28595,9 @@ var RIGHT_CLICK = 3;
|
|
|
28539
28595
|
*/
|
|
28540
28596
|
function handleMouseDownEvent(event, state, editor) {
|
|
28541
28597
|
var _a;
|
|
28542
|
-
var _b = event.rawEvent, which = _b.which, shiftKey = _b.shiftKey, target = _b.target;
|
|
28598
|
+
var _b = event.rawEvent, which = _b.which, shiftKey = _b.shiftKey, target = _b.target, detail = _b.detail;
|
|
28543
28599
|
var table = editor.getElementAtCursor('table', target, event);
|
|
28600
|
+
var tripleClick = detail >= 3;
|
|
28544
28601
|
if (table && !table.isContentEditable) {
|
|
28545
28602
|
return;
|
|
28546
28603
|
}
|
|
@@ -28567,51 +28624,54 @@ function handleMouseDownEvent(event, state, editor) {
|
|
|
28567
28624
|
}
|
|
28568
28625
|
}
|
|
28569
28626
|
}
|
|
28570
|
-
if (which == LEFT_CLICK
|
|
28571
|
-
(
|
|
28572
|
-
|
|
28573
|
-
|
|
28574
|
-
|
|
28575
|
-
|
|
28576
|
-
|
|
28577
|
-
|
|
28578
|
-
|
|
28579
|
-
|
|
28580
|
-
|
|
28581
|
-
|
|
28582
|
-
state.startedSelection = true;
|
|
28583
|
-
}
|
|
28584
|
-
}
|
|
28585
|
-
if (which == LEFT_CLICK && shiftKey) {
|
|
28586
|
-
editor.runAsync(function (editor) {
|
|
28587
|
-
var _a;
|
|
28588
|
-
var sel = (_a = editor.getDocument().defaultView) === null || _a === void 0 ? void 0 : _a.getSelection();
|
|
28589
|
-
var first = (0, getCellAtCursor_1.getCellAtCursor)(editor, sel === null || sel === void 0 ? void 0 : sel.anchorNode);
|
|
28590
|
-
var last = (0, getCellAtCursor_1.getCellAtCursor)(editor, sel === null || sel === void 0 ? void 0 : sel.focusNode);
|
|
28591
|
-
var firstTable = (0, getTableAtCursor_1.getTableAtCursor)(editor, first);
|
|
28592
|
-
var targetTable = (0, getTableAtCursor_1.getTableAtCursor)(editor, first);
|
|
28593
|
-
if (firstTable == targetTable &&
|
|
28594
|
-
(0, roosterjs_editor_dom_1.safeInstanceOf)(first, 'HTMLTableCellElement') &&
|
|
28595
|
-
(0, roosterjs_editor_dom_1.safeInstanceOf)(last, 'HTMLTableCellElement')) {
|
|
28596
|
-
state.vTable = new roosterjs_editor_dom_1.VTable(first);
|
|
28597
|
-
var firstCord = (0, getCellCoordinates_1.getCellCoordinates)(state.vTable, first);
|
|
28598
|
-
var lastCord = (0, getCellCoordinates_1.getCellCoordinates)(state.vTable, last);
|
|
28599
|
-
if (!firstCord || !lastCord) {
|
|
28600
|
-
return;
|
|
28601
|
-
}
|
|
28602
|
-
state.vTable.selection = {
|
|
28603
|
-
firstCell: firstCord,
|
|
28604
|
-
lastCell: lastCord,
|
|
28627
|
+
if (which == LEFT_CLICK) {
|
|
28628
|
+
if (!shiftKey && !tripleClick) {
|
|
28629
|
+
(0, clearState_1.clearState)(state, editor);
|
|
28630
|
+
if ((0, getTableAtCursor_1.getTableAtCursor)(editor, event.rawEvent.target)) {
|
|
28631
|
+
var doc_1 = editor.getDocument() || document;
|
|
28632
|
+
var mouseUpListener_1 = getOnMouseUp(state);
|
|
28633
|
+
var mouseMoveListener_1 = onMouseMove(state, editor);
|
|
28634
|
+
doc_1.addEventListener('mouseup', mouseUpListener_1, true /*setCapture*/);
|
|
28635
|
+
doc_1.addEventListener('mousemove', mouseMoveListener_1, true /*setCapture*/);
|
|
28636
|
+
state.mouseMoveDisposer = function () {
|
|
28637
|
+
doc_1.removeEventListener('mouseup', mouseUpListener_1, true /*setCapture*/);
|
|
28638
|
+
doc_1.removeEventListener('mousemove', mouseMoveListener_1, true /*setCapture*/);
|
|
28605
28639
|
};
|
|
28606
|
-
state.
|
|
28607
|
-
state.lastTarget = last;
|
|
28608
|
-
(0, selectTable_1.selectTable)(editor, state);
|
|
28609
|
-
state.tableSelection = true;
|
|
28610
|
-
state.firstTable = firstTable;
|
|
28611
|
-
state.targetTable = targetTable;
|
|
28612
|
-
(0, updateSelection_1.updateSelection)(editor, first, 0);
|
|
28640
|
+
state.startedSelection = true;
|
|
28613
28641
|
}
|
|
28614
|
-
}
|
|
28642
|
+
}
|
|
28643
|
+
if (shiftKey || tripleClick) {
|
|
28644
|
+
editor.runAsync(function (editor) {
|
|
28645
|
+
var _a;
|
|
28646
|
+
var sel = (_a = editor.getDocument().defaultView) === null || _a === void 0 ? void 0 : _a.getSelection();
|
|
28647
|
+
var first = (0, getCellAtCursor_1.getCellAtCursor)(editor, sel === null || sel === void 0 ? void 0 : sel.anchorNode);
|
|
28648
|
+
// Triple clicking a cell will select that cell only
|
|
28649
|
+
// Assign last the same as first to make sure we can select the cell
|
|
28650
|
+
var last = tripleClick ? first : (0, getCellAtCursor_1.getCellAtCursor)(editor, sel === null || sel === void 0 ? void 0 : sel.focusNode);
|
|
28651
|
+
var firstTable = (0, getTableAtCursor_1.getTableAtCursor)(editor, first);
|
|
28652
|
+
if (firstTable &&
|
|
28653
|
+
(0, roosterjs_editor_dom_1.safeInstanceOf)(first, 'HTMLTableCellElement') &&
|
|
28654
|
+
(0, roosterjs_editor_dom_1.safeInstanceOf)(last, 'HTMLTableCellElement')) {
|
|
28655
|
+
state.vTable = new roosterjs_editor_dom_1.VTable(first);
|
|
28656
|
+
var firstCord = (0, getCellCoordinates_1.getCellCoordinates)(state.vTable, first);
|
|
28657
|
+
var lastCord = (0, getCellCoordinates_1.getCellCoordinates)(state.vTable, last);
|
|
28658
|
+
if (!firstCord || !lastCord) {
|
|
28659
|
+
return;
|
|
28660
|
+
}
|
|
28661
|
+
state.vTable.selection = {
|
|
28662
|
+
firstCell: firstCord,
|
|
28663
|
+
lastCell: lastCord,
|
|
28664
|
+
};
|
|
28665
|
+
state.firstTarget = first;
|
|
28666
|
+
state.lastTarget = last;
|
|
28667
|
+
(0, selectTable_1.selectTable)(editor, state);
|
|
28668
|
+
state.tableSelection = true;
|
|
28669
|
+
state.firstTable = firstTable;
|
|
28670
|
+
state.targetTable = firstTable;
|
|
28671
|
+
(0, updateSelection_1.updateSelection)(editor, first, 0);
|
|
28672
|
+
}
|
|
28673
|
+
});
|
|
28674
|
+
}
|
|
28615
28675
|
}
|
|
28616
28676
|
}
|
|
28617
28677
|
exports.handleMouseDownEvent = handleMouseDownEvent;
|