Вход Регистрация
Файл: library/wysihtml5/src/commands/formatInline.js
Строк: 78
<?php
/**
 * formatInline scenarios for tag "B" (| = caret, |foo| = selected text)
 *
 *   #1 caret in unformatted text:
 *      abcdefg|
 *   output:
 *      abcdefg<b>|</b>
 *   
 *   #2 unformatted text selected:
 *      abc|deg|h
 *   output:
 *      abc<b>|deg|</b>h
 *   
 *   #3 unformatted text selected across boundaries:
 *      ab|c <span>defg|h</span>
 *   output:
 *      ab<b>|c </b><span><b>defg</b>|h</span>
 *
 *   #4 formatted text entirely selected
 *      <b>|abc|</b>
 *   output:
 *      |abc|
 *
 *   #5 formatted text partially selected
 *      <b>ab|c|</b>
 *   output:
 *      <b>ab</b>|c|
 *
 *   #6 formatted text selected across boundaries
 *      <span>ab|c</span> <b>de|fgh</b>
 *   output:
 *      <span>ab|c</span> de|<b>fgh</b>
 */
(function(wysihtml5) {
  var 
// Treat <b> as <strong> and vice versa
      
ALIAS_MAPPING = {
        
"strong""b",
        
"em":     "i",
        
"b":      "strong",
        
"i":      "em"
      
},
      
htmlApplier = {};
  
  function 
_getTagNames(tagName) {
    var 
alias ALIAS_MAPPING[tagName];
    return 
alias ? [tagName.toLowerCase(), alias.toLowerCase()] : [tagName.toLowerCase()];
  }
  
  function 
_getApplier(tagNameclassNameclassRegExp) {
    var 
identifier tagName ":" className;
    if (!
htmlApplier[identifier]) {
      
htmlApplier[identifier] = new wysihtml5.selection.HTMLApplier(_getTagNames(tagName), classNameclassRegExptrue);
    }
    return 
htmlApplier[identifier];
  }
  
  
wysihtml5.commands.formatInline = {
    
exec: function(composercommandtagNameclassNameclassRegExp) {
      var 
range composer.selection.getRange();
      if (!
range) {
        return 
false;
      }
      
_getApplier(tagNameclassNameclassRegExp).toggleRange(range);
      
composer.selection.setSelection(range);
    },

    
state: function(composercommandtagNameclassNameclassRegExp) {
      var 
doc           composer.doc,
          
aliasTagName  ALIAS_MAPPING[tagName] || tagName,
          
range;

      
// Check whether the document contains a node with the desired tagName
      
if (!wysihtml5.dom.hasElementWithTagName(doctagName) &&
          !
wysihtml5.dom.hasElementWithTagName(docaliasTagName)) {
        return 
false;
      }

       
// Check whether the document contains a node with the desired className
      
if (className && !wysihtml5.dom.hasElementWithClassName(docclassName)) {
         return 
false;
      }

      
range composer.selection.getRange();
      if (!
range) {
        return 
false;
      }

      return 
_getApplier(tagNameclassNameclassRegExp).isAppliedToRange(range);
    }
  };
})(
wysihtml5);
?>
Онлайн: 1
Реклама