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-amd.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
|
|
|
@@ -3466,7 +3466,11 @@ export type ExperimentalFeature = /**
|
|
|
3466
3466
|
* When this feature is enabled, we will persist a content model in memory as long as we can,
|
|
3467
3467
|
* and use cached element when write back if it is not changed.
|
|
3468
3468
|
*/
|
|
3469
|
-
'PersistCache'
|
|
3469
|
+
'PersistCache'
|
|
3470
|
+
/**
|
|
3471
|
+
* Workaround for the Legacy Image Edit
|
|
3472
|
+
*/
|
|
3473
|
+
| 'LegacyImageSelection';
|
|
3470
3474
|
|
|
3471
3475
|
/**
|
|
3472
3476
|
* Options for editor
|
|
@@ -3554,9 +3558,9 @@ export interface PasteOptions {
|
|
|
3554
3558
|
*/
|
|
3555
3559
|
allowedCustomPasteType?: string[];
|
|
3556
3560
|
/**
|
|
3557
|
-
* Default paste type. By default will use the normal (as-is) paste type.
|
|
3561
|
+
* Default paste type or function that returns the paste type. By default will use the normal (as-is) paste type.
|
|
3558
3562
|
*/
|
|
3559
|
-
defaultPasteType?:
|
|
3563
|
+
defaultPasteType?: PasteTypeOrGetter;
|
|
3560
3564
|
}
|
|
3561
3565
|
|
|
3562
3566
|
/**
|
|
@@ -4106,7 +4110,7 @@ export interface CopyPastePluginState {
|
|
|
4106
4110
|
/**
|
|
4107
4111
|
* Default paste type. By default will use the normal (as-is) paste type.
|
|
4108
4112
|
*/
|
|
4109
|
-
defaultPasteType?:
|
|
4113
|
+
defaultPasteType?: PasteTypeOrGetter;
|
|
4110
4114
|
}
|
|
4111
4115
|
|
|
4112
4116
|
/**
|
|
@@ -4664,6 +4668,12 @@ export interface ContentModelFormatState {
|
|
|
4664
4668
|
isDarkMode?: boolean;
|
|
4665
4669
|
}
|
|
4666
4670
|
|
|
4671
|
+
/**
|
|
4672
|
+
* Represents the PasteType parameter used to set the paste type to use.
|
|
4673
|
+
* It can be either the Paste Type value or a callback that retuns the Paste Type to use.
|
|
4674
|
+
*/
|
|
4675
|
+
export type PasteTypeOrGetter = PasteType | ((document: Document | null, clipboardData: ClipboardData) => PasteType);
|
|
4676
|
+
|
|
4667
4677
|
/**
|
|
4668
4678
|
* Image Format
|
|
4669
4679
|
*/
|
|
@@ -5046,6 +5056,11 @@ export interface AnnounceData {
|
|
|
5046
5056
|
* @optional if provided, will attempt to replace {n} with each of the values inside of the array.
|
|
5047
5057
|
*/
|
|
5048
5058
|
formatStrings?: string[];
|
|
5059
|
+
/**
|
|
5060
|
+
* @optional if provided, will set the ariaLive property of the announce container element to the provided value.
|
|
5061
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-live#values
|
|
5062
|
+
*/
|
|
5063
|
+
ariaLiveMode?: 'assertive' | 'polite' | 'off';
|
|
5049
5064
|
}
|
|
5050
5065
|
|
|
5051
5066
|
/**
|
|
@@ -6195,6 +6210,15 @@ export function isElementOfType<Tag extends keyof HTMLElementTagNameMap>(element
|
|
|
6195
6210
|
*/
|
|
6196
6211
|
export function getObjectKeys<T extends string | number | symbol>(obj: Record<T, any> | Partial<Record<T, any>>): T[];
|
|
6197
6212
|
|
|
6213
|
+
/**
|
|
6214
|
+
* Returns a safe Id to use in Native APIs.
|
|
6215
|
+
* IDs that start with number or hyphen can throw errors if used.
|
|
6216
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
|
|
6217
|
+
* @param id
|
|
6218
|
+
* @returns
|
|
6219
|
+
*/
|
|
6220
|
+
export function getSafeIdSelector(id: string): string;
|
|
6221
|
+
|
|
6198
6222
|
/**
|
|
6199
6223
|
* Convert a named node map to an array
|
|
6200
6224
|
* @param collection The map to convert
|
|
@@ -7738,9 +7762,9 @@ export function redo(editor: IEditor): void;
|
|
|
7738
7762
|
* Paste into editor using a clipboardData object
|
|
7739
7763
|
* @param editor The Editor object.
|
|
7740
7764
|
* @param clipboardData Clipboard data retrieved from clipboard
|
|
7741
|
-
* @param
|
|
7765
|
+
* @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
|
|
7742
7766
|
*/
|
|
7743
|
-
export function paste(editor: IEditor, clipboardData: ClipboardData,
|
|
7767
|
+
export function paste(editor: IEditor, clipboardData: ClipboardData, pasteTypeOrGetter?: PasteTypeOrGetter): void;
|
|
7744
7768
|
|
|
7745
7769
|
/**
|
|
7746
7770
|
* Insert table into editor at current selection
|
package/dist/rooster-amd.js
CHANGED
|
@@ -7859,11 +7859,11 @@ var retrieveHtmlInfo_1 = __webpack_require__(/*! ./retrieveHtmlInfo */ "./packag
|
|
|
7859
7859
|
* Paste into editor using a clipboardData object
|
|
7860
7860
|
* @param editor The Editor object.
|
|
7861
7861
|
* @param clipboardData Clipboard data retrieved from clipboard
|
|
7862
|
-
* @param
|
|
7862
|
+
* @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
|
|
7863
7863
|
*/
|
|
7864
|
-
function paste(editor, clipboardData,
|
|
7864
|
+
function paste(editor, clipboardData, pasteTypeOrGetter) {
|
|
7865
7865
|
var _a;
|
|
7866
|
-
if (
|
|
7866
|
+
if (pasteTypeOrGetter === void 0) { pasteTypeOrGetter = 'normal'; }
|
|
7867
7867
|
editor.focus();
|
|
7868
7868
|
var trustedHTMLHandler = editor.getTrustedHTMLHandler();
|
|
7869
7869
|
if (!clipboardData.modelBeforePaste) {
|
|
@@ -7874,6 +7874,9 @@ function paste(editor, clipboardData, pasteType) {
|
|
|
7874
7874
|
}
|
|
7875
7875
|
// 1. Prepare variables
|
|
7876
7876
|
var doc = createDOMFromHtml(clipboardData.rawHtml, trustedHTMLHandler);
|
|
7877
|
+
var pasteType = typeof pasteTypeOrGetter == 'function'
|
|
7878
|
+
? pasteTypeOrGetter(doc, clipboardData)
|
|
7879
|
+
: pasteTypeOrGetter;
|
|
7877
7880
|
// 2. Handle HTML from clipboard
|
|
7878
7881
|
var htmlFromClipboard = (0, retrieveHtmlInfo_1.retrieveHtmlInfo)(doc, clipboardData);
|
|
7879
7882
|
// 3. Create target fragment
|
|
@@ -8326,7 +8329,7 @@ var DOT_STRING = '.';
|
|
|
8326
8329
|
* @param announceData Data to announce
|
|
8327
8330
|
*/
|
|
8328
8331
|
var announce = function (core, announceData) {
|
|
8329
|
-
var text = announceData.text, defaultStrings = announceData.defaultStrings, _a = announceData.formatStrings, formatStrings = _a === void 0 ? [] : _a;
|
|
8332
|
+
var text = announceData.text, defaultStrings = announceData.defaultStrings, _a = announceData.formatStrings, formatStrings = _a === void 0 ? [] : _a, _b = announceData.ariaLiveMode, ariaLiveMode = _b === void 0 ? 'assertive' : _b;
|
|
8330
8333
|
var announcerStringGetter = core.lifecycle.announcerStringGetter;
|
|
8331
8334
|
var template = defaultStrings && (announcerStringGetter === null || announcerStringGetter === void 0 ? void 0 : announcerStringGetter(defaultStrings));
|
|
8332
8335
|
var textToAnnounce = formatString(template || text, formatStrings);
|
|
@@ -8335,6 +8338,9 @@ var announce = function (core, announceData) {
|
|
|
8335
8338
|
}
|
|
8336
8339
|
if (textToAnnounce && core.lifecycle.announceContainer) {
|
|
8337
8340
|
var announceContainer = core.lifecycle.announceContainer;
|
|
8341
|
+
if (announceContainer.ariaLive != ariaLiveMode) {
|
|
8342
|
+
announceContainer.ariaLive = ariaLiveMode;
|
|
8343
|
+
}
|
|
8338
8344
|
if (textToAnnounce == announceContainer.textContent) {
|
|
8339
8345
|
textToAnnounce += DOT_STRING;
|
|
8340
8346
|
}
|
|
@@ -9089,6 +9095,7 @@ exports.restoreSnapshotLogicalRoot = restoreSnapshotLogicalRoot;
|
|
|
9089
9095
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
9090
9096
|
exports.restoreSnapshotSelection = void 0;
|
|
9091
9097
|
var getPositionFromPath_1 = __webpack_require__(/*! ./getPositionFromPath */ "./packages/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/getPositionFromPath.ts");
|
|
9098
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
9092
9099
|
/**
|
|
9093
9100
|
* @internal
|
|
9094
9101
|
*/
|
|
@@ -9113,7 +9120,7 @@ function restoreSnapshotSelection(core, snapshot) {
|
|
|
9113
9120
|
};
|
|
9114
9121
|
break;
|
|
9115
9122
|
case 'table':
|
|
9116
|
-
var table = physicalRoot.querySelector(
|
|
9123
|
+
var table = physicalRoot.querySelector((0, roosterjs_content_model_dom_1.getSafeIdSelector)(snapshotSelection.tableId));
|
|
9117
9124
|
if (table) {
|
|
9118
9125
|
domSelection = {
|
|
9119
9126
|
type: 'table',
|
|
@@ -9126,7 +9133,7 @@ function restoreSnapshotSelection(core, snapshot) {
|
|
|
9126
9133
|
}
|
|
9127
9134
|
break;
|
|
9128
9135
|
case 'image':
|
|
9129
|
-
var image = physicalRoot.querySelector(
|
|
9136
|
+
var image = physicalRoot.querySelector((0, roosterjs_content_model_dom_1.getSafeIdSelector)(snapshotSelection.imageId));
|
|
9130
9137
|
if (image) {
|
|
9131
9138
|
domSelection = {
|
|
9132
9139
|
type: 'image',
|
|
@@ -9417,7 +9424,7 @@ var setDOMSelection = function (core, selection, skipSelectionChangedEvent) {
|
|
|
9417
9424
|
var imageSelectionColor = isDarkMode
|
|
9418
9425
|
? core.selection.imageSelectionBorderColorDark
|
|
9419
9426
|
: core.selection.imageSelectionBorderColor;
|
|
9420
|
-
core.api.setEditorStyle(core, DOM_SELECTION_CSS_KEY, "outline-style:solid!important; outline-color:" + (imageSelectionColor || DEFAULT_SELECTION_BORDER_COLOR) + "!important;", [
|
|
9427
|
+
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))]);
|
|
9421
9428
|
core.api.setEditorStyle(core, HIDE_SELECTION_CSS_KEY, TRANSPARENT_SELECTION_CSS_RULE, [SELECTION_SELECTOR]);
|
|
9422
9429
|
setRangeSelection(doc, image, false /* collapse */);
|
|
9423
9430
|
break;
|
|
@@ -9450,12 +9457,13 @@ var setDOMSelection = function (core, selection, skipSelectionChangedEvent) {
|
|
|
9450
9457
|
lastColumn: lastCell.col,
|
|
9451
9458
|
};
|
|
9452
9459
|
var tableId = (0, ensureUniqueId_1.ensureUniqueId)(table, TABLE_ID);
|
|
9460
|
+
var tableSelector = (0, roosterjs_content_model_dom_1.getSafeIdSelector)(tableId);
|
|
9453
9461
|
var tableSelectors = firstCell.row == 0 &&
|
|
9454
9462
|
firstCell.col == 0 &&
|
|
9455
9463
|
lastCell.row == parsedTable.length - 1 &&
|
|
9456
9464
|
lastCell.col == ((_b = (_a = parsedTable[lastCell.row]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) - 1
|
|
9457
|
-
? [
|
|
9458
|
-
: handleTableSelected(parsedTable,
|
|
9465
|
+
? [tableSelector, tableSelector + " *"]
|
|
9466
|
+
: handleTableSelected(parsedTable, tableSelector, table, firstCell, lastCell);
|
|
9459
9467
|
core.selection.selection = selection;
|
|
9460
9468
|
var tableSelectionColor = isDarkMode
|
|
9461
9469
|
? core.selection.tableCellSelectionBackgroundColorDark
|
|
@@ -9488,7 +9496,7 @@ var setDOMSelection = function (core, selection, skipSelectionChangedEvent) {
|
|
|
9488
9496
|
}
|
|
9489
9497
|
};
|
|
9490
9498
|
exports.setDOMSelection = setDOMSelection;
|
|
9491
|
-
function handleTableSelected(parsedTable,
|
|
9499
|
+
function handleTableSelected(parsedTable, tableSelector, table, firstCell, lastCell) {
|
|
9492
9500
|
var selectors = [];
|
|
9493
9501
|
// Get whether table has thead, tbody or tfoot, then Set the start and end of each of the table children,
|
|
9494
9502
|
// so we can build the selector according the element between the table and the row.
|
|
@@ -9522,7 +9530,7 @@ function handleTableSelected(parsedTable, tableId, table, firstCell, lastCell) {
|
|
|
9522
9530
|
rowIndex <= lastCell.row &&
|
|
9523
9531
|
cellIndex >= firstCell.col &&
|
|
9524
9532
|
cellIndex <= lastCell.col) {
|
|
9525
|
-
var selector = "
|
|
9533
|
+
var selector = "" + tableSelector + middleElSelector + " tr:nth-child(" + currentRow + ")>" + cell.tagName + ":nth-child(" + tdCount + ")";
|
|
9526
9534
|
selectors.push(selector, selector + ' *');
|
|
9527
9535
|
}
|
|
9528
9536
|
}
|
|
@@ -9559,12 +9567,13 @@ function setRangeSelection(doc, element, collapse) {
|
|
|
9559
9567
|
/*!********************************************************************************************!*\
|
|
9560
9568
|
!*** ./packages/roosterjs-content-model-core/lib/coreApi/setEditorStyle/ensureUniqueId.ts ***!
|
|
9561
9569
|
\********************************************************************************************/
|
|
9562
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
9570
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
9563
9571
|
|
|
9564
9572
|
"use strict";
|
|
9565
9573
|
|
|
9566
9574
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
9567
9575
|
exports.ensureUniqueId = void 0;
|
|
9576
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
9568
9577
|
/**
|
|
9569
9578
|
* @internal
|
|
9570
9579
|
*/
|
|
@@ -9572,7 +9581,7 @@ function ensureUniqueId(element, idPrefix) {
|
|
|
9572
9581
|
idPrefix = element.id || idPrefix;
|
|
9573
9582
|
var doc = element.ownerDocument;
|
|
9574
9583
|
var i = 0;
|
|
9575
|
-
while (!element.id || doc.querySelectorAll(
|
|
9584
|
+
while (!element.id || doc.querySelectorAll((0, roosterjs_content_model_dom_1.getSafeIdSelector)(element.id)).length > 1) {
|
|
9576
9585
|
element.id = idPrefix + '_' + i++;
|
|
9577
9586
|
}
|
|
9578
9587
|
return element.id;
|
|
@@ -9593,6 +9602,7 @@ exports.ensureUniqueId = ensureUniqueId;
|
|
|
9593
9602
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
9594
9603
|
exports.setEditorStyle = void 0;
|
|
9595
9604
|
var ensureUniqueId_1 = __webpack_require__(/*! ./ensureUniqueId */ "./packages/roosterjs-content-model-core/lib/coreApi/setEditorStyle/ensureUniqueId.ts");
|
|
9605
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
9596
9606
|
var MAX_RULE_SELECTOR_LENGTH = 9000;
|
|
9597
9607
|
var CONTENT_DIV_ID = 'contentDiv';
|
|
9598
9608
|
/**
|
|
@@ -9614,7 +9624,7 @@ var setEditorStyle = function (core, key, cssRule, subSelectors, maxRuleLength)
|
|
|
9614
9624
|
sheet.deleteRule(i);
|
|
9615
9625
|
}
|
|
9616
9626
|
if (cssRule) {
|
|
9617
|
-
var rootSelector =
|
|
9627
|
+
var rootSelector = (0, roosterjs_content_model_dom_1.getSafeIdSelector)((0, ensureUniqueId_1.ensureUniqueId)(core.physicalRoot, CONTENT_DIV_ID));
|
|
9618
9628
|
var selectors = !subSelectors
|
|
9619
9629
|
? [rootSelector]
|
|
9620
9630
|
: typeof subSelectors === 'string'
|
|
@@ -12420,6 +12430,7 @@ var isSingleImageInSelection_1 = __webpack_require__(/*! ./isSingleImageInSelect
|
|
|
12420
12430
|
var normalizePos_1 = __webpack_require__(/*! ./normalizePos */ "./packages/roosterjs-content-model-core/lib/corePlugin/selection/normalizePos.ts");
|
|
12421
12431
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
12422
12432
|
var MouseLeftButton = 0;
|
|
12433
|
+
var MouseMiddleButton = 1;
|
|
12423
12434
|
var MouseRightButton = 2;
|
|
12424
12435
|
var Up = 'ArrowUp';
|
|
12425
12436
|
var Down = 'ArrowDown';
|
|
@@ -12626,7 +12637,7 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
12626
12637
|
this.onMouseDown(this.editor, event.rawEvent);
|
|
12627
12638
|
break;
|
|
12628
12639
|
case 'mouseUp':
|
|
12629
|
-
this.onMouseUp();
|
|
12640
|
+
this.onMouseUp(this.editor, event);
|
|
12630
12641
|
break;
|
|
12631
12642
|
case 'keyDown':
|
|
12632
12643
|
this.onKeyDown(this.editor, event.rawEvent);
|
|
@@ -12642,25 +12653,40 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
12642
12653
|
}
|
|
12643
12654
|
};
|
|
12644
12655
|
SelectionPlugin.prototype.onMouseDown = function (editor, rawEvent) {
|
|
12645
|
-
var _a;
|
|
12656
|
+
var _a, _b;
|
|
12646
12657
|
var selection = editor.getDOMSelection();
|
|
12647
12658
|
var image;
|
|
12648
12659
|
// Image selection
|
|
12649
|
-
if ((
|
|
12650
|
-
(rawEvent.button
|
|
12651
|
-
(
|
|
12652
|
-
|
|
12653
|
-
|
|
12654
|
-
|
|
12660
|
+
if (editor.isExperimentalFeatureEnabled('LegacyImageSelection')) {
|
|
12661
|
+
if (rawEvent.button === MouseRightButton &&
|
|
12662
|
+
(image =
|
|
12663
|
+
(_a = this.getClickingImage(rawEvent)) !== null && _a !== void 0 ? _a : this.getContainedTargetImage(rawEvent, selection)) &&
|
|
12664
|
+
image.isContentEditable) {
|
|
12665
|
+
this.selectImageWithRange(image, rawEvent);
|
|
12666
|
+
return;
|
|
12667
|
+
}
|
|
12668
|
+
else if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'image' && selection.image !== rawEvent.target) {
|
|
12669
|
+
this.selectBeforeOrAfterElement(editor, selection.image);
|
|
12670
|
+
return;
|
|
12671
|
+
}
|
|
12655
12672
|
}
|
|
12656
|
-
|
|
12657
|
-
|
|
12658
|
-
|
|
12659
|
-
|
|
12660
|
-
|
|
12661
|
-
|
|
12662
|
-
|
|
12663
|
-
|
|
12673
|
+
else {
|
|
12674
|
+
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'image' &&
|
|
12675
|
+
(rawEvent.button == MouseLeftButton ||
|
|
12676
|
+
(rawEvent.button == MouseRightButton &&
|
|
12677
|
+
!this.getClickingImage(rawEvent) &&
|
|
12678
|
+
!this.getContainedTargetImage(rawEvent, selection)))) {
|
|
12679
|
+
this.setDOMSelection(null /*domSelection*/, null /*tableSelection*/);
|
|
12680
|
+
}
|
|
12681
|
+
if ((image =
|
|
12682
|
+
(_b = this.getClickingImage(rawEvent)) !== null && _b !== void 0 ? _b : this.getContainedTargetImage(rawEvent, selection)) &&
|
|
12683
|
+
image.isContentEditable) {
|
|
12684
|
+
this.setDOMSelection({
|
|
12685
|
+
type: 'image',
|
|
12686
|
+
image: image,
|
|
12687
|
+
}, null);
|
|
12688
|
+
return;
|
|
12689
|
+
}
|
|
12664
12690
|
}
|
|
12665
12691
|
// Table selection
|
|
12666
12692
|
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'table' && rawEvent.button == MouseLeftButton) {
|
|
@@ -12688,7 +12714,33 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
12688
12714
|
});
|
|
12689
12715
|
}
|
|
12690
12716
|
};
|
|
12691
|
-
SelectionPlugin.prototype.
|
|
12717
|
+
SelectionPlugin.prototype.selectImageWithRange = function (image, event) {
|
|
12718
|
+
var _a;
|
|
12719
|
+
var range = image.ownerDocument.createRange();
|
|
12720
|
+
range.selectNode(image);
|
|
12721
|
+
var domSelection = (_a = this.editor) === null || _a === void 0 ? void 0 : _a.getDOMSelection();
|
|
12722
|
+
if ((domSelection === null || domSelection === void 0 ? void 0 : domSelection.type) == 'image' && image == domSelection.image) {
|
|
12723
|
+
event.preventDefault();
|
|
12724
|
+
}
|
|
12725
|
+
else {
|
|
12726
|
+
this.setDOMSelection({
|
|
12727
|
+
type: 'range',
|
|
12728
|
+
isReverted: false,
|
|
12729
|
+
range: range,
|
|
12730
|
+
}, null);
|
|
12731
|
+
}
|
|
12732
|
+
};
|
|
12733
|
+
SelectionPlugin.prototype.onMouseUp = function (editor, event) {
|
|
12734
|
+
var image;
|
|
12735
|
+
if (editor.isExperimentalFeatureEnabled('LegacyImageSelection') &&
|
|
12736
|
+
(image = this.getClickingImage(event.rawEvent)) &&
|
|
12737
|
+
image.isContentEditable &&
|
|
12738
|
+
event.rawEvent.button != MouseMiddleButton &&
|
|
12739
|
+
(event.rawEvent.button ==
|
|
12740
|
+
MouseRightButton /* it's not possible to drag using right click */ ||
|
|
12741
|
+
event.isClicking)) {
|
|
12742
|
+
this.selectImageWithRange(image, event.rawEvent);
|
|
12743
|
+
}
|
|
12692
12744
|
this.detachMouseEvent();
|
|
12693
12745
|
};
|
|
12694
12746
|
SelectionPlugin.prototype.onKeyDown = function (editor, rawEvent) {
|
|
@@ -17342,6 +17394,40 @@ function getObjectKeys(obj) {
|
|
|
17342
17394
|
exports.getObjectKeys = getObjectKeys;
|
|
17343
17395
|
|
|
17344
17396
|
|
|
17397
|
+
/***/ }),
|
|
17398
|
+
|
|
17399
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/getSafeIdSelector.ts":
|
|
17400
|
+
/*!********************************************************************************!*\
|
|
17401
|
+
!*** ./packages/roosterjs-content-model-dom/lib/domUtils/getSafeIdSelector.ts ***!
|
|
17402
|
+
\********************************************************************************/
|
|
17403
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
17404
|
+
|
|
17405
|
+
"use strict";
|
|
17406
|
+
|
|
17407
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
17408
|
+
exports.getSafeIdSelector = void 0;
|
|
17409
|
+
var StartsWithUnsupportedCharacter = /^[.|\-|_|\d]/;
|
|
17410
|
+
/**
|
|
17411
|
+
* Returns a safe Id to use in Native APIs.
|
|
17412
|
+
* IDs that start with number or hyphen can throw errors if used.
|
|
17413
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
|
|
17414
|
+
* @param id
|
|
17415
|
+
* @returns
|
|
17416
|
+
*/
|
|
17417
|
+
function getSafeIdSelector(id) {
|
|
17418
|
+
if (!id) {
|
|
17419
|
+
return id;
|
|
17420
|
+
}
|
|
17421
|
+
if (id.match(StartsWithUnsupportedCharacter)) {
|
|
17422
|
+
return "[id=\"" + id + "\"]";
|
|
17423
|
+
}
|
|
17424
|
+
else {
|
|
17425
|
+
return "#" + id;
|
|
17426
|
+
}
|
|
17427
|
+
}
|
|
17428
|
+
exports.getSafeIdSelector = getSafeIdSelector;
|
|
17429
|
+
|
|
17430
|
+
|
|
17345
17431
|
/***/ }),
|
|
17346
17432
|
|
|
17347
17433
|
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/isElementOfType.ts":
|
|
@@ -20057,9 +20143,9 @@ exports.shouldSetValue = shouldSetValue;
|
|
|
20057
20143
|
"use strict";
|
|
20058
20144
|
|
|
20059
20145
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20060
|
-
exports.
|
|
20061
|
-
exports.
|
|
20062
|
-
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;
|
|
20146
|
+
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;
|
|
20147
|
+
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;
|
|
20148
|
+
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;
|
|
20063
20149
|
var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
|
|
20064
20150
|
Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
|
|
20065
20151
|
var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
|
|
@@ -20094,6 +20180,8 @@ var isElementOfType_1 = __webpack_require__(/*! ./domUtils/isElementOfType */ ".
|
|
|
20094
20180
|
Object.defineProperty(exports, "isElementOfType", ({ enumerable: true, get: function () { return isElementOfType_1.isElementOfType; } }));
|
|
20095
20181
|
var getObjectKeys_1 = __webpack_require__(/*! ./domUtils/getObjectKeys */ "./packages/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts");
|
|
20096
20182
|
Object.defineProperty(exports, "getObjectKeys", ({ enumerable: true, get: function () { return getObjectKeys_1.getObjectKeys; } }));
|
|
20183
|
+
var getSafeIdSelector_1 = __webpack_require__(/*! ./domUtils/getSafeIdSelector */ "./packages/roosterjs-content-model-dom/lib/domUtils/getSafeIdSelector.ts");
|
|
20184
|
+
Object.defineProperty(exports, "getSafeIdSelector", ({ enumerable: true, get: function () { return getSafeIdSelector_1.getSafeIdSelector; } }));
|
|
20097
20185
|
var toArray_1 = __webpack_require__(/*! ./domUtils/toArray */ "./packages/roosterjs-content-model-dom/lib/domUtils/toArray.ts");
|
|
20098
20186
|
Object.defineProperty(exports, "toArray", ({ enumerable: true, get: function () { return toArray_1.toArray; } }));
|
|
20099
20187
|
var moveChildNodes_1 = __webpack_require__(/*! ./domUtils/moveChildNodes */ "./packages/roosterjs-content-model-dom/lib/domUtils/moveChildNodes.ts");
|
|
@@ -29225,7 +29313,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
29225
29313
|
this.croppers = croppers;
|
|
29226
29314
|
this.zoomScale = editor.getDOMHelper().calculateZoomScale();
|
|
29227
29315
|
editor.setEditorStyle('imageEdit', "outline-style:none!important;", [
|
|
29228
|
-
"span:has(>img
|
|
29316
|
+
"span:has(>img" + (0, roosterjs_content_model_dom_1.getSafeIdSelector)(this.selectedImage.id) + ")",
|
|
29229
29317
|
]);
|
|
29230
29318
|
};
|
|
29231
29319
|
ImageEditPlugin.prototype.startRotateAndResize = function (editor, image) {
|