roosterjs 9.8.0 → 9.9.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 +31 -7
- package/dist/rooster-amd.js +123 -35
- 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 +31 -7
- package/dist/rooster.js +123 -35
- package/dist/rooster.js.map +1 -1
- package/package.json +6 -6
package/dist/rooster.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Type definitions for roosterjs (Version 9.
|
|
1
|
+
// Type definitions for roosterjs (Version 9.9.0)
|
|
2
2
|
// Generated by dts tool from roosterjs
|
|
3
3
|
// Project: https://github.com/Microsoft/roosterjs
|
|
4
4
|
|
|
@@ -3467,7 +3467,11 @@ type ExperimentalFeature = /**
|
|
|
3467
3467
|
* When this feature is enabled, we will persist a content model in memory as long as we can,
|
|
3468
3468
|
* and use cached element when write back if it is not changed.
|
|
3469
3469
|
*/
|
|
3470
|
-
'PersistCache'
|
|
3470
|
+
'PersistCache'
|
|
3471
|
+
/**
|
|
3472
|
+
* Workaround for the Legacy Image Edit
|
|
3473
|
+
*/
|
|
3474
|
+
| 'LegacyImageSelection';
|
|
3471
3475
|
|
|
3472
3476
|
/**
|
|
3473
3477
|
* Options for editor
|
|
@@ -3555,9 +3559,9 @@ interface PasteOptions {
|
|
|
3555
3559
|
*/
|
|
3556
3560
|
allowedCustomPasteType?: string[];
|
|
3557
3561
|
/**
|
|
3558
|
-
* Default paste type. By default will use the normal (as-is) paste type.
|
|
3562
|
+
* Default paste type or function that returns the paste type. By default will use the normal (as-is) paste type.
|
|
3559
3563
|
*/
|
|
3560
|
-
defaultPasteType?:
|
|
3564
|
+
defaultPasteType?: PasteTypeOrGetter;
|
|
3561
3565
|
}
|
|
3562
3566
|
|
|
3563
3567
|
/**
|
|
@@ -4107,7 +4111,7 @@ interface CopyPastePluginState {
|
|
|
4107
4111
|
/**
|
|
4108
4112
|
* Default paste type. By default will use the normal (as-is) paste type.
|
|
4109
4113
|
*/
|
|
4110
|
-
defaultPasteType?:
|
|
4114
|
+
defaultPasteType?: PasteTypeOrGetter;
|
|
4111
4115
|
}
|
|
4112
4116
|
|
|
4113
4117
|
/**
|
|
@@ -4665,6 +4669,12 @@ interface ContentModelFormatState {
|
|
|
4665
4669
|
isDarkMode?: boolean;
|
|
4666
4670
|
}
|
|
4667
4671
|
|
|
4672
|
+
/**
|
|
4673
|
+
* Represents the PasteType parameter used to set the paste type to use.
|
|
4674
|
+
* It can be either the Paste Type value or a callback that retuns the Paste Type to use.
|
|
4675
|
+
*/
|
|
4676
|
+
type PasteTypeOrGetter = PasteType | ((document: Document | null, clipboardData: ClipboardData) => PasteType);
|
|
4677
|
+
|
|
4668
4678
|
/**
|
|
4669
4679
|
* Image Format
|
|
4670
4680
|
*/
|
|
@@ -5047,6 +5057,11 @@ interface AnnounceData {
|
|
|
5047
5057
|
* @optional if provided, will attempt to replace {n} with each of the values inside of the array.
|
|
5048
5058
|
*/
|
|
5049
5059
|
formatStrings?: string[];
|
|
5060
|
+
/**
|
|
5061
|
+
* @optional if provided, will set the ariaLive property of the announce container element to the provided value.
|
|
5062
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-live#values
|
|
5063
|
+
*/
|
|
5064
|
+
ariaLiveMode?: 'assertive' | 'polite' | 'off';
|
|
5050
5065
|
}
|
|
5051
5066
|
|
|
5052
5067
|
/**
|
|
@@ -6196,6 +6211,15 @@ function isElementOfType<Tag extends keyof HTMLElementTagNameMap>(element: HTMLE
|
|
|
6196
6211
|
*/
|
|
6197
6212
|
function getObjectKeys<T extends string | number | symbol>(obj: Record<T, any> | Partial<Record<T, any>>): T[];
|
|
6198
6213
|
|
|
6214
|
+
/**
|
|
6215
|
+
* Returns a safe Id to use in Native APIs.
|
|
6216
|
+
* IDs that start with number or hyphen can throw errors if used.
|
|
6217
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
|
|
6218
|
+
* @param id
|
|
6219
|
+
* @returns
|
|
6220
|
+
*/
|
|
6221
|
+
function getSafeIdSelector(id: string): string;
|
|
6222
|
+
|
|
6199
6223
|
/**
|
|
6200
6224
|
* Convert a named node map to an array
|
|
6201
6225
|
* @param collection The map to convert
|
|
@@ -7739,9 +7763,9 @@ function redo(editor: IEditor): void;
|
|
|
7739
7763
|
* Paste into editor using a clipboardData object
|
|
7740
7764
|
* @param editor The Editor object.
|
|
7741
7765
|
* @param clipboardData Clipboard data retrieved from clipboard
|
|
7742
|
-
* @param
|
|
7766
|
+
* @param pasteTypeOrGetter Type of content to paste or function that returns the Paste Type to use based on the document and the clipboard Data. @default normal
|
|
7743
7767
|
*/
|
|
7744
|
-
function paste(editor: IEditor, clipboardData: ClipboardData,
|
|
7768
|
+
function paste(editor: IEditor, clipboardData: ClipboardData, pasteTypeOrGetter?: PasteTypeOrGetter): void;
|
|
7745
7769
|
|
|
7746
7770
|
/**
|
|
7747
7771
|
* Insert table into editor at current selection
|
package/dist/rooster.js
CHANGED
|
@@ -7860,11 +7860,11 @@ var retrieveHtmlInfo_1 = __webpack_require__(/*! ./retrieveHtmlInfo */ "./packag
|
|
|
7860
7860
|
* Paste into editor using a clipboardData object
|
|
7861
7861
|
* @param editor The Editor object.
|
|
7862
7862
|
* @param clipboardData Clipboard data retrieved from clipboard
|
|
7863
|
-
* @param
|
|
7863
|
+
* @param pasteTypeOrGetter Type of content to paste or function that returns the Paste Type to use based on the document and the clipboard Data. @default normal
|
|
7864
7864
|
*/
|
|
7865
|
-
function paste(editor, clipboardData,
|
|
7865
|
+
function paste(editor, clipboardData, pasteTypeOrGetter) {
|
|
7866
7866
|
var _a;
|
|
7867
|
-
if (
|
|
7867
|
+
if (pasteTypeOrGetter === void 0) { pasteTypeOrGetter = 'normal'; }
|
|
7868
7868
|
editor.focus();
|
|
7869
7869
|
var trustedHTMLHandler = editor.getTrustedHTMLHandler();
|
|
7870
7870
|
if (!clipboardData.modelBeforePaste) {
|
|
@@ -7875,6 +7875,9 @@ function paste(editor, clipboardData, pasteType) {
|
|
|
7875
7875
|
}
|
|
7876
7876
|
// 1. Prepare variables
|
|
7877
7877
|
var doc = createDOMFromHtml(clipboardData.rawHtml, trustedHTMLHandler);
|
|
7878
|
+
var pasteType = typeof pasteTypeOrGetter == 'function'
|
|
7879
|
+
? pasteTypeOrGetter(doc, clipboardData)
|
|
7880
|
+
: pasteTypeOrGetter;
|
|
7878
7881
|
// 2. Handle HTML from clipboard
|
|
7879
7882
|
var htmlFromClipboard = (0, retrieveHtmlInfo_1.retrieveHtmlInfo)(doc, clipboardData);
|
|
7880
7883
|
// 3. Create target fragment
|
|
@@ -8327,7 +8330,7 @@ var DOT_STRING = '.';
|
|
|
8327
8330
|
* @param announceData Data to announce
|
|
8328
8331
|
*/
|
|
8329
8332
|
var announce = function (core, announceData) {
|
|
8330
|
-
var text = announceData.text, defaultStrings = announceData.defaultStrings, _a = announceData.formatStrings, formatStrings = _a === void 0 ? [] : _a;
|
|
8333
|
+
var text = announceData.text, defaultStrings = announceData.defaultStrings, _a = announceData.formatStrings, formatStrings = _a === void 0 ? [] : _a, _b = announceData.ariaLiveMode, ariaLiveMode = _b === void 0 ? 'assertive' : _b;
|
|
8331
8334
|
var announcerStringGetter = core.lifecycle.announcerStringGetter;
|
|
8332
8335
|
var template = defaultStrings && (announcerStringGetter === null || announcerStringGetter === void 0 ? void 0 : announcerStringGetter(defaultStrings));
|
|
8333
8336
|
var textToAnnounce = formatString(template || text, formatStrings);
|
|
@@ -8336,6 +8339,9 @@ var announce = function (core, announceData) {
|
|
|
8336
8339
|
}
|
|
8337
8340
|
if (textToAnnounce && core.lifecycle.announceContainer) {
|
|
8338
8341
|
var announceContainer = core.lifecycle.announceContainer;
|
|
8342
|
+
if (announceContainer.ariaLive != ariaLiveMode) {
|
|
8343
|
+
announceContainer.ariaLive = ariaLiveMode;
|
|
8344
|
+
}
|
|
8339
8345
|
if (textToAnnounce == announceContainer.textContent) {
|
|
8340
8346
|
textToAnnounce += DOT_STRING;
|
|
8341
8347
|
}
|
|
@@ -9090,6 +9096,7 @@ exports.restoreSnapshotLogicalRoot = restoreSnapshotLogicalRoot;
|
|
|
9090
9096
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
9091
9097
|
exports.restoreSnapshotSelection = void 0;
|
|
9092
9098
|
var getPositionFromPath_1 = __webpack_require__(/*! ./getPositionFromPath */ "./packages/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/getPositionFromPath.ts");
|
|
9099
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
9093
9100
|
/**
|
|
9094
9101
|
* @internal
|
|
9095
9102
|
*/
|
|
@@ -9114,7 +9121,7 @@ function restoreSnapshotSelection(core, snapshot) {
|
|
|
9114
9121
|
};
|
|
9115
9122
|
break;
|
|
9116
9123
|
case 'table':
|
|
9117
|
-
var table = physicalRoot.querySelector(
|
|
9124
|
+
var table = physicalRoot.querySelector((0, roosterjs_content_model_dom_1.getSafeIdSelector)(snapshotSelection.tableId));
|
|
9118
9125
|
if (table) {
|
|
9119
9126
|
domSelection = {
|
|
9120
9127
|
type: 'table',
|
|
@@ -9127,7 +9134,7 @@ function restoreSnapshotSelection(core, snapshot) {
|
|
|
9127
9134
|
}
|
|
9128
9135
|
break;
|
|
9129
9136
|
case 'image':
|
|
9130
|
-
var image = physicalRoot.querySelector(
|
|
9137
|
+
var image = physicalRoot.querySelector((0, roosterjs_content_model_dom_1.getSafeIdSelector)(snapshotSelection.imageId));
|
|
9131
9138
|
if (image) {
|
|
9132
9139
|
domSelection = {
|
|
9133
9140
|
type: 'image',
|
|
@@ -9418,7 +9425,7 @@ var setDOMSelection = function (core, selection, skipSelectionChangedEvent) {
|
|
|
9418
9425
|
var imageSelectionColor = isDarkMode
|
|
9419
9426
|
? core.selection.imageSelectionBorderColorDark
|
|
9420
9427
|
: core.selection.imageSelectionBorderColor;
|
|
9421
|
-
core.api.setEditorStyle(core, DOM_SELECTION_CSS_KEY, "outline-style:solid!important; outline-color:" + (imageSelectionColor || DEFAULT_SELECTION_BORDER_COLOR) + "!important;", [
|
|
9428
|
+
core.api.setEditorStyle(core, DOM_SELECTION_CSS_KEY, "outline-style:solid!important; outline-color:" + (imageSelectionColor || DEFAULT_SELECTION_BORDER_COLOR) + "!important;", [(0, roosterjs_content_model_dom_1.getSafeIdSelector)((0, ensureUniqueId_1.ensureUniqueId)(image, IMAGE_ID))]);
|
|
9422
9429
|
core.api.setEditorStyle(core, HIDE_SELECTION_CSS_KEY, TRANSPARENT_SELECTION_CSS_RULE, [SELECTION_SELECTOR]);
|
|
9423
9430
|
setRangeSelection(doc, image, false /* collapse */);
|
|
9424
9431
|
break;
|
|
@@ -9451,12 +9458,13 @@ var setDOMSelection = function (core, selection, skipSelectionChangedEvent) {
|
|
|
9451
9458
|
lastColumn: lastCell.col,
|
|
9452
9459
|
};
|
|
9453
9460
|
var tableId = (0, ensureUniqueId_1.ensureUniqueId)(table, TABLE_ID);
|
|
9461
|
+
var tableSelector = (0, roosterjs_content_model_dom_1.getSafeIdSelector)(tableId);
|
|
9454
9462
|
var tableSelectors = firstCell.row == 0 &&
|
|
9455
9463
|
firstCell.col == 0 &&
|
|
9456
9464
|
lastCell.row == parsedTable.length - 1 &&
|
|
9457
9465
|
lastCell.col == ((_b = (_a = parsedTable[lastCell.row]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) - 1
|
|
9458
|
-
? [
|
|
9459
|
-
: handleTableSelected(parsedTable,
|
|
9466
|
+
? [tableSelector, tableSelector + " *"]
|
|
9467
|
+
: handleTableSelected(parsedTable, tableSelector, table, firstCell, lastCell);
|
|
9460
9468
|
core.selection.selection = selection;
|
|
9461
9469
|
var tableSelectionColor = isDarkMode
|
|
9462
9470
|
? core.selection.tableCellSelectionBackgroundColorDark
|
|
@@ -9489,7 +9497,7 @@ var setDOMSelection = function (core, selection, skipSelectionChangedEvent) {
|
|
|
9489
9497
|
}
|
|
9490
9498
|
};
|
|
9491
9499
|
exports.setDOMSelection = setDOMSelection;
|
|
9492
|
-
function handleTableSelected(parsedTable,
|
|
9500
|
+
function handleTableSelected(parsedTable, tableSelector, table, firstCell, lastCell) {
|
|
9493
9501
|
var selectors = [];
|
|
9494
9502
|
// Get whether table has thead, tbody or tfoot, then Set the start and end of each of the table children,
|
|
9495
9503
|
// so we can build the selector according the element between the table and the row.
|
|
@@ -9523,7 +9531,7 @@ function handleTableSelected(parsedTable, tableId, table, firstCell, lastCell) {
|
|
|
9523
9531
|
rowIndex <= lastCell.row &&
|
|
9524
9532
|
cellIndex >= firstCell.col &&
|
|
9525
9533
|
cellIndex <= lastCell.col) {
|
|
9526
|
-
var selector = "
|
|
9534
|
+
var selector = "" + tableSelector + middleElSelector + " tr:nth-child(" + currentRow + ")>" + cell.tagName + ":nth-child(" + tdCount + ")";
|
|
9527
9535
|
selectors.push(selector, selector + ' *');
|
|
9528
9536
|
}
|
|
9529
9537
|
}
|
|
@@ -9560,12 +9568,13 @@ function setRangeSelection(doc, element, collapse) {
|
|
|
9560
9568
|
/*!********************************************************************************************!*\
|
|
9561
9569
|
!*** ./packages/roosterjs-content-model-core/lib/coreApi/setEditorStyle/ensureUniqueId.ts ***!
|
|
9562
9570
|
\********************************************************************************************/
|
|
9563
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
9571
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
9564
9572
|
|
|
9565
9573
|
"use strict";
|
|
9566
9574
|
|
|
9567
9575
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
9568
9576
|
exports.ensureUniqueId = void 0;
|
|
9577
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
9569
9578
|
/**
|
|
9570
9579
|
* @internal
|
|
9571
9580
|
*/
|
|
@@ -9573,7 +9582,7 @@ function ensureUniqueId(element, idPrefix) {
|
|
|
9573
9582
|
idPrefix = element.id || idPrefix;
|
|
9574
9583
|
var doc = element.ownerDocument;
|
|
9575
9584
|
var i = 0;
|
|
9576
|
-
while (!element.id || doc.querySelectorAll(
|
|
9585
|
+
while (!element.id || doc.querySelectorAll((0, roosterjs_content_model_dom_1.getSafeIdSelector)(element.id)).length > 1) {
|
|
9577
9586
|
element.id = idPrefix + '_' + i++;
|
|
9578
9587
|
}
|
|
9579
9588
|
return element.id;
|
|
@@ -9594,6 +9603,7 @@ exports.ensureUniqueId = ensureUniqueId;
|
|
|
9594
9603
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
9595
9604
|
exports.setEditorStyle = void 0;
|
|
9596
9605
|
var ensureUniqueId_1 = __webpack_require__(/*! ./ensureUniqueId */ "./packages/roosterjs-content-model-core/lib/coreApi/setEditorStyle/ensureUniqueId.ts");
|
|
9606
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
9597
9607
|
var MAX_RULE_SELECTOR_LENGTH = 9000;
|
|
9598
9608
|
var CONTENT_DIV_ID = 'contentDiv';
|
|
9599
9609
|
/**
|
|
@@ -9615,7 +9625,7 @@ var setEditorStyle = function (core, key, cssRule, subSelectors, maxRuleLength)
|
|
|
9615
9625
|
sheet.deleteRule(i);
|
|
9616
9626
|
}
|
|
9617
9627
|
if (cssRule) {
|
|
9618
|
-
var rootSelector =
|
|
9628
|
+
var rootSelector = (0, roosterjs_content_model_dom_1.getSafeIdSelector)((0, ensureUniqueId_1.ensureUniqueId)(core.physicalRoot, CONTENT_DIV_ID));
|
|
9619
9629
|
var selectors = !subSelectors
|
|
9620
9630
|
? [rootSelector]
|
|
9621
9631
|
: typeof subSelectors === 'string'
|
|
@@ -12421,6 +12431,7 @@ var isSingleImageInSelection_1 = __webpack_require__(/*! ./isSingleImageInSelect
|
|
|
12421
12431
|
var normalizePos_1 = __webpack_require__(/*! ./normalizePos */ "./packages/roosterjs-content-model-core/lib/corePlugin/selection/normalizePos.ts");
|
|
12422
12432
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
12423
12433
|
var MouseLeftButton = 0;
|
|
12434
|
+
var MouseMiddleButton = 1;
|
|
12424
12435
|
var MouseRightButton = 2;
|
|
12425
12436
|
var Up = 'ArrowUp';
|
|
12426
12437
|
var Down = 'ArrowDown';
|
|
@@ -12627,7 +12638,7 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
12627
12638
|
this.onMouseDown(this.editor, event.rawEvent);
|
|
12628
12639
|
break;
|
|
12629
12640
|
case 'mouseUp':
|
|
12630
|
-
this.onMouseUp();
|
|
12641
|
+
this.onMouseUp(this.editor, event);
|
|
12631
12642
|
break;
|
|
12632
12643
|
case 'keyDown':
|
|
12633
12644
|
this.onKeyDown(this.editor, event.rawEvent);
|
|
@@ -12643,25 +12654,40 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
12643
12654
|
}
|
|
12644
12655
|
};
|
|
12645
12656
|
SelectionPlugin.prototype.onMouseDown = function (editor, rawEvent) {
|
|
12646
|
-
var _a;
|
|
12657
|
+
var _a, _b;
|
|
12647
12658
|
var selection = editor.getDOMSelection();
|
|
12648
12659
|
var image;
|
|
12649
12660
|
// Image selection
|
|
12650
|
-
if ((
|
|
12651
|
-
(rawEvent.button
|
|
12652
|
-
(
|
|
12653
|
-
|
|
12654
|
-
|
|
12655
|
-
|
|
12661
|
+
if (editor.isExperimentalFeatureEnabled('LegacyImageSelection')) {
|
|
12662
|
+
if (rawEvent.button === MouseRightButton &&
|
|
12663
|
+
(image =
|
|
12664
|
+
(_a = this.getClickingImage(rawEvent)) !== null && _a !== void 0 ? _a : this.getContainedTargetImage(rawEvent, selection)) &&
|
|
12665
|
+
image.isContentEditable) {
|
|
12666
|
+
this.selectImageWithRange(image, rawEvent);
|
|
12667
|
+
return;
|
|
12668
|
+
}
|
|
12669
|
+
else if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'image' && selection.image !== rawEvent.target) {
|
|
12670
|
+
this.selectBeforeOrAfterElement(editor, selection.image);
|
|
12671
|
+
return;
|
|
12672
|
+
}
|
|
12656
12673
|
}
|
|
12657
|
-
|
|
12658
|
-
|
|
12659
|
-
|
|
12660
|
-
|
|
12661
|
-
|
|
12662
|
-
|
|
12663
|
-
|
|
12664
|
-
|
|
12674
|
+
else {
|
|
12675
|
+
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'image' &&
|
|
12676
|
+
(rawEvent.button == MouseLeftButton ||
|
|
12677
|
+
(rawEvent.button == MouseRightButton &&
|
|
12678
|
+
!this.getClickingImage(rawEvent) &&
|
|
12679
|
+
!this.getContainedTargetImage(rawEvent, selection)))) {
|
|
12680
|
+
this.setDOMSelection(null /*domSelection*/, null /*tableSelection*/);
|
|
12681
|
+
}
|
|
12682
|
+
if ((image =
|
|
12683
|
+
(_b = this.getClickingImage(rawEvent)) !== null && _b !== void 0 ? _b : this.getContainedTargetImage(rawEvent, selection)) &&
|
|
12684
|
+
image.isContentEditable) {
|
|
12685
|
+
this.setDOMSelection({
|
|
12686
|
+
type: 'image',
|
|
12687
|
+
image: image,
|
|
12688
|
+
}, null);
|
|
12689
|
+
return;
|
|
12690
|
+
}
|
|
12665
12691
|
}
|
|
12666
12692
|
// Table selection
|
|
12667
12693
|
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'table' && rawEvent.button == MouseLeftButton) {
|
|
@@ -12689,7 +12715,33 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
12689
12715
|
});
|
|
12690
12716
|
}
|
|
12691
12717
|
};
|
|
12692
|
-
SelectionPlugin.prototype.
|
|
12718
|
+
SelectionPlugin.prototype.selectImageWithRange = function (image, event) {
|
|
12719
|
+
var _a;
|
|
12720
|
+
var range = image.ownerDocument.createRange();
|
|
12721
|
+
range.selectNode(image);
|
|
12722
|
+
var domSelection = (_a = this.editor) === null || _a === void 0 ? void 0 : _a.getDOMSelection();
|
|
12723
|
+
if ((domSelection === null || domSelection === void 0 ? void 0 : domSelection.type) == 'image' && image == domSelection.image) {
|
|
12724
|
+
event.preventDefault();
|
|
12725
|
+
}
|
|
12726
|
+
else {
|
|
12727
|
+
this.setDOMSelection({
|
|
12728
|
+
type: 'range',
|
|
12729
|
+
isReverted: false,
|
|
12730
|
+
range: range,
|
|
12731
|
+
}, null);
|
|
12732
|
+
}
|
|
12733
|
+
};
|
|
12734
|
+
SelectionPlugin.prototype.onMouseUp = function (editor, event) {
|
|
12735
|
+
var image;
|
|
12736
|
+
if (editor.isExperimentalFeatureEnabled('LegacyImageSelection') &&
|
|
12737
|
+
(image = this.getClickingImage(event.rawEvent)) &&
|
|
12738
|
+
image.isContentEditable &&
|
|
12739
|
+
event.rawEvent.button != MouseMiddleButton &&
|
|
12740
|
+
(event.rawEvent.button ==
|
|
12741
|
+
MouseRightButton /* it's not possible to drag using right click */ ||
|
|
12742
|
+
event.isClicking)) {
|
|
12743
|
+
this.selectImageWithRange(image, event.rawEvent);
|
|
12744
|
+
}
|
|
12693
12745
|
this.detachMouseEvent();
|
|
12694
12746
|
};
|
|
12695
12747
|
SelectionPlugin.prototype.onKeyDown = function (editor, rawEvent) {
|
|
@@ -17343,6 +17395,40 @@ function getObjectKeys(obj) {
|
|
|
17343
17395
|
exports.getObjectKeys = getObjectKeys;
|
|
17344
17396
|
|
|
17345
17397
|
|
|
17398
|
+
/***/ }),
|
|
17399
|
+
|
|
17400
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/getSafeIdSelector.ts":
|
|
17401
|
+
/*!********************************************************************************!*\
|
|
17402
|
+
!*** ./packages/roosterjs-content-model-dom/lib/domUtils/getSafeIdSelector.ts ***!
|
|
17403
|
+
\********************************************************************************/
|
|
17404
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
17405
|
+
|
|
17406
|
+
"use strict";
|
|
17407
|
+
|
|
17408
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
17409
|
+
exports.getSafeIdSelector = void 0;
|
|
17410
|
+
var StartsWithUnsupportedCharacter = /^[.|\-|_|\d]/;
|
|
17411
|
+
/**
|
|
17412
|
+
* Returns a safe Id to use in Native APIs.
|
|
17413
|
+
* IDs that start with number or hyphen can throw errors if used.
|
|
17414
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
|
|
17415
|
+
* @param id
|
|
17416
|
+
* @returns
|
|
17417
|
+
*/
|
|
17418
|
+
function getSafeIdSelector(id) {
|
|
17419
|
+
if (!id) {
|
|
17420
|
+
return id;
|
|
17421
|
+
}
|
|
17422
|
+
if (id.match(StartsWithUnsupportedCharacter)) {
|
|
17423
|
+
return "[id=\"" + id + "\"]";
|
|
17424
|
+
}
|
|
17425
|
+
else {
|
|
17426
|
+
return "#" + id;
|
|
17427
|
+
}
|
|
17428
|
+
}
|
|
17429
|
+
exports.getSafeIdSelector = getSafeIdSelector;
|
|
17430
|
+
|
|
17431
|
+
|
|
17346
17432
|
/***/ }),
|
|
17347
17433
|
|
|
17348
17434
|
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/isElementOfType.ts":
|
|
@@ -20058,9 +20144,9 @@ exports.shouldSetValue = shouldSetValue;
|
|
|
20058
20144
|
"use strict";
|
|
20059
20145
|
|
|
20060
20146
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20061
|
-
exports.
|
|
20062
|
-
exports.
|
|
20063
|
-
exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = exports.getTableMetadata = exports.updateTableMetadata = exports.getTableCellMetadata = exports.updateTableCellMetadata = exports.getImageMetadata = exports.updateImageMetadata = exports.runEditSteps = exports.getClosestAncestorBlockGroupIndex = exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = exports.MIN_ALLOWED_TABLE_CELL_WIDTH = exports.normalizeTable = exports.setFirstColumnFormatBorders = exports.applyTableFormat = exports.deleteBlock = exports.deleteSegment = exports.deleteSelection = exports.mergeModel = exports.cloneModel = exports.setSelection = exports.hasSelectionInBlockGroup = exports.hasSelectionInSegment = exports.hasSelectionInBlock = exports.getSelectedCells = exports.getSelectedSegmentsAndParagraphs = exports.getSelectedSegments = exports.getSelectedParagraphs = exports.getOperationalBlocks = exports.getFirstSelectedTable = exports.getFirstSelectedListItem = exports.iterateSelections = exports.isBlockGroupOfType = void 0;
|
|
20147
|
+
exports.createGeneralBlock = exports.createGeneralSegment = exports.createParagraphDecorator = exports.createContentModelDocument = exports.createImage = exports.createText = exports.createTableCell = exports.createTable = exports.createSelectionMarker = exports.createParagraph = exports.createFormatContainer = exports.createListItem = exports.createBr = exports.normalizeRect = exports.isWhiteSpacePreserved = exports.reuseCachedElement = exports.findClosestBlockEntityContainer = exports.isBlockEntityContainer = exports.isEntityDelimiter = exports.addDelimiters = exports.generateEntityClassNames = exports.parseEntityFormat = exports.getAllEntityWrappers = exports.findClosestEntityWrapper = exports.isEntityElement = exports.unwrap = exports.wrap = exports.wrapAllChildNodes = exports.moveChildNodes = exports.toArray = exports.getSafeIdSelector = exports.getObjectKeys = exports.isElementOfType = exports.isNodeOfType = exports.hasMetadata = exports.getMetadata = exports.updateMetadata = exports.buildSelectionMarker = exports.isBlockElement = exports.areSameFormats = exports.parseFormat = exports.getRegularSelectionOffsets = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
|
|
20148
|
+
exports.extractClipboardItems = exports.transformColor = exports.readFile = exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = exports.getDOMInsertPointRect = exports.getSelectionRootNode = exports.isBold = exports.createModelToDomConfig = exports.createModelToDomContextWithConfig = exports.createModelToDomContext = exports.createDomToModelConfig = exports.createDomToModelContextWithConfig = exports.createDomToModelContext = exports.defaultGenerateColorKey = exports.parseColor = exports.setColor = exports.getColor = exports.DeprecatedColors = exports.BorderKeys = exports.parseValueWithUnit = exports.getAutoListStyleType = exports.getOrderedListNumberStr = exports.setParagraphNotImplicit = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = exports.unwrapBlock = exports.isGeneralSegment = exports.normalizeContentModel = exports.normalizeParagraph = exports.addTextSegment = exports.addLink = exports.addCode = exports.addBlock = exports.mutateSegment = exports.mutateSegments = exports.mutateBlock = exports.createTableRow = exports.createEmptyModel = exports.createListLevel = exports.createDivider = exports.createEntity = void 0;
|
|
20149
|
+
exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = exports.getTableMetadata = exports.updateTableMetadata = exports.getTableCellMetadata = exports.updateTableCellMetadata = exports.getImageMetadata = exports.updateImageMetadata = exports.runEditSteps = exports.getClosestAncestorBlockGroupIndex = exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = exports.MIN_ALLOWED_TABLE_CELL_WIDTH = exports.normalizeTable = exports.setFirstColumnFormatBorders = exports.applyTableFormat = exports.deleteBlock = exports.deleteSegment = exports.deleteSelection = exports.mergeModel = exports.cloneModel = exports.setSelection = exports.hasSelectionInBlockGroup = exports.hasSelectionInSegment = exports.hasSelectionInBlock = exports.getSelectedCells = exports.getSelectedSegmentsAndParagraphs = exports.getSelectedSegments = exports.getSelectedParagraphs = exports.getOperationalBlocks = exports.getFirstSelectedTable = exports.getFirstSelectedListItem = exports.iterateSelections = exports.isBlockGroupOfType = exports.cacheGetEventData = void 0;
|
|
20064
20150
|
var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
|
|
20065
20151
|
Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
|
|
20066
20152
|
var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
|
|
@@ -20095,6 +20181,8 @@ var isElementOfType_1 = __webpack_require__(/*! ./domUtils/isElementOfType */ ".
|
|
|
20095
20181
|
Object.defineProperty(exports, "isElementOfType", ({ enumerable: true, get: function () { return isElementOfType_1.isElementOfType; } }));
|
|
20096
20182
|
var getObjectKeys_1 = __webpack_require__(/*! ./domUtils/getObjectKeys */ "./packages/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts");
|
|
20097
20183
|
Object.defineProperty(exports, "getObjectKeys", ({ enumerable: true, get: function () { return getObjectKeys_1.getObjectKeys; } }));
|
|
20184
|
+
var getSafeIdSelector_1 = __webpack_require__(/*! ./domUtils/getSafeIdSelector */ "./packages/roosterjs-content-model-dom/lib/domUtils/getSafeIdSelector.ts");
|
|
20185
|
+
Object.defineProperty(exports, "getSafeIdSelector", ({ enumerable: true, get: function () { return getSafeIdSelector_1.getSafeIdSelector; } }));
|
|
20098
20186
|
var toArray_1 = __webpack_require__(/*! ./domUtils/toArray */ "./packages/roosterjs-content-model-dom/lib/domUtils/toArray.ts");
|
|
20099
20187
|
Object.defineProperty(exports, "toArray", ({ enumerable: true, get: function () { return toArray_1.toArray; } }));
|
|
20100
20188
|
var moveChildNodes_1 = __webpack_require__(/*! ./domUtils/moveChildNodes */ "./packages/roosterjs-content-model-dom/lib/domUtils/moveChildNodes.ts");
|
|
@@ -29226,7 +29314,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
29226
29314
|
this.croppers = croppers;
|
|
29227
29315
|
this.zoomScale = editor.getDOMHelper().calculateZoomScale();
|
|
29228
29316
|
editor.setEditorStyle('imageEdit', "outline-style:none!important;", [
|
|
29229
|
-
"span:has(>img
|
|
29317
|
+
"span:has(>img" + (0, roosterjs_content_model_dom_1.getSafeIdSelector)(this.selectedImage.id) + ")",
|
|
29230
29318
|
]);
|
|
29231
29319
|
};
|
|
29232
29320
|
ImageEditPlugin.prototype.startRotateAndResize = function (editor, image) {
|