fx-platform-ui 0.0.13-alpha13 → 0.0.13-alpha15

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 (114) hide show
  1. package/lib/fx-platform-ui.mjs +30783 -62614
  2. package/lib/fx-platform-ui.umd.js +68 -112
  3. package/lib/packages/components/editor/src/index.vue.d.ts +16 -0
  4. package/lib/style.css +1 -1
  5. package/lib/tinymce/CHANGELOG.md +2957 -0
  6. package/lib/tinymce/README.md +71 -0
  7. package/lib/tinymce/bower.json +27 -0
  8. package/lib/tinymce/composer.json +52 -0
  9. package/lib/tinymce/icons/default/icons.js +182 -0
  10. package/lib/tinymce/icons/default/icons.min.js +1 -0
  11. package/lib/tinymce/icons/default/index.js +7 -0
  12. package/lib/tinymce/license.txt +21 -0
  13. package/lib/tinymce/models/dom/index.js +7 -0
  14. package/lib/tinymce/models/dom/model.js +7975 -0
  15. package/lib/tinymce/models/dom/model.min.js +4 -0
  16. package/lib/tinymce/package.json +32 -0
  17. package/lib/tinymce/plugins/advlist/index.js +7 -0
  18. package/lib/tinymce/plugins/advlist/plugin.js +246 -0
  19. package/lib/tinymce/plugins/advlist/plugin.min.js +4 -0
  20. package/lib/tinymce/plugins/anchor/index.js +7 -0
  21. package/lib/tinymce/plugins/anchor/plugin.js +195 -0
  22. package/lib/tinymce/plugins/anchor/plugin.min.js +4 -0
  23. package/lib/tinymce/plugins/autolink/index.js +7 -0
  24. package/lib/tinymce/plugins/autolink/plugin.js +232 -0
  25. package/lib/tinymce/plugins/autolink/plugin.min.js +4 -0
  26. package/lib/tinymce/plugins/autoresize/index.js +7 -0
  27. package/lib/tinymce/plugins/autoresize/plugin.js +156 -0
  28. package/lib/tinymce/plugins/autoresize/plugin.min.js +4 -0
  29. package/lib/tinymce/plugins/autosave/index.js +7 -0
  30. package/lib/tinymce/plugins/autosave/plugin.js +232 -0
  31. package/lib/tinymce/plugins/autosave/plugin.min.js +4 -0
  32. package/lib/tinymce/plugins/charmap/index.js +7 -0
  33. package/lib/tinymce/plugins/charmap/plugin.js +1636 -0
  34. package/lib/tinymce/plugins/charmap/plugin.min.js +4 -0
  35. package/lib/tinymce/plugins/code/index.js +7 -0
  36. package/lib/tinymce/plugins/code/plugin.js +85 -0
  37. package/lib/tinymce/plugins/code/plugin.min.js +4 -0
  38. package/lib/tinymce/plugins/codesample/index.js +7 -0
  39. package/lib/tinymce/plugins/codesample/plugin.js +2451 -0
  40. package/lib/tinymce/plugins/codesample/plugin.min.js +4 -0
  41. package/lib/tinymce/plugins/directionality/index.js +7 -0
  42. package/lib/tinymce/plugins/directionality/plugin.js +384 -0
  43. package/lib/tinymce/plugins/directionality/plugin.min.js +4 -0
  44. package/lib/tinymce/plugins/emoticons/index.js +7 -0
  45. package/lib/tinymce/plugins/emoticons/js/emojiimages.js +1 -0
  46. package/lib/tinymce/plugins/emoticons/js/emojiimages.min.js +3 -0
  47. package/lib/tinymce/plugins/emoticons/js/emojis.js +1 -0
  48. package/lib/tinymce/plugins/emoticons/js/emojis.min.js +2 -0
  49. package/lib/tinymce/plugins/emoticons/plugin.js +577 -0
  50. package/lib/tinymce/plugins/emoticons/plugin.min.js +4 -0
  51. package/lib/tinymce/plugins/fullscreen/index.js +7 -0
  52. package/lib/tinymce/plugins/fullscreen/plugin.js +1190 -0
  53. package/lib/tinymce/plugins/fullscreen/plugin.min.js +4 -0
  54. package/lib/tinymce/plugins/help/index.js +7 -0
  55. package/lib/tinymce/plugins/help/plugin.js +848 -0
  56. package/lib/tinymce/plugins/help/plugin.min.js +4 -0
  57. package/lib/tinymce/plugins/image/index.js +7 -0
  58. package/lib/tinymce/plugins/image/plugin.js +1475 -0
  59. package/lib/tinymce/plugins/image/plugin.min.js +4 -0
  60. package/lib/tinymce/plugins/importcss/index.js +7 -0
  61. package/lib/tinymce/plugins/importcss/plugin.js +342 -0
  62. package/lib/tinymce/plugins/importcss/plugin.min.js +4 -0
  63. package/lib/tinymce/plugins/insertdatetime/index.js +7 -0
  64. package/lib/tinymce/plugins/insertdatetime/plugin.js +176 -0
  65. package/lib/tinymce/plugins/insertdatetime/plugin.min.js +4 -0
  66. package/lib/tinymce/plugins/link/index.js +7 -0
  67. package/lib/tinymce/plugins/link/plugin.js +1190 -0
  68. package/lib/tinymce/plugins/link/plugin.min.js +4 -0
  69. package/lib/tinymce/plugins/lists/index.js +7 -0
  70. package/lib/tinymce/plugins/lists/plugin.js +1820 -0
  71. package/lib/tinymce/plugins/lists/plugin.min.js +4 -0
  72. package/lib/tinymce/plugins/media/index.js +7 -0
  73. package/lib/tinymce/plugins/media/plugin.js +1157 -0
  74. package/lib/tinymce/plugins/media/plugin.min.js +4 -0
  75. package/lib/tinymce/plugins/nonbreaking/index.js +7 -0
  76. package/lib/tinymce/plugins/nonbreaking/plugin.js +111 -0
  77. package/lib/tinymce/plugins/nonbreaking/plugin.min.js +4 -0
  78. package/lib/tinymce/plugins/pagebreak/index.js +7 -0
  79. package/lib/tinymce/plugins/pagebreak/plugin.js +105 -0
  80. package/lib/tinymce/plugins/pagebreak/plugin.min.js +4 -0
  81. package/lib/tinymce/plugins/preview/index.js +7 -0
  82. package/lib/tinymce/plugins/preview/plugin.js +97 -0
  83. package/lib/tinymce/plugins/preview/plugin.min.js +4 -0
  84. package/lib/tinymce/plugins/quickbars/index.js +7 -0
  85. package/lib/tinymce/plugins/quickbars/plugin.js +421 -0
  86. package/lib/tinymce/plugins/quickbars/plugin.min.js +4 -0
  87. package/lib/tinymce/plugins/save/index.js +7 -0
  88. package/lib/tinymce/plugins/save/plugin.js +118 -0
  89. package/lib/tinymce/plugins/save/plugin.min.js +4 -0
  90. package/lib/tinymce/plugins/searchreplace/index.js +7 -0
  91. package/lib/tinymce/plugins/searchreplace/plugin.js +1079 -0
  92. package/lib/tinymce/plugins/searchreplace/plugin.min.js +4 -0
  93. package/lib/tinymce/plugins/table/index.js +7 -0
  94. package/lib/tinymce/plugins/table/plugin.js +3393 -0
  95. package/lib/tinymce/plugins/table/plugin.min.js +4 -0
  96. package/lib/tinymce/plugins/template/index.js +7 -0
  97. package/lib/tinymce/plugins/template/plugin.js +548 -0
  98. package/lib/tinymce/plugins/template/plugin.min.js +4 -0
  99. package/lib/tinymce/plugins/visualblocks/index.js +7 -0
  100. package/lib/tinymce/plugins/visualblocks/plugin.js +98 -0
  101. package/lib/tinymce/plugins/visualblocks/plugin.min.js +4 -0
  102. package/lib/tinymce/plugins/visualchars/index.js +7 -0
  103. package/lib/tinymce/plugins/visualchars/plugin.js +506 -0
  104. package/lib/tinymce/plugins/visualchars/plugin.min.js +4 -0
  105. package/lib/tinymce/plugins/wordcount/index.js +7 -0
  106. package/lib/tinymce/plugins/wordcount/plugin.js +404 -0
  107. package/lib/tinymce/plugins/wordcount/plugin.min.js +4 -0
  108. package/lib/tinymce/themes/silver/index.js +7 -0
  109. package/lib/tinymce/themes/silver/theme.js +26184 -0
  110. package/lib/tinymce/themes/silver/theme.min.js +4 -0
  111. package/lib/tinymce/tinymce.d.ts +2895 -0
  112. package/lib/tinymce/tinymce.js +29400 -0
  113. package/package.json +1 -1
  114. package/packages/components/editor/src/index.vue +24 -23
