tinymce-rails 7.0.0.1 → 7.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/source/tinymce/tinymce.js +142 -117
  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 +4 -4
  114. /data/vendor/assets/javascripts/tinymce/langs/{readme.md → README.md} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 314e37538834fd90291058757f4ac05527e88b05ed9348752b575a971a40bfee
4
- data.tar.gz: 8bdcb683ceee8a6217fef90e26239c61e268fd69c11c373221fd68c164c5fd20
3
+ metadata.gz: 2eeee64138094ba4150db8406a1913c02681d7a8285ea3d1945c765481554f20
4
+ data.tar.gz: a1ed19cb999fbd07a37ddc353fd5497249c32f1d6c792d1e91f71f4c0e03614d
5
5
  SHA512:
6
- metadata.gz: ffa5c5dc93439ef9bc662398f5294f535bff6577173607b3569fe55b2a5d9e550b69e890247793684eec218285101cf594e574384684a17042a792d647917360
7
- data.tar.gz: bc6946154ba37c58dd62cdcf8cd04f68c34afb6d1ad322ddda1338cf76e2cba4140baa889a25da78b38175cefab48c5dafab7b7a389a3078385c29fa06b709a8
6
+ metadata.gz: e42bd1afe450097f6f9a9f2cb1c4ca7aaddf14b81e0cc969be23981d79e36c2d3e084818e7569ba5eaf95044e6767e0032a5926f6d6f440f110467fe703bbd93
7
+ data.tar.gz: c607a77a690a16b6c722bd22725e13788abfeb8246c84c25054b3aadd26083442720b80724bd6ed1a90f2152dc1d2e1eb0d6afa1d5dcb9704ffbfc7bc9fc01b4
@@ -1,5 +1,5 @@
1
1
  /**
2
- * TinyMCE version 7.0.0 (2024-03-20)
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
 
@@ -23954,7 +23975,10 @@
23954
23975
 
23955
23976
  const setupEditorInput = (editor, api) => {
23956
23977
  const update = last(api.load, 50);
23957
- editor.on('input', () => {
23978
+ editor.on('input', e => {
23979
+ if (e.inputType === 'insertCompositionText' && !editor.composing) {
23980
+ return;
23981
+ }
23958
23982
  update.throttle();
23959
23983
  });
23960
23984
  editor.on('keydown', e => {
@@ -28973,9 +28997,10 @@
28973
28997
  return iframeHTML;
28974
28998
  };
28975
28999
  const createIframe = (editor, boxInfo) => {
28976
- const iframeTitle = editor.translate('Rich Text Area');
29000
+ const iframeTitle = Env.browser.isFirefox() ? getIframeAriaText(editor) : 'Rich Text Area';
29001
+ const translatedTitle = editor.translate(iframeTitle);
28977
29002
  const tabindex = getOpt(SugarElement.fromDom(editor.getElement()), 'tabindex').bind(toInt);
28978
- const ifr = createIframeElement(editor.id, iframeTitle, getIframeAttrs(editor), tabindex).dom;
29003
+ const ifr = createIframeElement(editor.id, translatedTitle, getIframeAttrs(editor), tabindex).dom;
28979
29004
  ifr.onload = () => {
28980
29005
  ifr.onload = null;
28981
29006
  editor.dispatch('load');
@@ -31316,8 +31341,8 @@
31316
31341
  documentBaseURL: null,
31317
31342
  suffix: null,
31318
31343
  majorVersion: '7',
31319
- minorVersion: '0.0',
31320
- releaseDate: '2024-03-20',
31344
+ minorVersion: '1.0',
31345
+ releaseDate: '2024-05-08',
31321
31346
  i18n: I18n,
31322
31347
  activeEditor: null,
31323
31348
  focusedEditor: null,
@@ -31405,7 +31430,7 @@
31405
31430
  };
31406
31431
  const findTargets = options => {
31407
31432
  if (Env.browser.isIE() || Env.browser.isEdge()) {
31408
- initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tiny.cloud/docs/tinymce/6/support/#supportedwebbrowsers');
31433
+ initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tiny.cloud/docs/tinymce/7/support/#supportedwebbrowsers');
31409
31434
  return [];
31410
31435
  } else if (isQuirksMode) {
31411
31436
  initError('Failed to initialize the editor as the document is not in standards mode. ' + 'TinyMCE requires standards mode.');
@@ -1,6 +1,6 @@
1
1
  module TinyMCE
2
2
  module Rails
3
- VERSION = "7.0.0.1"
4
- TINYMCE_VERSION = "7.0.0"
3
+ VERSION = "7.1.0"
4
+ TINYMCE_VERSION = "7.1.0"
5
5
  end
6
6
  end