@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,283 +1,206 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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)
|
|
2
|
+
* TinyMCE version 7.0.1 (2024-04-10)
|
|
8
3
|
*/
|
|
4
|
+
|
|
9
5
|
(function () {
|
|
10
6
|
'use strict';
|
|
11
7
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
const Cell = initial => {
|
|
9
|
+
let value = initial;
|
|
10
|
+
const get = () => {
|
|
15
11
|
return value;
|
|
16
12
|
};
|
|
17
|
-
|
|
13
|
+
const set = v => {
|
|
18
14
|
value = v;
|
|
19
15
|
};
|
|
20
16
|
return {
|
|
21
|
-
get
|
|
22
|
-
set
|
|
17
|
+
get,
|
|
18
|
+
set
|
|
23
19
|
};
|
|
24
20
|
};
|
|
25
21
|
|
|
26
|
-
var global$
|
|
22
|
+
var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
|
27
23
|
|
|
28
|
-
|
|
29
|
-
return {
|
|
30
|
-
isFullscreen: function () {
|
|
31
|
-
return fullscreenState.get() !== null;
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
};
|
|
24
|
+
const get$5 = fullscreenState => ({ isFullscreen: () => fullscreenState.get() !== null });
|
|
35
25
|
|
|
36
|
-
|
|
37
|
-
var
|
|
26
|
+
const hasProto = (v, constructor, predicate) => {
|
|
27
|
+
var _a;
|
|
28
|
+
if (predicate(v, constructor.prototype)) {
|
|
29
|
+
return true;
|
|
30
|
+
} else {
|
|
31
|
+
return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const typeOf = x => {
|
|
35
|
+
const t = typeof x;
|
|
38
36
|
if (x === null) {
|
|
39
37
|
return 'null';
|
|
40
|
-
} else if (t === 'object' &&
|
|
38
|
+
} else if (t === 'object' && Array.isArray(x)) {
|
|
41
39
|
return 'array';
|
|
42
|
-
} else if (t === 'object' && (String
|
|
40
|
+
} else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) {
|
|
43
41
|
return 'string';
|
|
44
42
|
} else {
|
|
45
43
|
return t;
|
|
46
44
|
}
|
|
47
45
|
};
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
var isNullable = function (a) {
|
|
62
|
-
return a === null || a === undefined;
|
|
63
|
-
};
|
|
64
|
-
var isNonNullable = function (a) {
|
|
65
|
-
return !isNullable(a);
|
|
66
|
-
};
|
|
67
|
-
var isFunction = isSimpleType('function');
|
|
68
|
-
var isNumber = isSimpleType('number');
|
|
46
|
+
const isType$1 = type => value => typeOf(value) === type;
|
|
47
|
+
const isSimpleType = type => value => typeof value === type;
|
|
48
|
+
const eq$1 = t => a => t === a;
|
|
49
|
+
const isString = isType$1('string');
|
|
50
|
+
const isObject = isType$1('object');
|
|
51
|
+
const isArray = isType$1('array');
|
|
52
|
+
const isNull = eq$1(null);
|
|
53
|
+
const isBoolean = isSimpleType('boolean');
|
|
54
|
+
const isUndefined = eq$1(undefined);
|
|
55
|
+
const isNullable = a => a === null || a === undefined;
|
|
56
|
+
const isNonNullable = a => !isNullable(a);
|
|
57
|
+
const isFunction = isSimpleType('function');
|
|
58
|
+
const isNumber = isSimpleType('number');
|
|
69
59
|
|
|
70
|
-
|
|
60
|
+
const noop = () => {
|
|
71
61
|
};
|
|
72
|
-
|
|
73
|
-
return
|
|
74
|
-
var args = [];
|
|
75
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
76
|
-
args[_i] = arguments[_i];
|
|
77
|
-
}
|
|
62
|
+
const compose = (fa, fb) => {
|
|
63
|
+
return (...args) => {
|
|
78
64
|
return fa(fb.apply(null, args));
|
|
79
65
|
};
|
|
80
66
|
};
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
};
|
|
85
|
-
};
|
|
86
|
-
var constant = function (value) {
|
|
87
|
-
return function () {
|
|
67
|
+
const compose1 = (fbc, fab) => a => fbc(fab(a));
|
|
68
|
+
const constant = value => {
|
|
69
|
+
return () => {
|
|
88
70
|
return value;
|
|
89
71
|
};
|
|
90
72
|
};
|
|
91
|
-
|
|
92
|
-
return
|
|
93
|
-
|
|
94
|
-
function curry(fn) {
|
|
95
|
-
var initialArgs = [];
|
|
96
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
97
|
-
initialArgs[_i - 1] = arguments[_i];
|
|
98
|
-
}
|
|
99
|
-
return function () {
|
|
100
|
-
var restArgs = [];
|
|
101
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
102
|
-
restArgs[_i] = arguments[_i];
|
|
103
|
-
}
|
|
104
|
-
var all = initialArgs.concat(restArgs);
|
|
73
|
+
function curry(fn, ...initialArgs) {
|
|
74
|
+
return (...restArgs) => {
|
|
75
|
+
const all = initialArgs.concat(restArgs);
|
|
105
76
|
return fn.apply(null, all);
|
|
106
77
|
};
|
|
107
78
|
}
|
|
108
|
-
|
|
109
|
-
|
|
79
|
+
const never = constant(false);
|
|
80
|
+
const always = constant(true);
|
|
110
81
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
getOrDie: function (msg) {
|
|
128
|
-
throw new Error(msg || 'error: getOrDie called on none.');
|
|
129
|
-
},
|
|
130
|
-
getOrNull: constant(null),
|
|
131
|
-
getOrUndefined: constant(undefined),
|
|
132
|
-
or: id,
|
|
133
|
-
orThunk: call,
|
|
134
|
-
map: none,
|
|
135
|
-
each: noop,
|
|
136
|
-
bind: none,
|
|
137
|
-
exists: never,
|
|
138
|
-
forall: always,
|
|
139
|
-
filter: function () {
|
|
140
|
-
return none();
|
|
141
|
-
},
|
|
142
|
-
toArray: function () {
|
|
143
|
-
return [];
|
|
144
|
-
},
|
|
145
|
-
toString: constant('none()')
|
|
146
|
-
};
|
|
147
|
-
return me;
|
|
148
|
-
}();
|
|
149
|
-
var some = function (a) {
|
|
150
|
-
var constant_a = constant(a);
|
|
151
|
-
var self = function () {
|
|
152
|
-
return me;
|
|
153
|
-
};
|
|
154
|
-
var bind = function (f) {
|
|
155
|
-
return f(a);
|
|
156
|
-
};
|
|
157
|
-
var me = {
|
|
158
|
-
fold: function (n, s) {
|
|
159
|
-
return s(a);
|
|
160
|
-
},
|
|
161
|
-
isSome: always,
|
|
162
|
-
isNone: never,
|
|
163
|
-
getOr: constant_a,
|
|
164
|
-
getOrThunk: constant_a,
|
|
165
|
-
getOrDie: constant_a,
|
|
166
|
-
getOrNull: constant_a,
|
|
167
|
-
getOrUndefined: constant_a,
|
|
168
|
-
or: self,
|
|
169
|
-
orThunk: self,
|
|
170
|
-
map: function (f) {
|
|
171
|
-
return some(f(a));
|
|
172
|
-
},
|
|
173
|
-
each: function (f) {
|
|
174
|
-
f(a);
|
|
175
|
-
},
|
|
176
|
-
bind: bind,
|
|
177
|
-
exists: bind,
|
|
178
|
-
forall: bind,
|
|
179
|
-
filter: function (f) {
|
|
180
|
-
return f(a) ? me : NONE;
|
|
181
|
-
},
|
|
182
|
-
toArray: function () {
|
|
183
|
-
return [a];
|
|
184
|
-
},
|
|
185
|
-
toString: function () {
|
|
186
|
-
return 'some(' + a + ')';
|
|
82
|
+
class Optional {
|
|
83
|
+
constructor(tag, value) {
|
|
84
|
+
this.tag = tag;
|
|
85
|
+
this.value = value;
|
|
86
|
+
}
|
|
87
|
+
static some(value) {
|
|
88
|
+
return new Optional(true, value);
|
|
89
|
+
}
|
|
90
|
+
static none() {
|
|
91
|
+
return Optional.singletonNone;
|
|
92
|
+
}
|
|
93
|
+
fold(onNone, onSome) {
|
|
94
|
+
if (this.tag) {
|
|
95
|
+
return onSome(this.value);
|
|
96
|
+
} else {
|
|
97
|
+
return onNone();
|
|
187
98
|
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
var __assign = function () {
|
|
201
|
-
__assign = Object.assign || function __assign(t) {
|
|
202
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
203
|
-
s = arguments[i];
|
|
204
|
-
for (var p in s)
|
|
205
|
-
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
206
|
-
t[p] = s[p];
|
|
99
|
+
}
|
|
100
|
+
isSome() {
|
|
101
|
+
return this.tag;
|
|
102
|
+
}
|
|
103
|
+
isNone() {
|
|
104
|
+
return !this.tag;
|
|
105
|
+
}
|
|
106
|
+
map(mapper) {
|
|
107
|
+
if (this.tag) {
|
|
108
|
+
return Optional.some(mapper(this.value));
|
|
109
|
+
} else {
|
|
110
|
+
return Optional.none();
|
|
207
111
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
112
|
+
}
|
|
113
|
+
bind(binder) {
|
|
114
|
+
if (this.tag) {
|
|
115
|
+
return binder(this.value);
|
|
116
|
+
} else {
|
|
117
|
+
return Optional.none();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exists(predicate) {
|
|
121
|
+
return this.tag && predicate(this.value);
|
|
122
|
+
}
|
|
123
|
+
forall(predicate) {
|
|
124
|
+
return !this.tag || predicate(this.value);
|
|
125
|
+
}
|
|
126
|
+
filter(predicate) {
|
|
127
|
+
if (!this.tag || predicate(this.value)) {
|
|
128
|
+
return this;
|
|
129
|
+
} else {
|
|
130
|
+
return Optional.none();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
getOr(replacement) {
|
|
134
|
+
return this.tag ? this.value : replacement;
|
|
135
|
+
}
|
|
136
|
+
or(replacement) {
|
|
137
|
+
return this.tag ? this : replacement;
|
|
138
|
+
}
|
|
139
|
+
getOrThunk(thunk) {
|
|
140
|
+
return this.tag ? this.value : thunk();
|
|
141
|
+
}
|
|
142
|
+
orThunk(thunk) {
|
|
143
|
+
return this.tag ? this : thunk();
|
|
144
|
+
}
|
|
145
|
+
getOrDie(message) {
|
|
146
|
+
if (!this.tag) {
|
|
147
|
+
throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');
|
|
148
|
+
} else {
|
|
149
|
+
return this.value;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
static from(value) {
|
|
153
|
+
return isNonNullable(value) ? Optional.some(value) : Optional.none();
|
|
154
|
+
}
|
|
155
|
+
getOrNull() {
|
|
156
|
+
return this.tag ? this.value : null;
|
|
157
|
+
}
|
|
158
|
+
getOrUndefined() {
|
|
159
|
+
return this.value;
|
|
160
|
+
}
|
|
161
|
+
each(worker) {
|
|
162
|
+
if (this.tag) {
|
|
163
|
+
worker(this.value);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
toArray() {
|
|
167
|
+
return this.tag ? [this.value] : [];
|
|
168
|
+
}
|
|
169
|
+
toString() {
|
|
170
|
+
return this.tag ? `some(${ this.value })` : 'none()';
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
Optional.singletonNone = new Optional(false);
|
|
251
174
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
for (
|
|
257
|
-
|
|
175
|
+
const nativePush = Array.prototype.push;
|
|
176
|
+
const map = (xs, f) => {
|
|
177
|
+
const len = xs.length;
|
|
178
|
+
const r = new Array(len);
|
|
179
|
+
for (let i = 0; i < len; i++) {
|
|
180
|
+
const x = xs[i];
|
|
258
181
|
r[i] = f(x, i);
|
|
259
182
|
}
|
|
260
183
|
return r;
|
|
261
184
|
};
|
|
262
|
-
|
|
263
|
-
for (
|
|
264
|
-
|
|
185
|
+
const each$1 = (xs, f) => {
|
|
186
|
+
for (let i = 0, len = xs.length; i < len; i++) {
|
|
187
|
+
const x = xs[i];
|
|
265
188
|
f(x, i);
|
|
266
189
|
}
|
|
267
190
|
};
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
for (
|
|
271
|
-
|
|
191
|
+
const filter$1 = (xs, pred) => {
|
|
192
|
+
const r = [];
|
|
193
|
+
for (let i = 0, len = xs.length; i < len; i++) {
|
|
194
|
+
const x = xs[i];
|
|
272
195
|
if (pred(x, i)) {
|
|
273
196
|
r.push(x);
|
|
274
197
|
}
|
|
275
198
|
}
|
|
276
199
|
return r;
|
|
277
200
|
};
|
|
278
|
-
|
|
279
|
-
for (
|
|
280
|
-
|
|
201
|
+
const findUntil = (xs, pred, until) => {
|
|
202
|
+
for (let i = 0, len = xs.length; i < len; i++) {
|
|
203
|
+
const x = xs[i];
|
|
281
204
|
if (pred(x, i)) {
|
|
282
205
|
return Optional.some(x);
|
|
283
206
|
} else if (until(x, i)) {
|
|
@@ -286,12 +209,12 @@
|
|
|
286
209
|
}
|
|
287
210
|
return Optional.none();
|
|
288
211
|
};
|
|
289
|
-
|
|
212
|
+
const find$1 = (xs, pred) => {
|
|
290
213
|
return findUntil(xs, pred, never);
|
|
291
214
|
};
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
for (
|
|
215
|
+
const flatten = xs => {
|
|
216
|
+
const r = [];
|
|
217
|
+
for (let i = 0, len = xs.length; i < len; ++i) {
|
|
295
218
|
if (!isArray(xs[i])) {
|
|
296
219
|
throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);
|
|
297
220
|
}
|
|
@@ -299,18 +222,12 @@
|
|
|
299
222
|
}
|
|
300
223
|
return r;
|
|
301
224
|
};
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
var head = function (xs) {
|
|
309
|
-
return get$4(xs, 0);
|
|
310
|
-
};
|
|
311
|
-
var findMap = function (arr, f) {
|
|
312
|
-
for (var i = 0; i < arr.length; i++) {
|
|
313
|
-
var r = f(arr[i], i);
|
|
225
|
+
const bind$3 = (xs, f) => flatten(map(xs, f));
|
|
226
|
+
const get$4 = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();
|
|
227
|
+
const head = xs => get$4(xs, 0);
|
|
228
|
+
const findMap = (arr, f) => {
|
|
229
|
+
for (let i = 0; i < arr.length; i++) {
|
|
230
|
+
const r = f(arr[i], i);
|
|
314
231
|
if (r.isSome()) {
|
|
315
232
|
return r;
|
|
316
233
|
}
|
|
@@ -318,89 +235,346 @@
|
|
|
318
235
|
return Optional.none();
|
|
319
236
|
};
|
|
320
237
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
238
|
+
const lift2 = (oa, ob, f) => oa.isSome() && ob.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie())) : Optional.none();
|
|
239
|
+
|
|
240
|
+
const singleton = doRevoke => {
|
|
241
|
+
const subject = Cell(Optional.none());
|
|
242
|
+
const revoke = () => subject.get().each(doRevoke);
|
|
243
|
+
const clear = () => {
|
|
244
|
+
revoke();
|
|
245
|
+
subject.set(Optional.none());
|
|
246
|
+
};
|
|
247
|
+
const isSet = () => subject.get().isSome();
|
|
248
|
+
const get = () => subject.get();
|
|
249
|
+
const set = s => {
|
|
250
|
+
revoke();
|
|
251
|
+
subject.set(Optional.some(s));
|
|
252
|
+
};
|
|
253
|
+
return {
|
|
254
|
+
clear,
|
|
255
|
+
isSet,
|
|
256
|
+
get,
|
|
257
|
+
set
|
|
258
|
+
};
|
|
259
|
+
};
|
|
260
|
+
const unbindable = () => singleton(s => s.unbind());
|
|
261
|
+
const value = () => {
|
|
262
|
+
const subject = singleton(noop);
|
|
263
|
+
const on = f => subject.get().each(f);
|
|
264
|
+
return {
|
|
265
|
+
...subject,
|
|
266
|
+
on
|
|
267
|
+
};
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
const first = (fn, rate) => {
|
|
271
|
+
let timer = null;
|
|
272
|
+
const cancel = () => {
|
|
273
|
+
if (!isNull(timer)) {
|
|
274
|
+
clearTimeout(timer);
|
|
275
|
+
timer = null;
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
const throttle = (...args) => {
|
|
279
|
+
if (isNull(timer)) {
|
|
280
|
+
timer = setTimeout(() => {
|
|
281
|
+
timer = null;
|
|
282
|
+
fn.apply(null, args);
|
|
283
|
+
}, rate);
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
return {
|
|
287
|
+
cancel,
|
|
288
|
+
throttle
|
|
289
|
+
};
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
const keys = Object.keys;
|
|
293
|
+
const each = (obj, f) => {
|
|
294
|
+
const props = keys(obj);
|
|
295
|
+
for (let k = 0, len = props.length; k < len; k++) {
|
|
296
|
+
const i = props[k];
|
|
297
|
+
const x = obj[i];
|
|
327
298
|
f(x, i);
|
|
328
299
|
}
|
|
329
300
|
};
|
|
330
301
|
|
|
331
|
-
|
|
332
|
-
|
|
302
|
+
const Global = typeof window !== 'undefined' ? window : Function('return this;')();
|
|
303
|
+
|
|
304
|
+
const path = (parts, scope) => {
|
|
305
|
+
let o = scope !== undefined && scope !== null ? scope : Global;
|
|
306
|
+
for (let i = 0; i < parts.length && o !== undefined && o !== null; ++i) {
|
|
307
|
+
o = o[parts[i]];
|
|
308
|
+
}
|
|
309
|
+
return o;
|
|
310
|
+
};
|
|
311
|
+
const resolve = (p, scope) => {
|
|
312
|
+
const parts = p.split('.');
|
|
313
|
+
return path(parts, scope);
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
const unsafe = (name, scope) => {
|
|
317
|
+
return resolve(name, scope);
|
|
318
|
+
};
|
|
319
|
+
const getOrDie = (name, scope) => {
|
|
320
|
+
const actual = unsafe(name, scope);
|
|
321
|
+
if (actual === undefined || actual === null) {
|
|
322
|
+
throw new Error(name + ' not available on this browser');
|
|
323
|
+
}
|
|
324
|
+
return actual;
|
|
333
325
|
};
|
|
334
326
|
|
|
335
|
-
|
|
336
|
-
|
|
327
|
+
const getPrototypeOf = Object.getPrototypeOf;
|
|
328
|
+
const sandHTMLElement = scope => {
|
|
329
|
+
return getOrDie('HTMLElement', scope);
|
|
330
|
+
};
|
|
331
|
+
const isPrototypeOf = x => {
|
|
332
|
+
const scope = resolve('ownerDocument.defaultView', x);
|
|
333
|
+
return isObject(x) && (sandHTMLElement(scope).prototype.isPrototypeOf(x) || /^HTML\w*Element$/.test(getPrototypeOf(x).constructor.name));
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
const DOCUMENT = 9;
|
|
337
|
+
const DOCUMENT_FRAGMENT = 11;
|
|
338
|
+
const ELEMENT = 1;
|
|
339
|
+
const TEXT = 3;
|
|
340
|
+
|
|
341
|
+
const type = element => element.dom.nodeType;
|
|
342
|
+
const isType = t => element => type(element) === t;
|
|
343
|
+
const isHTMLElement = element => isElement(element) && isPrototypeOf(element.dom);
|
|
344
|
+
const isElement = isType(ELEMENT);
|
|
345
|
+
const isText = isType(TEXT);
|
|
346
|
+
const isDocument = isType(DOCUMENT);
|
|
347
|
+
const isDocumentFragment = isType(DOCUMENT_FRAGMENT);
|
|
348
|
+
|
|
349
|
+
const rawSet = (dom, key, value) => {
|
|
350
|
+
if (isString(value) || isBoolean(value) || isNumber(value)) {
|
|
351
|
+
dom.setAttribute(key, value + '');
|
|
352
|
+
} else {
|
|
353
|
+
console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);
|
|
354
|
+
throw new Error('Attribute value was not simple');
|
|
355
|
+
}
|
|
356
|
+
};
|
|
357
|
+
const set$1 = (element, key, value) => {
|
|
358
|
+
rawSet(element.dom, key, value);
|
|
359
|
+
};
|
|
360
|
+
const get$3 = (element, key) => {
|
|
361
|
+
const v = element.dom.getAttribute(key);
|
|
362
|
+
return v === null ? undefined : v;
|
|
363
|
+
};
|
|
364
|
+
const remove = (element, key) => {
|
|
365
|
+
element.dom.removeAttribute(key);
|
|
366
|
+
};
|
|
367
|
+
|
|
368
|
+
const supports = element => element.dom.classList !== undefined;
|
|
369
|
+
|
|
370
|
+
const has = (element, clazz) => supports(element) && element.dom.classList.contains(clazz);
|
|
371
|
+
|
|
372
|
+
const contains = (str, substr, start = 0, end) => {
|
|
373
|
+
const idx = str.indexOf(substr, start);
|
|
374
|
+
if (idx !== -1) {
|
|
375
|
+
return isUndefined(end) ? true : idx + substr.length <= end;
|
|
376
|
+
} else {
|
|
377
|
+
return false;
|
|
378
|
+
}
|
|
337
379
|
};
|
|
338
380
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
381
|
+
const isSupported$1 = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);
|
|
382
|
+
|
|
383
|
+
const fromHtml = (html, scope) => {
|
|
384
|
+
const doc = scope || document;
|
|
385
|
+
const div = doc.createElement('div');
|
|
342
386
|
div.innerHTML = html;
|
|
343
387
|
if (!div.hasChildNodes() || div.childNodes.length > 1) {
|
|
344
|
-
|
|
345
|
-
|
|
388
|
+
const message = 'HTML does not have a single root node';
|
|
389
|
+
console.error(message, html);
|
|
390
|
+
throw new Error(message);
|
|
346
391
|
}
|
|
347
392
|
return fromDom(div.childNodes[0]);
|
|
348
393
|
};
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
394
|
+
const fromTag = (tag, scope) => {
|
|
395
|
+
const doc = scope || document;
|
|
396
|
+
const node = doc.createElement(tag);
|
|
352
397
|
return fromDom(node);
|
|
353
398
|
};
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
399
|
+
const fromText = (text, scope) => {
|
|
400
|
+
const doc = scope || document;
|
|
401
|
+
const node = doc.createTextNode(text);
|
|
357
402
|
return fromDom(node);
|
|
358
403
|
};
|
|
359
|
-
|
|
404
|
+
const fromDom = node => {
|
|
360
405
|
if (node === null || node === undefined) {
|
|
361
406
|
throw new Error('Node cannot be null or undefined');
|
|
362
407
|
}
|
|
363
408
|
return { dom: node };
|
|
364
409
|
};
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
fromDom: fromDom,
|
|
373
|
-
fromPoint: fromPoint
|
|
410
|
+
const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom);
|
|
411
|
+
const SugarElement = {
|
|
412
|
+
fromHtml,
|
|
413
|
+
fromTag,
|
|
414
|
+
fromText,
|
|
415
|
+
fromDom,
|
|
416
|
+
fromPoint
|
|
374
417
|
};
|
|
375
418
|
|
|
376
|
-
|
|
419
|
+
const is = (element, selector) => {
|
|
420
|
+
const dom = element.dom;
|
|
421
|
+
if (dom.nodeType !== ELEMENT) {
|
|
422
|
+
return false;
|
|
423
|
+
} else {
|
|
424
|
+
const elem = dom;
|
|
425
|
+
if (elem.matches !== undefined) {
|
|
426
|
+
return elem.matches(selector);
|
|
427
|
+
} else if (elem.msMatchesSelector !== undefined) {
|
|
428
|
+
return elem.msMatchesSelector(selector);
|
|
429
|
+
} else if (elem.webkitMatchesSelector !== undefined) {
|
|
430
|
+
return elem.webkitMatchesSelector(selector);
|
|
431
|
+
} else if (elem.mozMatchesSelector !== undefined) {
|
|
432
|
+
return elem.mozMatchesSelector(selector);
|
|
433
|
+
} else {
|
|
434
|
+
throw new Error('Browser lacks native selectors');
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
};
|
|
438
|
+
const bypassSelector = dom => dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0;
|
|
439
|
+
const all$1 = (selector, scope) => {
|
|
440
|
+
const base = scope === undefined ? document : scope.dom;
|
|
441
|
+
return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), SugarElement.fromDom);
|
|
442
|
+
};
|
|
377
443
|
|
|
378
|
-
|
|
379
|
-
var DOCUMENT_FRAGMENT = 11;
|
|
380
|
-
var ELEMENT = 1;
|
|
381
|
-
var TEXT = 3;
|
|
444
|
+
const eq = (e1, e2) => e1.dom === e2.dom;
|
|
382
445
|
|
|
383
|
-
|
|
384
|
-
|
|
446
|
+
const owner = element => SugarElement.fromDom(element.dom.ownerDocument);
|
|
447
|
+
const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);
|
|
448
|
+
const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);
|
|
449
|
+
const parents = (element, isRoot) => {
|
|
450
|
+
const stop = isFunction(isRoot) ? isRoot : never;
|
|
451
|
+
let dom = element.dom;
|
|
452
|
+
const ret = [];
|
|
453
|
+
while (dom.parentNode !== null && dom.parentNode !== undefined) {
|
|
454
|
+
const rawParent = dom.parentNode;
|
|
455
|
+
const p = SugarElement.fromDom(rawParent);
|
|
456
|
+
ret.push(p);
|
|
457
|
+
if (stop(p) === true) {
|
|
458
|
+
break;
|
|
459
|
+
} else {
|
|
460
|
+
dom = rawParent;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
return ret;
|
|
385
464
|
};
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
};
|
|
465
|
+
const siblings$2 = element => {
|
|
466
|
+
const filterSelf = elements => filter$1(elements, x => !eq(element, x));
|
|
467
|
+
return parent(element).map(children).map(filterSelf).getOr([]);
|
|
390
468
|
};
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
var isDocument = isType(DOCUMENT);
|
|
394
|
-
var isDocumentFragment = isType(DOCUMENT_FRAGMENT);
|
|
469
|
+
const nextSibling = element => Optional.from(element.dom.nextSibling).map(SugarElement.fromDom);
|
|
470
|
+
const children = element => map(element.dom.childNodes, SugarElement.fromDom);
|
|
395
471
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
472
|
+
const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);
|
|
473
|
+
const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);
|
|
474
|
+
const isSupported = constant(supported);
|
|
475
|
+
const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;
|
|
476
|
+
const getShadowRoot = e => {
|
|
477
|
+
const r = getRootNode(e);
|
|
478
|
+
return isShadowRoot(r) ? Optional.some(r) : Optional.none();
|
|
479
|
+
};
|
|
480
|
+
const getShadowHost = e => SugarElement.fromDom(e.dom.host);
|
|
481
|
+
const getOriginalEventTarget = event => {
|
|
482
|
+
if (isSupported() && isNonNullable(event.target)) {
|
|
483
|
+
const el = SugarElement.fromDom(event.target);
|
|
484
|
+
if (isElement(el) && isOpenShadowHost(el)) {
|
|
485
|
+
if (event.composed && event.composedPath) {
|
|
486
|
+
const composedPath = event.composedPath();
|
|
487
|
+
if (composedPath) {
|
|
488
|
+
return head(composedPath);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
403
491
|
}
|
|
492
|
+
}
|
|
493
|
+
return Optional.from(event.target);
|
|
494
|
+
};
|
|
495
|
+
const isOpenShadowHost = element => isNonNullable(element.dom.shadowRoot);
|
|
496
|
+
|
|
497
|
+
const inBody = element => {
|
|
498
|
+
const dom = isText(element) ? element.dom.parentNode : element.dom;
|
|
499
|
+
if (dom === undefined || dom === null || dom.ownerDocument === null) {
|
|
500
|
+
return false;
|
|
501
|
+
}
|
|
502
|
+
const doc = dom.ownerDocument;
|
|
503
|
+
return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost));
|
|
504
|
+
};
|
|
505
|
+
const getBody = doc => {
|
|
506
|
+
const b = doc.dom.body;
|
|
507
|
+
if (b === null || b === undefined) {
|
|
508
|
+
throw new Error('Body is not available yet');
|
|
509
|
+
}
|
|
510
|
+
return SugarElement.fromDom(b);
|
|
511
|
+
};
|
|
512
|
+
|
|
513
|
+
const internalSet = (dom, property, value) => {
|
|
514
|
+
if (!isString(value)) {
|
|
515
|
+
console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);
|
|
516
|
+
throw new Error('CSS value must be a string: ' + value);
|
|
517
|
+
}
|
|
518
|
+
if (isSupported$1(dom)) {
|
|
519
|
+
dom.style.setProperty(property, value);
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
const set = (element, property, value) => {
|
|
523
|
+
const dom = element.dom;
|
|
524
|
+
internalSet(dom, property, value);
|
|
525
|
+
};
|
|
526
|
+
const setAll = (element, css) => {
|
|
527
|
+
const dom = element.dom;
|
|
528
|
+
each(css, (v, k) => {
|
|
529
|
+
internalSet(dom, k, v);
|
|
530
|
+
});
|
|
531
|
+
};
|
|
532
|
+
const get$2 = (element, property) => {
|
|
533
|
+
const dom = element.dom;
|
|
534
|
+
const styles = window.getComputedStyle(dom);
|
|
535
|
+
const r = styles.getPropertyValue(property);
|
|
536
|
+
return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;
|
|
537
|
+
};
|
|
538
|
+
const getUnsafeProperty = (dom, property) => isSupported$1(dom) ? dom.style.getPropertyValue(property) : '';
|
|
539
|
+
|
|
540
|
+
const mkEvent = (target, x, y, stop, prevent, kill, raw) => ({
|
|
541
|
+
target,
|
|
542
|
+
x,
|
|
543
|
+
y,
|
|
544
|
+
stop,
|
|
545
|
+
prevent,
|
|
546
|
+
kill,
|
|
547
|
+
raw
|
|
548
|
+
});
|
|
549
|
+
const fromRawEvent = rawEvent => {
|
|
550
|
+
const target = SugarElement.fromDom(getOriginalEventTarget(rawEvent).getOr(rawEvent.target));
|
|
551
|
+
const stop = () => rawEvent.stopPropagation();
|
|
552
|
+
const prevent = () => rawEvent.preventDefault();
|
|
553
|
+
const kill = compose(prevent, stop);
|
|
554
|
+
return mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent);
|
|
555
|
+
};
|
|
556
|
+
const handle = (filter, handler) => rawEvent => {
|
|
557
|
+
if (filter(rawEvent)) {
|
|
558
|
+
handler(fromRawEvent(rawEvent));
|
|
559
|
+
}
|
|
560
|
+
};
|
|
561
|
+
const binder = (element, event, filter, handler, useCapture) => {
|
|
562
|
+
const wrapped = handle(filter, handler);
|
|
563
|
+
element.dom.addEventListener(event, wrapped, useCapture);
|
|
564
|
+
return { unbind: curry(unbind, element, event, wrapped, useCapture) };
|
|
565
|
+
};
|
|
566
|
+
const bind$2 = (element, event, filter, handler) => binder(element, event, filter, handler, false);
|
|
567
|
+
const unbind = (element, event, handler, useCapture) => {
|
|
568
|
+
element.dom.removeEventListener(event, handler, useCapture);
|
|
569
|
+
};
|
|
570
|
+
|
|
571
|
+
const filter = always;
|
|
572
|
+
const bind$1 = (element, event, handler) => bind$2(element, event, filter, handler);
|
|
573
|
+
|
|
574
|
+
const cached = f => {
|
|
575
|
+
let called = false;
|
|
576
|
+
let r;
|
|
577
|
+
return (...args) => {
|
|
404
578
|
if (!called) {
|
|
405
579
|
called = true;
|
|
406
580
|
r = f.apply(null, args);
|
|
@@ -409,15 +583,15 @@
|
|
|
409
583
|
};
|
|
410
584
|
};
|
|
411
585
|
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
586
|
+
const DeviceType = (os, browser, userAgent, mediaMatch) => {
|
|
587
|
+
const isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;
|
|
588
|
+
const isiPhone = os.isiOS() && !isiPad;
|
|
589
|
+
const isMobile = os.isiOS() || os.isAndroid();
|
|
590
|
+
const isTouch = isMobile || mediaMatch('(pointer:coarse)');
|
|
591
|
+
const isTablet = isiPad || !isiPhone && isMobile && mediaMatch('(min-device-width:768px)');
|
|
592
|
+
const isPhone = isiPhone || isMobile && !isTablet;
|
|
593
|
+
const iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;
|
|
594
|
+
const isDesktop = !isPhone && !isTablet && !iOSwebview;
|
|
421
595
|
return {
|
|
422
596
|
isiPad: constant(isiPad),
|
|
423
597
|
isiPhone: constant(isiPhone),
|
|
@@ -431,112 +605,110 @@
|
|
|
431
605
|
};
|
|
432
606
|
};
|
|
433
607
|
|
|
434
|
-
|
|
435
|
-
for (
|
|
436
|
-
|
|
608
|
+
const firstMatch = (regexes, s) => {
|
|
609
|
+
for (let i = 0; i < regexes.length; i++) {
|
|
610
|
+
const x = regexes[i];
|
|
437
611
|
if (x.test(s)) {
|
|
438
612
|
return x;
|
|
439
613
|
}
|
|
440
614
|
}
|
|
441
615
|
return undefined;
|
|
442
616
|
};
|
|
443
|
-
|
|
444
|
-
|
|
617
|
+
const find = (regexes, agent) => {
|
|
618
|
+
const r = firstMatch(regexes, agent);
|
|
445
619
|
if (!r) {
|
|
446
620
|
return {
|
|
447
621
|
major: 0,
|
|
448
622
|
minor: 0
|
|
449
623
|
};
|
|
450
624
|
}
|
|
451
|
-
|
|
625
|
+
const group = i => {
|
|
452
626
|
return Number(agent.replace(r, '$' + i));
|
|
453
627
|
};
|
|
454
628
|
return nu$2(group(1), group(2));
|
|
455
629
|
};
|
|
456
|
-
|
|
457
|
-
|
|
630
|
+
const detect$3 = (versionRegexes, agent) => {
|
|
631
|
+
const cleanedAgent = String(agent).toLowerCase();
|
|
458
632
|
if (versionRegexes.length === 0) {
|
|
459
633
|
return unknown$2();
|
|
460
634
|
}
|
|
461
635
|
return find(versionRegexes, cleanedAgent);
|
|
462
636
|
};
|
|
463
|
-
|
|
637
|
+
const unknown$2 = () => {
|
|
464
638
|
return nu$2(0, 0);
|
|
465
639
|
};
|
|
466
|
-
|
|
640
|
+
const nu$2 = (major, minor) => {
|
|
467
641
|
return {
|
|
468
|
-
major
|
|
469
|
-
minor
|
|
642
|
+
major,
|
|
643
|
+
minor
|
|
470
644
|
};
|
|
471
645
|
};
|
|
472
|
-
|
|
646
|
+
const Version = {
|
|
473
647
|
nu: nu$2,
|
|
474
648
|
detect: detect$3,
|
|
475
649
|
unknown: unknown$2
|
|
476
650
|
};
|
|
477
651
|
|
|
478
|
-
|
|
479
|
-
return findMap(userAgentData.brands,
|
|
480
|
-
|
|
481
|
-
return find$1(browsers,
|
|
652
|
+
const detectBrowser$1 = (browsers, userAgentData) => {
|
|
653
|
+
return findMap(userAgentData.brands, uaBrand => {
|
|
654
|
+
const lcBrand = uaBrand.brand.toLowerCase();
|
|
655
|
+
return find$1(browsers, browser => {
|
|
482
656
|
var _a;
|
|
483
657
|
return lcBrand === ((_a = browser.brand) === null || _a === void 0 ? void 0 : _a.toLowerCase());
|
|
484
|
-
}).map(
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
};
|
|
489
|
-
});
|
|
658
|
+
}).map(info => ({
|
|
659
|
+
current: info.name,
|
|
660
|
+
version: Version.nu(parseInt(uaBrand.version, 10), 0)
|
|
661
|
+
}));
|
|
490
662
|
});
|
|
491
663
|
};
|
|
492
664
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
return find$1(candidates,
|
|
665
|
+
const detect$2 = (candidates, userAgent) => {
|
|
666
|
+
const agent = String(userAgent).toLowerCase();
|
|
667
|
+
return find$1(candidates, candidate => {
|
|
496
668
|
return candidate.search(agent);
|
|
497
669
|
});
|
|
498
670
|
};
|
|
499
|
-
|
|
500
|
-
return detect$2(browsers, userAgent).map(
|
|
501
|
-
|
|
671
|
+
const detectBrowser = (browsers, userAgent) => {
|
|
672
|
+
return detect$2(browsers, userAgent).map(browser => {
|
|
673
|
+
const version = Version.detect(browser.versionRegexes, userAgent);
|
|
502
674
|
return {
|
|
503
675
|
current: browser.name,
|
|
504
|
-
version
|
|
676
|
+
version
|
|
505
677
|
};
|
|
506
678
|
});
|
|
507
679
|
};
|
|
508
|
-
|
|
509
|
-
return detect$2(oses, userAgent).map(
|
|
510
|
-
|
|
680
|
+
const detectOs = (oses, userAgent) => {
|
|
681
|
+
return detect$2(oses, userAgent).map(os => {
|
|
682
|
+
const version = Version.detect(os.versionRegexes, userAgent);
|
|
511
683
|
return {
|
|
512
684
|
current: os.name,
|
|
513
|
-
version
|
|
685
|
+
version
|
|
514
686
|
};
|
|
515
687
|
});
|
|
516
688
|
};
|
|
517
689
|
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
return
|
|
690
|
+
const normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
|
|
691
|
+
const checkContains = target => {
|
|
692
|
+
return uastring => {
|
|
521
693
|
return contains(uastring, target);
|
|
522
694
|
};
|
|
523
695
|
};
|
|
524
|
-
|
|
696
|
+
const browsers = [
|
|
525
697
|
{
|
|
526
698
|
name: 'Edge',
|
|
527
699
|
versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
|
|
528
|
-
search:
|
|
700
|
+
search: uastring => {
|
|
529
701
|
return contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit');
|
|
530
702
|
}
|
|
531
703
|
},
|
|
532
704
|
{
|
|
533
|
-
name: '
|
|
705
|
+
name: 'Chromium',
|
|
534
706
|
brand: 'Chromium',
|
|
535
707
|
versionRegexes: [
|
|
536
708
|
/.*?chrome\/([0-9]+)\.([0-9]+).*/,
|
|
537
709
|
normalVersionRegex
|
|
538
710
|
],
|
|
539
|
-
search:
|
|
711
|
+
search: uastring => {
|
|
540
712
|
return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe');
|
|
541
713
|
}
|
|
542
714
|
},
|
|
@@ -546,7 +718,7 @@
|
|
|
546
718
|
/.*?msie\ ?([0-9]+)\.([0-9]+).*/,
|
|
547
719
|
/.*?rv:([0-9]+)\.([0-9]+).*/
|
|
548
720
|
],
|
|
549
|
-
search:
|
|
721
|
+
search: uastring => {
|
|
550
722
|
return contains(uastring, 'msie') || contains(uastring, 'trident');
|
|
551
723
|
}
|
|
552
724
|
},
|
|
@@ -569,12 +741,12 @@
|
|
|
569
741
|
normalVersionRegex,
|
|
570
742
|
/.*?cpu os ([0-9]+)_([0-9]+).*/
|
|
571
743
|
],
|
|
572
|
-
search:
|
|
744
|
+
search: uastring => {
|
|
573
745
|
return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit');
|
|
574
746
|
}
|
|
575
747
|
}
|
|
576
748
|
];
|
|
577
|
-
|
|
749
|
+
const oses = [
|
|
578
750
|
{
|
|
579
751
|
name: 'Windows',
|
|
580
752
|
search: checkContains('win'),
|
|
@@ -582,7 +754,7 @@
|
|
|
582
754
|
},
|
|
583
755
|
{
|
|
584
756
|
name: 'iOS',
|
|
585
|
-
search:
|
|
757
|
+
search: uastring => {
|
|
586
758
|
return contains(uastring, 'iphone') || contains(uastring, 'ipad');
|
|
587
759
|
},
|
|
588
760
|
versionRegexes: [
|
|
@@ -597,7 +769,7 @@
|
|
|
597
769
|
versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
|
|
598
770
|
},
|
|
599
771
|
{
|
|
600
|
-
name: '
|
|
772
|
+
name: 'macOS',
|
|
601
773
|
search: checkContains('mac os x'),
|
|
602
774
|
versionRegexes: [/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]
|
|
603
775
|
},
|
|
@@ -622,426 +794,185 @@
|
|
|
622
794
|
versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/]
|
|
623
795
|
}
|
|
624
796
|
];
|
|
625
|
-
|
|
797
|
+
const PlatformInfo = {
|
|
626
798
|
browsers: constant(browsers),
|
|
627
799
|
oses: constant(oses)
|
|
628
800
|
};
|
|
629
801
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
802
|
+
const edge = 'Edge';
|
|
803
|
+
const chromium = 'Chromium';
|
|
804
|
+
const ie = 'IE';
|
|
805
|
+
const opera = 'Opera';
|
|
806
|
+
const firefox = 'Firefox';
|
|
807
|
+
const safari = 'Safari';
|
|
808
|
+
const unknown$1 = () => {
|
|
637
809
|
return nu$1({
|
|
638
810
|
current: undefined,
|
|
639
811
|
version: Version.unknown()
|
|
640
812
|
});
|
|
641
813
|
};
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
return function () {
|
|
647
|
-
return current === name;
|
|
648
|
-
};
|
|
649
|
-
};
|
|
814
|
+
const nu$1 = info => {
|
|
815
|
+
const current = info.current;
|
|
816
|
+
const version = info.version;
|
|
817
|
+
const isBrowser = name => () => current === name;
|
|
650
818
|
return {
|
|
651
|
-
current
|
|
652
|
-
version
|
|
819
|
+
current,
|
|
820
|
+
version,
|
|
653
821
|
isEdge: isBrowser(edge),
|
|
654
|
-
|
|
822
|
+
isChromium: isBrowser(chromium),
|
|
655
823
|
isIE: isBrowser(ie),
|
|
656
824
|
isOpera: isBrowser(opera),
|
|
657
825
|
isFirefox: isBrowser(firefox),
|
|
658
826
|
isSafari: isBrowser(safari)
|
|
659
827
|
};
|
|
660
828
|
};
|
|
661
|
-
|
|
829
|
+
const Browser = {
|
|
662
830
|
unknown: unknown$1,
|
|
663
831
|
nu: nu$1,
|
|
664
832
|
edge: constant(edge),
|
|
665
|
-
|
|
833
|
+
chromium: constant(chromium),
|
|
666
834
|
ie: constant(ie),
|
|
667
835
|
opera: constant(opera),
|
|
668
836
|
firefox: constant(firefox),
|
|
669
837
|
safari: constant(safari)
|
|
670
838
|
};
|
|
671
839
|
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
840
|
+
const windows = 'Windows';
|
|
841
|
+
const ios = 'iOS';
|
|
842
|
+
const android = 'Android';
|
|
843
|
+
const linux = 'Linux';
|
|
844
|
+
const macos = 'macOS';
|
|
845
|
+
const solaris = 'Solaris';
|
|
846
|
+
const freebsd = 'FreeBSD';
|
|
847
|
+
const chromeos = 'ChromeOS';
|
|
848
|
+
const unknown = () => {
|
|
681
849
|
return nu({
|
|
682
850
|
current: undefined,
|
|
683
851
|
version: Version.unknown()
|
|
684
852
|
});
|
|
685
853
|
};
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
return function () {
|
|
691
|
-
return current === name;
|
|
692
|
-
};
|
|
693
|
-
};
|
|
854
|
+
const nu = info => {
|
|
855
|
+
const current = info.current;
|
|
856
|
+
const version = info.version;
|
|
857
|
+
const isOS = name => () => current === name;
|
|
694
858
|
return {
|
|
695
|
-
current
|
|
696
|
-
version
|
|
859
|
+
current,
|
|
860
|
+
version,
|
|
697
861
|
isWindows: isOS(windows),
|
|
698
862
|
isiOS: isOS(ios),
|
|
699
863
|
isAndroid: isOS(android),
|
|
700
|
-
|
|
864
|
+
isMacOS: isOS(macos),
|
|
701
865
|
isLinux: isOS(linux),
|
|
702
866
|
isSolaris: isOS(solaris),
|
|
703
867
|
isFreeBSD: isOS(freebsd),
|
|
704
868
|
isChromeOS: isOS(chromeos)
|
|
705
869
|
};
|
|
706
870
|
};
|
|
707
|
-
|
|
708
|
-
unknown
|
|
709
|
-
nu
|
|
871
|
+
const OperatingSystem = {
|
|
872
|
+
unknown,
|
|
873
|
+
nu,
|
|
710
874
|
windows: constant(windows),
|
|
711
875
|
ios: constant(ios),
|
|
712
876
|
android: constant(android),
|
|
713
877
|
linux: constant(linux),
|
|
714
|
-
|
|
878
|
+
macos: constant(macos),
|
|
715
879
|
solaris: constant(solaris),
|
|
716
880
|
freebsd: constant(freebsd),
|
|
717
881
|
chromeos: constant(chromeos)
|
|
718
882
|
};
|
|
719
883
|
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
return detectBrowser(browsers, userAgent);
|
|
727
|
-
}).fold(Browser.unknown, Browser.nu);
|
|
728
|
-
var os = detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);
|
|
729
|
-
var deviceType = DeviceType(os, browser, userAgent, mediaMatch);
|
|
730
|
-
return {
|
|
731
|
-
browser: browser,
|
|
732
|
-
os: os,
|
|
733
|
-
deviceType: deviceType
|
|
734
|
-
};
|
|
735
|
-
};
|
|
736
|
-
var PlatformDetection = { detect: detect$1 };
|
|
737
|
-
|
|
738
|
-
var mediaMatch = function (query) {
|
|
739
|
-
return window.matchMedia(query).matches;
|
|
740
|
-
};
|
|
741
|
-
var platform = cached(function () {
|
|
742
|
-
return PlatformDetection.detect(navigator.userAgent, Optional.from(navigator.userAgentData), mediaMatch);
|
|
743
|
-
});
|
|
744
|
-
var detect = function () {
|
|
745
|
-
return platform();
|
|
746
|
-
};
|
|
747
|
-
|
|
748
|
-
var is = function (element, selector) {
|
|
749
|
-
var dom = element.dom;
|
|
750
|
-
if (dom.nodeType !== ELEMENT) {
|
|
751
|
-
return false;
|
|
752
|
-
} else {
|
|
753
|
-
var elem = dom;
|
|
754
|
-
if (elem.matches !== undefined) {
|
|
755
|
-
return elem.matches(selector);
|
|
756
|
-
} else if (elem.msMatchesSelector !== undefined) {
|
|
757
|
-
return elem.msMatchesSelector(selector);
|
|
758
|
-
} else if (elem.webkitMatchesSelector !== undefined) {
|
|
759
|
-
return elem.webkitMatchesSelector(selector);
|
|
760
|
-
} else if (elem.mozMatchesSelector !== undefined) {
|
|
761
|
-
return elem.mozMatchesSelector(selector);
|
|
762
|
-
} else {
|
|
763
|
-
throw new Error('Browser lacks native selectors');
|
|
764
|
-
}
|
|
765
|
-
}
|
|
766
|
-
};
|
|
767
|
-
var bypassSelector = function (dom) {
|
|
768
|
-
return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0;
|
|
769
|
-
};
|
|
770
|
-
var all$1 = function (selector, scope) {
|
|
771
|
-
var base = scope === undefined ? document : scope.dom;
|
|
772
|
-
return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), SugarElement.fromDom);
|
|
773
|
-
};
|
|
774
|
-
|
|
775
|
-
var eq = function (e1, e2) {
|
|
776
|
-
return e1.dom === e2.dom;
|
|
777
|
-
};
|
|
778
|
-
|
|
779
|
-
var owner = function (element) {
|
|
780
|
-
return SugarElement.fromDom(element.dom.ownerDocument);
|
|
781
|
-
};
|
|
782
|
-
var documentOrOwner = function (dos) {
|
|
783
|
-
return isDocument(dos) ? dos : owner(dos);
|
|
784
|
-
};
|
|
785
|
-
var parent = function (element) {
|
|
786
|
-
return Optional.from(element.dom.parentNode).map(SugarElement.fromDom);
|
|
787
|
-
};
|
|
788
|
-
var parents = function (element, isRoot) {
|
|
789
|
-
var stop = isFunction(isRoot) ? isRoot : never;
|
|
790
|
-
var dom = element.dom;
|
|
791
|
-
var ret = [];
|
|
792
|
-
while (dom.parentNode !== null && dom.parentNode !== undefined) {
|
|
793
|
-
var rawParent = dom.parentNode;
|
|
794
|
-
var p = SugarElement.fromDom(rawParent);
|
|
795
|
-
ret.push(p);
|
|
796
|
-
if (stop(p) === true) {
|
|
797
|
-
break;
|
|
798
|
-
} else {
|
|
799
|
-
dom = rawParent;
|
|
800
|
-
}
|
|
801
|
-
}
|
|
802
|
-
return ret;
|
|
803
|
-
};
|
|
804
|
-
var siblings$2 = function (element) {
|
|
805
|
-
var filterSelf = function (elements) {
|
|
806
|
-
return filter$1(elements, function (x) {
|
|
807
|
-
return !eq(element, x);
|
|
808
|
-
});
|
|
809
|
-
};
|
|
810
|
-
return parent(element).map(children).map(filterSelf).getOr([]);
|
|
811
|
-
};
|
|
812
|
-
var children = function (element) {
|
|
813
|
-
return map(element.dom.childNodes, SugarElement.fromDom);
|
|
814
|
-
};
|
|
815
|
-
|
|
816
|
-
var isShadowRoot = function (dos) {
|
|
817
|
-
return isDocumentFragment(dos) && isNonNullable(dos.dom.host);
|
|
818
|
-
};
|
|
819
|
-
var supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);
|
|
820
|
-
var isSupported = constant(supported);
|
|
821
|
-
var getRootNode = supported ? function (e) {
|
|
822
|
-
return SugarElement.fromDom(e.dom.getRootNode());
|
|
823
|
-
} : documentOrOwner;
|
|
824
|
-
var getShadowRoot = function (e) {
|
|
825
|
-
var r = getRootNode(e);
|
|
826
|
-
return isShadowRoot(r) ? Optional.some(r) : Optional.none();
|
|
827
|
-
};
|
|
828
|
-
var getShadowHost = function (e) {
|
|
829
|
-
return SugarElement.fromDom(e.dom.host);
|
|
830
|
-
};
|
|
831
|
-
var getOriginalEventTarget = function (event) {
|
|
832
|
-
if (isSupported() && isNonNullable(event.target)) {
|
|
833
|
-
var el = SugarElement.fromDom(event.target);
|
|
834
|
-
if (isElement(el) && isOpenShadowHost(el)) {
|
|
835
|
-
if (event.composed && event.composedPath) {
|
|
836
|
-
var composedPath = event.composedPath();
|
|
837
|
-
if (composedPath) {
|
|
838
|
-
return head(composedPath);
|
|
839
|
-
}
|
|
840
|
-
}
|
|
841
|
-
}
|
|
842
|
-
}
|
|
843
|
-
return Optional.from(event.target);
|
|
844
|
-
};
|
|
845
|
-
var isOpenShadowHost = function (element) {
|
|
846
|
-
return isNonNullable(element.dom.shadowRoot);
|
|
847
|
-
};
|
|
848
|
-
|
|
849
|
-
var inBody = function (element) {
|
|
850
|
-
var dom = isText(element) ? element.dom.parentNode : element.dom;
|
|
851
|
-
if (dom === undefined || dom === null || dom.ownerDocument === null) {
|
|
852
|
-
return false;
|
|
853
|
-
}
|
|
854
|
-
var doc = dom.ownerDocument;
|
|
855
|
-
return getShadowRoot(SugarElement.fromDom(dom)).fold(function () {
|
|
856
|
-
return doc.body.contains(dom);
|
|
857
|
-
}, compose1(inBody, getShadowHost));
|
|
858
|
-
};
|
|
859
|
-
var getBody = function (doc) {
|
|
860
|
-
var b = doc.dom.body;
|
|
861
|
-
if (b === null || b === undefined) {
|
|
862
|
-
throw new Error('Body is not available yet');
|
|
863
|
-
}
|
|
864
|
-
return SugarElement.fromDom(b);
|
|
865
|
-
};
|
|
866
|
-
|
|
867
|
-
var rawSet = function (dom, key, value) {
|
|
868
|
-
if (isString(value) || isBoolean(value) || isNumber(value)) {
|
|
869
|
-
dom.setAttribute(key, value + '');
|
|
870
|
-
} else {
|
|
871
|
-
console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom);
|
|
872
|
-
throw new Error('Attribute value was not simple');
|
|
873
|
-
}
|
|
874
|
-
};
|
|
875
|
-
var set = function (element, key, value) {
|
|
876
|
-
rawSet(element.dom, key, value);
|
|
877
|
-
};
|
|
878
|
-
var get$3 = function (element, key) {
|
|
879
|
-
var v = element.dom.getAttribute(key);
|
|
880
|
-
return v === null ? undefined : v;
|
|
881
|
-
};
|
|
882
|
-
var remove = function (element, key) {
|
|
883
|
-
element.dom.removeAttribute(key);
|
|
884
|
-
};
|
|
885
|
-
|
|
886
|
-
var internalSet = function (dom, property, value) {
|
|
887
|
-
if (!isString(value)) {
|
|
888
|
-
console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);
|
|
889
|
-
throw new Error('CSS value must be a string: ' + value);
|
|
890
|
-
}
|
|
891
|
-
if (isSupported$1(dom)) {
|
|
892
|
-
dom.style.setProperty(property, value);
|
|
893
|
-
}
|
|
894
|
-
};
|
|
895
|
-
var setAll = function (element, css) {
|
|
896
|
-
var dom = element.dom;
|
|
897
|
-
each(css, function (v, k) {
|
|
898
|
-
internalSet(dom, k, v);
|
|
899
|
-
});
|
|
900
|
-
};
|
|
901
|
-
var get$2 = function (element, property) {
|
|
902
|
-
var dom = element.dom;
|
|
903
|
-
var styles = window.getComputedStyle(dom);
|
|
904
|
-
var r = styles.getPropertyValue(property);
|
|
905
|
-
return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;
|
|
906
|
-
};
|
|
907
|
-
var getUnsafeProperty = function (dom, property) {
|
|
908
|
-
return isSupported$1(dom) ? dom.style.getPropertyValue(property) : '';
|
|
909
|
-
};
|
|
910
|
-
|
|
911
|
-
var mkEvent = function (target, x, y, stop, prevent, kill, raw) {
|
|
884
|
+
const detect$1 = (userAgent, userAgentDataOpt, mediaMatch) => {
|
|
885
|
+
const browsers = PlatformInfo.browsers();
|
|
886
|
+
const oses = PlatformInfo.oses();
|
|
887
|
+
const browser = userAgentDataOpt.bind(userAgentData => detectBrowser$1(browsers, userAgentData)).orThunk(() => detectBrowser(browsers, userAgent)).fold(Browser.unknown, Browser.nu);
|
|
888
|
+
const os = detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);
|
|
889
|
+
const deviceType = DeviceType(os, browser, userAgent, mediaMatch);
|
|
912
890
|
return {
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
stop: stop,
|
|
917
|
-
prevent: prevent,
|
|
918
|
-
kill: kill,
|
|
919
|
-
raw: raw
|
|
920
|
-
};
|
|
921
|
-
};
|
|
922
|
-
var fromRawEvent = function (rawEvent) {
|
|
923
|
-
var target = SugarElement.fromDom(getOriginalEventTarget(rawEvent).getOr(rawEvent.target));
|
|
924
|
-
var stop = function () {
|
|
925
|
-
return rawEvent.stopPropagation();
|
|
926
|
-
};
|
|
927
|
-
var prevent = function () {
|
|
928
|
-
return rawEvent.preventDefault();
|
|
929
|
-
};
|
|
930
|
-
var kill = compose(prevent, stop);
|
|
931
|
-
return mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent);
|
|
932
|
-
};
|
|
933
|
-
var handle = function (filter, handler) {
|
|
934
|
-
return function (rawEvent) {
|
|
935
|
-
if (filter(rawEvent)) {
|
|
936
|
-
handler(fromRawEvent(rawEvent));
|
|
937
|
-
}
|
|
891
|
+
browser,
|
|
892
|
+
os,
|
|
893
|
+
deviceType
|
|
938
894
|
};
|
|
939
895
|
};
|
|
940
|
-
|
|
941
|
-
var wrapped = handle(filter, handler);
|
|
942
|
-
element.dom.addEventListener(event, wrapped, useCapture);
|
|
943
|
-
return { unbind: curry(unbind, element, event, wrapped, useCapture) };
|
|
944
|
-
};
|
|
945
|
-
var bind$2 = function (element, event, filter, handler) {
|
|
946
|
-
return binder(element, event, filter, handler, false);
|
|
947
|
-
};
|
|
948
|
-
var unbind = function (element, event, handler, useCapture) {
|
|
949
|
-
element.dom.removeEventListener(event, handler, useCapture);
|
|
950
|
-
};
|
|
896
|
+
const PlatformDetection = { detect: detect$1 };
|
|
951
897
|
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
};
|
|
898
|
+
const mediaMatch = query => window.matchMedia(query).matches;
|
|
899
|
+
let platform = cached(() => PlatformDetection.detect(navigator.userAgent, Optional.from(navigator.userAgentData), mediaMatch));
|
|
900
|
+
const detect = () => platform();
|
|
956
901
|
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
return r(left + x, top + y);
|
|
960
|
-
};
|
|
902
|
+
const r = (left, top) => {
|
|
903
|
+
const translate = (x, y) => r(left + x, top + y);
|
|
961
904
|
return {
|
|
962
|
-
left
|
|
963
|
-
top
|
|
964
|
-
translate
|
|
905
|
+
left,
|
|
906
|
+
top,
|
|
907
|
+
translate
|
|
965
908
|
};
|
|
966
909
|
};
|
|
967
|
-
|
|
910
|
+
const SugarPosition = r;
|
|
968
911
|
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
912
|
+
const get$1 = _DOC => {
|
|
913
|
+
const doc = _DOC !== undefined ? _DOC.dom : document;
|
|
914
|
+
const x = doc.body.scrollLeft || doc.documentElement.scrollLeft;
|
|
915
|
+
const y = doc.body.scrollTop || doc.documentElement.scrollTop;
|
|
973
916
|
return SugarPosition(x, y);
|
|
974
917
|
};
|
|
975
918
|
|
|
976
|
-
|
|
977
|
-
|
|
919
|
+
const get = _win => {
|
|
920
|
+
const win = _win === undefined ? window : _win;
|
|
978
921
|
if (detect().browser.isFirefox()) {
|
|
979
922
|
return Optional.none();
|
|
980
923
|
} else {
|
|
981
|
-
return Optional.from(win
|
|
924
|
+
return Optional.from(win.visualViewport);
|
|
982
925
|
}
|
|
983
926
|
};
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
var width = html.clientWidth;
|
|
1001
|
-
var height = html.clientHeight;
|
|
927
|
+
const bounds = (x, y, width, height) => ({
|
|
928
|
+
x,
|
|
929
|
+
y,
|
|
930
|
+
width,
|
|
931
|
+
height,
|
|
932
|
+
right: x + width,
|
|
933
|
+
bottom: y + height
|
|
934
|
+
});
|
|
935
|
+
const getBounds = _win => {
|
|
936
|
+
const win = _win === undefined ? window : _win;
|
|
937
|
+
const doc = win.document;
|
|
938
|
+
const scroll = get$1(SugarElement.fromDom(doc));
|
|
939
|
+
return get(win).fold(() => {
|
|
940
|
+
const html = win.document.documentElement;
|
|
941
|
+
const width = html.clientWidth;
|
|
942
|
+
const height = html.clientHeight;
|
|
1002
943
|
return bounds(scroll.left, scroll.top, width, height);
|
|
1003
|
-
},
|
|
1004
|
-
return bounds(Math.max(visualViewport.pageLeft, scroll.left), Math.max(visualViewport.pageTop, scroll.top), visualViewport.width, visualViewport.height);
|
|
1005
|
-
});
|
|
1006
|
-
};
|
|
1007
|
-
var bind = function (name, callback, _win) {
|
|
1008
|
-
return get(_win).map(function (visualViewport) {
|
|
1009
|
-
var handler = function (e) {
|
|
1010
|
-
return callback(fromRawEvent(e));
|
|
1011
|
-
};
|
|
1012
|
-
visualViewport.addEventListener(name, handler);
|
|
1013
|
-
return {
|
|
1014
|
-
unbind: function () {
|
|
1015
|
-
return visualViewport.removeEventListener(name, handler);
|
|
1016
|
-
}
|
|
1017
|
-
};
|
|
1018
|
-
}).getOrThunk(function () {
|
|
1019
|
-
return { unbind: noop };
|
|
1020
|
-
});
|
|
944
|
+
}, visualViewport => bounds(Math.max(visualViewport.pageLeft, scroll.left), Math.max(visualViewport.pageTop, scroll.top), visualViewport.width, visualViewport.height));
|
|
1021
945
|
};
|
|
946
|
+
const bind = (name, callback, _win) => get(_win).map(visualViewport => {
|
|
947
|
+
const handler = e => callback(fromRawEvent(e));
|
|
948
|
+
visualViewport.addEventListener(name, handler);
|
|
949
|
+
return { unbind: () => visualViewport.removeEventListener(name, handler) };
|
|
950
|
+
}).getOrThunk(() => ({ unbind: noop }));
|
|
1022
951
|
|
|
1023
|
-
var global$
|
|
1024
|
-
|
|
1025
|
-
var global$1 = tinymce.util.Tools.resolve('tinymce.Env');
|
|
952
|
+
var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
|
|
1026
953
|
|
|
1027
|
-
var global = tinymce.util.Tools.resolve('tinymce.
|
|
954
|
+
var global = tinymce.util.Tools.resolve('tinymce.Env');
|
|
1028
955
|
|
|
1029
|
-
|
|
1030
|
-
editor.
|
|
1031
|
-
editor.
|
|
956
|
+
const fireFullscreenStateChanged = (editor, state) => {
|
|
957
|
+
editor.dispatch('FullscreenStateChanged', { state });
|
|
958
|
+
editor.dispatch('ResizeEditor');
|
|
1032
959
|
};
|
|
1033
960
|
|
|
1034
|
-
|
|
1035
|
-
|
|
961
|
+
const option = name => editor => editor.options.get(name);
|
|
962
|
+
const register$2 = editor => {
|
|
963
|
+
const registerOption = editor.options.register;
|
|
964
|
+
registerOption('fullscreen_native', {
|
|
965
|
+
processor: 'boolean',
|
|
966
|
+
default: false
|
|
967
|
+
});
|
|
1036
968
|
};
|
|
969
|
+
const getFullscreenNative = option('fullscreen_native');
|
|
1037
970
|
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
return getShadowRoot(elem).map(getShadowHost).getOrThunk(
|
|
1041
|
-
return getBody(owner(elem));
|
|
1042
|
-
});
|
|
971
|
+
const getFullscreenRoot = editor => {
|
|
972
|
+
const elem = SugarElement.fromDom(editor.getElement());
|
|
973
|
+
return getShadowRoot(elem).map(getShadowHost).getOrThunk(() => getBody(owner(elem)));
|
|
1043
974
|
};
|
|
1044
|
-
|
|
975
|
+
const getFullscreenElement = root => {
|
|
1045
976
|
if (root.fullscreenElement !== undefined) {
|
|
1046
977
|
return root.fullscreenElement;
|
|
1047
978
|
} else if (root.msFullscreenElement !== undefined) {
|
|
@@ -1052,7 +983,7 @@
|
|
|
1052
983
|
return null;
|
|
1053
984
|
}
|
|
1054
985
|
};
|
|
1055
|
-
|
|
986
|
+
const getFullscreenchangeEventName = () => {
|
|
1056
987
|
if (document.fullscreenElement !== undefined) {
|
|
1057
988
|
return 'fullscreenchange';
|
|
1058
989
|
} else if (document.msFullscreenElement !== undefined) {
|
|
@@ -1063,8 +994,8 @@
|
|
|
1063
994
|
return 'fullscreenchange';
|
|
1064
995
|
}
|
|
1065
996
|
};
|
|
1066
|
-
|
|
1067
|
-
|
|
997
|
+
const requestFullscreen = sugarElem => {
|
|
998
|
+
const elem = sugarElem.dom;
|
|
1068
999
|
if (elem.requestFullscreen) {
|
|
1069
1000
|
elem.requestFullscreen();
|
|
1070
1001
|
} else if (elem.msRequestFullscreen) {
|
|
@@ -1073,8 +1004,8 @@
|
|
|
1073
1004
|
elem.webkitRequestFullScreen();
|
|
1074
1005
|
}
|
|
1075
1006
|
};
|
|
1076
|
-
|
|
1077
|
-
|
|
1007
|
+
const exitFullscreen = sugarDoc => {
|
|
1008
|
+
const doc = sugarDoc.dom;
|
|
1078
1009
|
if (doc.exitFullscreen) {
|
|
1079
1010
|
doc.exitFullscreen();
|
|
1080
1011
|
} else if (doc.msExitFullscreen) {
|
|
@@ -1083,70 +1014,52 @@
|
|
|
1083
1014
|
doc.webkitCancelFullScreen();
|
|
1084
1015
|
}
|
|
1085
1016
|
};
|
|
1086
|
-
|
|
1087
|
-
return elem.dom === getFullscreenElement(owner(elem).dom);
|
|
1088
|
-
};
|
|
1017
|
+
const isFullscreenElement = elem => elem.dom === getFullscreenElement(owner(elem).dom);
|
|
1089
1018
|
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
};
|
|
1093
|
-
var siblings$1 = function (scope, predicate) {
|
|
1094
|
-
return filter$1(siblings$2(scope), predicate);
|
|
1095
|
-
};
|
|
1019
|
+
const ancestors$1 = (scope, predicate, isRoot) => filter$1(parents(scope, isRoot), predicate);
|
|
1020
|
+
const siblings$1 = (scope, predicate) => filter$1(siblings$2(scope), predicate);
|
|
1096
1021
|
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
var ancestors = function (scope, selector, isRoot) {
|
|
1101
|
-
return ancestors$1(scope, function (e) {
|
|
1102
|
-
return is(e, selector);
|
|
1103
|
-
}, isRoot);
|
|
1104
|
-
};
|
|
1105
|
-
var siblings = function (scope, selector) {
|
|
1106
|
-
return siblings$1(scope, function (e) {
|
|
1107
|
-
return is(e, selector);
|
|
1108
|
-
});
|
|
1109
|
-
};
|
|
1022
|
+
const all = selector => all$1(selector);
|
|
1023
|
+
const ancestors = (scope, selector, isRoot) => ancestors$1(scope, e => is(e, selector), isRoot);
|
|
1024
|
+
const siblings = (scope, selector) => siblings$1(scope, e => is(e, selector));
|
|
1110
1025
|
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1026
|
+
const attr = 'data-ephox-mobile-fullscreen-style';
|
|
1027
|
+
const siblingStyles = 'display:none!important;';
|
|
1028
|
+
const ancestorPosition = 'position:absolute!important;';
|
|
1029
|
+
const ancestorStyles = 'top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;';
|
|
1030
|
+
const bgFallback = 'background-color:rgb(255,255,255)!important;';
|
|
1031
|
+
const isAndroid = global.os.isAndroid();
|
|
1032
|
+
const matchColor = editorBody => {
|
|
1033
|
+
const color = get$2(editorBody, 'background-color');
|
|
1119
1034
|
return color !== undefined && color !== '' ? 'background-color:' + color + '!important' : bgFallback;
|
|
1120
1035
|
};
|
|
1121
|
-
|
|
1122
|
-
|
|
1036
|
+
const clobberStyles = (dom, container, editorBody) => {
|
|
1037
|
+
const gatherSiblings = element => {
|
|
1123
1038
|
return siblings(element, '*:not(.tox-silver-sink)');
|
|
1124
1039
|
};
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
}
|
|
1135
|
-
};
|
|
1040
|
+
const clobber = clobberStyle => element => {
|
|
1041
|
+
const styles = get$3(element, 'style');
|
|
1042
|
+
const backup = styles === undefined ? 'no-styles' : styles.trim();
|
|
1043
|
+
if (backup === clobberStyle) {
|
|
1044
|
+
return;
|
|
1045
|
+
} else {
|
|
1046
|
+
set$1(element, attr, backup);
|
|
1047
|
+
setAll(element, dom.parseStyle(clobberStyle));
|
|
1048
|
+
}
|
|
1136
1049
|
};
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1050
|
+
const ancestors$1 = ancestors(container, '*');
|
|
1051
|
+
const siblings$1 = bind$3(ancestors$1, gatherSiblings);
|
|
1052
|
+
const bgColor = matchColor(editorBody);
|
|
1140
1053
|
each$1(siblings$1, clobber(siblingStyles));
|
|
1141
1054
|
each$1(ancestors$1, clobber(ancestorPosition + ancestorStyles + bgColor));
|
|
1142
|
-
|
|
1055
|
+
const containerStyles = isAndroid === true ? '' : ancestorPosition;
|
|
1143
1056
|
clobber(containerStyles + ancestorStyles + bgColor)(container);
|
|
1144
1057
|
};
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
each$1(clobberedEls,
|
|
1148
|
-
|
|
1149
|
-
if (restore !== 'no-styles') {
|
|
1058
|
+
const restoreStyles = dom => {
|
|
1059
|
+
const clobberedEls = all('[' + attr + ']');
|
|
1060
|
+
each$1(clobberedEls, element => {
|
|
1061
|
+
const restore = get$3(element, attr);
|
|
1062
|
+
if (restore && restore !== 'no-styles') {
|
|
1150
1063
|
setAll(element, dom.parseStyle(restore));
|
|
1151
1064
|
} else {
|
|
1152
1065
|
remove(element, 'style');
|
|
@@ -1155,50 +1068,42 @@
|
|
|
1155
1068
|
});
|
|
1156
1069
|
};
|
|
1157
1070
|
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
}
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
};
|
|
1170
|
-
}, function (visualViewport) {
|
|
1171
|
-
var editorContainer = value();
|
|
1172
|
-
var resizeBinder = unbindable();
|
|
1173
|
-
var scrollBinder = unbindable();
|
|
1174
|
-
var refreshScroll = function () {
|
|
1071
|
+
const DOM = global$1.DOM;
|
|
1072
|
+
const getScrollPos = () => getBounds(window);
|
|
1073
|
+
const setScrollPos = pos => window.scrollTo(pos.x, pos.y);
|
|
1074
|
+
const viewportUpdate = get().fold(() => ({
|
|
1075
|
+
bind: noop,
|
|
1076
|
+
unbind: noop
|
|
1077
|
+
}), visualViewport => {
|
|
1078
|
+
const editorContainer = value();
|
|
1079
|
+
const resizeBinder = unbindable();
|
|
1080
|
+
const scrollBinder = unbindable();
|
|
1081
|
+
const refreshScroll = () => {
|
|
1175
1082
|
document.body.scrollTop = 0;
|
|
1176
1083
|
document.documentElement.scrollTop = 0;
|
|
1177
1084
|
};
|
|
1178
|
-
|
|
1179
|
-
window.requestAnimationFrame(
|
|
1180
|
-
editorContainer.on(
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
});
|
|
1187
|
-
});
|
|
1085
|
+
const refreshVisualViewport = () => {
|
|
1086
|
+
window.requestAnimationFrame(() => {
|
|
1087
|
+
editorContainer.on(container => setAll(container, {
|
|
1088
|
+
top: visualViewport.offsetTop + 'px',
|
|
1089
|
+
left: visualViewport.offsetLeft + 'px',
|
|
1090
|
+
height: visualViewport.height + 'px',
|
|
1091
|
+
width: visualViewport.width + 'px'
|
|
1092
|
+
}));
|
|
1188
1093
|
});
|
|
1189
1094
|
};
|
|
1190
|
-
|
|
1095
|
+
const update = first(() => {
|
|
1191
1096
|
refreshScroll();
|
|
1192
1097
|
refreshVisualViewport();
|
|
1193
1098
|
}, 50);
|
|
1194
|
-
|
|
1099
|
+
const bind$1 = element => {
|
|
1195
1100
|
editorContainer.set(element);
|
|
1196
|
-
update();
|
|
1197
|
-
resizeBinder.set(bind('resize', update));
|
|
1198
|
-
scrollBinder.set(bind('scroll', update));
|
|
1101
|
+
update.throttle();
|
|
1102
|
+
resizeBinder.set(bind('resize', update.throttle));
|
|
1103
|
+
scrollBinder.set(bind('scroll', update.throttle));
|
|
1199
1104
|
};
|
|
1200
|
-
|
|
1201
|
-
editorContainer.on(
|
|
1105
|
+
const unbind = () => {
|
|
1106
|
+
editorContainer.on(() => {
|
|
1202
1107
|
resizeBinder.clear();
|
|
1203
1108
|
scrollBinder.clear();
|
|
1204
1109
|
});
|
|
@@ -1206,51 +1111,48 @@
|
|
|
1206
1111
|
};
|
|
1207
1112
|
return {
|
|
1208
1113
|
bind: bind$1,
|
|
1209
|
-
unbind
|
|
1114
|
+
unbind
|
|
1210
1115
|
};
|
|
1211
1116
|
});
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1117
|
+
const toggleFullscreen = (editor, fullscreenState) => {
|
|
1118
|
+
const body = document.body;
|
|
1119
|
+
const documentElement = document.documentElement;
|
|
1120
|
+
const editorContainer = editor.getContainer();
|
|
1121
|
+
const editorContainerS = SugarElement.fromDom(editorContainer);
|
|
1122
|
+
const sinkContainerS = nextSibling(editorContainerS).filter(elm => isHTMLElement(elm) && has(elm, 'tox-silver-sink'));
|
|
1123
|
+
const fullscreenRoot = getFullscreenRoot(editor);
|
|
1124
|
+
const fullscreenInfo = fullscreenState.get();
|
|
1125
|
+
const editorBody = SugarElement.fromDom(editor.getBody());
|
|
1126
|
+
const isTouch = global.deviceType.isTouch();
|
|
1127
|
+
const editorContainerStyle = editorContainer.style;
|
|
1128
|
+
const iframe = editor.iframeElement;
|
|
1129
|
+
const iframeStyle = iframe === null || iframe === void 0 ? void 0 : iframe.style;
|
|
1130
|
+
const handleClasses = handler => {
|
|
1225
1131
|
handler(body, 'tox-fullscreen');
|
|
1226
1132
|
handler(documentElement, 'tox-fullscreen');
|
|
1227
1133
|
handler(editorContainer, 'tox-fullscreen');
|
|
1228
|
-
getShadowRoot(editorContainerS).map(
|
|
1229
|
-
return getShadowHost(root).dom;
|
|
1230
|
-
}).each(function (host) {
|
|
1134
|
+
getShadowRoot(editorContainerS).map(root => getShadowHost(root).dom).each(host => {
|
|
1231
1135
|
handler(host, 'tox-fullscreen');
|
|
1232
1136
|
handler(host, 'tox-shadowhost');
|
|
1233
1137
|
});
|
|
1234
1138
|
};
|
|
1235
|
-
|
|
1139
|
+
const cleanup = () => {
|
|
1236
1140
|
if (isTouch) {
|
|
1237
1141
|
restoreStyles(editor.dom);
|
|
1238
1142
|
}
|
|
1239
1143
|
handleClasses(DOM.removeClass);
|
|
1240
1144
|
viewportUpdate.unbind();
|
|
1241
|
-
Optional.from(fullscreenState.get()).each(
|
|
1242
|
-
return info.fullscreenChangeHandler.unbind();
|
|
1243
|
-
});
|
|
1145
|
+
Optional.from(fullscreenState.get()).each(info => info.fullscreenChangeHandler.unbind());
|
|
1244
1146
|
};
|
|
1245
1147
|
if (!fullscreenInfo) {
|
|
1246
|
-
|
|
1148
|
+
const fullscreenChangeHandler = bind$1(owner(fullscreenRoot), getFullscreenchangeEventName(), _evt => {
|
|
1247
1149
|
if (getFullscreenNative(editor)) {
|
|
1248
1150
|
if (!isFullscreenElement(fullscreenRoot) && fullscreenState.get() !== null) {
|
|
1249
1151
|
toggleFullscreen(editor, fullscreenState);
|
|
1250
1152
|
}
|
|
1251
1153
|
}
|
|
1252
1154
|
});
|
|
1253
|
-
|
|
1155
|
+
const newFullScreenInfo = {
|
|
1254
1156
|
scrollPos: getScrollPos(),
|
|
1255
1157
|
containerWidth: editorContainerStyle.width,
|
|
1256
1158
|
containerHeight: editorContainerStyle.height,
|
|
@@ -1258,7 +1160,8 @@
|
|
|
1258
1160
|
containerLeft: editorContainerStyle.left,
|
|
1259
1161
|
iframeWidth: iframeStyle.width,
|
|
1260
1162
|
iframeHeight: iframeStyle.height,
|
|
1261
|
-
fullscreenChangeHandler
|
|
1163
|
+
fullscreenChangeHandler,
|
|
1164
|
+
sinkCssPosition: sinkContainerS.map(elm => get$2(elm, 'position'))
|
|
1262
1165
|
};
|
|
1263
1166
|
if (isTouch) {
|
|
1264
1167
|
clobberStyles(editor.dom, editorContainerS, editorBody);
|
|
@@ -1266,6 +1169,9 @@
|
|
|
1266
1169
|
iframeStyle.width = iframeStyle.height = '100%';
|
|
1267
1170
|
editorContainerStyle.width = editorContainerStyle.height = '';
|
|
1268
1171
|
handleClasses(DOM.addClass);
|
|
1172
|
+
sinkContainerS.each(elm => {
|
|
1173
|
+
set(elm, 'position', 'fixed');
|
|
1174
|
+
});
|
|
1269
1175
|
viewportUpdate.bind(editorContainerS);
|
|
1270
1176
|
editor.on('remove', cleanup);
|
|
1271
1177
|
fullscreenState.set(newFullScreenInfo);
|
|
@@ -1284,6 +1190,9 @@
|
|
|
1284
1190
|
editorContainerStyle.height = fullscreenInfo.containerHeight;
|
|
1285
1191
|
editorContainerStyle.top = fullscreenInfo.containerTop;
|
|
1286
1192
|
editorContainerStyle.left = fullscreenInfo.containerLeft;
|
|
1193
|
+
lift2(sinkContainerS, fullscreenInfo.sinkCssPosition, (elm, val) => {
|
|
1194
|
+
set(elm, 'position', val);
|
|
1195
|
+
});
|
|
1287
1196
|
cleanup();
|
|
1288
1197
|
setScrollPos(fullscreenInfo.scrollPos);
|
|
1289
1198
|
fullscreenState.set(null);
|
|
@@ -1292,56 +1201,50 @@
|
|
|
1292
1201
|
}
|
|
1293
1202
|
};
|
|
1294
1203
|
|
|
1295
|
-
|
|
1296
|
-
editor.addCommand('mceFullScreen',
|
|
1204
|
+
const register$1 = (editor, fullscreenState) => {
|
|
1205
|
+
editor.addCommand('mceFullScreen', () => {
|
|
1297
1206
|
toggleFullscreen(editor, fullscreenState);
|
|
1298
1207
|
});
|
|
1299
1208
|
};
|
|
1300
1209
|
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
return editor.off('FullscreenStateChanged', editorEventCallback);
|
|
1310
|
-
};
|
|
1311
|
-
};
|
|
1312
|
-
};
|
|
1313
|
-
var register = function (editor, fullscreenState) {
|
|
1314
|
-
var onAction = function () {
|
|
1315
|
-
return editor.execCommand('mceFullScreen');
|
|
1316
|
-
};
|
|
1210
|
+
const makeSetupHandler = (editor, fullscreenState) => api => {
|
|
1211
|
+
api.setActive(fullscreenState.get() !== null);
|
|
1212
|
+
const editorEventCallback = e => api.setActive(e.state);
|
|
1213
|
+
editor.on('FullscreenStateChanged', editorEventCallback);
|
|
1214
|
+
return () => editor.off('FullscreenStateChanged', editorEventCallback);
|
|
1215
|
+
};
|
|
1216
|
+
const register = (editor, fullscreenState) => {
|
|
1217
|
+
const onAction = () => editor.execCommand('mceFullScreen');
|
|
1317
1218
|
editor.ui.registry.addToggleMenuItem('fullscreen', {
|
|
1318
1219
|
text: 'Fullscreen',
|
|
1319
1220
|
icon: 'fullscreen',
|
|
1320
1221
|
shortcut: 'Meta+Shift+F',
|
|
1321
|
-
onAction
|
|
1222
|
+
onAction,
|
|
1322
1223
|
onSetup: makeSetupHandler(editor, fullscreenState)
|
|
1323
1224
|
});
|
|
1324
1225
|
editor.ui.registry.addToggleButton('fullscreen', {
|
|
1325
1226
|
tooltip: 'Fullscreen',
|
|
1326
1227
|
icon: 'fullscreen',
|
|
1327
|
-
onAction
|
|
1328
|
-
onSetup: makeSetupHandler(editor, fullscreenState)
|
|
1228
|
+
onAction,
|
|
1229
|
+
onSetup: makeSetupHandler(editor, fullscreenState),
|
|
1230
|
+
shortcut: 'Meta+Shift+F'
|
|
1329
1231
|
});
|
|
1330
1232
|
};
|
|
1331
1233
|
|
|
1332
|
-
|
|
1333
|
-
global$
|
|
1334
|
-
|
|
1234
|
+
var Plugin = () => {
|
|
1235
|
+
global$2.add('fullscreen', editor => {
|
|
1236
|
+
const fullscreenState = Cell(null);
|
|
1335
1237
|
if (editor.inline) {
|
|
1336
1238
|
return get$5(fullscreenState);
|
|
1337
1239
|
}
|
|
1240
|
+
register$2(editor);
|
|
1338
1241
|
register$1(editor, fullscreenState);
|
|
1339
1242
|
register(editor, fullscreenState);
|
|
1340
1243
|
editor.addShortcut('Meta+Shift+F', '', 'mceFullScreen');
|
|
1341
1244
|
return get$5(fullscreenState);
|
|
1342
1245
|
});
|
|
1343
|
-
}
|
|
1246
|
+
};
|
|
1344
1247
|
|
|
1345
1248
|
Plugin();
|
|
1346
1249
|
|
|
1347
|
-
}()
|
|
1250
|
+
})();
|