@@ -0,0 +1,195 @@
1
+ /**
2
+ * TinyMCE version 6.1.2 (2022-07-29)
3
+ */
4
+
5
+ (function () {
6
+ 'use strict';
7
+
8
+ var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');
9
+
10
+ var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');
11
+
12
+ var global = tinymce.util.Tools.resolve('tinymce.util.Tools');
13
+
14
+ const option = name => editor => editor.options.get(name);
15
+ const register$2 = editor => {
16
+ const registerOption = editor.options.register;
17
+ registerOption('allow_html_in_named_anchor', {
18
+ processor: 'boolean',
19
+ default: false
20
+ });
21
+ };
22
+ const allowHtmlInNamedAnchor = option('allow_html_in_named_anchor');
23
+
24
+ const namedAnchorSelector = 'a:not([href])';
25
+ const isEmptyString = str => !str;
26
+ const getIdFromAnchor = elm => {
27
+ const id = elm.getAttribute('id') || elm.getAttribute('name');
28
+ return id || '';
29
+ };
30
+ const isAnchor = elm => elm && elm.nodeName.toLowerCase() === 'a';
31
+ const isNamedAnchor = elm => isAnchor(elm) && !elm.getAttribute('href') && getIdFromAnchor(elm) !== '';
32
+ const isEmptyNamedAnchor = elm => isNamedAnchor(elm) && !elm.firstChild;
33
+
34
+ const removeEmptyNamedAnchorsInSelection = editor => {
35
+ const dom = editor.dom;
36
+ global$1(dom).walk(editor.selection.getRng(), nodes => {
37
+ global.each(nodes, node => {
38
+ if (isEmptyNamedAnchor(node)) {
39
+ dom.remove(node, false);
40
+ }
41
+ });
42
+ });
43
+ };
44
+ const isValidId = id => /^[A-Za-z][A-Za-z0-9\-:._]*$/.test(id);
45
+ const getNamedAnchor = editor => editor.dom.getParent(editor.selection.getStart(), namedAnchorSelector);
46
+ const getId = editor => {
47
+ const anchor = getNamedAnchor(editor);
48
+ if (anchor) {
49
+ return getIdFromAnchor(anchor);
50
+ } else {
51
+ return '';
52
+ }
53
+ };
54
+ const createAnchor = (editor, id) => {
55
+ editor.undoManager.transact(() => {
56
+ if (!allowHtmlInNamedAnchor(editor)) {
57
+ editor.selection.collapse(true);
58
+ }
59
+ if (editor.selection.isCollapsed()) {
60
+ editor.insertContent(editor.dom.createHTML('a', { id }));
61
+ } else {
62
+ removeEmptyNamedAnchorsInSelection(editor);
63
+ editor.formatter.remove('namedAnchor', null, null, true);
64
+ editor.formatter.apply('namedAnchor', { value: id });
65
+ editor.addVisual();
66
+ }
67
+ });
68
+ };
69
+ const updateAnchor = (editor, id, anchorElement) => {
70
+ anchorElement.removeAttribute('name');
71
+ anchorElement.id = id;
72
+ editor.addVisual();
73
+ editor.undoManager.add();
74
+ };
75
+ const insert = (editor, id) => {
76
+ const anchor = getNamedAnchor(editor);
77
+ if (anchor) {
78
+ updateAnchor(editor, id, anchor);
79
+ } else {
80
+ createAnchor(editor, id);
81
+ }
82
+ editor.focus();
83
+ };
84
+
85
+ const insertAnchor = (editor, newId) => {
86
+ if (!isValidId(newId)) {
87
+ editor.windowManager.alert('ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.');
88
+ return false;
89
+ } else {
90
+ insert(editor, newId);
91
+ return true;
92
+ }
93
+ };
94
+ const open = editor => {
95
+ const currentId = getId(editor);
96
+ editor.windowManager.open({
97
+ title: 'Anchor',
98
+ size: 'normal',
99
+ body: {
100
+ type: 'panel',
101
+ items: [{
102
+ name: 'id',
103
+ type: 'input',
104
+ label: 'ID',
105
+ placeholder: 'example'
106
+ }]
107
+ },
108
+ buttons: [
109
+ {
110
+ type: 'cancel',
111
+ name: 'cancel',
112
+ text: 'Cancel'
113
+ },
114
+ {
115
+ type: 'submit',
116
+ name: 'save',
117
+ text: 'Save',
118
+ primary: true
119
+ }
120
+ ],
121
+ initialData: { id: currentId },
122
+ onSubmit: api => {
123
+ if (insertAnchor(editor, api.getData().id)) {
124
+ api.close();
125
+ }
126
+ }
127
+ });
128
+ };
129
+
130
+ const register$1 = editor => {
131
+ editor.addCommand('mceAnchor', () => {
132
+ open(editor);
133
+ });
134
+ };
135
+
136
+ const isNamedAnchorNode = node => node && isEmptyString(node.attr('href')) && !isEmptyString(node.attr('id') || node.attr('name'));
137
+ const isEmptyNamedAnchorNode = node => isNamedAnchorNode(node) && !node.firstChild;
138
+ const setContentEditable = state => nodes => {
139
+ for (let i = 0; i < nodes.length; i++) {
140
+ const node = nodes[i];
141
+ if (isEmptyNamedAnchorNode(node)) {
142
+ node.attr('contenteditable', state);
143
+ }
144
+ }
145
+ };
146
+ const setup = editor => {
147
+ editor.on('PreInit', () => {
148
+ editor.parser.addNodeFilter('a', setContentEditable('false'));
149
+ editor.serializer.addNodeFilter('a', setContentEditable(null));
150
+ });
151
+ };
152
+
153
+ const registerFormats = editor => {
154
+ editor.formatter.register('namedAnchor', {
155
+ inline: 'a',
156
+ selector: namedAnchorSelector,
157
+ remove: 'all',
158
+ split: true,
159
+ deep: true,
160
+ attributes: { id: '%value' },
161
+ onmatch: (node, _fmt, _itemName) => {
162
+ return isNamedAnchor(node);
163
+ }
164
+ });
165
+ };
166
+
167
+ const register = editor => {
168
+ editor.ui.registry.addToggleButton('anchor', {
169
+ icon: 'bookmark',
170
+ tooltip: 'Anchor',
171
+ onAction: () => editor.execCommand('mceAnchor'),
172
+ onSetup: buttonApi => editor.selection.selectorChangedWithUnbind('a:not([href])', buttonApi.setActive).unbind
173
+ });
174
+ editor.ui.registry.addMenuItem('anchor', {
175
+ icon: 'bookmark',
176
+ text: 'Anchor...',
177
+ onAction: () => editor.execCommand('mceAnchor')
178
+ });
179
+ };
180
+
181
+ var Plugin = () => {
182
+ global$2.add('anchor', editor => {
183
+ register$2(editor);
184
+ setup(editor);
185
+ register$1(editor);
186
+ register(editor);
187
+ editor.on('PreInit', () => {
188
+ registerFormats(editor);
189
+ });
190
+ });
191
+ };
192
+
193
+ Plugin();
194
+
195
+ })();
@@ -0,0 +1,4 @@
1
+ /**
2
+ * TinyMCE version 6.1.2 (2022-07-29)
3
+ */
4
+ !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),n=tinymce.util.Tools.resolve("tinymce.util.Tools");const o=("allow_html_in_named_anchor",e=>e.options.get("allow_html_in_named_anchor"));const a="a:not([href])",r=e=>!e,i=e=>e.getAttribute("id")||e.getAttribute("name")||"",l=e=>(e=>e&&"a"===e.nodeName.toLowerCase())(e)&&!e.getAttribute("href")&&""!==i(e),s=e=>e.dom.getParent(e.selection.getStart(),a),c=(e,a)=>{const r=s(e);r?((e,t,n)=>{n.removeAttribute("name"),n.id=t,e.addVisual(),e.undoManager.add()})(e,a,r):((e,a)=>{e.undoManager.transact((()=>{o(e)||e.selection.collapse(!0),e.selection.isCollapsed()?e.insertContent(e.dom.createHTML("a",{id:a})):((e=>{const o=e.dom;t(o).walk(e.selection.getRng(),(e=>{n.each(e,(e=>{var t;l(t=e)&&!t.firstChild&&o.remove(e,!1)}))}))})(e),e.formatter.remove("namedAnchor",null,null,!0),e.formatter.apply("namedAnchor",{value:a}),e.addVisual())}))})(e,a),e.focus()},d=e=>(e=>e&&r(e.attr("href"))&&!r(e.attr("id")||e.attr("name")))(e)&&!e.firstChild,m=e=>t=>{for(let n=0;n<t.length;n++){const o=t[n];d(o)&&o.attr("contenteditable",e)}};e.add("anchor",(e=>{(e=>{(0,e.options.register)("allow_html_in_named_anchor",{processor:"boolean",default:!1})})(e),(e=>{e.on("PreInit",(()=>{e.parser.addNodeFilter("a",m("false")),e.serializer.addNodeFilter("a",m(null))}))})(e),(e=>{e.addCommand("mceAnchor",(()=>{(e=>{const t=(e=>{const t=s(e);return t?i(t):""})(e);e.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:t=>{((e,t)=>/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)?(c(e,t),!0):(e.windowManager.alert("ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),!1))(e,t.getData().id)&&t.close()}})})(e)}))})(e),(e=>{e.ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:()=>e.execCommand("mceAnchor"),onSetup:t=>e.selection.selectorChangedWithUnbind("a:not([href])",t.setActive).unbind}),e.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:()=>e.execCommand("mceAnchor")})})(e),e.on("PreInit",(()=>{(e=>{e.formatter.register("namedAnchor",{inline:"a",selector:a,remove:"all",split:!0,deep:!0,attributes:{id:"%value"},onmatch:(e,t,n)=>l(e)})})(e)}))}))}();
@@ -0,0 +1,7 @@
1
+ // Exports the "autolink" plugin for usage with module loaders
2
+ // Usage:
3
+ // CommonJS:
4
+ // require('tinymce/plugins/autolink')
5
+ // ES2015:
6
+ // import 'tinymce/plugins/autolink'
7
+ require('./plugin.js');
@@ -0,0 +1,232 @@
1
+ /**
2
+ * TinyMCE version 6.1.2 (2022-07-29)
3
+ */
4
+
5
+ (function () {
6
+ 'use strict';
7
+
8
+ var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
9
+
10
+ const link = () => /(?:[A-Za-z][A-Za-z\d.+-]{0,14}:\/\/(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?|www\.|[-;:&=+$,.\w]+@)[A-Za-z\d-]+(?:\.[A-Za-z\d-]+)*(?::\d+)?(?:\/(?:[-.~*+=!;:'%@$(),\/\w]*[-~*+=%@$()\/\w])?)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?/g;
11
+
12
+ const option = name => editor => editor.options.get(name);
13
+ const register = editor => {
14
+ const registerOption = editor.options.register;
15
+ registerOption('autolink_pattern', {
16
+ processor: 'regexp',
17
+ default: new RegExp('^' + link().source + '$', 'i')
18
+ });
19
+ registerOption('link_default_target', { processor: 'string' });
20
+ registerOption('link_default_protocol', {
21
+ processor: 'string',
22
+ default: 'https'
23
+ });
24
+ };
25
+ const getAutoLinkPattern = option('autolink_pattern');
26
+ const getDefaultLinkTarget = option('link_default_target');
27
+ const getDefaultLinkProtocol = option('link_default_protocol');
28
+
29
+ const hasProto = (v, constructor, predicate) => {
30
+ var _a;
31
+ if (predicate(v, constructor.prototype)) {
32
+ return true;
33
+ } else {
34
+ return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;
35
+ }
36
+ };
37
+ const typeOf = x => {
38
+ const t = typeof x;
39
+ if (x === null) {
40
+ return 'null';
41
+ } else if (t === 'object' && Array.isArray(x)) {
42
+ return 'array';
43
+ } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {
44
+ return 'string';
45
+ } else {
46
+ return t;
47
+ }
48
+ };
49
+ const isType = type => value => typeOf(value) === type;
50
+ const isString = isType('string');
51
+ const isNullable = a => a === null || a === undefined;
52
+ const isNonNullable = a => !isNullable(a);
53
+
54
+ const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;
55
+ const contains = (str, substr) => {
56
+ return str.indexOf(substr) !== -1;
57
+ };
58
+ const startsWith = (str, prefix) => {
59
+ return checkRange(str, prefix, 0);
60
+ };
61
+
62
+ const rangeEqualsBracketOrSpace = rangeString => /^[(\[{ \u00a0]$/.test(rangeString);
63
+ const isTextNode = node => node.nodeType === 3;
64
+ const isElement = node => node.nodeType === 1;
65
+ const scopeIndex = (container, index) => {
66
+ if (index < 0) {
67
+ index = 0;
68
+ }
69
+ if (isTextNode(container)) {
70
+ const len = container.data.length;
71
+ if (index > len) {
72
+ index = len;
73
+ }
74
+ }
75
+ return index;
76
+ };
77
+ const setStart = (rng, container, offset) => {
78
+ if (!isElement(container) || container.hasChildNodes()) {
79
+ rng.setStart(container, scopeIndex(container, offset));
80
+ } else {
81
+ rng.setStartBefore(container);
82
+ }
83
+ };
84
+ const setEnd = (rng, container, offset) => {
85
+ if (!isElement(container) || container.hasChildNodes()) {
86
+ rng.setEnd(container, scopeIndex(container, offset));
87
+ } else {
88
+ rng.setEndAfter(container);
89
+ }
90
+ };
91
+ const hasProtocol = url => /^([A-Za-z][A-Za-z\d.+-]*:\/\/)|mailto:/.test(url);
92
+ const isPunctuation = char => /[?!,.;:]/.test(char);
93
+ const parseCurrentLine = (editor, endOffset) => {
94
+ let end, endContainer, text, prev, len, rngText;
95
+ const autoLinkPattern = getAutoLinkPattern(editor);
96
+ if (editor.dom.getParent(editor.selection.getNode(), 'a[href]') !== null) {
97
+ return;
98
+ }
99
+ const rng = editor.selection.getRng().cloneRange();
100
+ if (rng.startOffset < 5) {
101
+ prev = rng.endContainer.previousSibling;
102
+ if (!prev) {
103
+ if (!rng.endContainer.firstChild || !rng.endContainer.firstChild.nextSibling) {
104
+ return;
105
+ }
106
+ prev = rng.endContainer.firstChild.nextSibling;
107
+ }
108
+ len = prev.length;
109
+ setStart(rng, prev, len);
110
+ setEnd(rng, prev, len);
111
+ if (rng.endOffset < 5) {
112
+ return;
113
+ }
114
+ end = rng.endOffset;
115
+ endContainer = prev;
116
+ } else {
117
+ endContainer = rng.endContainer;
118
+ if (!isTextNode(endContainer) && endContainer.firstChild) {
119
+ while (!isTextNode(endContainer) && endContainer.firstChild) {
120
+ endContainer = endContainer.firstChild;
121
+ }
122
+ if (isTextNode(endContainer)) {
123
+ setStart(rng, endContainer, 0);
124
+ setEnd(rng, endContainer, endContainer.nodeValue.length);
125
+ }
126
+ }
127
+ if (rng.endOffset === 1) {
128
+ end = 2;
129
+ } else {
130
+ end = rng.endOffset - 1 - endOffset;
131
+ }
132
+ }
133
+ const start = end;
134
+ do {
135
+ setStart(rng, endContainer, end >= 2 ? end - 2 : 0);
136
+ setEnd(rng, endContainer, end >= 1 ? end - 1 : 0);
137
+ end -= 1;
138
+ rngText = rng.toString();
139
+ } while (!rangeEqualsBracketOrSpace(rngText) && end - 2 >= 0);
140
+ if (rangeEqualsBracketOrSpace(rng.toString())) {
141
+ setStart(rng, endContainer, end);
142
+ setEnd(rng, endContainer, start);
143
+ end += 1;
144
+ } else if (rng.startOffset === 0) {
145
+ setStart(rng, endContainer, 0);
146
+ setEnd(rng, endContainer, start);
147
+ } else {
148
+ setStart(rng, endContainer, end);
149
+ setEnd(rng, endContainer, start);
150
+ }
151
+ text = rng.toString();
152
+ if (isPunctuation(text.charAt(text.length - 1))) {
153
+ setEnd(rng, endContainer, start - 1);
154
+ }
155
+ text = rng.toString().trim();
156
+ const matches = text.match(autoLinkPattern);
157
+ const protocol = getDefaultLinkProtocol(editor);
158
+ if (matches) {
159
+ let url = matches[0];
160
+ if (startsWith(url, 'www.')) {
161
+ url = protocol + '://' + url;
162
+ } else if (contains(url, '@') && !hasProtocol(url)) {
163
+ url = 'mailto:' + url;
164
+ }
165
+ return {
166
+ rng,
167
+ url
168
+ };
169
+ } else {
170
+ return null;
171
+ }
172
+ };
173
+ const convertToLink = (editor, result) => {
174
+ const defaultLinkTarget = getDefaultLinkTarget(editor);
175
+ const {rng, url} = result;
176
+ const bookmark = editor.selection.getBookmark();
177
+ editor.selection.setRng(rng);
178
+ const command = 'createlink';
179
+ const args = {
180
+ command,
181
+ ui: false,
182
+ value: url
183
+ };
184
+ const beforeExecEvent = editor.dispatch('BeforeExecCommand', args);
185
+ if (!beforeExecEvent.isDefaultPrevented()) {
186
+ editor.getDoc().execCommand(command, false, url);
187
+ editor.dispatch('ExecCommand', args);
188
+ if (isString(defaultLinkTarget)) {
189
+ editor.dom.setAttrib(editor.selection.getNode(), 'target', defaultLinkTarget);
190
+ }
191
+ }
192
+ editor.selection.moveToBookmark(bookmark);
193
+ editor.nodeChanged();
194
+ };
195
+ const handleSpacebar = editor => {
196
+ const result = parseCurrentLine(editor, 0);
197
+ if (isNonNullable(result)) {
198
+ convertToLink(editor, result);
199
+ }
200
+ };
201
+ const handleBracket = handleSpacebar;
202
+ const handleEnter = editor => {
203
+ const result = parseCurrentLine(editor, -1);
204
+ if (isNonNullable(result)) {
205
+ convertToLink(editor, result);
206
+ }
207
+ };
208
+ const setup = editor => {
209
+ editor.on('keydown', e => {
210
+ if (e.keyCode === 13 && !e.isDefaultPrevented()) {
211
+ handleEnter(editor);
212
+ }
213
+ });
214
+ editor.on('keyup', e => {
215
+ if (e.keyCode === 32) {
216
+ handleSpacebar(editor);
217
+ } else if (e.keyCode === 48 && e.shiftKey || e.keyCode === 221) {
218
+ handleBracket(editor);
219
+ }
220
+ });
221
+ };
222
+
223
+ var Plugin = () => {
224
+ global.add('autolink', editor => {
225
+ register(editor);
226
+ setup(editor);
227
+ });
228
+ };
229
+
230
+ Plugin();
231
+
232
+ })();
@@ -0,0 +1,4 @@
1
+ /**
2
+ * TinyMCE version 6.1.2 (2022-07-29)
3
+ */
4
+ !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=t=>e=>e.options.get(t),n=e("autolink_pattern"),o=e("link_default_target"),r=e("link_default_protocol"),i=("string",t=>"string"===(t=>{const e=typeof t;return null===t?"null":"object"===e&&Array.isArray(t)?"array":"object"===e&&(n=o=t,(r=String).prototype.isPrototypeOf(n)||(null===(i=o.constructor)||void 0===i?void 0:i.name)===r.name)?"string":e;var n,o,r,i})(t));const s=t=>!(t=>null==t)(t),l=t=>/^[(\[{ \u00a0]$/.test(t),a=t=>3===t.nodeType,d=t=>1===t.nodeType,c=(t,e)=>{if(e<0&&(e=0),a(t)){const n=t.data.length;e>n&&(e=n)}return e},f=(t,e,n)=>{!d(e)||e.hasChildNodes()?t.setStart(e,c(e,n)):t.setStartBefore(e)},g=(t,e,n)=>{!d(e)||e.hasChildNodes()?t.setEnd(e,c(e,n)):t.setEndAfter(e)},u=(t,e)=>{let o,i,s,d,c,u;const h=n(t);if(null!==t.dom.getParent(t.selection.getNode(),"a[href]"))return;const p=t.selection.getRng().cloneRange();if(p.startOffset<5){if(d=p.endContainer.previousSibling,!d){if(!p.endContainer.firstChild||!p.endContainer.firstChild.nextSibling)return;d=p.endContainer.firstChild.nextSibling}if(c=d.length,f(p,d,c),g(p,d,c),p.endOffset<5)return;o=p.endOffset,i=d}else{if(i=p.endContainer,!a(i)&&i.firstChild){for(;!a(i)&&i.firstChild;)i=i.firstChild;a(i)&&(f(p,i,0),g(p,i,i.nodeValue.length))}o=1===p.endOffset?2:p.endOffset-1-e}const m=o;do{f(p,i,o>=2?o-2:0),g(p,i,o>=1?o-1:0),o-=1,u=p.toString()}while(!l(u)&&o-2>=0);var C;l(p.toString())?(f(p,i,o),g(p,i,m),o+=1):0===p.startOffset?(f(p,i,0),g(p,i,m)):(f(p,i,o),g(p,i,m)),s=p.toString(),C=s.charAt(s.length-1),/[?!,.;:]/.test(C)&&g(p,i,m-1),s=p.toString().trim();const k=s.match(h),y=r(t);if(k){let t=k[0];return v="www.",(w=t).length>=v.length&&w.substr(0,0+v.length)===v?t=y+"://"+t:((t,e)=>-1!==t.indexOf("@"))(t)&&!(t=>/^([A-Za-z][A-Za-z\d.+-]*:\/\/)|mailto:/.test(t))(t)&&(t="mailto:"+t),{rng:p,url:t}}var w,v;return null},h=(t,e)=>{const n=o(t),{rng:r,url:s}=e,l=t.selection.getBookmark();t.selection.setRng(r);const a="createlink",d={command:a,ui:!1,value:s};t.dispatch("BeforeExecCommand",d).isDefaultPrevented()||(t.getDoc().execCommand(a,!1,s),t.dispatch("ExecCommand",d),i(n)&&t.dom.setAttrib(t.selection.getNode(),"target",n)),t.selection.moveToBookmark(l),t.nodeChanged()},p=t=>{const e=u(t,0);s(e)&&h(t,e)},m=p;t.add("autolink",(t=>{(t=>{const e=t.options.register;e("autolink_pattern",{processor:"regexp",default:new RegExp("^"+/(?:[A-Za-z][A-Za-z\d.+-]{0,14}:\/\/(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?|www\.|[-;:&=+$,.\w]+@)[A-Za-z\d-]+(?:\.[A-Za-z\d-]+)*(?::\d+)?(?:\/(?:[-.~*+=!;:'%@$(),\/\w]*[-~*+=%@$()\/\w])?)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?/g.source+"$","i")}),e("link_default_target",{processor:"string"}),e("link_default_protocol",{processor:"string",default:"https"})})(t),(t=>{t.on("keydown",(e=>{13!==e.keyCode||e.isDefaultPrevented()||(t=>{const e=u(t,-1);s(e)&&h(t,e)})(t)})),t.on("keyup",(e=>{32===e.keyCode?p(t):(48===e.keyCode&&e.shiftKey||221===e.keyCode)&&m(t)}))})(t)}))}();
@@ -0,0 +1,7 @@
1
+ // Exports the "autoresize" plugin for usage with module loaders
2
+ // Usage:
3
+ // CommonJS:
4
+ // require('tinymce/plugins/autoresize')
5
+ // ES2015:
6
+ // import 'tinymce/plugins/autoresize'
7
+ require('./plugin.js');
@@ -0,0 +1,156 @@
1
+ /**
2
+ * TinyMCE version 6.1.2 (2022-07-29)
3
+ */
4
+
5
+ (function () {
6
+ 'use strict';
7
+
8
+ const Cell = initial => {
9
+ let value = initial;
10
+ const get = () => {
11
+ return value;
12
+ };
13
+ const set = v => {
14
+ value = v;
15
+ };
16
+ return {
17
+ get,
18
+ set
19
+ };
20
+ };
21
+
22
+ var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');
23
+
24
+ var global = tinymce.util.Tools.resolve('tinymce.Env');
25
+
26
+ const fireResizeEditor = editor => editor.dispatch('ResizeEditor');
27
+
28
+ const option = name => editor => editor.options.get(name);
29
+ const register$1 = editor => {
30
+ const registerOption = editor.options.register;
31
+ registerOption('autoresize_overflow_padding', {
32
+ processor: 'number',
33
+ default: 1
34
+ });
35
+ registerOption('autoresize_bottom_margin', {
36
+ processor: 'number',
37
+ default: 50
38
+ });
39
+ };
40
+ const getMinHeight = option('min_height');
41
+ const getMaxHeight = option('max_height');
42
+ const getAutoResizeOverflowPadding = option('autoresize_overflow_padding');
43
+ const getAutoResizeBottomMargin = option('autoresize_bottom_margin');
44
+
45
+ const isFullscreen = editor => editor.plugins.fullscreen && editor.plugins.fullscreen.isFullscreen();
46
+ const toggleScrolling = (editor, state) => {
47
+ const body = editor.getBody();
48
+ if (body) {
49
+ body.style.overflowY = state ? '' : 'hidden';
50
+ if (!state) {
51
+ body.scrollTop = 0;
52
+ }
53
+ }
54
+ };
55
+ const parseCssValueToInt = (dom, elm, name, computed) => {
56
+ const value = parseInt(dom.getStyle(elm, name, computed), 10);
57
+ return isNaN(value) ? 0 : value;
58
+ };
59
+ const shouldScrollIntoView = trigger => {
60
+ if ((trigger === null || trigger === void 0 ? void 0 : trigger.type.toLowerCase()) === 'setcontent') {
61
+ const setContentEvent = trigger;
62
+ return setContentEvent.selection === true || setContentEvent.paste === true;
63
+ } else {
64
+ return false;
65
+ }
66
+ };
67
+ const resize = (editor, oldSize, trigger) => {
68
+ var _a;
69
+ const dom = editor.dom;
70
+ const doc = editor.getDoc();
71
+ if (!doc) {
72
+ return;
73
+ }
74
+ if (isFullscreen(editor)) {
75
+ toggleScrolling(editor, true);
76
+ return;
77
+ }
78
+ const docEle = doc.documentElement;
79
+ const resizeBottomMargin = getAutoResizeBottomMargin(editor);
80
+ const minHeight = (_a = getMinHeight(editor)) !== null && _a !== void 0 ? _a : editor.getElement().offsetHeight;
81
+ let resizeHeight = minHeight;
82
+ const marginTop = parseCssValueToInt(dom, docEle, 'margin-top', true);
83
+ const marginBottom = parseCssValueToInt(dom, docEle, 'margin-bottom', true);
84
+ let contentHeight = docEle.offsetHeight + marginTop + marginBottom + resizeBottomMargin;
85
+ if (contentHeight < 0) {
86
+ contentHeight = 0;
87
+ }
88
+ const containerHeight = editor.getContainer().offsetHeight;
89
+ const contentAreaHeight = editor.getContentAreaContainer().offsetHeight;
90
+ const chromeHeight = containerHeight - contentAreaHeight;
91
+ if (contentHeight + chromeHeight > minHeight) {
92
+ resizeHeight = contentHeight + chromeHeight;
93
+ }
94
+ const maxHeight = getMaxHeight(editor);
95
+ if (maxHeight && resizeHeight > maxHeight) {
96
+ resizeHeight = maxHeight;
97
+ toggleScrolling(editor, true);
98
+ } else {
99
+ toggleScrolling(editor, false);
100
+ }
101
+ if (resizeHeight !== oldSize.get()) {
102
+ const deltaSize = resizeHeight - oldSize.get();
103
+ dom.setStyle(editor.getContainer(), 'height', resizeHeight + 'px');
104
+ oldSize.set(resizeHeight);
105
+ fireResizeEditor(editor);
106
+ if (global.browser.isSafari() && (global.os.isMacOS() || global.os.isiOS())) {
107
+ const win = editor.getWin();
108
+ win.scrollTo(win.pageXOffset, win.pageYOffset);
109
+ }
110
+ if (editor.hasFocus() && shouldScrollIntoView(trigger)) {
111
+ editor.selection.scrollIntoView();
112
+ }
113
+ if ((global.browser.isSafari() || global.browser.isChromium()) && deltaSize < 0) {
114
+ resize(editor, oldSize, trigger);
115
+ }
116
+ }
117
+ };
118
+ const setup = (editor, oldSize) => {
119
+ editor.on('init', () => {
120
+ const overflowPadding = getAutoResizeOverflowPadding(editor);
121
+ const dom = editor.dom;
122
+ dom.setStyles(editor.getDoc().documentElement, { height: 'auto' });
123
+ dom.setStyles(editor.getBody(), {
124
+ 'paddingLeft': overflowPadding,
125
+ 'paddingRight': overflowPadding,
126
+ 'min-height': 0
127
+ });
128
+ });
129
+ editor.on('NodeChange SetContent keyup FullscreenStateChanged ResizeContent', e => {
130
+ resize(editor, oldSize, e);
131
+ });
132
+ };
133
+
134
+ const register = (editor, oldSize) => {
135
+ editor.addCommand('mceAutoResize', () => {
136
+ resize(editor, oldSize);
137
+ });
138
+ };
139
+
140
+ var Plugin = () => {
141
+ global$1.add('autoresize', editor => {
142
+ register$1(editor);
143
+ if (!editor.options.isSet('resize')) {
144
+ editor.options.set('resize', false);
145
+ }
146
+ if (!editor.inline) {
147
+ const oldSize = Cell(0);
148
+ register(editor, oldSize);
149
+ setup(editor, oldSize);
150
+ }
151
+ });
152
+ };
153
+
154
+ Plugin();
155
+
156
+ })();
@@ -0,0 +1,4 @@
1
+ /**
2
+ * TinyMCE version 6.1.2 (2022-07-29)
3
+ */
4
+ !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env");const o=e=>t=>t.options.get(e),n=o("min_height"),s=o("max_height"),i=o("autoresize_overflow_padding"),r=o("autoresize_bottom_margin"),l=(e,t)=>{const o=e.getBody();o&&(o.style.overflowY=t?"":"hidden",t||(o.scrollTop=0))},a=(e,t,o,n)=>{const s=parseInt(e.getStyle(t,o,n),10);return isNaN(s)?0:s},g=(e,o,i)=>{var c;const u=e.dom,d=e.getDoc();if(!d)return;if((e=>e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen())(e))return void l(e,!0);const f=d.documentElement,m=r(e),p=null!==(c=n(e))&&void 0!==c?c:e.getElement().offsetHeight;let h=p;const y=a(u,f,"margin-top",!0),v=a(u,f,"margin-bottom",!0);let C=f.offsetHeight+y+v+m;C<0&&(C=0);const S=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight;C+S>p&&(h=C+S);const z=s(e);if(z&&h>z?(h=z,l(e,!0)):l(e,!1),h!==o.get()){const n=h-o.get();if(u.setStyle(e.getContainer(),"height",h+"px"),o.set(h),(e=>{e.dispatch("ResizeEditor")})(e),t.browser.isSafari()&&(t.os.isMacOS()||t.os.isiOS())){const t=e.getWin();t.scrollTo(t.pageXOffset,t.pageYOffset)}e.hasFocus()&&(e=>{if("setcontent"===(null==e?void 0:e.type.toLowerCase())){const t=e;return!0===t.selection||!0===t.paste}return!1})(i)&&e.selection.scrollIntoView(),(t.browser.isSafari()||t.browser.isChromium())&&n<0&&g(e,o,i)}};e.add("autoresize",(e=>{if((e=>{const t=e.options.register;t("autoresize_overflow_padding",{processor:"number",default:1}),t("autoresize_bottom_margin",{processor:"number",default:50})})(e),e.options.isSet("resize")||e.options.set("resize",!1),!e.inline){const t=(e=>{let t=0;return{get:()=>t,set:e=>{t=e}}})();((e,t)=>{e.addCommand("mceAutoResize",(()=>{g(e,t)}))})(e,t),((e,t)=>{e.on("init",(()=>{const t=i(e),o=e.dom;o.setStyles(e.getDoc().documentElement,{height:"auto"}),o.setStyles(e.getBody(),{paddingLeft:t,paddingRight:t,"min-height":0})})),e.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",(o=>{g(e,t,o)}))})(e,t)}}))}();
@@ -0,0 +1,7 @@
1
+ // Exports the "autosave" plugin for usage with module loaders
2
+ // Usage:
3
+ // CommonJS:
4
+ // require('tinymce/plugins/autosave')
5
+ // ES2015:
6
+ // import 'tinymce/plugins/autosave'
7
+ require('./plugin.js');