#

API Docs for: 3.10.3
Show: Inherited Protected Private Deprecated

# File: editor/js/editor-para-ie.js

        /**
         * Extends EditorParaBase with IE support
         * @class Plugin.EditorParaIE
         * @extends Plugin.EditorParaBase
         * @constructor
         * @module editor
         * @submodule editor-para-ie
         */

        var EditorParaIE = function() {
            EditorParaIE.superclass.constructor.apply(this, arguments);
        }, HOST = 'host', NODE_CHANGE = 'nodeChange',
        P = 'p';

        Y.extend(EditorParaIE, Y.Plugin.EditorParaBase, {
            /**
            * nodeChange handler to handle fixing an empty document.
            * @private
            * @method _onNodeChange
            */
            _onNodeChange: function(e) {
                var host = this.get(HOST), inst = host.getInstance(),
                    btag = inst.EditorSelection.DEFAULT_BLOCK_TAG,
                    prev, LAST_CHILD = ':last-child', para, b, para2,
                    lc, lc2, found = false;

                switch (e.changedType) {
                    case 'enter-up':
                        para = ((this._lastPara) ? this._lastPara : e.changedNode);
                        b = para.one('br.yui-cursor');

                        if (this._lastPara) {
                            delete this._lastPara;
                        }

                        if (b) {
                            if (b.previous() || b.next()) {
                                if (b.ancestor(P)) {
                                    b.remove();
                                }
                            }
                        }
                        if (!para.test(btag)) {
                            para2 = para.ancestor(btag);
                            if (para2) {
                                para = para2;
                                para2 = null;
                            }
                        }
                        if (para.test(btag)) {
                            prev = para.previous();
                            if (prev) {
                                lc = prev.one(LAST_CHILD);
                                while (!found) {
                                    if (lc) {
                                        lc2 = lc.one(LAST_CHILD);
                                        if (lc2) {
                                            lc = lc2;
                                        } else {
                                            found = true;
                                        }
                                    } else {
                                        found = true;
                                    }
                                }
                                if (lc) {
                                    host.copyStyles(lc, para);
                                }
                            }
                        }
                        break;
                    case 'enter':
                        if (e.changedNode.test('br')) {
                            e.changedNode.remove();
                        } else if (e.changedNode.test('p, span')) {
                            b = e.changedNode.one('br.yui-cursor');
                            if (b) {
                                b.remove();
                            }
                        }
                        break;
                }
            },
            initializer: function() {
                var host = this.get(HOST);
                if (host.editorBR) {
                    Y.error('Can not plug EditorPara and EditorBR at the same time.');
                    return;
                }

                host.on(NODE_CHANGE, Y.bind(this._onNodeChange, this));
            }
        }, {
            /**
            * editorPara
            * @static
            * @property NAME
            */
            NAME: 'editorPara',
            /**
            * editorPara
            * @static
            * @property NS
            */
            NS: 'editorPara',
            ATTRS: {
                host: {
                    value: false
                }
            }
        });

        Y.namespace('Plugin');

        Y.Plugin.EditorPara = EditorParaIE;