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