jodit 4.12.35 → 4.12.37

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.
Files changed (79) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +3 -3
  4. package/es2015/jodit.js +110 -49
  5. package/es2015/jodit.min.js +3 -3
  6. package/es2015/plugins/debug/debug.css +1 -1
  7. package/es2015/plugins/debug/debug.js +1 -1
  8. package/es2015/plugins/debug/debug.min.js +1 -1
  9. package/es2015/plugins/speech-recognize/speech-recognize.css +1 -1
  10. package/es2015/plugins/speech-recognize/speech-recognize.js +1 -1
  11. package/es2015/plugins/speech-recognize/speech-recognize.min.js +1 -1
  12. package/es2018/jodit.fat.min.js +3 -3
  13. package/es2018/jodit.min.js +3 -3
  14. package/es2018/plugins/debug/debug.min.js +1 -1
  15. package/es2018/plugins/speech-recognize/speech-recognize.min.js +1 -1
  16. package/es2021/jodit.css +1 -1
  17. package/es2021/jodit.fat.min.js +4 -4
  18. package/es2021/jodit.js +109 -47
  19. package/es2021/jodit.min.js +4 -4
  20. package/es2021/plugins/debug/debug.css +1 -1
  21. package/es2021/plugins/debug/debug.js +1 -1
  22. package/es2021/plugins/debug/debug.min.js +1 -1
  23. package/es2021/plugins/speech-recognize/speech-recognize.css +1 -1
  24. package/es2021/plugins/speech-recognize/speech-recognize.js +1 -1
  25. package/es2021/plugins/speech-recognize/speech-recognize.min.js +1 -1
  26. package/es2021.en/jodit.css +1 -1
  27. package/es2021.en/jodit.fat.min.js +4 -4
  28. package/es2021.en/jodit.js +109 -47
  29. package/es2021.en/jodit.min.js +5 -5
  30. package/es2021.en/plugins/debug/debug.css +1 -1
  31. package/es2021.en/plugins/debug/debug.js +1 -1
  32. package/es2021.en/plugins/debug/debug.min.js +1 -1
  33. package/es2021.en/plugins/speech-recognize/speech-recognize.css +1 -1
  34. package/es2021.en/plugins/speech-recognize/speech-recognize.js +1 -1
  35. package/es2021.en/plugins/speech-recognize/speech-recognize.min.js +1 -1
  36. package/es5/jodit.css +2 -2
  37. package/es5/jodit.fat.min.js +2 -2
  38. package/es5/jodit.js +259 -195
  39. package/es5/jodit.min.css +2 -2
  40. package/es5/jodit.min.js +2 -2
  41. package/es5/plugins/debug/debug.css +1 -1
  42. package/es5/plugins/debug/debug.js +1 -1
  43. package/es5/plugins/debug/debug.min.js +1 -1
  44. package/es5/plugins/speech-recognize/speech-recognize.css +1 -1
  45. package/es5/plugins/speech-recognize/speech-recognize.js +1 -1
  46. package/es5/plugins/speech-recognize/speech-recognize.min.js +1 -1
  47. package/es5/polyfills.fat.min.js +1 -1
  48. package/es5/polyfills.js +1 -1
  49. package/es5/polyfills.min.js +1 -1
  50. package/esm/config.d.ts +14 -6
  51. package/esm/core/constants.js +1 -1
  52. package/esm/core/dom/dom.d.ts +35 -12
  53. package/esm/core/dom/dom.js +42 -20
  54. package/esm/core/dom/lazy-walker.d.ts +18 -1
  55. package/esm/core/dom/lazy-walker.js +23 -3
  56. package/esm/core/selection/helpers/index.d.ts +3 -1
  57. package/esm/core/selection/helpers/index.js +3 -1
  58. package/esm/core/selection/selection.d.ts +14 -0
  59. package/esm/core/selection/selection.js +19 -8
  60. package/esm/core/selection/style/api/is-same-attributes.d.ts +4 -2
  61. package/esm/core/selection/style/api/is-same-attributes.js +3 -4
  62. package/esm/core/selection/style/api/is-suit-element.d.ts +2 -1
  63. package/esm/core/selection/style/api/is-suit-element.js +2 -1
  64. package/esm/core/selection/style/api/list/toggle-ordered-list.js +7 -0
  65. package/esm/core/selection/style/api/toggle-attributes.js +3 -1
  66. package/esm/core/selection/style/commit-style.d.ts +1 -1
  67. package/esm/core/selection/style/commit-style.js +2 -2
  68. package/esm/plugins/source/config.d.ts +14 -6
  69. package/esm/plugins/source/editor/engines/ace.js +5 -0
  70. package/package.json +1 -1
  71. package/types/config.d.ts +14 -6
  72. package/types/core/dom/dom.d.ts +35 -12
  73. package/types/core/dom/lazy-walker.d.ts +18 -1
  74. package/types/core/selection/helpers/index.d.ts +3 -1
  75. package/types/core/selection/selection.d.ts +14 -0
  76. package/types/core/selection/style/api/is-same-attributes.d.ts +4 -2
  77. package/types/core/selection/style/api/is-suit-element.d.ts +2 -1
  78. package/types/core/selection/style/commit-style.d.ts +1 -1
  79. package/types/plugins/source/config.d.ts +14 -6
package/es5/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
3
3
  * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
4
- * Version: v4.12.35
4
+ * Version: v4.12.37
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -2074,7 +2074,7 @@ __webpack_require__.r(__webpack_exports__);
2074
2074
  * @packageDocumentation
2075
2075
  * @module constants
2076
2076
  */
2077
- var APP_VERSION = "4.12.35";
2077
+ var APP_VERSION = "4.12.37";
2078
2078
  // prettier-ignore
2079
2079
  var ES = "es5";
2080
2080
  var IS_ES_MODERN = false;
