tinymce-rails 7.0.1 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/source/tinymce/tinymce.js +137 -115
  3. data/lib/tinymce/rails/version.rb +2 -2
  4. data/vendor/assets/javascripts/tinymce/icons/default/icons.js +1 -1
  5. data/vendor/assets/javascripts/tinymce/models/dom/model.js +1 -1
  6. data/vendor/assets/javascripts/tinymce/plugins/accordion/plugin.js +1 -1
  7. data/vendor/assets/javascripts/tinymce/plugins/advlist/plugin.js +1 -1
  8. data/vendor/assets/javascripts/tinymce/plugins/anchor/plugin.js +1 -1
  9. data/vendor/assets/javascripts/tinymce/plugins/autolink/plugin.js +1 -1
  10. data/vendor/assets/javascripts/tinymce/plugins/autoresize/plugin.js +1 -1
  11. data/vendor/assets/javascripts/tinymce/plugins/autosave/plugin.js +1 -1
  12. data/vendor/assets/javascripts/tinymce/plugins/charmap/plugin.js +1 -1
  13. data/vendor/assets/javascripts/tinymce/plugins/code/plugin.js +1 -1
  14. data/vendor/assets/javascripts/tinymce/plugins/codesample/plugin.js +1 -1
  15. data/vendor/assets/javascripts/tinymce/plugins/directionality/plugin.js +1 -1
  16. data/vendor/assets/javascripts/tinymce/plugins/emoticons/plugin.js +1 -1
  17. data/vendor/assets/javascripts/tinymce/plugins/fullscreen/plugin.js +2 -2
  18. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/ar.js +3 -0
  19. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/bg_BG.js +3 -0
  20. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/ca.js +3 -0
  21. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/cs.js +3 -0
  22. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/da.js +3 -0
  23. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/de.js +3 -0
  24. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/el.js +3 -0
  25. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/en.js +3 -0
  26. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/es.js +3 -0
  27. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/eu.js +3 -0
  28. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/fa.js +3 -0
  29. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/fi.js +3 -0
  30. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/fr_FR.js +3 -0
  31. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/he_IL.js +3 -0
  32. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/hi.js +3 -0
  33. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/hr.js +3 -0
  34. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/hu_HU.js +3 -0
  35. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/id.js +3 -0
  36. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/it.js +3 -0
  37. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/ja.js +3 -0
  38. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/kk.js +3 -0
  39. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/ko_KR.js +3 -0
  40. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/ms.js +3 -0
  41. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/nb_NO.js +3 -0
  42. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/nl.js +3 -0
  43. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/pl.js +3 -0
  44. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/pt_BR.js +3 -0
  45. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/pt_PT.js +3 -0
  46. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/ro.js +3 -0
  47. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/ru.js +3 -0
  48. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/sk.js +3 -0
  49. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/sl_SI.js +3 -0
  50. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/sv_SE.js +3 -0
  51. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/th_TH.js +3 -0
  52. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/tr.js +3 -0
  53. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/uk.js +3 -0
  54. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/vi.js +3 -0
  55. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/zh_CN.js +7 -4
  56. data/vendor/assets/javascripts/tinymce/plugins/help/js/i18n/keynav/zh_TW.js +3 -0
  57. data/vendor/assets/javascripts/tinymce/plugins/help/plugin.js +2 -2
  58. data/vendor/assets/javascripts/tinymce/plugins/image/plugin.js +1 -1
  59. data/vendor/assets/javascripts/tinymce/plugins/importcss/plugin.js +2 -2
  60. data/vendor/assets/javascripts/tinymce/plugins/insertdatetime/plugin.js +1 -1
  61. data/vendor/assets/javascripts/tinymce/plugins/link/plugin.js +2 -2
  62. data/vendor/assets/javascripts/tinymce/plugins/lists/plugin.js +2 -2
  63. data/vendor/assets/javascripts/tinymce/plugins/media/plugin.js +2 -2
  64. data/vendor/assets/javascripts/tinymce/plugins/nonbreaking/plugin.js +1 -1
  65. data/vendor/assets/javascripts/tinymce/plugins/pagebreak/plugin.js +1 -1
  66. data/vendor/assets/javascripts/tinymce/plugins/preview/plugin.js +1 -1
  67. data/vendor/assets/javascripts/tinymce/plugins/quickbars/plugin.js +1 -1
  68. data/vendor/assets/javascripts/tinymce/plugins/save/plugin.js +1 -1
  69. data/vendor/assets/javascripts/tinymce/plugins/searchreplace/plugin.js +1 -1
  70. data/vendor/assets/javascripts/tinymce/plugins/table/plugin.js +1 -1
  71. data/vendor/assets/javascripts/tinymce/plugins/visualblocks/plugin.js +1 -1
  72. data/vendor/assets/javascripts/tinymce/plugins/visualchars/plugin.js +1 -1
  73. data/vendor/assets/javascripts/tinymce/plugins/wordcount/plugin.js +1 -1
  74. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.css +1 -1
  75. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.inline.css +1 -1
  76. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.inline.js +1 -1
  77. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.inline.min.css +1 -1
  78. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.js +1 -1
  79. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.min.css +1 -1
  80. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.css +1 -1
  81. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.js +1 -1
  82. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.min.css +1 -1
  83. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.css +1 -1
  84. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.inline.css +1 -1
  85. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.inline.js +1 -1
  86. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.inline.min.css +1 -1
  87. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.js +1 -1
  88. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.min.css +1 -1
  89. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.css +1 -1
  90. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.js +1 -1
  91. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.min.css +1 -1
  92. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.css +1 -1
  93. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.inline.css +1 -1
  94. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.inline.js +1 -1
  95. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.inline.min.css +1 -1
  96. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.js +1 -1
  97. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.min.css +1 -1
  98. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/skin.css +1 -1
  99. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/skin.js +1 -1
  100. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/skin.min.css +1 -1
  101. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.css +1 -1
  102. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.inline.css +1 -1
  103. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.inline.js +1 -1
  104. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.inline.min.css +1 -1
  105. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.js +1 -1
  106. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.min.css +1 -1
  107. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/skin.css +1 -1
  108. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/skin.js +1 -1
  109. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/skin.min.css +1 -1
  110. data/vendor/assets/javascripts/tinymce/themes/silver/theme.js +2 -2
  111. data/vendor/assets/javascripts/tinymce/tinymce.d.ts +1 -1
  112. data/vendor/assets/javascripts/tinymce/tinymce.js +2 -2
  113. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 503a3092580a7e84eaf74bf9df776c903c8cbe7acbc57651030b8af36c9f13c1
