PHP Classes

File: public/js/tinymce/src/themes/mobile/src/main/js/features/Features.js

Recommend this page to a friend!
  Classes of Abed Nego Ragil Putra   GoLavaCMS   public/js/tinymce/src/themes/mobile/src/main/js/features/Features.js   Download  
File: public/js/tinymce/src/themes/mobile/src/main/js/features/Features.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: GoLavaCMS
Publish content on Web pages with SEO support
Author: By
Last change:
Date: 6 years ago
Size: 6,255 bytes
 

Contents

Class file image Download
define( 'tinymce.themes.mobile.features.Features', [ 'ephox.alloy.api.behaviour.Behaviour', 'ephox.alloy.api.behaviour.Receiving', 'ephox.alloy.api.behaviour.Toggling', 'ephox.alloy.api.component.Memento', 'ephox.boulder.api.Objects', 'ephox.katamari.api.Arr', 'ephox.katamari.api.Fun', 'ephox.katamari.api.Option', 'ephox.katamari.api.Type', 'global!setTimeout', 'global!window', 'tinymce.themes.mobile.channels.Receivers', 'tinymce.themes.mobile.channels.TinyChannels', 'tinymce.themes.mobile.style.Styles', 'tinymce.themes.mobile.ui.Buttons', 'tinymce.themes.mobile.ui.ColorSlider', 'tinymce.themes.mobile.ui.FontSizeSlider', 'tinymce.themes.mobile.ui.ImagePicker', 'tinymce.themes.mobile.ui.LinkButton', 'tinymce.themes.mobile.util.StyleFormats' ], function ( Behaviour, Receiving, Toggling, Memento, Objects, Arr, Fun, Option, Type, setTimeout, window, Receivers, TinyChannels, Styles, Buttons, ColorSlider, FontSizeSlider, ImagePicker, LinkButton, StyleFormats ) { var defaults = [ 'undo', 'bold', 'italic', 'link', 'image', 'bullist', 'styleselect' ]; var extract = function (rawToolbar) { // Ignoring groups var toolbar = rawToolbar.replace(/\|/g, ' ').trim(); return toolbar.length > 0 ? toolbar.split(/\s+/) : [ ]; }; var identifyFromArray = function (toolbar) { return Arr.bind(toolbar, function (item) { return Type.isArray(item) ? identifyFromArray(item) : extract(item); }); }; var identify = function (settings) { // Firstly, flatten the toolbar var toolbar = settings.toolbar !== undefined ? settings.toolbar : defaults; return Type.isArray(toolbar) ? identifyFromArray(toolbar) : extract(toolbar); }; var setup = function (realm, editor) { var commandSketch = function (name) { return function () { return Buttons.forToolbarCommand(editor, name); }; }; var stateCommandSketch = function (name) { return function () { return Buttons.forToolbarStateCommand(editor, name); }; }; var actionSketch = function (name, query, action) { return function () { return Buttons.forToolbarStateAction(editor, name, query, action); }; }; var undo = commandSketch('undo'); var redo = commandSketch('redo'); var bold = stateCommandSketch('bold'); var italic = stateCommandSketch('italic'); var underline = stateCommandSketch('underline'); var removeformat = commandSketch('removeformat'); var link = function () { return LinkButton.sketch(realm, editor); }; var unlink = actionSketch('unlink', 'link', function () { editor.execCommand('unlink', null, false); }); var image = function () { return ImagePicker.sketch(editor); }; var bullist = actionSketch('unordered-list', 'ul', function () { editor.execCommand('InsertUnorderedList', null, false); }); var numlist = actionSketch('ordered-list', 'ol', function () { editor.execCommand('InsertOrderedList', null, false); }); var fontsizeselect = function () { return FontSizeSlider.sketch(realm, editor); }; var forecolor = function () { return ColorSlider.sketch(realm, editor); }; var styleFormats = StyleFormats.register(editor, editor.settings); var styleFormatsMenu = function () { return StyleFormats.ui(editor, styleFormats, function () { editor.fire('scrollIntoView'); }); }; var styleselect = function () { return Buttons.forToolbar('style-formats', function (button) { editor.fire('toReading'); realm.dropup().appear(styleFormatsMenu, Toggling.on, button); }, Behaviour.derive([ Toggling.config({ toggleClass: Styles.resolve('toolbar-button-selected'), toggleOnExecute: false, aria: { mode: 'pressed' } }), Receiving.config({ channels: Objects.wrapAll([ Receivers.receive(TinyChannels.orientationChanged(), Toggling.off), Receivers.receive(TinyChannels.dropupDismissed(), Toggling.off) ]) }) ])); }; var feature = function (prereq, sketch) { return { isSupported: function () { // NOTE: forall is true for none return prereq.forall(function (p) { return Objects.hasKey(editor.buttons, p); }); }, sketch: sketch }; }; return { undo: feature(Option.none(), undo), redo: feature(Option.none(), redo), bold: feature(Option.none(), bold), italic: feature(Option.none(), italic), underline: feature(Option.none(), underline), removeformat: feature(Option.none(), removeformat), link: feature(Option.none(), link), unlink: feature(Option.none(), unlink), image: feature(Option.none(), image), // NOTE: Requires "lists" plugin. bullist: feature(Option.some('bullist'), bullist), numlist: feature(Option.some('numlist'), numlist), fontsizeselect: feature(Option.none(), fontsizeselect), forecolor: feature(Option.none(), forecolor), styleselect: feature(Option.none(), styleselect) }; }; var detect = function (settings, features) { // Firstly, work out which items are in the toolbar var itemNames = identify(settings); // Now, build the list only including supported features and no duplicates. var present = { }; return Arr.bind(itemNames, function (iName) { var r = !Objects.hasKey(present, iName) && Objects.hasKey(features, iName) && features[iName].isSupported() ? [ features[iName].sketch() ] : []; // NOTE: Could use fold to avoid mutation, but it might be overkill and not performant present[iName] = true; return r; }); }; return { identify: identify, setup: setup, detect: detect }; } );