tinymce-rails 7.7.1 → 7.8.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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/source/tinymce/tinymce.js +64 -26
  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 +1 -1
  18. data/vendor/assets/javascripts/tinymce/plugins/help/plugin.js +2 -2
  19. data/vendor/assets/javascripts/tinymce/plugins/image/plugin.js +1 -1
  20. data/vendor/assets/javascripts/tinymce/plugins/importcss/plugin.js +1 -1
  21. data/vendor/assets/javascripts/tinymce/plugins/insertdatetime/plugin.js +1 -1
  22. data/vendor/assets/javascripts/tinymce/plugins/link/plugin.js +1 -1
  23. data/vendor/assets/javascripts/tinymce/plugins/lists/plugin.js +2 -2
  24. data/vendor/assets/javascripts/tinymce/plugins/media/plugin.js +1 -1
  25. data/vendor/assets/javascripts/tinymce/plugins/nonbreaking/plugin.js +1 -1
  26. data/vendor/assets/javascripts/tinymce/plugins/pagebreak/plugin.js +1 -1
  27. data/vendor/assets/javascripts/tinymce/plugins/preview/plugin.js +1 -1
  28. data/vendor/assets/javascripts/tinymce/plugins/quickbars/plugin.js +1 -1
  29. data/vendor/assets/javascripts/tinymce/plugins/save/plugin.js +1 -1
  30. data/vendor/assets/javascripts/tinymce/plugins/searchreplace/plugin.js +1 -1
  31. data/vendor/assets/javascripts/tinymce/plugins/table/plugin.js +1 -1
  32. data/vendor/assets/javascripts/tinymce/plugins/visualblocks/plugin.js +1 -1
  33. data/vendor/assets/javascripts/tinymce/plugins/visualchars/plugin.js +1 -1
  34. data/vendor/assets/javascripts/tinymce/plugins/wordcount/plugin.js +1 -1
  35. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.css +1 -1
  36. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.inline.css +1 -1
  37. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.inline.js +1 -1
  38. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.inline.min.css +1 -1
  39. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.js +1 -1
  40. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/content.min.css +1 -1
  41. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.css +1 -1
  42. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.js +1 -1
  43. data/vendor/assets/javascripts/tinymce/skins/ui/oxide/skin.min.css +1 -1
  44. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.css +1 -1
  45. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.inline.css +1 -1
  46. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.inline.js +1 -1
  47. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.inline.min.css +1 -1
  48. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.js +1 -1
  49. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/content.min.css +1 -1
  50. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.css +1 -1
  51. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.js +1 -1
  52. data/vendor/assets/javascripts/tinymce/skins/ui/oxide-dark/skin.min.css +1 -1
  53. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.css +1 -1
  54. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.inline.css +1 -1
  55. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.inline.js +1 -1
  56. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.inline.min.css +1 -1
  57. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.js +1 -1
  58. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/content.min.css +1 -1
  59. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/skin.css +1 -1
  60. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/skin.js +1 -1
  61. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5/skin.min.css +1 -1
  62. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.css +1 -1
  63. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.inline.css +1 -1
  64. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.inline.js +1 -1
  65. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.inline.min.css +1 -1
  66. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.js +1 -1
  67. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/content.min.css +1 -1
  68. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/skin.css +1 -1
  69. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/skin.js +1 -1
  70. data/vendor/assets/javascripts/tinymce/skins/ui/tinymce-5-dark/skin.min.css +1 -1
  71. data/vendor/assets/javascripts/tinymce/themes/silver/theme.js +69 -69
  72. data/vendor/assets/javascripts/tinymce/tinymce.d.ts +40 -3
  73. data/vendor/assets/javascripts/tinymce/tinymce.js +18 -18
  74. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b2701d9dd14bb9ed813579e2cbc8363a0f2f2721d6cfb1933922ef08679404b
4
- data.tar.gz: c9e193e3ce91d53918401cc00c34ccead1d23e9c5fde5f5747410181e559d5a9
3
+ metadata.gz: 48a9fce26990e32ea4a36afeef627faaf9b95d9b06f8807844341e87c7fd7a12
4
+ data.tar.gz: 80d439c04b211f4c6a839154212379e6a94463a12818629f3de07e6fae67add5
5
5
  SHA512:
