plugin.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /**
  2. * Copyright (c) Tiny Technologies, Inc. All rights reserved.
  3. * Licensed under the LGPL or a commercial license.
  4. * For LGPL see License.txt in the project root for license information.
  5. * For commercial licenses see https://www.tiny.cloud/
  6. *
  7. * Version: 5.9.1 (2021-08-27)
  8. */
  9. (function () {
  10. 'use strict';
  11. var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
  12. var setContent = function (editor, html) {
  13. editor.focus();
  14. editor.undoManager.transact(function () {
  15. editor.setContent(html);
  16. });
  17. editor.selection.setCursorLocation();
  18. editor.nodeChanged();
  19. };
  20. var getContent = function (editor) {
  21. return editor.getContent({ source_view: true });
  22. };
  23. var open = function (editor) {
  24. var editorContent = getContent(editor);
  25. editor.windowManager.open({
  26. title: 'Source Code',
  27. size: 'large',
  28. body: {
  29. type: 'panel',
  30. items: [{
  31. type: 'textarea',
  32. name: 'code'
  33. }]
  34. },
  35. buttons: [
  36. {
  37. type: 'cancel',
  38. name: 'cancel',
  39. text: 'Cancel'
  40. },
  41. {
  42. type: 'submit',
  43. name: 'save',
  44. text: 'Save',
  45. primary: true
  46. }
  47. ],
  48. initialData: { code: editorContent },
  49. onSubmit: function (api) {
  50. setContent(editor, api.getData().code);
  51. api.close();
  52. }
  53. });
  54. };
  55. var register$1 = function (editor) {
  56. editor.addCommand('mceCodeEditor', function () {
  57. open(editor);
  58. });
  59. };
  60. var register = function (editor) {
  61. var onAction = function () {
  62. return editor.execCommand('mceCodeEditor');
  63. };
  64. editor.ui.registry.addButton('code', {
  65. icon: 'sourcecode',
  66. tooltip: 'Source code',
  67. onAction: onAction
  68. });
  69. editor.ui.registry.addMenuItem('code', {
  70. icon: 'sourcecode',
  71. text: 'Source code',
  72. onAction: onAction
  73. });
  74. };
  75. function Plugin () {
  76. global.add('code', function (editor) {
  77. register$1(editor);
  78. register(editor);
  79. return {};
  80. });
  81. }
  82. Plugin();
  83. }());