/*!
* froala_editor v2.3.3 (https://www.froala.com/wysiwyg-editor) * License https://froala.com/wysiwyg-editor/terms/ * Copyright 2014-2016 Froala Labs */
(function (factory) {
if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(['jquery'], factory); } else if (typeof module === 'object' && module.exports) { // Node/CommonJS module.exports = function( root, jQuery ) { if ( jQuery === undefined ) { // require('jQuery') returns a factory that requires window to // build a jQuery instance, we normalize how we use modules // that require this pattern but the window provided is a noop // if it's defined (how jquery works) if ( typeof window !== 'undefined' ) { jQuery = require('jquery'); } else { jQuery = require('jquery')(root); } } factory(jQuery); return jQuery; }; } else { // Browser globals factory(jQuery); }
}(function ($) {
'use strict'; $.extend($.FE.DEFAULTS, { paragraphStyles: { 'fr-text-gray': 'Gray', 'fr-text-bordered': 'Bordered', 'fr-text-spaced': 'Spaced', 'fr-text-uppercase': 'Uppercase' }, paragraphMultipleStyles: true }); $.FE.PLUGINS.paragraphStyle = function (editor) { /** * Apply style. */ function apply (val, paragraphStyles, paragraphMultipleStyles) { if (typeof paragraphStyles == 'undefined') paragraphStyles = editor.opts.paragraphStyles; if (typeof paragraphMultipleStyles == 'undefined') paragraphMultipleStyles = editor.opts.paragraphMultipleStyles; var styles = ''; // Remove multiple styles. if (!paragraphMultipleStyles) { styles = Object.keys(paragraphStyles); styles.splice(styles.indexOf(val), 1); styles = styles.join(' '); } editor.selection.save(); editor.html.wrap(true, true, true, true); editor.selection.restore(); var blocks = editor.selection.blocks(); // Save selection to restore it later. editor.selection.save(); var hasClass = $(blocks[0]).hasClass(val); for (var i = 0; i < blocks.length; i++) { $(blocks[i]).removeClass(styles).toggleClass(val, !hasClass); if ($(blocks[i]).hasClass('fr-temp-div')) $(blocks[i]).removeClass('fr-temp-div'); if ($(blocks[i]).attr('class') === '') $(blocks[i]).removeAttr('class'); } // Unwrap temp divs. editor.html.unwrap(); // Restore selection. editor.selection.restore(); } function refreshOnShow($btn, $dropdown) { var blocks = editor.selection.blocks(); if (blocks.length) { var $blk = $(blocks[0]); $dropdown.find('.fr-command').each (function () { var cls = $(this).data('param1'); $(this).toggleClass('fr-active', $blk.hasClass(cls)); }) } } function _init () { } return { _init: _init, apply: apply, refreshOnShow: refreshOnShow } } // Register the font size command. $.FE.RegisterCommand('paragraphStyle', { type: 'dropdown', html: function () { var c = '<ul class="fr-dropdown-list">'; var options = this.opts.paragraphStyles; for (var val in options) { if (options.hasOwnProperty(val)) { c += '<li><a class="fr-command ' + val + '" data-cmd="paragraphStyle" data-param1="' + val + '" title="' + this.language.translate(options[val]) + '">' + this.language.translate(options[val]) + '</a></li>'; } } c += '</ul>'; return c; }, title: 'Paragraph Style', callback: function (cmd, val) { this.paragraphStyle.apply(val); }, refreshOnShow: function ($btn, $dropdown) { this.paragraphStyle.refreshOnShow($btn, $dropdown); }, plugin: 'paragraphStyle' }) // Add the font size icon. $.FE.DefineIcon('paragraphStyle', { NAME: 'magic' });
}));