@dangl/angular-material-shared 2.1.1-beta0024 → 2.2.1-beta0031

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 (179) hide show
  1. package/dangl-angular-material-shared.d.ts +1 -0
  2. package/{esm2015/dangl-angular-material-shared.js → esm2020/dangl-angular-material-shared.mjs} +0 -0
  3. package/esm2020/lib/angular-material-shared.module.mjs +40 -0
  4. package/esm2020/lib/components/footer/footer.component.mjs +33 -0
  5. package/esm2020/lib/components/header/header.component.mjs +80 -0
  6. package/esm2020/lib/components/tiny-mce/tiny-mce.component.mjs +104 -0
  7. package/{esm2015/lib/models/footer-options.js → esm2020/lib/models/footer-options.mjs} +0 -0
  8. package/{esm2015/lib/utils/guid-generator.js → esm2020/lib/utils/guid-generator.mjs} +0 -0
  9. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  10. package/fesm2015/dangl-angular-material-shared.mjs +294 -0
  11. package/fesm2015/dangl-angular-material-shared.mjs.map +1 -0
  12. package/fesm2020/dangl-angular-material-shared.mjs +292 -0
  13. package/fesm2020/dangl-angular-material-shared.mjs.map +1 -0
  14. package/lib/angular-material-shared.module.d.ts +12 -0
  15. package/lib/components/footer/footer.component.d.ts +3 -0
  16. package/lib/components/header/header.component.d.ts +3 -0
  17. package/lib/components/tiny-mce/tiny-mce.component.d.ts +3 -0
  18. package/package.json +28 -16
  19. package/styles/material-style.scss +1 -1
  20. package/styles/material-theme.scss +4 -3
  21. package/styles/material-variables.scss +9 -8
  22. package/tinymce-assets/icons/default/icons.js +11 -1
  23. package/tinymce-assets/icons/default/icons.min.js +1 -1
  24. package/tinymce-assets/langs/bn_BD.js +419 -0
  25. package/tinymce-assets/langs/cs.js +118 -75
  26. package/tinymce-assets/langs/cy.js +61 -18
  27. package/tinymce-assets/langs/da.js +60 -17
  28. package/tinymce-assets/langs/de.js +60 -17
  29. package/tinymce-assets/langs/eo.js +334 -138
  30. package/tinymce-assets/langs/es_ES.js +32 -2
  31. package/tinymce-assets/langs/et.js +419 -0
  32. package/tinymce-assets/langs/fa.js +60 -17
  33. package/tinymce-assets/langs/fa_IR.js +31 -1
  34. package/tinymce-assets/langs/fr_FR.js +60 -17
  35. package/tinymce-assets/langs/hu_HU.js +60 -17
  36. package/tinymce-assets/langs/hy.js +419 -0
  37. package/tinymce-assets/langs/ja.js +60 -17
  38. package/tinymce-assets/langs/kab.js +419 -0
  39. package/tinymce-assets/langs/ko_KR.js +3 -3
  40. package/tinymce-assets/langs/ku.js +415 -0
  41. package/tinymce-assets/langs/nb_NO.js +61 -18
  42. package/tinymce-assets/langs/nl.js +60 -17
  43. package/tinymce-assets/langs/pl.js +60 -17
  44. package/tinymce-assets/langs/pt_BR.js +60 -17
  45. package/tinymce-assets/langs/pt_PT.js +60 -17
  46. package/tinymce-assets/langs/ro.js +60 -17
  47. package/tinymce-assets/langs/ro_RO.js +32 -2
  48. package/tinymce-assets/langs/ru.js +60 -17
  49. package/tinymce-assets/langs/ru_RU.js +445 -0
  50. package/tinymce-assets/langs/sl.js +59 -14
  51. package/tinymce-assets/langs/ta.js +60 -17
  52. package/tinymce-assets/langs/ta_IN.js +60 -17
  53. package/tinymce-assets/langs/th_TH.js +60 -17
  54. package/tinymce-assets/langs/tr_TR.js +81 -8
  55. package/tinymce-assets/langs/vi.js +179 -21
  56. package/tinymce-assets/langs/zh_CN.js +60 -17
  57. package/tinymce-assets/plugins/advlist/plugin.js +29 -48
  58. package/tinymce-assets/plugins/advlist/plugin.min.js +2 -2
  59. package/tinymce-assets/plugins/anchor/plugin.js +8 -8
  60. package/tinymce-assets/plugins/anchor/plugin.min.js +2 -2
  61. package/tinymce-assets/plugins/autolink/plugin.js +58 -30
  62. package/tinymce-assets/plugins/autolink/plugin.min.js +2 -2
  63. package/tinymce-assets/plugins/autoresize/plugin.js +25 -12
  64. package/tinymce-assets/plugins/autoresize/plugin.min.js +2 -2
  65. package/tinymce-assets/plugins/autosave/plugin.js +9 -9
  66. package/tinymce-assets/plugins/autosave/plugin.min.js +2 -2
  67. package/tinymce-assets/plugins/bbcode/plugin.js +6 -6
  68. package/tinymce-assets/plugins/bbcode/plugin.min.js +2 -2
  69. package/tinymce-assets/plugins/charmap/plugin.js +57 -67
  70. package/tinymce-assets/plugins/charmap/plugin.min.js +2 -2
  71. package/tinymce-assets/plugins/code/plugin.js +9 -10
  72. package/tinymce-assets/plugins/code/plugin.min.js +2 -2
  73. package/tinymce-assets/plugins/codesample/plugin.js +1921 -1914
  74. package/tinymce-assets/plugins/codesample/plugin.min.js +2 -2
  75. package/tinymce-assets/plugins/colorpicker/plugin.js +1 -2
  76. package/tinymce-assets/plugins/colorpicker/plugin.min.js +2 -2
  77. package/tinymce-assets/plugins/contextmenu/plugin.js +1 -2
  78. package/tinymce-assets/plugins/contextmenu/plugin.min.js +2 -2
  79. package/tinymce-assets/plugins/directionality/plugin.js +195 -62
  80. package/tinymce-assets/plugins/directionality/plugin.min.js +2 -2
  81. package/tinymce-assets/plugins/emoticons/js/emojiimages.js +1572 -1572
  82. package/tinymce-assets/plugins/emoticons/js/emojiimages.min.js +1 -1
  83. package/tinymce-assets/plugins/emoticons/js/emojis.js +1572 -1572
  84. package/tinymce-assets/plugins/emoticons/js/emojis.min.js +1 -1
  85. package/tinymce-assets/plugins/emoticons/plugin.js +231 -200
  86. package/tinymce-assets/plugins/emoticons/plugin.min.js +2 -2
  87. package/tinymce-assets/plugins/fullpage/plugin.js +42 -42
  88. package/tinymce-assets/plugins/fullpage/plugin.min.js +2 -2
  89. package/tinymce-assets/plugins/fullscreen/plugin.js +527 -160
  90. package/tinymce-assets/plugins/fullscreen/plugin.min.js +2 -2
  91. package/tinymce-assets/plugins/help/plugin.js +102 -123
  92. package/tinymce-assets/plugins/help/plugin.min.js +2 -2
  93. package/tinymce-assets/plugins/hr/plugin.js +9 -10
  94. package/tinymce-assets/plugins/hr/plugin.min.js +2 -2
  95. package/tinymce-assets/plugins/image/plugin.js +126 -117
  96. package/tinymce-assets/plugins/image/plugin.min.js +2 -2
  97. package/tinymce-assets/plugins/imagetools/plugin.js +515 -334
  98. package/tinymce-assets/plugins/imagetools/plugin.min.js +2 -2
  99. package/tinymce-assets/plugins/importcss/plugin.js +50 -51
  100. package/tinymce-assets/plugins/importcss/plugin.min.js +2 -2
  101. package/tinymce-assets/plugins/insertdatetime/plugin.js +22 -17
  102. package/tinymce-assets/plugins/insertdatetime/plugin.min.js +2 -2
  103. package/tinymce-assets/plugins/legacyoutput/plugin.js +8 -8
  104. package/tinymce-assets/plugins/legacyoutput/plugin.min.js +2 -2
  105. package/tinymce-assets/plugins/link/plugin.js +131 -125
  106. package/tinymce-assets/plugins/link/plugin.min.js +2 -2
  107. package/tinymce-assets/plugins/lists/plugin.js +401 -252
  108. package/tinymce-assets/plugins/lists/plugin.min.js +2 -2
  109. package/tinymce-assets/plugins/media/plugin.js +151 -174
  110. package/tinymce-assets/plugins/media/plugin.min.js +2 -2
  111. package/tinymce-assets/plugins/nonbreaking/plugin.js +13 -14
  112. package/tinymce-assets/plugins/nonbreaking/plugin.min.js +2 -2
  113. package/tinymce-assets/plugins/noneditable/plugin.js +6 -6
  114. package/tinymce-assets/plugins/noneditable/plugin.min.js +2 -2
  115. package/tinymce-assets/plugins/pagebreak/plugin.js +27 -30
  116. package/tinymce-assets/plugins/pagebreak/plugin.min.js +2 -2
  117. package/tinymce-assets/plugins/paste/plugin.js +213 -174
  118. package/tinymce-assets/plugins/paste/plugin.min.js +2 -2
  119. package/tinymce-assets/plugins/preview/plugin.js +13 -14
  120. package/tinymce-assets/plugins/preview/plugin.min.js +2 -2
  121. package/tinymce-assets/plugins/print/plugin.js +13 -14
  122. package/tinymce-assets/plugins/print/plugin.min.js +2 -2
  123. package/tinymce-assets/plugins/quickbars/plugin.js +67 -82
  124. package/tinymce-assets/plugins/quickbars/plugin.min.js +2 -2
  125. package/tinymce-assets/plugins/save/plugin.js +9 -8
  126. package/tinymce-assets/plugins/save/plugin.min.js +2 -2
  127. package/tinymce-assets/plugins/searchreplace/plugin.js +98 -95
  128. package/tinymce-assets/plugins/searchreplace/plugin.min.js +2 -2
  129. package/tinymce-assets/plugins/spellchecker/plugin.js +22 -23
  130. package/tinymce-assets/plugins/spellchecker/plugin.min.js +2 -2
  131. package/tinymce-assets/plugins/tabfocus/plugin.js +21 -20
  132. package/tinymce-assets/plugins/tabfocus/plugin.min.js +2 -2
  133. package/tinymce-assets/plugins/table/plugin.js +2889 -2320
  134. package/tinymce-assets/plugins/table/plugin.min.js +2 -2
  135. package/tinymce-assets/plugins/template/plugin.js +84 -70
  136. package/tinymce-assets/plugins/template/plugin.min.js +2 -2
  137. package/tinymce-assets/plugins/textcolor/plugin.js +1 -2
  138. package/tinymce-assets/plugins/textcolor/plugin.min.js +2 -2
  139. package/tinymce-assets/plugins/textpattern/plugin.js +97 -117
  140. package/tinymce-assets/plugins/textpattern/plugin.min.js +2 -2
  141. package/tinymce-assets/plugins/toc/plugin.js +31 -29
  142. package/tinymce-assets/plugins/toc/plugin.min.js +2 -2
  143. package/tinymce-assets/plugins/visualblocks/plugin.js +10 -11
  144. package/tinymce-assets/plugins/visualblocks/plugin.min.js +2 -2
  145. package/tinymce-assets/plugins/visualchars/plugin.js +76 -91
  146. package/tinymce-assets/plugins/visualchars/plugin.min.js +2 -2
  147. package/tinymce-assets/plugins/wordcount/plugin.js +67 -58
  148. package/tinymce-assets/plugins/wordcount/plugin.min.js +2 -2
  149. package/tinymce-assets/skins/ui/oxide/content.css +1 -1
  150. package/tinymce-assets/skins/ui/oxide/content.inline.css +1 -1
  151. package/tinymce-assets/skins/ui/oxide/content.inline.min.css +1 -1
  152. package/tinymce-assets/skins/ui/oxide/content.min.css +1 -1
  153. package/tinymce-assets/skins/ui/oxide/skin.css +42 -24
  154. package/tinymce-assets/skins/ui/oxide/skin.min.css +1 -1
  155. package/tinymce-assets/skins/ui/oxide/skin.shadowdom.css +7 -7
  156. package/tinymce-assets/skins/ui/oxide/skin.shadowdom.min.css +1 -1
  157. package/tinymce-assets/skins/ui/oxide-dark/content.css +1 -1
  158. package/tinymce-assets/skins/ui/oxide-dark/content.inline.css +1 -1
  159. package/tinymce-assets/skins/ui/oxide-dark/content.inline.min.css +1 -1
  160. package/tinymce-assets/skins/ui/oxide-dark/content.min.css +1 -1
  161. package/tinymce-assets/skins/ui/oxide-dark/skin.css +42 -24
  162. package/tinymce-assets/skins/ui/oxide-dark/skin.min.css +1 -1
  163. package/tinymce-assets/skins/ui/oxide-dark/skin.shadowdom.css +7 -7
  164. package/tinymce-assets/skins/ui/oxide-dark/skin.shadowdom.min.css +1 -1
  165. package/tinymce-assets/themes/mobile/theme.js +2836 -3286
  166. package/tinymce-assets/themes/mobile/theme.min.js +2 -2
  167. package/tinymce-assets/themes/silver/theme.js +25505 -25418
  168. package/tinymce-assets/themes/silver/theme.min.js +2 -2
  169. package/bundles/dangl-angular-material-shared.umd.js +0 -285
  170. package/bundles/dangl-angular-material-shared.umd.js.map +0 -1
  171. package/bundles/dangl-angular-material-shared.umd.min.js +0 -2
  172. package/bundles/dangl-angular-material-shared.umd.min.js.map +0 -1
  173. package/dangl-angular-material-shared.metadata.json +0 -1
  174. package/esm2015/lib/angular-material-shared.module.js +0 -25
  175. package/esm2015/lib/components/footer/footer.component.js +0 -27
  176. package/esm2015/lib/components/header/header.component.js +0 -67
  177. package/esm2015/lib/components/tiny-mce/tiny-mce.component.js +0 -100
  178. package/fesm2015/dangl-angular-material-shared.js +0 -259
  179. package/fesm2015/dangl-angular-material-shared.js.map +0 -1
