sync
authorAlan <alan@roojs.com>
Fri, 7 Jan 2022 07:58:18 +0000 (15:58 +0800)
committerAlan <alan@roojs.com>
Fri, 7 Jan 2022 07:58:18 +0000 (15:58 +0800)
Roo/HtmlEditorCore.js
Roo/htmleditor/Tidy.js [deleted file]
Roo/htmleditor/TidyEntities.js
Roo/htmleditor/TidyWriter.js
buildSDK/dependancy_ui.txt
docs/src/Roo_HtmlEditorCore.js.html
docs/src/Roo_htmleditor_BlockFigure.js.html
docs/src/Roo_htmleditor_Tidy.js.html
examples/form/htmledit.html

index 64b7d21..59011b8 100644 (file)
@@ -195,14 +195,16 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         st +=  '<style type="text/css">' +
             'IMG { cursor: pointer } ' +
         '</style>';
-
-        var cls = 'roo-htmleditor-body';
+        
+        st += '<meta name="google" content="notranslate">'
+        
+        var cls = 'notranslate roo-htmleditor-body';
         
         if(this.bodyCls.length){
             cls += ' ' + this.bodyCls;
         }
         
-        return '<html><head>' + st  +
+        return '<html  class="notranslate" translate="no"><head>' + st  +
             //<style type="text/css">' +
             //'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
             //'</style>' +
@@ -329,7 +331,8 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
      * @param {String} html The HTML to be cleaned
      * return {String} The cleaned HTML
      */
