@dangl/angular-material-shared 2.5.1-beta0012 → 2.6.0-beta0019
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.
- package/README.md +1 -7
- package/esm2022/lib/angular-material-shared.module.mjs +2 -2
- package/esm2022/lib/components/tiny-mce/tiny-mce.component.mjs +16 -19
- package/fesm2022/dangl-angular-material-shared.mjs +16 -19
- package/fesm2022/dangl-angular-material-shared.mjs.map +1 -1
- package/lib/components/tiny-mce/tiny-mce.component.d.ts +7 -8
- package/package.json +1 -1
- package/tinymce-assets/icons/default/icons.js +187 -171
- package/tinymce-assets/icons/default/icons.min.js +1 -1
- package/tinymce-assets/langs/it.js +1 -1
- package/tinymce-assets/plugins/accordion/index.js +7 -0
- package/tinymce-assets/plugins/accordion/plugin.js +1054 -0
- package/tinymce-assets/plugins/accordion/plugin.min.js +4 -0
- package/tinymce-assets/plugins/advlist/plugin.js +185 -187
- package/tinymce-assets/plugins/advlist/plugin.min.js +2 -7
- package/tinymce-assets/plugins/anchor/plugin.js +79 -81
- package/tinymce-assets/plugins/anchor/plugin.min.js +2 -7
- package/tinymce-assets/plugins/autolink/plugin.js +209 -194
- package/tinymce-assets/plugins/autolink/plugin.min.js +2 -7
- package/tinymce-assets/plugins/autoresize/plugin.js +110 -102
- package/tinymce-assets/plugins/autoresize/plugin.min.js +2 -7
- package/tinymce-assets/plugins/autosave/plugin.js +125 -104
- package/tinymce-assets/plugins/autosave/plugin.min.js +2 -7
- package/tinymce-assets/plugins/charmap/plugin.js +275 -313
- package/tinymce-assets/plugins/charmap/plugin.min.js +2 -7
- package/tinymce-assets/plugins/code/plugin.js +18 -24
- package/tinymce-assets/plugins/code/plugin.min.js +2 -7
- package/tinymce-assets/plugins/codesample/plugin.js +2075 -2074
- package/tinymce-assets/plugins/codesample/plugin.min.js +2 -7
- package/tinymce-assets/plugins/directionality/plugin.js +247 -305
- package/tinymce-assets/plugins/directionality/plugin.min.js +2 -7
- package/tinymce-assets/plugins/emoticons/js/emojiimages.js +1 -9424
- package/tinymce-assets/plugins/emoticons/js/emojiimages.min.js +1 -1
- package/tinymce-assets/plugins/emoticons/js/emojis.js +1 -9423
- package/tinymce-assets/plugins/emoticons/js/emojis.min.js +1 -1
- package/tinymce-assets/plugins/emoticons/plugin.js +334 -374
- package/tinymce-assets/plugins/emoticons/plugin.min.js +2 -7
- package/tinymce-assets/plugins/fullscreen/plugin.js +740 -837
- package/tinymce-assets/plugins/fullscreen/plugin.min.js +2 -7
- package/tinymce-assets/plugins/help/js/i18n/keynav/ar.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/bg_BG.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/ca.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/cs.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/da.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/de.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/el.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/en.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/es.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/eu.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/fa.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/fi.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/fr_FR.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/he_IL.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/hi.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/hr.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/hu_HU.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/id.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/it.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/ja.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/kk.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/ko_KR.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/ms.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/nb_NO.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/nl.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/pl.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/pt_BR.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/pt_PT.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/ro.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/ru.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/sk.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/sl_SI.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/sv_SE.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/th_TH.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/tr.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/uk.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/vi.js +90 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/zh_CN.js +84 -0
- package/tinymce-assets/plugins/help/js/i18n/keynav/zh_TW.js +90 -0
- package/tinymce-assets/plugins/help/plugin.js +411 -355
- package/tinymce-assets/plugins/help/plugin.min.js +2 -7
- package/tinymce-assets/plugins/image/plugin.js +876 -1037
- package/tinymce-assets/plugins/image/plugin.min.js +2 -7
- package/tinymce-assets/plugins/importcss/plugin.js +146 -144
- package/tinymce-assets/plugins/importcss/plugin.min.js +2 -7
- package/tinymce-assets/plugins/insertdatetime/plugin.js +93 -88
- package/tinymce-assets/plugins/insertdatetime/plugin.min.js +2 -7
- package/tinymce-assets/plugins/link/plugin.js +718 -768
- package/tinymce-assets/plugins/link/plugin.min.js +2 -7
- package/tinymce-assets/plugins/lists/plugin.js +1235 -1375
- package/tinymce-assets/plugins/lists/plugin.min.js +2 -7
- package/tinymce-assets/plugins/media/plugin.js +614 -756
- package/tinymce-assets/plugins/media/plugin.min.js +2 -7
- package/tinymce-assets/plugins/nonbreaking/plugin.js +71 -48
- package/tinymce-assets/plugins/nonbreaking/plugin.min.js +2 -7
- package/tinymce-assets/plugins/pagebreak/plugin.js +53 -40
- package/tinymce-assets/plugins/pagebreak/plugin.min.js +2 -7
- package/tinymce-assets/plugins/preview/plugin.js +36 -65
- package/tinymce-assets/plugins/preview/plugin.min.js +2 -7
- package/tinymce-assets/plugins/quickbars/plugin.js +304 -331
- package/tinymce-assets/plugins/quickbars/plugin.min.js +2 -7
- package/tinymce-assets/plugins/save/plugin.js +49 -50
- package/tinymce-assets/plugins/save/plugin.min.js +2 -7
- package/tinymce-assets/plugins/searchreplace/plugin.js +499 -571
- package/tinymce-assets/plugins/searchreplace/plugin.min.js +2 -7
- package/tinymce-assets/plugins/table/plugin.js +2572 -10617
- package/tinymce-assets/plugins/table/plugin.min.js +2 -7
- package/tinymce-assets/plugins/visualblocks/plugin.js +41 -46
- package/tinymce-assets/plugins/visualblocks/plugin.min.js +2 -7
- package/tinymce-assets/plugins/visualchars/plugin.js +346 -312
- package/tinymce-assets/plugins/visualchars/plugin.min.js +2 -7
- package/tinymce-assets/plugins/wordcount/plugin.js +159 -179
- package/tinymce-assets/plugins/wordcount/plugin.min.js +2 -7
- package/tinymce-assets/skins/content/dark/content.css +2 -8
- package/tinymce-assets/skins/content/dark/content.js +2 -0
- package/tinymce-assets/skins/content/dark/content.min.css +1 -7
- package/tinymce-assets/skins/content/default/content.css +0 -6
- package/tinymce-assets/skins/content/default/content.js +2 -0
- package/tinymce-assets/skins/content/default/content.min.css +0 -6
- package/tinymce-assets/skins/content/document/content.css +0 -6
- package/tinymce-assets/skins/content/document/content.js +2 -0
- package/tinymce-assets/skins/content/document/content.min.css +0 -6
- package/tinymce-assets/skins/content/tinymce-5/content.css +61 -0
- package/tinymce-assets/skins/content/tinymce-5/content.js +2 -0
- package/tinymce-assets/skins/content/tinymce-5/content.min.css +1 -0
- package/tinymce-assets/skins/content/tinymce-5-dark/content.css +66 -0
- package/tinymce-assets/skins/content/tinymce-5-dark/content.js +2 -0
- package/tinymce-assets/skins/content/tinymce-5-dark/content.min.css +1 -0
- package/tinymce-assets/skins/content/writer/content.css +0 -6
- package/tinymce-assets/skins/content/writer/content.js +2 -0
- package/tinymce-assets/skins/content/writer/content.min.css +0 -6
- package/tinymce-assets/skins/ui/oxide/content.css +73 -20
- package/tinymce-assets/skins/ui/oxide/content.inline.css +73 -20
- package/tinymce-assets/skins/ui/oxide/content.inline.js +2 -0
- package/tinymce-assets/skins/ui/oxide/content.inline.min.css +1 -7
- package/tinymce-assets/skins/ui/oxide/content.js +2 -0
- package/tinymce-assets/skins/ui/oxide/content.min.css +1 -7
- package/tinymce-assets/skins/ui/oxide/skin.css +1480 -435
- package/tinymce-assets/skins/ui/oxide/skin.js +2 -0
- package/tinymce-assets/skins/ui/oxide/skin.min.css +1 -7
- package/tinymce-assets/skins/ui/oxide/skin.shadowdom.css +1 -8
- package/tinymce-assets/skins/ui/oxide/skin.shadowdom.js +2 -0
- package/tinymce-assets/skins/ui/oxide/skin.shadowdom.min.css +1 -7
- package/tinymce-assets/skins/ui/oxide-dark/content.css +71 -19
- package/tinymce-assets/skins/ui/oxide-dark/content.inline.css +73 -20
- package/tinymce-assets/skins/ui/oxide-dark/content.inline.js +2 -0
- package/tinymce-assets/skins/ui/oxide-dark/content.inline.min.css +1 -7
- package/tinymce-assets/skins/ui/oxide-dark/content.js +2 -0
- package/tinymce-assets/skins/ui/oxide-dark/content.min.css +1 -7
- package/tinymce-assets/skins/ui/oxide-dark/skin.css +1498 -450
- package/tinymce-assets/skins/ui/oxide-dark/skin.js +2 -0
- package/tinymce-assets/skins/ui/oxide-dark/skin.min.css +1 -7
- package/tinymce-assets/skins/ui/oxide-dark/skin.shadowdom.css +1 -8
- package/tinymce-assets/skins/ui/oxide-dark/skin.shadowdom.js +2 -0
- package/tinymce-assets/skins/ui/oxide-dark/skin.shadowdom.min.css +1 -7
- package/tinymce-assets/skins/ui/tinymce-5/content.css +785 -0
- package/tinymce-assets/skins/ui/tinymce-5/content.inline.css +779 -0
- package/tinymce-assets/skins/ui/tinymce-5/content.inline.js +2 -0
- package/tinymce-assets/skins/ui/tinymce-5/content.inline.min.css +1 -0
- package/tinymce-assets/skins/ui/tinymce-5/content.js +2 -0
- package/tinymce-assets/skins/ui/tinymce-5/content.min.css +1 -0
- package/tinymce-assets/skins/ui/tinymce-5/skin.css +4185 -0
- package/tinymce-assets/skins/ui/tinymce-5/skin.js +2 -0
- package/tinymce-assets/skins/ui/tinymce-5/skin.min.css +1 -0
- package/tinymce-assets/skins/ui/tinymce-5/skin.shadowdom.css +30 -0
- package/tinymce-assets/skins/ui/tinymce-5/skin.shadowdom.js +2 -0
- package/tinymce-assets/skins/ui/tinymce-5/skin.shadowdom.min.css +1 -0
- package/tinymce-assets/skins/ui/tinymce-5-dark/content.css +766 -0
- package/tinymce-assets/skins/ui/tinymce-5-dark/content.inline.css +779 -0
- package/tinymce-assets/skins/ui/tinymce-5-dark/content.inline.js +2 -0
- package/tinymce-assets/skins/ui/tinymce-5-dark/content.inline.min.css +1 -0
- package/tinymce-assets/skins/ui/tinymce-5-dark/content.js +2 -0
- package/tinymce-assets/skins/ui/tinymce-5-dark/content.min.css +1 -0
- package/tinymce-assets/skins/ui/tinymce-5-dark/skin.css +4185 -0
- package/tinymce-assets/skins/ui/tinymce-5-dark/skin.js +2 -0
- package/tinymce-assets/skins/ui/tinymce-5-dark/skin.min.css +1 -0
- package/tinymce-assets/skins/ui/tinymce-5-dark/skin.shadowdom.css +30 -0
- package/tinymce-assets/skins/ui/tinymce-5-dark/skin.shadowdom.js +2 -0
- package/tinymce-assets/skins/ui/tinymce-5-dark/skin.shadowdom.min.css +1 -0
- package/tinymce-assets/themes/silver/theme.js +25226 -28188
- package/tinymce-assets/themes/silver/theme.min.js +2 -7
- package/tinymce-assets/plugins/bbcode/index.js +0 -7
- package/tinymce-assets/plugins/bbcode/plugin.js +0 -99
- package/tinymce-assets/plugins/bbcode/plugin.min.js +0 -9
- package/tinymce-assets/plugins/colorpicker/index.js +0 -7
- package/tinymce-assets/plugins/colorpicker/plugin.js +0 -21
- package/tinymce-assets/plugins/colorpicker/plugin.min.js +0 -9
- package/tinymce-assets/plugins/contextmenu/index.js +0 -7
- package/tinymce-assets/plugins/contextmenu/plugin.js +0 -21
- package/tinymce-assets/plugins/contextmenu/plugin.min.js +0 -9
- package/tinymce-assets/plugins/fullpage/index.js +0 -7
- package/tinymce-assets/plugins/fullpage/plugin.js +0 -544
- package/tinymce-assets/plugins/fullpage/plugin.min.js +0 -9
- package/tinymce-assets/plugins/hr/index.js +0 -7
- package/tinymce-assets/plugins/hr/plugin.js +0 -45
- package/tinymce-assets/plugins/hr/plugin.min.js +0 -9
- package/tinymce-assets/plugins/imagetools/index.js +0 -7
- package/tinymce-assets/plugins/imagetools/plugin.js +0 -1531
- package/tinymce-assets/plugins/imagetools/plugin.min.js +0 -9
- package/tinymce-assets/plugins/legacyoutput/index.js +0 -7
- package/tinymce-assets/plugins/legacyoutput/plugin.js +0 -199
- package/tinymce-assets/plugins/legacyoutput/plugin.min.js +0 -9
- package/tinymce-assets/plugins/noneditable/index.js +0 -7
- package/tinymce-assets/plugins/noneditable/plugin.js +0 -117
- package/tinymce-assets/plugins/noneditable/plugin.min.js +0 -9
- package/tinymce-assets/plugins/paste/index.js +0 -7
- package/tinymce-assets/plugins/paste/plugin.js +0 -1803
- package/tinymce-assets/plugins/paste/plugin.min.js +0 -9
- package/tinymce-assets/plugins/print/index.js +0 -7
- package/tinymce-assets/plugins/print/plugin.js +0 -52
- package/tinymce-assets/plugins/print/plugin.min.js +0 -9
- package/tinymce-assets/plugins/spellchecker/index.js +0 -7
- package/tinymce-assets/plugins/spellchecker/plugin.js +0 -730
- package/tinymce-assets/plugins/spellchecker/plugin.min.js +0 -9
- package/tinymce-assets/plugins/tabfocus/index.js +0 -7
- package/tinymce-assets/plugins/tabfocus/plugin.js +0 -130
- package/tinymce-assets/plugins/tabfocus/plugin.min.js +0 -9
- package/tinymce-assets/plugins/template/index.js +0 -7
- package/tinymce-assets/plugins/template/plugin.js +0 -591
- package/tinymce-assets/plugins/template/plugin.min.js +0 -9
- package/tinymce-assets/plugins/textcolor/index.js +0 -7
- package/tinymce-assets/plugins/textcolor/plugin.js +0 -21
- package/tinymce-assets/plugins/textcolor/plugin.min.js +0 -9
- package/tinymce-assets/plugins/textpattern/index.js +0 -7
- package/tinymce-assets/plugins/textpattern/plugin.js +0 -1374
- package/tinymce-assets/plugins/textpattern/plugin.min.js +0 -9
- package/tinymce-assets/plugins/toc/index.js +0 -7
- package/tinymce-assets/plugins/toc/plugin.js +0 -238
- package/tinymce-assets/plugins/toc/plugin.min.js +0 -9
- package/tinymce-assets/skins/ui/oxide/content.mobile.css +0 -29
- package/tinymce-assets/skins/ui/oxide/content.mobile.min.css +0 -7
- package/tinymce-assets/skins/ui/oxide/fonts/tinymce-mobile.woff +0 -0
- package/tinymce-assets/skins/ui/oxide/skin.mobile.css +0 -673
- package/tinymce-assets/skins/ui/oxide/skin.mobile.min.css +0 -7
- package/tinymce-assets/skins/ui/oxide-dark/content.mobile.css +0 -29
- package/tinymce-assets/skins/ui/oxide-dark/content.mobile.min.css +0 -7
- package/tinymce-assets/skins/ui/oxide-dark/fonts/tinymce-mobile.woff +0 -0
- package/tinymce-assets/skins/ui/oxide-dark/skin.mobile.css +0 -673
- package/tinymce-assets/skins/ui/oxide-dark/skin.mobile.min.css +0 -7
- package/tinymce-assets/themes/mobile/index.js +0 -7
- package/tinymce-assets/themes/mobile/theme.js +0 -13130
- package/tinymce-assets/themes/mobile/theme.min.js +0 -9
|
@@ -1,1374 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
|
3
|
-
* Licensed under the LGPL or a commercial license.
|
|
4
|
-
* For LGPL see License.txt in the project root for license information.
|
|
5
|
-
* For commercial licenses see https://www.tiny.cloud/
|
|
6
|
-
*
|
|
7
|
-
* Version: 5.10.9 (2023-11-15)
|
|
8
|
-
*/
|
|
9
|
-
(function () {
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
var Cell = function (initial) {
|
|
13
|
-
var value = initial;
|
|
14
|
-
var get = function () {
|
|
15
|
-
return value;
|
|
16
|
-
};
|
|
17
|
-
var set = function (v) {
|
|
18
|
-
value = v;
|
|
19
|
-
};
|
|
20
|
-
return {
|
|
21
|
-
get: get,
|
|
22
|
-
set: set
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
var global$5 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
|
27
|
-
|
|
28
|
-
var __assign = function () {
|
|
29
|
-
__assign = Object.assign || function __assign(t) {
|
|
30
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
31
|
-
s = arguments[i];
|
|
32
|
-
for (var p in s)
|
|
33
|
-
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
34
|
-
t[p] = s[p];
|
|
35
|
-
}
|
|
36
|
-
return t;
|
|
37
|
-
};
|
|
38
|
-
return __assign.apply(this, arguments);
|
|
39
|
-
};
|
|
40
|
-
function __spreadArray(to, from, pack) {
|
|
41
|
-
if (pack || arguments.length === 2)
|
|
42
|
-
for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
43
|
-
if (ar || !(i in from)) {
|
|
44
|
-
if (!ar)
|
|
45
|
-
ar = Array.prototype.slice.call(from, 0, i);
|
|
46
|
-
ar[i] = from[i];
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
var typeOf = function (x) {
|
|
53
|
-
var t = typeof x;
|
|
54
|
-
if (x === null) {
|
|
55
|
-
return 'null';
|
|
56
|
-
} else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) {
|
|
57
|
-
return 'array';
|
|
58
|
-
} else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) {
|
|
59
|
-
return 'string';
|
|
60
|
-
} else {
|
|
61
|
-
return t;
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
var isType = function (type) {
|
|
65
|
-
return function (value) {
|
|
66
|
-
return typeOf(value) === type;
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
var isString = isType('string');
|
|
70
|
-
var isObject = isType('object');
|
|
71
|
-
var isArray = isType('array');
|
|
72
|
-
|
|
73
|
-
var noop = function () {
|
|
74
|
-
};
|
|
75
|
-
var constant = function (value) {
|
|
76
|
-
return function () {
|
|
77
|
-
return value;
|
|
78
|
-
};
|
|
79
|
-
};
|
|
80
|
-
var identity = function (x) {
|
|
81
|
-
return x;
|
|
82
|
-
};
|
|
83
|
-
var die = function (msg) {
|
|
84
|
-
return function () {
|
|
85
|
-
throw new Error(msg);
|
|
86
|
-
};
|
|
87
|
-
};
|
|
88
|
-
var never = constant(false);
|
|
89
|
-
var always = constant(true);
|
|
90
|
-
|
|
91
|
-
var none = function () {
|
|
92
|
-
return NONE;
|
|
93
|
-
};
|
|
94
|
-
var NONE = function () {
|
|
95
|
-
var call = function (thunk) {
|
|
96
|
-
return thunk();
|
|
97
|
-
};
|
|
98
|
-
var id = identity;
|
|
99
|
-
var me = {
|
|
100
|
-
fold: function (n, _s) {
|
|
101
|
-
return n();
|
|
102
|
-
},
|
|
103
|
-
isSome: never,
|
|
104
|
-
isNone: always,
|
|
105
|
-
getOr: id,
|
|
106
|
-
getOrThunk: call,
|
|
107
|
-
getOrDie: function (msg) {
|
|
108
|
-
throw new Error(msg || 'error: getOrDie called on none.');
|
|
109
|
-
},
|
|
110
|
-
getOrNull: constant(null),
|
|
111
|
-
getOrUndefined: constant(undefined),
|
|
112
|
-
or: id,
|
|
113
|
-
orThunk: call,
|
|
114
|
-
map: none,
|
|
115
|
-
each: noop,
|
|
116
|
-
bind: none,
|
|
117
|
-
exists: never,
|
|
118
|
-
forall: always,
|
|
119
|
-
filter: function () {
|
|
120
|
-
return none();
|
|
121
|
-
},
|
|
122
|
-
toArray: function () {
|
|
123
|
-
return [];
|
|
124
|
-
},
|
|
125
|
-
toString: constant('none()')
|
|
126
|
-
};
|
|
127
|
-
return me;
|
|
128
|
-
}();
|
|
129
|
-
var some = function (a) {
|
|
130
|
-
var constant_a = constant(a);
|
|
131
|
-
var self = function () {
|
|
132
|
-
return me;
|
|
133
|
-
};
|
|
134
|
-
var bind = function (f) {
|
|
135
|
-
return f(a);
|
|
136
|
-
};
|
|
137
|
-
var me = {
|
|
138
|
-
fold: function (n, s) {
|
|
139
|
-
return s(a);
|
|
140
|
-
},
|
|
141
|
-
isSome: always,
|
|
142
|
-
isNone: never,
|
|
143
|
-
getOr: constant_a,
|
|
144
|
-
getOrThunk: constant_a,
|
|
145
|
-
getOrDie: constant_a,
|
|
146
|
-
getOrNull: constant_a,
|
|
147
|
-
getOrUndefined: constant_a,
|
|
148
|
-
or: self,
|
|
149
|
-
orThunk: self,
|
|
150
|
-
map: function (f) {
|
|
151
|
-
return some(f(a));
|
|
152
|
-
},
|
|
153
|
-
each: function (f) {
|
|
154
|
-
f(a);
|
|
155
|
-
},
|
|
156
|
-
bind: bind,
|
|
157
|
-
exists: bind,
|
|
158
|
-
forall: bind,
|
|
159
|
-
filter: function (f) {
|
|
160
|
-
return f(a) ? me : NONE;
|
|
161
|
-
},
|
|
162
|
-
toArray: function () {
|
|
163
|
-
return [a];
|
|
164
|
-
},
|
|
165
|
-
toString: function () {
|
|
166
|
-
return 'some(' + a + ')';
|
|
167
|
-
}
|
|
168
|
-
};
|
|
169
|
-
return me;
|
|
170
|
-
};
|
|
171
|
-
var from = function (value) {
|
|
172
|
-
return value === null || value === undefined ? NONE : some(value);
|
|
173
|
-
};
|
|
174
|
-
var Optional = {
|
|
175
|
-
some: some,
|
|
176
|
-
none: none,
|
|
177
|
-
from: from
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
var nativeSlice = Array.prototype.slice;
|
|
181
|
-
var nativeIndexOf = Array.prototype.indexOf;
|
|
182
|
-
var rawIndexOf = function (ts, t) {
|
|
183
|
-
return nativeIndexOf.call(ts, t);
|
|
184
|
-
};
|
|
185
|
-
var contains = function (xs, x) {
|
|
186
|
-
return rawIndexOf(xs, x) > -1;
|
|
187
|
-
};
|
|
188
|
-
var map = function (xs, f) {
|
|
189
|
-
var len = xs.length;
|
|
190
|
-
var r = new Array(len);
|
|
191
|
-
for (var i = 0; i < len; i++) {
|
|
192
|
-
var x = xs[i];
|
|
193
|
-
r[i] = f(x, i);
|
|
194
|
-
}
|
|
195
|
-
return r;
|
|
196
|
-
};
|
|
197
|
-
var each = function (xs, f) {
|
|
198
|
-
for (var i = 0, len = xs.length; i < len; i++) {
|
|
199
|
-
var x = xs[i];
|
|
200
|
-
f(x, i);
|
|
201
|
-
}
|
|
202
|
-
};
|
|
203
|
-
var eachr = function (xs, f) {
|
|
204
|
-
for (var i = xs.length - 1; i >= 0; i--) {
|
|
205
|
-
var x = xs[i];
|
|
206
|
-
f(x, i);
|
|
207
|
-
}
|
|
208
|
-
};
|
|
209
|
-
var filter = function (xs, pred) {
|
|
210
|
-
var r = [];
|
|
211
|
-
for (var i = 0, len = xs.length; i < len; i++) {
|
|
212
|
-
var x = xs[i];
|
|
213
|
-
if (pred(x, i)) {
|
|
214
|
-
r.push(x);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
return r;
|
|
218
|
-
};
|
|
219
|
-
var foldr = function (xs, f, acc) {
|
|
220
|
-
eachr(xs, function (x, i) {
|
|
221
|
-
acc = f(acc, x, i);
|
|
222
|
-
});
|
|
223
|
-
return acc;
|
|
224
|
-
};
|
|
225
|
-
var foldl = function (xs, f, acc) {
|
|
226
|
-
each(xs, function (x, i) {
|
|
227
|
-
acc = f(acc, x, i);
|
|
228
|
-
});
|
|
229
|
-
return acc;
|
|
230
|
-
};
|
|
231
|
-
var findUntil = function (xs, pred, until) {
|
|
232
|
-
for (var i = 0, len = xs.length; i < len; i++) {
|
|
233
|
-
var x = xs[i];
|
|
234
|
-
if (pred(x, i)) {
|
|
235
|
-
return Optional.some(x);
|
|
236
|
-
} else if (until(x, i)) {
|
|
237
|
-
break;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
return Optional.none();
|
|
241
|
-
};
|
|
242
|
-
var find = function (xs, pred) {
|
|
243
|
-
return findUntil(xs, pred, never);
|
|
244
|
-
};
|
|
245
|
-
var forall = function (xs, pred) {
|
|
246
|
-
for (var i = 0, len = xs.length; i < len; ++i) {
|
|
247
|
-
var x = xs[i];
|
|
248
|
-
if (pred(x, i) !== true) {
|
|
249
|
-
return false;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
return true;
|
|
253
|
-
};
|
|
254
|
-
var sort = function (xs, comparator) {
|
|
255
|
-
var copy = nativeSlice.call(xs, 0);
|
|
256
|
-
copy.sort(comparator);
|
|
257
|
-
return copy;
|
|
258
|
-
};
|
|
259
|
-
var get$1 = function (xs, i) {
|
|
260
|
-
return i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();
|
|
261
|
-
};
|
|
262
|
-
var head = function (xs) {
|
|
263
|
-
return get$1(xs, 0);
|
|
264
|
-
};
|
|
265
|
-
|
|
266
|
-
var keys = Object.keys;
|
|
267
|
-
var hasOwnProperty = Object.hasOwnProperty;
|
|
268
|
-
var has = function (obj, key) {
|
|
269
|
-
return hasOwnProperty.call(obj, key);
|
|
270
|
-
};
|
|
271
|
-
|
|
272
|
-
var generate$1 = function (cases) {
|
|
273
|
-
if (!isArray(cases)) {
|
|
274
|
-
throw new Error('cases must be an array');
|
|
275
|
-
}
|
|
276
|
-
if (cases.length === 0) {
|
|
277
|
-
throw new Error('there must be at least one case');
|
|
278
|
-
}
|
|
279
|
-
var constructors = [];
|
|
280
|
-
var adt = {};
|
|
281
|
-
each(cases, function (acase, count) {
|
|
282
|
-
var keys$1 = keys(acase);
|
|
283
|
-
if (keys$1.length !== 1) {
|
|
284
|
-
throw new Error('one and only one name per case');
|
|
285
|
-
}
|
|
286
|
-
var key = keys$1[0];
|
|
287
|
-
var value = acase[key];
|
|
288
|
-
if (adt[key] !== undefined) {
|
|
289
|
-
throw new Error('duplicate key detected:' + key);
|
|
290
|
-
} else if (key === 'cata') {
|
|
291
|
-
throw new Error('cannot have a case named cata (sorry)');
|
|
292
|
-
} else if (!isArray(value)) {
|
|
293
|
-
throw new Error('case arguments must be an array');
|
|
294
|
-
}
|
|
295
|
-
constructors.push(key);
|
|
296
|
-
adt[key] = function () {
|
|
297
|
-
var args = [];
|
|
298
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
299
|
-
args[_i] = arguments[_i];
|
|
300
|
-
}
|
|
301
|
-
var argLength = args.length;
|
|
302
|
-
if (argLength !== value.length) {
|
|
303
|
-
throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);
|
|
304
|
-
}
|
|
305
|
-
var match = function (branches) {
|
|
306
|
-
var branchKeys = keys(branches);
|
|
307
|
-
if (constructors.length !== branchKeys.length) {
|
|
308
|
-
throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\nActual: ' + branchKeys.join(','));
|
|
309
|
-
}
|
|
310
|
-
var allReqd = forall(constructors, function (reqKey) {
|
|
311
|
-
return contains(branchKeys, reqKey);
|
|
312
|
-
});
|
|
313
|
-
if (!allReqd) {
|
|
314
|
-
throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\nRequired: ' + constructors.join(', '));
|
|
315
|
-
}
|
|
316
|
-
return branches[key].apply(null, args);
|
|
317
|
-
};
|
|
318
|
-
return {
|
|
319
|
-
fold: function () {
|
|
320
|
-
var foldArgs = [];
|
|
321
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
322
|
-
foldArgs[_i] = arguments[_i];
|
|
323
|
-
}
|
|
324
|
-
if (foldArgs.length !== cases.length) {
|
|
325
|
-
throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + foldArgs.length);
|
|
326
|
-
}
|
|
327
|
-
var target = foldArgs[count];
|
|
328
|
-
return target.apply(null, args);
|
|
329
|
-
},
|
|
330
|
-
match: match,
|
|
331
|
-
log: function (label) {
|
|
332
|
-
console.log(label, {
|
|
333
|
-
constructors: constructors,
|
|
334
|
-
constructor: key,
|
|
335
|
-
params: args
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
};
|
|
339
|
-
};
|
|
340
|
-
});
|
|
341
|
-
return adt;
|
|
342
|
-
};
|
|
343
|
-
var Adt = { generate: generate$1 };
|
|
344
|
-
|
|
345
|
-
Adt.generate([
|
|
346
|
-
{
|
|
347
|
-
bothErrors: [
|
|
348
|
-
'error1',
|
|
349
|
-
'error2'
|
|
350
|
-
]
|
|
351
|
-
},
|
|
352
|
-
{
|
|
353
|
-
firstError: [
|
|
354
|
-
'error1',
|
|
355
|
-
'value2'
|
|
356
|
-
]
|
|
357
|
-
},
|
|
358
|
-
{
|
|
359
|
-
secondError: [
|
|
360
|
-
'value1',
|
|
361
|
-
'error2'
|
|
362
|
-
]
|
|
363
|
-
},
|
|
364
|
-
{
|
|
365
|
-
bothValues: [
|
|
366
|
-
'value1',
|
|
367
|
-
'value2'
|
|
368
|
-
]
|
|
369
|
-
}
|
|
370
|
-
]);
|
|
371
|
-
var partition = function (results) {
|
|
372
|
-
var errors = [];
|
|
373
|
-
var values = [];
|
|
374
|
-
each(results, function (result) {
|
|
375
|
-
result.fold(function (err) {
|
|
376
|
-
errors.push(err);
|
|
377
|
-
}, function (value) {
|
|
378
|
-
values.push(value);
|
|
379
|
-
});
|
|
380
|
-
});
|
|
381
|
-
return {
|
|
382
|
-
errors: errors,
|
|
383
|
-
values: values
|
|
384
|
-
};
|
|
385
|
-
};
|
|
386
|
-
|
|
387
|
-
var value = function (o) {
|
|
388
|
-
var or = function (_opt) {
|
|
389
|
-
return value(o);
|
|
390
|
-
};
|
|
391
|
-
var orThunk = function (_f) {
|
|
392
|
-
return value(o);
|
|
393
|
-
};
|
|
394
|
-
var map = function (f) {
|
|
395
|
-
return value(f(o));
|
|
396
|
-
};
|
|
397
|
-
var mapError = function (_f) {
|
|
398
|
-
return value(o);
|
|
399
|
-
};
|
|
400
|
-
var each = function (f) {
|
|
401
|
-
f(o);
|
|
402
|
-
};
|
|
403
|
-
var bind = function (f) {
|
|
404
|
-
return f(o);
|
|
405
|
-
};
|
|
406
|
-
var fold = function (_, onValue) {
|
|
407
|
-
return onValue(o);
|
|
408
|
-
};
|
|
409
|
-
var exists = function (f) {
|
|
410
|
-
return f(o);
|
|
411
|
-
};
|
|
412
|
-
var forall = function (f) {
|
|
413
|
-
return f(o);
|
|
414
|
-
};
|
|
415
|
-
var toOptional = function () {
|
|
416
|
-
return Optional.some(o);
|
|
417
|
-
};
|
|
418
|
-
return {
|
|
419
|
-
isValue: always,
|
|
420
|
-
isError: never,
|
|
421
|
-
getOr: constant(o),
|
|
422
|
-
getOrThunk: constant(o),
|
|
423
|
-
getOrDie: constant(o),
|
|
424
|
-
or: or,
|
|
425
|
-
orThunk: orThunk,
|
|
426
|
-
fold: fold,
|
|
427
|
-
map: map,
|
|
428
|
-
mapError: mapError,
|
|
429
|
-
each: each,
|
|
430
|
-
bind: bind,
|
|
431
|
-
exists: exists,
|
|
432
|
-
forall: forall,
|
|
433
|
-
toOptional: toOptional
|
|
434
|
-
};
|
|
435
|
-
};
|
|
436
|
-
var error$1 = function (message) {
|
|
437
|
-
var getOrThunk = function (f) {
|
|
438
|
-
return f();
|
|
439
|
-
};
|
|
440
|
-
var getOrDie = function () {
|
|
441
|
-
return die(String(message))();
|
|
442
|
-
};
|
|
443
|
-
var or = identity;
|
|
444
|
-
var orThunk = function (f) {
|
|
445
|
-
return f();
|
|
446
|
-
};
|
|
447
|
-
var map = function (_f) {
|
|
448
|
-
return error$1(message);
|
|
449
|
-
};
|
|
450
|
-
var mapError = function (f) {
|
|
451
|
-
return error$1(f(message));
|
|
452
|
-
};
|
|
453
|
-
var bind = function (_f) {
|
|
454
|
-
return error$1(message);
|
|
455
|
-
};
|
|
456
|
-
var fold = function (onError, _) {
|
|
457
|
-
return onError(message);
|
|
458
|
-
};
|
|
459
|
-
return {
|
|
460
|
-
isValue: never,
|
|
461
|
-
isError: always,
|
|
462
|
-
getOr: identity,
|
|
463
|
-
getOrThunk: getOrThunk,
|
|
464
|
-
getOrDie: getOrDie,
|
|
465
|
-
or: or,
|
|
466
|
-
orThunk: orThunk,
|
|
467
|
-
fold: fold,
|
|
468
|
-
map: map,
|
|
469
|
-
mapError: mapError,
|
|
470
|
-
each: noop,
|
|
471
|
-
bind: bind,
|
|
472
|
-
exists: never,
|
|
473
|
-
forall: always,
|
|
474
|
-
toOptional: Optional.none
|
|
475
|
-
};
|
|
476
|
-
};
|
|
477
|
-
var fromOption = function (opt, err) {
|
|
478
|
-
return opt.fold(function () {
|
|
479
|
-
return error$1(err);
|
|
480
|
-
}, value);
|
|
481
|
-
};
|
|
482
|
-
var Result = {
|
|
483
|
-
value: value,
|
|
484
|
-
error: error$1,
|
|
485
|
-
fromOption: fromOption
|
|
486
|
-
};
|
|
487
|
-
|
|
488
|
-
var isInlinePattern = function (pattern) {
|
|
489
|
-
return pattern.type === 'inline-command' || pattern.type === 'inline-format';
|
|
490
|
-
};
|
|
491
|
-
var isBlockPattern = function (pattern) {
|
|
492
|
-
return pattern.type === 'block-command' || pattern.type === 'block-format';
|
|
493
|
-
};
|
|
494
|
-
var sortPatterns = function (patterns) {
|
|
495
|
-
return sort(patterns, function (a, b) {
|
|
496
|
-
if (a.start.length === b.start.length) {
|
|
497
|
-
return 0;
|
|
498
|
-
}
|
|
499
|
-
return a.start.length > b.start.length ? -1 : 1;
|
|
500
|
-
});
|
|
501
|
-
};
|
|
502
|
-
var normalizePattern = function (pattern) {
|
|
503
|
-
var err = function (message) {
|
|
504
|
-
return Result.error({
|
|
505
|
-
message: message,
|
|
506
|
-
pattern: pattern
|
|
507
|
-
});
|
|
508
|
-
};
|
|
509
|
-
var formatOrCmd = function (name, onFormat, onCommand) {
|
|
510
|
-
if (pattern.format !== undefined) {
|
|
511
|
-
var formats = void 0;
|
|
512
|
-
if (isArray(pattern.format)) {
|
|
513
|
-
if (!forall(pattern.format, isString)) {
|
|
514
|
-
return err(name + ' pattern has non-string items in the `format` array');
|
|
515
|
-
}
|
|
516
|
-
formats = pattern.format;
|
|
517
|
-
} else if (isString(pattern.format)) {
|
|
518
|
-
formats = [pattern.format];
|
|
519
|
-
} else {
|
|
520
|
-
return err(name + ' pattern has non-string `format` parameter');
|
|
521
|
-
}
|
|
522
|
-
return Result.value(onFormat(formats));
|
|
523
|
-
} else if (pattern.cmd !== undefined) {
|
|
524
|
-
if (!isString(pattern.cmd)) {
|
|
525
|
-
return err(name + ' pattern has non-string `cmd` parameter');
|
|
526
|
-
}
|
|
527
|
-
return Result.value(onCommand(pattern.cmd, pattern.value));
|
|
528
|
-
} else {
|
|
529
|
-
return err(name + ' pattern is missing both `format` and `cmd` parameters');
|
|
530
|
-
}
|
|
531
|
-
};
|
|
532
|
-
if (!isObject(pattern)) {
|
|
533
|
-
return err('Raw pattern is not an object');
|
|
534
|
-
}
|
|
535
|
-
if (!isString(pattern.start)) {
|
|
536
|
-
return err('Raw pattern is missing `start` parameter');
|
|
537
|
-
}
|
|
538
|
-
if (pattern.end !== undefined) {
|
|
539
|
-
if (!isString(pattern.end)) {
|
|
540
|
-
return err('Inline pattern has non-string `end` parameter');
|
|
541
|
-
}
|
|
542
|
-
if (pattern.start.length === 0 && pattern.end.length === 0) {
|
|
543
|
-
return err('Inline pattern has empty `start` and `end` parameters');
|
|
544
|
-
}
|
|
545
|
-
var start_1 = pattern.start;
|
|
546
|
-
var end_1 = pattern.end;
|
|
547
|
-
if (end_1.length === 0) {
|
|
548
|
-
end_1 = start_1;
|
|
549
|
-
start_1 = '';
|
|
550
|
-
}
|
|
551
|
-
return formatOrCmd('Inline', function (format) {
|
|
552
|
-
return {
|
|
553
|
-
type: 'inline-format',
|
|
554
|
-
start: start_1,
|
|
555
|
-
end: end_1,
|
|
556
|
-
format: format
|
|
557
|
-
};
|
|
558
|
-
}, function (cmd, value) {
|
|
559
|
-
return {
|
|
560
|
-
type: 'inline-command',
|
|
561
|
-
start: start_1,
|
|
562
|
-
end: end_1,
|
|
563
|
-
cmd: cmd,
|
|
564
|
-
value: value
|
|
565
|
-
};
|
|
566
|
-
});
|
|
567
|
-
} else if (pattern.replacement !== undefined) {
|
|
568
|
-
if (!isString(pattern.replacement)) {
|
|
569
|
-
return err('Replacement pattern has non-string `replacement` parameter');
|
|
570
|
-
}
|
|
571
|
-
if (pattern.start.length === 0) {
|
|
572
|
-
return err('Replacement pattern has empty `start` parameter');
|
|
573
|
-
}
|
|
574
|
-
return Result.value({
|
|
575
|
-
type: 'inline-command',
|
|
576
|
-
start: '',
|
|
577
|
-
end: pattern.start,
|
|
578
|
-
cmd: 'mceInsertContent',
|
|
579
|
-
value: pattern.replacement
|
|
580
|
-
});
|
|
581
|
-
} else {
|
|
582
|
-
if (pattern.start.length === 0) {
|
|
583
|
-
return err('Block pattern has empty `start` parameter');
|
|
584
|
-
}
|
|
585
|
-
return formatOrCmd('Block', function (formats) {
|
|
586
|
-
return {
|
|
587
|
-
type: 'block-format',
|
|
588
|
-
start: pattern.start,
|
|
589
|
-
format: formats[0]
|
|
590
|
-
};
|
|
591
|
-
}, function (command, commandValue) {
|
|
592
|
-
return {
|
|
593
|
-
type: 'block-command',
|
|
594
|
-
start: pattern.start,
|
|
595
|
-
cmd: command,
|
|
596
|
-
value: commandValue
|
|
597
|
-
};
|
|
598
|
-
});
|
|
599
|
-
}
|
|
600
|
-
};
|
|
601
|
-
var denormalizePattern = function (pattern) {
|
|
602
|
-
if (pattern.type === 'block-command') {
|
|
603
|
-
return {
|
|
604
|
-
start: pattern.start,
|
|
605
|
-
cmd: pattern.cmd,
|
|
606
|
-
value: pattern.value
|
|
607
|
-
};
|
|
608
|
-
} else if (pattern.type === 'block-format') {
|
|
609
|
-
return {
|
|
610
|
-
start: pattern.start,
|
|
611
|
-
format: pattern.format
|
|
612
|
-
};
|
|
613
|
-
} else if (pattern.type === 'inline-command') {
|
|
614
|
-
if (pattern.cmd === 'mceInsertContent' && pattern.start === '') {
|
|
615
|
-
return {
|
|
616
|
-
start: pattern.end,
|
|
617
|
-
replacement: pattern.value
|
|
618
|
-
};
|
|
619
|
-
} else {
|
|
620
|
-
return {
|
|
621
|
-
start: pattern.start,
|
|
622
|
-
end: pattern.end,
|
|
623
|
-
cmd: pattern.cmd,
|
|
624
|
-
value: pattern.value
|
|
625
|
-
};
|
|
626
|
-
}
|
|
627
|
-
} else if (pattern.type === 'inline-format') {
|
|
628
|
-
return {
|
|
629
|
-
start: pattern.start,
|
|
630
|
-
end: pattern.end,
|
|
631
|
-
format: pattern.format.length === 1 ? pattern.format[0] : pattern.format
|
|
632
|
-
};
|
|
633
|
-
}
|
|
634
|
-
};
|
|
635
|
-
var createPatternSet = function (patterns) {
|
|
636
|
-
return {
|
|
637
|
-
inlinePatterns: filter(patterns, isInlinePattern),
|
|
638
|
-
blockPatterns: sortPatterns(filter(patterns, isBlockPattern))
|
|
639
|
-
};
|
|
640
|
-
};
|
|
641
|
-
|
|
642
|
-
var get = function (patternsState) {
|
|
643
|
-
var setPatterns = function (newPatterns) {
|
|
644
|
-
var normalized = partition(map(newPatterns, normalizePattern));
|
|
645
|
-
if (normalized.errors.length > 0) {
|
|
646
|
-
var firstError = normalized.errors[0];
|
|
647
|
-
throw new Error(firstError.message + ':\n' + JSON.stringify(firstError.pattern, null, 2));
|
|
648
|
-
}
|
|
649
|
-
patternsState.set(createPatternSet(normalized.values));
|
|
650
|
-
};
|
|
651
|
-
var getPatterns = function () {
|
|
652
|
-
return __spreadArray(__spreadArray([], map(patternsState.get().inlinePatterns, denormalizePattern), true), map(patternsState.get().blockPatterns, denormalizePattern), true);
|
|
653
|
-
};
|
|
654
|
-
return {
|
|
655
|
-
setPatterns: setPatterns,
|
|
656
|
-
getPatterns: getPatterns
|
|
657
|
-
};
|
|
658
|
-
};
|
|
659
|
-
|
|
660
|
-
var Global = typeof window !== 'undefined' ? window : Function('return this;')();
|
|
661
|
-
|
|
662
|
-
var error = function () {
|
|
663
|
-
var args = [];
|
|
664
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
665
|
-
args[_i] = arguments[_i];
|
|
666
|
-
}
|
|
667
|
-
var console = Global.console;
|
|
668
|
-
if (console) {
|
|
669
|
-
if (console.error) {
|
|
670
|
-
console.error.apply(console, args);
|
|
671
|
-
} else {
|
|
672
|
-
console.log.apply(console, args);
|
|
673
|
-
}
|
|
674
|
-
}
|
|
675
|
-
};
|
|
676
|
-
var defaultPatterns = [
|
|
677
|
-
{
|
|
678
|
-
start: '*',
|
|
679
|
-
end: '*',
|
|
680
|
-
format: 'italic'
|
|
681
|
-
},
|
|
682
|
-
{
|
|
683
|
-
start: '**',
|
|
684
|
-
end: '**',
|
|
685
|
-
format: 'bold'
|
|
686
|
-
},
|
|
687
|
-
{
|
|
688
|
-
start: '#',
|
|
689
|
-
format: 'h1'
|
|
690
|
-
},
|
|
691
|
-
{
|
|
692
|
-
start: '##',
|
|
693
|
-
format: 'h2'
|
|
694
|
-
},
|
|
695
|
-
{
|
|
696
|
-
start: '###',
|
|
697
|
-
format: 'h3'
|
|
698
|
-
},
|
|
699
|
-
{
|
|
700
|
-
start: '####',
|
|
701
|
-
format: 'h4'
|
|
702
|
-
},
|
|
703
|
-
{
|
|
704
|
-
start: '#####',
|
|
705
|
-
format: 'h5'
|
|
706
|
-
},
|
|
707
|
-
{
|
|
708
|
-
start: '######',
|
|
709
|
-
format: 'h6'
|
|
710
|
-
},
|
|
711
|
-
{
|
|
712
|
-
start: '1. ',
|
|
713
|
-
cmd: 'InsertOrderedList'
|
|
714
|
-
},
|
|
715
|
-
{
|
|
716
|
-
start: '* ',
|
|
717
|
-
cmd: 'InsertUnorderedList'
|
|
718
|
-
},
|
|
719
|
-
{
|
|
720
|
-
start: '- ',
|
|
721
|
-
cmd: 'InsertUnorderedList'
|
|
722
|
-
}
|
|
723
|
-
];
|
|
724
|
-
var getPatternSet = function (editor) {
|
|
725
|
-
var patterns = editor.getParam('textpattern_patterns', defaultPatterns, 'array');
|
|
726
|
-
if (!isArray(patterns)) {
|
|
727
|
-
error('The setting textpattern_patterns should be an array');
|
|
728
|
-
return {
|
|
729
|
-
inlinePatterns: [],
|
|
730
|
-
blockPatterns: []
|
|
731
|
-
};
|
|
732
|
-
}
|
|
733
|
-
var normalized = partition(map(patterns, normalizePattern));
|
|
734
|
-
each(normalized.errors, function (err) {
|
|
735
|
-
return error(err.message, err.pattern);
|
|
736
|
-
});
|
|
737
|
-
return createPatternSet(normalized.values);
|
|
738
|
-
};
|
|
739
|
-
var getForcedRootBlock = function (editor) {
|
|
740
|
-
var block = editor.getParam('forced_root_block', 'p');
|
|
741
|
-
if (block === false) {
|
|
742
|
-
return '';
|
|
743
|
-
} else if (block === true) {
|
|
744
|
-
return 'p';
|
|
745
|
-
} else {
|
|
746
|
-
return block;
|
|
747
|
-
}
|
|
748
|
-
};
|
|
749
|
-
|
|
750
|
-
var global$4 = tinymce.util.Tools.resolve('tinymce.util.Delay');
|
|
751
|
-
|
|
752
|
-
var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK');
|
|
753
|
-
|
|
754
|
-
var zeroWidth = '\uFEFF';
|
|
755
|
-
var nbsp = '\xA0';
|
|
756
|
-
|
|
757
|
-
var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
|
|
758
|
-
|
|
759
|
-
var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
|
|
760
|
-
|
|
761
|
-
var global = tinymce.util.Tools.resolve('tinymce.dom.TextSeeker');
|
|
762
|
-
|
|
763
|
-
var point = function (container, offset) {
|
|
764
|
-
return {
|
|
765
|
-
container: container,
|
|
766
|
-
offset: offset
|
|
767
|
-
};
|
|
768
|
-
};
|
|
769
|
-
|
|
770
|
-
var isText = function (node) {
|
|
771
|
-
return node.nodeType === Node.TEXT_NODE;
|
|
772
|
-
};
|
|
773
|
-
var cleanEmptyNodes = function (dom, node, isRoot) {
|
|
774
|
-
if (node && dom.isEmpty(node) && !isRoot(node)) {
|
|
775
|
-
var parent_1 = node.parentNode;
|
|
776
|
-
dom.remove(node);
|
|
777
|
-
cleanEmptyNodes(dom, parent_1, isRoot);
|
|
778
|
-
}
|
|
779
|
-
};
|
|
780
|
-
var deleteRng = function (dom, rng, isRoot, clean) {
|
|
781
|
-
if (clean === void 0) {
|
|
782
|
-
clean = true;
|
|
783
|
-
}
|
|
784
|
-
var startParent = rng.startContainer.parentNode;
|
|
785
|
-
var endParent = rng.endContainer.parentNode;
|
|
786
|
-
rng.deleteContents();
|
|
787
|
-
if (clean && !isRoot(rng.startContainer)) {
|
|
788
|
-
if (isText(rng.startContainer) && rng.startContainer.data.length === 0) {
|
|
789
|
-
dom.remove(rng.startContainer);
|
|
790
|
-
}
|
|
791
|
-
if (isText(rng.endContainer) && rng.endContainer.data.length === 0) {
|
|
792
|
-
dom.remove(rng.endContainer);
|
|
793
|
-
}
|
|
794
|
-
cleanEmptyNodes(dom, startParent, isRoot);
|
|
795
|
-
if (startParent !== endParent) {
|
|
796
|
-
cleanEmptyNodes(dom, endParent, isRoot);
|
|
797
|
-
}
|
|
798
|
-
}
|
|
799
|
-
};
|
|
800
|
-
var isBlockFormatName = function (name, formatter) {
|
|
801
|
-
var formatSet = formatter.get(name);
|
|
802
|
-
return isArray(formatSet) && head(formatSet).exists(function (format) {
|
|
803
|
-
return has(format, 'block');
|
|
804
|
-
});
|
|
805
|
-
};
|
|
806
|
-
var isReplacementPattern = function (pattern) {
|
|
807
|
-
return pattern.start.length === 0;
|
|
808
|
-
};
|
|
809
|
-
var getParentBlock = function (editor, rng) {
|
|
810
|
-
var parentBlockOpt = Optional.from(editor.dom.getParent(rng.startContainer, editor.dom.isBlock));
|
|
811
|
-
if (getForcedRootBlock(editor) === '') {
|
|
812
|
-
return parentBlockOpt.orThunk(function () {
|
|
813
|
-
return Optional.some(editor.getBody());
|
|
814
|
-
});
|
|
815
|
-
} else {
|
|
816
|
-
return parentBlockOpt;
|
|
817
|
-
}
|
|
818
|
-
};
|
|
819
|
-
|
|
820
|
-
var DOM = global$1.DOM;
|
|
821
|
-
var alwaysNext = function (startNode) {
|
|
822
|
-
return function (node) {
|
|
823
|
-
return startNode === node ? -1 : 0;
|
|
824
|
-
};
|
|
825
|
-
};
|
|
826
|
-
var isBoundary = function (dom) {
|
|
827
|
-
return function (node) {
|
|
828
|
-
return dom.isBlock(node) || contains([
|
|
829
|
-
'BR',
|
|
830
|
-
'IMG',
|
|
831
|
-
'HR',
|
|
832
|
-
'INPUT'
|
|
833
|
-
], node.nodeName) || dom.getContentEditable(node) === 'false';
|
|
834
|
-
};
|
|
835
|
-
};
|
|
836
|
-
var textBefore = function (node, offset, rootNode) {
|
|
837
|
-
if (isText(node) && offset >= 0) {
|
|
838
|
-
return Optional.some(point(node, offset));
|
|
839
|
-
} else {
|
|
840
|
-
var textSeeker = global(DOM);
|
|
841
|
-
return Optional.from(textSeeker.backwards(node, offset, alwaysNext(node), rootNode)).map(function (prev) {
|
|
842
|
-
return point(prev.container, prev.container.data.length);
|
|
843
|
-
});
|
|
844
|
-
}
|
|
845
|
-
};
|
|
846
|
-
var textAfter = function (node, offset, rootNode) {
|
|
847
|
-
if (isText(node) && offset >= node.length) {
|
|
848
|
-
return Optional.some(point(node, offset));
|
|
849
|
-
} else {
|
|
850
|
-
var textSeeker = global(DOM);
|
|
851
|
-
return Optional.from(textSeeker.forwards(node, offset, alwaysNext(node), rootNode)).map(function (prev) {
|
|
852
|
-
return point(prev.container, 0);
|
|
853
|
-
});
|
|
854
|
-
}
|
|
855
|
-
};
|
|
856
|
-
var scanLeft = function (node, offset, rootNode) {
|
|
857
|
-
if (!isText(node)) {
|
|
858
|
-
return Optional.none();
|
|
859
|
-
}
|
|
860
|
-
var text = node.textContent;
|
|
861
|
-
if (offset >= 0 && offset <= text.length) {
|
|
862
|
-
return Optional.some(point(node, offset));
|
|
863
|
-
} else {
|
|
864
|
-
var textSeeker = global(DOM);
|
|
865
|
-
return Optional.from(textSeeker.backwards(node, offset, alwaysNext(node), rootNode)).bind(function (prev) {
|
|
866
|
-
var prevText = prev.container.data;
|
|
867
|
-
return scanLeft(prev.container, offset + prevText.length, rootNode);
|
|
868
|
-
});
|
|
869
|
-
}
|
|
870
|
-
};
|
|
871
|
-
var scanRight = function (node, offset, rootNode) {
|
|
872
|
-
if (!isText(node)) {
|
|
873
|
-
return Optional.none();
|
|
874
|
-
}
|
|
875
|
-
var text = node.textContent;
|
|
876
|
-
if (offset <= text.length) {
|
|
877
|
-
return Optional.some(point(node, offset));
|
|
878
|
-
} else {
|
|
879
|
-
var textSeeker = global(DOM);
|
|
880
|
-
return Optional.from(textSeeker.forwards(node, offset, alwaysNext(node), rootNode)).bind(function (next) {
|
|
881
|
-
return scanRight(next.container, offset - text.length, rootNode);
|
|
882
|
-
});
|
|
883
|
-
}
|
|
884
|
-
};
|
|
885
|
-
var repeatLeft = function (dom, node, offset, process, rootNode) {
|
|
886
|
-
var search = global(dom, isBoundary(dom));
|
|
887
|
-
return Optional.from(search.backwards(node, offset, process, rootNode));
|
|
888
|
-
};
|
|
889
|
-
|
|
890
|
-
var generatePath = function (root, node, offset) {
|
|
891
|
-
if (isText(node) && (offset < 0 || offset > node.data.length)) {
|
|
892
|
-
return [];
|
|
893
|
-
}
|
|
894
|
-
var p = [offset];
|
|
895
|
-
var current = node;
|
|
896
|
-
while (current !== root && current.parentNode) {
|
|
897
|
-
var parent_1 = current.parentNode;
|
|
898
|
-
for (var i = 0; i < parent_1.childNodes.length; i++) {
|
|
899
|
-
if (parent_1.childNodes[i] === current) {
|
|
900
|
-
p.push(i);
|
|
901
|
-
break;
|
|
902
|
-
}
|
|
903
|
-
}
|
|
904
|
-
current = parent_1;
|
|
905
|
-
}
|
|
906
|
-
return current === root ? p.reverse() : [];
|
|
907
|
-
};
|
|
908
|
-
var generatePathRange = function (root, startNode, startOffset, endNode, endOffset) {
|
|
909
|
-
var start = generatePath(root, startNode, startOffset);
|
|
910
|
-
var end = generatePath(root, endNode, endOffset);
|
|
911
|
-
return {
|
|
912
|
-
start: start,
|
|
913
|
-
end: end
|
|
914
|
-
};
|
|
915
|
-
};
|
|
916
|
-
var resolvePath = function (root, path) {
|
|
917
|
-
var nodePath = path.slice();
|
|
918
|
-
var offset = nodePath.pop();
|
|
919
|
-
var resolvedNode = foldl(nodePath, function (optNode, index) {
|
|
920
|
-
return optNode.bind(function (node) {
|
|
921
|
-
return Optional.from(node.childNodes[index]);
|
|
922
|
-
});
|
|
923
|
-
}, Optional.some(root));
|
|
924
|
-
return resolvedNode.bind(function (node) {
|
|
925
|
-
if (isText(node) && (offset < 0 || offset > node.data.length)) {
|
|
926
|
-
return Optional.none();
|
|
927
|
-
} else {
|
|
928
|
-
return Optional.some({
|
|
929
|
-
node: node,
|
|
930
|
-
offset: offset
|
|
931
|
-
});
|
|
932
|
-
}
|
|
933
|
-
});
|
|
934
|
-
};
|
|
935
|
-
var resolvePathRange = function (root, range) {
|
|
936
|
-
return resolvePath(root, range.start).bind(function (_a) {
|
|
937
|
-
var startNode = _a.node, startOffset = _a.offset;
|
|
938
|
-
return resolvePath(root, range.end).map(function (_a) {
|
|
939
|
-
var endNode = _a.node, endOffset = _a.offset;
|
|
940
|
-
var rng = document.createRange();
|
|
941
|
-
rng.setStart(startNode, startOffset);
|
|
942
|
-
rng.setEnd(endNode, endOffset);
|
|
943
|
-
return rng;
|
|
944
|
-
});
|
|
945
|
-
});
|
|
946
|
-
};
|
|
947
|
-
var generatePathRangeFromRange = function (root, range) {
|
|
948
|
-
return generatePathRange(root, range.startContainer, range.startOffset, range.endContainer, range.endOffset);
|
|
949
|
-
};
|
|
950
|
-
|
|
951
|
-
var stripPattern = function (dom, block, pattern) {
|
|
952
|
-
var firstTextNode = textAfter(block, 0, block);
|
|
953
|
-
firstTextNode.each(function (spot) {
|
|
954
|
-
var node = spot.container;
|
|
955
|
-
scanRight(node, pattern.start.length, block).each(function (end) {
|
|
956
|
-
var rng = dom.createRng();
|
|
957
|
-
rng.setStart(node, 0);
|
|
958
|
-
rng.setEnd(end.container, end.offset);
|
|
959
|
-
deleteRng(dom, rng, function (e) {
|
|
960
|
-
return e === block;
|
|
961
|
-
});
|
|
962
|
-
});
|
|
963
|
-
});
|
|
964
|
-
};
|
|
965
|
-
var applyPattern$1 = function (editor, match) {
|
|
966
|
-
var dom = editor.dom;
|
|
967
|
-
var pattern = match.pattern;
|
|
968
|
-
var rng = resolvePathRange(dom.getRoot(), match.range).getOrDie('Unable to resolve path range');
|
|
969
|
-
getParentBlock(editor, rng).each(function (block) {
|
|
970
|
-
if (pattern.type === 'block-format') {
|
|
971
|
-
if (isBlockFormatName(pattern.format, editor.formatter)) {
|
|
972
|
-
editor.undoManager.transact(function () {
|
|
973
|
-
stripPattern(editor.dom, block, pattern);
|
|
974
|
-
editor.formatter.apply(pattern.format);
|
|
975
|
-
});
|
|
976
|
-
}
|
|
977
|
-
} else if (pattern.type === 'block-command') {
|
|
978
|
-
editor.undoManager.transact(function () {
|
|
979
|
-
stripPattern(editor.dom, block, pattern);
|
|
980
|
-
editor.execCommand(pattern.cmd, false, pattern.value);
|
|
981
|
-
});
|
|
982
|
-
}
|
|
983
|
-
});
|
|
984
|
-
return true;
|
|
985
|
-
};
|
|
986
|
-
var findPattern$1 = function (patterns, text) {
|
|
987
|
-
var nuText = text.replace(nbsp, ' ');
|
|
988
|
-
return find(patterns, function (pattern) {
|
|
989
|
-
return text.indexOf(pattern.start) === 0 || nuText.indexOf(pattern.start) === 0;
|
|
990
|
-
});
|
|
991
|
-
};
|
|
992
|
-
var findPatterns$1 = function (editor, patterns) {
|
|
993
|
-
var dom = editor.dom;
|
|
994
|
-
var rng = editor.selection.getRng();
|
|
995
|
-
return getParentBlock(editor, rng).filter(function (block) {
|
|
996
|
-
var forcedRootBlock = getForcedRootBlock(editor);
|
|
997
|
-
var matchesForcedRootBlock = forcedRootBlock === '' && dom.is(block, 'body') || dom.is(block, forcedRootBlock);
|
|
998
|
-
return block !== null && matchesForcedRootBlock;
|
|
999
|
-
}).bind(function (block) {
|
|
1000
|
-
var blockText = block.textContent;
|
|
1001
|
-
var matchedPattern = findPattern$1(patterns, blockText);
|
|
1002
|
-
return matchedPattern.map(function (pattern) {
|
|
1003
|
-
if (global$2.trim(blockText).length === pattern.start.length) {
|
|
1004
|
-
return [];
|
|
1005
|
-
}
|
|
1006
|
-
return [{
|
|
1007
|
-
pattern: pattern,
|
|
1008
|
-
range: generatePathRange(dom.getRoot(), block, 0, block, 0)
|
|
1009
|
-
}];
|
|
1010
|
-
});
|
|
1011
|
-
}).getOr([]);
|
|
1012
|
-
};
|
|
1013
|
-
var applyMatches$1 = function (editor, matches) {
|
|
1014
|
-
if (matches.length === 0) {
|
|
1015
|
-
return;
|
|
1016
|
-
}
|
|
1017
|
-
var bookmark = editor.selection.getBookmark();
|
|
1018
|
-
each(matches, function (match) {
|
|
1019
|
-
return applyPattern$1(editor, match);
|
|
1020
|
-
});
|
|
1021
|
-
editor.selection.moveToBookmark(bookmark);
|
|
1022
|
-
};
|
|
1023
|
-
|
|
1024
|
-
var unique = 0;
|
|
1025
|
-
var generate = function (prefix) {
|
|
1026
|
-
var date = new Date();
|
|
1027
|
-
var time = date.getTime();
|
|
1028
|
-
var random = Math.floor(Math.random() * 1000000000);
|
|
1029
|
-
unique++;
|
|
1030
|
-
return prefix + '_' + random + unique + String(time);
|
|
1031
|
-
};
|
|
1032
|
-
|
|
1033
|
-
var checkRange = function (str, substr, start) {
|
|
1034
|
-
return substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;
|
|
1035
|
-
};
|
|
1036
|
-
var endsWith = function (str, suffix) {
|
|
1037
|
-
return checkRange(str, suffix, str.length - suffix.length);
|
|
1038
|
-
};
|
|
1039
|
-
|
|
1040
|
-
var newMarker = function (dom, id) {
|
|
1041
|
-
return dom.create('span', {
|
|
1042
|
-
'data-mce-type': 'bookmark',
|
|
1043
|
-
id: id
|
|
1044
|
-
});
|
|
1045
|
-
};
|
|
1046
|
-
var rangeFromMarker = function (dom, marker) {
|
|
1047
|
-
var rng = dom.createRng();
|
|
1048
|
-
rng.setStartAfter(marker.start);
|
|
1049
|
-
rng.setEndBefore(marker.end);
|
|
1050
|
-
return rng;
|
|
1051
|
-
};
|
|
1052
|
-
var createMarker = function (dom, markerPrefix, pathRange) {
|
|
1053
|
-
var rng = resolvePathRange(dom.getRoot(), pathRange).getOrDie('Unable to resolve path range');
|
|
1054
|
-
var startNode = rng.startContainer;
|
|
1055
|
-
var endNode = rng.endContainer;
|
|
1056
|
-
var textEnd = rng.endOffset === 0 ? endNode : endNode.splitText(rng.endOffset);
|
|
1057
|
-
var textStart = rng.startOffset === 0 ? startNode : startNode.splitText(rng.startOffset);
|
|
1058
|
-
return {
|
|
1059
|
-
prefix: markerPrefix,
|
|
1060
|
-
end: textEnd.parentNode.insertBefore(newMarker(dom, markerPrefix + '-end'), textEnd),
|
|
1061
|
-
start: textStart.parentNode.insertBefore(newMarker(dom, markerPrefix + '-start'), textStart)
|
|
1062
|
-
};
|
|
1063
|
-
};
|
|
1064
|
-
var removeMarker = function (dom, marker, isRoot) {
|
|
1065
|
-
cleanEmptyNodes(dom, dom.get(marker.prefix + '-end'), isRoot);
|
|
1066
|
-
cleanEmptyNodes(dom, dom.get(marker.prefix + '-start'), isRoot);
|
|
1067
|
-
};
|
|
1068
|
-
|
|
1069
|
-
var matchesPattern = function (dom, block, patternContent) {
|
|
1070
|
-
return function (element, offset) {
|
|
1071
|
-
var text = element.data;
|
|
1072
|
-
var searchText = text.substring(0, offset);
|
|
1073
|
-
var startEndIndex = searchText.lastIndexOf(patternContent.charAt(patternContent.length - 1));
|
|
1074
|
-
var startIndex = searchText.lastIndexOf(patternContent);
|
|
1075
|
-
if (startIndex !== -1) {
|
|
1076
|
-
return startIndex + patternContent.length;
|
|
1077
|
-
} else if (startEndIndex !== -1) {
|
|
1078
|
-
return startEndIndex + 1;
|
|
1079
|
-
} else {
|
|
1080
|
-
return -1;
|
|
1081
|
-
}
|
|
1082
|
-
};
|
|
1083
|
-
};
|
|
1084
|
-
var findPatternStartFromSpot = function (dom, pattern, block, spot) {
|
|
1085
|
-
var startPattern = pattern.start;
|
|
1086
|
-
var startSpot = repeatLeft(dom, spot.container, spot.offset, matchesPattern(dom, block, startPattern), block);
|
|
1087
|
-
return startSpot.bind(function (spot) {
|
|
1088
|
-
if (spot.offset >= startPattern.length) {
|
|
1089
|
-
var rng = dom.createRng();
|
|
1090
|
-
rng.setStart(spot.container, spot.offset - startPattern.length);
|
|
1091
|
-
rng.setEnd(spot.container, spot.offset);
|
|
1092
|
-
return Optional.some(rng);
|
|
1093
|
-
} else {
|
|
1094
|
-
var offset = spot.offset - startPattern.length;
|
|
1095
|
-
return scanLeft(spot.container, offset, block).map(function (nextSpot) {
|
|
1096
|
-
var rng = dom.createRng();
|
|
1097
|
-
rng.setStart(nextSpot.container, nextSpot.offset);
|
|
1098
|
-
rng.setEnd(spot.container, spot.offset);
|
|
1099
|
-
return rng;
|
|
1100
|
-
}).filter(function (rng) {
|
|
1101
|
-
return rng.toString() === startPattern;
|
|
1102
|
-
}).orThunk(function () {
|
|
1103
|
-
return findPatternStartFromSpot(dom, pattern, block, point(spot.container, 0));
|
|
1104
|
-
});
|
|
1105
|
-
}
|
|
1106
|
-
});
|
|
1107
|
-
};
|
|
1108
|
-
var findPatternStart = function (dom, pattern, node, offset, block, requireGap) {
|
|
1109
|
-
if (requireGap === void 0) {
|
|
1110
|
-
requireGap = false;
|
|
1111
|
-
}
|
|
1112
|
-
if (pattern.start.length === 0 && !requireGap) {
|
|
1113
|
-
var rng = dom.createRng();
|
|
1114
|
-
rng.setStart(node, offset);
|
|
1115
|
-
rng.setEnd(node, offset);
|
|
1116
|
-
return Optional.some(rng);
|
|
1117
|
-
}
|
|
1118
|
-
return textBefore(node, offset, block).bind(function (spot) {
|
|
1119
|
-
var start = findPatternStartFromSpot(dom, pattern, block, spot);
|
|
1120
|
-
return start.bind(function (startRange) {
|
|
1121
|
-
if (requireGap) {
|
|
1122
|
-
if (startRange.endContainer === spot.container && startRange.endOffset === spot.offset) {
|
|
1123
|
-
return Optional.none();
|
|
1124
|
-
} else if (spot.offset === 0 && startRange.endContainer.textContent.length === startRange.endOffset) {
|
|
1125
|
-
return Optional.none();
|
|
1126
|
-
}
|
|
1127
|
-
}
|
|
1128
|
-
return Optional.some(startRange);
|
|
1129
|
-
});
|
|
1130
|
-
});
|
|
1131
|
-
};
|
|
1132
|
-
var findPattern = function (editor, block, details) {
|
|
1133
|
-
var dom = editor.dom;
|
|
1134
|
-
var root = dom.getRoot();
|
|
1135
|
-
var pattern = details.pattern;
|
|
1136
|
-
var endNode = details.position.container;
|
|
1137
|
-
var endOffset = details.position.offset;
|
|
1138
|
-
return scanLeft(endNode, endOffset - details.pattern.end.length, block).bind(function (spot) {
|
|
1139
|
-
var endPathRng = generatePathRange(root, spot.container, spot.offset, endNode, endOffset);
|
|
1140
|
-
if (isReplacementPattern(pattern)) {
|
|
1141
|
-
return Optional.some({
|
|
1142
|
-
matches: [{
|
|
1143
|
-
pattern: pattern,
|
|
1144
|
-
startRng: endPathRng,
|
|
1145
|
-
endRng: endPathRng
|
|
1146
|
-
}],
|
|
1147
|
-
position: spot
|
|
1148
|
-
});
|
|
1149
|
-
} else {
|
|
1150
|
-
var resultsOpt = findPatternsRec(editor, details.remainingPatterns, spot.container, spot.offset, block);
|
|
1151
|
-
var results_1 = resultsOpt.getOr({
|
|
1152
|
-
matches: [],
|
|
1153
|
-
position: spot
|
|
1154
|
-
});
|
|
1155
|
-
var pos = results_1.position;
|
|
1156
|
-
var start = findPatternStart(dom, pattern, pos.container, pos.offset, block, resultsOpt.isNone());
|
|
1157
|
-
return start.map(function (startRng) {
|
|
1158
|
-
var startPathRng = generatePathRangeFromRange(root, startRng);
|
|
1159
|
-
return {
|
|
1160
|
-
matches: results_1.matches.concat([{
|
|
1161
|
-
pattern: pattern,
|
|
1162
|
-
startRng: startPathRng,
|
|
1163
|
-
endRng: endPathRng
|
|
1164
|
-
}]),
|
|
1165
|
-
position: point(startRng.startContainer, startRng.startOffset)
|
|
1166
|
-
};
|
|
1167
|
-
});
|
|
1168
|
-
}
|
|
1169
|
-
});
|
|
1170
|
-
};
|
|
1171
|
-
var findPatternsRec = function (editor, patterns, node, offset, block) {
|
|
1172
|
-
var dom = editor.dom;
|
|
1173
|
-
return textBefore(node, offset, dom.getRoot()).bind(function (endSpot) {
|
|
1174
|
-
var rng = dom.createRng();
|
|
1175
|
-
rng.setStart(block, 0);
|
|
1176
|
-
rng.setEnd(node, offset);
|
|
1177
|
-
var text = rng.toString();
|
|
1178
|
-
for (var i = 0; i < patterns.length; i++) {
|
|
1179
|
-
var pattern = patterns[i];
|
|
1180
|
-
if (!endsWith(text, pattern.end)) {
|
|
1181
|
-
continue;
|
|
1182
|
-
}
|
|
1183
|
-
var patternsWithoutCurrent = patterns.slice();
|
|
1184
|
-
patternsWithoutCurrent.splice(i, 1);
|
|
1185
|
-
var result = findPattern(editor, block, {
|
|
1186
|
-
pattern: pattern,
|
|
1187
|
-
remainingPatterns: patternsWithoutCurrent,
|
|
1188
|
-
position: endSpot
|
|
1189
|
-
});
|
|
1190
|
-
if (result.isSome()) {
|
|
1191
|
-
return result;
|
|
1192
|
-
}
|
|
1193
|
-
}
|
|
1194
|
-
return Optional.none();
|
|
1195
|
-
});
|
|
1196
|
-
};
|
|
1197
|
-
var applyPattern = function (editor, pattern, patternRange) {
|
|
1198
|
-
editor.selection.setRng(patternRange);
|
|
1199
|
-
if (pattern.type === 'inline-format') {
|
|
1200
|
-
each(pattern.format, function (format) {
|
|
1201
|
-
editor.formatter.apply(format);
|
|
1202
|
-
});
|
|
1203
|
-
} else {
|
|
1204
|
-
editor.execCommand(pattern.cmd, false, pattern.value);
|
|
1205
|
-
}
|
|
1206
|
-
};
|
|
1207
|
-
var applyReplacementPattern = function (editor, pattern, marker, isRoot) {
|
|
1208
|
-
var markerRange = rangeFromMarker(editor.dom, marker);
|
|
1209
|
-
deleteRng(editor.dom, markerRange, isRoot);
|
|
1210
|
-
applyPattern(editor, pattern, markerRange);
|
|
1211
|
-
};
|
|
1212
|
-
var applyPatternWithContent = function (editor, pattern, startMarker, endMarker, isRoot) {
|
|
1213
|
-
var dom = editor.dom;
|
|
1214
|
-
var markerEndRange = rangeFromMarker(dom, endMarker);
|
|
1215
|
-
var markerStartRange = rangeFromMarker(dom, startMarker);
|
|
1216
|
-
deleteRng(dom, markerStartRange, isRoot);
|
|
1217
|
-
deleteRng(dom, markerEndRange, isRoot);
|
|
1218
|
-
var patternMarker = {
|
|
1219
|
-
prefix: startMarker.prefix,
|
|
1220
|
-
start: startMarker.end,
|
|
1221
|
-
end: endMarker.start
|
|
1222
|
-
};
|
|
1223
|
-
var patternRange = rangeFromMarker(dom, patternMarker);
|
|
1224
|
-
applyPattern(editor, pattern, patternRange);
|
|
1225
|
-
};
|
|
1226
|
-
var addMarkers = function (dom, matches) {
|
|
1227
|
-
var markerPrefix = generate('mce_textpattern');
|
|
1228
|
-
var matchesWithEnds = foldr(matches, function (acc, match) {
|
|
1229
|
-
var endMarker = createMarker(dom, markerPrefix + ('_end' + acc.length), match.endRng);
|
|
1230
|
-
return acc.concat([__assign(__assign({}, match), { endMarker: endMarker })]);
|
|
1231
|
-
}, []);
|
|
1232
|
-
return foldr(matchesWithEnds, function (acc, match) {
|
|
1233
|
-
var idx = matchesWithEnds.length - acc.length - 1;
|
|
1234
|
-
var startMarker = isReplacementPattern(match.pattern) ? match.endMarker : createMarker(dom, markerPrefix + ('_start' + idx), match.startRng);
|
|
1235
|
-
return acc.concat([__assign(__assign({}, match), { startMarker: startMarker })]);
|
|
1236
|
-
}, []);
|
|
1237
|
-
};
|
|
1238
|
-
var findPatterns = function (editor, patterns, space) {
|
|
1239
|
-
var rng = editor.selection.getRng();
|
|
1240
|
-
if (rng.collapsed === false) {
|
|
1241
|
-
return [];
|
|
1242
|
-
}
|
|
1243
|
-
return getParentBlock(editor, rng).bind(function (block) {
|
|
1244
|
-
var offset = rng.startOffset - (space ? 1 : 0);
|
|
1245
|
-
return findPatternsRec(editor, patterns, rng.startContainer, offset, block);
|
|
1246
|
-
}).fold(function () {
|
|
1247
|
-
return [];
|
|
1248
|
-
}, function (result) {
|
|
1249
|
-
return result.matches;
|
|
1250
|
-
});
|
|
1251
|
-
};
|
|
1252
|
-
var applyMatches = function (editor, matches) {
|
|
1253
|
-
if (matches.length === 0) {
|
|
1254
|
-
return;
|
|
1255
|
-
}
|
|
1256
|
-
var dom = editor.dom;
|
|
1257
|
-
var bookmark = editor.selection.getBookmark();
|
|
1258
|
-
var matchesWithMarkers = addMarkers(dom, matches);
|
|
1259
|
-
each(matchesWithMarkers, function (match) {
|
|
1260
|
-
var block = dom.getParent(match.startMarker.start, dom.isBlock);
|
|
1261
|
-
var isRoot = function (node) {
|
|
1262
|
-
return node === block;
|
|
1263
|
-
};
|
|
1264
|
-
if (isReplacementPattern(match.pattern)) {
|
|
1265
|
-
applyReplacementPattern(editor, match.pattern, match.endMarker, isRoot);
|
|
1266
|
-
} else {
|
|
1267
|
-
applyPatternWithContent(editor, match.pattern, match.startMarker, match.endMarker, isRoot);
|
|
1268
|
-
}
|
|
1269
|
-
removeMarker(dom, match.endMarker, isRoot);
|
|
1270
|
-
removeMarker(dom, match.startMarker, isRoot);
|
|
1271
|
-
});
|
|
1272
|
-
editor.selection.moveToBookmark(bookmark);
|
|
1273
|
-
};
|
|
1274
|
-
|
|
1275
|
-
var handleEnter = function (editor, patternSet) {
|
|
1276
|
-
if (!editor.selection.isCollapsed()) {
|
|
1277
|
-
return false;
|
|
1278
|
-
}
|
|
1279
|
-
var inlineMatches = findPatterns(editor, patternSet.inlinePatterns, false);
|
|
1280
|
-
var blockMatches = findPatterns$1(editor, patternSet.blockPatterns);
|
|
1281
|
-
if (blockMatches.length > 0 || inlineMatches.length > 0) {
|
|
1282
|
-
editor.undoManager.add();
|
|
1283
|
-
editor.undoManager.extra(function () {
|
|
1284
|
-
editor.execCommand('mceInsertNewLine');
|
|
1285
|
-
}, function () {
|
|
1286
|
-
editor.insertContent(zeroWidth, { preserve_zwsp: true });
|
|
1287
|
-
applyMatches(editor, inlineMatches);
|
|
1288
|
-
applyMatches$1(editor, blockMatches);
|
|
1289
|
-
var range = editor.selection.getRng();
|
|
1290
|
-
var spot = textBefore(range.startContainer, range.startOffset, editor.dom.getRoot());
|
|
1291
|
-
editor.execCommand('mceInsertNewLine');
|
|
1292
|
-
spot.each(function (s) {
|
|
1293
|
-
var node = s.container;
|
|
1294
|
-
if (node.data.charAt(s.offset - 1) === zeroWidth) {
|
|
1295
|
-
node.deleteData(s.offset - 1, 1);
|
|
1296
|
-
cleanEmptyNodes(editor.dom, node.parentNode, function (e) {
|
|
1297
|
-
return e === editor.dom.getRoot();
|
|
1298
|
-
});
|
|
1299
|
-
}
|
|
1300
|
-
});
|
|
1301
|
-
});
|
|
1302
|
-
return true;
|
|
1303
|
-
}
|
|
1304
|
-
return false;
|
|
1305
|
-
};
|
|
1306
|
-
var handleInlineKey = function (editor, patternSet) {
|
|
1307
|
-
var inlineMatches = findPatterns(editor, patternSet.inlinePatterns, true);
|
|
1308
|
-
if (inlineMatches.length > 0) {
|
|
1309
|
-
editor.undoManager.transact(function () {
|
|
1310
|
-
applyMatches(editor, inlineMatches);
|
|
1311
|
-
});
|
|
1312
|
-
}
|
|
1313
|
-
};
|
|
1314
|
-
var checkKeyEvent = function (codes, event, predicate) {
|
|
1315
|
-
for (var i = 0; i < codes.length; i++) {
|
|
1316
|
-
if (predicate(codes[i], event)) {
|
|
1317
|
-
return true;
|
|
1318
|
-
}
|
|
1319
|
-
}
|
|
1320
|
-
return false;
|
|
1321
|
-
};
|
|
1322
|
-
var checkKeyCode = function (codes, event) {
|
|
1323
|
-
return checkKeyEvent(codes, event, function (code, event) {
|
|
1324
|
-
return code === event.keyCode && global$3.modifierPressed(event) === false;
|
|
1325
|
-
});
|
|
1326
|
-
};
|
|
1327
|
-
var checkCharCode = function (chars, event) {
|
|
1328
|
-
return checkKeyEvent(chars, event, function (chr, event) {
|
|
1329
|
-
return chr.charCodeAt(0) === event.charCode;
|
|
1330
|
-
});
|
|
1331
|
-
};
|
|
1332
|
-
|
|
1333
|
-
var setup = function (editor, patternsState) {
|
|
1334
|
-
var charCodes = [
|
|
1335
|
-
',',
|
|
1336
|
-
'.',
|
|
1337
|
-
';',
|
|
1338
|
-
':',
|
|
1339
|
-
'!',
|
|
1340
|
-
'?'
|
|
1341
|
-
];
|
|
1342
|
-
var keyCodes = [32];
|
|
1343
|
-
editor.on('keydown', function (e) {
|
|
1344
|
-
if (e.keyCode === 13 && !global$3.modifierPressed(e)) {
|
|
1345
|
-
if (handleEnter(editor, patternsState.get())) {
|
|
1346
|
-
e.preventDefault();
|
|
1347
|
-
}
|
|
1348
|
-
}
|
|
1349
|
-
}, true);
|
|
1350
|
-
editor.on('keyup', function (e) {
|
|
1351
|
-
if (checkKeyCode(keyCodes, e)) {
|
|
1352
|
-
handleInlineKey(editor, patternsState.get());
|
|
1353
|
-
}
|
|
1354
|
-
});
|
|
1355
|
-
editor.on('keypress', function (e) {
|
|
1356
|
-
if (checkCharCode(charCodes, e)) {
|
|
1357
|
-
global$4.setEditorTimeout(editor, function () {
|
|
1358
|
-
handleInlineKey(editor, patternsState.get());
|
|
1359
|
-
});
|
|
1360
|
-
}
|
|
1361
|
-
});
|
|
1362
|
-
};
|
|
1363
|
-
|
|
1364
|
-
function Plugin () {
|
|
1365
|
-
global$5.add('textpattern', function (editor) {
|
|
1366
|
-
var patternsState = Cell(getPatternSet(editor));
|
|
1367
|
-
setup(editor, patternsState);
|
|
1368
|
-
return get(patternsState);
|
|
1369
|
-
});
|
|
1370
|
-
}
|
|
1371
|
-
|
|
1372
|
-
Plugin();
|
|
1373
|
-
|
|
1374
|
-
}());
|