@@ -4,7 +4,7 @@
4
4
  * For LGPL see License.txt in the project root for license information.
5
5
  * For commercial licenses see https://www.tiny.cloud/
6
6
  *
7
- * Version: 5.7.1 (2021-03-17)
7
+ * Version: 5.10.3 (2022-02-09)
8
8
  */
9
9
  (function () {
10
10
  'use strict';
@@ -23,9 +23,40 @@
23
23
  };
24
24
  };
25
25
 
26
- var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
26
+ var global$5 = tinymce.util.Tools.resolve('tinymce.PluginManager');
27
27
 
28
- var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
28
+ var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');
29
+
30
+ var typeOf = function (x) {
31
+ var t = typeof x;
32
+ if (x === null) {
33
+ return 'null';
34
+ } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) {
35
+ return 'array';
36
+ } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) {
37
+ return 'string';
38
+ } else {
39
+ return t;
40
+ }
41
+ };
42
+ var isType = function (type) {
43
+ return function (value) {
44
+ return typeOf(value) === type;
45
+ };
46
+ };
47
+ var isSimpleType = function (type) {
48
+ return function (value) {
49
+ return typeof value === type;
50
+ };
51
+ };
52
+ var isArray = isType('array');
53
+ var isNullable = function (a) {
54
+ return a === null || a === undefined;
55
+ };
56
+ var isNonNullable = function (a) {
57
+ return !isNullable(a);
58
+ };
59
+ var isFunction = isSimpleType('function');
29
60
 
