/** * Copyright (c) Tiny Technologies, Inc. All rights reserved. * Licensed under the LGPL or a commercial license. * For LGPL see License.txt in the project root for license information. * For commercial licenses see https://www.tiny.cloud/ * * Version: 5.0.7 (2019-06-05) */ (function () { var help = (function () { 'use strict'; var Cell = function (initial) { var value = initial; var get = function () { return value; }; var set = function (v) { value = v; }; var clone = function () { return Cell(get()); }; return { get: get, set: set, clone: clone }; }; var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); var get = function (customTabs) { var addTab = function (spec) { var currentCustomTabs = customTabs.get(); currentCustomTabs[spec.name] = spec; customTabs.set(currentCustomTabs); }; return { addTab: addTab }; }; var register = function (editor, dialogOpener) { editor.addCommand('mceHelp', dialogOpener); }; var Commands = { register: register }; var register$1 = function (editor, dialogOpener) { editor.ui.registry.addButton('help', { icon: 'help', tooltip: 'Help', onAction: dialogOpener }); editor.ui.registry.addMenuItem('help', { text: 'Help', icon: 'help', shortcut: 'Alt+0', onAction: dialogOpener }); }; var Buttons = { register: register$1 }; var __assign = function () { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var constant = function (value) { return function () { return value; }; }; function curry(fn) { var initialArgs = []; for (var _i = 1; _i < arguments.length; _i++) { initialArgs[_i - 1] = arguments[_i]; } return function () { var restArgs = []; for (var _i = 0; _i < arguments.length; _i++) { restArgs[_i] = arguments[_i]; } var all = initialArgs.concat(restArgs); return fn.apply(null, all); }; } var not = function (f) { return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return !f.apply(null, args); }; }; var never = constant(false); var always = constant(true); var never$1 = never; var always$1 = always; var none = function () { return NONE; }; var NONE = function () { var eq = function (o) { return o.isNone(); }; var call = function (thunk) { return thunk(); }; var id = function (n) { return n; }; var noop = function () { }; var nul = function () { return null; }; var undef = function () { return undefined; }; var me = { fold: function (n, s) { return n(); }, is: never$1, isSome: never$1, isNone: always$1, getOr: id, getOrThunk: call, getOrDie: function (msg) { throw new Error(msg || 'error: getOrDie called on none.'); }, getOrNull: nul, getOrUndefined: undef, or: id, orThunk: call, map: none, ap: none, each: noop, bind: none, flatten: none, exists: never$1, forall: always$1, filter: none, equals: eq, equals_: eq, toArray: function () { return []; }, toString: constant('none()') }; if (Object.freeze) Object.freeze(me); return me; }(); var some = function (a) { var constant_a = function () { return a; }; var self = function () { return me; }; var map = function (f) { return some(f(a)); }; var bind = function (f) { return f(a); }; var me = { fold: function (n, s) { return s(a); }, is: function (v) { return a === v; }, isSome: always$1, isNone: never$1, getOr: constant_a, getOrThunk: constant_a, getOrDie: constant_a, getOrNull: constant_a, getOrUndefined: constant_a, or: self, orThunk: self, map: map, ap: function (optfab) { return optfab.fold(none, function (fab) { return some(fab(a)); }); }, each: function (f) { f(a); }, bind: bind, flatten: constant_a, exists: bind, forall: bind, filter: function (f) { return f(a) ? me : NONE; }, equals: function (o) { return o.is(a); }, equals_: function (o, elementEq) { return o.fold(never$1, function (b) { return elementEq(a, b); }); }, toArray: function () { return [a]; }, toString: function () { return 'some(' + a + ')'; } }; return me; }; var from = function (value) { return value === null || value === undefined ? NONE : some(value); }; var Option = { some: some, none: none, from: from }; var typeOf = function (x) { if (x === null) return 'null'; var t = typeof x; if (t === 'object' && Array.prototype.isPrototypeOf(x)) return 'array'; if (t === 'object' && String.prototype.isPrototypeOf(x)) return 'string'; return t; }; var isType = function (type) { return function (value) { return typeOf(value) === type; }; }; var isFunction = isType('function'); var slice = Array.prototype.slice; var rawIndexOf = function () { var pIndexOf = Array.prototype.indexOf; var fastIndex = function (xs, x) { return pIndexOf.call(xs, x); }; var slowIndex = function (xs, x) { return slowIndexOf(xs, x); }; return pIndexOf === undefined ? slowIndex : fastIndex; }(); var indexOf = function (xs, x) { var r = rawIndexOf(xs, x); return r === -1 ? Option.none() : Option.some(r); }; var contains = function (xs, x) { return rawIndexOf(xs, x) > -1; }; var map = function (xs, f) { var len = xs.length; var r = new Array(len); for (var i = 0; i < len; i++) { var x = xs[i]; r[i] = f(x, i, xs); } return r; }; var filter = function (xs, pred) { var r = []; for (var i = 0, len = xs.length; i < len; i++) { var x = xs[i]; if (pred(x, i, xs)) { r.push(x); } } return r; }; var find = function (xs, pred) { for (var i = 0, len = xs.length; i < len; i++) { var x = xs[i]; if (pred(x, i, xs)) { return Option.some(x); } } return Option.none(); }; var slowIndexOf = function (xs, x) { for (var i = 0, len = xs.length; i < len; ++i) { if (xs[i] === x) { return i; } } return -1; }; var from$1 = isFunction(Array.from) ? Array.from : function (x) { return slice.call(x); }; var keys = Object.keys; var hasOwnProperty = Object.hasOwnProperty; var get$1 = function (obj, key) { return has(obj, key) ? Option.from(obj[key]) : Option.none(); }; var has = function (obj, key) { return hasOwnProperty.call(obj, key); }; var cat = function (arr) { var r = []; var push = function (x) { r.push(x); }; for (var i = 0; i < arr.length; i++) { arr[i].each(push); } return r; }; var getHelpTabs = function (editor) { return Option.from(editor.getParam('help_tabs')); }; var shortcuts = [ { shortcuts: ['Meta + B'], action: 'Bold' }, { shortcuts: ['Meta + I'], action: 'Italic' }, { shortcuts: ['Meta + U'], action: 'Underline' }, { shortcuts: ['Meta + A'], action: 'Select all' }, { shortcuts: [ 'Meta + Y', 'Meta + Shift + Z' ], action: 'Redo' }, { shortcuts: ['Meta + Z'], action: 'Undo' }, { shortcuts: ['Access + 1'], action: 'Header 1' }, { shortcuts: ['Access + 2'], action: 'Header 2' }, { shortcuts: ['Access + 3'], action: 'Header 3' }, { shortcuts: ['Access + 4'], action: 'Header 4' }, { shortcuts: ['Access + 5'], action: 'Header 5' }, { shortcuts: ['Access + 6'], action: 'Header 6' }, { shortcuts: ['Access + 7'], action: 'Paragraph' }, { shortcuts: ['Access + 8'], action: 'Div' }, { shortcuts: ['Access + 9'], action: 'Address' }, { shortcuts: ['Alt + 0'], action: 'Open help dialog' }, { shortcuts: ['Alt + F9'], action: 'Focus to menubar' }, { shortcuts: ['Alt + F10'], action: 'Focus to toolbar' }, { shortcuts: ['Alt + F11'], action: 'Focus to element path' }, { shortcuts: ['Ctrl + F9'], action: 'Focus to contextual toolbar' }, { shortcuts: ['Shift + Enter'], action: 'Open popup menu for split buttons' }, { shortcuts: ['Meta + K'], action: 'Insert link (if link plugin activated)' }, { shortcuts: ['Meta + S'], action: 'Save (if save plugin activated)' }, { shortcuts: ['Meta + F'], action: 'Find (if searchreplace plugin activated)' }, { shortcuts: ['Meta + Shift + F'], action: 'Switch to or from fullscreen mode' } ]; var KeyboardShortcuts = { shortcuts: shortcuts }; var global$1 = tinymce.util.Tools.resolve('tinymce.Env'); var convertText = function (source) { var mac = { alt: '⌥', ctrl: '⌃', shift: '⇧', meta: '⌘', access: '⌃⌥' }; var other = { meta: 'Ctrl ', access: 'Shift + Alt ' }; var replace = global$1.mac ? mac : other; var shortcut = source.split('+'); var updated = map(shortcut, function (segment) { var search = segment.toLowerCase().trim(); return has(replace, search) ? replace[search] : segment; }); return global$1.mac ? updated.join('').replace(/\s/, '') : updated.join('+'); }; var ConvertShortcut = { convertText: convertText }; var tab = function () { var shortcutList = map(KeyboardShortcuts.shortcuts, function (shortcut) { var shortcutText = map(shortcut.shortcuts, ConvertShortcut.convertText).join(' or '); return [ shortcut.action, shortcutText ]; }); var tablePanel = { type: 'table', header: [ 'Action', 'Shortcut' ], cells: shortcutList }; return { name: 'shortcuts', title: 'Handy Shortcuts', items: [tablePanel] }; }; var KeyboardShortcutsTab = { tab: tab }; var supplant = function (str, obj) { var isStringOrNumber = function (a) { var t = typeof a; return t === 'string' || t === 'number'; }; return str.replace(/\$\{([^{}]*)\}/g, function (fullMatch, key) { var value = obj[key]; return isStringOrNumber(value) ? value.toString() : fullMatch; }); }; var global$2 = tinymce.util.Tools.resolve('tinymce.util.I18n'); var urls = [ { key: 'advlist', name: 'Advanced List' }, { key: 'anchor', name: 'Anchor' }, { key: 'autolink', name: 'Autolink' }, { key: 'autoresize', name: 'Autoresize' }, { key: 'autosave', name: 'Autosave' }, { key: 'bbcode', name: 'BBCode' }, { key: 'charmap', name: 'Character Map' }, { key: 'code', name: 'Code' }, { key: 'codesample', name: 'Code Sample' }, { key: 'colorpicker', name: 'Color Picker' }, { key: 'directionality', name: 'Directionality' }, { key: 'emoticons', name: 'Emoticons' }, { key: 'fullpage', name: 'Full Page' }, { key: 'fullscreen', name: 'Full Screen' }, { key: 'help', name: 'Help' }, { key: 'hr', name: 'Horizontal Rule' }, { key: 'image', name: 'Image' }, { key: 'imagetools', name: 'Image Tools' }, { key: 'importcss', name: 'Import CSS' }, { key: 'insertdatetime', name: 'Insert Date/Time' }, { key: 'legacyoutput', name: 'Legacy Output' }, { key: 'link', name: 'Link' }, { key: 'lists', name: 'Lists' }, { key: 'media', name: 'Media' }, { key: 'nonbreaking', name: 'Nonbreaking' }, { key: 'noneditable', name: 'Noneditable' }, { key: 'pagebreak', name: 'Page Break' }, { key: 'paste', name: 'Paste' }, { key: 'preview', name: 'Preview' }, { key: 'print', name: 'Print' }, { key: 'save', name: 'Save' }, { key: 'searchreplace', name: 'Search and Replace' }, { key: 'spellchecker', name: 'Spell Checker' }, { key: 'tabfocus', name: 'Tab Focus' }, { key: 'table', name: 'Table' }, { key: 'template', name: 'Template' }, { key: 'textcolor', name: 'Text Color' }, { key: 'textpattern', name: 'Text Pattern' }, { key: 'toc', name: 'Table of Contents' }, { key: 'visualblocks', name: 'Visual Blocks' }, { key: 'visualchars', name: 'Visual Characters' }, { key: 'wordcount', name: 'Word Count' }, { key: 'advcode', name: 'Advanced Code Editor*' }, { key: 'formatpainter', name: 'Format Painter*' }, { key: 'powerpaste', name: 'PowerPaste*' }, { key: 'tinydrive', name: 'Tiny Drive*' }, { key: 'tinymcespellchecker', name: 'Spell Checker Pro*' }, { key: 'a11ychecker', name: 'Accessibility Checker*' }, { key: 'linkchecker', name: 'Link Checker*' }, { key: 'mentions', name: 'Mentions*' }, { key: 'mediaembed', name: 'Enhanced Media Embed*' }, { key: 'checklist', name: 'Checklist*' }, { key: 'casechange', name: 'Case Change*' }, { key: 'permanentpen', name: 'Permanent Pen*' }, { key: 'pageembed', name: 'Page Embed*' }, { key: 'tinycomments', name: 'Tiny Comments*' } ]; var PluginUrls = { urls: urls }; var tab$1 = function (editor) { var availablePlugins = function () { var premiumPlugins = [ 'Accessibility Checker', 'Advanced Code Editor', 'Case Change', 'Checklist', 'Tiny Comments', 'Tiny Drive', 'Enhanced Media Embed', 'Format Painter', 'Link Checker', 'Mentions', 'MoxieManager', 'Page Embed', 'Permanent Pen', 'PowerPaste', 'Spell Checker Pro' ]; var premiumPluginList = map(premiumPlugins, function (plugin) { return '
' + global$2.translate('Premium plugins:') + '
' + '' + global$2.translate([ 'Plugins installed ({0}):', count ]) + '
' + '' + global$2.translate([ 'You are using {0}', changeLogLink ]) + '
', presets: 'document' }; return { name: 'versions', title: 'Version', items: [htmlPanel] }; }; var VersionTab = { tab: tab$2 }; var parseHelpTabsSetting = function (tabsFromSettings, tabs) { var newTabs = {}; var names = map(tabsFromSettings, function (t) { if (typeof t === 'string') { if (has(tabs, t)) { newTabs[t] = tabs[t]; } return t; } else { newTabs[t.name] = t; return t.name; } }); return { tabs: newTabs, names: names }; }; var getNamesFromTabs = function (tabs) { var names = keys(tabs); var versionsIdx = indexOf(names, 'versions'); versionsIdx.each(function (idx) { names.splice(idx, 1); names.push('versions'); }); return { tabs: tabs, names: names }; }; var parseCustomTabs = function (editor, customTabs) { var _a; var shortcuts = KeyboardShortcutsTab.tab(); var plugins = PluginsTab.tab(editor); var versions = VersionTab.tab(); var tabs = __assign((_a = {}, _a[shortcuts.name] = shortcuts, _a[plugins.name] = plugins, _a[versions.name] = versions, _a), customTabs.get()); return getHelpTabs(editor).fold(function () { return getNamesFromTabs(tabs); }, function (tabsFromSettings) { return parseHelpTabsSetting(tabsFromSettings, tabs); }); }; var init = function (editor, customTabs) { return function () { var _a = parseCustomTabs(editor, customTabs), tabs = _a.tabs, names = _a.names; var foundTabs = map(names, function (name) { return get$1(tabs, name); }); var dialogTabs = cat(foundTabs); var body = { type: 'tabpanel', tabs: dialogTabs }; editor.windowManager.open({ title: 'Help', size: 'medium', body: body, buttons: [{ type: 'cancel', name: 'close', text: 'Close', primary: true }], initialData: {} }); }; }; global.add('help', function (editor) { var customTabs = Cell({}); var api = get(customTabs); var dialogOpener = init(editor, customTabs); Buttons.register(editor, dialogOpener); Commands.register(editor, dialogOpener); editor.shortcuts.add('Alt+0', 'Open help dialog', 'mceHelp'); return api; }); function Plugin () { } return Plugin; }()); })();