src/cm/media/js/lib/yui/yui3-3.15.0/build/content-editable/content-editable.js
author ymh <ymh.work@gmail.com>
Fri, 14 Mar 2014 13:16:10 +0100
changeset 611 fa66f4bb1563
parent 602 e16a97fb364a
permissions -rw-r--r--
add some more custom config and put every thing in comment in the custom.yaml template
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('content-editable', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
    /*jshint maxlen: 500 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
    * Creates a component to work with an elemment.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
    * @class ContentEditable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
    * @for ContentEditable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
    * @extends Y.Plugin.Base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
    * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
    * @module editor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
    * @submodule content-editable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
    var Lang = Y.Lang,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
        YNode = Y.Node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
        EVENT_CONTENT_READY = 'contentready',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
        EVENT_READY = 'ready',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
        TAG_PARAGRAPH = 'p',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
        BLUR = 'blur',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
        CONTAINER = 'container',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
        CONTENT_EDITABLE = 'contentEditable',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
        EMPTY = '',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
        FOCUS = 'focus',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
        HOST = 'host',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
        INNER_HTML = 'innerHTML',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
        KEY = 'key',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
        PARENT_NODE = 'parentNode',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
        PASTE = 'paste',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
        TEXT = 'Text',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
        USE = 'use',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
    ContentEditable = function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
        ContentEditable.superclass.constructor.apply(this, arguments);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
    Y.extend(ContentEditable, Y.Plugin.Base, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
        * Internal reference set when render is called.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
        * @property _rendered
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
        * @type Boolean
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
        _rendered: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
        * Internal reference to the YUI instance bound to the element
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
        * @property _instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
        * @type YUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
        _instance: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
        * Initializes the ContentEditable instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
        * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
        * @method initializer
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
        initializer: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
            var host = this.get(HOST);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
            if (host) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
                host.frame = this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
            this._eventHandles = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
            this.publish(EVENT_READY, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
                emitFacade: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
                defaultFn: this._defReadyFn
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
        * Destroys the instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
        * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
        * @method destructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
        destructor: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
            new Y.EventHandle(this._eventHandles).detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
            this._container.removeAttribute(CONTENT_EDITABLE);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
        * Generic handler for all DOM events fired by the Editor container. This handler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
        * takes the current EventFacade and augments it to fire on the ContentEditable host. It adds two new properties
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
        * to the EventFacade called frameX and frameY which adds the scroll and xy position of the ContentEditable element
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
        * to the original pageX and pageY of the event so external nodes can be positioned over the element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
        * In case of ContentEditable element these will be equal to pageX and pageY of the container.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
        * @method _onDomEvent
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
        * @param {EventFacade} e
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
        _onDomEvent: function(e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
            var xy;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
            e.frameX = e.frameY = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
            if (e.pageX > 0 || e.pageY > 0) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
                if (e.type.substring(0, 3) !== KEY) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
                    xy = this._container.getXY();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
                    e.frameX = xy[0];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
                    e.frameY = xy[1];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
            e.frameTarget = e.target;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
            e.frameCurrentTarget = e.currentTarget;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
            e.frameEvent = e;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
            this.fire('dom:' + e.type, e);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
        * Simple pass thru handler for the paste event so we can do content cleanup
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
        * @method _DOMPaste
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
        * @param {EventFacade} e
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
        _DOMPaste: function(e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
            var inst = this.getInstance(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
                data = EMPTY, win = inst.config.win;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
            if (e._event.originalTarget) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
                data = e._event.originalTarget;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
            if (e._event.clipboardData) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
                data = e._event.clipboardData.getData(TEXT);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
            if (win.clipboardData) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
                data = win.clipboardData.getData(TEXT);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
                if (data === EMPTY) { // Could be empty, or failed
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
                    // Verify failure
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
                    if (!win.clipboardData.setData(TEXT, data)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
                        data = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
            e.frameTarget = e.target;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
            e.frameCurrentTarget = e.currentTarget;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
            e.frameEvent = e;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
            if (data) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
                e.clipboardData = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
                    data: data,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
                    getData: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
                        return data;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
                };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
                e.clipboardData = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
            this.fire('dom:paste', e);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
        * Binds DOM events and fires the ready event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
        * @method _defReadyFn
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
        _defReadyFn: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
            var inst = this.getInstance(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
                container = this.get(CONTAINER);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
            Y.each(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
                ContentEditable.DOM_EVENTS,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
                function(value, key) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
                    var fn = Y.bind(this._onDomEvent, this),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
                        kfn = ((Y.UA.ie && ContentEditable.THROTTLE_TIME > 0) ? Y.throttle(fn, ContentEditable.THROTTLE_TIME) : fn);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
                    if (!inst.Node.DOM_EVENTS[key]) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
                        inst.Node.DOM_EVENTS[key] = 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
                    if (value === 1) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
                        if (key !== FOCUS && key !== BLUR && key !== PASTE) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
                            if (key.substring(0, 3) === KEY) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
                                //Throttle key events in IE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
                                this._eventHandles.push(container.on(key, kfn, container));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
                            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
                                this._eventHandles.push(container.on(key, fn, container));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
                            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
                },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
                this
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
            );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
            inst.Node.DOM_EVENTS.paste = 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
            this._eventHandles.push(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
                container.on(PASTE, Y.bind(this._DOMPaste, this), container),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
                container.on(FOCUS, Y.bind(this._onDomEvent, this), container),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
                container.on(BLUR, Y.bind(this._onDomEvent, this), container)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
            );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
            inst.__use = inst.use;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
            inst.use = Y.bind(this.use, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
        * Called once the content is available in the ContentEditable element and calls the final use call
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
        * @method _onContentReady
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
        * on the internal instance so that the modules are loaded properly.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
        _onContentReady: function(event) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
            if (!this._ready) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
                this._ready = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
                var inst = this.getInstance(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
                    args = Y.clone(this.get(USE));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
                this.fire(EVENT_CONTENT_READY);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
                if (event) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
                    inst.config.doc = YNode.getDOMNode(event.target);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
                args.push(Y.bind(function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
                    if (inst.EditorSelection) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
                        inst.EditorSelection.DEFAULT_BLOCK_TAG = this.get('defaultblock');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
                        inst.EditorSelection.ROOT = this.get(CONTAINER);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
                    this.fire(EVENT_READY);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
                }, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
                inst.use.apply(inst, args);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
        * Retrieves defaultblock value from host attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
        * @method _getDefaultBlock
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
        * @return {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
        _getDefaultBlock: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
            return this._getHostValue('defaultblock');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
        * Retrieves dir value from host attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
        * @method _getDir
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
        * @return {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
        _getDir: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
            return this._getHostValue('dir');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
        * Retrieves extracss value from host attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
        * @method _getExtraCSS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
        * @return {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
        _getExtraCSS: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
            return this._getHostValue('extracss');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
        * Get the content from the container
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
        * @method _getHTML
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
        * @param {String} html The raw HTML from the container.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
        * @return {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
        _getHTML: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
            var html, container;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   288
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   289
            if (this._ready) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   290
                container = this.get(CONTAINER);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   291
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   292
                html = container.get(INNER_HTML);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   293
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   294
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   295
            return html;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   296
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   297
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   298
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   299
        * Retrieves a value from host attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   300
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   301
        * @method _getHostValue
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   302
        * @param {attr} The attribute which value should be returned from the host
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   303
        * @return {String|Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   304
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   305
        _getHostValue: function(attr) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   306
            var host = this.get(HOST);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   307
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   308
            if (host) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   309
                return host.get(attr);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   310
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   311
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   312
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   313
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   314
        * Set the content of the container
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   315
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   316
        * @method _setHTML
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   317
        * @param {String} html The raw HTML to set to the container.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   318
        * @return {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   319
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   320
        _setHTML: function(html) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   321
            if (this._ready) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   322
                var container = this.get(CONTAINER);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   323
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   324
                container.set(INNER_HTML, html);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   325
            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   326
                //This needs to be wrapped in a contentready callback for the !_ready state
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   327
                this.once(EVENT_CONTENT_READY, Y.bind(this._setHTML, this, html));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   328
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   329
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   330
            return html;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   331
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   332
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   333
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   334
        * Sets the linked CSS on the instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   335
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   336
        * @method _setLinkedCSS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   337
        * @param {String} css The linkedcss value
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   338
        * @return {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   339
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   340
        _setLinkedCSS: function(css) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   341
            if (this._ready) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   342
                var inst = this.getInstance();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   343
                inst.Get.css(css);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   344
            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   345
                //This needs to be wrapped in a contentready callback for the !_ready state
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   346
                this.once(EVENT_CONTENT_READY, Y.bind(this._setLinkedCSS, this, css));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   347
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   348
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   349
            return css;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   350
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   351
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   352
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   353
        * Sets the dir (language direction) attribute on the container.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   354
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   355
        * @method _setDir
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   356
        * @param {String} value The language direction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   357
        * @return {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   358
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   359
        _setDir: function(value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   360
            var container;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   361
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   362
            if (this._ready) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   363
                container = this.get(CONTAINER);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   364
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   365
                container.setAttribute('dir', value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   366
            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   367
                //This needs to be wrapped in a contentready callback for the !_ready state
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   368
                this.once(EVENT_CONTENT_READY, Y.bind(this._setDir, this, value));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   369
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   370
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   371
            return value;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   372
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   373
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   374
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   375
        * Set's the extra CSS on the instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   376
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   377
        * @method _setExtraCSS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   378
        * @param {String} css The CSS style to be set as extra css
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   379
        * @return {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   380
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   381
        _setExtraCSS: function(css) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   382
            if (this._ready) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   383
                if (css) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   384
                    var inst = this.getInstance(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   385
                        head = inst.one('head');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   386
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   387
                    if (this._extraCSSNode) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   388
                        this._extraCSSNode.remove();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   389
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   390
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   391
                    this._extraCSSNode = YNode.create('<style>' + css + '</style>');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   392
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   393
                    head.append(this._extraCSSNode);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   394
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   395
            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   396
                //This needs to be wrapped in a contentready callback for the !_ready state
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   397
                this.once(EVENT_CONTENT_READY, Y.bind(this._setExtraCSS, this, css));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   398
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   399
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   400
            return css;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   401
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   402
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   403
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   404
        * Sets the language value on the instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   405
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   406
        * @method _setLang
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   407
        * @param {String} value The language to be set
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   408
        * @return {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   409
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   410
        _setLang: function(value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   411
            var container;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   412
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   413
            if (this._ready) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   414
                container = this.get(CONTAINER);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   415
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   416
                container.setAttribute('lang', value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   417
            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   418
                //This needs to be wrapped in a contentready callback for the !_ready state
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   419
                this.once(EVENT_CONTENT_READY, Y.bind(this._setLang, this, value));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   420
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   421
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   422
            return value;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   423
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   424
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   425
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   426
        * Called from the first YUI instance that sets up the internal instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   427
        * This loads the content into the ContentEditable element and attaches the contentready event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   428
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   429
        * @method _instanceLoaded
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   430
        * @param {YUI} inst The internal YUI instance bound to the ContentEditable element
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   431
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   432
        _instanceLoaded: function(inst) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   433
            this._instance = inst;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   434
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   435
            this._onContentReady();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   436
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   437
            var doc = this._instance.config.doc;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   438
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   439
            if (!Y.UA.ie) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   440
                try {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   441
                    //Force other browsers into non CSS styling
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   442
                    doc.execCommand('styleWithCSS', false, false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   443
                    doc.execCommand('insertbronreturn', false, false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   444
                } catch (err) {}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   445
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   446
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   447
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   448
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   449
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   450
        * Validates linkedcss property
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   451
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   452
        * @method _validateLinkedCSS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   453
        * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   454
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   455
        _validateLinkedCSS: function(value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   456
            return Lang.isString(value) || Lang.isArray(value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   457
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   458
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   459
        //BEGIN PUBLIC METHODS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   460
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   461
        * This is a scoped version of the normal YUI.use method & is bound to the ContentEditable element
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   462
        * At setup, the inst.use method is mapped to this method.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   463
        * @method use
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   464
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   465
        use: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   466
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   467
            var inst = this.getInstance(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   468
                args = Y.Array(arguments),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   469
                callback = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   470
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   471
            if (Lang.isFunction(args[args.length - 1])) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   472
                callback = args.pop();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   473
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   474
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   475
            if (callback) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   476
                args.push(function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   477
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   478
                    callback.apply(inst, arguments);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   479
                });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   480
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   481
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   482
            return inst.__use.apply(inst, args);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   483
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   484
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   485
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   486
        * A delegate method passed to the instance's delegate method
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   487
        * @method delegate
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   488
        * @param {String} type The type of event to listen for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   489
        * @param {Function} fn The method to attach
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   490
        * @param {String, Node} cont The container to act as a delegate, if no "sel" passed, the container is assumed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   491
        * @param {String} sel The selector to match in the event (optional)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   492
        * @return {EventHandle} The Event handle returned from Y.delegate
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   493
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   494
        delegate: function(type, fn, cont, sel) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   495
            var inst = this.getInstance();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   496
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   497
            if (!inst) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   498
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   499
                return false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   500
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   501
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   502
            if (!sel) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   503
                sel = cont;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   504
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   505
                cont = this.get(CONTAINER);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   506
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   507
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   508
            return inst.delegate(type, fn, cont, sel);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   509
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   510
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   511
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   512
        * Get a reference to the internal YUI instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   513
        * @method getInstance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   514
        * @return {YUI} The internal YUI instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   515
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   516
        getInstance: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   517
            return this._instance;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   518
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   519
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   520
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   521
        * @method render
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   522
        * @param {String/HTMLElement/Node} node The node to render to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   523
        * @return {ContentEditable}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   524
        * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   525
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   526
        render: function(node) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   527
            var args, inst, fn;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   528
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   529
            if (this._rendered) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   530
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   531
                return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   532
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   533
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   534
            if (node) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   535
                this.set(CONTAINER, node);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   536
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   537
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   538
            container = this.get(CONTAINER);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   539
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   540
            if (!container) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   541
                container = YNode.create(ContentEditable.HTML);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   542
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   543
                Y.one('body').prepend(container);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   544
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   545
                this.set(CONTAINER, container);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   546
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   547
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   548
            this._rendered = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   549
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   550
            this._container.setAttribute(CONTENT_EDITABLE, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   551
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   552
            args = Y.clone(this.get(USE));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   553
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   554
            fn = Y.bind(function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   555
                inst = YUI();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   556
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   557
                inst.host = this.get(HOST); //Cross reference to Editor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   558
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   559
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   560
                inst.use('node-base', Y.bind(this._instanceLoaded, this));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   561
            }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   562
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   563
            args.push(fn);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   564
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   565
            Y.use.apply(Y, args);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   566
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   567
            return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   568
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   569
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   570
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   571
        * Set the focus to the container
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   572
        * @method focus
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   573
        * @param {Function} fn Callback function to execute after focus happens
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   574
        * @return {ContentEditable}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   575
        * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   576
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   577
        focus: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   578
            this._container.focus();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   579
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   580
            return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   581
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   582
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   583
        * Show the iframe instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   584
        * @method show
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   585
        * @return {ContentEditable}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   586
        * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   587
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   588
        show: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   589
            this._container.show();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   590
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   591
            this.focus();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   592
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   593
            return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   594
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   595
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   596
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   597
        * Hide the iframe instance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   598
        * @method hide
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   599
        * @return {ContentEditable}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   600
        * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   601
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   602
        hide: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   603
            this._container.hide();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   604
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   605
            return this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   606
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   607
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   608
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   609
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   610
        * The throttle time for key events in IE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   611
        * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   612
        * @property THROTTLE_TIME
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   613
        * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   614
        * @default 100
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   615
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   616
        THROTTLE_TIME: 100,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   617
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   618
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   619
        * The DomEvents that the frame automatically attaches and bubbles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   620
        * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   621
        * @property DOM_EVENTS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   622
        * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   623
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   624
        DOM_EVENTS: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   625
            click: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   626
            dblclick: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   627
            focusin: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   628
            focusout: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   629
            keydown: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   630
            keypress: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   631
            keyup: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   632
            mousedown: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   633
            mouseup: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   634
            paste: 1
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   635
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   636
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   637
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   638
        * The template string used to create the ContentEditable element
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   639
        * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   640
        * @property HTML
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   641
        * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   642
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   643
        HTML: '<div></div>',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   644
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   645
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   646
        * The name of the class (contentEditable)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   647
        * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   648
        * @property NAME
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   649
        * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   650
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   651
        NAME: 'contentEditable',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   652
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   653
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   654
        * The namespace on which ContentEditable plugin will reside.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   655
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   656
        * @property NS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   657
        * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   658
        * @default 'contentEditable'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   659
        * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   660
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   661
        NS: CONTENT_EDITABLE,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   662
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   663
        ATTRS: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   664
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   665
            * The default text direction for this ContentEditable element. Default: ltr
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   666
            * @attribute dir
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   667
            * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   668
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   669
            dir: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   670
                lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   671
                validator: Lang.isString,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   672
                setter: '_setDir',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   673
                valueFn: '_getDir'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   674
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   675
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   676
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   677
            * The container to set contentEditable=true or to create on render.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   678
            * @attribute container
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   679
            * @type String/HTMLElement/Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   680
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   681
            container: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   682
                setter: function(n) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   683
                    this._container = Y.one(n);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   684
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   685
                    return this._container;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   686
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   687
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   688
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   689
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   690
            * The string to inject as Editor content. Default '<br>'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   691
            * @attribute content
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   692
            * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   693
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   694
            content: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   695
                getter: '_getHTML',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   696
                lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   697
                setter: '_setHTML',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   698
                validator: Lang.isString,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   699
                value: '<br>'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   700
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   701
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   702
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   703
            * The default tag to use for block level items, defaults to: p
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   704
            * @attribute defaultblock
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   705
            * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   706
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   707
            defaultblock: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   708
                validator: Lang.isString,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   709
                value: TAG_PARAGRAPH,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   710
                valueFn: '_getDefaultBlock'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   711
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   712
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   713
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   714
            * A string of CSS to add to the Head of the Editor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   715
            * @attribute extracss
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   716
            * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   717
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   718
            extracss: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   719
                lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   720
                setter: '_setExtraCSS',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   721
                validator: Lang.isString,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   722
                valueFn: '_getExtraCSS'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   723
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   724
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   725
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   726
            * Set the id of the new Node. (optional)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   727
            * @attribute id
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   728
            * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   729
            * @writeonce
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   730
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   731
            id: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   732
                writeOnce: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   733
                getter: function(id) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   734
                    if (!id) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   735
                        id = 'inlineedit-' + Y.guid();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   736
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   737
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   738
                    return id;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   739
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   740
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   741
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   742
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   743
            * The default language. Default: en-US
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   744
            * @attribute lang
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   745
            * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   746
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   747
            lang: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   748
                validator: Lang.isString,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   749
                setter: '_setLang',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   750
                lazyAdd: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   751
                value: 'en-US'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   752
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   753
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   754
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   755
            * An array of url's to external linked style sheets
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   756
            * @attribute linkedcss
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   757
            * @type String|Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   758
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   759
            linkedcss: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   760
                setter: '_setLinkedCSS',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   761
                validator: '_validateLinkedCSS'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   762
                //value: ''
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   763
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   764
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   765
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   766
            * The Node instance of the container.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   767
            * @attribute node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   768
            * @type Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   769
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   770
            node: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   771
                readOnly: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   772
                value: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   773
                getter: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   774
                    return this._container;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   775
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   776
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   777
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   778
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   779
            * Array of modules to include in the scoped YUI instance at render time. Default: ['node-base', 'editor-selection', 'stylesheet']
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   780
            * @attribute use
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   781
            * @writeonce
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   782
            * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   783
            */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   784
            use: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   785
                validator: Lang.isArray,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   786
                writeOnce: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   787
                value: ['node-base', 'editor-selection', 'stylesheet']
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   788
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   789
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   790
    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   791
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   792
    Y.namespace('Plugin');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   793
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   794
    Y.Plugin.ContentEditable = ContentEditable;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   795
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   796
}, '@VERSION@', {"requires": ["node-base", "editor-selection", "stylesheet", "plugin"]});