4
- data.tar.gz: 77241d79c5581cdab23388ae4ae92dfd3121958395d331bf0a7f05e586ce1fe1
3
+ metadata.gz: 2eeee64138094ba4150db8406a1913c02681d7a8285ea3d1945c765481554f20
4
+ data.tar.gz: a1ed19cb999fbd07a37ddc353fd5497249c32f1d6c792d1e91f71f4c0e03614d
5
5
  SHA512:
6
- metadata.gz: e160ed0f0f7124922c05c4389e5d4c257ff01e20b407b9b7610b4ba566745657b7d8f804ff9c2e4ea7173b0be4a021d8f532a27a4942d7f78af069ecbf80c08e
7
- data.tar.gz: 63a329f72cb0af7005b0ad4d8d11a6319da8b87c5e11084e5abea1778d9fe17db7cbae74642fcca9b267dcd235c56f950fc0fd49ba93611847068ab77f132911
6
+ metadata.gz: e42bd1afe450097f6f9a9f2cb1c4ca7aaddf14b81e0cc969be23981d79e36c2d3e084818e7569ba5eaf95044e6767e0032a5926f6d6f440f110467fe703bbd93
7
+ data.tar.gz: c607a77a690a16b6c722bd22725e13788abfeb8246c84c25054b3aadd26083442720b80724bd6ed1a90f2152dc1d2e1eb0d6afa1d5dcb9704ffbfc7bc9fc01b4
@@ -1,5 +1,5 @@
1
1
  /**
2
- * TinyMCE version 7.0.1 (2024-04-10)
2
+ * TinyMCE version 7.1.0 (2024-05-08)
3
3
  */
