@dangl/angular-material-shared 2.9.0-beta0040 → 2.9.0-beta0048

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 (165) hide show
  1. package/package.json +1 -1
  2. package/tinymce-assets/icons/default/icons.js +9 -46
  3. package/tinymce-assets/icons/default/icons.min.js +1 -1
  4. package/tinymce-assets/models/dom/model.js +7239 -8193
  5. package/tinymce-assets/models/dom/model.min.js +1 -1
  6. package/tinymce-assets/plugins/accordion/plugin.js +879 -1174
  7. package/tinymce-assets/plugins/accordion/plugin.min.js +5 -1
  8. package/tinymce-assets/plugins/advlist/plugin.js +200 -412
  9. package/tinymce-assets/plugins/advlist/plugin.min.js +5 -1
  10. package/tinymce-assets/plugins/anchor/plugin.js +166 -189
  11. package/tinymce-assets/plugins/anchor/plugin.min.js +5 -1
  12. package/tinymce-assets/plugins/autolink/plugin.js +220 -310
  13. package/tinymce-assets/plugins/autolink/plugin.min.js +5 -1
  14. package/tinymce-assets/plugins/autoresize/plugin.js +149 -180
  15. package/tinymce-assets/plugins/autoresize/plugin.min.js +5 -1
  16. package/tinymce-assets/plugins/autosave/plugin.js +189 -208
  17. package/tinymce-assets/plugins/autosave/plugin.min.js +5 -1
  18. package/tinymce-assets/plugins/charmap/plugin.js +1566 -905
  19. package/tinymce-assets/plugins/charmap/plugin.min.js +5 -1
  20. package/tinymce-assets/plugins/code/plugin.js +61 -73
  21. package/tinymce-assets/plugins/code/plugin.min.js +4 -0
  22. package/tinymce-assets/plugins/codesample/plugin.js +2409 -3592
  23. package/tinymce-assets/plugins/codesample/plugin.min.js +12 -8
  24. package/tinymce-assets/plugins/directionality/plugin.js +304 -545
  25. package/tinymce-assets/plugins/directionality/plugin.min.js +5 -1
  26. package/tinymce-assets/plugins/emoticons/plugin.js +488 -702
  27. package/tinymce-assets/plugins/emoticons/plugin.min.js +5 -1
  28. package/tinymce-assets/plugins/fullscreen/plugin.js +1049 -1409
  29. package/tinymce-assets/plugins/fullscreen/plugin.min.js +5 -1
  30. package/tinymce-assets/plugins/help/js/i18n/keynav/ar.js +1 -4
  31. package/tinymce-assets/plugins/help/js/i18n/keynav/bg_BG.js +1 -4
  32. package/tinymce-assets/plugins/help/js/i18n/keynav/ca.js +1 -4
  33. package/tinymce-assets/plugins/help/js/i18n/keynav/cs.js +1 -4
  34. package/tinymce-assets/plugins/help/js/i18n/keynav/da.js +1 -4
  35. package/tinymce-assets/plugins/help/js/i18n/keynav/de.js +1 -4
  36. package/tinymce-assets/plugins/help/js/i18n/keynav/el.js +1 -4
  37. package/tinymce-assets/plugins/help/js/i18n/keynav/en.js +1 -4
  38. package/tinymce-assets/plugins/help/js/i18n/keynav/es.js +1 -4
  39. package/tinymce-assets/plugins/help/js/i18n/keynav/eu.js +1 -4
  40. package/tinymce-assets/plugins/help/js/i18n/keynav/fa.js +1 -4
  41. package/tinymce-assets/plugins/help/js/i18n/keynav/fi.js +1 -4
  42. package/tinymce-assets/plugins/help/js/i18n/keynav/fr_FR.js +1 -4
  43. package/tinymce-assets/plugins/help/js/i18n/keynav/he_IL.js +1 -4
  44. package/tinymce-assets/plugins/help/js/i18n/keynav/hi.js +1 -4
  45. package/tinymce-assets/plugins/help/js/i18n/keynav/hr.js +1 -4
  46. package/tinymce-assets/plugins/help/js/i18n/keynav/hu_HU.js +1 -4
  47. package/tinymce-assets/plugins/help/js/i18n/keynav/id.js +1 -4
  48. package/tinymce-assets/plugins/help/js/i18n/keynav/it.js +1 -4
  49. package/tinymce-assets/plugins/help/js/i18n/keynav/ja.js +1 -4
  50. package/tinymce-assets/plugins/help/js/i18n/keynav/kk.js +1 -4
  51. package/tinymce-assets/plugins/help/js/i18n/keynav/ko_KR.js +1 -4
  52. package/tinymce-assets/plugins/help/js/i18n/keynav/ms.js +1 -4
  53. package/tinymce-assets/plugins/help/js/i18n/keynav/nb_NO.js +1 -4
  54. package/tinymce-assets/plugins/help/js/i18n/keynav/nl.js +1 -4
  55. package/tinymce-assets/plugins/help/js/i18n/keynav/pl.js +1 -4
  56. package/tinymce-assets/plugins/help/js/i18n/keynav/pt_BR.js +1 -4
  57. package/tinymce-assets/plugins/help/js/i18n/keynav/pt_PT.js +1 -4
  58. package/tinymce-assets/plugins/help/js/i18n/keynav/ro.js +1 -4
  59. package/tinymce-assets/plugins/help/js/i18n/keynav/ru.js +1 -4
  60. package/tinymce-assets/plugins/help/js/i18n/keynav/sk.js +1 -4
  61. package/tinymce-assets/plugins/help/js/i18n/keynav/sl_SI.js +2 -5
  62. package/tinymce-assets/plugins/help/js/i18n/keynav/sv_SE.js +1 -4
  63. package/tinymce-assets/plugins/help/js/i18n/keynav/th_TH.js +1 -4
  64. package/tinymce-assets/plugins/help/js/i18n/keynav/tr.js +1 -4
  65. package/tinymce-assets/plugins/help/js/i18n/keynav/uk.js +1 -4
  66. package/tinymce-assets/plugins/help/js/i18n/keynav/vi.js +1 -4
  67. package/tinymce-assets/plugins/help/js/i18n/keynav/zh_CN.js +5 -8
  68. package/tinymce-assets/plugins/help/js/i18n/keynav/zh_TW.js +1 -4
  69. package/tinymce-assets/plugins/help/plugin.js +809 -739
  70. package/tinymce-assets/plugins/help/plugin.min.js +5 -1
  71. package/tinymce-assets/plugins/image/plugin.js +1291 -1475
  72. package/tinymce-assets/plugins/image/plugin.min.js +5 -1
  73. package/tinymce-assets/plugins/importcss/plugin.js +269 -328
  74. package/tinymce-assets/plugins/importcss/plugin.min.js +5 -1
  75. package/tinymce-assets/plugins/insertdatetime/plugin.js +141 -140
  76. package/tinymce-assets/plugins/insertdatetime/plugin.min.js +5 -1
  77. package/tinymce-assets/plugins/link/plugin.js +1084 -1419
  78. package/tinymce-assets/plugins/link/plugin.min.js +5 -1
  79. package/tinymce-assets/plugins/lists/plugin.js +1805 -2177
  80. package/tinymce-assets/plugins/lists/plugin.min.js +5 -1
  81. package/tinymce-assets/plugins/media/plugin.js +1047 -1305
  82. package/tinymce-assets/plugins/media/plugin.min.js +5 -1
  83. package/tinymce-assets/plugins/nonbreaking/plugin.js +88 -93
  84. package/tinymce-assets/plugins/nonbreaking/plugin.min.js +4 -0
  85. package/tinymce-assets/plugins/pagebreak/plugin.js +85 -91
  86. package/tinymce-assets/plugins/pagebreak/plugin.min.js +4 -0
  87. package/tinymce-assets/plugins/preview/plugin.js +74 -742
  88. package/tinymce-assets/plugins/preview/plugin.min.js +5 -1
  89. package/tinymce-assets/plugins/quickbars/plugin.js +375 -582
  90. package/tinymce-assets/plugins/quickbars/plugin.min.js +5 -1
  91. package/tinymce-assets/plugins/save/plugin.js +82 -100
  92. package/tinymce-assets/plugins/save/plugin.min.js +5 -1
  93. package/tinymce-assets/plugins/searchreplace/plugin.js +906 -1183
  94. package/tinymce-assets/plugins/searchreplace/plugin.min.js +5 -1
  95. package/tinymce-assets/plugins/table/plugin.js +3094 -3651
  96. package/tinymce-assets/plugins/table/plugin.min.js +5 -1
  97. package/tinymce-assets/plugins/template/index.js +7 -0
  98. package/tinymce-assets/plugins/template/plugin.js +567 -0
  99. package/tinymce-assets/plugins/template/plugin.min.js +5 -0
  100. package/tinymce-assets/plugins/visualblocks/plugin.js +63 -71
  101. package/tinymce-assets/plugins/visualblocks/plugin.min.js +5 -1
  102. package/tinymce-assets/plugins/visualchars/plugin.js +436 -685
  103. package/tinymce-assets/plugins/visualchars/plugin.min.js +5 -1
  104. package/tinymce-assets/plugins/wordcount/plugin.js +307 -382
  105. package/tinymce-assets/plugins/wordcount/plugin.min.js +5 -1
  106. package/tinymce-assets/skins/content/dark/content.css +4 -0
  107. package/tinymce-assets/skins/content/dark/content.js +6 -1
  108. package/tinymce-assets/skins/content/dark/content.min.css +4 -0
  109. package/tinymce-assets/skins/content/default/content.css +4 -0
  110. package/tinymce-assets/skins/content/default/content.js +6 -1
  111. package/tinymce-assets/skins/content/default/content.min.css +4 -0
  112. package/tinymce-assets/skins/content/document/content.css +4 -0
  113. package/tinymce-assets/skins/content/document/content.js +6 -1
  114. package/tinymce-assets/skins/content/document/content.min.css +4 -0
  115. package/tinymce-assets/skins/content/tinymce-5/content.css +4 -0
  116. package/tinymce-assets/skins/content/tinymce-5/content.js +6 -1
  117. package/tinymce-assets/skins/content/tinymce-5/content.min.css +4 -0
  118. package/tinymce-assets/skins/content/tinymce-5-dark/content.css +4 -0
  119. package/tinymce-assets/skins/content/tinymce-5-dark/content.js +6 -1
  120. package/tinymce-assets/skins/content/tinymce-5-dark/content.min.css +4 -0
  121. package/tinymce-assets/skins/content/writer/content.css +4 -0
  122. package/tinymce-assets/skins/content/writer/content.js +6 -1
  123. package/tinymce-assets/skins/content/writer/content.min.css +4 -0
  124. package/tinymce-assets/skins/ui/oxide/content.css +53 -148
  125. package/tinymce-assets/skins/ui/oxide/content.inline.css +53 -148
  126. package/tinymce-assets/skins/ui/oxide/content.inline.js +6 -1
  127. package/tinymce-assets/skins/ui/oxide/content.inline.min.css +5 -1
  128. package/tinymce-assets/skins/ui/oxide/content.js +6 -1
  129. package/tinymce-assets/skins/ui/oxide/content.min.css +5 -1
  130. package/tinymce-assets/skins/ui/oxide/skin.css +207 -1585
  131. package/tinymce-assets/skins/ui/oxide/skin.js +2 -1
  132. package/tinymce-assets/skins/ui/oxide/skin.min.css +1 -1
  133. package/tinymce-assets/skins/ui/oxide/skin.shadowdom.js +2 -1
  134. package/tinymce-assets/skins/ui/oxide-dark/content.css +46 -148
  135. package/tinymce-assets/skins/ui/oxide-dark/content.inline.css +53 -148
  136. package/tinymce-assets/skins/ui/oxide-dark/content.inline.js +6 -1
  137. package/tinymce-assets/skins/ui/oxide-dark/content.inline.min.css +5 -1
  138. package/tinymce-assets/skins/ui/oxide-dark/content.js +6 -1
  139. package/tinymce-assets/skins/ui/oxide-dark/content.min.css +5 -1
  140. package/tinymce-assets/skins/ui/oxide-dark/skin.css +219 -1597
  141. package/tinymce-assets/skins/ui/oxide-dark/skin.js +2 -1
  142. package/tinymce-assets/skins/ui/oxide-dark/skin.min.css +1 -1
  143. package/tinymce-assets/skins/ui/oxide-dark/skin.shadowdom.js +2 -1
  144. package/tinymce-assets/skins/ui/tinymce-5/content.css +53 -148
  145. package/tinymce-assets/skins/ui/tinymce-5/content.inline.css +53 -148
  146. package/tinymce-assets/skins/ui/tinymce-5/content.inline.js +6 -1
  147. package/tinymce-assets/skins/ui/tinymce-5/content.inline.min.css +5 -1
  148. package/tinymce-assets/skins/ui/tinymce-5/content.js +6 -1
  149. package/tinymce-assets/skins/ui/tinymce-5/content.min.css +5 -1
  150. package/tinymce-assets/skins/ui/tinymce-5/skin.css +194 -1597
  151. package/tinymce-assets/skins/ui/tinymce-5/skin.js +2 -1
  152. package/tinymce-assets/skins/ui/tinymce-5/skin.min.css +1 -1
  153. package/tinymce-assets/skins/ui/tinymce-5/skin.shadowdom.js +2 -1
  154. package/tinymce-assets/skins/ui/tinymce-5-dark/content.css +46 -148
  155. package/tinymce-assets/skins/ui/tinymce-5-dark/content.inline.css +53 -148
  156. package/tinymce-assets/skins/ui/tinymce-5-dark/content.inline.js +6 -1
  157. package/tinymce-assets/skins/ui/tinymce-5-dark/content.inline.min.css +5 -1
  158. package/tinymce-assets/skins/ui/tinymce-5-dark/content.js +6 -1
  159. package/tinymce-assets/skins/ui/tinymce-5-dark/content.min.css +5 -1
  160. package/tinymce-assets/skins/ui/tinymce-5-dark/skin.css +202 -1605
  161. package/tinymce-assets/skins/ui/tinymce-5-dark/skin.js +2 -1
  162. package/tinymce-assets/skins/ui/tinymce-5-dark/skin.min.css +1 -1
  163. package/tinymce-assets/skins/ui/tinymce-5-dark/skin.shadowdom.js +2 -1
  164. package/tinymce-assets/themes/silver/theme.js +28439 -32466
  165. package/tinymce-assets/themes/silver/theme.min.js +1 -1
