roosterjs 9.56.0 → 9.58.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/README.md +8 -0
- package/dist/rooster-adapter-amd-min.js +1 -1
- package/dist/rooster-adapter-amd-min.js.map +1 -1
- package/dist/rooster-adapter-amd.js +90 -6
- package/dist/rooster-adapter-amd.js.map +1 -1
- package/dist/rooster-adapter-min.js +1 -1
- package/dist/rooster-adapter-min.js.map +1 -1
- package/dist/rooster-adapter.js +90 -6
- package/dist/rooster-adapter.js.map +1 -1
- package/dist/rooster-amd-min.js +1 -1
- package/dist/rooster-amd-min.js.map +1 -1
- package/dist/rooster-amd.d.ts +66 -6
- package/dist/rooster-amd.js +703 -234
- 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-amd-min.js +1 -1
- package/dist/rooster-react-amd-min.js.map +1 -1
- package/dist/rooster-react-amd.d.ts +1 -1
- package/dist/rooster-react-amd.js +145 -62
- package/dist/rooster-react-amd.js.map +1 -1
- package/dist/rooster-react-min.js +1 -1
- package/dist/rooster-react-min.js.map +1 -1
- package/dist/rooster-react.d.ts +1 -1
- package/dist/rooster-react.js +143 -60
- package/dist/rooster-react.js.map +1 -1
- package/dist/rooster.d.ts +66 -6
- package/dist/rooster.js +703 -234
- package/dist/rooster.js.map +1 -1
- package/package.json +7 -7
package/dist/rooster.js
CHANGED
|
@@ -1247,12 +1247,13 @@ module.exports = {
|
|
|
1247
1247
|
/* MIT license */
|
|
1248
1248
|
var colorNames = __webpack_require__(/*! color-name */ "./node_modules/color-name/index.js");
|
|
1249
1249
|
var swizzle = __webpack_require__(/*! simple-swizzle */ "./node_modules/simple-swizzle/index.js");
|
|
1250
|
+
var hasOwnProperty = Object.hasOwnProperty;
|
|
1250
1251
|
|
|
1251
|
-
var reverseNames =
|
|
1252
|
+
var reverseNames = Object.create(null);
|
|
1252
1253
|
|
|
1253
1254
|
// create a list of reverse color names
|
|
1254
1255
|
for (var name in colorNames) {
|
|
1255
|
-
if (
|
|
1256
|
+
if (hasOwnProperty.call(colorNames, name)) {
|
|
1256
1257
|
reverseNames[colorNames[name]] = name;
|
|
1257
1258
|
}
|
|
1258
1259
|
}
|
|
@@ -1295,9 +1296,9 @@ cs.get.rgb = function (string) {
|
|
|
1295
1296
|
|
|
1296
1297
|
var abbr = /^#([a-f0-9]{3,4})$/i;
|
|
1297
1298
|
var hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;
|
|
1298
|
-
var rgba = /^rgba?\(\s*([+-]?\d+)\s
|
|
1299
|
-
var per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s
|
|
1300
|
-
var keyword =
|
|
1299
|
+
var rgba = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
|
|
1300
|
+
var per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
|
|
1301
|
+
var keyword = /^(\w+)$/;
|
|
1301
1302
|
|
|
1302
1303
|
var rgb = [0, 0, 0, 1];
|
|
1303
1304
|
var match;
|
|
@@ -1334,7 +1335,11 @@ cs.get.rgb = function (string) {
|
|
|
1334
1335
|
}
|
|
1335
1336
|
|
|
1336
1337
|
if (match[4]) {
|
|
1337
|
-
|
|
1338
|
+
if (match[5]) {
|
|
1339
|
+
rgb[3] = parseFloat(match[4]) * 0.01;
|
|
1340
|
+
} else {
|
|
1341
|
+
rgb[3] = parseFloat(match[4]);
|
|
1342
|
+
}
|
|
1338
1343
|
}
|
|
1339
1344
|
} else if (match = string.match(per)) {
|
|
1340
1345
|
for (i = 0; i < 3; i++) {
|
|
@@ -1342,19 +1347,22 @@ cs.get.rgb = function (string) {
|
|
|
1342
1347
|
}
|
|
1343
1348
|
|
|
1344
1349
|
if (match[4]) {
|
|
1345
|
-
|
|
1350
|
+
if (match[5]) {
|
|
1351
|
+
rgb[3] = parseFloat(match[4]) * 0.01;
|
|
1352
|
+
} else {
|
|
1353
|
+
rgb[3] = parseFloat(match[4]);
|
|
1354
|
+
}
|
|
1346
1355
|
}
|
|
1347
1356
|
} else if (match = string.match(keyword)) {
|
|
1348
1357
|
if (match[1] === 'transparent') {
|
|
1349
1358
|
return [0, 0, 0, 0];
|
|
1350
1359
|
}
|
|
1351
1360
|
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
if (!rgb) {
|
|
1361
|
+
if (!hasOwnProperty.call(colorNames, match[1])) {
|
|
1355
1362
|
return null;
|
|
1356
1363
|
}
|
|
1357
1364
|
|
|
1365
|
+
rgb = colorNames[match[1]];
|
|
1358
1366
|
rgb[3] = 1;
|
|
1359
1367
|
|
|
1360
1368
|
return rgb;
|
|
@@ -1375,12 +1383,12 @@ cs.get.hsl = function (string) {
|
|
|
1375
1383
|
return null;
|
|
1376
1384
|
}
|
|
1377
1385
|
|
|
1378
|
-
var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s
|
|
1386
|
+
var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
|
|
1379
1387
|
var match = string.match(hsl);
|
|
1380
1388
|
|
|
1381
1389
|
if (match) {
|
|
1382
1390
|
var alpha = parseFloat(match[4]);
|
|
1383
|
-
var h = (parseFloat(match[1]) + 360) % 360;
|
|
1391
|
+
var h = ((parseFloat(match[1]) % 360) + 360) % 360;
|
|
1384
1392
|
var s = clamp(parseFloat(match[2]), 0, 100);
|
|
1385
1393
|
var l = clamp(parseFloat(match[3]), 0, 100);
|
|
1386
1394
|
var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);
|
|
@@ -1396,7 +1404,7 @@ cs.get.hwb = function (string) {
|
|
|
1396
1404
|
return null;
|
|
1397
1405
|
}
|
|
1398
1406
|
|
|
1399
|
-
var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d
|
|
1407
|
+
var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
|
|
1400
1408
|
var match = string.match(hwb);
|
|
1401
1409
|
|
|
1402
1410
|
if (match) {
|
|
@@ -1475,7 +1483,7 @@ function clamp(num, min, max) {
|
|
|
1475
1483
|
}
|
|
1476
1484
|
|
|
1477
1485
|
function hexDouble(num) {
|
|
1478
|
-
var str = num.toString(16).toUpperCase();
|
|
1486
|
+
var str = Math.round(num).toString(16).toUpperCase();
|
|
1479
1487
|
return (str.length < 2) ? '0' + str : str;
|
|
1480
1488
|
}
|
|
1481
1489
|
|
|
@@ -2043,6 +2051,7 @@ swizzle.wrap = function (fn) {
|
|
|
2043
2051
|
"use strict";
|
|
2044
2052
|
__webpack_require__.r(__webpack_exports__);
|
|
2045
2053
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2054
|
+
/* harmony export */ __addDisposableResource: () => (/* binding */ __addDisposableResource),
|
|
2046
2055
|
/* harmony export */ __assign: () => (/* binding */ __assign),
|
|
2047
2056
|
/* harmony export */ __asyncDelegator: () => (/* binding */ __asyncDelegator),
|
|
2048
2057
|
/* harmony export */ __asyncGenerator: () => (/* binding */ __asyncGenerator),
|
|
@@ -2054,6 +2063,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2054
2063
|
/* harmony export */ __classPrivateFieldSet: () => (/* binding */ __classPrivateFieldSet),
|
|
2055
2064
|
/* harmony export */ __createBinding: () => (/* binding */ __createBinding),
|
|
2056
2065
|
/* harmony export */ __decorate: () => (/* binding */ __decorate),
|
|
2066
|
+
/* harmony export */ __disposeResources: () => (/* binding */ __disposeResources),
|
|
2057
2067
|
/* harmony export */ __esDecorate: () => (/* binding */ __esDecorate),
|
|
2058
2068
|
/* harmony export */ __exportStar: () => (/* binding */ __exportStar),
|
|
2059
2069
|
/* harmony export */ __extends: () => (/* binding */ __extends),
|
|
@@ -2066,6 +2076,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2066
2076
|
/* harmony export */ __propKey: () => (/* binding */ __propKey),
|
|
2067
2077
|
/* harmony export */ __read: () => (/* binding */ __read),
|
|
2068
2078
|
/* harmony export */ __rest: () => (/* binding */ __rest),
|
|
2079
|
+
/* harmony export */ __rewriteRelativeImportExtension: () => (/* binding */ __rewriteRelativeImportExtension),
|
|
2069
2080
|
/* harmony export */ __runInitializers: () => (/* binding */ __runInitializers),
|
|
2070
2081
|
/* harmony export */ __setFunctionName: () => (/* binding */ __setFunctionName),
|
|
2071
2082
|
/* harmony export */ __spread: () => (/* binding */ __spread),
|
|
@@ -2088,7 +2099,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
|
2088
2099
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
2089
2100
|
PERFORMANCE OF THIS SOFTWARE.
|
|
2090
2101
|
***************************************************************************** */
|
|
2091
|
-
/* global Reflect, Promise */
|
|
2102
|
+
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
2092
2103
|
|
|
2093
2104
|
var extendStatics = function(d, b) {
|
|
2094
2105
|
extendStatics = Object.setPrototypeOf ||
|
|
@@ -2199,8 +2210,8 @@ function __awaiter(thisArg, _arguments, P, generator) {
|
|
|
2199
2210
|
}
|
|
2200
2211
|
|
|
2201
2212
|
function __generator(thisArg, body) {
|
|
2202
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
2203
|
-
return g =
|
|
2213
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
2214
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
2204
2215
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
2205
2216
|
function step(op) {
|
|
2206
2217
|
if (f) throw new TypeError("Generator is already executing.");
|
|
@@ -2304,8 +2315,9 @@ function __await(v) {
|
|
|
2304
2315
|
function __asyncGenerator(thisArg, _arguments, generator) {
|
|
2305
2316
|
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
2306
2317
|
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
2307
|
-
return i =
|
|
2308
|
-
function
|
|
2318
|
+
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
2319
|
+
function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
|
|
2320
|
+
function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
|
|
2309
2321
|
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
2310
2322
|
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
2311
2323
|
function fulfill(value) { resume("next", value); }
|
|
@@ -2338,10 +2350,19 @@ var __setModuleDefault = Object.create ? (function(o, v) {
|
|
|
2338
2350
|
o["default"] = v;
|
|
2339
2351
|
};
|
|
2340
2352
|
|
|
2353
|
+
var ownKeys = function(o) {
|
|
2354
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
2355
|
+
var ar = [];
|
|
2356
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
2357
|
+
return ar;
|
|
2358
|
+
};
|
|
2359
|
+
return ownKeys(o);
|
|
2360
|
+
};
|
|
2361
|
+
|
|
2341
2362
|
function __importStar(mod) {
|
|
2342
2363
|
if (mod && mod.__esModule) return mod;
|
|
2343
2364
|
var result = {};
|
|
2344
|
-
if (mod != null) for (var k
|
|
2365
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
2345
2366
|
__setModuleDefault(result, mod);
|
|
2346
2367
|
return result;
|
|
2347
2368
|
}
|
|
@@ -2368,12 +2389,79 @@ function __classPrivateFieldIn(state, receiver) {
|
|
|
2368
2389
|
return typeof state === "function" ? receiver === state : state.has(receiver);
|
|
2369
2390
|
}
|
|
2370
2391
|
|
|
2392
|
+
function __addDisposableResource(env, value, async) {
|
|
2393
|
+
if (value !== null && value !== void 0) {
|
|
2394
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
2395
|
+
var dispose, inner;
|
|
2396
|
+
if (async) {
|
|
2397
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
2398
|
+
dispose = value[Symbol.asyncDispose];
|
|
2399
|
+
}
|
|
2400
|
+
if (dispose === void 0) {
|
|
2401
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
2402
|
+
dispose = value[Symbol.dispose];
|
|
2403
|
+
if (async) inner = dispose;
|
|
2404
|
+
}
|
|
2405
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
2406
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
2407
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
2408
|
+
}
|
|
2409
|
+
else if (async) {
|
|
2410
|
+
env.stack.push({ async: true });
|
|
2411
|
+
}
|
|
2412
|
+
return value;
|
|
2413
|
+
}
|
|
2414
|
+
|
|
2415
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
2416
|
+
var e = new Error(message);
|
|
2417
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
2418
|
+
};
|
|
2419
|
+
|
|
2420
|
+
function __disposeResources(env) {
|
|
2421
|
+
function fail(e) {
|
|
2422
|
+
env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
2423
|
+
env.hasError = true;
|
|
2424
|
+
}
|
|
2425
|
+
var r, s = 0;
|
|
2426
|
+
function next() {
|
|
2427
|
+
while (r = env.stack.pop()) {
|
|
2428
|
+
try {
|
|
2429
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
2430
|
+
if (r.dispose) {
|
|
2431
|
+
var result = r.dispose.call(r.value);
|
|
2432
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
2433
|
+
}
|
|
2434
|
+
else s |= 1;
|
|
2435
|
+
}
|
|
2436
|
+
catch (e) {
|
|
2437
|
+
fail(e);
|
|
2438
|
+
}
|
|
2439
|
+
}
|
|
2440
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
2441
|
+
if (env.hasError) throw env.error;
|
|
2442
|
+
}
|
|
2443
|
+
return next();
|
|
2444
|
+
}
|
|
2445
|
+
|
|
2446
|
+
function __rewriteRelativeImportExtension(path, preserveJsx) {
|
|
2447
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
2448
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
2449
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
2450
|
+
});
|
|
2451
|
+
}
|
|
2452
|
+
return path;
|
|
2453
|
+
}
|
|
2454
|
+
|
|
2371
2455
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
|
|
2372
2456
|
__extends,
|
|
2373
2457
|
__assign,
|
|
2374
2458
|
__rest,
|
|
2375
2459
|
__decorate,
|
|
2376
2460
|
__param,
|
|
2461
|
+
__esDecorate,
|
|
2462
|
+
__runInitializers,
|
|
2463
|
+
__propKey,
|
|
2464
|
+
__setFunctionName,
|
|
2377
2465
|
__metadata,
|
|
2378
2466
|
__awaiter,
|
|
2379
2467
|
__generator,
|
|
@@ -2394,6 +2482,9 @@ function __classPrivateFieldIn(state, receiver) {
|
|
|
2394
2482
|
__classPrivateFieldGet,
|
|
2395
2483
|
__classPrivateFieldSet,
|
|
2396
2484
|
__classPrivateFieldIn,
|
|
2485
|
+
__addDisposableResource,
|
|
2486
|
+
__disposeResources,
|
|
2487
|
+
__rewriteRelativeImportExtension,
|
|
2397
2488
|
});
|
|
2398
2489
|
|
|
2399
2490
|
|
|
@@ -8545,9 +8636,9 @@ var DefaultSanitizingOption = {
|
|
|
8545
8636
|
/**
|
|
8546
8637
|
* @internal
|
|
8547
8638
|
*/
|
|
8548
|
-
function createDomToModelContextForSanitizing(document, defaultFormat, defaultOption, additionalSanitizingOption, domHelper) {
|
|
8639
|
+
function createDomToModelContextForSanitizing(document, defaultFormat, defaultOption, additionalSanitizingOption, domHelper, experimentalFeatures) {
|
|
8549
8640
|
var sanitizingOption = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, DefaultSanitizingOption), additionalSanitizingOption);
|
|
8550
|
-
return (0, roosterjs_content_model_dom_1.createDomToModelContext)((0, tslib_1.__assign)((0, tslib_1.__assign)({ defaultFormat: defaultFormat }, (0, getRootComputedStyleForContext_1.getRootComputedStyleForContext)(document)), { experimentalFeatures: [], editorViewWidth: domHelper === null || domHelper === void 0 ? void 0 : domHelper.getClientWidth() }), defaultOption, {
|
|
8641
|
+
return (0, roosterjs_content_model_dom_1.createDomToModelContext)((0, tslib_1.__assign)((0, tslib_1.__assign)({ defaultFormat: defaultFormat }, (0, getRootComputedStyleForContext_1.getRootComputedStyleForContext)(document)), { experimentalFeatures: experimentalFeatures !== null && experimentalFeatures !== void 0 ? experimentalFeatures : [], editorViewWidth: domHelper === null || domHelper === void 0 ? void 0 : domHelper.getClientWidth() }), defaultOption, {
|
|
8551
8642
|
processorOverride: {
|
|
8552
8643
|
'#text': pasteTextProcessor_1.pasteTextProcessor,
|
|
8553
8644
|
entity: (0, pasteEntityProcessor_1.createPasteEntityProcessor)(sanitizingOption),
|
|
@@ -9234,95 +9325,6 @@ function removeCommentsFromHtml(html, marker, endId, startId) {
|
|
|
9234
9325
|
}
|
|
9235
9326
|
|
|
9236
9327
|
|
|
9237
|
-
/***/ },
|
|
9238
|
-
|
|
9239
|
-
/***/ "./packages/roosterjs-content-model-core/lib/command/paste/createPasteFragment.ts"
|
|
9240
|
-
/*!****************************************************************************************!*\
|
|
9241
|
-
!*** ./packages/roosterjs-content-model-core/lib/command/paste/createPasteFragment.ts ***!
|
|
9242
|
-
\****************************************************************************************/
|
|
9243
|
-
(__unused_webpack_module, exports, __webpack_require__) {
|
|
9244
|
-
|
|
9245
|
-
"use strict";
|
|
9246
|
-
|
|
9247
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
9248
|
-
exports.createPasteFragment = void 0;
|
|
9249
|
-
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
9250
|
-
var NBSP_HTML = '\u00A0';
|
|
9251
|
-
var ENSP_HTML = '\u2002';
|
|
9252
|
-
var TAB_SPACES = 6;
|
|
9253
|
-
/**
|
|
9254
|
-
* @internal
|
|
9255
|
-
*/
|
|
9256
|
-
function createPasteFragment(document, clipboardData, pasteType, root) {
|
|
9257
|
-
if (!clipboardData.text && pasteType === 'asPlainText' && root) {
|
|
9258
|
-
clipboardData.text = root.textContent || clipboardData.text;
|
|
9259
|
-
}
|
|
9260
|
-
var imageDataUri = clipboardData.imageDataUri, text = clipboardData.text;
|
|
9261
|
-
var fragment = document.createDocumentFragment();
|
|
9262
|
-
if ((pasteType == 'asImage' && imageDataUri) ||
|
|
9263
|
-
(pasteType != 'asPlainText' && !text && imageDataUri)) {
|
|
9264
|
-
// Paste image
|
|
9265
|
-
var img = document.createElement('img');
|
|
9266
|
-
img.style.maxWidth = '100%';
|
|
9267
|
-
img.src = imageDataUri;
|
|
9268
|
-
fragment.appendChild(img);
|
|
9269
|
-
}
|
|
9270
|
-
else if (pasteType != 'asPlainText' && root) {
|
|
9271
|
-
(0, roosterjs_content_model_dom_1.moveChildNodes)(fragment, root);
|
|
9272
|
-
}
|
|
9273
|
-
else if (text) {
|
|
9274
|
-
text.split('\n').forEach(function (line, index, lines) {
|
|
9275
|
-
line = line
|
|
9276
|
-
.replace(/^ /g, NBSP_HTML)
|
|
9277
|
-
.replace(/ $/g, NBSP_HTML)
|
|
9278
|
-
.replace(/\r/g, '')
|
|
9279
|
-
.replace(/ {2}/g, ' ' + NBSP_HTML);
|
|
9280
|
-
if (line.includes('\t')) {
|
|
9281
|
-
line = transformTabCharacters(line);
|
|
9282
|
-
}
|
|
9283
|
-
var textNode = document.createTextNode(line);
|
|
9284
|
-
// There are 3 scenarios:
|
|
9285
|
-
// 1. Single line: Paste as it is
|
|
9286
|
-
// 2. Two lines: Add <br> between the lines
|
|
9287
|
-
// 3. 3 or More lines, For first and last line, paste as it is. For middle lines, wrap with DIV, and add BR if it is empty line
|
|
9288
|
-
if (lines.length == 2 && index == 0) {
|
|
9289
|
-
// 1 of 2 lines scenario, add BR
|
|
9290
|
-
fragment.appendChild(textNode);
|
|
9291
|
-
fragment.appendChild(document.createElement('br'));
|
|
9292
|
-
}
|
|
9293
|
-
else if (index > 0 && index < lines.length - 1) {
|
|
9294
|
-
// Middle line of >=3 lines scenario, wrap with DIV
|
|
9295
|
-
fragment.appendChild((0, roosterjs_content_model_dom_1.wrap)(document, line == '' ? document.createElement('br') : textNode, 'div'));
|
|
9296
|
-
}
|
|
9297
|
-
else {
|
|
9298
|
-
// All others, paste as it is
|
|
9299
|
-
fragment.appendChild(textNode);
|
|
9300
|
-
}
|
|
9301
|
-
});
|
|
9302
|
-
}
|
|
9303
|
-
return fragment;
|
|
9304
|
-
}
|
|
9305
|
-
exports.createPasteFragment = createPasteFragment;
|
|
9306
|
-
/**
|
|
9307
|
-
* Transform \t characters into EN SPACE characters
|
|
9308
|
-
* @param input string NOT containing \n characters
|
|
9309
|
-
* @example t("\thello", 2) => "    hello"
|
|
9310
|
-
*/
|
|
9311
|
-
function transformTabCharacters(input, initialOffset) {
|
|
9312
|
-
if (initialOffset === void 0) { initialOffset = 0; }
|
|
9313
|
-
var line = input;
|
|
9314
|
-
var tIndex;
|
|
9315
|
-
while ((tIndex = line.indexOf('\t')) != -1) {
|
|
9316
|
-
var lineBefore = line.slice(0, tIndex);
|
|
9317
|
-
var lineAfter = line.slice(tIndex + 1);
|
|
9318
|
-
var tabCount = TAB_SPACES - ((lineBefore.length + initialOffset) % TAB_SPACES);
|
|
9319
|
-
var tabStr = Array(tabCount).fill(ENSP_HTML).join('');
|
|
9320
|
-
line = lineBefore + tabStr + lineAfter;
|
|
9321
|
-
}
|
|
9322
|
-
return line;
|
|
9323
|
-
}
|
|
9324
|
-
|
|
9325
|
-
|
|
9326
9328
|
/***/ },
|
|
9327
9329
|
|
|
9328
9330
|
/***/ "./packages/roosterjs-content-model-core/lib/command/paste/generatePasteOptionFromPlugins.ts"
|
|
@@ -9389,13 +9391,15 @@ var BlackColor = 'rgb(0,0,0)';
|
|
|
9389
9391
|
*/
|
|
9390
9392
|
function mergePasteContent(editor, eventResult, isFirstPaste) {
|
|
9391
9393
|
var fragment = eventResult.fragment, domToModelOption = eventResult.domToModelOption, customizedMerge = eventResult.customizedMerge, pasteType = eventResult.pasteType, clipboardData = eventResult.clipboardData, containsBlockElements = eventResult.containsBlockElements;
|
|
9394
|
+
var isImageOnly = isImageOnlyFragment(fragment);
|
|
9395
|
+
var shouldScrollCaretIntoView = !isImageOnly;
|
|
9392
9396
|
editor.formatContentModel(function (model, context) {
|
|
9393
9397
|
if (!isFirstPaste && clipboardData.modelBeforePaste) {
|
|
9394
9398
|
var clonedModel = (0, roosterjs_content_model_dom_1.cloneModelForPaste)(clipboardData.modelBeforePaste);
|
|
9395
9399
|
model.blocks = clonedModel.blocks;
|
|
9396
9400
|
}
|
|
9397
|
-
var domToModelContext = (0, createDomToModelContextForSanitizing_1.createDomToModelContextForSanitizing)(editor.getDocument(), undefined /*defaultFormat*/, editor.getEnvironment().domToModelSettings.customized, domToModelOption, editor.getDOMHelper());
|
|
9398
|
-
domToModelContext.segmentFormat = getSegmentFormatForPaste(model, pasteType);
|
|
9401
|
+
var domToModelContext = (0, createDomToModelContextForSanitizing_1.createDomToModelContextForSanitizing)(editor.getDocument(), undefined /*defaultFormat*/, editor.getEnvironment().domToModelSettings.customized, domToModelOption, editor.getDOMHelper(), editor.getExperimentalFeatures());
|
|
9402
|
+
domToModelContext.segmentFormat = getSegmentFormatForPaste(model, pasteType, isImageOnly);
|
|
9399
9403
|
var pasteModel = (0, roosterjs_content_model_dom_1.domToContentModel)(fragment, domToModelContext);
|
|
9400
9404
|
var mergeOption = {
|
|
9401
9405
|
mergeFormat: pasteType == 'mergeFormat' ? 'keepSourceEmphasisFormat' : 'none',
|
|
@@ -9414,19 +9418,21 @@ function mergePasteContent(editor, eventResult, isFirstPaste) {
|
|
|
9414
9418
|
}, {
|
|
9415
9419
|
changeSource: roosterjs_content_model_dom_1.ChangeSource.Paste,
|
|
9416
9420
|
getChangeData: function () { return clipboardData; },
|
|
9417
|
-
scrollCaretIntoView:
|
|
9421
|
+
scrollCaretIntoView: shouldScrollCaretIntoView,
|
|
9418
9422
|
apiName: 'paste',
|
|
9419
9423
|
});
|
|
9420
9424
|
}
|
|
9421
9425
|
exports.mergePasteContent = mergePasteContent;
|
|
9422
|
-
function getSegmentFormatForPaste(model, pasteType) {
|
|
9426
|
+
function getSegmentFormatForPaste(model, pasteType, isImageOnly) {
|
|
9423
9427
|
var selectedSegment = (0, roosterjs_content_model_dom_1.getSelectedSegments)(model, true /*includeFormatHolder*/)[0];
|
|
9424
9428
|
if (selectedSegment) {
|
|
9425
9429
|
var result = (0, roosterjs_content_model_dom_1.getSegmentTextFormat)(selectedSegment);
|
|
9426
|
-
if (pasteType == 'normal') {
|
|
9430
|
+
if (pasteType == 'normal' && !isImageOnly) {
|
|
9427
9431
|
// When using normal paste (Keep source formatting) set the default text color to black when creating the
|
|
9428
9432
|
// Model from the clipboard content, so the elements that do not contain any text color in their style
|
|
9429
9433
|
// Are set to black. Otherwise, These segments would get the selected segments format or the default text set in the content.
|
|
9434
|
+
// Skip this when pasting an image only, since there is no text to apply the default color to, and forcing
|
|
9435
|
+
// black here would incorrectly become the pending format used for text typed right after the pasted image.
|
|
9430
9436
|
result.textColor = BlackColor;
|
|
9431
9437
|
}
|
|
9432
9438
|
return result;
|
|
@@ -9455,6 +9461,13 @@ function getLastSegmentFormat(pasteModel) {
|
|
|
9455
9461
|
}
|
|
9456
9462
|
return {};
|
|
9457
9463
|
}
|
|
9464
|
+
function isImageOnlyFragment(pasteFragment) {
|
|
9465
|
+
var _a;
|
|
9466
|
+
var images = pasteFragment.querySelectorAll('img');
|
|
9467
|
+
return (images.length === 1 &&
|
|
9468
|
+
pasteFragment.childNodes.length === 1 &&
|
|
9469
|
+
((_a = pasteFragment.textContent) === null || _a === void 0 ? void 0 : _a.trim()) === '');
|
|
9470
|
+
}
|
|
9458
9471
|
|
|
9459
9472
|
|
|
9460
9473
|
/***/ },
|
|
@@ -9472,7 +9485,6 @@ exports.paste = void 0;
|
|
|
9472
9485
|
var cleanHtmlComments_1 = __webpack_require__(/*! ./cleanHtmlComments */ "./packages/roosterjs-content-model-core/lib/command/paste/cleanHtmlComments.ts");
|
|
9473
9486
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
9474
9487
|
var convertInlineCss_1 = __webpack_require__(/*! ../createModelFromHtml/convertInlineCss */ "./packages/roosterjs-content-model-core/lib/command/createModelFromHtml/convertInlineCss.ts");
|
|
9475
|
-
var createPasteFragment_1 = __webpack_require__(/*! ./createPasteFragment */ "./packages/roosterjs-content-model-core/lib/command/paste/createPasteFragment.ts");
|
|
9476
9488
|
var generatePasteOptionFromPlugins_1 = __webpack_require__(/*! ./generatePasteOptionFromPlugins */ "./packages/roosterjs-content-model-core/lib/command/paste/generatePasteOptionFromPlugins.ts");
|
|
9477
9489
|
var mergePasteContent_1 = __webpack_require__(/*! ./mergePasteContent */ "./packages/roosterjs-content-model-core/lib/command/paste/mergePasteContent.ts");
|
|
9478
9490
|
var retrieveHtmlInfo_1 = __webpack_require__(/*! ./retrieveHtmlInfo */ "./packages/roosterjs-content-model-core/lib/command/paste/retrieveHtmlInfo.ts");
|
|
@@ -9500,13 +9512,13 @@ function paste(editor, clipboardData, pasteTypeOrGetter) {
|
|
|
9500
9512
|
clipboardData.rawHtml = (0, cleanHtmlComments_1.cleanHtmlComments)(clipboardData.rawHtml);
|
|
9501
9513
|
}
|
|
9502
9514
|
var doc = createDOMFromHtml(clipboardData.rawHtml, domCreator);
|
|
9503
|
-
var pasteType = typeof pasteTypeOrGetter == 'function'
|
|
9504
|
-
? pasteTypeOrGetter(doc, clipboardData)
|
|
9505
|
-
: pasteTypeOrGetter;
|
|
9506
9515
|
// 2. Handle HTML from clipboard
|
|
9507
9516
|
var htmlFromClipboard = (0, retrieveHtmlInfo_1.retrieveHtmlInfo)(doc, clipboardData);
|
|
9517
|
+
var pasteType = typeof pasteTypeOrGetter == 'function'
|
|
9518
|
+
? pasteTypeOrGetter(doc, clipboardData, editor.getEnvironment(), htmlFromClipboard.metadata)
|
|
9519
|
+
: pasteTypeOrGetter;
|
|
9508
9520
|
// 3. Create target fragment
|
|
9509
|
-
var sourceFragment = (0,
|
|
9521
|
+
var sourceFragment = (0, roosterjs_content_model_dom_1.createPasteFragment)(editor.getDocument(), clipboardData, pasteType, (_a = (clipboardData.rawHtml == clipboardData.html
|
|
9510
9522
|
? doc
|
|
9511
9523
|
: createDOMFromHtml(clipboardData.html, domCreator))) === null || _a === void 0 ? void 0 : _a.body);
|
|
9512
9524
|
// 4. Trigger BeforePaste event to allow plugins modify the fragment
|
|
@@ -10289,7 +10301,7 @@ var formatContentModel = function (core, formatter, options, domToModelOptions)
|
|
|
10289
10301
|
try {
|
|
10290
10302
|
handleImages(core, context);
|
|
10291
10303
|
selection =
|
|
10292
|
-
(_a = core.api.setContentModel(core, model, hasFocus ? undefined : { ignoreSelection: true }, // If editor did not have focus before format, do not set focus after format
|
|
10304
|
+
(_a = core.api.setContentModel(core, model, hasFocus && !(options === null || options === void 0 ? void 0 : options.skipDOMSelection) ? undefined : { ignoreSelection: true }, // If editor did not have focus before format, do not set focus after format
|
|
10293
10305
|
onNodeCreated)) !== null && _a !== void 0 ? _a : undefined;
|
|
10294
10306
|
handlePendingFormat(core, context, selection);
|
|
10295
10307
|
if (scroll && ((selection === null || selection === void 0 ? void 0 : selection.type) == 'range' || (selection === null || selection === void 0 ? void 0 : selection.type) == 'image')) {
|
|
@@ -11148,10 +11160,13 @@ function setRangeSelection(core, element, collapse) {
|
|
|
11148
11160
|
"use strict";
|
|
11149
11161
|
|
|
11150
11162
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
11151
|
-
exports.setTableCellsStyle = exports.removeTableCellsStyle = void 0;
|
|
11163
|
+
exports.setTableCellsStyle = exports.removeTableCellsStyle = exports.DOM_SELECTION_CSS_KEY = void 0;
|
|
11152
11164
|
var ensureUniqueId_1 = __webpack_require__(/*! ../setEditorStyle/ensureUniqueId */ "./packages/roosterjs-content-model-core/lib/coreApi/setEditorStyle/ensureUniqueId.ts");
|
|
11153
11165
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
11154
|
-
|
|
11166
|
+
/**
|
|
11167
|
+
* @internal
|
|
11168
|
+
*/
|
|
11169
|
+
exports.DOM_SELECTION_CSS_KEY = '_DOMSelection';
|
|
11155
11170
|
var TABLE_ID = 'table';
|
|
11156
11171
|
/**
|
|
11157
11172
|
* @internal
|
|
@@ -11159,7 +11174,7 @@ var TABLE_ID = 'table';
|
|
|
11159
11174
|
* @param core The EditorCore object
|
|
11160
11175
|
*/
|
|
11161
11176
|
function removeTableCellsStyle(core) {
|
|
11162
|
-
core.api.setEditorStyle(core, DOM_SELECTION_CSS_KEY, '');
|
|
11177
|
+
core.api.setEditorStyle(core, exports.DOM_SELECTION_CSS_KEY, '');
|
|
11163
11178
|
}
|
|
11164
11179
|
exports.removeTableCellsStyle = removeTableCellsStyle;
|
|
11165
11180
|
/**
|
|
@@ -11184,7 +11199,7 @@ function setTableCellsStyle(core, table, parsedTable, firstCell, lastCell) {
|
|
|
11184
11199
|
lastCell.col == ((_b = (_a = parsedTable[lastCell.row]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) - 1
|
|
11185
11200
|
? [tableSelector, tableSelector + " *"]
|
|
11186
11201
|
: buildTableSelectors(parsedTable, tableSelector, table, firstCell, lastCell);
|
|
11187
|
-
core.api.setEditorStyle(core, DOM_SELECTION_CSS_KEY, "background-color:" + tableSelectionColor + "!important;", tableSelectors);
|
|
11202
|
+
core.api.setEditorStyle(core, exports.DOM_SELECTION_CSS_KEY, "background-color:" + tableSelectionColor + "!important;", tableSelectors);
|
|
11188
11203
|
}
|
|
11189
11204
|
exports.setTableCellsStyle = setTableCellsStyle;
|
|
11190
11205
|
/**
|
|
@@ -11243,16 +11258,19 @@ function buildTableSelectors(parsedTable, tableSelector, table, firstCell, lastC
|
|
|
11243
11258
|
"use strict";
|
|
11244
11259
|
|
|
11245
11260
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
11246
|
-
exports.toggleCaret = void 0;
|
|
11261
|
+
exports.toggleCaret = exports.HIDE_CURSOR_CSS_KEY = void 0;
|
|
11247
11262
|
var CARET_CSS_RULE = 'caret-color: transparent';
|
|
11248
|
-
|
|
11263
|
+
/**
|
|
11264
|
+
* @internal
|
|
11265
|
+
*/
|
|
11266
|
+
exports.HIDE_CURSOR_CSS_KEY = '_DOMSelectionHideCursor';
|
|
11249
11267
|
/**
|
|
11250
11268
|
* @internal Show/Hide caret in editor
|
|
11251
11269
|
* @param core The editor core
|
|
11252
11270
|
* @param isHiding True to hide caret, false to show caret
|
|
11253
11271
|
*/
|
|
11254
11272
|
function toggleCaret(core, isHiding) {
|
|
11255
|
-
core.api.setEditorStyle(core, HIDE_CURSOR_CSS_KEY, isHiding ? CARET_CSS_RULE : null);
|
|
11273
|
+
core.api.setEditorStyle(core, exports.HIDE_CURSOR_CSS_KEY, isHiding ? CARET_CSS_RULE : null);
|
|
11256
11274
|
}
|
|
11257
11275
|
exports.toggleCaret = toggleCaret;
|
|
11258
11276
|
|
|
@@ -14484,6 +14502,8 @@ var findTableCellElement_1 = __webpack_require__(/*! ../../coreApi/setDOMSelecti
|
|
|
14484
14502
|
var isSingleImageInSelection_1 = __webpack_require__(/*! ./isSingleImageInSelection */ "./packages/roosterjs-content-model-core/lib/corePlugin/selection/isSingleImageInSelection.ts");
|
|
14485
14503
|
var normalizePos_1 = __webpack_require__(/*! ./normalizePos */ "./packages/roosterjs-content-model-core/lib/corePlugin/selection/normalizePos.ts");
|
|
14486
14504
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
14505
|
+
var setTableCellsStyle_1 = __webpack_require__(/*! ../../coreApi/setDOMSelection/setTableCellsStyle */ "./packages/roosterjs-content-model-core/lib/coreApi/setDOMSelection/setTableCellsStyle.ts");
|
|
14506
|
+
var toggleCaret_1 = __webpack_require__(/*! ../../coreApi/setDOMSelection/toggleCaret */ "./packages/roosterjs-content-model-core/lib/coreApi/setDOMSelection/toggleCaret.ts");
|
|
14487
14507
|
var MouseLeftButton = 0;
|
|
14488
14508
|
var MouseRightButton = 2;
|
|
14489
14509
|
var Up = 'ArrowUp';
|
|
@@ -14491,6 +14511,7 @@ var Down = 'ArrowDown';
|
|
|
14491
14511
|
var Left = 'ArrowLeft';
|
|
14492
14512
|
var Right = 'ArrowRight';
|
|
14493
14513
|
var Tab = 'Tab';
|
|
14514
|
+
var F10 = 'F10';
|
|
14494
14515
|
/**
|
|
14495
14516
|
* @internal
|
|
14496
14517
|
*/
|
|
@@ -14507,8 +14528,8 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14507
14528
|
this.disposer = null;
|
|
14508
14529
|
this.logicalRootDisposer = null;
|
|
14509
14530
|
this.isSafari = false;
|
|
14510
|
-
this.isMac = false;
|
|
14511
14531
|
this.scrollTopCache = 0;
|
|
14532
|
+
this.isInsideSelection = false;
|
|
14512
14533
|
this.onMouseMove = function (event) {
|
|
14513
14534
|
var _a, _b, _c;
|
|
14514
14535
|
if (_this.editor && _this.state.tableSelection) {
|
|
@@ -14559,7 +14580,7 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14559
14580
|
// MacOS will not create a mouseUp event if contextMenu event is not prevent defaulted.
|
|
14560
14581
|
// Make sure we capture image target even if image is wrapped
|
|
14561
14582
|
this.getContainedTargetImage = function (event, previousSelection) {
|
|
14562
|
-
if (!
|
|
14583
|
+
if (!previousSelection || previousSelection.type !== 'image') {
|
|
14563
14584
|
return null;
|
|
14564
14585
|
}
|
|
14565
14586
|
var target = event.target;
|
|
@@ -14599,11 +14620,11 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14599
14620
|
if (((_a = _this.editor) === null || _a === void 0 ? void 0 : _a.hasFocus()) && !_this.editor.isInShadowEdit()) {
|
|
14600
14621
|
var newSelection = _this.editor.getDOMSelection();
|
|
14601
14622
|
var domHelper = _this.editor.getDOMHelper();
|
|
14602
|
-
//If
|
|
14623
|
+
// If an image selection changed to a wider range due to a keyboard event, we should update the selection
|
|
14603
14624
|
var range = domHelper.getSelectionRange();
|
|
14604
14625
|
if (range) {
|
|
14605
14626
|
var image = (0, isSingleImageInSelection_1.isSingleImageInSelection)(range);
|
|
14606
|
-
if ((newSelection === null || newSelection === void 0 ? void 0 : newSelection.type) == 'image' && !image) {
|
|
14627
|
+
if ((newSelection === null || newSelection === void 0 ? void 0 : newSelection.type) == 'image' && !image && !range.collapsed) {
|
|
14607
14628
|
var sel = (_b = _this.editor.getDocument().defaultView) === null || _b === void 0 ? void 0 : _b.getSelection();
|
|
14608
14629
|
var isReverted = sel
|
|
14609
14630
|
? sel.focusNode != range.endContainer || sel.focusOffset != range.endOffset
|
|
@@ -14662,7 +14683,6 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14662
14683
|
var env = this.editor.getEnvironment();
|
|
14663
14684
|
var document = this.editor.getDocument();
|
|
14664
14685
|
this.isSafari = !!env.isSafari;
|
|
14665
|
-
this.isMac = !!env.isMac;
|
|
14666
14686
|
document.addEventListener('selectionchange', this.onSelectionChange);
|
|
14667
14687
|
if (this.isSafari) {
|
|
14668
14688
|
this.disposer = this.editor.attachDomEvent({
|
|
@@ -14709,6 +14729,10 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14709
14729
|
this.onKeyDown(this.editor, event.rawEvent);
|
|
14710
14730
|
break;
|
|
14711
14731
|
case 'contentChanged':
|
|
14732
|
+
if (event.source == roosterjs_content_model_dom_1.ChangeSource.Drop && this.isInsideSelection) {
|
|
14733
|
+
this.setDOMSelection(null /* DOMSelection */, null /* tableSelection */);
|
|
14734
|
+
this.isInsideSelection = false;
|
|
14735
|
+
}
|
|
14712
14736
|
this.state.tableSelection = null;
|
|
14713
14737
|
break;
|
|
14714
14738
|
case 'scroll':
|
|
@@ -14756,14 +14780,22 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14756
14780
|
return;
|
|
14757
14781
|
}
|
|
14758
14782
|
// Table selection
|
|
14783
|
+
var target = rawEvent.target;
|
|
14784
|
+
var tableSelection = target
|
|
14785
|
+
? this.parseTableSelection(target, target, editor.getDOMHelper())
|
|
14786
|
+
: null;
|
|
14787
|
+
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'table' &&
|
|
14788
|
+
tableSelection &&
|
|
14789
|
+
this.isInsideTableSelection(selection, tableSelection) &&
|
|
14790
|
+
rawEvent.detail == 1) {
|
|
14791
|
+
this.isInsideSelection = true;
|
|
14792
|
+
this.setTableDragSelection(editor, rawEvent);
|
|
14793
|
+
return;
|
|
14794
|
+
}
|
|
14759
14795
|
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'table' && rawEvent.button == MouseLeftButton) {
|
|
14760
14796
|
this.setDOMSelection(null /*domSelection*/, null /*tableSelection*/);
|
|
14761
14797
|
}
|
|
14762
|
-
|
|
14763
|
-
var target = rawEvent.target;
|
|
14764
|
-
if (target &&
|
|
14765
|
-
rawEvent.button == MouseLeftButton &&
|
|
14766
|
-
(tableSelection = this.parseTableSelection(target, target, editor.getDOMHelper()))) {
|
|
14798
|
+
if (target && rawEvent.button == MouseLeftButton && tableSelection) {
|
|
14767
14799
|
this.state.tableSelection = tableSelection;
|
|
14768
14800
|
if (rawEvent.detail >= 3) {
|
|
14769
14801
|
var lastCo = (0, findCoordinate_1.findCoordinate)(tableSelection.parsedTable, rawEvent.target, editor.getDOMHelper());
|
|
@@ -14783,6 +14815,10 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14783
14815
|
}
|
|
14784
14816
|
};
|
|
14785
14817
|
SelectionPlugin.prototype.onMouseUp = function () {
|
|
14818
|
+
if (this.isInsideSelection) {
|
|
14819
|
+
this.setDOMSelection(null /*domSelection*/, null /*tableSelection*/);
|
|
14820
|
+
this.isInsideSelection = false;
|
|
14821
|
+
}
|
|
14786
14822
|
this.detachMouseEvent();
|
|
14787
14823
|
};
|
|
14788
14824
|
SelectionPlugin.prototype.onKeyDown = function (editor, rawEvent) {
|
|
@@ -14815,6 +14851,7 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14815
14851
|
}
|
|
14816
14852
|
break;
|
|
14817
14853
|
case 'range':
|
|
14854
|
+
var image = void 0;
|
|
14818
14855
|
if (key == Up || key == Down || key == Left || key == Right || key == Tab) {
|
|
14819
14856
|
var start = selection.range.startContainer;
|
|
14820
14857
|
this.state.tableSelection = this.parseTableSelection(start, start, editor.getDOMHelper());
|
|
@@ -14830,6 +14867,14 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14830
14867
|
}
|
|
14831
14868
|
}
|
|
14832
14869
|
}
|
|
14870
|
+
else if (key == F10 &&
|
|
14871
|
+
rawEvent.shiftKey &&
|
|
14872
|
+
(image = (0, isSingleImageInSelection_1.isSingleImageInSelection)(selection.range))) {
|
|
14873
|
+
this.setDOMSelection({
|
|
14874
|
+
type: 'image',
|
|
14875
|
+
image: image,
|
|
14876
|
+
}, null /* tableSelection */);
|
|
14877
|
+
}
|
|
14833
14878
|
break;
|
|
14834
14879
|
case 'table':
|
|
14835
14880
|
// After a content change event is handled tableSelection state is reset to null
|
|
@@ -14968,6 +15013,30 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14968
15013
|
}
|
|
14969
15014
|
}
|
|
14970
15015
|
};
|
|
15016
|
+
SelectionPlugin.prototype.isInsideTableSelection = function (prevSelection, tableSelection) {
|
|
15017
|
+
var selectedCell = tableSelection.firstCo;
|
|
15018
|
+
return (selectedCell.row >= prevSelection.firstRow &&
|
|
15019
|
+
selectedCell.row <= prevSelection.lastRow &&
|
|
15020
|
+
selectedCell.col >= prevSelection.firstColumn &&
|
|
15021
|
+
selectedCell.col <= prevSelection.lastColumn);
|
|
15022
|
+
};
|
|
15023
|
+
SelectionPlugin.prototype.setTableDragSelection = function (editor, rawEvent) {
|
|
15024
|
+
var doc = editor.getDocument();
|
|
15025
|
+
var cell = editor
|
|
15026
|
+
.getDOMHelper()
|
|
15027
|
+
.findClosestElementAncestor(rawEvent.target, 'td,th');
|
|
15028
|
+
if (cell) {
|
|
15029
|
+
// Hide the table cell selection styles (grey cell background applied by
|
|
15030
|
+
// setDOMSelection) and the native selection highlight so that only the
|
|
15031
|
+
// dragged content is visible while dragging. Also restore the caret which
|
|
15032
|
+
// is hidden while a table selection is active.
|
|
15033
|
+
editor.setEditorStyle(setTableCellsStyle_1.DOM_SELECTION_CSS_KEY, null /*cssRule*/);
|
|
15034
|
+
editor.setEditorStyle(toggleCaret_1.HIDE_CURSOR_CSS_KEY, null /*cssRule*/);
|
|
15035
|
+
var range = doc.createRange();
|
|
15036
|
+
range.selectNodeContents(cell);
|
|
15037
|
+
editor.getDOMHelper().setSelectionRange(range);
|
|
15038
|
+
}
|
|
15039
|
+
};
|
|
14971
15040
|
SelectionPlugin.prototype.getTextOffset = function (editor, range, td, isKeyUp) {
|
|
14972
15041
|
var doc = editor.getDocument();
|
|
14973
15042
|
var cursorRect = range
|
|
@@ -15973,6 +16042,13 @@ var Editor = /** @class */ (function () {
|
|
|
15973
16042
|
Editor.prototype.isExperimentalFeatureEnabled = function (featureName) {
|
|
15974
16043
|
return this.getCore().experimentalFeatures.indexOf(featureName) >= 0;
|
|
15975
16044
|
};
|
|
16045
|
+
/**
|
|
16046
|
+
* Get all experimental features enabled in this editor
|
|
16047
|
+
* @returns An array of experimental feature names
|
|
16048
|
+
* */
|
|
16049
|
+
Editor.prototype.getExperimentalFeatures = function () {
|
|
16050
|
+
return this.getCore().experimentalFeatures;
|
|
16051
|
+
};
|
|
15976
16052
|
/**
|
|
15977
16053
|
* @returns the current EditorCore object
|
|
15978
16054
|
* @throws a standard Error if there's no core object
|
|
@@ -17204,6 +17280,10 @@ exports.ChangeSource = {
|
|
|
17204
17280
|
* Content changed by paste
|
|
17205
17281
|
*/
|
|
17206
17282
|
Paste: 'Paste',
|
|
17283
|
+
/**
|
|
17284
|
+
* Content changed by auto markdown conversion
|
|
17285
|
+
*/
|
|
17286
|
+
AutoMarkdownConversion: 'AutoMarkdownConversion',
|
|
17207
17287
|
/**
|
|
17208
17288
|
* Content changed by setContent API
|
|
17209
17289
|
*/
|
|
@@ -17245,6 +17325,10 @@ exports.ChangeSource = {
|
|
|
17245
17325
|
* Content changed by replace
|
|
17246
17326
|
*/
|
|
17247
17327
|
Replace: 'Replace',
|
|
17328
|
+
/**
|
|
17329
|
+
* Content changed by dragging content out the editor
|
|
17330
|
+
*/
|
|
17331
|
+
DragOutOfEditor: 'DragOutOfEditor',
|
|
17248
17332
|
};
|
|
17249
17333
|
|
|
17250
17334
|
|
|
@@ -17733,6 +17817,7 @@ exports.defaultProcessorMap = {
|
|
|
17733
17817
|
h5: headingProcessor_1.headingProcessor,
|
|
17734
17818
|
h6: headingProcessor_1.headingProcessor,
|
|
17735
17819
|
hr: hrProcessor_1.hrProcessor,
|
|
17820
|
+
label: knownElementProcessor_1.knownElementProcessor,
|
|
17736
17821
|
li: listItemProcessor_1.listItemProcessor,
|
|
17737
17822
|
ol: listProcessor_1.listProcessor,
|
|
17738
17823
|
p: pProcessor_1.pProcessor,
|
|
@@ -19756,6 +19841,53 @@ function cacheGetEventData(event, key, getter) {
|
|
|
19756
19841
|
exports.cacheGetEventData = cacheGetEventData;
|
|
19757
19842
|
|
|
19758
19843
|
|
|
19844
|
+
/***/ },
|
|
19845
|
+
|
|
19846
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/event/createPasteFragment.ts"
|
|
19847
|
+
/*!****************************************************************************************!*\
|
|
19848
|
+
!*** ./packages/roosterjs-content-model-dom/lib/domUtils/event/createPasteFragment.ts ***!
|
|
19849
|
+
\****************************************************************************************/
|
|
19850
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
19851
|
+
|
|
19852
|
+
"use strict";
|
|
19853
|
+
|
|
19854
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
19855
|
+
exports.createPasteFragment = void 0;
|
|
19856
|
+
var moveChildNodes_1 = __webpack_require__(/*! ../moveChildNodes */ "./packages/roosterjs-content-model-dom/lib/domUtils/moveChildNodes.ts");
|
|
19857
|
+
var textToFragment_1 = __webpack_require__(/*! ../textToFragment */ "./packages/roosterjs-content-model-dom/lib/domUtils/textToFragment.ts");
|
|
19858
|
+
/**
|
|
19859
|
+
* Create a document fragment from clipboard content using the specified paste type
|
|
19860
|
+
* @param document The document used to create the fragment
|
|
19861
|
+
* @param clipboardData The clipboard data to convert
|
|
19862
|
+
* @param pasteType The paste type that determines which clipboard content to use
|
|
19863
|
+
* @param root The optional root element containing the parsed HTML content
|
|
19864
|
+
* @returns A document fragment containing the content to paste
|
|
19865
|
+
*/
|
|
19866
|
+
function createPasteFragment(document, clipboardData, pasteType, root) {
|
|
19867
|
+
if (!clipboardData.text && pasteType === 'asPlainText' && root) {
|
|
19868
|
+
clipboardData.text = root.textContent || clipboardData.text;
|
|
19869
|
+
}
|
|
19870
|
+
var imageDataUri = clipboardData.imageDataUri, text = clipboardData.text;
|
|
19871
|
+
var fragment = document.createDocumentFragment();
|
|
19872
|
+
if ((pasteType == 'asImage' && imageDataUri) ||
|
|
19873
|
+
(pasteType != 'asPlainText' && !text && imageDataUri)) {
|
|
19874
|
+
// Paste image
|
|
19875
|
+
var img = document.createElement('img');
|
|
19876
|
+
img.style.maxWidth = '100%';
|
|
19877
|
+
img.src = imageDataUri;
|
|
19878
|
+
fragment.appendChild(img);
|
|
19879
|
+
}
|
|
19880
|
+
else if (pasteType != 'asPlainText' && root) {
|
|
19881
|
+
(0, moveChildNodes_1.moveChildNodes)(fragment, root);
|
|
19882
|
+
}
|
|
19883
|
+
else if (text) {
|
|
19884
|
+
return (0, textToFragment_1.textToFragment)(text, document);
|
|
19885
|
+
}
|
|
19886
|
+
return fragment;
|
|
19887
|
+
}
|
|
19888
|
+
exports.createPasteFragment = createPasteFragment;
|
|
19889
|
+
|
|
19890
|
+
|
|
19759
19891
|
/***/ },
|
|
19760
19892
|
|
|
19761
19893
|
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/event/eventUtils.ts"
|
|
@@ -19932,14 +20064,14 @@ function getNodePositionFromEvent(doc, domHelper, x, y) {
|
|
|
19932
20064
|
// Firefox, Chrome, Edge, Safari, Opera
|
|
19933
20065
|
var pos = doc.caretPositionFromPoint(x, y);
|
|
19934
20066
|
if (pos && domHelper.isNodeInEditor(pos.offsetNode)) {
|
|
19935
|
-
return
|
|
20067
|
+
return normalizePosition(pos.offsetNode, pos.offset);
|
|
19936
20068
|
}
|
|
19937
20069
|
}
|
|
19938
20070
|
if (doc.caretRangeFromPoint) {
|
|
19939
20071
|
// Safari
|
|
19940
20072
|
var range = doc.caretRangeFromPoint(x, y);
|
|
19941
20073
|
if (range && domHelper.isNodeInEditor(range.startContainer)) {
|
|
19942
|
-
return
|
|
20074
|
+
return normalizePosition(range.startContainer, range.startOffset);
|
|
19943
20075
|
}
|
|
19944
20076
|
}
|
|
19945
20077
|
if (doc.elementFromPoint) {
|
|
@@ -19952,6 +20084,14 @@ function getNodePositionFromEvent(doc, domHelper, x, y) {
|
|
|
19952
20084
|
return null;
|
|
19953
20085
|
}
|
|
19954
20086
|
exports.getNodePositionFromEvent = getNodePositionFromEvent;
|
|
20087
|
+
function normalizePosition(node, offset) {
|
|
20088
|
+
var _a;
|
|
20089
|
+
// Safari hit-testing in tableMoverTest returns offset 1 after the lone BR of an empty block.
|
|
20090
|
+
var normalizedOffset = offset == 1 && node.childNodes.length == 1 && ((_a = node.firstChild) === null || _a === void 0 ? void 0 : _a.nodeName) == 'BR'
|
|
20091
|
+
? 0
|
|
20092
|
+
: offset;
|
|
20093
|
+
return { node: node, offset: normalizedOffset };
|
|
20094
|
+
}
|
|
19955
20095
|
|
|
19956
20096
|
|
|
19957
20097
|
/***/ },
|
|
@@ -21254,6 +21394,78 @@ function parseTableCells(table) {
|
|
|
21254
21394
|
exports.parseTableCells = parseTableCells;
|
|
21255
21395
|
|
|
21256
21396
|
|
|
21397
|
+
/***/ },
|
|
21398
|
+
|
|
21399
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/textToFragment.ts"
|
|
21400
|
+
/*!*****************************************************************************!*\
|
|
21401
|
+
!*** ./packages/roosterjs-content-model-dom/lib/domUtils/textToFragment.ts ***!
|
|
21402
|
+
\*****************************************************************************/
|
|
21403
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
21404
|
+
|
|
21405
|
+
"use strict";
|
|
21406
|
+
|
|
21407
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
21408
|
+
exports.textToFragment = void 0;
|
|
21409
|
+
var wrap_1 = __webpack_require__(/*! ./wrap */ "./packages/roosterjs-content-model-dom/lib/domUtils/wrap.ts");
|
|
21410
|
+
var NBSP_HTML = '\u00A0';
|
|
21411
|
+
var ENSP_HTML = '\u2002';
|
|
21412
|
+
var TAB_SPACES = 6;
|
|
21413
|
+
/**
|
|
21414
|
+
* @internal
|
|
21415
|
+
*/
|
|
21416
|
+
function textToFragment(text, doc) {
|
|
21417
|
+
var fragment = doc.createDocumentFragment();
|
|
21418
|
+
text.split('\n').forEach(function (line, index, lines) {
|
|
21419
|
+
line = line
|
|
21420
|
+
.replace(/^ /g, NBSP_HTML)
|
|
21421
|
+
.replace(/ $/g, NBSP_HTML)
|
|
21422
|
+
.replace(/\r/g, '')
|
|
21423
|
+
.replace(/ {2}/g, ' ' + NBSP_HTML);
|
|
21424
|
+
if (line.includes('\t')) {
|
|
21425
|
+
line = transformTabCharacters(line);
|
|
21426
|
+
}
|
|
21427
|
+
var textNode = doc.createTextNode(line);
|
|
21428
|
+
// There are 3 scenarios:
|
|
21429
|
+
// 1. Single line: Paste as it is
|
|
21430
|
+
// 2. Two lines: Add <br> between the lines
|
|
21431
|
+
// 3. 3 or More lines, For first and last line, paste as it is. For middle lines, wrap with DIV, and add BR if it is empty line
|
|
21432
|
+
if (lines.length == 2 && index == 0) {
|
|
21433
|
+
// 1 of 2 lines scenario, add BR
|
|
21434
|
+
fragment.appendChild(textNode);
|
|
21435
|
+
fragment.appendChild(doc.createElement('br'));
|
|
21436
|
+
}
|
|
21437
|
+
else if (index > 0 && index < lines.length - 1) {
|
|
21438
|
+
// Middle line of >=3 lines scenario, wrap with DIV
|
|
21439
|
+
fragment.appendChild((0, wrap_1.wrap)(doc, line == '' ? doc.createElement('br') : textNode, 'div'));
|
|
21440
|
+
}
|
|
21441
|
+
else {
|
|
21442
|
+
// All others, paste as it is
|
|
21443
|
+
fragment.appendChild(textNode);
|
|
21444
|
+
}
|
|
21445
|
+
});
|
|
21446
|
+
return fragment;
|
|
21447
|
+
}
|
|
21448
|
+
exports.textToFragment = textToFragment;
|
|
21449
|
+
/**
|
|
21450
|
+
* Transform \t characters into EN SPACE characters
|
|
21451
|
+
* @param input string NOT containing \n characters
|
|
21452
|
+
* @example t("\thello", 2) => "    hello"
|
|
21453
|
+
*/
|
|
21454
|
+
function transformTabCharacters(input, initialOffset) {
|
|
21455
|
+
if (initialOffset === void 0) { initialOffset = 0; }
|
|
21456
|
+
var line = input;
|
|
21457
|
+
var tIndex;
|
|
21458
|
+
while ((tIndex = line.indexOf('\t')) != -1) {
|
|
21459
|
+
var lineBefore = line.slice(0, tIndex);
|
|
21460
|
+
var lineAfter = line.slice(tIndex + 1);
|
|
21461
|
+
var tabCount = TAB_SPACES - ((lineBefore.length + initialOffset) % TAB_SPACES);
|
|
21462
|
+
var tabStr = Array(tabCount).fill(ENSP_HTML).join('');
|
|
21463
|
+
line = lineBefore + tabStr + lineAfter;
|
|
21464
|
+
}
|
|
21465
|
+
return line;
|
|
21466
|
+
}
|
|
21467
|
+
|
|
21468
|
+
|
|
21257
21469
|
/***/ },
|
|
21258
21470
|
|
|
21259
21471
|
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/toArray.ts"
|
|
@@ -23839,8 +24051,8 @@ exports.shouldSetValue = shouldSetValue;
|
|
|
23839
24051
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23840
24052
|
exports.createImage = exports.createText = exports.createTableCell = exports.createTable = exports.createSelectionMarker = exports.createParagraph = exports.createFormatContainer = exports.createListItem = exports.createBr = exports.isLinkUndeletable = exports.setLinkUndeletable = exports.scrollRectIntoView = 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.formatContainerProcessor = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
|
|
23841
24053
|
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.ParagraphFormats = exports.ListFormatsToMove = exports.ListFormatsToKeep = exports.ListFormats = exports.copyFormat = exports.setParagraphNotImplicit = exports.normalizeSegmentFormat = exports.mergeTextSegments = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = exports.unwrapBlock = exports.isGeneralSegment = exports.normalizeContentModel = exports.normalizeParagraph = exports.addTextSegment = exports.addLink = exports.addData = exports.addCode = exports.addBlock = exports.mutateSegment = exports.mutateSegments = exports.mutateBlock = exports.createTableRow = exports.createEmptyModel = exports.createListLevel = exports.createDivider = exports.createEntity = exports.createGeneralBlock = exports.createGeneralSegment = exports.createParagraphDecorator = exports.createContentModelDocument = void 0;
|
|
23842
|
-
exports.
|
|
23843
|
-
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 = void 0;
|
|
24054
|
+
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.cloneModelForPaste = 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.getRangesByText = exports.getImageState = exports.setImageState = exports.getParagraphMarker = exports.setParagraphMarker = exports.cacheGetEventData = exports.createPasteFragment = exports.extractClipboardItems = exports.normalizeFontFamily = exports.transformColor = exports.retrieveDocumentMetadata = exports.readFile = exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.getNodePositionFromEvent = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = exports.trimModelForSelection = void 0;
|
|
24055
|
+
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 = void 0;
|
|
23844
24056
|
var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
|
|
23845
24057
|
Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
|
|
23846
24058
|
var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
|
|
@@ -24040,6 +24252,8 @@ var normalizeFontFamily_1 = __webpack_require__(/*! ./domUtils/style/normalizeFo
|
|
|
24040
24252
|
Object.defineProperty(exports, "normalizeFontFamily", ({ enumerable: true, get: function () { return normalizeFontFamily_1.normalizeFontFamily; } }));
|
|
24041
24253
|
var extractClipboardItems_1 = __webpack_require__(/*! ./domUtils/event/extractClipboardItems */ "./packages/roosterjs-content-model-dom/lib/domUtils/event/extractClipboardItems.ts");
|
|
24042
24254
|
Object.defineProperty(exports, "extractClipboardItems", ({ enumerable: true, get: function () { return extractClipboardItems_1.extractClipboardItems; } }));
|
|
24255
|
+
var createPasteFragment_1 = __webpack_require__(/*! ./domUtils/event/createPasteFragment */ "./packages/roosterjs-content-model-dom/lib/domUtils/event/createPasteFragment.ts");
|
|
24256
|
+
Object.defineProperty(exports, "createPasteFragment", ({ enumerable: true, get: function () { return createPasteFragment_1.createPasteFragment; } }));
|
|
24043
24257
|
var cacheGetEventData_1 = __webpack_require__(/*! ./domUtils/event/cacheGetEventData */ "./packages/roosterjs-content-model-dom/lib/domUtils/event/cacheGetEventData.ts");
|
|
24044
24258
|
Object.defineProperty(exports, "cacheGetEventData", ({ enumerable: true, get: function () { return cacheGetEventData_1.cacheGetEventData; } }));
|
|
24045
24259
|
var paragraphMarker_1 = __webpack_require__(/*! ./domUtils/hiddenProperties/paragraphMarker */ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/paragraphMarker.ts");
|
|
@@ -26883,6 +27097,7 @@ var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.m
|
|
|
26883
27097
|
var addBlock_1 = __webpack_require__(/*! ../common/addBlock */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts");
|
|
26884
27098
|
var addSegment_1 = __webpack_require__(/*! ../common/addSegment */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addSegment.ts");
|
|
26885
27099
|
var applyTableFormat_1 = __webpack_require__(/*! ./applyTableFormat */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/applyTableFormat.ts");
|
|
27100
|
+
var createBr_1 = __webpack_require__(/*! ../creators/createBr */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts");
|
|
26886
27101
|
var createListItem_1 = __webpack_require__(/*! ../creators/createListItem */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createListItem.ts");
|
|
26887
27102
|
var createParagraph_1 = __webpack_require__(/*! ../creators/createParagraph */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts");
|
|
26888
27103
|
var createSelectionMarker_1 = __webpack_require__(/*! ../creators/createSelectionMarker */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createSelectionMarker.ts");
|
|
@@ -26905,11 +27120,14 @@ var KeysOfSegmentFormat = (0, getObjectKeys_1.getObjectKeys)(EmptySegmentFormat_
|
|
|
26905
27120
|
* @returns Insert point after merge, or null if there is no insert point
|
|
26906
27121
|
*/
|
|
26907
27122
|
function mergeModel(target, source, context, options) {
|
|
26908
|
-
var _a;
|
|
27123
|
+
var _a, _b;
|
|
26909
27124
|
var insertPosition = (_a = options === null || options === void 0 ? void 0 : options.insertPosition) !== null && _a !== void 0 ? _a : (0, deleteSelection_1.deleteSelection)(target, [], context).insertPoint;
|
|
26910
|
-
var
|
|
27125
|
+
var _c = options || {}, addParagraphAfterMergedContent = _c.addParagraphAfterMergedContent, mergeFormat = _c.mergeFormat, mergeParagraphAfterList = _c.mergeParagraphAfterList, mergeTable = _c.mergeTable;
|
|
27126
|
+
if (mergeParagraphAfterList && insertPosition && ((_b = source.blocks[0]) === null || _b === void 0 ? void 0 : _b.blockType) == 'Paragraph') {
|
|
27127
|
+
moveParagraphAfterListIntoList(insertPosition);
|
|
27128
|
+
}
|
|
26911
27129
|
if (addParagraphAfterMergedContent && !mergeTable) {
|
|
26912
|
-
var
|
|
27130
|
+
var _d = insertPosition || {}, paragraph = _d.paragraph, marker = _d.marker;
|
|
26913
27131
|
var newPara = (0, createParagraph_1.createParagraph)(false /* isImplicit */, paragraph === null || paragraph === void 0 ? void 0 : paragraph.format, marker === null || marker === void 0 ? void 0 : marker.format);
|
|
26914
27132
|
(0, addBlock_1.addBlock)(source, newPara);
|
|
26915
27133
|
}
|
|
@@ -26957,6 +27175,22 @@ function mergeModel(target, source, context, options) {
|
|
|
26957
27175
|
return insertPosition;
|
|
26958
27176
|
}
|
|
26959
27177
|
exports.mergeModel = mergeModel;
|
|
27178
|
+
function moveParagraphAfterListIntoList(insertPosition) {
|
|
27179
|
+
var paragraph = insertPosition.paragraph, path = insertPosition.path;
|
|
27180
|
+
var parent = path[0];
|
|
27181
|
+
var paragraphIndex = parent.blocks.indexOf(paragraph);
|
|
27182
|
+
var previousBlock = parent.blocks[paragraphIndex - 1];
|
|
27183
|
+
if (paragraph.segments.every(function (segment) { return segment.segmentType == 'SelectionMarker' || segment.segmentType == 'Br'; }) &&
|
|
27184
|
+
(previousBlock === null || previousBlock === void 0 ? void 0 : previousBlock.blockType) == 'BlockGroup' &&
|
|
27185
|
+
previousBlock.blockGroupType == 'ListItem') {
|
|
27186
|
+
var newListItem = (0, createListItem_1.createListItem)(previousBlock.levels, previousBlock.formatHolder.format);
|
|
27187
|
+
var paragraphAfterList = (0, createParagraph_1.createParagraph)(false, paragraph.format);
|
|
27188
|
+
(0, addBlock_1.addBlock)(newListItem, paragraph);
|
|
27189
|
+
paragraphAfterList.segments.push((0, createBr_1.createBr)());
|
|
27190
|
+
(0, mutate_1.mutateBlock)(parent).blocks.splice(paragraphIndex, 1, newListItem, paragraphAfterList);
|
|
27191
|
+
path.unshift(newListItem);
|
|
27192
|
+
}
|
|
27193
|
+
}
|
|
26960
27194
|
function mergeParagraph(markerPosition, newPara, mergeToCurrentParagraph, context, option) {
|
|
26961
27195
|
var paragraph = markerPosition.paragraph, marker = markerPosition.marker;
|
|
26962
27196
|
var newParagraph = mergeToCurrentParagraph
|
|
@@ -27013,6 +27247,11 @@ function mergeTables(markerPosition, newTable, source) {
|
|
|
27013
27247
|
var newTableRowCount = newTable.rows.length;
|
|
27014
27248
|
var lastTargetColIndex = getTargetColIndex(table, rowIndex, colIndex, newTableColCount);
|
|
27015
27249
|
var extraColsNeeded = lastTargetColIndex - table.rows[0].cells.length;
|
|
27250
|
+
newTable.rows.forEach(function (row) {
|
|
27251
|
+
row.cells.forEach(function (cell) {
|
|
27252
|
+
cell.spanAbove = false;
|
|
27253
|
+
});
|
|
27254
|
+
});
|
|
27016
27255
|
if (extraColsNeeded > 0) {
|
|
27017
27256
|
var currentColCount = table.rows[0].cells.length;
|
|
27018
27257
|
for (var col = 0; col < extraColsNeeded; col++) {
|
|
@@ -31044,9 +31283,9 @@ var MarkdownBlockGroupType = {
|
|
|
31044
31283
|
/**
|
|
31045
31284
|
* @internal
|
|
31046
31285
|
*/
|
|
31047
|
-
function createBlockGroupFromMarkdown(text, patternName, options, group) {
|
|
31286
|
+
function createBlockGroupFromMarkdown(text, patternName, options, group, list) {
|
|
31048
31287
|
if (MarkdownBlockGroupType[patternName] === 'ListItem') {
|
|
31049
|
-
return (0, createListFromMarkdown_1.createListFromMarkdown)(text, patternName === 'ordered_list' ? 'OL' : 'UL', options);
|
|
31288
|
+
return (0, createListFromMarkdown_1.createListFromMarkdown)(text, patternName === 'ordered_list' ? 'OL' : 'UL', options, list);
|
|
31050
31289
|
}
|
|
31051
31290
|
else {
|
|
31052
31291
|
return (0, createBlockQuoteFromMarkdown_1.createBlockQuoteFromMarkdown)(text, options, group);
|
|
@@ -31134,12 +31373,13 @@ var createParagraphFromMarkdown_1 = __webpack_require__(/*! ./createParagraphFro
|
|
|
31134
31373
|
/**
|
|
31135
31374
|
* @internal
|
|
31136
31375
|
*/
|
|
31137
|
-
function createListFromMarkdown(text, listType, options) {
|
|
31376
|
+
function createListFromMarkdown(text, listType, options, list) {
|
|
31138
31377
|
var marker = text.trim().split(' ')[0];
|
|
31139
31378
|
var isDummy = isDummyListItem(marker);
|
|
31379
|
+
var startNumber = listType === 'OL' && !list ? parseInt(marker, 10) : undefined;
|
|
31140
31380
|
var itemText = isDummy ? text : text.trim().substring(marker.length);
|
|
31141
31381
|
var paragraph = (0, createParagraphFromMarkdown_1.createParagraphFromMarkdown)(itemText.trim(), options);
|
|
31142
|
-
var levels = createLevels(text, listType, isDummy, options);
|
|
31382
|
+
var levels = createLevels(text, listType, isDummy, options, startNumber);
|
|
31143
31383
|
var listModel = (0, roosterjs_content_model_dom_1.createListItem)(levels);
|
|
31144
31384
|
if (options.direction) {
|
|
31145
31385
|
listModel.format.direction = options.direction;
|
|
@@ -31148,8 +31388,11 @@ function createListFromMarkdown(text, listType, options) {
|
|
|
31148
31388
|
return listModel;
|
|
31149
31389
|
}
|
|
31150
31390
|
exports.createListFromMarkdown = createListFromMarkdown;
|
|
31151
|
-
function createLevels(text, listType, isDummy, options) {
|
|
31391
|
+
function createLevels(text, listType, isDummy, options, startNumberOverride) {
|
|
31152
31392
|
var level = (0, roosterjs_content_model_dom_1.createListLevel)(listType, options.direction ? { direction: options.direction } : undefined);
|
|
31393
|
+
if (startNumberOverride) {
|
|
31394
|
+
level.format.startNumberOverride = startNumberOverride;
|
|
31395
|
+
}
|
|
31153
31396
|
if (isDummy) {
|
|
31154
31397
|
level.format.displayForDummyItem = 'block';
|
|
31155
31398
|
}
|
|
@@ -31438,7 +31681,7 @@ function addMarkdownBlockToModel(model, blockType, markdown, patternName, markdo
|
|
|
31438
31681
|
model.blocks.push(divider);
|
|
31439
31682
|
break;
|
|
31440
31683
|
case 'BlockGroup':
|
|
31441
|
-
var blockGroup = (0, createBlockGroupFromMarkdown_1.createBlockGroupFromMarkdown)(markdown, patternName, options, markdownContext.lastQuote);
|
|
31684
|
+
var blockGroup = (0, createBlockGroupFromMarkdown_1.createBlockGroupFromMarkdown)(markdown, patternName, options, markdownContext.lastQuote, markdownContext.lastList);
|
|
31442
31685
|
if (!markdownContext.lastQuote) {
|
|
31443
31686
|
model.blocks.push(blockGroup);
|
|
31444
31687
|
}
|
|
@@ -32281,7 +32524,11 @@ var MarkdownPastePlugin = /** @class */ (function () {
|
|
|
32281
32524
|
(0, isPastedContentMarkdown_1.isPastedContentMarkdown)(this.editor, clipboardData) &&
|
|
32282
32525
|
clipboardData.modelBeforePaste) {
|
|
32283
32526
|
var modelBeforePaste_1 = (0, roosterjs_content_model_dom_1.cloneModelForPaste)(clipboardData.modelBeforePaste);
|
|
32284
|
-
(0, roosterjs_content_model_dom_1.mergeModel)(modelBeforePaste_1, (0, convertMarkdownToContentModel_1.convertMarkdownToContentModel)(clipboardData.text, {
|
|
32527
|
+
(0, roosterjs_content_model_dom_1.mergeModel)(modelBeforePaste_1, (0, convertMarkdownToContentModel_1.convertMarkdownToContentModel)(clipboardData.text, {
|
|
32528
|
+
emptyLine: 'merge',
|
|
32529
|
+
}), undefined /*context*/, {
|
|
32530
|
+
mergeFormat: 'preferTarget',
|
|
32531
|
+
});
|
|
32285
32532
|
if (this.options.undoConversion) {
|
|
32286
32533
|
this.editor.takeSnapshot();
|
|
32287
32534
|
}
|
|
@@ -32290,6 +32537,7 @@ var MarkdownPastePlugin = /** @class */ (function () {
|
|
|
32290
32537
|
return true;
|
|
32291
32538
|
}, {
|
|
32292
32539
|
apiName: 'MarkdownConversion',
|
|
32540
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.AutoMarkdownConversion,
|
|
32293
32541
|
scrollCaretIntoView: true,
|
|
32294
32542
|
});
|
|
32295
32543
|
}
|
|
@@ -32334,7 +32582,7 @@ var BlockPatterns = [
|
|
|
32334
32582
|
/^\s*>\s.+/,
|
|
32335
32583
|
/^\s*[\*\-\+]\s.+/,
|
|
32336
32584
|
/^\s*\d+\.\s.+/,
|
|
32337
|
-
|
|
32585
|
+
/^---$/,
|
|
32338
32586
|
/^\s*\|.*\|\s*$/, // table row: "| a | b |"
|
|
32339
32587
|
];
|
|
32340
32588
|
// Inline markdown patterns. The text contains markdown if any of these match anywhere.
|
|
@@ -33871,10 +34119,14 @@ exports.CustomReplacePlugin = CustomReplacePlugin;
|
|
|
33871
34119
|
|
|
33872
34120
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
33873
34121
|
exports.DragAndDropPlugin = void 0;
|
|
33874
|
-
var
|
|
34122
|
+
var handleDroppedExternalContent_1 = __webpack_require__(/*! ./utils/handleDroppedExternalContent */ "./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/handleDroppedExternalContent.ts");
|
|
34123
|
+
var handleDroppedInternalContent_1 = __webpack_require__(/*! ./utils/handleDroppedInternalContent */ "./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/handleDroppedInternalContent.ts");
|
|
34124
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
34125
|
+
var reorderList_1 = __webpack_require__(/*! ./utils/reorderList */ "./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/reorderList.ts");
|
|
33875
34126
|
var DefaultOptions = {
|
|
33876
34127
|
forbiddenElements: ['iframe'],
|
|
33877
34128
|
};
|
|
34129
|
+
var DeleteByDragInputType = 'deleteByDrag';
|
|
33878
34130
|
/**
|
|
33879
34131
|
* DragAndDrop plugin, handles ContentChanged event when change source is "Drop"
|
|
33880
34132
|
* to sanitize dropped content, similar to how PastePlugin sanitizes pasted content.
|
|
@@ -33888,7 +34140,7 @@ var DragAndDropPlugin = /** @class */ (function () {
|
|
|
33888
34140
|
var _a;
|
|
33889
34141
|
this.editor = null;
|
|
33890
34142
|
this.forbiddenElements = [];
|
|
33891
|
-
this.
|
|
34143
|
+
this.internalDrag = false;
|
|
33892
34144
|
this.disposer = null;
|
|
33893
34145
|
this.forbiddenElements = (_a = options.forbiddenElements) !== null && _a !== void 0 ? _a : [];
|
|
33894
34146
|
}
|
|
@@ -33909,8 +34161,21 @@ var DragAndDropPlugin = /** @class */ (function () {
|
|
|
33909
34161
|
this.editor = editor;
|
|
33910
34162
|
this.disposer = editor.attachDomEvent({
|
|
33911
34163
|
dragstart: {
|
|
33912
|
-
beforeDispatch: function (
|
|
33913
|
-
_this.
|
|
34164
|
+
beforeDispatch: function (ev) {
|
|
34165
|
+
_this.internalDrag = true;
|
|
34166
|
+
if (_this.editor &&
|
|
34167
|
+
_this.editor.isExperimentalFeatureEnabled('HandleDropInternalContent')) {
|
|
34168
|
+
_this.adjustDraggingCursor(_this.editor, ev);
|
|
34169
|
+
}
|
|
34170
|
+
},
|
|
34171
|
+
},
|
|
34172
|
+
beforeinput: {
|
|
34173
|
+
beforeDispatch: function (event) {
|
|
34174
|
+
var ev = event;
|
|
34175
|
+
if (_this.internalDrag) {
|
|
34176
|
+
_this.handleDragOutOfTheEditor(editor, ev);
|
|
34177
|
+
_this.internalDrag = false;
|
|
34178
|
+
}
|
|
33914
34179
|
},
|
|
33915
34180
|
},
|
|
33916
34181
|
});
|
|
@@ -33926,8 +34191,8 @@ var DragAndDropPlugin = /** @class */ (function () {
|
|
|
33926
34191
|
this.disposer();
|
|
33927
34192
|
this.disposer = null;
|
|
33928
34193
|
}
|
|
33929
|
-
this.isInternalDragging = false;
|
|
33930
34194
|
this.forbiddenElements = [];
|
|
34195
|
+
this.internalDrag = false;
|
|
33931
34196
|
};
|
|
33932
34197
|
/**
|
|
33933
34198
|
* Core method for a plugin. Once an event happens in editor, editor will call this
|
|
@@ -33936,19 +34201,41 @@ var DragAndDropPlugin = /** @class */ (function () {
|
|
|
33936
34201
|
* @param event The event to handle:
|
|
33937
34202
|
*/
|
|
33938
34203
|
DragAndDropPlugin.prototype.onPluginEvent = function (event) {
|
|
33939
|
-
var _a;
|
|
33940
34204
|
if (this.editor && event.eventType == 'beforeDrop') {
|
|
33941
|
-
|
|
33942
|
-
|
|
34205
|
+
var dropEvent = event.rawEvent;
|
|
34206
|
+
if (this.internalDrag &&
|
|
34207
|
+
this.editor.isExperimentalFeatureEnabled('HandleDropInternalContent')) {
|
|
34208
|
+
(0, handleDroppedInternalContent_1.handleDroppedInternalContent)(this.editor, dropEvent);
|
|
33943
34209
|
}
|
|
33944
|
-
else {
|
|
33945
|
-
|
|
33946
|
-
var html = (_a = dropEvent.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData('text/html');
|
|
33947
|
-
if (html) {
|
|
33948
|
-
(0, handleDroppedContent_1.handleDroppedContent)(this.editor, dropEvent, html, this.forbiddenElements);
|
|
33949
|
-
}
|
|
34210
|
+
else if (!this.internalDrag) {
|
|
34211
|
+
(0, handleDroppedExternalContent_1.handleDroppedExternalContent)(this.editor, dropEvent, this.forbiddenElements);
|
|
33950
34212
|
}
|
|
33951
|
-
|
|
34213
|
+
this.internalDrag = false;
|
|
34214
|
+
}
|
|
34215
|
+
};
|
|
34216
|
+
DragAndDropPlugin.prototype.adjustDraggingCursor = function (editor, dragEvent) {
|
|
34217
|
+
var _a, _b;
|
|
34218
|
+
var selection = editor.getDOMSelection();
|
|
34219
|
+
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'table') {
|
|
34220
|
+
var doc = (_a = this.editor) === null || _a === void 0 ? void 0 : _a.getDocument();
|
|
34221
|
+
if (doc && dragEvent.dataTransfer) {
|
|
34222
|
+
var ghost_1 = doc.createElement('span');
|
|
34223
|
+
ghost_1.textContent = '|';
|
|
34224
|
+
doc.body.appendChild(ghost_1);
|
|
34225
|
+
dragEvent.dataTransfer.setDragImage(ghost_1, 0, 0);
|
|
34226
|
+
(_b = doc.defaultView) === null || _b === void 0 ? void 0 : _b.requestAnimationFrame(function () { return ghost_1.remove(); });
|
|
34227
|
+
}
|
|
34228
|
+
}
|
|
34229
|
+
};
|
|
34230
|
+
DragAndDropPlugin.prototype.handleDragOutOfTheEditor = function (editor, inputEvent) {
|
|
34231
|
+
if (inputEvent.inputType == DeleteByDragInputType) {
|
|
34232
|
+
inputEvent.preventDefault();
|
|
34233
|
+
editor.formatContentModel(function (model, context) {
|
|
34234
|
+
(0, roosterjs_content_model_dom_1.deleteSelection)(model, [reorderList_1.reorderList], context);
|
|
34235
|
+
return true;
|
|
34236
|
+
}, {
|
|
34237
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.DragOutOfEditor,
|
|
34238
|
+
});
|
|
33952
34239
|
}
|
|
33953
34240
|
};
|
|
33954
34241
|
return DragAndDropPlugin;
|
|
@@ -34002,47 +34289,186 @@ exports.cleanForbiddenElements = cleanForbiddenElements;
|
|
|
34002
34289
|
|
|
34003
34290
|
/***/ },
|
|
34004
34291
|
|
|
34005
|
-
/***/ "./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/
|
|
34006
|
-
|
|
34007
|
-
!*** ./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/
|
|
34008
|
-
|
|
34292
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/handleDroppedExternalContent.ts"
|
|
34293
|
+
/*!********************************************************************************************************!*\
|
|
34294
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/handleDroppedExternalContent.ts ***!
|
|
34295
|
+
\********************************************************************************************************/
|
|
34009
34296
|
(__unused_webpack_module, exports, __webpack_require__) {
|
|
34010
34297
|
|
|
34011
34298
|
"use strict";
|
|
34012
34299
|
|
|
34013
34300
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
34014
|
-
exports.
|
|
34301
|
+
exports.handleDroppedExternalContent = void 0;
|
|
34302
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
34015
34303
|
var cleanForbiddenElements_1 = __webpack_require__(/*! ./cleanForbiddenElements */ "./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/cleanForbiddenElements.ts");
|
|
34016
34304
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
34017
34305
|
/**
|
|
34018
34306
|
* @internal
|
|
34019
34307
|
* Handle dropped HTML content by inserting it at the drop position
|
|
34020
34308
|
*/
|
|
34021
|
-
function
|
|
34309
|
+
function handleDroppedExternalContent(editor, event, forbiddenElements) {
|
|
34310
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
34311
|
+
var items, doc, domPosition, droppedModel_1, range;
|
|
34312
|
+
return (0, tslib_1.__generator)(this, function (_a) {
|
|
34313
|
+
switch (_a.label) {
|
|
34314
|
+
case 0:
|
|
34315
|
+
items = getSupportedItems(event.dataTransfer);
|
|
34316
|
+
if (items.length == 0) {
|
|
34317
|
+
return [2 /*return*/];
|
|
34318
|
+
}
|
|
34319
|
+
doc = editor.getDocument();
|
|
34320
|
+
domPosition = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(doc, editor.getDOMHelper(), event.x, event.y);
|
|
34321
|
+
if (!domPosition) return [3 /*break*/, 2];
|
|
34322
|
+
event.preventDefault();
|
|
34323
|
+
event.stopPropagation();
|
|
34324
|
+
return [4 /*yield*/, getDroppedModel(editor, items, forbiddenElements)];
|
|
34325
|
+
case 1:
|
|
34326
|
+
droppedModel_1 = _a.sent();
|
|
34327
|
+
if (!droppedModel_1) {
|
|
34328
|
+
return [2 /*return*/];
|
|
34329
|
+
}
|
|
34330
|
+
range = doc.createRange();
|
|
34331
|
+
range.setStart(domPosition.node, domPosition.offset);
|
|
34332
|
+
range.collapse(true);
|
|
34333
|
+
editor.formatContentModel(function (model, context) {
|
|
34334
|
+
(0, roosterjs_content_model_dom_1.mergeModel)(model, droppedModel_1, context, {
|
|
34335
|
+
mergeParagraphAfterList: true,
|
|
34336
|
+
});
|
|
34337
|
+
return true;
|
|
34338
|
+
}, {
|
|
34339
|
+
selectionOverride: {
|
|
34340
|
+
type: 'range',
|
|
34341
|
+
range: range,
|
|
34342
|
+
isReverted: false,
|
|
34343
|
+
},
|
|
34344
|
+
});
|
|
34345
|
+
_a.label = 2;
|
|
34346
|
+
case 2: return [2 /*return*/];
|
|
34347
|
+
}
|
|
34348
|
+
});
|
|
34349
|
+
});
|
|
34350
|
+
}
|
|
34351
|
+
exports.handleDroppedExternalContent = handleDroppedExternalContent;
|
|
34352
|
+
function getDroppedModel(editor, items, forbiddenElements) {
|
|
34353
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
34354
|
+
var clipboardData, domCreator, doc, fragment;
|
|
34355
|
+
return (0, tslib_1.__generator)(this, function (_a) {
|
|
34356
|
+
switch (_a.label) {
|
|
34357
|
+
case 0: return [4 /*yield*/, (0, roosterjs_content_model_dom_1.extractClipboardItems)(items, undefined)];
|
|
34358
|
+
case 1:
|
|
34359
|
+
clipboardData = _a.sent();
|
|
34360
|
+
domCreator = editor.getDOMCreator();
|
|
34361
|
+
doc = clipboardData.rawHtml ? domCreator.htmlToDOM(clipboardData.rawHtml) : null;
|
|
34362
|
+
if (doc) {
|
|
34363
|
+
(0, cleanForbiddenElements_1.cleanForbiddenElements)(doc, forbiddenElements);
|
|
34364
|
+
}
|
|
34365
|
+
fragment = (0, roosterjs_content_model_dom_1.createPasteFragment)(editor.getDocument(), clipboardData, 'normal', doc === null || doc === void 0 ? void 0 : doc.body);
|
|
34366
|
+
return [2 /*return*/, (0, roosterjs_content_model_dom_1.domToContentModel)(fragment, (0, roosterjs_content_model_dom_1.createDomToModelContext)())];
|
|
34367
|
+
}
|
|
34368
|
+
});
|
|
34369
|
+
});
|
|
34370
|
+
}
|
|
34371
|
+
function getSupportedItems(dataTransfer) {
|
|
34372
|
+
var _a;
|
|
34373
|
+
var result = [];
|
|
34374
|
+
for (var i = 0; i < ((_a = dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.items.length) !== null && _a !== void 0 ? _a : 0); i++) {
|
|
34375
|
+
var item = dataTransfer.items[i];
|
|
34376
|
+
if ((item.kind == 'string' &&
|
|
34377
|
+
(item.type == 'text/html' ||
|
|
34378
|
+
item.type == 'text/plain' ||
|
|
34379
|
+
item.type == 'text/uri-list')) ||
|
|
34380
|
+
(item.kind == 'file' && item.type.indexOf('image/') == 0)) {
|
|
34381
|
+
result.push(item);
|
|
34382
|
+
}
|
|
34383
|
+
}
|
|
34384
|
+
return result;
|
|
34385
|
+
}
|
|
34386
|
+
|
|
34387
|
+
|
|
34388
|
+
/***/ },
|
|
34389
|
+
|
|
34390
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/handleDroppedInternalContent.ts"
|
|
34391
|
+
/*!********************************************************************************************************!*\
|
|
34392
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/handleDroppedInternalContent.ts ***!
|
|
34393
|
+
\********************************************************************************************************/
|
|
34394
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
34395
|
+
|
|
34396
|
+
"use strict";
|
|
34397
|
+
|
|
34398
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
34399
|
+
exports.handleDroppedInternalContent = void 0;
|
|
34400
|
+
var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
|
|
34401
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
34402
|
+
var reorderList_1 = __webpack_require__(/*! ./reorderList */ "./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/reorderList.ts");
|
|
34403
|
+
/**
|
|
34404
|
+
* @internal
|
|
34405
|
+
* Handle dropped internal HTML content by inserting it at the drop position
|
|
34406
|
+
*/
|
|
34407
|
+
function handleDroppedInternalContent(editor, event) {
|
|
34022
34408
|
var doc = editor.getDocument();
|
|
34023
34409
|
var domPosition = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(doc, editor.getDOMHelper(), event.x, event.y);
|
|
34024
|
-
|
|
34410
|
+
var selection = editor.getDOMSelection();
|
|
34411
|
+
if (domPosition && selection) {
|
|
34025
34412
|
event.preventDefault();
|
|
34026
34413
|
event.stopPropagation();
|
|
34027
|
-
|
|
34028
|
-
|
|
34029
|
-
|
|
34030
|
-
|
|
34031
|
-
|
|
34032
|
-
|
|
34033
|
-
|
|
34034
|
-
|
|
34035
|
-
|
|
34036
|
-
|
|
34037
|
-
|
|
34038
|
-
|
|
34039
|
-
|
|
34040
|
-
|
|
34041
|
-
|
|
34414
|
+
(0, roosterjs_content_model_api_1.formatInsertPointWithContentModel)(editor, domPosition, function (model, context, insertPoint) {
|
|
34415
|
+
if (insertPoint) {
|
|
34416
|
+
var cloneModel = (0, roosterjs_content_model_dom_1.cloneModelForPaste)(model);
|
|
34417
|
+
(0, roosterjs_content_model_dom_1.trimModelForSelection)(cloneModel, selection);
|
|
34418
|
+
if (!event.ctrlKey && !event.metaKey) {
|
|
34419
|
+
if ((0, roosterjs_content_model_dom_1.deleteSelection)(model, [reorderList_1.reorderList], context).deleteResult == 'range') {
|
|
34420
|
+
(0, roosterjs_content_model_dom_1.normalizeContentModel)(model);
|
|
34421
|
+
}
|
|
34422
|
+
}
|
|
34423
|
+
var startMarker = (0, roosterjs_content_model_dom_1.createSelectionMarker)(insertPoint.marker.format);
|
|
34424
|
+
var startParagraph = (0, roosterjs_content_model_dom_1.mutateBlock)(insertPoint.paragraph);
|
|
34425
|
+
var startIndex = startParagraph.segments.indexOf(insertPoint.marker);
|
|
34426
|
+
startParagraph.segments.splice(startIndex, 0, startMarker);
|
|
34427
|
+
var newInsertPoint = (0, roosterjs_content_model_dom_1.mergeModel)(model, cloneModel, context, {
|
|
34428
|
+
insertPosition: insertPoint,
|
|
34429
|
+
mergeParagraphAfterList: true,
|
|
34430
|
+
});
|
|
34431
|
+
if (newInsertPoint) {
|
|
34432
|
+
(0, roosterjs_content_model_dom_1.setSelection)(model, startMarker, newInsertPoint.marker);
|
|
34433
|
+
}
|
|
34434
|
+
}
|
|
34042
34435
|
});
|
|
34043
34436
|
}
|
|
34044
34437
|
}
|
|
34045
|
-
exports.
|
|
34438
|
+
exports.handleDroppedInternalContent = handleDroppedInternalContent;
|
|
34439
|
+
|
|
34440
|
+
|
|
34441
|
+
/***/ },
|
|
34442
|
+
|
|
34443
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/reorderList.ts"
|
|
34444
|
+
/*!***************************************************************************************!*\
|
|
34445
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/dragAndDrop/utils/reorderList.ts ***!
|
|
34446
|
+
\***************************************************************************************/
|
|
34447
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
34448
|
+
|
|
34449
|
+
"use strict";
|
|
34450
|
+
|
|
34451
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
34452
|
+
exports.reorderList = void 0;
|
|
34453
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
34454
|
+
var getListItemFromInsertPoint_1 = __webpack_require__(/*! ../../edit/utils/getListItemFromInsertPoint */ "./packages/roosterjs-content-model-plugins/lib/edit/utils/getListItemFromInsertPoint.ts");
|
|
34455
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
34456
|
+
/**
|
|
34457
|
+
* @internal
|
|
34458
|
+
*/
|
|
34459
|
+
var reorderList = function (context) {
|
|
34460
|
+
if (context.deleteResult != 'range') {
|
|
34461
|
+
return;
|
|
34462
|
+
}
|
|
34463
|
+
var paragraph = context.insertPoint.paragraph;
|
|
34464
|
+
var listItemAndParent = (0, getListItemFromInsertPoint_1.getListItemFromInsertPoint)(context.insertPoint);
|
|
34465
|
+
if (listItemAndParent) {
|
|
34466
|
+
var _a = (0, tslib_1.__read)(listItemAndParent, 1), item = _a[0];
|
|
34467
|
+
var mutableList = (0, roosterjs_content_model_dom_1.mutateBlock)(item);
|
|
34468
|
+
mutableList.blocks.splice(mutableList.blocks.indexOf(paragraph), mutableList.blocks.length);
|
|
34469
|
+
}
|
|
34470
|
+
};
|
|
34471
|
+
exports.reorderList = reorderList;
|
|
34046
34472
|
|
|
34047
34473
|
|
|
34048
34474
|
/***/ },
|
|
@@ -34328,6 +34754,9 @@ var deleteAllSegmentBefore = function (context) {
|
|
|
34328
34754
|
context.deleteResult = 'range';
|
|
34329
34755
|
}
|
|
34330
34756
|
}
|
|
34757
|
+
if (mutableParagraph.segments.length == 1 && mutableParagraph.segments[0] == marker) {
|
|
34758
|
+
mutableParagraph.segments.push((0, roosterjs_content_model_dom_1.createBr)(marker.format));
|
|
34759
|
+
}
|
|
34331
34760
|
};
|
|
34332
34761
|
exports.deleteAllSegmentBefore = deleteAllSegmentBefore;
|
|
34333
34762
|
|
|
@@ -34543,6 +34972,7 @@ var insertNewLine = function (quote, parent, quoteIndex, paragraph) {
|
|
|
34543
34972
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
34544
34973
|
exports.deleteList = void 0;
|
|
34545
34974
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
34975
|
+
var getListItemFromInsertPoint_1 = __webpack_require__(/*! ../utils/getListItemFromInsertPoint */ "./packages/roosterjs-content-model-plugins/lib/edit/utils/getListItemFromInsertPoint.ts");
|
|
34546
34976
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
34547
34977
|
/**
|
|
34548
34978
|
* @internal
|
|
@@ -34552,18 +34982,14 @@ var deleteList = function (context) {
|
|
|
34552
34982
|
if (context.deleteResult != 'notDeleted') {
|
|
34553
34983
|
return;
|
|
34554
34984
|
}
|
|
34555
|
-
var
|
|
34556
|
-
var
|
|
34557
|
-
|
|
34558
|
-
|
|
34559
|
-
if ((item === null || item === void 0 ? void 0 : item.blockGroupType) == 'ListItem' &&
|
|
34560
|
-
item.levels.length > 0 &&
|
|
34561
|
-
paragraph.segments[0] == marker &&
|
|
34562
|
-
parent) {
|
|
34985
|
+
var paragraph = context.insertPoint.paragraph;
|
|
34986
|
+
var listItemAndParent = (0, getListItemFromInsertPoint_1.getListItemFromInsertPoint)(context.insertPoint);
|
|
34987
|
+
if (listItemAndParent) {
|
|
34988
|
+
var _c = (0, tslib_1.__read)(listItemAndParent, 2), item = _c[0], parent_1 = _c[1];
|
|
34563
34989
|
var mutableList = (0, roosterjs_content_model_dom_1.mutateBlock)(item);
|
|
34564
34990
|
var lastLevel = mutableList.levels[mutableList.levels.length - 1];
|
|
34565
|
-
var listItemIndex =
|
|
34566
|
-
var previousItem =
|
|
34991
|
+
var listItemIndex = parent_1.blocks.indexOf(item);
|
|
34992
|
+
var previousItem = parent_1.blocks[listItemIndex - 1];
|
|
34567
34993
|
// 1. If the last level is dummy, just remove it (legacy behavior)
|
|
34568
34994
|
// 2. If focus is at the beginning of list item and previous block is a list item with the same level count,
|
|
34569
34995
|
// merge current list item into previous one
|
|
@@ -34579,7 +35005,7 @@ var deleteList = function (context) {
|
|
|
34579
35005
|
previousItem.levels.length == mutableList.levels.length) {
|
|
34580
35006
|
var mutablePreviousItem = (0, roosterjs_content_model_dom_1.mutateBlock)(previousItem);
|
|
34581
35007
|
(_a = mutablePreviousItem.blocks).push.apply(_a, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(mutableList.blocks), false));
|
|
34582
|
-
(0, roosterjs_content_model_dom_1.mutateBlock)(
|
|
35008
|
+
(0, roosterjs_content_model_dom_1.mutateBlock)(parent_1).blocks.splice(listItemIndex, 1);
|
|
34583
35009
|
context.deleteResult = 'range';
|
|
34584
35010
|
}
|
|
34585
35011
|
else {
|
|
@@ -34587,10 +35013,10 @@ var deleteList = function (context) {
|
|
|
34587
35013
|
if (mutableList.levels.length > 1) {
|
|
34588
35014
|
var newListItem = (0, roosterjs_content_model_dom_1.createListItem)(mutableList.levels.slice(0, -1), mutableList.formatHolder.format);
|
|
34589
35015
|
newListItem.blocks = removedBlocks.map(function (block) { return (0, roosterjs_content_model_dom_1.mutateBlock)(block); });
|
|
34590
|
-
(0, roosterjs_content_model_dom_1.mutateBlock)(
|
|
35016
|
+
(0, roosterjs_content_model_dom_1.mutateBlock)(parent_1).blocks.splice(listItemIndex + 1, 0, newListItem);
|
|
34591
35017
|
}
|
|
34592
35018
|
else {
|
|
34593
|
-
(_b = (0, roosterjs_content_model_dom_1.mutateBlock)(
|
|
35019
|
+
(_b = (0, roosterjs_content_model_dom_1.mutateBlock)(parent_1).blocks).splice.apply(_b, (0, tslib_1.__spreadArray)([listItemIndex + 1, 0], (0, tslib_1.__read)(removedBlocks), false));
|
|
34594
35020
|
}
|
|
34595
35021
|
context.deleteResult = 'range';
|
|
34596
35022
|
}
|
|
@@ -35055,6 +35481,11 @@ var handleEnterOnParagraph = function (formatsToPreserveOnMerge) { return functi
|
|
|
35055
35481
|
context.deleteResult = 'range';
|
|
35056
35482
|
context.lastParagraph = newPara;
|
|
35057
35483
|
context.insertPoint.paragraph = newPara;
|
|
35484
|
+
if (context.formatContext) {
|
|
35485
|
+
context.formatContext.announceData = {
|
|
35486
|
+
defaultStrings: 'newLineInserted',
|
|
35487
|
+
};
|
|
35488
|
+
}
|
|
35058
35489
|
}
|
|
35059
35490
|
}; };
|
|
35060
35491
|
exports.handleEnterOnParagraph = handleEnterOnParagraph;
|
|
@@ -35759,6 +36190,37 @@ function getLeafSiblingBlock(path, block, isNext) {
|
|
|
35759
36190
|
exports.getLeafSiblingBlock = getLeafSiblingBlock;
|
|
35760
36191
|
|
|
35761
36192
|
|
|
36193
|
+
/***/ },
|
|
36194
|
+
|
|
36195
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/edit/utils/getListItemFromInsertPoint.ts"
|
|
36196
|
+
/*!***********************************************************************************************!*\
|
|
36197
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/edit/utils/getListItemFromInsertPoint.ts ***!
|
|
36198
|
+
\***********************************************************************************************/
|
|
36199
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
36200
|
+
|
|
36201
|
+
"use strict";
|
|
36202
|
+
|
|
36203
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36204
|
+
exports.getListItemFromInsertPoint = void 0;
|
|
36205
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
36206
|
+
/**
|
|
36207
|
+
* @internal
|
|
36208
|
+
*/
|
|
36209
|
+
function getListItemFromInsertPoint(insertPoint) {
|
|
36210
|
+
var paragraph = insertPoint.paragraph, marker = insertPoint.marker, path = insertPoint.path;
|
|
36211
|
+
var index = (0, roosterjs_content_model_dom_1.getClosestAncestorBlockGroupIndex)(path, ['ListItem'], ['TableCell', 'FormatContainer']);
|
|
36212
|
+
var item = path[index];
|
|
36213
|
+
var parent = path[index + 1];
|
|
36214
|
+
return (item === null || item === void 0 ? void 0 : item.blockGroupType) == 'ListItem' &&
|
|
36215
|
+
item.levels.length > 0 &&
|
|
36216
|
+
paragraph.segments[0] == marker &&
|
|
36217
|
+
parent
|
|
36218
|
+
? [item, parent]
|
|
36219
|
+
: null;
|
|
36220
|
+
}
|
|
36221
|
+
exports.getListItemFromInsertPoint = getListItemFromInsertPoint;
|
|
36222
|
+
|
|
36223
|
+
|
|
35762
36224
|
/***/ },
|
|
35763
36225
|
|
|
35764
36226
|
/***/ "./packages/roosterjs-content-model-plugins/lib/edit/utils/preserveParagraphFormat.ts"
|
|
@@ -37116,7 +37578,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
37116
37578
|
if (event.rawEvent.key == 'Enter' && this.isCropMode) {
|
|
37117
37579
|
event.rawEvent.preventDefault();
|
|
37118
37580
|
}
|
|
37119
|
-
this.applyFormatWithContentModel(editor, this.isCropMode,
|
|
37581
|
+
this.applyFormatWithContentModel(editor, this.isCropMode, false /** should selectImage */, false /* isApiOperation */);
|
|
37120
37582
|
}
|
|
37121
37583
|
}
|
|
37122
37584
|
};
|
|
@@ -37156,6 +37618,28 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
37156
37618
|
var editingImageModel;
|
|
37157
37619
|
var selection = editor.getDOMSelection();
|
|
37158
37620
|
var isRTL = false;
|
|
37621
|
+
var formatContentModelOptions = {
|
|
37622
|
+
onNodeCreated: function (model, node) {
|
|
37623
|
+
var _a;
|
|
37624
|
+
if (!isApiOperation &&
|
|
37625
|
+
editingImageModel &&
|
|
37626
|
+
editingImageModel == model &&
|
|
37627
|
+
editingImageModel.format.imageState == findEditingImage_1.EDITING_MARKER &&
|
|
37628
|
+
(0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'ELEMENT_NODE') &&
|
|
37629
|
+
(0, roosterjs_content_model_dom_1.isElementOfType)(node, 'img')) {
|
|
37630
|
+
if (_this.isCropMode) {
|
|
37631
|
+
_this.startCropMode(editor, node, isRTL);
|
|
37632
|
+
}
|
|
37633
|
+
else {
|
|
37634
|
+
(_a = editor.getDocument().defaultView) === null || _a === void 0 ? void 0 : _a.requestAnimationFrame(function () {
|
|
37635
|
+
_this.startRotateAndResize(editor, node, isRTL);
|
|
37636
|
+
});
|
|
37637
|
+
}
|
|
37638
|
+
}
|
|
37639
|
+
},
|
|
37640
|
+
apiName: IMAGE_EDIT_FORMAT_EVENT,
|
|
37641
|
+
skipDOMSelection: false,
|
|
37642
|
+
};
|
|
37159
37643
|
editor.formatContentModel(function (model, context) {
|
|
37160
37644
|
var editingImage = (0, getSelectedImage_1.getSelectedImage)(model);
|
|
37161
37645
|
var previousSelectedImage = isApiOperation
|
|
@@ -37214,28 +37698,12 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
37214
37698
|
_this.imageEditInfo = (0, updateImageEditInfo_1.updateImageEditInfo)(image, selection.image);
|
|
37215
37699
|
image.format.imageState = 'isEditing';
|
|
37216
37700
|
});
|
|
37701
|
+
formatContentModelOptions.skipDOMSelection = !isCropMode;
|
|
37217
37702
|
result = true;
|
|
37218
37703
|
}
|
|
37219
37704
|
}
|
|
37220
37705
|
return result;
|
|
37221
|
-
}, {
|
|
37222
|
-
onNodeCreated: function (model, node) {
|
|
37223
|
-
if (!isApiOperation &&
|
|
37224
|
-
editingImageModel &&
|
|
37225
|
-
editingImageModel == model &&
|
|
37226
|
-
editingImageModel.format.imageState == findEditingImage_1.EDITING_MARKER &&
|
|
37227
|
-
(0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'ELEMENT_NODE') &&
|
|
37228
|
-
(0, roosterjs_content_model_dom_1.isElementOfType)(node, 'img')) {
|
|
37229
|
-
if (isCropMode) {
|
|
37230
|
-
_this.startCropMode(editor, node, isRTL);
|
|
37231
|
-
}
|
|
37232
|
-
else {
|
|
37233
|
-
_this.startRotateAndResize(editor, node, isRTL);
|
|
37234
|
-
}
|
|
37235
|
-
}
|
|
37236
|
-
},
|
|
37237
|
-
apiName: IMAGE_EDIT_FORMAT_EVENT,
|
|
37238
|
-
}, {
|
|
37706
|
+
}, formatContentModelOptions, {
|
|
37239
37707
|
tryGetFromCache: true,
|
|
37240
37708
|
});
|
|
37241
37709
|
};
|
|
@@ -38221,7 +38689,6 @@ var createImageCropper_1 = __webpack_require__(/*! ../Cropper/createImageCropper
|
|
|
38221
38689
|
var createImageResizer_1 = __webpack_require__(/*! ../Resizer/createImageResizer */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/Resizer/createImageResizer.ts");
|
|
38222
38690
|
var createImageRotator_1 = __webpack_require__(/*! ../Rotator/createImageRotator */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/Rotator/createImageRotator.ts");
|
|
38223
38691
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
38224
|
-
var IMAGE_EDIT_SHADOW_ROOT = 'ImageEditShadowRoot';
|
|
38225
38692
|
/**
|
|
38226
38693
|
* @internal
|
|
38227
38694
|
*/
|
|
@@ -38254,15 +38721,8 @@ var createShadowSpan = function (wrapper, imageSpan, imageWidth, imageHeight) {
|
|
|
38254
38721
|
var shadowRoot = imageSpan.attachShadow({
|
|
38255
38722
|
mode: 'open',
|
|
38256
38723
|
});
|
|
38257
|
-
imageSpan.id = IMAGE_EDIT_SHADOW_ROOT;
|
|
38258
|
-
// Pin the shadow host to the original image's box so that wrapping the image does not grow the
|
|
38259
|
-
// surrounding line box. Without this, the taller edit wrapper enlarges the line and the browser
|
|
38260
|
-
// scrolls the selection back into view, making the editor jump. The wrapper and handles still
|
|
38261
|
-
// overflow the host visually because overflow is left visible.
|
|
38262
38724
|
if (imageWidth > 0 && imageHeight > 0) {
|
|
38263
38725
|
imageSpan.style.display = 'inline-block';
|
|
38264
|
-
imageSpan.style.width = imageWidth + "px";
|
|
38265
|
-
imageSpan.style.height = imageHeight + "px";
|
|
38266
38726
|
imageSpan.style.verticalAlign = 'bottom';
|
|
38267
38727
|
imageSpan.style.overflow = 'visible';
|
|
38268
38728
|
}
|
|
@@ -38936,7 +39396,7 @@ function getSelectedImageMetadata(editor, image) {
|
|
|
38936
39396
|
(0, roosterjs_content_model_dom_1.mutateSegment)(selectedImage.paragraph, selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.image, function (modelImage) {
|
|
38937
39397
|
imageMetadata = updateImageEditInfo(modelImage, image);
|
|
38938
39398
|
});
|
|
38939
|
-
return
|
|
39399
|
+
return false;
|
|
38940
39400
|
}
|
|
38941
39401
|
return false;
|
|
38942
39402
|
});
|
|
@@ -39746,6 +40206,7 @@ var BulletSelector = '* > span > span[style*=mso-special-format]';
|
|
|
39746
40206
|
var MsOfficeSpecialFormat = 'mso-special-format';
|
|
39747
40207
|
var CssStyleKey = 'style';
|
|
39748
40208
|
var MsoSpecialFormatRegex = /mso-special-format:\s*([^;]*)/;
|
|
40209
|
+
var TableElementTags = new Set(['TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TR', 'TD', 'TH']);
|
|
39749
40210
|
var clearListItemStyles = function (format) {
|
|
39750
40211
|
delete format.textAlign;
|
|
39751
40212
|
delete format.marginLeft;
|
|
@@ -39772,7 +40233,9 @@ function processPastedContentFromPowerPoint(event, domCreator) {
|
|
|
39772
40233
|
if (style.includes(MsOfficeSpecialFormat) && context.listFormat.levels.length > 0) {
|
|
39773
40234
|
return;
|
|
39774
40235
|
}
|
|
39775
|
-
var bulletElement = element.
|
|
40236
|
+
var bulletElement = !TableElementTags.has(element.tagName)
|
|
40237
|
+
? element.querySelector(BulletSelector)
|
|
40238
|
+
: null;
|
|
39776
40239
|
if (bulletElement) {
|
|
39777
40240
|
var _c = extractPowerPointListInfo(element, bulletElement), depth = _c.depth, unorderedBulletType = _c.unorderedBulletType, orderedBulletType = _c.orderedBulletType, startNumberOverrideOrBullet_1 = _c.startNumberOverrideOrBullet, isOrderedList = _c.isOrderedList, isNewList_1 = _c.isNewList;
|
|
39778
40241
|
// Setup the listformat with the metadata extracted from the bullet element
|
|
@@ -39793,6 +40256,12 @@ function processPastedContentFromPowerPoint(event, domCreator) {
|
|
|
39793
40256
|
}
|
|
39794
40257
|
clearListItemStyles(listItem.levels[listItem.levels.length - 1].format);
|
|
39795
40258
|
clearListItemStyles(listItem.format);
|
|
40259
|
+
// When the list is inside a table cell, remove the font size from the
|
|
40260
|
+
// list marker so it does not inherit the list's font size. Otherwise a
|
|
40261
|
+
// large marker may be rendered outside of the table cell.
|
|
40262
|
+
if (element.closest('td,th')) {
|
|
40263
|
+
delete listItem.formatHolder.format.fontSize;
|
|
40264
|
+
}
|
|
39796
40265
|
});
|
|
39797
40266
|
}
|
|
39798
40267
|
else {
|