4
4
 
5
5
  (function () {
@@ -2096,27 +2096,99 @@
2096
2096
  });
2097
2097
  };
2098
2098
 
2099
- const isNonHtmlElementRootName = name => name.toLowerCase() === 'svg';
2099
+ const Cell = initial => {
2100
+ let value = initial;
2101
+ const get = () => {
2102
+ return value;
2103
+ };
2104
+ const set = v => {
2105
+ value = v;
2106
+ };
2107
+ return {
2108
+ get,
2109
+ set
2110
+ };
2111
+ };
2112
+
2113
+ const singleton = doRevoke => {
2114
+ const subject = Cell(Optional.none());
2115
+ const revoke = () => subject.get().each(doRevoke);
2116
+ const clear = () => {
2117
+ revoke();
2118
+ subject.set(Optional.none());
2119
+ };
2120
+ const isSet = () => subject.get().isSome();
2121
+ const get = () => subject.get();
2122
+ const set = s => {
2123
+ revoke();
2124
+ subject.set(Optional.some(s));
2125
+ };
2126
+ return {
2127
+ clear,
2128
+ isSet,
2129
+ get,
2130
+ set
2131
+ };
2132
+ };
2133
+ const repeatable = delay => {
2134
+ const intervalId = Cell(Optional.none());
2135
+ const revoke = () => intervalId.get().each(id => clearInterval(id));
2136
+ const clear = () => {
2137
+ revoke();
2138
+ intervalId.set(Optional.none());
2139
+ };
2140
+ const isSet = () => intervalId.get().isSome();
2141
+ const get = () => intervalId.get();
2142
+ const set = functionToRepeat => {
2143
+ revoke();
2144
+ intervalId.set(Optional.some(setInterval(functionToRepeat, delay)));
2145
+ };
2146
+ return {
2147
+ clear,
2148
+ isSet,
2149
+ get,
2150
+ set
2151
+ };
2152
+ };
2153
+ const value$2 = () => {
2154
+ const subject = singleton(noop);
2155
+ const on = f => subject.get().each(f);
2156
+ return {
2157
+ ...subject,
2158
+ on
2159
+ };
2160
+ };
2161
+
2162
+ const nodeNameToNamespaceType = name => {
2163
+ const lowerCaseName = name.toLowerCase();
2164
+ if (lowerCaseName === 'svg') {
2165
+ return 'svg';
2166
+ } else if (lowerCaseName === 'math') {
2167
+ return 'math';
2168
+ } else {
2169
+ return 'html';
2170
+ }
2171
+ };
2172
+ const isNonHtmlElementRootName = name => nodeNameToNamespaceType(name) !== 'html';
2100
2173
  const isNonHtmlElementRoot = node => isNonHtmlElementRootName(node.nodeName);
