]>
git.wh0rd.org - tt-rss.git/blob - lib/dijit/_editor/selection.js
2 define("dijit/_editor/selection",["dojo/dom","dojo/_base/lang","dojo/sniff","dojo/_base/window","../main"],function(_1
,_2
,_3
,_4
,_5
){var _6
={getType:function(){if(_4
.doc
.getSelection
){var _7
="text";var _8
;try{_8
=_4
.global
.getSelection();}catch(e
){}if(_8
&&_8
.rangeCount
==1){var _9
=_8
.getRangeAt(0);if((_9
.startContainer
==_9
.endContainer
)&&((_9
.endOffset
-_9
.startOffset
)==1)&&(_9
.startContainer
.nodeType
!=3)){_7
="control";}}return _7
;}else{return _4
.doc
.selection
.type
.toLowerCase();}},getSelectedText:function(){if(_4
.doc
.getSelection
){var _a
=_4
.global
.getSelection();return _a
?_a
.toString():"";}else{if(_5
._editor
.selection
.getType()=="control"){return null;}return _4
.doc
.selection
.createRange().text
;}},getSelectedHtml:function(){if(_4
.doc
.getSelection
){var _b
=_4
.global
.getSelection();if(_b
&&_b
.rangeCount
){var i
;var _c
="";for(i
=0;i
<_b
.rangeCount
;i
++){var _d
=_b
.getRangeAt(i
).cloneContents();var _e
=_4
.doc
.createElement("div");_e
.appendChild(_d
);_c
+=_e
.innerHTML
;}return _c
;}return null;}else{if(_5
._editor
.selection
.getType()=="control"){return null;}return _4
.doc
.selection
.createRange().htmlText
;}},getSelectedElement:function(){if(_5
._editor
.selection
.getType()=="control"){if(_4
.doc
.getSelection
){var _f
=_4
.global
.getSelection();return _f
.anchorNode
.childNodes
[_f
.anchorOffset
];}else{var _10
=_4
.doc
.selection
.createRange();if(_10
&&_10
.item
){return _4
.doc
.selection
.createRange().item(0);}}}return null;},getParentElement:function(){if(_5
._editor
.selection
.getType()=="control"){var p
=this.getSelectedElement();if(p
){return p
.parentNode
;}}else{if(_4
.doc
.getSelection
){var _11
=_4
.global
.getSelection();if(_11
){var _12
=_11
.anchorNode
;while(_12
&&(_12
.nodeType
!=1)){_12
=_12
.parentNode
;}return _12
;}}else{var r
=_4
.doc
.selection
.createRange();r
.collapse(true);return r
.parentElement();}}return null;},hasAncestorElement:function(_13
){return this.getAncestorElement
.apply(this,arguments
)!=null;},getAncestorElement:function(_14
){var _15
=this.getSelectedElement()||this.getParentElement();return this.getParentOfType(_15
,arguments
);},isTag:function(_16
,_17
){if(_16
&&_16
.tagName
){var _18
=_16
.tagName
.toLowerCase();for(var i
=0;i
<_17
.length
;i
++){var _19
=String(_17
[i
]).toLowerCase();if(_18
==_19
){return _19
;}}}return "";},getParentOfType:function(_1a
,_1b
){while(_1a
){if(this.isTag(_1a
,_1b
).length
){return _1a
;}_1a
=_1a
.parentNode
;}return null;},collapse:function(_1c
){if(_4
.doc
.getSelection
){var _1d
=_4
.global
.getSelection();if(_1d
.removeAllRanges
){if(_1c
){_1d
.collapseToStart();}else{_1d
.collapseToEnd();}}else{_1d
.collapse(_1c
);}}else{var _1e
=_4
.doc
.selection
.createRange();_1e
.collapse(_1c
);_1e
.select();}},remove:function(){var sel
=_4
.doc
.selection
;if(_4
.doc
.getSelection
){sel
=_4
.global
.getSelection();sel
.deleteFromDocument();return sel
;}else{if(sel
.type
.toLowerCase()!="none"){sel
.clear();}return sel
;}},selectElementChildren:function(_1f
,_20
){var doc
=_4
.doc
;var _21
;_1f
=_1
.byId(_1f
);if(_4
.doc
.getSelection
){var _22
=_4
.global
.getSelection();if(_3("opera")){if(_22
.rangeCount
){_21
=_22
.getRangeAt(0);}else{_21
=doc
.createRange();}_21
.setStart(_1f
,0);_21
.setEnd(_1f
,(_1f
.nodeType
==3)?_1f
.length
:_1f
.childNodes
.length
);_22
.addRange(_21
);}else{_22
.selectAllChildren(_1f
);}}else{_21
=_1f
.ownerDocument
.body
.createTextRange();_21
.moveToElementText(_1f
);if(!_20
){try{_21
.select();}catch(e
){}}}},selectElement:function(_23
,_24
){var _25
;_23
=_1
.byId(_23
);var doc
=_23
.ownerDocument
;var _26
=_4
.global
;if(doc
.getSelection
){var _27
=_26
.getSelection();_25
=doc
.createRange();if(_27
.removeAllRanges
){if(_3("opera")){if(_27
.getRangeAt(0)){_25
=_27
.getRangeAt(0);}}_25
.selectNode(_23
);_27
.removeAllRanges();_27
.addRange(_25
);}}else{try{var tg
=_23
.tagName
?_23
.tagName
.toLowerCase():"";if(tg
==="img"||tg
==="table"){_25
=_4
.body(doc
).createControlRange();}else{_25
=_4
.body(doc
).createRange();}_25
.addElement(_23
);if(!_24
){_25
.select();}}catch(e
){this.selectElementChildren(_23
,_24
);}}},inSelection:function(_28
){if(_28
){var _29
;var doc
=_4
.doc
;var _2a
;if(_4
.doc
.getSelection
){var sel
=_4
.global
.getSelection();if(sel
&&sel
.rangeCount
>0){_2a
=sel
.getRangeAt(0);}if(_2a
&&_2a
.compareBoundaryPoints
&&doc
.createRange
){try{_29
=doc
.createRange();_29
.setStart(_28
,0);if(_2a
.compareBoundaryPoints(_2a
.START_TO_END
,_29
)===1){return true;}}catch(e
){}}}else{_2a
=doc
.selection
.createRange();try{_29
=_28
.ownerDocument
.body
.createControlRange();if(_29
){_29
.addElement(_28
);}}catch(e1
){try{_29
=_28
.ownerDocument
.body
.createTextRange();_29
.moveToElementText(_28
);}catch(e2
){}}if(_2a
&&_29
){if(_2a
.compareEndPoints("EndToStart",_29
)===1){return true;}}}}return false;}};_2
.setObject("dijit._editor.selection",_6
);return _6
;});