-    cleanHtml : function(html){
+    cleanHtml : function(html)
+    {
         html = String(html);
         if(html.length > 5){
             if(Roo.isSafari){ // strip safari nonsense
@@ -361,15 +364,19 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
             
             var div = document.createElement('div');
             div.innerHTML = bd.innerHTML;
-             
+            
+            
            
             if (this.enableBlocks) {
                 new Roo.htmleditor.FilterBlock({ node : div });
             }
             //?? tidy?
+            var tidy = new Roo.htmleditor.TidySerializer({
+                inner:  true
+            });
+            var html  = tidy.serialize(div)
             
             
-            var html = div.innerHTML;
             if(Roo.isSafari){
                 var bs = bd.getAttribute('style'); // Safari puts text-align styles on the body element!
                 var m = bs ? bs.match(/text-align:(.*?);/i) : false;
@@ -508,6 +515,8 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         //var ss = this.el.getStyles( 'background-image', 'background-repeat');
         //ss['background-attachment'] = 'fixed'; // w3c
         dbody.bgProperties = 'fixed'; // ie
+        dbody.setAttribute("translate", "no");
+        
         //Roo.DomHelper.applyStyles(dbody, ss);
         Roo.EventManager.on(this.doc, {
              
diff --git a/Roo/htmleditor/Tidy.js b/Roo/htmleditor/Tidy.js
deleted file mode 100644 (file)
index 00af29c..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-
-/**
- * @class Roo.htmleditor.Tidy
- * Tidy HTML 
- * 
- * @constructor
- * Create a new Filter.
- * @param {Object} config Configuration options
- */
-
-
-Roo.htmleditor.Tidy = function(cfg) {
-    Roo.apply(this, cfg);
-    
-    this.core.doc.body.innerHTML = this.tidy(this.core.doc.body, '');
-     
-}
-
-Roo.htmleditor.Tidy.toString = function(node)
-{
-    return Roo.htmleditor.Tidy.prototype.tidy(node, '');
-}
-
-Roo.htmleditor.Tidy.prototype = {
-    
-    /**
-     *
-     * @cfg {Roo.HtmlEditorCore} core the editor.
-     */
-    core : false,
-    
-    
-    tidy : function(node, indent) {
-        var ser = new Roo.htmleditor.TidySerializer({
-            indent : 2,
-        });
-        return ser.serialize(node);
-         
-    
-    }
-    
-}
\ No newline at end of file
index 5db0ea6..fef4683 100644 (file)
@@ -3,6 +3,8 @@
  * @class Roo.htmleditor.TidyEntities
  * @static
  * https://github.com/thorn0/tinymce.html/blob/master/tinymce.html.js
+ *
+ * Not 100% sure this is actually used or needed.
  */
 
 Roo.htmleditor.TidyEntities = {
@@ -11,32 +13,31 @@ Roo.htmleditor.TidyEntities = {
      * initialize data..
      */
     init : function (){
-    
-       
-      
-       this.namedEntities = buildEntitiesLookup(this.namedEntitiesData.join(','), 32);
+     
+        this.namedEntities = this.buildEntitiesLookup(this.namedEntitiesData, 32);
        
     },
 
 
-     buildEntitiesLookup: function(items, radix) {
+    buildEntitiesLookup: function(items, radix) {
         var i, chr, entity, lookup = {};
-        if (items) {
-            items = items.split(',');
-            radix = radix || 10;
-            // Build entities lookup table
-            for (i = 0; i < items.length; i += 2) {
-                chr = String.fromCharCode(parseInt(items[i], radix));
-                // Only add non base entities
-                if (!baseEntities[chr]) {
-                    entity = '&' + items[i + 1] + ';';
-                    lookup[chr] = entity;
-                    lookup[entity] = chr;
-                }
+        if (!items) {
+            return {};
+        }
+        items = typeof(items) == 'string' ? items.split(',') : items;
+        radix = radix || 10;
+        // Build entities lookup table
+        for (i = 0; i < items.length; i += 2) {
+            chr = String.fromCharCode(parseInt(items[i], radix));
+            // Only add non base entities
+            if (!this.baseEntities[chr]) {
+                entity = '&' + items[i + 1] + ';';
+                lookup[chr] = entity;
+                lookup[entity] = chr;
             }
-            return lookup;
         }
-        return {};
+        return lookup;
+        
     },
     
     asciiMap : {
index 4d23dcd..dfb1144 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Known issues?
  * - not tested much with 'PRE' formated elements.
- * - long text inside of inline can be wrapped and clened?
+ * 
  *
  *
  */
@@ -23,23 +23,7 @@ Roo.htmleditor.TidyWriter = function(settings)
 }
 Roo.htmleditor.TidyWriter.prototype = {
 
-
-
-    makeMap : function (items, delim, map) {
-               var i;
-               items = items || [];
-               delim = delim || ',';
-               if (typeof items == "string") {
-                       items = items.split(delim);
-               }
-               map = map || {};
-               i = items.length;
-               while (i--) {
-                       map[items[i]] = {};
-               }
-               return map;
-       },
-
     state : false,
     
     indent :  '  ',
@@ -208,11 +192,17 @@ Roo.htmleditor.TidyWriter.prototype = {
         if (text.length < 1) {
             return;
         }
-        if (this.in_pre || this.in_inline) {
-            
-            if (this.in_inline) {
-                text = text.replace(/\s/g,' ') // all line breaks to ' '
-                    .replace(/\s+/,' ')  // all white space to single white space
+        if (this.in_pre) {
+            this.html[this.html.length] =  text;
+            return;   
+        }
+        
+        if (this.in_inline) {
+            text = text.replace(/\s+/g,' ') // all white space inc line breaks to a slingle' '
+            if (text != ' ') {
+                text = text.replace(/\s+/,' ')  // all white space to single white space
+                
+                    
                 // if next tag is '<BR>', then we can trim right..
                 if (node.nextSibling &&
                     node.nextSibling.nodeType == 1 &&
@@ -227,35 +217,51 @@ Roo.htmleditor.TidyWriter.prototype = {
                 {
                     text = this.indentstr +  text.replace(/^\s+/g,'');
                 }
+                if (text.match(/\n/)) {
+                    text = text.replace(
+                        /(?![^\n]{1,64}$)([^\n]{1,64})\s/g, '$1\n' + this.indentstr
+                    );
+                    // remoeve the last whitespace / line break.
+                    text = text.replace(/\n\s+$/,'');
+                }
                 // repace long lines
-                text = this.indentstr + text.replace(
-                    /(?![^\n]{1,64}$)([^\n]{1,64})\s/g, '$1\n' + this.indentstr
-                );
-                // remoeve the last whitespace / line break.
-                text = text.replace(/\s+$/,''); 
-                
-                
                 
             }
+             
             this.html[this.html.length] =  text;
             return;   
         }
-        // see if last element was a inline element.
+        // see if previous element was a inline element.
         var indentstr = this.indentstr;
+   
+        text = text.replace(/\s+/g," "); // all whitespace into single white space.
+        
+        // should trim left?
         if (node.previousSibling &&
             node.previousSibling.nodeType == 1 &&
             Roo.htmleditor.TidyWriter.inline_elements.indexOf(node.previousSibling.nodeName) > -1)
         {
             indentstr = '';
+            
         } else {
             this.addLine();
+            text = text.replace(/^\s+/,''); // trim left
+          
         }
+        // should trim right?
+        if (node.nextSibling &&
+            node.nextSibling.nodeType == 1 &&
+            Roo.htmleditor.TidyWriter.inline_elements.indexOf(node.nextSibling.nodeName) > -1)
+        {
+          // noop
             
+        }  else {
+            text = text.replace(/\s+$/,''); // trim right
+        }
+         
+              
         
         
-        text = text.replace(/\s/g," ") // all line breaks to ' '
-                .replace(/^\s+/,'')  // leding white space
-                .replace(/\s+$/,''); // clean trailing white space
         
         if (text.length < 1) {
             return;
index c969f98..33afdca 100644 (file)
@@ -117,7 +117,9 @@ Roo.htmleditor.FilterWord
 Roo.htmleditor.FilterStyleToTag
 Roo.htmleditor.FilterLongBr
 Roo.htmleditor.FilterBlock
-Roo.htmleditor.Tidy
+Roo.htmleditor.TidySerializer
+Roo.htmleditor.TidyWriter
+Roo.htmleditor.TidyEntities
 Roo.htmleditor.KeyEnter
 
 Roo.htmleditor.Block
index 0168750..3f466c6 100644 (file)
             </span><span class="jsdoc-string">'IMG { cursor: pointer } ' </span><span class="jsdoc-syntax">+
         </span><span class="jsdoc-string">'&lt;/style&gt;'</span><span class="jsdoc-syntax">;
 
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'roo-htmleditor-body'</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'&lt;meta name=&quot;google&quot; content=&quot;notranslate&quot;&gt;'
+
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'notranslate roo-htmleditor-body'</span><span class="jsdoc-syntax">;
 
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.bodyCls.length</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">' ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.bodyCls</span><span class="jsdoc-syntax">;
         }
 
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;html&gt;&lt;head&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">st  </span><span class="jsdoc-syntax">+
+        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;html  class=&quot;notranslate&quot; translate=&quot;no&quot;&gt;&lt;head&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">st  </span><span class="jsdoc-syntax">+
             </span><span class="jsdoc-comment">//&lt;style type=&quot;text/css&quot;&gt;' +
             //'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
             //'&lt;/style&gt;' +
      * @param {String} html The HTML to be cleaned
      * return {String} The cleaned HTML
      */
-    </span><span class="jsdoc-var">cleanHtml </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">){
+    </span><span class="jsdoc-var">cleanHtml </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">)
+    {
         </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html.length </span><span class="jsdoc-syntax">&gt; 5){
             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// strip safari nonsense
             </span><span class="jsdoc-var">div.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bd.innerHTML</span><span class="jsdoc-syntax">;
 
 
+
             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.enableBlocks</span><span class="jsdoc-syntax">) {
                 </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterBlock</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">div </span><span class="jsdoc-syntax">});
             }
             </span><span class="jsdoc-comment">//?? tidy?
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tidy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.TidySerializer</span><span class="jsdoc-syntax">({
+                </span><span class="jsdoc-var">inner</span><span class="jsdoc-syntax">:  </span><span class="jsdoc-keyword">true
+            </span><span class="jsdoc-syntax">});
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html  </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tidy.serialize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">div</span><span class="jsdoc-syntax">)
 
 
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">div.innerHTML</span><span class="jsdoc-syntax">;
             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){
                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bd.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// Safari puts text-align styles on the body element!
                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">m </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bs </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">bs.match</span><span class="jsdoc-syntax">(/text-align:(.*?);/i) : </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
         //var ss = this.el.getStyles( 'background-image', 'background-repeat');
         //ss['background-attachment'] = 'fixed'; // w3c
         </span><span class="jsdoc-var">dbody.bgProperties </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'fixed'</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// ie
-        //Roo.DomHelper.applyStyles(dbody, ss);
+        </span><span class="jsdoc-var">dbody.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;translate&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;no&quot;</span><span class="jsdoc-syntax">);
+
+        </span><span class="jsdoc-comment">//Roo.DomHelper.applyStyles(dbody, ss);
         </span><span class="jsdoc-var">Roo.EventManager.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc</span><span class="jsdoc-syntax">, {
 
             </span><span class="jsdoc-string">'mouseup'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.onEditorEvent</span><span class="jsdoc-syntax">,
index d4e41d6..eaf6609 100644 (file)
             </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'img'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">contenteditable </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'false'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.image_src</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">alt </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">d.innerText.replace</span><span class="jsdoc-syntax">(/\n/g, </span><span class="jsdoc-string">&quot; &quot;</span><span class="jsdoc-syntax">), </span><span class="jsdoc-comment">// removeHTML..
+            </span><span class="jsdoc-var">alt </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">d.innerText.replace</span><span class="jsdoc-syntax">(/\n/g, </span><span class="jsdoc-string">&quot; &quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/\s+/g, </span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.trim</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-comment">// removeHTML and reduce spaces..
             </span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">: {
                 </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'auto'</span><span class="jsdoc-syntax">,
                 </span><span class="jsdoc-string">'max-width'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'100%'</span><span class="jsdoc-syntax">,
index 597ca0b..9c2f205 100644 (file)
@@ -2,7 +2,7 @@
 <span class="jsdoc-comment">/**
  * @class Roo.htmleditor.Tidy
  * Tidy HTML 
- * @cfg {Roo.HtmlEditorCore} core the editor.
+ * 
  * @constructor
  * Create a new Filter.
  * @param {Object} config Configuration options
 
 </span><span class="jsdoc-var">Roo.htmleditor.Tidy.prototype </span><span class="jsdoc-syntax">= {
 
+    </span><span class="jsdoc-comment">/**
+     *
+     * @cfg {Roo.HtmlEditorCore} core the editor.
+     */
+    </span><span class="jsdoc-var">core </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
 
-    </span><span class="jsdoc-var">wrap </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">) {
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">s.replace</span><span class="jsdoc-syntax">(/\n/g, </span><span class="jsdoc-string">&quot; &quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/(?![^\n]{1,80}$)([^\n]{1,80})\s/g, </span><span class="jsdoc-string">'$1\n'</span><span class="jsdoc-syntax">);
-    },
 
 
     </span><span class="jsdoc-var">tidy </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">) {
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ser </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.TidySerializer</span><span class="jsdoc-syntax">({
+            </span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">: 2,
+        });
+        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ser.serialize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
 
-        </span><span class="jsdoc-keyword">if  </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeType </span><span class="jsdoc-syntax">== 3) {
-            </span><span class="jsdoc-comment">// text.
-
-
-            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">node.nodeValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.wrap</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeValue.trim</span><span class="jsdoc-syntax">())</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;\n&quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;\n&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">);
-
-
-        }
-
-        </span><span class="jsdoc-keyword">if  </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeType </span><span class="jsdoc-syntax">!= 1) {
-            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
-        }
-
-
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.tagName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'BODY'</span><span class="jsdoc-syntax">) {
-
-            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.cn</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
-        }
-
-             </span><span class="jsdoc-comment">// Prints the node tagName, such as &lt;A&gt;, &lt;IMG&gt;, etc
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;&lt;&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">node.tagName </span><span class="jsdoc-syntax">+  </span><span class="jsdoc-var">this.attr</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">) ;
-
-        </span><span class="jsdoc-comment">// elements with no children..
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'IMG'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'BR'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'HR'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'INPUT'</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.tagName</span><span class="jsdoc-syntax">) &gt; -1) {
-                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'/&gt;'</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'&gt;'</span><span class="jsdoc-syntax">;
-
-
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cindent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'  '</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-comment">// tags where we will not pad the children.. (inline text tags etc..)
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'PRE'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TEXTAREA'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TD'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'A'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'SPAN'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'B'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'I'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'S'</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.tagName</span><span class="jsdoc-syntax">) &gt; -1) { </span><span class="jsdoc-comment">// or code?
-            </span><span class="jsdoc-var">cindent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-
-
-        }
-
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cn</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cindent </span><span class="jsdoc-syntax">);
-
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">cn  </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">node.tagName </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&gt;'</span><span class="jsdoc-syntax">;
-
-    },
-    </span><span class="jsdoc-var">cn</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">)
-    {
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= [];
-
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Array.from</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.childNodes</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0 ; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">ar.length </span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
-
-
-
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false   </span><span class="jsdoc-comment">// indent==false preservies everything
-                </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&gt; 0
-                &amp;&amp; </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeType </span><span class="jsdoc-syntax">== 3
-                &amp;&amp; </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeValue.length </span><span class="jsdoc-syntax">&gt; 0
-                &amp;&amp; </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeValue.match</span><span class="jsdoc-syntax">(/^\s+/)
-            ) {
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ret.length </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">ret.length</span><span class="jsdoc-syntax">-1] == </span><span class="jsdoc-string">&quot;\n&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">) {
-                    </span><span class="jsdoc-var">ret.pop</span><span class="jsdoc-syntax">(); </span><span class="jsdoc-comment">// remove line break from last?
-                </span><span class="jsdoc-syntax">}
-
-                </span><span class="jsdoc-var">ret.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot; &quot;</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// add a space if i'm a text item with a space at the front, as tidy will strip spaces.
-            </span><span class="jsdoc-syntax">}
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false
-                </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeType </span><span class="jsdoc-syntax">== 1 </span><span class="jsdoc-comment">// element - and indent is not set... 
-            </span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">ret.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;\n&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">);
-            }
-
-            </span><span class="jsdoc-var">ret.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.tidy</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">], </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">));
-            </span><span class="jsdoc-comment">// text + trailing indent 
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false
-                </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeType </span><span class="jsdoc-syntax">== 3
-                &amp;&amp; </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeValue.length </span><span class="jsdoc-syntax">&gt; 0
-                &amp;&amp; </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeValue.match</span><span class="jsdoc-syntax">(/\s+$/)
-            ){
-                </span><span class="jsdoc-var">ret.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;\n&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">);
-            }
-
-
-
-
-        }
-        </span><span class="jsdoc-comment">// what if all text?
-
-
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
-    },
-
-
-
-    </span><span class="jsdoc-var">attr </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)
-    {
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">attr </span><span class="jsdoc-syntax">= [];
-        </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">node.attributes.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
-
-            </span><span class="jsdoc-comment">// skip empty values?
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">node.attributes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.value.length</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-var">attr.push</span><span class="jsdoc-syntax">(  </span><span class="jsdoc-var">node.attributes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.name </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'=&quot;' </span><span class="jsdoc-syntax">+
-                    </span><span class="jsdoc-var">Roo.util.Format.htmlEncode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.attributes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.value</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-string">'&quot;'
-            </span><span class="jsdoc-syntax">);
-        }
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">attr.length </span><span class="jsdoc-syntax">? (</span><span class="jsdoc-string">' ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">attr.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">) ) : </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
 
     }
 
-
-
 }</span></code></body></html>
\ No newline at end of file
index 1897677..23ebd7d 100644 (file)
         <script type="text/javascript" src="../../Roo/htmleditor/BlockFigure.js"></script>
         <script type="text/javascript" src="../../Roo/htmleditor/BlockTd.js"></script>
         <script type="text/javascript" src="../../Roo/htmleditor/FilterBlock.js"></script>
-        <script type="text/javascript" src="../../Roo/htmleditor/FilterStyleToTag.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/Tidy.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/TidyEntities.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/TidySerializer.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/TidyWriter.js"></script>
 
         <script type="text/javascript" src="../../Roo/form/HtmlEditor/ToolbarContext.js"></script>
         <script type="text/javascript" src="../../Roo/menu/Item.js"></script>