2101
- const toScopeType = node => (node === null || node === void 0 ? void 0 : node.nodeName) === 'svg' ? 'svg' : 'html';
2102
- const namespaceElements = ['svg'];
2174
+ const toScopeType = node => nodeNameToNamespaceType(node.nodeName);
2175
+ const namespaceElements = [
2176
+ 'svg',
2177
+ 'math'
2178
+ ];
2103
2179
  const createNamespaceTracker = () => {
2104
- let scopes = [];
2105
- const peek = () => scopes[scopes.length - 1];
2180
+ const currentScope = value$2();
2181
+ const current = () => currentScope.get().map(toScopeType).getOr('html');
2106
2182
  const track = node => {
2107
2183
  if (isNonHtmlElementRoot(node)) {
2108
- scopes.push(node);
2109
- }
2110
- let currentScope = peek();
2111
- if (currentScope && !currentScope.contains(node)) {
2112
- scopes.pop();
2113
- currentScope = peek();
2184
+ currentScope.set(node);
2185
+ } else if (currentScope.get().exists(scopeNode => !scopeNode.contains(node))) {
2186
+ currentScope.clear();
2114
2187
  }
2115
- return toScopeType(currentScope);
2188
+ return current();
2116
2189
  };
2117
- const current = () => toScopeType(peek());
2118
2190
  const reset = () => {
2119
- scopes = [];
2191
+ currentScope.clear();
2120
2192
  };
2121
2193
  return {
2122
2194
  track,
@@ -2128,7 +2200,8 @@
2128
2200
  const transparentBlockAttr = 'data-mce-block';
2129
2201
  const elementNames = map => filter$5(keys(map), key => !/[A-Z]/.test(key));
2130
2202
  const makeSelectorFromSchemaMap = map => map$3(elementNames(map), name => {
2131
- return `${ name }:` + map$3(namespaceElements, ns => `not(${ ns } ${ name })`).join(':');
2203
+ const escapedName = CSS.escape(name);
2204
+ return `${ escapedName }:` + map$3(namespaceElements, ns => `not(${ ns } ${ escapedName })`).join(':');
2132
2205
  }).join(',');
2133
2206
  const updateTransparent = (blocksSelector, transparent) => {
2134
2207
  if (isNonNullable(transparent.querySelector(blocksSelector))) {
@@ -2681,7 +2754,10 @@
2681
2754
  'dropzone',
2682
2755
  'hidden',
2683
2756
  'spellcheck',
2684
- 'translate'
2757
+ 'translate',
2758
+ 'itemprop',
2759
+ 'itemscope',
2760
+ 'itemtype'
2685
2761
  ] : [],
2686
2762
  ...type !== 'html5-strict' ? ['xml:lang'] : []
2687
2763
  ]);
@@ -4970,20 +5046,6 @@
4970
5046
  }
4971
5047
  ScriptLoader.ScriptLoader = new ScriptLoader();
4972
5048
 
