/*!
* 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, { fontFamily: { 'Arial,Helvetica,sans-serif': 'Arial', 'Georgia,serif': 'Georgia', 'Impact,Charcoal,sans-serif': 'Impact', 'Tahoma,Geneva,sans-serif': 'Tahoma', 'Times New Roman,Times,serif': 'Times New Roman', 'Verdana,Geneva,sans-serif': 'Verdana' }, fontFamilySelection: false, fontFamilyDefaultSelection: 'Font Family' }) $.FE.PLUGINS.fontFamily = function (editor) { function apply (val) { editor.format.applyStyle('font-family', val); } function refreshOnShow($btn, $dropdown) { $dropdown.find('.fr-command.fr-active').removeClass('fr-active'); $dropdown.find('.fr-command[data-param1="' + _getSelection() + '"]').addClass('fr-active'); var $list = $dropdown.find('.fr-dropdown-list'); var $active = $dropdown.find('.fr-active').parent(); if ($active.length) { $list.parent().scrollTop($active.offset().top - $list.offset().top - ($list.parent().outerHeight() / 2 - $active.outerHeight() / 2)); } else { $list.parent().scrollTop(0); } } function _getArray (val) { var font_array = val.replace(/(sans-serif|serif|monospace|cursive|fantasy)/gi, '').replace(/"|'| /g, '').split(','); return $.grep(font_array, function (txt) { return txt.length > 0 }); } /** * Return first match position. */ function _matches (array1, array2) { for (var i = 0; i < array1.length; i++) { for (var j = 0; j < array2.length; j++) { if (array1[i] == array2[j]) { return [i, j]; } } } return null; } function _getSelection () { var val = $(editor.selection.element()).css('font-family'); var font_array = _getArray(val); var font_matches = []; for (var key in editor.opts.fontFamily) { if (editor.opts.fontFamily.hasOwnProperty(key)) { var c_font_array = _getArray(key); var match = _matches(font_array, c_font_array); if (match) { font_matches.push([key, match]); } } } if (font_matches.length === 0) return null; // Sort matches by their position. // Times,Arial should be detected as being Times, not Arial. font_matches.sort(function (a, b) { var f_diff = a[1][0] - b[1][0]; if (f_diff === 0) { return a[1][1] - b[1][1]; } else { return f_diff; } }); return font_matches[0][0]; } function refresh ($btn) { if (editor.opts.fontFamilySelection) { var val = $(editor.selection.element()).css('font-family').replace(/(sans-serif|serif|monospace|cursive|fantasy)/gi, '').replace(/"|'|/g, '').split(','); $btn.find('> span').text(editor.opts.fontFamily[_getSelection()] || val[0] || editor.opts.fontFamilyDefaultSelection); } } return { apply: apply, refreshOnShow: refreshOnShow, refresh: refresh } } // Register the font size command. $.FE.RegisterCommand('fontFamily', { type: 'dropdown', displaySelection: function (editor) { return editor.opts.fontFamilySelection; }, defaultSelection: function (editor) { return editor.opts.fontFamilyDefaultSelection; }, displaySelectionWidth: 120, html: function () { var c = '<ul class="fr-dropdown-list">'; var options = this.opts.fontFamily; for (var val in options) { if (options.hasOwnProperty(val)) { c += '<li><a class="fr-command" data-cmd="fontFamily" data-param1="' + val + '" style="font-family: ' + val + '" title="' + options[val] + '">' + options[val] + '</a></li>'; } } c += '</ul>'; return c; }, title: 'Font Family', callback: function (cmd, val) { this.fontFamily.apply(val); }, refresh: function ($btn) { this.fontFamily.refresh($btn); }, refreshOnShow: function ($btn, $dropdown) { this.fontFamily.refreshOnShow($btn, $dropdown); }, plugin: 'fontFamily' }) // Add the font size icon. $.FE.DefineIcon('fontFamily', { NAME: 'font' });
}));