jodit-pro-react 5.6.18 → 5.6.20

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.
@@ -2653,6 +2653,11 @@ a + .jodit-file-browser-tree__source-title {
2653
2653
  opacity: .3;
2654
2654
  pointer-events: none;
2655
2655
  }
2656
+ .jodit-toolbar-button__button:focus:not([disabled]) {
2657
+ background-color: var(--jd-color-button-background-hover);
2658
+ opacity: 1;
2659
+ outline: 0;
2660
+ }
2656
2661
  .jodit-toolbar-button__trigger {
2657
2662
  align-items: center;
2658
2663
  border-radius: 0 var(--jd-border-radius-default) var(--jd-border-radius-default) 0;
@@ -2664,6 +2669,11 @@ a + .jodit-file-browser-tree__source-title {
2664
2669
  --jd-button-trigger-size:14px;
2665
2670
  width: calc(var(--jd-button-trigger-size, 14px) + 2px);
2666
2671
  }
2672
+ .jodit-toolbar-button__trigger:focus:not([disabled]) {
2673
+ background-color: var(--jd-color-button-background-hover);
2674
+ opacity: 1;
2675
+ outline: 0;
2676
+ }
2667
2677
  .jodit-toolbar-button__trigger:focus-visible:not([disabled]),
2668
2678
  .jodit-toolbar-button__trigger:hover:not([disabled]) {
2669
2679
  background-color: var(--jd-color-button-background-hover);
@@ -3370,6 +3380,11 @@ a + .jodit-file-browser-tree__source-title {
3370
3380
  opacity: .3;
3371
3381
  pointer-events: none;
3372
3382
  }
3383
+ .jodit-toolbar-select__button:focus:not([disabled]) {
3384
+ background-color: var(--jd-color-button-background-hover);
3385
+ opacity: 1;
3386
+ outline: 0;
3387
+ }
3373
3388
  .jodit-toolbar-select__trigger {
3374
3389
  align-items: center;
3375
3390
  border-radius: 0 var(--jd-border-radius-default) var(--jd-border-radius-default) 0;
@@ -3381,6 +3396,11 @@ a + .jodit-file-browser-tree__source-title {
3381
3396
  --jd-button-trigger-size:14px;
3382
3397
  width: calc(var(--jd-button-trigger-size, 14px) + 2px);
3383
3398
  }
3399
+ .jodit-toolbar-select__trigger:focus:not([disabled]) {
3400
+ background-color: var(--jd-color-button-background-hover);
3401
+ opacity: 1;
3402
+ outline: 0;
3403
+ }
3384
3404
  .jodit-toolbar-select__trigger:focus-visible:not([disabled]),
3385
3405
  .jodit-toolbar-select__trigger:hover:not([disabled]) {
3386
3406
  background-color: var(--jd-color-button-background-hover);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  JoditEditor_default
3
- } from "./chunk-VWIIE462.mjs";
3
+ } from "./chunk-K664ZXD6.mjs";
4
4
  export {
5
5
  JoditEditor_default as default
6
6
  };
@@ -155,9 +155,11 @@ __export(constants_exports, {
155
155
  KEY_BACKSPACE: () => KEY_BACKSPACE,
156
156
  KEY_DELETE: () => KEY_DELETE,
157
157
  KEY_DOWN: () => KEY_DOWN,
158
+ KEY_END: () => KEY_END,
158
159
  KEY_ENTER: () => KEY_ENTER,
159
160
  KEY_ESC: () => KEY_ESC,
160
161
  KEY_F3: () => KEY_F3,
162
+ KEY_HOME: () => KEY_HOME,
161
163
  KEY_LEFT: () => KEY_LEFT,
162
164
  KEY_META: () => KEY_META,
163
165
  KEY_RIGHT: () => KEY_RIGHT,
@@ -189,11 +191,11 @@ __export(constants_exports, {
189
191
  globalWindow: () => globalWindow,
190
192
  lang: () => lang
191
193
  });
192
- var APP_VERSION, ES, IS_ES_MODERN, IS_ES_NEXT, IS_PROD, IS_TEST, FAT_MODE, HOMEPAGE, SET_TEST, TOKENS, INVISIBLE_SPACE, NBSP_SPACE, INVISIBLE_SPACE_REG_EXP, INVISIBLE_SPACE_REG_EXP_END, INVISIBLE_SPACE_REG_EXP_START, SPACE_REG_EXP, SPACE_REG_EXP_START, SPACE_REG_EXP_END, globalWindow, globalDocument, IS_BLOCK, IS_INLINE, LIST_TAGS, __UNSEPARABLE_TAGS, INSEPARABLE_TAGS, NO_EMPTY_TAGS, KEY_META, KEY_BACKSPACE, KEY_TAB, KEY_ENTER, KEY_ESC, KEY_ALT, KEY_LEFT, KEY_UP, KEY_RIGHT, KEY_DOWN, KEY_SPACE, KEY_DELETE, KEY_F3, NEARBY, ACCURACY, COMMAND_KEYS, BR, PARAGRAPH, MODE_WYSIWYG, MODE_SOURCE, MODE_SPLIT, IS_IE, TEXT_PLAIN, TEXT_HTML, TEXT_RTF, MARKER_CLASS, EMULATE_DBLCLICK_TIMEOUT, INSERT_AS_HTML, INSERT_CLEAR_HTML, INSERT_AS_TEXT, INSERT_ONLY_TEXT, SAFE_COUNT_CHANGE_CALL, IS_MAC, KEY_ALIASES, removeScriptName, basePath, isMin, BASE_PATH, BASE_PATH_IS_MIN, TEMP_ATTR, lang, CLIPBOARD_ID, SOURCE_CONSUMER, PASSIVE_EVENTS;
194
+ var APP_VERSION, ES, IS_ES_MODERN, IS_ES_NEXT, IS_PROD, IS_TEST, FAT_MODE, HOMEPAGE, SET_TEST, TOKENS, INVISIBLE_SPACE, NBSP_SPACE, INVISIBLE_SPACE_REG_EXP, INVISIBLE_SPACE_REG_EXP_END, INVISIBLE_SPACE_REG_EXP_START, SPACE_REG_EXP, SPACE_REG_EXP_START, SPACE_REG_EXP_END, globalWindow, globalDocument, IS_BLOCK, IS_INLINE, LIST_TAGS, __UNSEPARABLE_TAGS, INSEPARABLE_TAGS, NO_EMPTY_TAGS, KEY_META, KEY_BACKSPACE, KEY_TAB, KEY_ENTER, KEY_ESC, KEY_ALT, KEY_HOME, KEY_END, KEY_LEFT, KEY_UP, KEY_RIGHT, KEY_DOWN, KEY_SPACE, KEY_DELETE, KEY_F3, NEARBY, ACCURACY, COMMAND_KEYS, BR, PARAGRAPH, MODE_WYSIWYG, MODE_SOURCE, MODE_SPLIT, IS_IE, TEXT_PLAIN, TEXT_HTML, TEXT_RTF, MARKER_CLASS, EMULATE_DBLCLICK_TIMEOUT, INSERT_AS_HTML, INSERT_CLEAR_HTML, INSERT_AS_TEXT, INSERT_ONLY_TEXT, SAFE_COUNT_CHANGE_CALL, IS_MAC, KEY_ALIASES, removeScriptName, basePath, isMin, BASE_PATH, BASE_PATH_IS_MIN, TEMP_ATTR, lang, CLIPBOARD_ID, SOURCE_CONSUMER, PASSIVE_EVENTS;
193
195
  var init_constants = __esm({
194
196
  "node_modules/jodit/esm/core/constants.js"() {
195
197
  "use strict";
196
- APP_VERSION = "4.15.10";
198
+ APP_VERSION = "4.15.14";
197
199
  ES = "es2020";
198
200
  IS_ES_MODERN = true;
199
201
  IS_ES_NEXT = true;
@@ -240,6 +242,8 @@ var init_constants = __esm({
240
242
  KEY_ENTER = "Enter";
241
243
  KEY_ESC = "Escape";
242
244
  KEY_ALT = "Alt";
245
+ KEY_HOME = "Home";
246
+ KEY_END = "End";
243
247
  KEY_LEFT = "ArrowLeft";
244
248
  KEY_UP = "ArrowUp";
245
249
  KEY_RIGHT = "ArrowRight";
@@ -7908,7 +7912,7 @@ var require_tab = __commonJS({
7908
7912
  init_plugin2();
7909
7913
  init_config3();
7910
7914
  init_cases();
7911
- var __decorate73 = exports && exports.__decorate || function(decorators, target, key3, desc) {
7915
+ var __decorate74 = exports && exports.__decorate || function(decorators, target, key3, desc) {
7912
7916
  var c69 = arguments.length, r71 = c69 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key3) : desc, d55;
7913
7917
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
7914
7918
  r71 = Reflect.decorate(decorators, target, key3, desc);
@@ -7941,10 +7945,10 @@ var require_tab = __commonJS({
7941
7945
  beforeDestruct(jodit) {
7942
7946
  }
7943
7947
  };
7944
- __decorate73([
7948
+ __decorate74([
7945
7949
  watch(":keydown.tab")
7946
7950
  ], tab.prototype, "__onTab", null);
7947
- __decorate73([
7951
+ __decorate74([
7948
7952
  watch(":beforeCommand.tab")
7949
7953
  ], tab.prototype, "__onCommand", null);
7950
7954
  pluginSystem.add("tab", tab);
@@ -7973,7 +7977,7 @@ var require_wrap_nodes = __commonJS({
7973
7977
  init_is_string();
7974
7978
  init_plugin2();
7975
7979
  init_config4();
7976
- var __decorate73 = exports && exports.__decorate || function(decorators, target, key3, desc) {
7980
+ var __decorate74 = exports && exports.__decorate || function(decorators, target, key3, desc) {
7977
7981
  var c69 = arguments.length, r71 = c69 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key3) : desc, d55;
7978
7982
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
7979
7983
  r71 = Reflect.decorate(decorators, target, key3, desc);
@@ -8060,10 +8064,10 @@ var require_wrap_nodes = __commonJS({
8060
8064
  jodit.e.fire("internalChange");
8061
8065
  }
8062
8066
  };
8063
- __decorate73([
8067
+ __decorate74([
8064
8068
  autobind
8065
8069
  ], wrapNodes.prototype, "postProcessSetEditorValue", null);
8066
- __decorate73([
8070
+ __decorate74([
8067
8071
  autobind
8068
8072
  ], wrapNodes.prototype, "preprocessInput", null);
8069
8073
  function checkAloneListLeaf(child, jodit) {
@@ -8228,7 +8232,7 @@ var require_dtd = __commonJS({
8228
8232
  init_config5();
8229
8233
  init_after_insert();
8230
8234
  init_before_insert();
8231
- var __decorate73 = exports && exports.__decorate || function(decorators, target, key3, desc) {
8235
+ var __decorate74 = exports && exports.__decorate || function(decorators, target, key3, desc) {
8232
8236
  var c69 = arguments.length, r71 = c69 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key3) : desc, d55;
8233
8237
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
8234
8238
  r71 = Reflect.decorate(decorators, target, key3, desc);
@@ -8256,10 +8260,10 @@ var require_dtd = __commonJS({
8256
8260
  });
8257
8261
  }
8258
8262
  };
8259
- __decorate73([
8263
+ __decorate74([
8260
8264
  watch(":beforeInsertNode")
8261
8265
  ], dtd.prototype, "__onBeforeInsertNode", null);
8262
- __decorate73([
8266
+ __decorate74([
8263
8267
  watch(":afterInsertNode")
8264
8268
  ], dtd.prototype, "__onAfterInsertNode", null);
8265
8269
  pluginSystem.add("dtd", dtd);
@@ -17321,6 +17325,15 @@ var __decorate32 = function(decorators, target, key3, desc) {
17321
17325
  r71 = (c69 < 3 ? d55(r71) : c69 > 3 ? d55(target, key3, r71) : d55(target, key3)) || r71;
17322
17326
  return c69 > 3 && r71 && Object.defineProperty(target, key3, r71), r71;
17323
17327
  };
17328
+ var INPUT_TAGS = /* @__PURE__ */ new Set(["input", "textarea", "select"]);
17329
+ var FOCUSABLE_SELECTOR = [
17330
+ "button:not([disabled])",
17331
+ "a[href]",
17332
+ 'input:not([disabled]):not([type="hidden"])',
17333
+ "select:not([disabled])",
17334
+ "textarea:not([disabled])",
17335
+ '[tabindex]:not([tabindex="-1"])'
17336
+ ].join(",");
17324
17337
  var ToolbarButton = class ToolbarButton2 extends UIButton {
17325
17338
  className() {
17326
17339
  return "ToolbarButton";
@@ -17549,12 +17562,81 @@ var ToolbarButton = class ToolbarButton2 extends UIButton {
17549
17562
  }
17550
17563
  }
17551
17564
  onTriggerKeyDown(e44) {
17552
- if (this.state.disabled || ![KEY_ENTER, KEY_SPACE, " "].includes(e44.key)) {
17565
+ if (this.state.disabled) {
17566
+ return;
17567
+ }
17568
+ if (e44.key === KEY_DOWN) {
17569
+ this.onButtonKeyDown(e44);
17570
+ return;
17571
+ }
17572
+ if (![KEY_ENTER, KEY_SPACE, " "].includes(e44.key)) {
17553
17573
  return;
17554
17574
  }
17555
17575
  e44.preventDefault();
17556
17576
  this.trigger.click();
17557
17577
  }
17578
+ /**
17579
+ * `ArrowDown` on a button with a trigger opens its dropdown and moves the
17580
+ * focus into it, like the WAI-ARIA menu button pattern
17581
+ */
17582
+ onButtonKeyDown(e44) {
17583
+ var _a2;
17584
+ if (e44.key !== KEY_DOWN || this.state.disabled || !this.state.hasTrigger || e44.altKey || e44.ctrlKey || e44.metaKey) {
17585
+ return;
17586
+ }
17587
+ e44.preventDefault();
17588
+ e44.stopPropagation();
17589
+ if (!this.openedPopup) {
17590
+ this.trigger.click();
17591
+ }
17592
+ (_a2 = this.__popupFocusables()[0]) === null || _a2 === void 0 ? void 0 : _a2.focus();
17593
+ }
17594
+ /**
17595
+ * Inside the dropdown: `ArrowDown`/`ArrowUp` walk the items, `Escape` and
17596
+ * `ArrowUp` on the first item close it and give the focus back to the button
17597
+ */
17598
+ __onPopupKeyDown(e44) {
17599
+ if (!this.openedPopup || e44.altKey || e44.ctrlKey || e44.metaKey) {
17600
+ return;
17601
+ }
17602
+ const target = e44.target;
17603
+ if (Dom.isTag(target, INPUT_TAGS) && e44.key !== KEY_ESC) {
17604
+ return;
17605
+ }
17606
+ const items = this.__popupFocusables(), index = items.indexOf(target);
17607
+ switch (e44.key) {
17608
+ case KEY_ESC:
17609
+ this.__closePopup();
17610
+ break;
17611
+ case KEY_UP:
17612
+ if (index <= 0) {
17613
+ this.__closePopup();
17614
+ } else {
17615
+ items[index - 1].focus();
17616
+ }
17617
+ break;
17618
+ case KEY_DOWN:
17619
+ if (!items.length) {
17620
+ return;
17621
+ }
17622
+ items[(index + 1) % items.length].focus();
17623
+ break;
17624
+ default:
17625
+ return;
17626
+ }
17627
+ e44.preventDefault();
17628
+ e44.stopPropagation();
17629
+ }
17630
+ /**
17631
+ * Visible controls of the opened dropdown that can take the focus
17632
+ */
17633
+ __popupFocusables() {
17634
+ const popup = this.openedPopup;
17635
+ if (!popup) {
17636
+ return [];
17637
+ }
17638
+ return Array.from(popup.container.querySelectorAll(FOCUSABLE_SELECTOR)).filter((elm) => Boolean(elm.offsetParent));
17639
+ }
17558
17640
  /**
17559
17641
  * Create an open popup list
17560
17642
  */
@@ -17621,7 +17703,7 @@ var ToolbarButton = class ToolbarButton2 extends UIButton {
17621
17703
  openPopup() {
17622
17704
  this.__closePopup();
17623
17705
  this.openedPopup = new Popup(this.j, false);
17624
- this.j.e.on(this.ow, "mousedown touchstart", this.onOutsideClick).on("escape closeAllPopups", this.onOutsideClick);
17706
+ this.j.e.on(this.ow, "mousedown touchstart", this.onOutsideClick).on("escape closeAllPopups", this.onOutsideClick).on(this.openedPopup.container, "keydown", this.__onPopupKeyDown);
17625
17707
  return this.openedPopup;
17626
17708
  }
17627
17709
  __closePopup() {
@@ -17631,12 +17713,16 @@ var ToolbarButton = class ToolbarButton2 extends UIButton {
17631
17713
  }
17632
17714
  this.openedPopup = null;
17633
17715
  this.j.e.off(this.ow, "mousedown touchstart", this.onOutsideClick).off("escape closeAllPopups", this.onOutsideClick);
17716
+ const { activeElement } = this.od, hadFocus = activeElement && Dom.isOrContains(popup.container, activeElement);
17634
17717
  this.state.activated = false;
17635
17718
  popup.close();
17636
17719
  popup.destruct();
17637
17720
  if (this.trigger) {
17638
17721
  attr(this.trigger, "aria-expanded", false);
17639
17722
  }
17723
+ if (hadFocus) {
17724
+ this.focus();
17725
+ }
17640
17726
  }
17641
17727
  /**
17642
17728
  * Click handler
@@ -17690,6 +17776,12 @@ __decorate32([
17690
17776
  __decorate32([
17691
17777
  watch("trigger:keydown")
17692
17778
  ], ToolbarButton.prototype, "onTriggerKeyDown", null);
17779
+ __decorate32([
17780
+ watch("button:keydown")
17781
+ ], ToolbarButton.prototype, "onButtonKeyDown", null);
17782
+ __decorate32([
17783
+ autobind
17784
+ ], ToolbarButton.prototype, "__onPopupKeyDown", null);
17693
17785
  __decorate32([
17694
17786
  autobind
17695
17787
  ], ToolbarButton.prototype, "onOutsideClick", null);
@@ -21825,11 +21917,6 @@ init_plugin();
21825
21917
 
21826
21918
  // node_modules/jodit/esm/plugins/clean-html/config.js
21827
21919
  init_config();
21828
-
21829
- // node_modules/jodit/esm/plugins/clean-html/eraser.svg.js
21830
- var eraser_svg_default = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <g fill="none"> <path d="m4 12 10-9 7 7-10 10H7l-4-4a3 3 0 0 1 1-4Zm3-3 8 7m-4 4h10"/> </g> </svg> ';
21831
-
21832
- // node_modules/jodit/esm/plugins/clean-html/config.js
21833
21920
  Config.prototype.cleanHTML = {
21834
21921
  timeout: 300,
21835
21922
  removeEmptyElements: true,
@@ -21859,7 +21946,6 @@ Config.prototype.controls.eraser = {
21859
21946
  command: "removeFormat",
21860
21947
  tooltip: "Clear Formatting"
21861
21948
  };
21862
- Icon.set("eraser", eraser_svg_default);
21863
21949
 
21864
21950
  // node_modules/jodit/esm/plugins/clean-html/helpers/get-hash.js
21865
21951
  init_is_string();
@@ -22648,7 +22734,8 @@ var ColorPickerWidget = (editor, callback, coldColor) => {
22648
22734
  }
22649
22735
  return stack.join("");
22650
22736
  };
22651
- Dom.append(form2, editor.c.fromHTML(`<div class="${cn}__groups">${eachColor(editor.o.colors)}</div>`));
22737
+ const groups = isArray(editor.o.colors) ? `<div class="${cn}__group">${eachColor(editor.o.colors)}</div>` : eachColor(editor.o.colors);
22738
+ Dom.append(form2, editor.c.fromHTML(`<div class="${cn}__groups">${groups}</div>`));
22652
22739
  Dom.append(form2, editor.c.fromHTML(`<div data-ref="extra" class="${cn}__extra"></div>`));
22653
22740
  const { extra } = refs(form2);
22654
22741
  Dom.append(extra, editor.c.fromHTML(`<div class="${cn}__hex"><input data-ref="hexInput" type="text" spellcheck="false" aria-label="HEX" placeholder="#FF0000" value="${valueHex || ""}"/></div>`));
@@ -22680,6 +22767,7 @@ var ColorPickerWidget = (editor, callback, coldColor) => {
22680
22767
  e44.stopPropagation();
22681
22768
  applyHexInput();
22682
22769
  });
22770
+ Dom.append(extra, editor.c.fromHTML(`<span class="${cn}__remove" data-color="" title="${editor.i18n("Remove")}">${editor.o.textIcons ? editor.i18n("Remove") : Icon.get("eraser")}</span>`));
22683
22771
  if (editor.o.showBrowserColorPicker && hasBrowserColorPicker()) {
22684
22772
  Dom.append(extra, editor.c.fromHTML(`<div class="${cn}__native">${iconPalette}<input type="color" value="#ffffff"/></div>`));
22685
22773
  editor.e.on(form2, "change", (e44) => {
@@ -22706,7 +22794,7 @@ var ColorPickerWidget = (editor, callback, coldColor) => {
22706
22794
  if ((!target || !target.tagName || Dom.isTag(target, "svg") || Dom.isTag(target, "path")) && target.parentNode) {
22707
22795
  target = Dom.closest(target.parentNode, "span", editor.editor);
22708
22796
  }
22709
- if (!Dom.isTag(target, "span") || !target.classList.contains(cn + "__color-item")) {
22797
+ if (!Dom.isTag(target, "span") || !target.classList.contains(cn + "__color-item") && !target.classList.contains(cn + "__remove")) {
22710
22798
  return;
22711
22799
  }
22712
22800
  const color2 = attr(target, "-color") || "";
@@ -33297,6 +33385,107 @@ function findCell(editor, key3) {
33297
33385
  return cell;
33298
33386
  }
33299
33387
 
33388
+ // node_modules/jodit/esm/plugins/toolbar-navigation/toolbar-navigation.js
33389
+ init_constants();
33390
+ init_autobind();
33391
+ init_watch();
33392
+ init_dom();
33393
+ init_global2();
33394
+ init_attr();
33395
+ init_plugin2();
33396
+ var __decorate70 = function(decorators, target, key3, desc) {
33397
+ var c69 = arguments.length, r71 = c69 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key3) : desc, d55;
33398
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
33399
+ r71 = Reflect.decorate(decorators, target, key3, desc);
33400
+ else
33401
+ for (var i55 = decorators.length - 1; i55 >= 0; i55--)
33402
+ if (d55 = decorators[i55])
33403
+ r71 = (c69 < 3 ? d55(r71) : c69 > 3 ? d55(target, key3, r71) : d55(target, key3)) || r71;
33404
+ return c69 > 3 && r71 && Object.defineProperty(target, key3, r71), r71;
33405
+ };
33406
+ var INPUT_TAGS2 = /* @__PURE__ */ new Set(["input", "textarea", "select"]);
33407
+ var toolbarNavigation = class extends Plugin {
33408
+ /** @override */
33409
+ afterInit(jodit) {
33410
+ jodit.registerCommand("focusToolbar", {
33411
+ hotkeys: "alt+f10",
33412
+ exec: this.focusToolbar
33413
+ });
33414
+ }
33415
+ /** @override */
33416
+ beforeDestruct() {
33417
+ }
33418
+ /**
33419
+ * Moves the focus to the first button of the toolbar.
33420
+ *
33421
+ * Bound to `Alt+F10` by default; remap it like any other command:
33422
+ * `commandToHotkeys: { focusToolbar: 'alt+0' }`
33423
+ */
33424
+ focusToolbar() {
33425
+ const [first] = this.__buttons();
33426
+ first === null || first === void 0 ? void 0 : first.focus();
33427
+ return false;
33428
+ }
33429
+ /**
33430
+ * Arrow keys / `Home` / `End` walk the buttons, `Escape` leaves the toolbar
33431
+ */
33432
+ onKeyDown(e44) {
33433
+ if (e44.defaultPrevented || e44.altKey || e44.ctrlKey || e44.metaKey) {
33434
+ return;
33435
+ }
33436
+ const target = e44.target;
33437
+ if (Dom.isTag(target, INPUT_TAGS2) || Dom.isHTMLElement(target) && target.isContentEditable) {
33438
+ return;
33439
+ }
33440
+ const buttons = this.__buttons();
33441
+ if (!buttons.length) {
33442
+ return;
33443
+ }
33444
+ switch (e44.key) {
33445
+ case KEY_ESC:
33446
+ this.j.s.focus();
33447
+ break;
33448
+ case KEY_HOME:
33449
+ buttons[0].focus();
33450
+ break;
33451
+ case KEY_END:
33452
+ buttons[buttons.length - 1].focus();
33453
+ break;
33454
+ case KEY_LEFT:
33455
+ case KEY_RIGHT: {
33456
+ const index = buttons.findIndex((button2) => button2.container.contains(target));
33457
+ if (index === -1) {
33458
+ return;
33459
+ }
33460
+ const forward = e44.key === KEY_RIGHT !== this.__isRtl(), next = index + (forward ? 1 : -1);
33461
+ buttons[(next + buttons.length) % buttons.length].focus();
33462
+ break;
33463
+ }
33464
+ default:
33465
+ return;
33466
+ }
33467
+ e44.preventDefault();
33468
+ e44.stopPropagation();
33469
+ return false;
33470
+ }
33471
+ /**
33472
+ * Toolbar buttons that can take the focus right now
33473
+ */
33474
+ __buttons() {
33475
+ return this.j.toolbar.buttons.filter((button2) => !button2.state.disabled && button2.container.isConnected);
33476
+ }
33477
+ __isRtl() {
33478
+ return attr(this.j.toolbar.container, "dir") === "rtl";
33479
+ }
33480
+ };
33481
+ __decorate70([
33482
+ autobind
33483
+ ], toolbarNavigation.prototype, "focusToolbar", null);
33484
+ __decorate70([
33485
+ watch("j.toolbar.container:keydown.toolbar-navigation")
33486
+ ], toolbarNavigation.prototype, "onKeyDown", null);
33487
+ pluginSystem.add("toolbarNavigation", toolbarNavigation);
33488
+
33300
33489
  // node_modules/jodit/esm/plugins/video/video.js
33301
33490
  init_global2();
33302
33491
 
@@ -33598,7 +33787,7 @@ function closeSound(owner) {
33598
33787
  }
33599
33788
 
33600
33789
  // node_modules/jodit/esm/plugins/speech-recognize/helpers/recognize-manager.js
33601
- var __decorate70 = function(decorators, target, key3, desc) {
33790
+ var __decorate71 = function(decorators, target, key3, desc) {
33602
33791
  var c69 = arguments.length, r71 = c69 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key3) : desc, d55;
33603
33792
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
33604
33793
  r71 = Reflect.decorate(decorators, target, key3, desc);
@@ -33760,13 +33949,13 @@ var RecognizeManager = class _RecognizeManager extends Eventify {
33760
33949
  }
33761
33950
  };
33762
33951
  RecognizeManager._instances = /* @__PURE__ */ new Set();
33763
- __decorate70([
33952
+ __decorate71([
33764
33953
  autobind
33765
33954
  ], RecognizeManager.prototype, "_onResults", null);
33766
- __decorate70([
33955
+ __decorate71([
33767
33956
  autobind
33768
33957
  ], RecognizeManager.prototype, "_onProgress", null);
33769
- __decorate70([
33958
+ __decorate71([
33770
33959
  autobind
33771
33960
  ], RecognizeManager.prototype, "_onError", null);
33772
33961
 
@@ -33873,7 +34062,7 @@ init_global2();
33873
34062
  init_helpers();
33874
34063
  init_css();
33875
34064
  init_config();
33876
- var __decorate71 = function(decorators, target, key3, desc) {
34065
+ var __decorate72 = function(decorators, target, key3, desc) {
33877
34066
  var c69 = arguments.length, r71 = c69 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key3) : desc, d55;
33878
34067
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
33879
34068
  r71 = Reflect.decorate(decorators, target, key3, desc);
@@ -35045,31 +35234,31 @@ Jodit2.lang = lang;
35045
35234
  Jodit2.core = {
35046
35235
  Plugin
35047
35236
  };
35048
- __decorate71([
35237
+ __decorate72([
35049
35238
  cache
35050
35239
  ], Jodit2.prototype, "createInside", null);
35051
- __decorate71([
35240
+ __decorate72([
35052
35241
  cache
35053
35242
  ], Jodit2.prototype, "message", null);
35054
- __decorate71([
35243
+ __decorate72([
35055
35244
  cache
35056
35245
  ], Jodit2.prototype, "s", null);
35057
- __decorate71([
35246
+ __decorate72([
35058
35247
  cache
35059
35248
  ], Jodit2.prototype, "uploader", null);
35060
- __decorate71([
35249
+ __decorate72([
35061
35250
  cache
35062
35251
  ], Jodit2.prototype, "filebrowser", null);
35063
- __decorate71([
35252
+ __decorate72([
35064
35253
  throttle()
35065
35254
  ], Jodit2.prototype, "synchronizeValues", null);
35066
- __decorate71([
35255
+ __decorate72([
35067
35256
  watch(":internalChange")
35068
35257
  ], Jodit2.prototype, "updateElementValue", null);
35069
- __decorate71([
35258
+ __decorate72([
35070
35259
  autobind
35071
35260
  ], Jodit2.prototype, "__prepareWYSIWYGEditor", null);
35072
- Jodit2 = Jodit_1 = __decorate71([
35261
+ Jodit2 = Jodit_1 = __decorate72([
35073
35262
  derive(Dlgs)
35074
35263
  ], Jodit2);
35075
35264
  function addClassNames(className, elm) {
@@ -35141,7 +35330,7 @@ var zh_cn5 = __toESM(require_zh_cn5());
35141
35330
  var zh_tw5 = __toESM(require_zh_tw5());
35142
35331
 
35143
35332
  // node_modules/jodit/esm/plugins/speech-recognize/speech-recognize.js
35144
- var __decorate72 = function(decorators, target, key3, desc) {
35333
+ var __decorate73 = function(decorators, target, key3, desc) {
35145
35334
  var c69 = arguments.length, r71 = c69 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key3) : desc, d55;
35146
35335
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
35147
35336
  r71 = Reflect.decorate(decorators, target, key3, desc);
@@ -35222,10 +35411,10 @@ var SpeechRecognizeNative = class extends Plugin {
35222
35411
  return false;
35223
35412
  }
35224
35413
  };
35225
- __decorate72([
35414
+ __decorate73([
35226
35415
  watch(":speechRecognizeProgressResult")
35227
35416
  ], SpeechRecognizeNative.prototype, "onSpeechRecognizeProgressResult", null);
35228
- __decorate72([
35417
+ __decorate73([
35229
35418
  watch(":speechRecognizeResult")
35230
35419
  ], SpeechRecognizeNative.prototype, "onSpeechRecognizeResult", null);
35231
35420
  Jodit2.plugins.add("speech-recognize", SpeechRecognizeNative);
@@ -35847,6 +36036,7 @@ __export(icons_exports, {
35847
36036
  chevron: () => chevron_svg_default,
35848
36037
  dots: () => dots_svg_default,
35849
36038
  download: () => download_svg_default,
36039
+ eraser: () => eraser_svg_default,
35850
36040
  eye: () => eye_svg_default,
35851
36041
  file: () => file_svg_default,
35852
36042
  folder: () => folder_svg_default,
@@ -35899,6 +36089,9 @@ var dots_svg_default = '<svg xmlns="http://www.w3.org/2000/svg" width="24" heigh
35899
36089
  // node_modules/jodit/esm/styles/icons/download.svg.js
35900
36090
  var download_svg_default = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <g fill="none"> <path d="M12 3v13m-5-5 5 5 5-5M4 15v4a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-4"/> </g> </svg> ';
35901
36091
 
36092
+ // node_modules/jodit/esm/styles/icons/eraser.svg.js
36093
+ var eraser_svg_default = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <g fill="none"> <path d="m4 12 10-9 7 7-10 10H7l-4-4a3 3 0 0 1 1-4Zm3-3 8 7m-4 4h10"/> </g> </svg> ';
36094
+
35902
36095
  // node_modules/jodit/esm/styles/icons/eye.svg.js
35903
36096
  var eye_svg_default = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <g fill="none"> <path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12Z"/><circle cx="12" cy="12" r="3"/> </g> </svg> ';
35904
36097
 
@@ -55899,6 +56092,7 @@ jodit/esm/plugins/ai-assistant/ai-assistant.js:
55899
56092
  jodit/esm/plugins/table/config.js:
55900
56093
  jodit/esm/plugins/table/table.js:
55901
56094
  jodit/esm/plugins/table-keyboard-navigation/table-keyboard-navigation.js:
56095
+ jodit/esm/plugins/toolbar-navigation/toolbar-navigation.js:
55902
56096
  jodit/esm/plugins/video/config.js:
55903
56097
  jodit/esm/plugins/video/video.js:
55904
56098
  jodit/esm/plugins/xpath/config.js:
@@ -2653,6 +2653,11 @@ a + .jodit-file-browser-tree__source-title {
2653
2653
  opacity: .3;
2654
2654
  pointer-events: none;
2655
2655
  }
2656
+ .jodit-toolbar-button__button:focus:not([disabled]) {
2657
+ background-color: var(--jd-color-button-background-hover);
2658
+ opacity: 1;
2659
+ outline: 0;
2660
+ }
2656
2661
  .jodit-toolbar-button__trigger {
2657
2662
  align-items: center;
2658
2663
  border-radius: 0 var(--jd-border-radius-default) var(--jd-border-radius-default) 0;
@@ -2664,6 +2669,11 @@ a + .jodit-file-browser-tree__source-title {
2664
2669
  --jd-button-trigger-size:14px;
2665
2670
  width: calc(var(--jd-button-trigger-size, 14px) + 2px);
2666
2671
  }
2672
+ .jodit-toolbar-button__trigger:focus:not([disabled]) {
2673
+ background-color: var(--jd-color-button-background-hover);
2674
+ opacity: 1;
2675
+ outline: 0;
2676
+ }
2667
2677
  .jodit-toolbar-button__trigger:focus-visible:not([disabled]),
2668
2678
  .jodit-toolbar-button__trigger:hover:not([disabled]) {
2669
2679
  background-color: var(--jd-color-button-background-hover);
@@ -3370,6 +3380,11 @@ a + .jodit-file-browser-tree__source-title {
3370
3380
  opacity: .3;
3371
3381
  pointer-events: none;
3372
3382
  }
3383
+ .jodit-toolbar-select__button:focus:not([disabled]) {
3384
+ background-color: var(--jd-color-button-background-hover);
3385
+ opacity: 1;
3386
+ outline: 0;
3387
+ }
3373
3388
  .jodit-toolbar-select__trigger {
3374
3389
  align-items: center;
3375
3390
  border-radius: 0 var(--jd-border-radius-default) var(--jd-border-radius-default) 0;
@@ -3381,6 +3396,11 @@ a + .jodit-file-browser-tree__source-title {
3381
3396
  --jd-button-trigger-size:14px;
3382
3397
  width: calc(var(--jd-button-trigger-size, 14px) + 2px);
3383
3398
  }
3399
+ .jodit-toolbar-select__trigger:focus:not([disabled]) {
3400
+ background-color: var(--jd-color-button-background-hover);
3401
+ opacity: 1;
3402
+ outline: 0;
3403
+ }
3384
3404
  .jodit-toolbar-select__trigger:focus-visible:not([disabled]),
3385
3405
  .jodit-toolbar-select__trigger:hover:not([disabled]) {
3386
3406
  background-color: var(--jd-color-button-background-hover);
@@ -2,7 +2,7 @@ import {
2
2
  Config,
3
3
  JoditEditor_default,
4
4
  n
5
- } from "./chunk-VWIIE462.mjs";
5
+ } from "./chunk-K664ZXD6.mjs";
6
6
 
7
7
  // src/index.ts
8
8
  var index_default = JoditEditor_default;