4973
- const Cell = initial => {
4974
- let value = initial;
4975
- const get = () => {
4976
- return value;
4977
- };
4978
- const set = v => {
4979
- value = v;
4980
- };
4981
- return {
4982
- get,
4983
- set
4984
- };
4985
- };
4986
-
4987
5049
  const isDuplicated = (items, item) => {
4988
5050
  const firstIndex = items.indexOf(item);
4989
5051
  return firstIndex !== -1 && items.indexOf(item, firstIndex + 1) > firstIndex;
@@ -5169,55 +5231,6 @@
5169
5231
  AddOnManager.ThemeManager = AddOnManager();
5170
5232
  AddOnManager.ModelManager = AddOnManager();
5171
5233
 
5172
- const singleton = doRevoke => {
5173
- const subject = Cell(Optional.none());
5174
- const revoke = () => subject.get().each(doRevoke);
5175
- const clear = () => {
5176
- revoke();
5177
- subject.set(Optional.none());
5178
- };
5179
- const isSet = () => subject.get().isSome();
5180
- const get = () => subject.get();
5181
- const set = s => {
5182
- revoke();
5183
- subject.set(Optional.some(s));
5184
- };
5185
- return {
5186
- clear,
5187
- isSet,
5188
- get,
5189
- set
5190
- };
5191
- };
5192
- const repeatable = delay => {
5193
- const intervalId = Cell(Optional.none());
5194
- const revoke = () => intervalId.get().each(id => clearInterval(id));
5195
- const clear = () => {
5196
- revoke();
5197
- intervalId.set(Optional.none());
5198
- };
5199
- const isSet = () => intervalId.get().isSome();
5200
- const get = () => intervalId.get();
5201
- const set = functionToRepeat => {
5202
- revoke();
5203
- intervalId.set(Optional.some(setInterval(functionToRepeat, delay)));
5204
- };
5205
- return {
5206
- clear,
5207
- isSet,
5208
- get,
5209
- set
5210
- };
5211
- };
5212
- const value$2 = () => {
5213
- const subject = singleton(noop);
5214
- const on = f => subject.get().each(f);
5215
- return {
5216
- ...subject,
5217
- on
5218
- };
5219
- };
5220
-
5221
5234
  const first$1 = (fn, rate) => {
5222
5235
  let timer = null;
5223
5236
  const cancel = () => {
@@ -17164,29 +17177,39 @@
17164
17177
  return config;
17165
17178
  };
17166
17179
  const sanitizeNamespaceElement = ele => {
17167
- const xlinkAttrs = [
17168
- 'type',
17169
- 'href',
17170
- 'role',
17171
- 'arcrole',
17172
- 'title',
17173
- 'show',
17174
- 'actuate',
17175
- 'label',
17176
- 'from',
17177
- 'to'
17178
- ].map(name => `xlink:${ name }`);
17179
- const config = {
17180
- IN_PLACE: true,
17181
- USE_PROFILES: {
17182
- html: true,
17183
- svg: true,
17184
- svgFilters: true
17185
- },
17186
- ALLOWED_ATTR: xlinkAttrs
17187
- };
17188
- purify().sanitize(ele, config);
17189
- return ele.innerHTML;
17180
+ const namespaceType = toScopeType(ele);
17181
+ if (namespaceType === 'svg') {
17182
+ const xlinkAttrs = [
17183
+ 'type',
17184
+ 'href',
17185
+ 'role',
17186
+ 'arcrole',
17187
+ 'title',
17188
+ 'show',
17189
+ 'actuate',
17190
+ 'label',
17191
+ 'from',
17192
+ 'to'
17193
+ ].map(name => `xlink:${ name }`);
17194
+ const config = {
17195
+ IN_PLACE: true,
17196
+ USE_PROFILES: {
17197
+ html: true,
17198
+ svg: true,
17199
+ svgFilters: true
17200
+ },
17201
+ ALLOWED_ATTR: xlinkAttrs
17202
+ };
17203
+ purify().sanitize(ele, config);
17204
+ } else if (namespaceType === 'math') {
17205
+ const config = {
17206
+ IN_PLACE: true,
17207
+ USE_PROFILES: { mathMl: true }
17208
+ };
17209
+ purify().sanitize(ele, config);
17210
+ } else {
17211
+ throw new Error('Not a namespace element');
17212
+ }
17190
17213
  };
17191
17214
  const getSanitizer = (settings, schema) => {
17192
17215
  const namespaceTracker = createNamespaceTracker();
@@ -19466,7 +19489,7 @@
19466
19489
  return a.type === b.type && a.text === b.text && !a.progressBar && !a.timeout && !b.progressBar && !b.timeout;
19467
19490
  };
19468
19491
  const reposition = () => {
19469
- each$e(notifications, notification => {
19492
+ getTopNotification().each(notification => {
19470
19493
  notification.reposition();
19471
19494
  });
19472
19495
  };
@@ -19493,11 +19516,7 @@
19493
19516
  editor.editorManager.setActive(editor);
19494
19517
  const notification = getImplementation().open(spec, () => {
19495
19518
  closeNotification(notification);
19496
- reposition();
19497
- if (hasEditorOrUiFocus(editor)) {
19498
- getTopNotification().fold(() => editor.focus(), top => focus$1(SugarElement.fromDom(top.getEl())));
19499
- }
19500
- });
19519
+ }, () => hasEditorOrUiFocus(editor));
19501
19520
  addNotification(notification);
19502
19521
  reposition();
19503
19522
  editor.dispatch('OpenNotification', { notification: { ...notification } });
@@ -19524,7 +19543,7 @@
19524
19543
  }
19525
19544
  reposition();
19526
19545
  });
19527
- editor.on('show ResizeEditor ResizeWindow NodeChange', () => {
19546
+ editor.on('show ResizeEditor NodeChange', () => {
19528
19547
  requestAnimationFrame(reposition);
19529
19548
  });
19530
19549
  editor.on('remove', () => {
@@ -19532,6 +19551,7 @@
19532
19551
  getImplementation().close(notification);
19533
19552
  });
19534
19553
  });