@@ -0,0 +1,567 @@
1
+ /**
2
+ * TinyMCE version 6.8.6 (TBD)
3
+ */
4
+
5
+ (function () {
6
+ 'use strict';
7
+
8
+ var global$3 = tinymce.util.Tools.resolve('tinymce.PluginManager');
9
+
10
+ const hasProto = (v, constructor, predicate) => {
11
+ var _a;
12
+ if (predicate(v, constructor.prototype)) {
13
+ return true;
14
+ } else {
15
+ return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;
16
+ }
17
+ };
18
+ const typeOf = x => {
19
+ const t = typeof x;
20
+ if (x === null) {
21
+ return 'null';
22
+ } else if (t === 'object' && Array.isArray(x)) {
23
+ return 'array';
24
+ } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {
25
+ return 'string';
26
+ } else {
27
+ return t;
28
+ }
29
+ };
30
+ const isType = type => value => typeOf(value) === type;
31
+ const isSimpleType = type => value => typeof value === type;
32
+ const isString = isType('string');
33
+ const isObject = isType('object');
34
+ const isArray = isType('array');
35
+ const isNullable = a => a === null || a === undefined;
36
+ const isNonNullable = a => !isNullable(a);
37
+ const isFunction = isSimpleType('function');
38
+ const isArrayOf = (value, pred) => {
39
+ if (isArray(value)) {
40
+ for (let i = 0, len = value.length; i < len; ++i) {
41
+ if (!pred(value[i])) {
42
+ return false;
43
+ }
44
+ }
45
+ return true;
46
+ }
47
+ return false;
48
+ };
49
+
50
+ const constant = value => {
51
+ return () => {
52
+ return value;
53
+ };
54
+ };
55
+ function curry(fn, ...initialArgs) {
56
+ return (...restArgs) => {
57
+ const all = initialArgs.concat(restArgs);
58
+ return fn.apply(null, all);
59
+ };
60
+ }
61
+ const never = constant(false);
62
+
63
+ const escape = text => text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
64
+
65
+ var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
66
+
67
+ const option = name => editor => editor.options.get(name);
68
+ const register$2 = editor => {
69
+ const registerOption = editor.options.register;
70
+ registerOption('template_cdate_classes', {
71
+ processor: 'string',
72
+ default: 'cdate'
73
+ });
74
+ registerOption('template_mdate_classes', {
75
+ processor: 'string',
76
+ default: 'mdate'
77
+ });
78
+ registerOption('template_selected_content_classes', {
79
+ processor: 'string',
80
+ default: 'selcontent'
81
+ });
82
+ registerOption('template_preview_replace_values', { processor: 'object' });
83
+ registerOption('template_replace_values', { processor: 'object' });
84
+ registerOption('templates', {
85
+ processor: value => isString(value) || isArrayOf(value, isObject) || isFunction(value),
86
+ default: []
87
+ });
88
+ registerOption('template_cdate_format', {
89
+ processor: 'string',
90
+ default: editor.translate('%Y-%m-%d')
91
+ });
92
+ registerOption('template_mdate_format', {
93
+ processor: 'string',
94
+ default: editor.translate('%Y-%m-%d')
95
+ });
96
+ };
97
+ const getCreationDateClasses = option('template_cdate_classes');
98
+ const getModificationDateClasses = option('template_mdate_classes');
99
+ const getSelectedContentClasses = option('template_selected_content_classes');
100
+ const getPreviewReplaceValues = option('template_preview_replace_values');
101
+ const getTemplateReplaceValues = option('template_replace_values');
102
+ const getTemplates = option('templates');
103
+ const getCdateFormat = option('template_cdate_format');
104
+ const getMdateFormat = option('template_mdate_format');
105
+ const getContentStyle = option('content_style');
106
+ const shouldUseContentCssCors = option('content_css_cors');
107
+ const getBodyClass = option('body_class');
108
+
109
+ const addZeros = (value, len) => {
110
+ value = '' + value;
111
+ if (value.length < len) {
112
+ for (let i = 0; i < len - value.length; i++) {
113
+ value = '0' + value;
114
+ }
115
+ }
116
+ return value;
117
+ };
118
+ const getDateTime = (editor, fmt, date = new Date()) => {
119
+ const daysShort = 'Sun Mon Tue Wed Thu Fri Sat Sun'.split(' ');
120
+ const daysLong = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday'.split(' ');
121
+ const monthsShort = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' ');
122
+ const monthsLong = 'January February March April May June July August September October November December'.split(' ');
123
+ fmt = fmt.replace('%D', '%m/%d/%Y');
124
+ fmt = fmt.replace('%r', '%I:%M:%S %p');
125
+ fmt = fmt.replace('%Y', '' + date.getFullYear());
126
+ fmt = fmt.replace('%y', '' + date.getYear());
127
+ fmt = fmt.replace('%m', addZeros(date.getMonth() + 1, 2));
128
+ fmt = fmt.replace('%d', addZeros(date.getDate(), 2));
129
+ fmt = fmt.replace('%H', '' + addZeros(date.getHours(), 2));
130
+ fmt = fmt.replace('%M', '' + addZeros(date.getMinutes(), 2));
131
+ fmt = fmt.replace('%S', '' + addZeros(date.getSeconds(), 2));
132
+ fmt = fmt.replace('%I', '' + ((date.getHours() + 11) % 12 + 1));
133
+ fmt = fmt.replace('%p', '' + (date.getHours() < 12 ? 'AM' : 'PM'));
134
+ fmt = fmt.replace('%B', '' + editor.translate(monthsLong[date.getMonth()]));
135
+ fmt = fmt.replace('%b', '' + editor.translate(monthsShort[date.getMonth()]));
136
+ fmt = fmt.replace('%A', '' + editor.translate(daysLong[date.getDay()]));
137
+ fmt = fmt.replace('%a', '' + editor.translate(daysShort[date.getDay()]));
138
+ fmt = fmt.replace('%%', '%');
139
+ return fmt;
140
+ };
141
+
142
+ class Optional {
143
+ constructor(tag, value) {
144
+ this.tag = tag;
145
+ this.value = value;
146
+ }
147
+ static some(value) {
148
+ return new Optional(true, value);
149
+ }
150
+ static none() {
151
+ return Optional.singletonNone;
152
+ }
153
+ fold(onNone, onSome) {
154
+ if (this.tag) {
155
+ return onSome(this.value);
156
+ } else {
157
+ return onNone();
158
+ }
159
+ }
160
+ isSome() {
161
+ return this.tag;
162
+ }
163
+ isNone() {
164
+ return !this.tag;
165
+ }
166
+ map(mapper) {
167
+ if (this.tag) {
168
+ return Optional.some(mapper(this.value));
169
+ } else {
170
+ return Optional.none();
171
+ }
172
+ }
173
+ bind(binder) {
174
+ if (this.tag) {
175
+ return binder(this.value);
176
+ } else {
177
+ return Optional.none();
178
+ }
179
+ }
180
+ exists(predicate) {
181
+ return this.tag && predicate(this.value);
182
+ }
183
+ forall(predicate) {
184
+ return !this.tag || predicate(this.value);
185
+ }
186
+ filter(predicate) {
187
+ if (!this.tag || predicate(this.value)) {
188
+ return this;
189
+ } else {
190
+ return Optional.none();
191
+ }
192
+ }
193
+ getOr(replacement) {
194
+ return this.tag ? this.value : replacement;
195
+ }
196
+ or(replacement) {
197
+ return this.tag ? this : replacement;
198
+ }
199
+ getOrThunk(thunk) {
200
+ return this.tag ? this.value : thunk();
201
+ }
202
+ orThunk(thunk) {
203
+ return this.tag ? this : thunk();
204
+ }
205
+ getOrDie(message) {
206
+ if (!this.tag) {
207
+ throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');
208
+ } else {
209
+ return this.value;
210
+ }
211
+ }
212
+ static from(value) {
213
+ return isNonNullable(value) ? Optional.some(value) : Optional.none();
214
+ }
215
+ getOrNull() {
216
+ return this.tag ? this.value : null;
217
+ }
218
+ getOrUndefined() {
219
+ return this.value;
220
+ }
221
+ each(worker) {
222
+ if (this.tag) {
223
+ worker(this.value);
224
+ }
225
+ }
226
+ toArray() {
227
+ return this.tag ? [this.value] : [];
228
+ }
229
+ toString() {
230
+ return this.tag ? `some(${ this.value })` : 'none()';
231
+ }
232
+ }
233
+ Optional.singletonNone = new Optional(false);
234
+
235
+ const exists = (xs, pred) => {
236
+ for (let i = 0, len = xs.length; i < len; i++) {
237
+ const x = xs[i];
238
+ if (pred(x, i)) {
239
+ return true;
240
+ }
241
+ }
242
+ return false;
243
+ };
244
+ const map = (xs, f) => {
245
+ const len = xs.length;
246
+ const r = new Array(len);
247
+ for (let i = 0; i < len; i++) {
248
+ const x = xs[i];
249
+ r[i] = f(x, i);
250
+ }
251
+ return r;
252
+ };
253
+ const findUntil = (xs, pred, until) => {
254
+ for (let i = 0, len = xs.length; i < len; i++) {
255
+ const x = xs[i];
256
+ if (pred(x, i)) {
257
+ return Optional.some(x);
258
+ } else if (until(x, i)) {
259
+ break;
260
+ }
261
+ }
262
+ return Optional.none();
263
+ };
264
+ const find = (xs, pred) => {
265
+ return findUntil(xs, pred, never);
266
+ };
267
+
268
+ const hasOwnProperty = Object.hasOwnProperty;
269
+ const get = (obj, key) => {
270
+ return has(obj, key) ? Optional.from(obj[key]) : Optional.none();
271
+ };
272
+ const has = (obj, key) => hasOwnProperty.call(obj, key);
273
+
274
+ var global$1 = tinymce.util.Tools.resolve('tinymce.html.Serializer');
275
+
276
+ const entitiesAttr = {
277
+ '"': '&quot;',
278
+ '<': '&lt;',
279
+ '>': '&gt;',
280
+ '&': '&amp;',
281
+ '\'': '&#039;'
282
+ };
283
+ const htmlEscape = html => html.replace(/["'<>&]/g, match => get(entitiesAttr, match).getOr(match));
284
+ const hasAnyClasses = (dom, n, classes) => exists(classes.split(/\s+/), c => dom.hasClass(n, c));
285
+ const parseAndSerialize = (editor, html) => global$1({ validate: true }, editor.schema).serialize(editor.parser.parse(html, { insert: true }));
286
+
287
+ const createTemplateList = (editor, callback) => {
288
+ return () => {
289
+ const templateList = getTemplates(editor);
290
+ if (isFunction(templateList)) {
291
+ templateList(callback);
292
+ } else if (isString(templateList)) {
293
+ fetch(templateList).then(res => {
294
+ if (res.ok) {
295
+ res.json().then(callback);
296
+ }
297
+ });
298
+ } else {
299
+ callback(templateList);
300
+ }
301
+ };
302
+ };
303
+ const replaceTemplateValues = (html, templateValues) => {
304
+ global$2.each(templateValues, (v, k) => {
305
+ if (isFunction(v)) {
306
+ v = v(k);
307
+ }
308
+ html = html.replace(new RegExp('\\{\\$' + escape(k) + '\\}', 'g'), v);
309
+ });
310
+ return html;
311
+ };
312
+ const replaceVals = (editor, scope) => {
313
+ const dom = editor.dom, vl = getTemplateReplaceValues(editor);
314
+ global$2.each(dom.select('*', scope), e => {
315
+ global$2.each(vl, (v, k) => {
316
+ if (dom.hasClass(e, k)) {
317
+ if (isFunction(v)) {
318
+ v(e);
319
+ }
320
+ }
321
+ });
322
+ });
323
+ };
324
+ const insertTemplate = (editor, _ui, html) => {
325
+ const dom = editor.dom;
326
+ const sel = editor.selection.getContent();
327
+ html = replaceTemplateValues(html, getTemplateReplaceValues(editor));
328
+ let el = dom.create('div', {}, parseAndSerialize(editor, html));
329
+ const n = dom.select('.mceTmpl', el);
330
+ if (n && n.length > 0) {
331
+ el = dom.create('div');
332
+ el.appendChild(n[0].cloneNode(true));
333
+ }
334
+ global$2.each(dom.select('*', el), n => {
335
+ if (hasAnyClasses(dom, n, getCreationDateClasses(editor))) {
336
+ n.innerHTML = getDateTime(editor, getCdateFormat(editor));
337
+ }
338
+ if (hasAnyClasses(dom, n, getModificationDateClasses(editor))) {
339
+ n.innerHTML = getDateTime(editor, getMdateFormat(editor));
340
+ }
341
+ if (hasAnyClasses(dom, n, getSelectedContentClasses(editor))) {
342
+ n.innerHTML = sel;
343
+ }
344
+ });
345
+ replaceVals(editor, el);
346
+ editor.execCommand('mceInsertContent', false, el.innerHTML);
347
+ editor.addVisual();
348
+ };
349
+
350
+ var global = tinymce.util.Tools.resolve('tinymce.Env');
351
+
352
+ const getPreviewContent = (editor, html) => {
353
+ var _a;
354
+ let previewHtml = parseAndSerialize(editor, html);
355
+ if (html.indexOf('<html>') === -1) {
356
+ let contentCssEntries = '';
357
+ const contentStyle = (_a = getContentStyle(editor)) !== null && _a !== void 0 ? _a : '';
358
+ const cors = shouldUseContentCssCors(editor) ? ' crossorigin="anonymous"' : '';
359
+ global$2.each(editor.contentCSS, url => {
360
+ contentCssEntries += '<link type="text/css" rel="stylesheet" href="' + editor.documentBaseURI.toAbsolute(url) + '"' + cors + '>';
361
+ });
362
+ if (contentStyle) {
363
+ contentCssEntries += '<style type="text/css">' + contentStyle + '</style>';
364
+ }
365
+ const bodyClass = getBodyClass(editor);
366
+ const encode = editor.dom.encode;
367
+ const isMetaKeyPressed = global.os.isMacOS() || global.os.isiOS() ? 'e.metaKey' : 'e.ctrlKey && !e.altKey';
368
+ const preventClicksOnLinksScript = '<script>' + 'document.addEventListener && document.addEventListener("click", function(e) {' + 'for (var elm = e.target; elm; elm = elm.parentNode) {' + 'if (elm.nodeName === "A" && !(' + isMetaKeyPressed + ')) {' + 'e.preventDefault();' + '}' + '}' + '}, false);' + '</script> ';
369
+ const directionality = editor.getBody().dir;
370
+ const dirAttr = directionality ? ' dir="' + encode(directionality) + '"' : '';
371
+ previewHtml = '<!DOCTYPE html>' + '<html>' + '<head>' + '<base href="' + encode(editor.documentBaseURI.getURI()) + '">' + contentCssEntries + preventClicksOnLinksScript + '</head>' + '<body class="' + encode(bodyClass) + '"' + dirAttr + '>' + previewHtml + '</body>' + '</html>';
372
+ }
373
+ return replaceTemplateValues(previewHtml, getPreviewReplaceValues(editor));
374
+ };
375
+ const open = (editor, templateList) => {
376
+ const createTemplates = () => {
377
+ if (!templateList || templateList.length === 0) {
378
+ const message = editor.translate('No templates defined.');
379
+ editor.notificationManager.open({
380
+ text: message,
381
+ type: 'info'
382
+ });
383
+ return Optional.none();
384
+ }
385
+ return Optional.from(global$2.map(templateList, (template, index) => {
386
+ const isUrlTemplate = t => t.url !== undefined;
387
+ return {
388
+ selected: index === 0,
389
+ text: template.title,
390
+ value: {
391
+ url: isUrlTemplate(template) ? Optional.from(template.url) : Optional.none(),
392
+ content: !isUrlTemplate(template) ? Optional.from(template.content) : Optional.none(),
393
+ description: template.description
394
+ }
395
+ };
396
+ }));
397
+ };
398
+ const createSelectBoxItems = templates => map(templates, t => ({
399
+ text: t.text,
400
+ value: t.text
401
+ }));
402
+ const findTemplate = (templates, templateTitle) => find(templates, t => t.text === templateTitle);
403
+ const loadFailedAlert = api => {
404
+ editor.windowManager.alert('Could not load the specified template.', () => api.focus('template'));
405
+ };
406
+ const getTemplateContent = t => t.value.url.fold(() => Promise.resolve(t.value.content.getOr('')), url => fetch(url).then(res => res.ok ? res.text() : Promise.reject()));
407
+ const onChange = (templates, updateDialog) => (api, change) => {
408
+ if (change.name === 'template') {
409
+ const newTemplateTitle = api.getData().template;
410
+ findTemplate(templates, newTemplateTitle).each(t => {
411
+ api.block('Loading...');
412
+ getTemplateContent(t).then(previewHtml => {
413
+ updateDialog(api, t, previewHtml);
414
+ }).catch(() => {
415
+ updateDialog(api, t, '');
416
+ api.setEnabled('save', false);
417
+ loadFailedAlert(api);
418
+ });
419
+ });
420
+ }
421
+ };
422
+ const onSubmit = templates => api => {
423
+ const data = api.getData();
424
+ findTemplate(templates, data.template).each(t => {
425
+ getTemplateContent(t).then(previewHtml => {
426
+ editor.execCommand('mceInsertTemplate', false, previewHtml);
427
+ api.close();
428
+ }).catch(() => {
429
+ api.setEnabled('save', false);
430
+ loadFailedAlert(api);
431
+ });
432
+ });
433
+ };
434
+ const openDialog = templates => {
435
+ const selectBoxItems = createSelectBoxItems(templates);
436
+ const buildDialogSpec = (bodyItems, initialData) => ({
437
+ title: 'Insert Template',
438
+ size: 'large',
439
+ body: {
440
+ type: 'panel',
441
+ items: bodyItems
442
+ },
443
+ initialData,
444
+ buttons: [
445
+ {
446
+ type: 'cancel',
447
+ name: 'cancel',
448
+ text: 'Cancel'
449
+ },
450
+ {
451
+ type: 'submit',
452
+ name: 'save',
453
+ text: 'Save',
454
+ primary: true
455
+ }
456
+ ],
457
+ onSubmit: onSubmit(templates),
458
+ onChange: onChange(templates, updateDialog)
459
+ });
460
+ const updateDialog = (dialogApi, template, previewHtml) => {
461
+ const content = getPreviewContent(editor, previewHtml);
462
+ const bodyItems = [
463
+ {
464
+ type: 'listbox',
465
+ name: 'template',
466
+ label: 'Templates',
467
+ items: selectBoxItems
468
+ },
469
+ {
470
+ type: 'htmlpanel',
471
+ html: `<p aria-live="polite">${ htmlEscape(template.value.description) }</p>`
472
+ },
473
+ {
474
+ label: 'Preview',
475
+ type: 'iframe',
476
+ name: 'preview',
477
+ sandboxed: false,
478
+ transparent: false
479
+ }
480
+ ];
481
+ const initialData = {
482
+ template: template.text,
483
+ preview: content
484
+ };
485
+ dialogApi.unblock();
486
+ dialogApi.redial(buildDialogSpec(bodyItems, initialData));
487
+ dialogApi.focus('template');
488
+ };
489
+ const dialogApi = editor.windowManager.open(buildDialogSpec([], {
490
+ template: '',
491
+ preview: ''
492
+ }));
493
+ dialogApi.block('Loading...');
494
+ getTemplateContent(templates[0]).then(previewHtml => {
495
+ updateDialog(dialogApi, templates[0], previewHtml);
496
+ }).catch(() => {
497
+ updateDialog(dialogApi, templates[0], '');
498
+ dialogApi.setEnabled('save', false);
499
+ loadFailedAlert(dialogApi);
500
+ });
501
+ };
502
+ const optTemplates = createTemplates();
503
+ optTemplates.each(openDialog);
504
+ };
505
+
506
+ const showDialog = editor => templates => {
507
+ open(editor, templates);
508
+ };
509
+ const register$1 = editor => {
510
+ editor.addCommand('mceInsertTemplate', curry(insertTemplate, editor));
511
+ editor.addCommand('mceTemplate', createTemplateList(editor, showDialog(editor)));
512
+ };
513
+
514
+ const setup = editor => {
515
+ editor.on('PreProcess', o => {
516
+ const dom = editor.dom, dateFormat = getMdateFormat(editor);
517
+ global$2.each(dom.select('div', o.node), e => {
518
+ if (dom.hasClass(e, 'mceTmpl')) {
519
+ global$2.each(dom.select('*', e), e => {
520
+ if (hasAnyClasses(dom, e, getModificationDateClasses(editor))) {
521
+ e.innerHTML = getDateTime(editor, dateFormat);
522
+ }
523
+ });
524
+ replaceVals(editor, e);
525
+ }
526
+ });
527
+ });
528
+ };
529
+
530
+ const onSetupEditable = editor => api => {
531
+ const nodeChanged = () => {
532
+ api.setEnabled(editor.selection.isEditable());
533
+ };
534
+ editor.on('NodeChange', nodeChanged);
535
+ nodeChanged();
536
+ return () => {
537
+ editor.off('NodeChange', nodeChanged);
538
+ };
539
+ };
540
+ const register = editor => {
541
+ const onAction = () => editor.execCommand('mceTemplate');
542
+ editor.ui.registry.addButton('template', {
543
+ icon: 'template',
544
+ tooltip: 'Insert template',
545
+ onSetup: onSetupEditable(editor),
546
+ onAction
547
+ });
548
+ editor.ui.registry.addMenuItem('template', {
549
+ icon: 'template',
550
+ text: 'Insert template...',
551
+ onSetup: onSetupEditable(editor),
552
+ onAction
553
+ });
554
+ };
555
+
556
+ var Plugin = () => {
557
+ global$3.add('template', editor => {
558
+ register$2(editor);
559
+ register(editor);
560
+ register$1(editor);
561
+ setup(editor);
562
+ });
563
+ };
564
+
565
+ Plugin();
566
+
567
+ })();
@@ -0,0 +1,5 @@
1
+ /**
2
+ * TinyMCE version 6.8.6 (TBD)
3
+ */
4
+
5
+ !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(a=n=e,(r=String).prototype.isPrototypeOf(a)||(null===(s=n.constructor)||void 0===s?void 0:s.name)===r.name)?"string":t;var a,n,r,s})(t)===e,a=t("string"),n=t("object"),r=t("array"),s=("function",e=>"function"==typeof e);const l=(!1,()=>false);var o=tinymce.util.Tools.resolve("tinymce.util.Tools");const c=e=>t=>t.options.get(e),i=c("template_cdate_classes"),u=c("template_mdate_classes"),m=c("template_selected_content_classes"),p=c("template_preview_replace_values"),d=c("template_replace_values"),h=c("templates"),g=c("template_cdate_format"),v=c("template_mdate_format"),f=c("content_style"),y=c("content_css_cors"),b=c("body_class"),_=(e,t)=>{if((e=""+e).length<t)for(let a=0;a<t-e.length;a++)e="0"+e;return e},M=(e,t,a=new Date)=>{const n="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),r="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),s="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),l="January February March April May June July August September October November December".split(" ");return(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+a.getFullYear())).replace("%y",""+a.getYear())).replace("%m",_(a.getMonth()+1,2))).replace("%d",_(a.getDate(),2))).replace("%H",""+_(a.getHours(),2))).replace("%M",""+_(a.getMinutes(),2))).replace("%S",""+_(a.getSeconds(),2))).replace("%I",""+((a.getHours()+11)%12+1))).replace("%p",a.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(l[a.getMonth()]))).replace("%b",""+e.translate(s[a.getMonth()]))).replace("%A",""+e.translate(r[a.getDay()]))).replace("%a",""+e.translate(n[a.getDay()]))).replace("%%","%")};class T{constructor(e,t){this.tag=e,this.value=t}static some(e){return new T(!0,e)}static none(){return T.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?T.some(e(this.value)):T.none()}bind(e){return this.tag?e(this.value):T.none()}exists(e){return this.tag&&e(this.value)}forall(e){return!this.tag||e(this.value)}filter(e){return!this.tag||e(this.value)?this:T.none()}getOr(e){return this.tag?this.value:e}or(e){return this.tag?this:e}getOrThunk(e){return this.tag?this.value:e()}orThunk(e){return this.tag?this:e()}getOrDie(e){if(this.tag)return this.value;throw new Error(null!=e?e:"Called getOrDie on None")}static from(e){return null==e?T.none():T.some(e)}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(e){this.tag&&e(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}T.singletonNone=new T(!1);const S=Object.hasOwnProperty;var x=tinymce.util.Tools.resolve("tinymce.html.Serializer");const C={'"':"&quot;","<":"&lt;",">":"&gt;","&":"&amp;","'":"&#039;"},w=e=>e.replace(/["'<>&]/g,(e=>{return(t=C,a=e,((e,t)=>S.call(e,t))(t,a)?T.from(t[a]):T.none()).getOr(e);var t,a})),O=(e,t,a)=>((a,n)=>{for(let n=0,s=a.length;n<s;n++)if(r=a[n],e.hasClass(t,r))return!0;var r;return!1})(a.split(/\s+/)),A=(e,t)=>x({validate:!0},e.schema).serialize(e.parser.parse(t,{insert:!0})),D=(e,t)=>(o.each(t,((t,a)=>{s(t)&&(t=t(a)),e=e.replace(new RegExp("\\{\\$"+a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"\\}","g"),t)})),e),N=(e,t)=>{const a=e.dom,n=d(e);o.each(a.select("*",t),(e=>{o.each(n,((t,n)=>{a.hasClass(e,n)&&s(t)&&t(e)}))}))},I=(e,t,a)=>{const n=e.dom,r=e.selection.getContent();a=D(a,d(e));let s=n.create("div",{},A(e,a));const l=n.select(".mceTmpl",s);l&&l.length>0&&(s=n.create("div"),s.appendChild(l[0].cloneNode(!0))),o.each(n.select("*",s),(t=>{O(n,t,i(e))&&(t.innerHTML=M(e,g(e))),O(n,t,u(e))&&(t.innerHTML=M(e,v(e))),O(n,t,m(e))&&(t.innerHTML=r)})),N(e,s),e.execCommand("mceInsertContent",!1,s.innerHTML),e.addVisual()};var E=tinymce.util.Tools.resolve("tinymce.Env");const k=(e,t)=>{const a=(e,t)=>((e,t,a)=>{for(let n=0,r=e.length;n<r;n++){const r=e[n];if(t(r,n))return T.some(r);if(a(r,n))break}return T.none()})(e,(e=>e.text===t),l),n=t=>{e.windowManager.alert("Could not load the specified template.",(()=>t.focus("template")))},r=e=>e.value.url.fold((()=>Promise.resolve(e.value.content.getOr(""))),(e=>fetch(e).then((e=>e.ok?e.text():Promise.reject())))),s=(e,t)=>(s,l)=>{if("template"===l.name){const l=s.getData().template;a(e,l).each((e=>{s.block("Loading..."),r(e).then((a=>{t(s,e,a)})).catch((()=>{t(s,e,""),s.setEnabled("save",!1),n(s)}))}))}},c=t=>s=>{const l=s.getData();a(t,l.template).each((t=>{r(t).then((t=>{e.execCommand("mceInsertTemplate",!1,t),s.close()})).catch((()=>{s.setEnabled("save",!1),n(s)}))}))};(()=>{if(!t||0===t.length){const t=e.translate("No templates defined.");return e.notificationManager.open({text:t,type:"info"}),T.none()}return T.from(o.map(t,((e,t)=>{const a=e=>void 0!==e.url;return{selected:0===t,text:e.title,value:{url:a(e)?T.from(e.url):T.none(),content:a(e)?T.none():T.from(e.content),description:e.description}}})))})().each((t=>{const a=(e=>((e,t)=>{const a=e.length,n=new Array(a);for(let t=0;t<a;t++){const a=e[t];n[t]={text:(r=a).text,value:r.text}}var r;return n})(e))(t),l=(e,a)=>({title:"Insert Template",size:"large",body:{type:"panel",items:e},initialData:a,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:c(t),onChange:s(t,i)}),i=(t,n,r)=>{const s=((e,t)=>{var a;let n=A(e,t);if(-1===t.indexOf("<html>")){let t="";const r=null!==(a=f(e))&&void 0!==a?a:"",s=y(e)?' crossorigin="anonymous"':"";o.each(e.contentCSS,(a=>{t+='<link type="text/css" rel="stylesheet" href="'+e.documentBaseURI.toAbsolute(a)+'"'+s+">"})),r&&(t+='<style type="text/css">'+r+"</style>");const l=b(e),c=e.dom.encode,i='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A" && !('+(E.os.isMacOS()||E.os.isiOS()?"e.metaKey":"e.ctrlKey && !e.altKey")+")) {e.preventDefault();}}}, false);<\/script> ",u=e.getBody().dir,m=u?' dir="'+c(u)+'"':"";n='<!DOCTYPE html><html><head><base href="'+c(e.documentBaseURI.getURI())+'">'+t+i+'</head><body class="'+c(l)+'"'+m+">"+n+"</body></html>"}return D(n,p(e))})(e,r),c=[{type:"listbox",name:"template",label:"Templates",items:a},{type:"htmlpanel",html:`<p aria-live="polite">${w(n.value.description)}</p>`},{label:"Preview",type:"iframe",name:"preview",sandboxed:!1,transparent:!1}],i={template:n.text,preview:s};t.unblock(),t.redial(l(c,i)),t.focus("template")},u=e.windowManager.open(l([],{template:"",preview:""}));u.block("Loading..."),r(t[0]).then((e=>{i(u,t[0],e)})).catch((()=>{i(u,t[0],""),u.setEnabled("save",!1),n(u)}))}))},P=e=>t=>{const a=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",a),a(),()=>{e.off("NodeChange",a)}};e.add("template",(e=>{(e=>{const t=e.options.register;t("template_cdate_classes",{processor:"string",default:"cdate"}),t("template_mdate_classes",{processor:"string",default:"mdate"}),t("template_selected_content_classes",{processor:"string",default:"selcontent"}),t("template_preview_replace_values",{processor:"object"}),t("template_replace_values",{processor:"object"}),t("templates",{processor:e=>a(e)||((e,t)=>{if(r(e)){for(let a=0,n=e.length;a<n;++a)if(!t(e[a]))return!1;return!0}return!1})(e,n)||s(e),default:[]}),t("template_cdate_format",{processor:"string",default:e.translate("%Y-%m-%d")}),t("template_mdate_format",{processor:"string",default:e.translate("%Y-%m-%d")})})(e),(e=>{const t=()=>e.execCommand("mceTemplate");e.ui.registry.addButton("template",{icon:"template",tooltip:"Insert template",onSetup:P(e),onAction:t}),e.ui.registry.addMenuItem("template",{icon:"template",text:"Insert template...",onSetup:P(e),onAction:t})})(e),(e=>{e.addCommand("mceInsertTemplate",function(e,...t){return(...a)=>{const n=t.concat(a);return e.apply(null,n)}}(I,e)),e.addCommand("mceTemplate",((e,t)=>()=>{const n=h(e);s(n)?n(t):a(n)?fetch(n).then((e=>{e.ok&&e.json().then(t)})):t(n)})(e,(e=>t=>{k(e,t)})(e)))})(e),(e=>{e.on("PreProcess",(t=>{const a=e.dom,n=v(e);o.each(a.select("div",t.node),(t=>{a.hasClass(t,"mceTmpl")&&(o.each(a.select("*",t),(t=>{O(a,t,u(e))&&(t.innerHTML=M(e,n))})),N(e,t))}))}))})(e)}))}();