30
61
  var noop = function () {
31
62
  };
@@ -34,6 +65,9 @@
34
65
  return value;
35
66
  };
36
67
  };
68
+ var identity = function (x) {
69
+ return x;
70
+ };
37
71
  var never = constant(false);
38
72
  var always = constant(true);
39
73
 
@@ -41,20 +75,14 @@
41
75
  return NONE;
42
76
  };
43
77
  var NONE = function () {
44
- var eq = function (o) {
45
- return o.isNone();
46
- };
47
78
  var call = function (thunk) {
48
79
  return thunk();
49
80
  };
50
- var id = function (n) {
51
- return n;
52
- };
81
+ var id = identity;
53
82
  var me = {
54
83
  fold: function (n, _s) {
55
84
  return n();
56
85
  },
57
- is: never,
58
86
  isSome: never,
59
87
  isNone: always,
60
88
  getOr: id,
@@ -71,9 +99,9 @@
71
99
  bind: none,
72
100
  exists: never,
73
101
  forall: always,
74
- filter: none,
75
- equals: eq,
76
- equals_: eq,
102
+ filter: function () {
103
+ return none();
104
+ },
77
105
  toArray: function () {
78
106
  return [];
79
107
  },
@@ -93,9 +121,6 @@
93
121
  fold: function (n, s) {
94
122
  return s(a);
95
123
  },
96
- is: function (v) {
97
- return a === v;
98
- },
99
124
  isSome: always,
100
125
  isNone: never,
101
126
  getOr: constant_a,
@@ -122,14 +147,6 @@
122
147
  },
123
148
  toString: function () {
124
149
  return 'some(' + a + ')';
125
- },
126
- equals: function (o) {
127
- return o.is(a);
128
- },
129
- equals_: function (o, elementEq) {
130
- return o.fold(never, function (b) {
131
- return elementEq(a, b);
132
- });
133
150
  }
134
151
  };
135
152
  return me;
@@ -143,24 +160,226 @@
143
160
  from: from
144
161
  };
145
162
 
146
- var isSimpleType = function (type) {
147
- return function (value) {
148
- return typeof value === type;
149
- };
150
- };
151
- var isNullable = function (a) {
152
- return a === null || a === undefined;
153
- };
154
- var isNonNullable = function (a) {
155
- return !isNullable(a);
156
- };
157
- var isFunction = isSimpleType('function');
163
+ var exports$1 = {}, module = { exports: exports$1 };
164
+ (function (define, exports, module, require) {
165
+ (function (global, factory) {
166
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EphoxContactWrapper = factory());
167
+ }(this, function () {
168
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
169
+ var promise = { exports: {} };
170
+ (function (module) {
171
+ (function (root) {
172
+ var setTimeoutFunc = setTimeout;
173
+ function noop() {
174
+ }
175
+ function bind(fn, thisArg) {
176
+ return function () {
177
+ fn.apply(thisArg, arguments);
178
+ };
179
+ }
180
+ function Promise(fn) {
181
+ if (typeof this !== 'object')
182
+ throw new TypeError('Promises must be constructed via new');
183
+ if (typeof fn !== 'function')
184
+ throw new TypeError('not a function');
185
+ this._state = 0;
186
+ this._handled = false;
187
+ this._value = undefined;
188
+ this._deferreds = [];
189
+ doResolve(fn, this);
190
+ }
191
+ function handle(self, deferred) {
192
+ while (self._state === 3) {
193
+ self = self._value;
194
+ }
195
+ if (self._state === 0) {
196
+ self._deferreds.push(deferred);
197
+ return;
198
+ }
199
+ self._handled = true;
200
+ Promise._immediateFn(function () {
201
+ var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
202
+ if (cb === null) {
203
+ (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
204
+ return;
205
+ }
206
+ var ret;
207
+ try {
208
+ ret = cb(self._value);
209
+ } catch (e) {
210
+ reject(deferred.promise, e);
211
+ return;
212
+ }
213
+ resolve(deferred.promise, ret);
214
+ });
215
+ }
216
+ function resolve(self, newValue) {
217
+ try {
218
+ if (newValue === self)
219
+ throw new TypeError('A promise cannot be resolved with itself.');
220
+ if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
221
+ var then = newValue.then;
222
+ if (newValue instanceof Promise) {
223
+ self._state = 3;
224
+ self._value = newValue;
225
+ finale(self);
226
+ return;
227
+ } else if (typeof then === 'function') {
228
+ doResolve(bind(then, newValue), self);
229
+ return;
230
+ }
231
+ }
232
+ self._state = 1;
233
+ self._value = newValue;
234
+ finale(self);
235
+ } catch (e) {
236
+ reject(self, e);
237
+ }
238
+ }
239
+ function reject(self, newValue) {
240
+ self._state = 2;
241
+ self._value = newValue;
242
+ finale(self);
243
+ }
244
+ function finale(self) {
245
+ if (self._state === 2 && self._deferreds.length === 0) {
246
+ Promise._immediateFn(function () {
247
+ if (!self._handled) {
248
+ Promise._unhandledRejectionFn(self._value);
249
+ }
250
+ });
251
+ }
252
+ for (var i = 0, len = self._deferreds.length; i < len; i++) {
253
+ handle(self, self._deferreds[i]);
254
+ }
255
+ self._deferreds = null;
256
+ }
257
+ function Handler(onFulfilled, onRejected, promise) {
258
+ this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
259
+ this.onRejected = typeof onRejected === 'function' ? onRejected : null;
260
+ this.promise = promise;
261
+ }
262
+ function doResolve(fn, self) {
263
+ var done = false;
264
+ try {
265
+ fn(function (value) {
266
+ if (done)
267
+ return;
268
+ done = true;
269
+ resolve(self, value);
270
+ }, function (reason) {
271
+ if (done)
272
+ return;
273
+ done = true;
274
+ reject(self, reason);
275
+ });
276
+ } catch (ex) {
277
+ if (done)
278
+ return;
279
+ done = true;
280
+ reject(self, ex);
281
+ }
282
+ }
283
+ Promise.prototype['catch'] = function (onRejected) {
284
+ return this.then(null, onRejected);
285
+ };
286
+ Promise.prototype.then = function (onFulfilled, onRejected) {
287
+ var prom = new this.constructor(noop);
288
+ handle(this, new Handler(onFulfilled, onRejected, prom));
289
+ return prom;
290
+ };
291
+ Promise.all = function (arr) {
292
+ var args = Array.prototype.slice.call(arr);
293
+ return new Promise(function (resolve, reject) {
294
+ if (args.length === 0)
295
+ return resolve([]);
296
+ var remaining = args.length;
297
+ function res(i, val) {
298
+ try {
299
+ if (val && (typeof val === 'object' || typeof val === 'function')) {
300
+ var then = val.then;
301
+ if (typeof then === 'function') {
302
+ then.call(val, function (val) {
303
+ res(i, val);
304
+ }, reject);
305
+ return;
306
+ }
307
+ }
308
+ args[i] = val;
309
+ if (--remaining === 0) {
310
+ resolve(args);
311
+ }
312
+ } catch (ex) {
313
+ reject(ex);
314
+ }
315
+ }
316
+ for (var i = 0; i < args.length; i++) {
317
+ res(i, args[i]);
318
+ }
319
+ });
320
+ };
321
+ Promise.resolve = function (value) {
322
+ if (value && typeof value === 'object' && value.constructor === Promise) {
323
+ return value;
324
+ }
325
+ return new Promise(function (resolve) {
326
+ resolve(value);
327
+ });
328
+ };
329
+ Promise.reject = function (value) {
330
+ return new Promise(function (resolve, reject) {
331
+ reject(value);
332
+ });
333
+ };
334
+ Promise.race = function (values) {
335
+ return new Promise(function (resolve, reject) {
336
+ for (var i = 0, len = values.length; i < len; i++) {
337
+ values[i].then(resolve, reject);
338
+ }
339
+ });
340
+ };
341
+ Promise._immediateFn = typeof setImmediate === 'function' ? function (fn) {
342
+ setImmediate(fn);
343
+ } : function (fn) {
344
+ setTimeoutFunc(fn, 0);
345
+ };
346
+ Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {
347
+ if (typeof console !== 'undefined' && console) {
348
+ console.warn('Possible Unhandled Promise Rejection:', err);
349
+ }
350
+ };
351
+ Promise._setImmediateFn = function _setImmediateFn(fn) {
352
+ Promise._immediateFn = fn;
353
+ };
354
+ Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {
355
+ Promise._unhandledRejectionFn = fn;
356
+ };
357
+ if (module.exports) {
358
+ module.exports = Promise;
359
+ } else if (!root.Promise) {
360
+ root.Promise = Promise;
361
+ }
362
+ }(commonjsGlobal));
363
+ }(promise));
364
+ var promisePolyfill = promise.exports;
365
+ var Global = function () {
366
+ if (typeof window !== 'undefined') {
367
+ return window;
368
+ } else {
369
+ return Function('return this;')();
370
+ }
371
+ }();
372
+ var promisePolyfill_1 = { boltExport: Global.Promise || promisePolyfill };
373
+ return promisePolyfill_1;
374
+ }));
375
+ }(undefined, exports$1, module));
376
+ var Promise$1 = module.exports.boltExport;
158
377
 