6
- metadata.gz: 68e550c9258b602ef7b3d3325ec8714cb78bf0a8801e25eff4536554b24f76226f845c12658cce9a65d08e43b5fa0be5fd9284a16c489a3f2ee9a358d0c85a32
7
- data.tar.gz: b0023dd93362568a4fa713faa601b8f42ca293dcae9b4a98e2b72df5ca8826a5e09b777320e715c7e5af3c46c4c9b5413d114567bb188bb260f0da80cdeb5812
6
+ metadata.gz: 8fd2b021b9579fb4c6432538efdf31de895160407162d2f2845a945b0a6e912111d777accb18e1369248eceab37f9c514c553d779308ec7a5f3a6da1bde64ae7
7
+ data.tar.gz: 2e10cfbfc6ee7cd1c47f038afc1e69d91bf8dd0d00e4d18ca17fbac75c6406bffb1b925e282697d82ca7d0dfc4bf088058014c7ffb28f2614f69177f69b6be9b
@@ -1,5 +1,5 @@
1
1
  /**
2
- * TinyMCE version 7.7.1 (2025-03-05)
2
+ * TinyMCE version 7.8.0 (TBD)
3
3
  */
4
4
 
5
5
  (function () {
@@ -7210,6 +7210,8 @@
7210
7210
  },
7211
7211
  default: []
7212
7212
  });
7213
+ registerOption('extended_mathml_attributes', { processor: 'string[]' });
7214
+ registerOption('extended_mathml_elements', { processor: 'string[]' });
7213
7215
  registerOption('inline_boundaries', {
7214
7216
  processor: 'boolean',
7215
7217
  default: true
@@ -7248,6 +7250,11 @@
7248
7250
  });
7249
7251
  registerOption('event_root', { processor: 'string' });
7250
7252
  registerOption('service_message', { processor: 'string' });
7253
+ registerOption('onboarding', {
7254
+ processor: 'boolean',
7255
+ default: true
7256
+ });
7257
+ registerOption('tiny_cloud_entry_url', { processor: 'string' });
7251
7258
  registerOption('theme', {
7252
7259
  processor: value => value === false || isString(value) || isFunction(value),
7253
7260
  default: 'silver'
@@ -8035,7 +8042,7 @@
8035
8042
  }
8036
8043
  };
