rhymix/modules/editor/skins/xquared/doc/api/src_08.html
haneul 0c99858e7c editor skin에 xquared 추가
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3039 201d5d3c-b55e-5fd7-737f-ddc643e51545
2007-11-21 15:33:02 +00:00

369 lines
No EOL
83 KiB
HTML
Raw Blame History

<html><head><style>
.KEYW {color: #933;}
.COMM {color: #bbb; font-style: italic;}
.NUMB {color: #393;}
.STRN {color: #393;}
.REGX {color: #339;}
.linenumber {border-right: 1px dotted #666; color: #666; font-style: normal;}
</style></head><body><pre><span class='linenumber'> 1</span> <span class="COMM">/**
<span class='linenumber'> 2</span> * RichDom for Internet Explorer 6 and 7
<span class='linenumber'> 3</span> */</span><span class="WHIT">
<span class='linenumber'> 4</span> </span><span class="NAME">xq.RichDomTrident</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class.create</span><span class="PUNC">(</span><span class="NAME">xq.RichDom</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 5</span> </span><span class="NAME">makePlaceHolder</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 6</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.createTextNode</span><span class="PUNC">(</span><span class="STRN">" "</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 7</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 8</span>
<span class='linenumber'> 9</span> </span><span class="NAME">makePlaceHolderString</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 10</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'&nbsp;'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 11</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 12</span>
<span class='linenumber'> 13</span> </span><span class="NAME">makeEmptyParagraph</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 14</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.createElementFromHtml</span><span class="PUNC">(</span><span class="STRN">"&lt;p>&nbsp;&lt;/p>"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 15</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 16</span>
<span class='linenumber'> 17</span> </span><span class="NAME">isPlaceHolder</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 18</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 19</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 20</span>
<span class='linenumber'> 21</span> </span><span class="NAME">getOuterHTML</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 22</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">element.outerHTML</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 23</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 24</span>
<span class='linenumber'> 25</span> </span><span class="NAME">insertNode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 26</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.collapseSelection</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 27</span>
<span class='linenumber'> 28</span> </span><span class="NAME">this.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">pasteHTML</span><span class="PUNC">(</span><span class="STRN">'&lt;span id="xquared_temp">&lt;/span>'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.$</span><span class="PUNC">(</span><span class="STRN">'xquared_temp'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 30</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">node.id</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'xquared_temp'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 31</span>
<span class='linenumber'> 32</span> </span><span class="NAME">marker.replaceNode</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 33</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 34</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 35</span>
<span class='linenumber'> 36</span> </span><span class="NAME">removeTrailingWhitespace</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 37</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">block</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 38</span>
<span class='linenumber'> 39</span> </span><span class="COMM">// TODO: reimplement to handle atomic tags and so on. (use DomTree)</span><span class="WHIT">
<span class='linenumber'> 40</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.tree.isBlockContainer</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 41</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.isEmptyBlock</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 42</span>
<span class='linenumber'> 43</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">text</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">block.innerText</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 44</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lastCharCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text.charCodeAt</span><span class="PUNC">(</span><span class="NAME">text.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 45</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">text.length</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">[</span><span class="NUMB">32</span><span class="PUNC">,</span><span class="NUMB">160</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">include</span><span class="PUNC">(</span><span class="NAME">lastCharCode</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 46</span>
<span class='linenumber'> 47</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">block</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 48</span>
<span class='linenumber'> 49</span> </span><span class="KEYW">while</span><span class="PUNC">(</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">node.nodeType</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.lastChild</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 50</span>
<span class='linenumber'> 51</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 52</span>
<span class='linenumber'> 53</span> </span><span class="COMM">// DO NOT REMOVE OR MODIFY FOLLOWING CODE:</span><span class="WHIT">
<span class='linenumber'> 54</span> </span><span class="COMM">//</span><span class="WHIT">
<span class='linenumber'> 55</span> </span><span class="COMM">// Modifying following code crash IE7</span><span class="WHIT">
<span class='linenumber'> 56</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nodeValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.nodeValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 57</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">nodeValue.length</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 58</span> </span><span class="NAME">this.deleteNode</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 59</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 60</span> </span><span class="NAME">node.nodeValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nodeValue.substring</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nodeValue.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 61</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'> 62</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 63</span>
<span class='linenumber'> 64</span> </span><span class="NAME">correctEmptyElement</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 65</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">element.nodeType</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.tree.isAtomic</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 66</span>
<span class='linenumber'> 67</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">element.firstChild</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 68</span> </span><span class="NAME">this.correctEmptyElement</span><span class="PUNC">(</span><span class="NAME">element.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 69</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 70</span> </span><span class="NAME">element.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"&nbsp;"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 71</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'> 72</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 73</span>
<span class='linenumber'> 74</span> </span><span class="NAME">copyAttributes</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">from</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">to</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">copyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 75</span> </span><span class="NAME">to.mergeAttributes</span><span class="PUNC">(</span><span class="NAME">from</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">copyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 76</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 77</span>
<span class='linenumber'> 78</span> </span><span class="NAME">correctParagraph</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 79</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.hasFocus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 80</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 81</span>
<span class='linenumber'> 82</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCurrentElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 83</span>
<span class='linenumber'> 84</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">block.nodeName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"BODY"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 85</span> </span><span class="COMM">// check for atomic block element such as HR</span><span class="WHIT">
<span class='linenumber'> 86</span> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.insertNode</span><span class="PUNC">(</span><span class="NAME">this.makeEmptyParagraph</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 87</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">next</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">block.nextSibling</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 88</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.tree.isAtomic</span><span class="PUNC">(</span><span class="NAME">next</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 89</span> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.insertNodeAt</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">next</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"after"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 90</span> </span><span class="NAME">this.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 91</span>
<span class='linenumber'> 92</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nextBlock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tree.findForward</span><span class="PUNC">(</span><span class="WHIT">
<span class='linenumber'> 93</span> </span><span class="NAME">block</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 94</span> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.tree.isBlock</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.tree.isBlockOnlyContainer</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT">
<span class='linenumber'> 95</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 96</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">nextBlock</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 97</span> </span><span class="NAME">this.deleteNode</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 98</span> </span><span class="NAME">this.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">nextBlock</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 99</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>100</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>101</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>102</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nextBlock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tree.findForward</span><span class="PUNC">(</span><span class="WHIT">
<span class='linenumber'>103</span> </span><span class="NAME">block</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>104</span> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.tree.isBlock</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.tree.isBlockOnlyContainer</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT">
<span class='linenumber'>105</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>106</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">nextBlock</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>107</span> </span><span class="NAME">this.deleteNode</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>108</span> </span><span class="NAME">this.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">nextBlock</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>109</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>110</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>111</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>112</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>113</span> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>114</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">block.nodeType</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">block.parentNode</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>115</span>
<span class='linenumber'>116</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.tree.hasMixedContents</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>117</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.pushMarker</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>118</span> </span><span class="NAME">this.wrapAllInlineOrTextNodesAs</span><span class="PUNC">(</span><span class="STRN">"P"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">block</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>119</span> </span><span class="NAME">this.popMarker</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>120</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>121</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.tree.isTextOrInlineNode</span><span class="PUNC">(</span><span class="NAME">block.previousSibling</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.tree.isTextOrInlineNode</span><span class="PUNC">(</span><span class="NAME">block.nextSibling</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.tree.hasMixedContents</span><span class="PUNC">(</span><span class="NAME">block.parentNode</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>122</span> </span><span class="COMM">// IE?<3F>서??Block<63><6B>?Inline/Text<78><74>??<3F>접??경우 getCurrentElement ?<3F>이 ?<3F>작?<3F>한??</span><span class="WHIT">
<span class='linenumber'>123</span> </span><span class="COMM">// ?<3F>라???<3F>재 Block 주<>?까<>? ?<3F>번???<3F>아주어???<3F>다.</span><span class="WHIT">
<span class='linenumber'>124</span> </span><span class="NAME">this.wrapAllInlineOrTextNodesAs</span><span class="PUNC">(</span><span class="STRN">"P"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">block.parentNode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>125</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>126</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>127</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>128</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>129</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>130</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>131</span>
<span class='linenumber'>132</span>
<span class='linenumber'>133</span>
<span class='linenumber'>134</span> </span><span class="COMM">//////</span><span class="WHIT">
<span class='linenumber'>135</span> </span><span class="COMM">// Commands</span><span class="WHIT">
<span class='linenumber'>136</span> </span><span class="NAME">execCommand</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">commandId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">param</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>137</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.doc.execCommand</span><span class="PUNC">(</span><span class="NAME">commandId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">param</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>138</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>139</span>
<span class='linenumber'>140</span> </span><span class="NAME">applyBackgroundColor</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">color</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>141</span> </span><span class="NAME">this.execCommand</span><span class="PUNC">(</span><span class="STRN">"BackColor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">color</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>142</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>143</span>
<span class='linenumber'>144</span> </span><span class="NAME">applyEmphasis</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>145</span> </span><span class="COMM">// Generate &lt;i> tag. It will be replaced with &lt;emphasis> tag during cleanup phase.</span><span class="WHIT">
<span class='linenumber'>146</span> </span><span class="NAME">this.execCommand</span><span class="PUNC">(</span><span class="STRN">"Italic"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>147</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>148</span> </span><span class="NAME">applyStrongEmphasis</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>149</span> </span><span class="COMM">// Generate &lt;b> tag. It will be replaced with &lt;strong> tag during cleanup phase.</span><span class="WHIT">
<span class='linenumber'>150</span> </span><span class="NAME">this.execCommand</span><span class="PUNC">(</span><span class="STRN">"Bold"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>151</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>152</span> </span><span class="NAME">applyStrike</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>153</span> </span><span class="COMM">// Generate &lt;strike> tag. It will be replaced with &lt;style class="strike"> tag during cleanup phase.</span><span class="WHIT">
<span class='linenumber'>154</span> </span><span class="NAME">this.execCommand</span><span class="PUNC">(</span><span class="STRN">"strikethrough"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>155</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>156</span> </span><span class="NAME">applyUnderline</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>157</span> </span><span class="COMM">// Generate &lt;u> tag. It will be replaced with &lt;em class="underline"> tag during cleanup phase.</span><span class="WHIT">
<span class='linenumber'>158</span> </span><span class="NAME">this.execCommand</span><span class="PUNC">(</span><span class="STRN">"underline"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>159</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>160</span> </span><span class="NAME">applyRemoveFormat</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>161</span> </span><span class="NAME">this.execCommand</span><span class="PUNC">(</span><span class="STRN">"RemoveFormat"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>162</span> </span><span class="NAME">this.execCommand</span><span class="PUNC">(</span><span class="STRN">"Unlink"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>163</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>164</span> </span><span class="NAME">execHeading</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">level</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>165</span> </span><span class="NAME">this.execCommand</span><span class="PUNC">(</span><span class="STRN">"FormatBlock"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"&lt;H"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">level</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">">"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>166</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>167</span>
<span class='linenumber'>168</span>
<span class='linenumber'>169</span>
<span class='linenumber'>170</span> </span><span class="COMM">//////</span><span class="WHIT">
<span class='linenumber'>171</span> </span><span class="COMM">// Focus/Caret/Selection</span><span class="WHIT">
<span class='linenumber'>172</span>
<span class='linenumber'>173</span> </span><span class="NAME">focus</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>174</span> </span><span class="NAME">this.win.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>175</span>
<span class='linenumber'>176</span> </span><span class="COMM">// ?<3F>게 ?<3F><EFBFBD><EC9CBC>?초기??caret??P 밖에 ?<3F>치?<3F>면?? // getCurrentElement<6E><74>??<3F>면 P<><50>?리턴?<3F>는 기이???<3F>상??발생.</span><span class="WHIT">
<span class='linenumber'>177</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._focusedBefore</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>178</span> </span><span class="NAME">this.correctParagraph</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>179</span> </span><span class="NAME">this.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">this.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>180</span> </span><span class="NAME">this._focusedBefore</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>181</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>182</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>183</span>
<span class='linenumber'>184</span> </span><span class="NAME">sel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>185</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.doc.selection</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>186</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>187</span>
<span class='linenumber'>188</span> </span><span class="NAME">rng</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>189</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>190</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>191</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">sel</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">sel.createRange</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>192</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">ignored</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>193</span> </span><span class="COMM">// IE often fails</span><span class="WHIT">
<span class='linenumber'>194</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>195</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>196</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>197</span>
<span class='linenumber'>198</span> </span><span class="NAME">hasSelection</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>199</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">selectionType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">type.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>200</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="STRN">"none"</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">selectionType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>201</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="STRN">"text"</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">selectionType</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.getSelectionAsHtml</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>202</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>203</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>204</span> </span><span class="NAME">deleteSelection</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>205</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.getSelectionAsText</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.sel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>206</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>207</span>
<span class='linenumber'>208</span> </span><span class="NAME">placeCaretAtStartOf</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>209</span> </span><span class="COMM">// If there's no empty span, caret sometimes moves into a previous node.</span><span class="WHIT">
<span class='linenumber'>210</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ph</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.insertNodeAt</span><span class="PUNC">(</span><span class="NAME">this.createElement</span><span class="PUNC">(</span><span class="STRN">"SPAN"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">element</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"start"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>211</span> </span><span class="NAME">this.selectElement</span><span class="PUNC">(</span><span class="NAME">ph</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>212</span> </span><span class="NAME">this.collapseSelection</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>213</span> </span><span class="NAME">this.deleteNode</span><span class="PUNC">(</span><span class="NAME">ph</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>214</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>215</span>
<span class='linenumber'>216</span> </span><span class="NAME">selectElement</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">entireElement</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>217</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="STRN">"[element] is null"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>218</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">element.nodeType</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="STRN">"[element] is not an element"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>219</span>
<span class='linenumber'>220</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rng</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>221</span> </span><span class="NAME">rng.moveToElementText</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>222</span> </span><span class="NAME">rng.select</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>223</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>224</span>
<span class='linenumber'>225</span> </span><span class="NAME">selectBlocksBetween</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">start</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">end</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>226</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rng</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>227</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rngTemp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>228</span>
<span class='linenumber'>229</span> </span><span class="NAME">rngTemp.moveToElementText</span><span class="PUNC">(</span><span class="NAME">start</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>230</span> </span><span class="NAME">rng.setEndPoint</span><span class="PUNC">(</span><span class="STRN">"StartToStart"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">rngTemp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>231</span>
<span class='linenumber'>232</span> </span><span class="NAME">rngTemp.moveToElementText</span><span class="PUNC">(</span><span class="NAME">end</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>233</span> </span><span class="NAME">rng.setEndPoint</span><span class="PUNC">(</span><span class="STRN">"EndToEnd"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">rngTemp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>234</span>
<span class='linenumber'>235</span> </span><span class="NAME">rng.select</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>236</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>237</span>
<span class='linenumber'>238</span> </span><span class="NAME">collapseSelection</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">toStart</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>239</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rng</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>240</span> </span><span class="NAME">rng.collapse</span><span class="PUNC">(</span><span class="NAME">toStart</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>241</span> </span><span class="NAME">rng.select</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>242</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>243</span>
<span class='linenumber'>244</span> </span><span class="NAME">getSelectionAsHtml</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>245</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rng</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='linenumber'>246</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rng</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">rng.htmlText</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">rng.htmlText</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">""</span><span class="WHIT">
<span class='linenumber'>247</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>248</span>
<span class='linenumber'>249</span> </span><span class="NAME">getSelectionAsText</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>250</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rng</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>251</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rng</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">rng.text</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">rng.text</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>252</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>253</span>
<span class='linenumber'>254</span> </span><span class="NAME">hasImportantAttributes</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>255</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">element.id</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">element.className</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">element.style.cssText</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>256</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>257</span>
<span class='linenumber'>258</span> </span><span class="NAME">isEmptyBlock</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>259</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">element.hasChildNodes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>260</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">element.nodeType</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">element.nodeValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>261</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"&nbsp;"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">include</span><span class="PUNC">(</span><span class="NAME">element.innerHTML</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>262</span>
<span class='linenumber'>263</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>264</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>265</span>
<span class='linenumber'>266</span> </span><span class="NAME">getLastChild</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>267</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">element.hasChildNodes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>268</span>
<span class='linenumber'>269</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$A</span><span class="PUNC">(</span><span class="NAME">element.childNodes</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">reverse</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>270</span>
<span class='linenumber'>271</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">nodes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>272</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">nodeType</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">nodeValue.length</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">nodes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>273</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>274</span>
<span class='linenumber'>275</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>276</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>277</span>
<span class='linenumber'>278</span> </span><span class="NAME">getCurrentElement</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>279</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.sel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">type.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"control"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">item</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>280</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">parentElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>281</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>282</span>
<span class='linenumber'>283</span> </span><span class="NAME">getBlockElementAtSelectionStart</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>284</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rng</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>285</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rng.duplicate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>286</span> </span><span class="NAME">dup.collapse</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>287</span>
<span class='linenumber'>288</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getParentBlockElementOf</span><span class="PUNC">(</span><span class="NAME">dup.parentElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>289</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">result.nodeName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"BODY"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">result.firstChild</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>290</span>
<span class='linenumber'>291</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">result</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>292</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>293</span>
<span class='linenumber'>294</span> </span><span class="NAME">getBlockElementAtSelectionEnd</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>295</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rng</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>296</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rng.duplicate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>297</span> </span><span class="NAME">dup.collapse</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>298</span>
<span class='linenumber'>299</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getParentBlockElementOf</span><span class="PUNC">(</span><span class="NAME">dup.parentElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>300</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">result.nodeName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"BODY"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">result.lastChild</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>301</span>
<span class='linenumber'>302</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">result</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>303</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>304</span>
<span class='linenumber'>305</span> </span><span class="NAME">getBlockElementsAtSelectionEdge</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">naturalOrder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ignoreEmptyEdges</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>306</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'>307</span> </span><span class="NAME">this.getBlockElementAtSelectionStart</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>308</span> </span><span class="NAME">this.getBlockElementAtSelectionEnd</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='linenumber'>309</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>310</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>311</span>
<span class='linenumber'>312</span> </span><span class="NAME">isCaretAtBlockStart</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>313</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.isCaretAtEmptyBlock</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>314</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>315</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>316</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.pushMarker</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>317</span>
<span class='linenumber'>318</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">isTrue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>319</span> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getFirstChild</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>320</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>321</span> </span><span class="NAME">isTrue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>322</span> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>323</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>324</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>325</span>
<span class='linenumber'>326</span> </span><span class="NAME">this.popMarker</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>327</span>
<span class='linenumber'>328</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">isTrue</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>329</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>330</span> </span><span class="NAME">isCaretAtBlockEnd</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>331</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.isCaretAtEmptyBlock</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>332</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>333</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>334</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.pushMarker</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>335</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">isTrue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>336</span> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getLastChild</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>337</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nodeValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.nodeValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>338</span>
<span class='linenumber'>339</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>340</span> </span><span class="NAME">isTrue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>341</span> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>342</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="WHIT">
<span class='linenumber'>343</span> </span><span class="NAME">node.nodeType</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
<span class='linenumber'>344</span> </span><span class="NAME">node.previousSibling</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
<span class='linenumber'>345</span> </span><span class="PUNC">(</span><span class="NAME">nodeValue</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">nodeValue.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">nodeValue.charCodeAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">160</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='linenumber'>346</span> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>347</span> </span><span class="NAME">isTrue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>348</span> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>349</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>350</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>351</span>
<span class='linenumber'>352</span> </span><span class="NAME">this.popMarker</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>353</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">isTrue</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>354</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>355</span> </span><span class="NAME">saveSelection</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>356</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>357</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>358</span> </span><span class="NAME">restoreSelection</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">bookmark</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>359</span> </span><span class="NAME">bookmark.select</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>360</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>361</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>362</span> </span></pre></body></html>