159
- var create = function (width, height) {
378
+ var create$1 = function (width, height) {
160
379
  return resize(document.createElement('canvas'), width, height);
161
380
  };
162
381
  var clone = function (canvas) {
163
- var tCanvas = create(canvas.width, canvas.height);
382
+ var tCanvas = create$1(canvas.width, canvas.height);
164
383
  var ctx = get2dContext(tCanvas);
165
384
  ctx.drawImage(canvas, 0, 0);
166
385
  return tCanvas;
@@ -181,196 +400,15 @@
181
400
  return image.naturalHeight || image.height;
182
401
  };
183
402
 
184
- var promise = function () {
185
- var Promise = function (fn) {
186
- if (typeof this !== 'object') {
187
- throw new TypeError('Promises must be constructed via new');
188
- }
189
- if (typeof fn !== 'function') {
190
- throw new TypeError('not a function');
191
- }
192
- this._state = null;
193
- this._value = null;
194
- this._deferreds = [];
195
- doResolve(fn, bind(resolve, this), bind(reject, this));
196
- };
197
- var anyWindow = window;
198
- var asap = Promise.immediateFn || typeof anyWindow.setImmediate === 'function' && anyWindow.setImmediate || function (fn) {
199
- return setTimeout(fn, 1);
200
- };
201
- var bind = function (fn, thisArg) {
202
- return function () {
203
- var args = [];
204
- for (var _i = 0; _i < arguments.length; _i++) {
205
- args[_i] = arguments[_i];
206
- }
207
- return fn.apply(thisArg, args);
208
- };
209
- };
210
- var isArray = Array.isArray || function (value) {
211
- return Object.prototype.toString.call(value) === '[object Array]';
212
- };
213
- function handle(deferred) {
214
- var me = this;
215
- if (this._state === null) {
216
- this._deferreds.push(deferred);
217
- return;
218
- }
219
- asap(function () {
220
- var cb = me._state ? deferred.onFulfilled : deferred.onRejected;
221
- if (cb === null) {
222
- (me._state ? deferred.resolve : deferred.reject)(me._value);
223
- return;
224
- }
225
- var ret;
226
- try {
227
- ret = cb(me._value);
228
- } catch (e) {
229
- deferred.reject(e);
230
- return;
231
- }
232
- deferred.resolve(ret);
233
- });
234
- }
235
- function resolve(newValue) {
236
- try {
237
- if (newValue === this) {
238
- throw new TypeError('A promise cannot be resolved with itself.');
239
- }
240
- if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
241
- var then = newValue.then;
242
- if (typeof then === 'function') {
243
- doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));
244
- return;
245
- }
246
- }
247
- this._state = true;
248
- this._value = newValue;
249
- finale.call(this);
250
- } catch (e) {
251
- reject.call(this, e);
252
- }
253
- }
254
- function reject(newValue) {
255
- this._state = false;
256
- this._value = newValue;
257
- finale.call(this);
258
- }
259
- function finale() {
260
- for (var _i = 0, _a = this._deferreds; _i < _a.length; _i++) {
261
- var deferred = _a[_i];
262
- handle.call(this, deferred);
263
- }
264
- this._deferreds = [];
265
- }
266
- function Handler(onFulfilled, onRejected, resolve, reject) {
267
- this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
268
- this.onRejected = typeof onRejected === 'function' ? onRejected : null;
269
- this.resolve = resolve;
270
- this.reject = reject;
271
- }
272
- var doResolve = function (fn, onFulfilled, onRejected) {
273
- var done = false;
274
- try {
275
- fn(function (value) {
276
- if (done) {
277
- return;
278
- }
279
- done = true;
280
- onFulfilled(value);
281
- }, function (reason) {
282
- if (done) {
283
- return;
284
- }
285
- done = true;
286
- onRejected(reason);
287
- });
288
- } catch (ex) {
289
- if (done) {
290
- return;
291
- }
292
- done = true;
293
- onRejected(ex);
294
- }
295
- };
296
- Promise.prototype.catch = function (onRejected) {
297
- return this.then(null, onRejected);
298
- };
299
- Promise.prototype.then = function (onFulfilled, onRejected) {
300
- var me = this;
301
- return new Promise(function (resolve, reject) {
302
- handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));
303
- });
304
- };
305
- Promise.all = function () {
306
- var values = [];
307
- for (var _i = 0; _i < arguments.length; _i++) {
308
- values[_i] = arguments[_i];
309
- }
310
- var args = Array.prototype.slice.call(values.length === 1 && isArray(values[0]) ? values[0] : values);
311
- return new Promise(function (resolve, reject) {
312
- if (args.length === 0) {
313
- return resolve([]);
314
- }
315
- var remaining = args.length;
316
- var res = function (i, val) {
317
- try {
318
- if (val && (typeof val === 'object' || typeof val === 'function')) {
319
- var then = val.then;
320
- if (typeof then === 'function') {
321
- then.call(val, function (val) {
322
- res(i, val);
323
- }, reject);
324
- return;
325
- }
326
- }
327
- args[i] = val;
328
- if (--remaining === 0) {
329
- resolve(args);
330
- }
331
- } catch (ex) {
332
- reject(ex);
333
- }
334
- };
335
- for (var i = 0; i < args.length; i++) {
336
- res(i, args[i]);
337
- }
338
- });
339
- };
340
- Promise.resolve = function (value) {
341
- if (value && typeof value === 'object' && value.constructor === Promise) {
342
- return value;
343
- }
344
- return new Promise(function (resolve) {
345
- resolve(value);
346
- });
347
- };
348
- Promise.reject = function (reason) {
349
- return new Promise(function (resolve, reject) {
350
- reject(reason);
351
- });
352
- };
353
- Promise.race = function (values) {
354
- return new Promise(function (resolve, reject) {
355
- for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {
356
- var value = values_1[_i];
357
- value.then(resolve, reject);
358
- }
359
- });
360
- };
361
- return Promise;
362
- };
363
- var Promise = window.Promise ? window.Promise : promise();
364
-
365
- var imageToBlob = function (image) {
403
+ var imageToBlob$2 = function (image) {
366
404
  var src = image.src;
367
405
  if (src.indexOf('data:') === 0) {
368
406
  return dataUriToBlob(src);
369
407
  }
370
408
  return anyUriToBlob(src);
371
409
  };
372
- var blobToImage = function (blob) {
373
- return new Promise(function (resolve, reject) {
410
+ var blobToImage$1 = function (blob) {
411
+ return new Promise$1(function (resolve, reject) {
374
412
  var blobUrl = URL.createObjectURL(blob);
375
413
  var image = new Image();
376
414
  var removeListeners = function () {
@@ -394,7 +432,7 @@
394
432
  });
395
433
  };
396
434
  var anyUriToBlob = function (url) {
397
- return new Promise(function (resolve, reject) {
435
+ return new Promise$1(function (resolve, reject) {
398
436
  var xhr = new XMLHttpRequest();
399
437
  xhr.open('GET', url, true);
400
438
  xhr.responseType = 'blob';
@@ -444,7 +482,7 @@
444
482
  return Optional.some(new Blob(byteArrays, { type: mimetype }));
445
483
  };
446
484
  var dataUriToBlob = function (uri) {
447
- return new Promise(function (resolve, reject) {
485
+ return new Promise$1(function (resolve, reject) {
448
486
  dataUriToBlobSync(uri).fold(function () {
449
487
  reject('uri is not base64: ' + uri);
450
488
  }, resolve);
@@ -453,7 +491,7 @@
453
491
  var canvasToBlob = function (canvas, type, quality) {
454
492
  type = type || 'image/png';
455
493
  if (isFunction(HTMLCanvasElement.prototype.toBlob)) {
456
- return new Promise(function (resolve, reject) {
494
+ return new Promise$1(function (resolve, reject) {
457
495
  canvas.toBlob(function (blob) {
458
496
  if (blob) {
459
497
  resolve(blob);
@@ -471,16 +509,16 @@
471
509
  return canvas.toDataURL(type, quality);
472
510
  };
473
511
  var blobToCanvas = function (blob) {
474
- return blobToImage(blob).then(function (image) {
512
+ return blobToImage$1(blob).then(function (image) {
475
513
  revokeImageUrl(image);
476
- var canvas = create(getWidth(image), getHeight(image));
514
+ var canvas = create$1(getWidth(image), getHeight(image));
477
515
  var context = get2dContext(canvas);
478
516
  context.drawImage(image, 0, 0);
479
517
  return canvas;
480
518
  });
481
519
  };
482
520
  var blobToDataUri = function (blob) {
483
- return new Promise(function (resolve) {
521
+ return new Promise$1(function (resolve) {
484
522
  var reader = new FileReader();
485
523
  reader.onloadend = function () {
486
524
  resolve(reader.result);
@@ -492,22 +530,39 @@
492
530
  URL.revokeObjectURL(image.src);
493
531
  };
494
532
 
495
- var blobToImage$1 = function (blob) {
496
- return blobToImage(blob);
533
+ var blobToImage = function (blob) {
534
+ return blobToImage$1(blob);
497
535
  };
498
536
  var imageToBlob$1 = function (image) {
499
- return imageToBlob(image);
537
+ return imageToBlob$2(image);
500
538
  };
501
539
 
502
- var each = function (xs, f) {
540
+ var nativeIndexOf = Array.prototype.indexOf;
541
+ var rawIndexOf = function (ts, t) {
542
+ return nativeIndexOf.call(ts, t);
543
+ };
544
+ var contains = function (xs, x) {
545
+ return rawIndexOf(xs, x) > -1;
546
+ };
547
+ var each$1 = function (xs, f) {
503
548
  for (var i = 0, len = xs.length; i < len; i++) {
504
549
  var x = xs[i];
505
550
  f(x, i);
506
551
  }
507
552
  };
553
+ var filter = function (xs, pred) {
554
+ var r = [];
555
+ for (var i = 0, len = xs.length; i < len; i++) {
556
+ var x = xs[i];
557
+ if (pred(x, i)) {
558
+ r.push(x);
559
+ }
560
+ }
561
+ return r;
562
+ };
508
563
  var foldl = function (xs, f, acc) {
509
- each(xs, function (x) {
510
- acc = f(acc, x);
564
+ each$1(xs, function (x, i) {
565
+ acc = f(acc, x, i);
511
566
  });
512
567
  return acc;
513
568
  };
@@ -525,12 +580,131 @@
525
580
  var find = function (xs, pred) {
526
581
  return findUntil(xs, pred, never);
527
582
  };
583
+ var forall = function (xs, pred) {
584
+ for (var i = 0, len = xs.length; i < len; ++i) {
585
+ var x = xs[i];
586
+ if (pred(x, i) !== true) {
587
+ return false;
588
+ }
589
+ }
590
+ return true;
591
+ };
528
592
 
529
- var create$1 = function (getCanvas, blob, uri) {
593
+ var keys = Object.keys;
594
+ var each = function (obj, f) {
595
+ var props = keys(obj);
596
+ for (var k = 0, len = props.length; k < len; k++) {
597
+ var i = props[k];
598
+ var x = obj[i];
599
+ f(x, i);
600
+ }
601
+ };
602
+
603
+ var generate = function (cases) {
604
+ if (!isArray(cases)) {
605
+ throw new Error('cases must be an array');
606
+ }
607
+ if (cases.length === 0) {
608
+ throw new Error('there must be at least one case');
609
+ }
610
+ var constructors = [];
611
+ var adt = {};
612
+ each$1(cases, function (acase, count) {
613
+ var keys$1 = keys(acase);
614
+ if (keys$1.length !== 1) {
615
+ throw new Error('one and only one name per case');
616
+ }
617
+ var key = keys$1[0];
618
+ var value = acase[key];
619
+ if (adt[key] !== undefined) {
620
+ throw new Error('duplicate key detected:' + key);
621
+ } else if (key === 'cata') {
622
+ throw new Error('cannot have a case named cata (sorry)');
623
+ } else if (!isArray(value)) {
624
+ throw new Error('case arguments must be an array');
625
+ }
626
+ constructors.push(key);
627
+ adt[key] = function () {
628
+ var args = [];
629
+ for (var _i = 0; _i < arguments.length; _i++) {
630
+ args[_i] = arguments[_i];
631
+ }
632
+ var argLength = args.length;
633
+ if (argLength !== value.length) {
634
+ throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);
635
+ }
636
+ var match = function (branches) {
637
+ var branchKeys = keys(branches);
638
+ if (constructors.length !== branchKeys.length) {
639
+ throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\nActual: ' + branchKeys.join(','));
640
+ }
641
+ var allReqd = forall(constructors, function (reqKey) {
642
+ return contains(branchKeys, reqKey);
643
+ });
644
+ if (!allReqd) {
645
+ throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\nRequired: ' + constructors.join(', '));
646
+ }
647
+ return branches[key].apply(null, args);
648
+ };
649
+ return {
650
+ fold: function () {
651
+ var foldArgs = [];
652
+ for (var _i = 0; _i < arguments.length; _i++) {
653
+ foldArgs[_i] = arguments[_i];
654
+ }
655
+ if (foldArgs.length !== cases.length) {
656
+ throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + foldArgs.length);
657
+ }
658
+ var target = foldArgs[count];
659
+ return target.apply(null, args);
660
+ },
661
+ match: match,
662
+ log: function (label) {
663
+ console.log(label, {
664
+ constructors: constructors,
665
+ constructor: key,
666
+ params: args
667
+ });
668
+ }
669
+ };
670
+ };
671
+ });
672
+ return adt;
673
+ };
674
+ var Adt = { generate: generate };
675
+
676
+ Adt.generate([
677
+ {
678
+ bothErrors: [
679
+ 'error1',
680
+ 'error2'
681
+ ]
682
+ },
683
+ {
684
+ firstError: [
685
+ 'error1',
686
+ 'value2'
687
+ ]
688
+ },
689
+ {
690
+ secondError: [
691
+ 'value1',
692
+ 'error2'
693
+ ]
694
+ },
695
+ {
696
+ bothValues: [
697
+ 'value1',
698
+ 'value2'
699
+ ]
700
+ }
701
+ ]);
702
+
703
+ var create = function (getCanvas, blob, uri) {
530
704
  var initialType = blob.type;
531
705
  var getType = constant(initialType);
532
706
  var toBlob = function () {
533
- return Promise.resolve(blob);
707
+ return Promise$1.resolve(blob);
534
708
  };
535
709
  var toDataURL = constant(uri);
536
710
  var toBase64 = function () {
@@ -567,47 +741,51 @@
567
741
  };
568
742
  var fromBlob = function (blob) {
569
743
  return blobToDataUri(blob).then(function (uri) {
570
- return create$1(blobToCanvas(blob), blob, uri);
744
+ return create(blobToCanvas(blob), blob, uri);
571
745
  });
572
746
  };
573
747
  var fromCanvas = function (canvas, type) {
574
748
  return canvasToBlob(canvas, type).then(function (blob) {
575
- return create$1(Promise.resolve(canvas), blob, canvas.toDataURL());
749
+ return create(Promise$1.resolve(canvas), blob, canvas.toDataURL());
576
750
  });
577
751
  };
578
752
 
579
- var rotate = function (ir, angle) {
753
+ var ceilWithPrecision = function (num, precision) {
754
+ if (precision === void 0) {
755
+ precision = 2;
756
+ }
757
+ var mul = Math.pow(10, precision);
758
+ var upper = Math.round(num * mul);
759
+ return Math.ceil(upper / mul);
760
+ };
761
+ var rotate$2 = function (ir, angle) {
580
762
  return ir.toCanvas().then(function (canvas) {
581
763
  return applyRotate(canvas, ir.getType(), angle);
582
764
  });
583
765
  };
584
766
  var applyRotate = function (image, type, angle) {
585
- var canvas = create(image.width, image.height);
767
+ var degrees = angle < 0 ? 360 + angle : angle;
768
+ var rad = degrees * Math.PI / 180;
769
+ var width = image.width;
770
+ var height = image.height;
771
+ var sin = Math.sin(rad);
772
+ var cos = Math.cos(rad);
773
+ var newWidth = ceilWithPrecision(Math.abs(width * cos) + Math.abs(height * sin));
774
+ var newHeight = ceilWithPrecision(Math.abs(width * sin) + Math.abs(height * cos));
775
+ var canvas = create$1(newWidth, newHeight);
586
776
  var context = get2dContext(canvas);
587
- var translateX = 0;
588
- var translateY = 0;
589
- angle = angle < 0 ? 360 + angle : angle;
590
- if (angle === 90 || angle === 270) {
591
- resize(canvas, canvas.height, canvas.width);
592
- }
593
- if (angle === 90 || angle === 180) {
594
- translateX = canvas.width;
595
- }
596
- if (angle === 270 || angle === 180) {
597
- translateY = canvas.height;
598
- }
599
- context.translate(translateX, translateY);
600
- context.rotate(angle * Math.PI / 180);
601
- context.drawImage(image, 0, 0);
777
+ context.translate(newWidth / 2, newHeight / 2);
778
+ context.rotate(rad);
779
+ context.drawImage(image, -width / 2, -height / 2);
602
780
  return fromCanvas(canvas, type);
603
781
  };
604
- var flip = function (ir, axis) {
782
+ var flip$2 = function (ir, axis) {
605
783
  return ir.toCanvas().then(function (canvas) {
606
784
  return applyFlip(canvas, ir.getType(), axis);
607
785
  });
608
786
  };
609
787
  var applyFlip = function (image, type, axis) {
610
- var canvas = create(image.width, image.height);
788
+ var canvas = create$1(image.width, image.height);
611
789
  var context = get2dContext(canvas);
612
790
  if (axis === 'v') {
613
791
  context.scale(1, -1);
@@ -620,27 +798,17 @@
620
798
  };
621
799
 
622
800
  var flip$1 = function (ir, axis) {
623
- return flip(ir, axis);
801
+ return flip$2(ir, axis);
624
802
  };
625
803
  var rotate$1 = function (ir, angle) {
626
- return rotate(ir, angle);
627
- };
628
-
629
- var keys = Object.keys;
630
- var each$1 = function (obj, f) {
631
- var props = keys(obj);
632
- for (var k = 0, len = props.length; k < len; k++) {
633
- var i = props[k];
634
- var x = obj[i];
635
- f(x, i);
636
- }
804
+ return rotate$2(ir, angle);
637
805
  };
638
806
 
639
807
  var sendRequest = function (url, headers, withCredentials) {
640
808
  if (withCredentials === void 0) {
641
809
  withCredentials = false;
642
810
  }
643
- return new Promise(function (resolve) {
811
+ return new Promise$1(function (resolve) {
644
812
  var xhr = new XMLHttpRequest();
645
813
  xhr.onreadystatechange = function () {
646
814
  if (xhr.readyState === 4) {
@@ -652,7 +820,7 @@
652
820
  };
653
821
  xhr.open('GET', url, true);
654
822
  xhr.withCredentials = withCredentials;
655
- each$1(headers, function (value, key) {
823
+ each(headers, function (value, key) {
656
824
  xhr.setRequestHeader(key, value);
657
825
  });
658
826
  xhr.responseType = 'blob';
@@ -660,7 +828,7 @@
660
828
  });
661
829
  };
662
830
  var readBlobText = function (blob) {
663
- return new Promise(function (resolve, reject) {
831
+ return new Promise$1(function (resolve, reject) {
664
832
  var reader = new FileReader();
665
833
  reader.onload = function () {
666
834
  resolve(reader.result);
@@ -730,7 +898,7 @@
730
898
  };
731
899
  var handleHttpError = function (status) {
732
900
  var message = getHttpErrorMsg(status);
733
- return Promise.reject(message);
901
+ return Promise$1.reject(message);
734
902
  };
735
903
  var getServiceErrorMsg = function (type) {
736
904
  return find(friendlyServiceErrors, function (error) {
@@ -752,7 +920,7 @@
752
920
  var handleServiceError = function (blob) {
753
921
  return readBlobText(blob).then(function (text) {
754
922
  var serviceError = getServiceError(text);
755
- return Promise.reject(serviceError);
923
+ return Promise$1.reject(serviceError);
756
924
  });
757
925
  };
758
926
  var handleServiceErrorResponse = function (status, blob) {
@@ -776,12 +944,12 @@
776
944
  'tiny-api-key': apiKey
777
945
  };
778
946
  return sendRequest(appendApiKey(url, apiKey), headers).then(function (result) {
779
- return isError(result.status) ? handleServiceErrorResponse(result.status, result.blob) : Promise.resolve(result.blob);
947
+ return isError(result.status) ? handleServiceErrorResponse(result.status, result.blob) : Promise$1.resolve(result.blob);
780
948
  });
781
949
  };
782
950
  var requestBlob = function (url, withCredentials) {
783
951
  return sendRequest(url, {}, withCredentials).then(function (result) {
784
- return isError(result.status) ? handleHttpError(result.status) : Promise.resolve(result.blob);
952
+ return isError(result.status) ? handleHttpError(result.status) : Promise$1.resolve(result.blob);
785
953
  });
786
954
  };
787
955
  var getUrl = function (url, apiKey, withCredentials) {
@@ -854,9 +1022,9 @@
854
1022
  }
855
1023
  };
856
1024
 
857
- var Global = typeof window !== 'undefined' ? window : Function('return this;')();
1025
+ typeof window !== 'undefined' ? window : Function('return this;')();
858
1026
 
859
- var child = function (scope, predicate) {
1027
+ var child$1 = function (scope, predicate) {
860
1028
  var pred = function (node) {
861
1029
  return predicate(SugarElement.fromDom(node));
862
1030
  };
@@ -864,17 +1032,17 @@
864
1032
  return result.map(SugarElement.fromDom);
865
1033
  };
866
1034
 
867
- var child$1 = function (scope, selector) {
868
- return child(scope, function (e) {
1035
+ var child = function (scope, selector) {
1036
+ return child$1(scope, function (e) {
869
1037
  return is(e, selector);
870
1038
  });
871
1039
  };
872
1040
 
873
- var global$2 = tinymce.util.Tools.resolve('tinymce.util.Delay');
1041
+ var global$3 = tinymce.util.Tools.resolve('tinymce.util.Delay');
874
1042
 
875
- var global$3 = tinymce.util.Tools.resolve('tinymce.util.Promise');
1043
+ var global$2 = tinymce.util.Tools.resolve('tinymce.util.Promise');
876
1044
 
877
- var global$4 = tinymce.util.Tools.resolve('tinymce.util.URI');
1045
+ var global$1 = tinymce.util.Tools.resolve('tinymce.util.URI');
878
1046
 
879
1047
  var getToolbarItems = function (editor) {
880
1048
  return editor.getParam('imagetools_toolbar', 'rotateleft rotateright flipv fliph editimage imageoptions');
@@ -954,7 +1122,7 @@
954
1122
 
955
1123
  var count = 0;
956
1124
  var getFigureImg = function (elem) {
957
- return child$1(SugarElement.fromDom(elem), 'img');
1125
+ return child(SugarElement.fromDom(elem), 'img');
958
1126
  };
959
1127
  var isFigure = function (editor, elem) {
960
1128
  return editor.dom.is(elem, 'figure');
@@ -1000,13 +1168,13 @@
1000
1168
  };
1001
1169
  var isLocalImage = function (editor, img) {
1002
1170
  var url = img.src;
1003
- return url.indexOf('data:') === 0 || url.indexOf('blob:') === 0 || new global$4(url).host === editor.documentBaseURI.host;
1171
+ return url.indexOf('data:') === 0 || url.indexOf('blob:') === 0 || new global$1(url).host === editor.documentBaseURI.host;
1004
1172
  };
1005
1173
  var isCorsImage = function (editor, img) {
1006
- return global$1.inArray(getCorsHosts(editor), new global$4(img.src).host) !== -1;
1174
+ return global$4.inArray(getCorsHosts(editor), new global$1(img.src).host) !== -1;
1007
1175
  };
1008
1176
  var isCorsWithCredentialsImage = function (editor, img) {
1009
- return global$1.inArray(getCredentialsHosts(editor), new global$4(img.src).host) !== -1;
1177
+ return global$4.inArray(getCredentialsHosts(editor), new global$1(img.src).host) !== -1;
1010
1178
  };
1011
1179
  var defaultFetchImage = function (editor, img) {
1012
1180
  if (isCorsImage(editor, img)) {
@@ -1020,7 +1188,7 @@
1020
1188
  }
1021
1189
  return imageToBlob$1(img);
1022
1190
  };
1023
- var imageToBlob$2 = function (editor, img) {
1191
+ var imageToBlob = function (editor, img) {
1024
1192
  return getFetchImage(editor).fold(function () {
1025
1193
  return defaultFetchImage(editor, img);
1026
1194
  }, function (customFetchImage) {
@@ -1030,18 +1198,18 @@
1030
1198
  var findBlob = function (editor, img) {
1031
1199
  var blobInfo = editor.editorUpload.blobCache.getByUri(img.src);
1032
1200
  if (blobInfo) {
1033
- return global$3.resolve(blobInfo.blob());
1201
+ return global$2.resolve(blobInfo.blob());
1034
1202
  }
1035
- return imageToBlob$2(editor, img);
1203
+ return imageToBlob(editor, img);
1036
1204
  };
1037
1205
  var startTimedUpload = function (editor, imageUploadTimerState) {
1038
- var imageUploadTimer = global$2.setEditorTimeout(editor, function () {
1206
+ var imageUploadTimer = global$3.setEditorTimeout(editor, function () {
1039
1207
  editor.editorUpload.uploadImagesAuto();
1040
1208
  }, getUploadTimeout(editor));
1041
1209
  imageUploadTimerState.set(imageUploadTimer);
1042
1210
  };
1043
1211
  var cancelTimedUpload = function (imageUploadTimerState) {
1044
- global$2.clearTimeout(imageUploadTimerState.get());
1212
+ global$3.clearTimeout(imageUploadTimerState.get());
1045
1213
  };
1046
1214
  var updateSelectedImage = function (editor, origBlob, ir, uploadImmediately, imageUploadTimerState, selectedImage, size) {
1047
1215
  return ir.toBlob().then(function (blob) {
@@ -1110,24 +1278,22 @@
1110
1278
  });
1111
1279
  };
1112
1280
  };
1113
- var rotate$2 = function (editor, imageUploadTimerState, angle) {
1281
+ var rotate = function (editor, imageUploadTimerState, angle) {
1114
1282
  return function () {
1115
1283
  var imgOpt = getSelectedImage(editor);
1116
- var flippedSize = imgOpt.fold(function () {
1117
- return null;
1118
- }, function (img) {
1284
+ var flippedSize = imgOpt.map(function (img) {
1119
1285
  var size = getImageSize(img.dom);
1120
1286
  return size ? {
1121
1287
  w: size.h,
1122
1288
  h: size.w
1123
1289
  } : null;
1124
- });
1290
+ }).getOrNull();
1125
1291
  return selectedImageOperation(editor, imageUploadTimerState, function (imageResult) {
1126
1292
  return rotate$1(imageResult, angle);
1127
1293
  }, flippedSize)();
1128
1294
  };
1129
1295
  };
1130
- var flip$2 = function (editor, imageUploadTimerState, axis) {
1296
+ var flip = function (editor, imageUploadTimerState, axis) {
1131
1297
  return function () {
1132
1298
  return selectedImageOperation(editor, imageUploadTimerState, function (imageResult) {
1133
1299
  return flip$1(imageResult, axis);
@@ -1135,7 +1301,7 @@
1135
1301
  };
1136
1302
  };
1137
1303
  var handleDialogBlob = function (editor, imageUploadTimerState, img, originalSize, blob) {
1138
- return blobToImage$1(blob).then(function (newImage) {
1304
+ return blobToImage(blob).then(function (newImage) {
1139
1305
  var newSize = getNaturalImageSize(newImage);
1140
1306
  if (originalSize.w !== newSize.w || originalSize.h !== newSize.h) {
1141
1307
  if (getImageSize(img)) {
@@ -1233,12 +1399,12 @@
1233
1399
  };
1234
1400
  };
1235
1401
 
1236
- var register = function (editor, imageUploadTimerState) {
1237
- global$1.each({
1238
- mceImageRotateLeft: rotate$2(editor, imageUploadTimerState, -90),
1239
- mceImageRotateRight: rotate$2(editor, imageUploadTimerState, 90),
1240
- mceImageFlipVertical: flip$2(editor, imageUploadTimerState, 'v'),
1241
- mceImageFlipHorizontal: flip$2(editor, imageUploadTimerState, 'h'),
1402
+ var register$2 = function (editor, imageUploadTimerState) {
1403
+ global$4.each({
1404
+ mceImageRotateLeft: rotate(editor, imageUploadTimerState, -90),
1405
+ mceImageRotateRight: rotate(editor, imageUploadTimerState, 90),
1406
+ mceImageFlipVertical: flip(editor, imageUploadTimerState, 'v'),
1407
+ mceImageFlipHorizontal: flip(editor, imageUploadTimerState, 'h'),
1242
1408
  mceEditImage: makeOpen(editor, imageUploadTimerState)
1243
1409
  }, function (fn, cmd) {
1244
1410
  editor.addCommand(cmd, fn);
@@ -1261,47 +1427,64 @@
1261
1427
  };
1262
1428
 
1263
1429
  var register$1 = function (editor) {
1430
+ var changeHandlers = [];
1264
1431
  var cmd = function (command) {
1265
1432
  return function () {
1266
1433
  return editor.execCommand(command);
1267
1434
  };
1268
1435
  };
1436
+ var isEditableImage = function () {
1437
+ return getSelectedImage(editor).exists(function (element) {
1438
+ return getEditableImage(editor, element.dom).isSome();
1439
+ });
1440
+ };
1441
+ var onSetup = function (api) {
1442
+ var handler = function (isEditableImage) {
1443
+ return api.setDisabled(!isEditableImage);
1444
+ };
1445
+ handler(isEditableImage());
1446
+ changeHandlers = changeHandlers.concat([handler]);
1447
+ return function () {
1448
+ changeHandlers = filter(changeHandlers, function (h) {
1449
+ return h !== handler;
1450
+ });
1451
+ };
1452
+ };
1453
+ editor.on('NodeChange', function () {
1454
+ var isEditable = isEditableImage();
1455
+ each$1(changeHandlers, function (handler) {
1456
+ return handler(isEditable);
1457
+ });
1458
+ });
1269
1459
  editor.ui.registry.addButton('rotateleft', {
1270
1460
  tooltip: 'Rotate counterclockwise',
1271
1461
  icon: 'rotate-left',
1272
- onAction: cmd('mceImageRotateLeft')
1462
+ onAction: cmd('mceImageRotateLeft'),
1463
+ onSetup: onSetup
1273
1464
  });
1274
1465
  editor.ui.registry.addButton('rotateright', {
1275
1466
  tooltip: 'Rotate clockwise',
1276
1467
  icon: 'rotate-right',
1277
- onAction: cmd('mceImageRotateRight')
1468
+ onAction: cmd('mceImageRotateRight'),
1469
+ onSetup: onSetup
1278
1470
  });
1279
1471
  editor.ui.registry.addButton('flipv', {
1280
1472
  tooltip: 'Flip vertically',
1281
1473
  icon: 'flip-vertically',
1282
- onAction: cmd('mceImageFlipVertical')
1474
+ onAction: cmd('mceImageFlipVertical'),
1475
+ onSetup: onSetup
1283
1476
  });
1284
1477
  editor.ui.registry.addButton('fliph', {
1285
1478
  tooltip: 'Flip horizontally',
1286
1479
  icon: 'flip-horizontally',
1287
- onAction: cmd('mceImageFlipHorizontal')
1480
+ onAction: cmd('mceImageFlipHorizontal'),
1481
+ onSetup: onSetup
1288
1482
  });
1289
1483
  editor.ui.registry.addButton('editimage', {
1290
1484
  tooltip: 'Edit image',
1291
1485
  icon: 'edit-image',
1292
1486
  onAction: cmd('mceEditImage'),
1293
- onSetup: function (buttonApi) {
1294
- var setDisabled = function () {
1295
- var disabled = getSelectedImage(editor).forall(function (element) {
1296
- return getEditableImage(editor, element.dom).isNone();
1297
- });
1298
- buttonApi.setDisabled(disabled);
1299
- };
1300
- editor.on('NodeChange', setDisabled);
1301
- return function () {
1302
- editor.off('NodeChange', setDisabled);
1303
- };
1304
- }
1487
+ onSetup: onSetup
1305
1488
  });
1306
1489
  editor.ui.registry.addButton('imageoptions', {
1307
1490
  tooltip: 'Image options',
@@ -1310,20 +1493,18 @@
1310
1493
  });
1311
1494
  editor.ui.registry.addContextMenu('imagetools', {
1312
1495
  update: function (element) {
1313
- return getEditableImage(editor, element).fold(function () {
1314
- return [];
1315
- }, function (_) {
1316
- return [{
1317
- text: 'Edit image',
1318
- icon: 'edit-image',
1319
- onAction: cmd('mceEditImage')
1320
- }];
1321
- });
1496
+ return getEditableImage(editor, element).map(function (_) {
1497
+ return {
1498
+ text: 'Edit image',
1499
+ icon: 'edit-image',
1500
+ onAction: cmd('mceEditImage')
1501
+ };
1502
+ }).toArray();
1322
1503
  }
1323
1504
  });
1324
1505
  };
1325
1506
 
1326
- var register$2 = function (editor) {
1507
+ var register = function (editor) {
1327
1508
  editor.ui.registry.addContextToolbar('imagetools', {
1328
1509
  items: getToolbarItems(editor),
1329
1510
  predicate: function (elem) {
@@ -1335,12 +1516,12 @@
1335
1516
  };
1336
1517
 
1337
1518
  function Plugin () {
1338
- global.add('imagetools', function (editor) {
1519
+ global$5.add('imagetools', function (editor) {
1339
1520
  var imageUploadTimerState = Cell(0);
1340
1521
  var lastSelectedImageState = Cell(null);
1341
- register(editor, imageUploadTimerState);
1522
+ register$2(editor, imageUploadTimerState);
1342
1523
  register$1(editor);
1343
- register$2(editor);
1524
+ register(editor);
1344
1525
  setup(editor, imageUploadTimerState, lastSelectedImageState);
1345
1526
  });
1346
1527
  }