8037
8044
  const startBlink = () => {
8038
- cursorInterval = setInterval(() => {
8045
+ cursorInterval = window.setInterval(() => {
8039
8046
  lastVisualCaret.on(caretState => {
8040
8047
  if (hasFocus()) {
8041
8048
  dom.toggleClass(caretState.caret, 'mce-visual-caret-hidden');
@@ -9387,10 +9394,11 @@
9387
9394
  'div[data-ephox-embed-iri]',
9388
9395
  'div.tiny-pageembed',
9389
9396
  'div.mce-toc',
9390
- 'div[data-mce-toc]'
9397
+ 'div[data-mce-toc]',
9398
+ 'div.mce-footnotes'
9391
9399
  ];
9392
9400
  const isZeroWidth = elem => isText$c(elem) && get$3(elem) === ZWSP$1;
9393
- const context = (editor, elem, wrapName, nodeName) => parent(elem).fold(() => 'skipping', parent => {
9401
+ const context = (editor, elem, wrapName, nodeName) => parentElement(elem).fold(() => 'skipping', parent => {
9394
9402
  if (nodeName === 'br' || isZeroWidth(elem)) {
9395
9403
  return 'valid';
9396
9404
  } else if (isAnnotation(elem)) {
@@ -9719,13 +9727,13 @@
9719
9727
  if (!isNumber(time)) {
9720
9728
  time = 0;
9721
9729
  }
9722
- return setTimeout(callback, time);
9730
+ return window.setTimeout(callback, time);
9723
9731
  };
9724
9732
  const wrappedSetInterval = (callback, time) => {
9725
9733
  if (!isNumber(time)) {
9726
9734
  time = 0;
9727
9735
  }
9728
- return setInterval(callback, time);
9736
+ return window.setInterval(callback, time);
9729
9737
  };
9730
9738
  const Delay = {
9731
9739
  setEditorTimeout: (editor, callback, time) => {
@@ -9740,7 +9748,7 @@
9740
9748
  if (!editor.removed) {
9741
9749
  callback();
9742
9750
  } else {
9743
- clearInterval(timer);
9751
+ window.clearInterval(timer);
9744
9752
  }
9745
9753
  }, time);
9746
9754
  return timer;
@@ -11005,10 +11013,11 @@
11005
11013
  };
11006
11014
  const scrollToMarker = (editor, marker, viewHeight, alignToTop, doc) => {
11007
11015
  const pos = marker.pos;
11016
+ const scrollMargin = 30;
11008
11017
  if (alignToTop) {
11009
- to(pos.left, pos.top, doc);
11018
+ to(pos.left, Math.max(0, pos.top - scrollMargin), doc);
11010
11019
  } else {
11011
- const y = pos.top - viewHeight + marker.height;
11020
+ const y = pos.top - viewHeight + marker.height + scrollMargin;
11012
11021
  to(-editor.getBody().getBoundingClientRect().left, y, doc);
11013
11022
  }
11014
11023
  };
@@ -17130,18 +17139,39 @@
17130
17139
  const encoding = el.getAttribute('encoding');
17131
17140
  return hasAllowedEncodings && isString(encoding) && contains$2(allowedEncodings, encoding);
17132
17141
  };
17142
+ const isValidElementOpt = (node, lcTagName) => {
17143
+ if (hasAllowedEncodings && lcTagName === 'semantics') {
17144
+ return Optional.some(true);
17145
+ } else if (lcTagName === 'annotation') {
17146
+ return Optional.some(isElement$6(node) && hasValidEncoding(node));
17147
+ } else if (isArray$1(settings.extended_mathml_elements)) {
17148
+ if (settings.extended_mathml_elements.includes(lcTagName)) {
17149
+ return Optional.from(true);
17150
+ } else {
17151
+ return Optional.none();
17152
+ }
17153
+ } else {
17154
+ return Optional.none();
17155
+ }
17156
+ };
17133
17157
  purify$1.addHook('uponSanitizeElement', (node, evt) => {
17134
17158
  var _a;
17135
17159
  const lcTagName = (_a = evt.tagName) !== null && _a !== void 0 ? _a : node.nodeName.toLowerCase();
17136
- if (hasAllowedEncodings && lcTagName === 'semantics') {
17137
- evt.allowedTags[lcTagName] = true;
17138
- }
17139
- if (lcTagName === 'annotation') {
17140
- const elm = node;
17141
- const keepElement = hasValidEncoding(elm);
17160
+ const keepElementOpt = isValidElementOpt(node, lcTagName);
17161
+ keepElementOpt.each(keepElement => {
17142
17162
  evt.allowedTags[lcTagName] = keepElement;
17143
- if (!keepElement) {
17144
- elm.remove();
17163
+ if (!keepElement && settings.sanitize) {
17164
+ if (isElement$6(node)) {
17165
+ node.remove();
17166
+ }
17167
+ }
17168
+ });
17169
+ });
17170
+ purify$1.addHook('uponSanitizeAttribute', (_node, event) => {
17171
+ if (isArray$1(settings.extended_mathml_attributes)) {
17172
+ const keepAttribute = settings.extended_mathml_attributes.includes(event.attrName);
17173
+ if (keepAttribute) {
17174
+ event.forceKeepAttr = true;
17145
17175
  }
17146
17176
  }
17147
17177
  });
@@ -23464,15 +23494,18 @@
23464
23494
  return getCellFirstCursorPosition(cell);
23465
23495
  });
23466
23496
  }, current => {
23467
- if (editor.mode.isReadOnly()) {
23497
+ if (editor.mode.isReadOnly() || !isCellInEditableTable(current)) {
23468
23498
  return Optional.none();
23469
23499
  }
23470
23500
  editor.execCommand('mceTableInsertRowAfter');
23471
23501
  return tabForward(editor, isRoot, current);
23472
23502
  });
23473
23503
  };
23474
- const tabForward = (editor, isRoot, cell) => tabGo(editor, isRoot, next(cell, isEditable$2));
23475
- const tabBackward = (editor, isRoot, cell) => tabGo(editor, isRoot, prev(cell, isEditable$2));
23504
+ const isCellInEditableTable = cell => closest$4(cell, isTag('table')).exists(isEditable$2);
23505
+ const tabForward = (editor, isRoot, cell) => tabGo(editor, isRoot, next(cell, isCellEditable));
23506
+ const tabBackward = (editor, isRoot, cell) => tabGo(editor, isRoot, prev(cell, isCellEditable));
23507
+ const isCellEditable = cell => isEditable$2(cell) || descendant(cell, isEditableHTMLElement);
23508
+ const isEditableHTMLElement = node => isHTMLElement$1(node) && isEditable$2(node);
23476
23509
  const handleTab = (editor, forward) => {
23477
23510
  const rootElements = [
23478
23511
  'table',
@@ -24130,6 +24163,7 @@
24130
24163
  const optionOf = (key, schema) => field(key, key, asOption(), schema);
24131
24164
  const optionString = key => optionOf(key, string);
24132
24165
  const optionFunction = key => optionOf(key, functionProcessor);
24166
+ const optionObjOf = (key, objSchema) => optionOf(key, objOf(objSchema));
24133
24167
  const defaulted = (key, fallback) => field(key, key, defaulted$1(fallback), anyValue());
24134
24168
  const defaultedOf = (key, fallback, schema) => field(key, key, defaulted$1(fallback), schema);
24135
24169
  const defaultedNumber = (key, fallback) => defaultedOf(key, fallback, number);
@@ -24204,7 +24238,7 @@
24204
24238
  onAction,
24205
24239
  customField('original', identity)
24206
24240
  ]);
24207
- const launchButtonFields = baseToolbarButtonFields.concat([defaultedType('contextformbutton')]);
24241
+ const launchButtonFields$1 = baseToolbarButtonFields.concat([defaultedType('contextformbutton')]);
24208
24242
  const launchToggleButtonFields = baseToolbarToggleButtonFields.concat([defaultedType('contextformtogglebutton')]);
24209
24243
  const toggleOrNormal = choose('type', {
24210
24244
  contextformbutton: contextButtonFields,
@@ -24214,7 +24248,7 @@
24214
24248
  optionalLabel,
24215
24249
  requiredArrayOf('commands', toggleOrNormal),
24216
24250
  optionOf('launch', choose('type', {
24217
- contextformbutton: launchButtonFields,
24251
+ contextformbutton: launchButtonFields$1,
24218
24252
  contextformtogglebutton: launchToggleButtonFields
24219
24253
  })),
24220
24254
  defaultedFunction('onInput', noop),
@@ -24250,8 +24284,10 @@
24250
24284
  contextsizeinputform: contextSizeInputFormFields
24251
24285
  });
24252
24286
 
24287
+ const launchButtonFields = baseToolbarButtonFields.concat([defaultedType('contexttoolbarbutton')]);
24253
24288
  objOf([
24254
24289
  defaultedType('contexttoolbar'),
24290
+ optionObjOf('launch', launchButtonFields),
24255
24291
  requiredOf('items', oneOf([
24256
24292
  string,
24257
24293
  arrOfObj([
@@ -28957,6 +28993,8 @@
28957
28993
  allow_unsafe_link_target: getOption('allow_unsafe_link_target'),
28958
28994
  convert_unsafe_embeds: getOption('convert_unsafe_embeds'),
28959
28995
  convert_fonts_to_spans: getOption('convert_fonts_to_spans'),
28996
+ extended_mathml_attributes: getOption('extended_mathml_attributes'),
28997
+ extended_mathml_elements: getOption('extended_mathml_elements'),
28960
28998
  fix_list_elements: getOption('fix_list_elements'),
28961
28999
  font_size_legacy_values: getOption('font_size_legacy_values'),
28962
29000
  forced_root_block: getOption('forced_root_block'),
@@ -31638,8 +31676,8 @@
31638
31676
  documentBaseURL: null,
31639
31677
  suffix: null,
31640
31678
  majorVersion: '7',
31641
- minorVersion: '7.1',
31642
- releaseDate: '2025-03-05',
31679
+ minorVersion: '8.0',
31680
+ releaseDate: 'TBD',
31643
31681
  i18n: I18n,
31644
31682
  activeEditor: null,
31645
31683
  focusedEditor: null,
@@ -32058,7 +32096,7 @@
32058
32096
  if (!done) {
32059
32097
  done = true;
32060
32098
  if (timer !== null) {
32061
- clearTimeout(timer);
32099
+ window.clearTimeout(timer);
32062
32100
  timer = null;
32063
32101
  }
32064
32102
  completer.apply(null, args);
@@ -32068,7 +32106,7 @@
32068
32106
  const reject = complete(rejectCb);
32069
32107
  const start = (...args) => {
32070
32108
  if (!done && timer === null) {
32071
- timer = setTimeout(() => reject.apply(null, args), timeout);
32109
+ timer = window.setTimeout(() => reject.apply(null, args), timeout);
32072
32110
  }
32073
32111
  };
32074
32112
  return {
@@ -1,6 +1,6 @@
1
1
  module TinyMCE
2
2
  module Rails
3
- VERSION = "7.7.1"
4
- TINYMCE_VERSION = "7.7.1"
3
+ VERSION = "7.8.0"
4
+ TINYMCE_VERSION = "7.8.0"
5
5
  end
6
6
  end