19554
+ editor.addShortcut('alt+F12', 'Focus to notification', () => getTopNotification().map(notificationApi => SugarElement.fromDom(notificationApi.getEl())).each(elm => focus$1(elm)));
19535
19555
  };
19536
19556
  registerEvents(editor);
19537
19557
  return {
@@ -21238,6 +21258,7 @@
21238
21258
  const containerElm = SugarElement.fromDom(pos.container());
21239
21259
  return getParentBlock$2(rootElm, containerElm).map(block => blockPosition(block, pos));
21240
21260
  };
21261
+ const isNotAncestorial = blockBoundary => !(contains(blockBoundary.to.block, blockBoundary.from.block) || contains(blockBoundary.from.block, blockBoundary.to.block));
21241
21262
  const isDifferentBlocks = blockBoundary => !eq(blockBoundary.from.block, blockBoundary.to.block);
21242
21263
  const getClosestHost = (root, scope) => {
21243
21264
  const isRoot = node => eq(node, root);
@@ -21269,7 +21290,7 @@
21269
21290
  const readFromRange = (schema, rootNode, forward, rng) => {
21270
21291
  const fromBlockPos = getBlockPosition(rootNode, CaretPosition.fromRangeStart(rng));
21271
21292
  const toBlockPos = fromBlockPos.bind(blockPos => fromPosition(forward, rootNode, blockPos.position).bind(to => getBlockPosition(rootNode, to).map(blockPos => skipLastBr(schema, rootNode, forward, blockPos))));
21272
- return lift2(fromBlockPos, toBlockPos, blockBoundary).filter(blockBoundary => isDifferentBlocks(blockBoundary) && hasSameHost(rootNode, blockBoundary) && isEditable$1(blockBoundary) && hasValidBlocks(blockBoundary));
21293
+ return lift2(fromBlockPos, toBlockPos, blockBoundary).filter(blockBoundary => isDifferentBlocks(blockBoundary) && hasSameHost(rootNode, blockBoundary) && isEditable$1(blockBoundary) && hasValidBlocks(blockBoundary) && isNotAncestorial(blockBoundary));
21273
21294
  };
21274
21295
  const read$1 = (schema, rootNode, forward, rng) => rng.collapsed ? readFromRange(schema, rootNode, forward, rng) : Optional.none();
21275
21296
 
@@ -28976,9 +28997,10 @@
28976
28997
  return iframeHTML;
28977
28998
  };
28978
28999
  const createIframe = (editor, boxInfo) => {
28979
- const iframeTitle = editor.translate('Rich Text Area');
29000
+ const iframeTitle = Env.browser.isFirefox() ? getIframeAriaText(editor) : 'Rich Text Area';
29001
+ const translatedTitle = editor.translate(iframeTitle);
28980
29002
  const tabindex = getOpt(SugarElement.fromDom(editor.getElement()), 'tabindex').bind(toInt);
28981
- const ifr = createIframeElement(editor.id, iframeTitle, getIframeAttrs(editor), tabindex).dom;
29003
+ const ifr = createIframeElement(editor.id, translatedTitle, getIframeAttrs(editor), tabindex).dom;
28982
29004
  ifr.onload = () => {
28983
29005
  ifr.onload = null;
28984
29006
  editor.dispatch('load');
@@ -31319,8 +31341,8 @@
31319
31341
  documentBaseURL: null,
31320
31342
  suffix: null,
31321
31343
  majorVersion: '7',
31322
- minorVersion: '0.1',
31323
- releaseDate: '2024-04-10',
31344
+ minorVersion: '1.0',
31345
+ releaseDate: '2024-05-08',
31324
31346
  i18n: I18n,
31325
31347
  activeEditor: null,
31326
31348
  focusedEditor: null,
@@ -1,6 +1,6 @@
1
1
  module TinyMCE
2
2
  module Rails
3
- VERSION = "7.0.1"
4
- TINYMCE_VERSION = "7.0.1"
3
+ VERSION = "7.1.0"
4
+ TINYMCE_VERSION = "7.1.0"
5
5
  end
6
6
  end