@@ -3399,6 +3399,7 @@ function wait(condition) {
3399
3399
 
3400
3400
 
3401
3401
 
3402
+ var TEMP_ELEMENT_REG_EXP = new RegExp("<([a-z]+)[^>]+".concat(jodit_core_constants__WEBPACK_IMPORTED_MODULE_6__.TEMP_ATTR, "[^>]*>(.+?)</\\1>"), 'gi');
3402
3403
  /**
3403
3404
  * Module for working with DOM
3404
3405
  */ var Dom = /*#__PURE__*/ function() {
@@ -3525,7 +3526,11 @@ function wait(condition) {
3525
3526
  {
3526
3527
  key: "between",
3527
3528
  value: /**
3528
- * Call functions for all nodes between `start` and `end`
3529
+ * Call callback for all nodes between `start` and `end` in document order
3530
+ * (`start` and `end` are not included). Iteration stops when the callback returns `true`.
3531
+ *
3532
+ * `end` must be positioned after `start` in the document (e.g. selection markers),
3533
+ * otherwise iteration will stop only at the end of the tree.
3529
3534
  */ function between(start, end, callback) {
3530
3535
  var next = start;
3531
3536
  while(next && next !== end){
@@ -3536,6 +3541,10 @@ function wait(condition) {
3536
3541
  if (!step) {
3537
3542
  while(next && !next.nextSibling){
3538
3543
  next = next.parentNode;
3544
+ // `end` was reached while ascending - all nodes between were visited
3545
+ if (next === end) {
3546
+ return;
3547
+ }
3539
3548
  }
3540
3549
  step = next === null || next === void 0 ? void 0 : next.nextSibling;
3541
3550
  }
@@ -3651,7 +3660,7 @@ function wait(condition) {
3651
3660
  {
3652
3661
  key: "isList",
3653
3662
  value: /**
3654
- * Check if element is a list element UL or OL
3663
+ * Check if element is a list element UL or OL
3655
3664
  */ function isList(elm) {
3656
3665
  return Dom.isTag(elm, jodit_core_constants__WEBPACK_IMPORTED_MODULE_6__.LIST_TAGS);
3657
3666
  }
@@ -3715,12 +3724,13 @@ function wait(condition) {
3715
3724
  value: /**
3716
3725
  * Check if element is document fragment
3717
3726
  */ function isFragment(node) {
3718
- var _node_ownerDocument;
3719
3727
  if (!Dom.isNode(node)) {
3720
3728
  return false;
3721
3729
  }
3722
- var win = (_node_ownerDocument = node.ownerDocument) === null || _node_ownerDocument === void 0 ? void 0 : _node_ownerDocument.defaultView;
3723
- return Boolean(win && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE);
3730
+ // no `defaultView` requirement fragments of an inert document
3731
+ // (`template.content`, `DOMParser`, `implementation.createHTMLDocument`)
3732
+ // are still fragments
3733
+ return node.nodeType === Node.DOCUMENT_FRAGMENT_NODE;
3724
3734
  }
3725
3735
  },
3726
3736
  {
@@ -3867,7 +3877,9 @@ function wait(condition) {
3867
3877
  {
3868
3878
  key: "nextGen",
3869
3879
  value: /**
3870
- * Find next/prev node what `condition(next) === true`
3880
+ * Lazily iterate over all nodes what follow after `start` (in document order
3881
+ * for `leftToRight = true`, in reverse order otherwise) inside `root`.
3882
+ * Ancestors of `start` are not yielded.
3871
3883
  */ function nextGen(start, root) {
3872
3884
  var leftToRight, withChild, stack, currentNode, next;
3873
3885
  var _arguments = arguments;
@@ -3881,9 +3893,10 @@ function wait(condition) {
3881
3893
  case 1:
3882
3894
  next = leftToRight ? currentNode.nextSibling : currentNode.previousSibling;
3883
3895
  while(next){
3884
- stack.unshift(next);
3896
+ stack.push(next);
3885
3897
  next = leftToRight ? next.nextSibling : next.previousSibling;
3886
3898
  }
3899
+ stack.reverse();
3887
3900
  return [
3888
3901
  5,
3889
3902
  (0,_swc_helpers_ts_values__WEBPACK_IMPORTED_MODULE_5__.__values)(this.runInStack(start, stack, leftToRight, withChild))
@@ -3918,7 +3931,7 @@ function wait(condition) {
3918
3931
  * ```javascript
3919
3932
  * Jodit.modules.Dom.each(editor.s.current(), function (node) {
3920
3933
  * if (node.nodeType === Node.TEXT_NODE) {
3921
- * node.nodeValue = node.nodeValue.replace(Jodit.INVISIBLE_SPACE_REG_EX, '') // remove all of the text element codes invisible character
3934
+ * node.nodeValue = node.nodeValue.replace(Jodit.INVISIBLE_SPACE_REG_EXP(), '') // remove all of the text element codes invisible character
3922
3935
  * }
3923
3936
  * });
3924
3937
  * ```
@@ -4056,7 +4069,9 @@ function wait(condition) {
4056
4069
  },
4057
4070
  {
4058
4071
  key: "sibling",
4059
- value: function sibling(node, left) {
4072
+ value: /**
4073
+ * Returns the previous (`left = true`) or next sibling of the node
4074
+ */ function sibling(node, left) {
4060
4075
  return left ? node.previousSibling : node.nextSibling;
4061
4076
  }
4062
4077
  },
@@ -4064,6 +4079,10 @@ function wait(condition) {
4064
4079
  key: "up",
4065
4080
  value: /**
4066
4081
  * It goes through all the elements in ascending order, and checks to see if they meet the predetermined condition
4082
+ *
4083
+ * The condition is checked for the `node` itself too. The `root` reached
4084
+ * while ascending is checked only when `checkRoot = true`
4085
+ * (but if `node === root` it is checked in any case).
4067
4086
  */ function up(node, condition, root) {
4068
4087
  var checkRoot = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
4069
4088
  var start = node;
@@ -4240,7 +4259,12 @@ function wait(condition) {
4240
4259
  },
4241
4260
  {
4242
4261
  key: "safeInsertNode",
4243
- value: function safeInsertNode(range, node) {
4262
+ value: /**
4263
+ * Insert a node into the range and collapse the range to the start of
4264
+ * the inserted content. Unlike the native `Range.insertNode` it does not
4265
+ * split inseparable elements (BR, HR, IMG etc.) and removes empty text
4266
+ * nodes produced by the split of a text container.
4267
+ */ function safeInsertNode(range, node) {
4244
4268
  range.collapsed || range.deleteContents();
4245
4269
  var child = Dom.isFragment(node) ? node.lastChild : node;
4246
4270
  if (range.startContainer === range.endContainer && range.collapsed && Dom.isTag(range.startContainer, jodit_core_constants__WEBPACK_IMPORTED_MODULE_6__.INSEPARABLE_TAGS)) {
@@ -4290,22 +4314,17 @@ function wait(condition) {
4290
4314
  {
4291
4315
  key: "isTag",
4292
4316
  value: function isTag(node, tagNames) {
4317
+ if (Array.isArray(tagNames)) {
4318
+ throw new TypeError('Dom.isTag does not support array');
4319
+ }
4293
4320
  if (!this.isElement(node)) {
4294
4321
  return false;
4295
4322
  }
4296
4323
  var nameL = node.tagName.toLowerCase();
4297
- var nameU = node.tagName.toUpperCase();
4298
4324
  if ((0,_swc_helpers_instanceof__WEBPACK_IMPORTED_MODULE_2__._)(tagNames, Set)) {
4299
- return tagNames.has(nameL) || tagNames.has(nameU);
4300
- }
4301
- if (Array.isArray(tagNames)) {
4302
- throw new TypeError('Dom.isTag does not support array');
4303
- }
4304
- var tags = tagNames;
4305
- if (nameL === tags || nameU === tags) {
4306
- return true;
4325
+ return tagNames.has(nameL) || tagNames.has(node.tagName.toUpperCase());
4307
4326
  }
4308
- return false;
4327
+ return nameL === tagNames || node.tagName.toUpperCase() === tagNames;
4309
4328
  }
4310
4329
  },
4311
4330
  {
@@ -4340,9 +4359,9 @@ function wait(condition) {
4340
4359
  {
4341
4360
  key: "replaceTemporaryFromString",
4342
4361
  value: /**
4343
- * Replace temporary elements from string
4362
+ * Unwrap temporary elements inside a HTML string (keeps their content)
4344
4363
  */ function replaceTemporaryFromString(value) {
4345
- return value.replace(/<([a-z]+)[^>]+data-jodit-temp[^>]+>(.+?)<\/\1>/gi, '$2');
4364
+ return value.replace(TEMP_ELEMENT_REG_EXP, '$2');
4346
4365
  }
4347
4366
  },
4348
4367
  {
@@ -4418,25 +4437,41 @@ function wait(condition) {
4418
4437
 
4419
4438
 
4420
4439
 
4421
- var LazyWalker = /*#__PURE__*/ function(Eventify) {
4440
+ /**
4441
+ * Walks the DOM tree in small chunks between browser tasks so that even huge
4442
+ * documents do not block the main thread.
4443
+ *
4444
+ * Events:
4445
+ * - `visit` - is called for every node; return `true` to mark the pass as
4446
+ * "had effect" (it will be passed into the `end` event)
4447
+ * - `break` - the pass was interrupted via [[LazyWalker.break]]
4448
+ * - `end` - the pass is finished, receives `true` if some `visit` handler returned `true`
4449
+ */ var LazyWalker = /*#__PURE__*/ function(Eventify) {
4422
4450
  "use strict";
4423
4451
  (0,_swc_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__._)(LazyWalker, Eventify);
4424
4452
  function LazyWalker(async) {
4425
4453
  var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
4426
4454
  (0,_swc_helpers_class_call_check__WEBPACK_IMPORTED_MODULE_1__._)(this, LazyWalker);
4427
4455
  var _this;
4428
- _this = (0,_swc_helpers_call_super__WEBPACK_IMPORTED_MODULE_0__._)(this, LazyWalker), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "async", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "options", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "workNodes", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "hadAffect", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "isWorked", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "isFinished", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "idleId", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "__schedulerController", void 0), _this.async = async, _this.options = options, _this.workNodes = null, _this.hadAffect = false, _this.isWorked = false, _this.isFinished = false, _this.idleId = 0, _this.__schedulerController = null;
4456
+ _this = (0,_swc_helpers_call_super__WEBPACK_IMPORTED_MODULE_0__._)(this, LazyWalker), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "async", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "options", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "workNodes", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "hadAffect", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "isWorked", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "isFinished", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_3__._)(_this, "__schedulerController", void 0), _this.async = async, _this.options = options, _this.workNodes = null, _this.hadAffect = false, _this.isWorked = false, _this.isFinished = false, _this.__schedulerController = null;
4429
4457
  return _this;
4430
4458
  }
4431
4459
  (0,_swc_helpers_create_class__WEBPACK_IMPORTED_MODULE_2__._)(LazyWalker, [
4432
4460
  {
4433
- key: "setWork",
4461
+ /**
4462
+ * Starts a new pass over the `root` tree.
4463
+ * If a previous pass is still running it will be stopped first.
4464
+ */ key: "setWork",
4434
4465
  value: function setWork(root) {
4435
4466
  if (this.isWorked) {
4436
4467
  this.break();
4468
+ } else {
4469
+ // cancel a not yet started pass scheduled by the previous `setWork` call
4470
+ this.stop();
4437
4471
  }
4438
4472
  this.workNodes = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.eachGen(root, !this.options.reverse);
4439
4473
  this.isFinished = false;
4474
+ this.hadAffect = false;
4440
4475
  this._requestStarting();
4441
4476
  return this;
4442
4477
  }
@@ -4475,10 +4510,12 @@ var LazyWalker = /*#__PURE__*/ function(Eventify) {
4475
4510
  {
4476
4511
  key: "stop",
4477
4512
  value: function stop() {
4513
+ var _this___schedulerController;
4478
4514
  this.isWorked = false;
4479
4515
  this.isFinished = true;
4480
4516
  this.workNodes = null;
4481
- this.async.cancelIdleCallback(this.idleId);
4517
+ (_this___schedulerController = this.__schedulerController) === null || _this___schedulerController === void 0 ? void 0 : _this___schedulerController.abort();
4518
+ this.__schedulerController = null;
4482
4519
  }
4483
4520
  },
4484
4521
  {
@@ -4496,7 +4533,7 @@ var LazyWalker = /*#__PURE__*/ function(Eventify) {
4496
4533
  this.isWorked = true;
4497
4534
  var count = 0;
4498
4535
  var chunkSize = (_this_options_timeoutChunkSize = this.options.timeoutChunkSize) !== null && _this_options_timeoutChunkSize !== void 0 ? _this_options_timeoutChunkSize : 50;
4499
- while(!this.isFinished && count <= chunkSize){
4536
+ while(!this.isFinished && count < chunkSize){
4500
4537
  var item = this.workNodes.next();
4501
4538
  count += 1;
4502
4539
  if (this.visitNode(item.value)) {
@@ -11713,7 +11750,9 @@ var Response = /*#__PURE__*/ function() {
11713
11750
 
11714
11751
 
11715
11752
  /**
11716
- * Check if the cursor is at the edge of the string
11753
+ * Despite the name, returns `true` when the cursor is NOT at the checked edge
11754
+ * of the text node: there is significant (non invisible-space) text between
11755
+ * the offset and the start (`start = true`) or the end (`end = true`) of the string.
11717
11756
  * @private
11718
11757
  */ function cursorInTheEdgeOfString(container, offset, start, end) {
11719
11758
  var _container_nodeValue;
@@ -11874,19 +11913,20 @@ function findCorrectCurrentNode(node, range, rightMode, isCollapsed, checkChild,
11874
11913
  /* harmony import */ var _swc_helpers_create_class__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(53429);
11875
11914
  /* harmony import */ var _swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25045);
11876
11915
  /* harmony import */ var _swc_helpers_sliced_to_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(50684);
11877
- /* harmony import */ var _swc_helpers_type_of__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(77384);
11878
- /* harmony import */ var _swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(31635);
11879
- /* harmony import */ var _swc_helpers_ts_generator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3233);
11880
- /* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(81937);
11881
- /* harmony import */ var jodit_core_decorators__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(84839);
11882
- /* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(23211);
11883
- /* harmony import */ var jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(65946);
11884
- /* harmony import */ var jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(28686);
11885
- /* harmony import */ var jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(28712);
11886
- /* harmony import */ var jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_12__);
11887
- /* harmony import */ var jodit_core_selection_helpers_move_the_node_along_the_edge_outward__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(7470);
11888
- /* harmony import */ var _style_commit_style__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(84578);
11889
- /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(42259);
11916
+ /* harmony import */ var _swc_helpers_to_consumable_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42395);
11917
+ /* harmony import */ var _swc_helpers_type_of__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(77384);
11918
+ /* harmony import */ var _swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(31635);
11919
+ /* harmony import */ var _swc_helpers_ts_generator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(3233);
11920
+ /* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(81937);
11921
+ /* harmony import */ var jodit_core_decorators__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(84839);
11922
+ /* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(23211);
11923
+ /* harmony import */ var jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(65946);
11924
+ /* harmony import */ var jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(28686);
11925
+ /* harmony import */ var jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(28712);
11926
+ /* harmony import */ var jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_13__);
11927
+ /* harmony import */ var jodit_core_selection_helpers_move_the_node_along_the_edge_outward__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(7470);
11928
+ /* harmony import */ var _style_commit_style__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(84578);
11929
+ /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(42259);
11890
11930
  /*!
11891
11931
  * Jodit Editor (https://xdsoft.net/jodit/)
11892
11932
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -11913,6 +11953,7 @@ function findCorrectCurrentNode(node, range, rightMode, isCollapsed, checkChild,
11913
11953
 
11914
11954
 
11915
11955
 
11956
+
11916
11957
  var Selection = /*#__PURE__*/ function() {
11917
11958
  "use strict";
11918
11959
  function Selection(jodit) {
@@ -11938,8 +11979,8 @@ var Selection = /*#__PURE__*/ function() {
11938
11979
  value: /**
11939
11980
  * Throw Error exception if parameter is not Node
11940
11981
  */ function errorNode(node) {
11941
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isNode(node)) {
11942
- throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.error)('Parameter node must be instance of Node');
11982
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isNode(node)) {
11983
+ throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.error)('Parameter node must be instance of Node');
11943
11984
  }
11944
11985
  }
11945
11986
  },
@@ -11972,7 +12013,7 @@ var Selection = /*#__PURE__*/ function() {
11972
12013
  get: /**
11973
12014
  * Return current selection object
11974
12015
  */ function get() {
11975
- if (this.j.o.shadowRoot && (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_11__.isFunction)(this.j.o.shadowRoot.getSelection)) {
12016
+ if (this.j.o.shadowRoot && (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_12__.isFunction)(this.j.o.shadowRoot.getSelection)) {
11976
12017
  return this.j.o.shadowRoot.getSelection();
11977
12018
  }
11978
12019
  return this.win.getSelection();
@@ -11994,7 +12035,7 @@ var Selection = /*#__PURE__*/ function() {
11994
12035
  */ function get() {
11995
12036
  var sel = this.sel;
11996
12037
  var range = (sel === null || sel === void 0 ? void 0 : sel.rangeCount) ? sel.getRangeAt(0) : null;
11997
- return !(!range || !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(this.area, range.startContainer));
12038
+ return !(!range || !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(this.area, range.startContainer));
11998
12039
  }
11999
12040
  },
12000
12041
  {
@@ -12042,10 +12083,10 @@ var Selection = /*#__PURE__*/ function() {
12042
12083
  * Remove node element from editor
12043
12084
  */ key: "removeNode",
12044
12085
  value: function removeNode(node) {
12045
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(this.j.editor, node, true)) {
12046
- throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.error)("Selection.removeNode can remove only editor's children");
12086
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(this.j.editor, node, true)) {
12087
+ throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.error)("Selection.removeNode can remove only editor's children");
12047
12088
  }
12048
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove(node);
12089
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeRemove(node);
12049
12090
  this.j.e.fire('afterRemoveNode', node);
12050
12091
  }
12051
12092
  },
@@ -12072,7 +12113,7 @@ var Selection = /*#__PURE__*/ function() {
12072
12113
  }
12073
12114
  if (_this.doc.caretRangeFromPoint) {
12074
12115
  var caret1 = _this.doc.caretRangeFromPoint(x, y);
12075
- (0,jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_12__.assert)(caret1, 'Incorrect caretRangeFromPoint behaviour');
12116
+ (0,jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_13__.assert)(caret1, 'Incorrect caretRangeFromPoint behaviour');
12076
12117
  rng.setStart(caret1.startContainer, caret1.startOffset);
12077
12118
  }
12078
12119
  })();
@@ -12096,7 +12137,7 @@ var Selection = /*#__PURE__*/ function() {
12096
12137
  get: /**
12097
12138
  * Check if editor has selection markers
12098
12139
  */ function get() {
12099
- return (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.$$)('span[data-' + jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.MARKER_CLASS + ']', this.area);
12140
+ return (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.$$)('span[data-' + jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.MARKER_CLASS + ']', this.area);
12100
12141
  }
12101
12142
  },
12102
12143
  {
@@ -12104,7 +12145,8 @@ var Selection = /*#__PURE__*/ function() {
12104
12145
  * Remove all markers
12105
12146
  */ key: "removeMarkers",
12106
12147
  value: function removeMarkers() {
12107
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove.apply(null, this.markers);
12148
+ var _Dom;
12149
+ (_Dom = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom).safeRemove.apply(_Dom, (0,_swc_helpers_to_consumable_array__WEBPACK_IMPORTED_MODULE_4__._)(this.markers));
12108
12150
  }
12109
12151
  },
12110
12152
  {
@@ -12119,14 +12161,14 @@ var Selection = /*#__PURE__*/ function() {
12119
12161
  newRange.collapse(atStart);
12120
12162
  }
12121
12163
  var marker = this.j.createInside.span();
12122
- marker.id = jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.MARKER_CLASS + '_' + Number(new Date()) + '_' + String(Math.random()).slice(2);
12164
+ marker.id = jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.MARKER_CLASS + '_' + Number(new Date()) + '_' + String(Math.random()).slice(2);
12123
12165
  marker.style.lineHeight = '0';
12124
12166
  marker.style.display = 'none';
12125
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.markTemporary(marker);
12126
- (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.attr)(marker, 'data-' + jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.MARKER_CLASS, atStart ? 'start' : 'end');
12127
- marker.appendChild(this.j.createInside.text(jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.INVISIBLE_SPACE));
12167
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.markTemporary(marker);
12168
+ (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.attr)(marker, 'data-' + jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.MARKER_CLASS, atStart ? 'start' : 'end');
12169
+ marker.appendChild(this.j.createInside.text(jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.INVISIBLE_SPACE));
12128
12170
  if (newRange) {
12129
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(this.area, atStart ? newRange.startContainer : newRange.endContainer)) {
12171
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(this.area, atStart ? newRange.startContainer : newRange.endContainer)) {
12130
12172
  // Here need do unsafe inserting
12131
12173
  // Deny Dom.safeInsertNode(newRange, marker);
12132
12174
  // Apply style -> Test Style module -> Base apply -> For selection <p><strong>|test|</strong></p> apply style {"element":"em","style":{"fontStyle":"italic"}}
@@ -12143,7 +12185,7 @@ var Selection = /*#__PURE__*/ function() {
12143
12185
  value: function restore() {
12144
12186
  var range = false;
12145
12187
  var markAttr = function markAttr(start) {
12146
- return "span[data-".concat(jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.MARKER_CLASS, "=").concat(start ? 'start' : 'end', "]");
12188
+ return "span[data-".concat(jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.MARKER_CLASS, "=").concat(start ? 'start' : 'end', "]");
12147
12189
  };
12148
12190
  var start = this.area.querySelector(markAttr(true));
12149
12191
  var end = this.area.querySelector(markAttr(false));
@@ -12153,18 +12195,18 @@ var Selection = /*#__PURE__*/ function() {
12153
12195
  range = this.createRange();
12154
12196
  if (!end) {
12155
12197
  var previousNode = start.previousSibling;
12156
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isText(previousNode)) {
12198
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isText(previousNode)) {
12157
12199
  range.setStart(previousNode, previousNode.nodeValue ? previousNode.nodeValue.length : 0);
12158
12200
  } else {
12159
12201
  range.setStartBefore(start);
12160
12202
  }
12161
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove(start);
12203
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeRemove(start);
12162
12204
  range.collapse(true);
12163
12205
  } else {
12164
12206
  range.setStartAfter(start);
12165
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove(start);
12207
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeRemove(start);
12166
12208
  range.setEndBefore(end);
12167
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove(end);
12209
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeRemove(end);
12168
12210
  }
12169
12211
  if (range) {
12170
12212
  this.selectRange(range);
@@ -12172,18 +12214,22 @@ var Selection = /*#__PURE__*/ function() {
12172
12214
  }
12173
12215
  },
12174
12216
  {
12175
- key: "fakes",
12217
+ /**
12218
+ * Inserts invisible fake nodes on the boundaries of the current selection
12219
+ * and returns them. Unlike [[Select.save]] the selection stays valid while
12220
+ * the DOM around it is being modified. Restore it later with [[Select.restoreFakes]].
12221
+ */ key: "fakes",
12176
12222
  value: function fakes() {
12177
12223
  var sel = this.sel;
12178
12224
  if (!sel || !sel.rangeCount) {
12179
12225
  return [];
12180
12226
  }
12181
12227
  var range = sel.getRangeAt(0);
12182
- (0,jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_12__.assert)(range, 'Range is null');
12228
+ (0,jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_13__.assert)(range, 'Range is null');
12183
12229
  var left = range.cloneRange();
12184
12230
  left.collapse(true);
12185
12231
  var fakeLeft = this.j.createInside.fake();
12186
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeInsertNode(left, fakeLeft);
12232
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeInsertNode(left, fakeLeft);
12187
12233
  range.setStartBefore(fakeLeft);
12188
12234
  var result = [
12189
12235
  fakeLeft
@@ -12192,7 +12238,7 @@ var Selection = /*#__PURE__*/ function() {
12192
12238
  var right = range.cloneRange();
12193
12239
  right.collapse(false);
12194
12240
  var fakeRight = this.j.createInside.fake();
12195
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeInsertNode(right, fakeRight);
12241
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeInsertNode(right, fakeRight);
12196
12242
  range.setEndAfter(fakeRight);
12197
12243
  result.push(fakeRight);
12198
12244
  }
@@ -12201,7 +12247,10 @@ var Selection = /*#__PURE__*/ function() {
12201
12247
  }
12202
12248
  },
12203
12249
  {
12204
- key: "restoreFakes",
12250
+ /**
12251
+ * Restores the selection previously saved with [[Select.fakes]]
12252
+ * and removes the fake nodes (disconnected fakes are ignored).
12253
+ */ key: "restoreFakes",
12205
12254
  value: function restoreFakes(fakes) {
12206
12255
  var _fakeLeft_parentNode, _fakeLeft_parentNode1, _fakeRight_parentNode, _fakeRight_parentNode1;
12207
12256
  var nodes = fakes.filter(function(n) {
@@ -12218,10 +12267,10 @@ var Selection = /*#__PURE__*/ function() {
12218
12267
  }
12219
12268
  this.selectRange(range);
12220
12269
  if (((_fakeLeft_parentNode = fakeLeft.parentNode) === null || _fakeLeft_parentNode === void 0 ? void 0 : _fakeLeft_parentNode.firstChild) !== ((_fakeLeft_parentNode1 = fakeLeft.parentNode) === null || _fakeLeft_parentNode1 === void 0 ? void 0 : _fakeLeft_parentNode1.lastChild)) {
12221
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove(fakeLeft);
12270
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeRemove(fakeLeft);
12222
12271
  }
12223
12272
  if ((fakeRight === null || fakeRight === void 0 ? void 0 : (_fakeRight_parentNode = fakeRight.parentNode) === null || _fakeRight_parentNode === void 0 ? void 0 : _fakeRight_parentNode.firstChild) !== (fakeRight === null || fakeRight === void 0 ? void 0 : (_fakeRight_parentNode1 = fakeRight.parentNode) === null || _fakeRight_parentNode1 === void 0 ? void 0 : _fakeRight_parentNode1.lastChild)) {
12224
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove(fakeRight);
12273
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeRemove(fakeRight);
12225
12274
  }
12226
12275
  }
12227
12276
  },
@@ -12297,7 +12346,7 @@ var Selection = /*#__PURE__*/ function() {
12297
12346
  preventScroll: true
12298
12347
  };
12299
12348
  if (!this.isFocused()) {
12300
- var scrollParent = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.getScrollParent)(this.j.container), scrollTop = scrollParent === null || scrollParent === void 0 ? void 0 : scrollParent.scrollTop;
12349
+ var scrollParent = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.getScrollParent)(this.j.container), scrollTop = scrollParent === null || scrollParent === void 0 ? void 0 : scrollParent.scrollTop;
12301
12350
  if (this.j.iframe) {
12302
12351
  if (this.doc.readyState === 'complete') {
12303
12352
  this.j.iframe.focus(options);
@@ -12309,7 +12358,7 @@ var Selection = /*#__PURE__*/ function() {
12309
12358
  scrollParent.scrollTo(0, scrollTop);
12310
12359
  }
12311
12360
  var sel = this.sel, range = (sel === null || sel === void 0 ? void 0 : sel.rangeCount) ? sel === null || sel === void 0 ? void 0 : sel.getRangeAt(0) : null;
12312
- if (!range || !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(this.area, range.startContainer)) {
12361
+ if (!range || !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(this.area, range.startContainer)) {
12313
12362
  var range1 = this.createRange();
12314
12363
  range1.setStart(this.area, 0);
12315
12364
  range1.collapse(true);
@@ -12353,7 +12402,7 @@ var Selection = /*#__PURE__*/ function() {
12353
12402
  */ key: "current",
12354
12403
  value: function current() {
12355
12404
  var checkChild = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
12356
- if (this.j.getRealMode() !== jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.MODE_WYSIWYG) {
12405
+ if (this.j.getRealMode() !== jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.MODE_WYSIWYG) {
12357
12406
  return null;
12358
12407
  }
12359
12408
  var sel = this.sel;
@@ -12366,16 +12415,16 @@ var Selection = /*#__PURE__*/ function() {
12366
12415
  var child = function child(nd) {
12367
12416
  return rightMode ? nd.lastChild : nd.firstChild;
12368
12417
  };
12369
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isTag(node, 'br') && sel.isCollapsed) {
12418
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isTag(node, 'br') && sel.isCollapsed) {
12370
12419
  return node;
12371
12420
  }
12372
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isText(node)) {
12373
- var ret = (0,_helpers__WEBPACK_IMPORTED_MODULE_15__.findCorrectCurrentNode)(node, range, rightMode, sel.isCollapsed, checkChild, child);
12421
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isText(node)) {
12422
+ var ret = (0,_helpers__WEBPACK_IMPORTED_MODULE_16__.findCorrectCurrentNode)(node, range, rightMode, sel.isCollapsed, checkChild, child);
12374
12423
  node = ret.node;
12375
12424
  rightMode = ret.rightMode;
12376
12425
  }
12377
12426
  // check - cursor inside editor
12378
- if (node && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(this.area, node)) {
12427
+ if (node && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(this.area, node)) {
12379
12428
  return node;
12380
12429
  }
12381
12430
  return null;
@@ -12393,7 +12442,7 @@ var Selection = /*#__PURE__*/ function() {
12393
12442
  var _this = this;
12394
12443
  var insertCursorAfter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true, fireChange = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;
12395
12444
  this.errorNode(node);
12396
- var child = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isFragment(node) ? node.lastChild : node;
12445
+ var child = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isFragment(node) ? node.lastChild : node;
12397
12446
  this.j.e.fire('safeHTML', node);
12398
12447
  if (!this.isFocused() && this.j.isEditorMode()) {
12399
12448
  this.focus();
@@ -12408,8 +12457,8 @@ var Selection = /*#__PURE__*/ function() {
12408
12457
  if (sel && sel.rangeCount) {
12409
12458
  var range = sel.getRangeAt(0);
12410
12459
  var firstChild = node.firstChild;
12411
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(_this.area, range.commonAncestorContainer)) {
12412
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeInsertNode(range, node);
12460
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(_this.area, range.commonAncestorContainer)) {
12461
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeInsertNode(range, node);
12413
12462
  } else {
12414
12463
  _this.area.appendChild(node);
12415
12464
  }
@@ -12426,15 +12475,15 @@ var Selection = /*#__PURE__*/ function() {
12426
12475
  }
12427
12476
  ].forEach(function(getChildNode) {
12428
12477
  var childNode = getChildNode();
12429
- if (childNode && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isEmptyTextNode(childNode)) {
12430
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove(childNode);
12478
+ if (childNode && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isEmptyTextNode(childNode)) {
12479
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeRemove(childNode);
12431
12480
  }
12432
12481
  });
12433
12482
  } else {
12434
12483
  _this.area.appendChild(node);
12435
12484
  }
12436
12485
  var setCursor = function setCursor1(node) {
12437
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isBlock(node)) {
12486
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isBlock(node)) {
12438
12487
  var child = node.lastChild;
12439
12488
  if (child) {
12440
12489
  return setCursor(child);
@@ -12443,21 +12492,21 @@ var Selection = /*#__PURE__*/ function() {
12443
12492
  _this.setCursorAfter(node);
12444
12493
  };
12445
12494
  if (insertCursorAfter) {
12446
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isFragment(node)) {
12495
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isFragment(node)) {
12447
12496
  child && setCursor(child);
12448
12497
  } else {
12449
12498
  setCursor(node);
12450
12499
  }
12451
12500
  }
12452
12501
  if (_this.j.o.scrollToPastedContent) {
12453
- (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.scrollIntoViewIfNeeded)(child !== null && child !== void 0 ? child : node, _this.j.editor, _this.doc);
12502
+ (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.scrollIntoViewIfNeeded)(child !== null && child !== void 0 ? child : node, _this.j.editor, _this.doc);
12454
12503
  }
12455
12504
  });
12456
12505
  if (fireChange && this.j.events) {
12457
12506
  this.j.__imdSynchronizeValues();
12458
12507
  }
12459
12508
  if (this.j.events) {
12460
- this.j.e.fire('afterInsertNode', jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isFragment(node) ? child : node);
12509
+ this.j.e.fire('afterInsertNode', jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isFragment(node) ? child : node);
12461
12510
  }
12462
12511
  }
12463
12512
  },
@@ -12479,12 +12528,11 @@ var Selection = /*#__PURE__*/ function() {
12479
12528
  }
12480
12529
  var node = this.j.createInside.div();
12481
12530
  var fragment = this.j.createInside.fragment();
12482
- var lastChild;
12483
12531
  if (!this.isFocused() && this.j.isEditorMode()) {
12484
12532
  this.focus();
12485
12533
  this.restore();
12486
12534
  }
12487
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isNode(html)) {
12535
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isNode(html)) {
12488
12536
  node.innerHTML = html.toString();
12489
12537
  } else {
12490
12538
  node.appendChild(html);
@@ -12492,12 +12540,10 @@ var Selection = /*#__PURE__*/ function() {
12492
12540
  if (!this.j.isEditorMode() && this.j.e.fire('insertHTML', node.innerHTML) === false) {
12493
12541
  return;
12494
12542
  }
12495
- lastChild = node.lastChild;
12496
- if (!lastChild) {
12543
+ if (!node.lastChild) {
12497
12544
  return;
12498
12545
  }
12499
12546
  while(node.firstChild){
12500
- lastChild = node.firstChild;
12501
12547
  fragment.appendChild(node.firstChild);
12502
12548
  }
12503
12549
  this.insertNode(fragment, insertCursorAfter, false);
@@ -12515,8 +12561,8 @@ var Selection = /*#__PURE__*/ function() {
12515
12561
  */ key: "insertImage",
12516
12562
  value: function insertImage(url) {
12517
12563
  var styles = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, defaultWidth = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;
12518
- var image = (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_11__.isString)(url) ? this.j.createInside.element('img') : url;
12519
- if ((0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_11__.isString)(url)) {
12564
+ var image = (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_12__.isString)(url) ? this.j.createInside.element('img') : url;
12565
+ if ((0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_12__.isString)(url)) {
12520
12566
  image.setAttribute('src', url);
12521
12567
  }
12522
12568
  if (defaultWidth != null) {
@@ -12524,10 +12570,10 @@ var Selection = /*#__PURE__*/ function() {
12524
12570
  if (dw && 'auto' !== dw && String(dw).indexOf('px') < 0 && String(dw).indexOf('%') < 0) {
12525
12571
  dw += 'px';
12526
12572
  }
12527
- (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.attr)(image, 'width', dw);
12573
+ (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.attr)(image, 'width', dw);
12528
12574
  }
12529
- if (styles && (typeof styles === "undefined" ? "undefined" : (0,_swc_helpers_type_of__WEBPACK_IMPORTED_MODULE_4__._)(styles)) === 'object') {
12530
- (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.css)(image, styles);
12575
+ if (styles && (typeof styles === "undefined" ? "undefined" : (0,_swc_helpers_type_of__WEBPACK_IMPORTED_MODULE_5__._)(styles)) === 'object') {
12576
+ (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.css)(image, styles);
12531
12577
  }
12532
12578
  var onload = function onload1() {
12533
12579
  if (image.naturalHeight < image.offsetHeight || image.naturalWidth < image.offsetWidth) {
@@ -12568,7 +12614,7 @@ var Selection = /*#__PURE__*/ function() {
12568
12614
  }
12569
12615
  var range = sel.getRangeAt(0);
12570
12616
  var root = range.commonAncestorContainer;
12571
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isHTMLElement(root)) {
12617
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isHTMLElement(root)) {
12572
12618
  root = root.parentElement;
12573
12619
  }
12574
12620
  var nodes = [];
@@ -12577,37 +12623,37 @@ var Selection = /*#__PURE__*/ function() {
12577
12623
  var elementOffset = startOffset < length ? startOffset : length - 1;
12578
12624
  var start = range.startContainer === this.area ? root.childNodes[elementOffset] : range.startContainer;
12579
12625
  var end = range.endContainer === this.area ? root.childNodes[range.endOffset - 1] : range.endContainer;
12580
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isText(start) && start === range.startContainer && range.startOffset === ((_start_nodeValue = start.nodeValue) === null || _start_nodeValue === void 0 ? void 0 : _start_nodeValue.length) && start.nextSibling) {
12626
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isText(start) && start === range.startContainer && range.startOffset === ((_start_nodeValue = start.nodeValue) === null || _start_nodeValue === void 0 ? void 0 : _start_nodeValue.length) && start.nextSibling) {
12581
12627
  start = start.nextSibling;
12582
12628
  }
12583
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isText(end) && end === range.endContainer && range.endOffset === 0 && end.previousSibling) {
12629
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isText(end) && end === range.endContainer && range.endOffset === 0 && end.previousSibling) {
12584
12630
  end = end.previousSibling;
12585
12631
  }
12586
12632
  var checkElm = function checkElm(node) {
12587
- if (node && node !== root && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isEmptyTextNode(node) && !(0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_11__.isMarker)(node)) {
12633
+ if (node && node !== root && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isEmptyTextNode(node) && !(0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_12__.isMarker)(node)) {
12588
12634
  nodes.push(node);
12589
12635
  }
12590
12636
  };
12591
12637
  checkElm(start);
12592
- if (start !== end && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(root, start, true)) {
12593
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.find(start, function(node) {
12638
+ if (start !== end && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(root, start, true)) {
12639
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.find(start, function(node) {
12594
12640
  checkElm(node);
12595
12641
  // checks parentElement as well because partial selections are not equal to entire element
12596
12642
  return node === end || node && node.contains && node.contains(end);
12597
12643
  }, root, true, false);
12598
12644
  }
12599
12645
  var forEvery = function forEvery1(current) {
12600
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(_this.j.editor, current, true)) {
12646
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(_this.j.editor, current, true)) {
12601
12647
  return;
12602
12648
  }
12603
12649
  if (current.nodeName.match(/^(UL|OL)$/)) {
12604
- return (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.toArray)(current.childNodes).forEach(forEvery);
12650
+ return (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.toArray)(current.childNodes).forEach(forEvery);
12605
12651
  }
12606
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isTag(current, 'li')) {
12652
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isTag(current, 'li')) {
12607
12653
  if (current.firstChild) {
12608
12654
  current = current.firstChild;
12609
12655
  } else {
12610
- var currentB = _this.j.createInside.text(jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.INVISIBLE_SPACE);
12656
+ var currentB = _this.j.createInside.text(jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.INVISIBLE_SPACE);
12611
12657
  current.appendChild(currentB);
12612
12658
  current = currentB;
12613
12659
  }
@@ -12615,10 +12661,11 @@ var Selection = /*#__PURE__*/ function() {
12615
12661
  callback(current);
12616
12662
  };
12617
12663
  if (nodes.length === 0) {
12618
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isEmptyTextNode(start)) {
12664
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isEmptyTextNode(start)) {
12619
12665
  nodes.push(start);
12620
12666
  }
12621
- if (start.firstChild) {
12667
+ // `start` can be undefined for an empty root
12668
+ if (start === null || start === void 0 ? void 0 : start.firstChild) {
12622
12669
  nodes.push(start.firstChild);
12623
12670
  }
12624
12671
  }
@@ -12638,24 +12685,23 @@ var Selection = /*#__PURE__*/ function() {
12638
12685
  value: function cursorInTheEdge(start, parentBlock) {
12639
12686
  var _this = this;
12640
12687
  var fake = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;
12641
- var _this_sel;
12642
- var end = !start, range = (_this_sel = this.sel) === null || _this_sel === void 0 ? void 0 : _this_sel.getRangeAt(0);
12688
+ var end = !start, sel = this.sel, range = (sel === null || sel === void 0 ? void 0 : sel.rangeCount) ? sel.getRangeAt(0) : null;
12643
12689
  fake !== null && fake !== void 0 ? fake : fake = this.current(false);
12644
- if (!range || !fake || !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(parentBlock, fake, true)) {
12690
+ if (!range || !fake || !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(parentBlock, fake, true)) {
12645
12691
  return null;
12646
12692
  }
12647
12693
  var container = start ? range.startContainer : range.endContainer;
12648
12694
  var offset = start ? range.startOffset : range.endOffset;
12649
12695
  var isSignificant = function isSignificant(elm) {
12650
- return Boolean(elm && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isTag(elm, 'br') && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isEmptyTextNode(elm) && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isTemporary(elm) && !(jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isElement(elm) && _this.j.e.fire('isInvisibleForCursor', elm) === true));
12696
+ return Boolean(elm && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isTag(elm, 'br') && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isEmptyTextNode(elm) && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isTemporary(elm) && !(jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isElement(elm) && _this.j.e.fire('isInvisibleForCursor', elm) === true));
12651
12697
  };
12652
12698
  // check right offset
12653
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isText(container)) {
12654
- if ((0,_helpers__WEBPACK_IMPORTED_MODULE_15__.cursorInTheEdgeOfString)(container, offset, start, end)) {
12699
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isText(container)) {
12700
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_16__.cursorInTheEdgeOfString)(container, offset, start, end)) {
12655
12701
  return false;
12656
12702
  }
12657
12703
  } else {
12658
- var children = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.toArray)(container.childNodes);
12704
+ var children = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.toArray)(container.childNodes);
12659
12705
  if (end) {
12660
12706
  if (children.slice(offset).some(isSignificant)) {
12661
12707
  return false;
@@ -12668,7 +12714,7 @@ var Selection = /*#__PURE__*/ function() {
12668
12714
  }
12669
12715
  var next = fake;
12670
12716
  while(next && next !== parentBlock){
12671
- var nextOne = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.sibling(next, start);
12717
+ var nextOne = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.sibling(next, start);
12672
12718
  if (!nextOne) {
12673
12719
  next = next.parentNode;
12674
12720
  continue;
@@ -12722,18 +12768,18 @@ var Selection = /*#__PURE__*/ function() {
12722
12768
  */ function setCursorNearWith(node, inStart) {
12723
12769
  var _this = this;
12724
12770
  this.errorNode(node);
12725
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.up(node, function(elm) {
12771
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.up(node, function(elm) {
12726
12772
  return elm === _this.area || elm && elm.parentNode === _this.area;
12727
12773
  }, this.area)) {
12728
- throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.error)('Node element must be in editor');
12774
+ throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.error)('Node element must be in editor');
12729
12775
  }
12730
12776
  var range = this.createRange();
12731
12777
  var fakeNode = null;
12732
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isText(node)) {
12778
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isText(node)) {
12733
12779
  fakeNode = this.j.createInside.fake();
12734
12780
  inStart ? range.setStartBefore(node) : range.setEndAfter(node);
12735
12781
  range.collapse(inStart);
12736
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeInsertNode(range, fakeNode);
12782
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeInsertNode(range, fakeNode);
12737
12783
  range.selectNode(fakeNode);
12738
12784
  } else {
12739
12785
  if (inStart) {
@@ -12759,23 +12805,23 @@ var Selection = /*#__PURE__*/ function() {
12759
12805
  var _this = this;
12760
12806
  var inStart = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
12761
12807
  this.errorNode(node);
12762
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.up(node, function(elm) {
12808
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.up(node, function(elm) {
12763
12809
  return elm === _this.area || elm && elm.parentNode === _this.area;
12764
12810
  }, this.area)) {
12765
- throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.error)('Node element must be in editor');
12811
+ throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.error)('Node element must be in editor');
12766
12812
  }
12767
12813
  var range = this.createRange();
12768
12814
  var start = node, last = node;
12769
12815
  do {
12770
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isText(start) || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isTag(start, jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.INSEPARABLE_TAGS)) {
12816
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isText(start) || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isTag(start, jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.INSEPARABLE_TAGS)) {
12771
12817
  break;
12772
12818
  }
12773
12819
  last = start;
12774
12820
  start = inStart ? start.firstChild : start.lastChild;
12775
12821
  }while (start);
12776
12822
  if (!start) {
12777
- var fakeNode = this.j.createInside.text(jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.INVISIBLE_SPACE);
12778
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isTag(last, jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.INSEPARABLE_TAGS)) {
12823
+ var fakeNode = this.j.createInside.text(jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.INVISIBLE_SPACE);
12824
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isTag(last, jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.INSEPARABLE_TAGS)) {
12779
12825
  last.appendChild(fakeNode);
12780
12826
  last = fakeNode;
12781
12827
  } else {
@@ -12783,11 +12829,11 @@ var Selection = /*#__PURE__*/ function() {
12783
12829
  }
12784
12830
  }
12785
12831
  var workElm = start || last;
12786
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isTag(workElm, jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.INSEPARABLE_TAGS)) {
12832
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isTag(workElm, jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.INSEPARABLE_TAGS)) {
12787
12833
  range.selectNodeContents(workElm);
12788
12834
  range.collapse(inStart);
12789
12835
  } else {
12790
- inStart || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isTag(workElm, 'br') ? range.setStartBefore(workElm) : range.setEndAfter(workElm);
12836
+ inStart || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isTag(workElm, 'br') ? range.setStartBefore(workElm) : range.setEndAfter(workElm);
12791
12837
  range.collapse(inStart);
12792
12838
  }
12793
12839
  this.selectRange(range);
@@ -12824,10 +12870,10 @@ var Selection = /*#__PURE__*/ function() {
12824
12870
  var _this = this;
12825
12871
  var inward = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
12826
12872
  this.errorNode(node);
12827
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.up(node, function(elm) {
12873
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.up(node, function(elm) {
12828
12874
  return elm === _this.area || elm && elm.parentNode === _this.area;
12829
12875
  }, this.area)) {
12830
- throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.error)('Node element must be in editor');
12876
+ throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.error)('Node element must be in editor');
12831
12877
  }
12832
12878
  var range = this.createRange();
12833
12879
  range[inward ? 'selectNodeContents' : 'selectNode'](node);
@@ -12862,14 +12908,14 @@ var Selection = /*#__PURE__*/ function() {
12862
12908
  * Wrap all selected fragments inside Tag or apply some callback
12863
12909
  */ function wrapInTagGen(fakes) {
12864
12910
  var font, elms, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, font1, firstChild, lastChild, err;
12865
- return (0,_swc_helpers_ts_generator__WEBPACK_IMPORTED_MODULE_6__._)(this, function(_state) {
12911
+ return (0,_swc_helpers_ts_generator__WEBPACK_IMPORTED_MODULE_7__._)(this, function(_state) {
12866
12912
  switch(_state.label){
12867
12913
  case 0:
12868
12914
  if (!this.isCollapsed()) return [
12869
12915
  3,
12870
12916
  2
12871
12917
  ];
12872
- font = this.jodit.createInside.element('font', jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.INVISIBLE_SPACE);
12918
+ font = this.jodit.createInside.element('font', jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.INVISIBLE_SPACE);
12873
12919
  this.insertNode(font, false, false);
12874
12920
  if (fakes && fakes[0]) {
12875
12921
  font.appendChild(fakes[0]);
@@ -12880,25 +12926,25 @@ var Selection = /*#__PURE__*/ function() {
12880
12926
  ];
12881
12927
  case 1:
12882
12928
  _state.sent();
12883
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.unwrap(font);
12929
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.unwrap(font);
12884
12930
  return [
12885
12931
  2
12886
12932
  ];
12887
12933
  case 2:
12888
12934
  // fix issue https://github.com/xdan/jodit/issues/65
12889
- (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.$$)('*[style*=font-size]', this.area).forEach(function(elm) {
12890
- (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.attr)(elm, 'data-font-size', elm.style.fontSize.toString());
12935
+ (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.$$)('*[style*=font-size]', this.area).forEach(function(elm) {
12936
+ (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.attr)(elm, 'data-font-size', elm.style.fontSize.toString());
12891
12937
  elm.style.removeProperty('font-size');
12892
12938
  });
12893
12939
  this.j.nativeExecCommand('fontsize', false, '7');
12894
- (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.$$)('*[data-font-size]', this.area).forEach(function(elm) {
12895
- var fontSize = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.attr)(elm, 'data-font-size');
12940
+ (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.$$)('*[data-font-size]', this.area).forEach(function(elm) {
12941
+ var fontSize = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.attr)(elm, 'data-font-size');
12896
12942
  if (fontSize) {
12897
12943
  elm.style.fontSize = fontSize;
12898
- (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.attr)(elm, 'data-font-size', null);
12944
+ (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.attr)(elm, 'data-font-size', null);
12899
12945
  }
12900
12946
  });
12901
- elms = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.$$)('font[size="7"]', this.area);
12947
+ elms = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.$$)('font[size="7"]', this.area);
12902
12948
  _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
12903
12949
  _state.label = 3;
12904
12950
  case 3:
@@ -12917,18 +12963,18 @@ var Selection = /*#__PURE__*/ function() {
12917
12963
  ];
12918
12964
  font1 = _step.value;
12919
12965
  firstChild = font1.firstChild, lastChild = font1.lastChild;
12920
- if (firstChild && firstChild === lastChild && (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_11__.isMarker)(firstChild)) {
12921
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.unwrap(font1);
12966
+ if (firstChild && firstChild === lastChild && (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_12__.isMarker)(firstChild)) {
12967
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.unwrap(font1);
12922
12968
  return [
12923
12969
  3,
12924
12970
  6
12925
12971
  ];
12926
12972
  }
12927
- if (firstChild && (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_11__.isMarker)(firstChild)) {
12928
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.before(font1, firstChild);
12973
+ if (firstChild && (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_12__.isMarker)(firstChild)) {
12974
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.before(font1, firstChild);
12929
12975
  }
12930
- if (lastChild && (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_11__.isMarker)(lastChild)) {
12931
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.after(font1, lastChild);
12976
+ if (lastChild && (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_12__.isMarker)(lastChild)) {
12977
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.after(font1, lastChild);
12932
12978
  }
12933
12979
  return [
12934
12980
  4,
@@ -12936,7 +12982,7 @@ var Selection = /*#__PURE__*/ function() {
12936
12982
  ];
12937
12983
  case 5:
12938
12984
  _state.sent();
12939
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.unwrap(font1);
12985
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.unwrap(font1);
12940
12986
  _state.label = 6;
12941
12987
  case 6:
12942
12988
  _iteratorNormalCompletion = true;
@@ -12989,20 +13035,20 @@ var Selection = /*#__PURE__*/ function() {
12989
13035
  for(var _iterator = this.wrapInTagGen()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
12990
13036
  var font = _step.value;
12991
13037
  try {
12992
- if (font.firstChild && font.firstChild === font.lastChild && (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_11__.isMarker)(font.firstChild)) {
13038
+ if (font.firstChild && font.firstChild === font.lastChild && (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_12__.isMarker)(font.firstChild)) {
12993
13039
  continue;
12994
13040
  }
12995
- if ((0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_11__.isFunction)(tagOrCallback)) {
13041
+ if ((0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_12__.isFunction)(tagOrCallback)) {
12996
13042
  tagOrCallback(font);
12997
13043
  } else {
12998
- result.push(jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.replace(font, tagOrCallback, this.j.createInside));
13044
+ result.push(jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.replace(font, tagOrCallback, this.j.createInside));
12999
13045
  }
13000
13046
  } finally{
13001
13047
  var pn = font.parentNode;
13002
13048
  if (pn) {
13003
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.unwrap(font);
13004
- if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isEmpty(pn)) {
13005
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.unwrap(pn);
13049
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.unwrap(font);
13050
+ if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isEmpty(pn)) {
13051
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.unwrap(pn);
13006
13052
  }
13007
13053
  }
13008
13054
  }
@@ -13042,8 +13088,8 @@ var Selection = /*#__PURE__*/ function() {
13042
13088
  * ```
13043
13089
  */ key: "commitStyle",
13044
13090
  value: function commitStyle(options) {
13045
- (0,jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_12__.assert)((0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.size)(options) > 0, 'Need to pass at least one option');
13046
- var styleElm = new _style_commit_style__WEBPACK_IMPORTED_MODULE_14__.CommitStyle(options);
13091
+ (0,jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_13__.assert)((0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.size)(options) > 0, 'Need to pass at least one option');
13092
+ var styleElm = new _style_commit_style__WEBPACK_IMPORTED_MODULE_15__.CommitStyle(options);
13047
13093
  styleElm.apply(this.j);
13048
13094
  }
13049
13095
  },
@@ -13064,16 +13110,16 @@ var Selection = /*#__PURE__*/ function() {
13064
13110
  try {
13065
13111
  if (cursorOnTheRight || cursorOnTheLeft) {
13066
13112
  if (edge) {
13067
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.before(edge, br);
13113
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.before(edge, br);
13068
13114
  } else {
13069
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeInsertNode(range, br);
13115
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeInsertNode(range, br);
13070
13116
  }
13071
13117
  var clearBR = function clearBR(start, getNext) {
13072
13118
  var next = getNext(start);
13073
13119
  while(next){
13074
13120
  var nextSib = getNext(next);
13075
- if (next && (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isTag(next, 'br') || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isEmptyTextNode(next))) {
13076
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove(next);
13121
+ if (next && (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isTag(next, 'br') || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isEmptyTextNode(next))) {
13122
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeRemove(next);
13077
13123
  } else {
13078
13124
  break;
13079
13125
  }
@@ -13086,8 +13132,8 @@ var Selection = /*#__PURE__*/ function() {
13086
13132
  clearBR(br, function(n) {
13087
13133
  return n.previousSibling;
13088
13134
  });
13089
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.after(br, nextFake);
13090
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.before(br, prevFake);
13135
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.after(br, nextFake);
13136
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.before(br, prevFake);
13091
13137
  if (cursorOnTheRight) {
13092
13138
  leftRange.setEndBefore(br);
13093
13139
  range.setEndBefore(br);
@@ -13100,11 +13146,11 @@ var Selection = /*#__PURE__*/ function() {
13100
13146
  }
13101
13147
  var fragment = leftRange.extractContents();
13102
13148
  var clearEmpties = function clearEmpties(node) {
13103
- return jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.each(node, function(node) {
13104
- return jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isEmptyTextNode(node) && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove(node);
13149
+ return jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.each(node, function(node) {
13150
+ return jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isEmptyTextNode(node) && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeRemove(node);
13105
13151
  });
13106
13152
  };
13107
- (0,jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_12__.assert)(currentBox.parentNode, 'Splitting fails');
13153
+ (0,jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_13__.assert)(currentBox.parentNode, 'Splitting fails');
13108
13154
  try {
13109
13155
  clearEmpties(fragment);
13110
13156
  clearEmpties(currentBox);
@@ -13115,7 +13161,7 @@ var Selection = /*#__PURE__*/ function() {
13115
13161
  this.selectRange(range1);
13116
13162
  }
13117
13163
  } catch (e) {
13118
- if (!jodit_core_constants__WEBPACK_IMPORTED_MODULE_7__.IS_PROD) {
13164
+ if (!jodit_core_constants__WEBPACK_IMPORTED_MODULE_8__.IS_PROD) {
13119
13165
  throw e;
13120
13166
  }
13121
13167
  }
@@ -13130,14 +13176,18 @@ var Selection = /*#__PURE__*/ function() {
13130
13176
  fillFakeParent(prevFake);
13131
13177
  fillFakeParent(nextFake);
13132
13178
  } finally{
13133
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove(prevFake);
13134
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove(nextFake);
13179
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeRemove(prevFake);
13180
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeRemove(nextFake);
13135
13181
  }
13136
13182
  return currentBox.previousElementSibling;
13137
13183
  }
13138
13184
  },
13139
13185
  {
13140
- key: "expandSelection",
13186
+ /**
13187
+ * Expands the non-collapsed selection outward: boundaries positioned on the
13188
+ * edge of their parents are moved out of them (e.g. `<p><b>|test|</b></p>`
13189
+ * becomes `<p>|<b>test</b>|</p>`)
13190
+ */ key: "expandSelection",
13141
13191
  value: function expandSelection() {
13142
13192
  var _this = this;
13143
13193
  if (this.isCollapsed()) {
@@ -13145,32 +13195,32 @@ var Selection = /*#__PURE__*/ function() {
13145
13195
  }
13146
13196
  var range = this.range;
13147
13197
  var c = range.cloneRange();
13148
- if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(this.j.editor, range.commonAncestorContainer, true)) {
13198
+ if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(this.j.editor, range.commonAncestorContainer, true)) {
13149
13199
  return this;
13150
13200
  }
13151
13201
  var moveMaxEdgeFake = function moveMaxEdgeFake(start) {
13152
13202
  var fake = _this.j.createInside.fake();
13153
13203
  var r = range.cloneRange();
13154
13204
  r.collapse(start);
13155
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeInsertNode(r, fake);
13156
- (0,jodit_core_selection_helpers_move_the_node_along_the_edge_outward__WEBPACK_IMPORTED_MODULE_13__.moveTheNodeAlongTheEdgeOutward)(fake, start, _this.j.editor);
13205
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeInsertNode(r, fake);
13206
+ (0,jodit_core_selection_helpers_move_the_node_along_the_edge_outward__WEBPACK_IMPORTED_MODULE_14__.moveTheNodeAlongTheEdgeOutward)(fake, start, _this.j.editor);
13157
13207
  return fake;
13158
13208
  };
13159
13209
  var leftFake = moveMaxEdgeFake(true);
13160
13210
  var rightFake = moveMaxEdgeFake(false);
13161
13211
  c.setStartAfter(leftFake);
13162
13212
  c.setEndBefore(rightFake);
13163
- var leftBox = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.findSibling(leftFake, false);
13164
- var rightBox = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.findSibling(rightFake, true);
13213
+ var leftBox = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.findSibling(leftFake, false);
13214
+ var rightBox = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.findSibling(rightFake, true);
13165
13215
  if (leftBox !== rightBox) {
13166
- var rightInsideLeft = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isElement(leftBox) && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(leftBox, rightFake);
13167
- var leftInsideRight = !rightInsideLeft && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isElement(rightBox) && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(rightBox, leftFake);
13216
+ var rightInsideLeft = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isElement(leftBox) && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(leftBox, rightFake);
13217
+ var leftInsideRight = !rightInsideLeft && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isElement(rightBox) && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(rightBox, leftFake);
13168
13218
  if (rightInsideLeft || leftInsideRight) {
13169
13219
  var child = rightInsideLeft ? leftBox : rightBox, container = child;
13170
- while(jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isElement(child)){
13220
+ while(jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isElement(child)){
13171
13221
  child = rightInsideLeft ? child.firstElementChild : child.lastElementChild;
13172
13222
  if (child) {
13173
- var isInside = rightInsideLeft ? jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(child, rightFake) : jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.isOrContains(child, leftFake);
13223
+ var isInside = rightInsideLeft ? jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(child, rightFake) : jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.isOrContains(child, leftFake);
13174
13224
  if (isInside) {
13175
13225
  container = child;
13176
13226
  }
@@ -13184,9 +13234,9 @@ var Selection = /*#__PURE__*/ function() {
13184
13234
  }
13185
13235
  }
13186
13236
  this.selectRange(c);
13187
- jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_9__.Dom.safeRemove(leftFake, rightFake);
13237
+ jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_10__.Dom.safeRemove(leftFake, rightFake);
13188
13238
  if (this.isCollapsed()) {
13189
- throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_10__.error)('Selection is collapsed');
13239
+ throw (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_11__.error)('Selection is collapsed');
13190
13240
  }
13191
13241
  return this;
13192
13242
  }
@@ -13194,20 +13244,20 @@ var Selection = /*#__PURE__*/ function() {
13194
13244
  ]);
13195
13245
  return Selection;
13196
13246
  }();
13197
- (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__decorate)([
13198
- jodit_core_decorators__WEBPACK_IMPORTED_MODULE_8__.autobind
13247
+ (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_6__.__decorate)([
13248
+ jodit_core_decorators__WEBPACK_IMPORTED_MODULE_9__.autobind
13199
13249
  ], Selection.prototype, "createRange", null);
13200
- (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__decorate)([
13201
- jodit_core_decorators__WEBPACK_IMPORTED_MODULE_8__.autobind
13250
+ (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_6__.__decorate)([
13251
+ jodit_core_decorators__WEBPACK_IMPORTED_MODULE_9__.autobind
13202
13252
  ], Selection.prototype, "focus", null);
13203
- (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__decorate)([
13204
- jodit_core_decorators__WEBPACK_IMPORTED_MODULE_8__.autobind
13253
+ (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_6__.__decorate)([
13254
+ jodit_core_decorators__WEBPACK_IMPORTED_MODULE_9__.autobind
13205
13255
  ], Selection.prototype, "setCursorAfter", null);
13206
- (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__decorate)([
13207
- jodit_core_decorators__WEBPACK_IMPORTED_MODULE_8__.autobind
13256
+ (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_6__.__decorate)([
13257
+ jodit_core_decorators__WEBPACK_IMPORTED_MODULE_9__.autobind
13208
13258
  ], Selection.prototype, "setCursorBefore", null);
13209
- (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__decorate)([
13210
- jodit_core_decorators__WEBPACK_IMPORTED_MODULE_8__.autobind
13259
+ (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_6__.__decorate)([
13260
+ jodit_core_decorators__WEBPACK_IMPORTED_MODULE_9__.autobind
13211
13261
  ], Selection.prototype, "setCursorIn", null);
13212
13262
 
13213
13263
 
@@ -13652,12 +13702,11 @@ if (jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.globalDocument) {
13652
13702
 
13653
13703
 
13654
13704
  /**
13655
- * Compares whether the given attributes match the element's own attributes
13705
+ * Checks that every attribute from `attrs` is present on the element with
13706
+ * the same value (one-directional match: extra own attributes of the element
13707
+ * are ignored, empty `attrs` matches any element)
13656
13708
  * @private
13657
13709
  */ function isSameAttributes(elm, attrs) {
13658
- if (!elm.attributes.length && !(0,jodit_core_helpers_size_object_size__WEBPACK_IMPORTED_MODULE_0__.size)(attrs)) {
13659
- return true;
13660
- }
13661
13710
  if (!(0,jodit_core_helpers_size_object_size__WEBPACK_IMPORTED_MODULE_0__.size)(attrs)) {
13662
13711
  return true;
13663
13712
  }
@@ -13708,7 +13757,8 @@ function elementsEqualAttributes(elm1, elm2) {
13708
13757
  * @param commitStyle - style commit
13709
13758
  * @param elm - checked item
13710
13759
  * @param strict - strict mode - false - the default tag is suitable for us if it is also in the commit
13711
- * @param strictStyle - strict style mode - true - the element has the same style keys as in the commit, but not their values
13760
+ * @param strictStyle - strict style mode - true - the element must have the same style keys AND values
13761
+ * as in the commit, false - matching style keys are enough
13712
13762
  * @private
13713
13763
  */ function isSuitElement(commitStyle, elm, strict) {
13714
13764
  var strictStyle = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true;
@@ -13823,6 +13873,13 @@ function unwrapList(mode, list, li, jodit, cs) {
13823
13873
  (0,jodit_core_selection_style_api_extract__WEBPACK_IMPORTED_MODULE_2__.extractSelectedPart)(list, li, jodit);
13824
13874
  (0,jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_1__.assert)(jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(li.parentElement), 'Element should be inside the list');
13825
13875
  jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.unwrap(li.parentElement);
13876
+ // In the REPLACE mode the content will be immediately wrapped in a `li`
13877
+ // of the new list inside `wrapList`, so it should stay in the document.
13878
+ // Replacing it with a fragment here would dissolve the content
13879
+ // (with `enter: 'br'`) and the new list would never be inserted.
13880
+ if (mode === jodit_core_selection_style_constants__WEBPACK_IMPORTED_MODULE_4__.REPLACE) {
13881
+ return li;
13882
+ }
13826
13883
  return jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.replace(li, jodit.o.enter.toLowerCase() !== 'br' ? jodit.o.enter : jodit.createInside.fragment(), jodit.createInside);
13827
13884
  }
13828
13885
 
@@ -13993,7 +14050,9 @@ function toggleClass(jodit, value, elm, mode, dry) {
13993
14050
  function toggleAttribute(jodit, value, elm, key, dry, mode) {
13994
14051
  (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_7__.assert)((0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_3__.isString)(value) || (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_3__.isNumber)(value) || (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_3__.isBoolean)(value) || value == null, 'Attribute value must be a string or number or boolean or null');
13995
14052
  var hook = jodit.e.fire.bind(jodit.e, "".concat(jodit_core_selection_style_constants__WEBPACK_IMPORTED_MODULE_10__._PREFIX, "AfterToggleAttribute"));
13996
- if ((0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_7__.attr)(elm, key) === value) {
14053
+ // `attr()` getter always returns a string, so a number/boolean value
14054
+ // must be normalized, otherwise the toggle-off branch is unreachable
14055
+ if ((0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_7__.attr)(elm, key) === (value == null ? value : String(value))) {
13997
14056
  !dry && (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_7__.attr)(elm, key, null);
13998
14057
  mode = jodit_core_selection_style_constants__WEBPACK_IMPORTED_MODULE_10__.UNSET;
13999
14058
  !dry && hook(mode, elm, key, value);
@@ -14367,7 +14426,7 @@ var CommitStyle = /*#__PURE__*/ function() {
14367
14426
  if (!data) {
14368
14427
  return false;
14369
14428
  }
14370
- return data[key];
14429
+ return Boolean(data[key]);
14371
14430
  }
14372
14431
  },
14373
14432
  {
@@ -14394,7 +14453,7 @@ var CommitStyle = /*#__PURE__*/ function() {
14394
14453
  {
14395
14454
  key: "elementIsBlock",
14396
14455
  get: /**
14397
- * New element is blocked
14456
+ * New element is a block element
14398
14457
  */ function get() {
14399
14458
  return Boolean(this.options.element && jodit_core_constants__WEBPACK_IMPORTED_MODULE_3__.IS_BLOCK.test(this.options.element));
14400
14459
  }
@@ -48332,6 +48391,11 @@ var AceEditor = /*#__PURE__*/ function(SourceEditor) {
48332
48391
  _this.instance.setOption('rtlText', true);
48333
48392
  _this.instance.setOption('rtl', true);
48334
48393
  }
48394
+ // Forward every native ACE option the user provided (theme,
48395
+ // mode, fontSize, tabSize, …). Without this only the handful of
48396
+ // keys explicitly wired below were applied and extras such as
48397
+ // `fontSize` were silently ignored. See #1285
48398
+ _this.instance.setOptions(editor.o.sourceEditorNativeOptions);
48335
48399
  _this.instance.setTheme(editor.o.sourceEditorNativeOptions.theme);
48336
48400
  _this.instance.renderer.setShowGutter(editor.o.sourceEditorNativeOptions.showGutter);
48337
48401
  _this.instance.getSession().setMode(editor.o.sourceEditorNativeOptions.mode);