UNPKG

ddd-jquery

Version:

de-bowerified, de-amdified, de-gruntified... jQuery.

380 lines 15.2 kB
var jQuery = require('./core'), concat = require('./var/concat'), push = require('./var/push'), access = require('./core/access'), rcheckableType = require('./manipulation/var/rcheckableType'), support = require('./manipulation/support'), data_priv = require('./data/var/data_priv'), data_user = require('./data/var/data_user'), __unnameddep__ = require('./core/init'), __unnameddep__ = require('./data/accepts'), __unnameddep__ = require('./traversing'), __unnameddep__ = require('./selector'), __unnameddep__ = require('./event'); var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, rtagName = /<([\w:]+)/, rhtml = /<|&#?\w+;/, rnoInnerhtml = /<(?:script|style|link)/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rscriptType = /^$|\/(?:java|ecma)script/i, rscriptTypeMasked = /^true\/(.*)/, rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, wrapMap = { option: [ 1, '<select multiple=\'multiple\'>', '</select>' ], thead: [ 1, '<table>', '</table>' ], col: [ 2, '<table><colgroup>', '</colgroup></table>' ], tr: [ 2, '<table><tbody>', '</tbody></table>' ], td: [ 3, '<table><tbody><tr>', '</tr></tbody></table>' ], _default: [ 0, '', '' ] }; wrapMap.optgroup = wrapMap.option; wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; wrapMap.th = wrapMap.td; function manipulationTarget(elem, content) { return jQuery.nodeName(elem, 'table') && jQuery.nodeName(content.nodeType !== 11 ? content : content.firstChild, 'tr') ? elem.getElementsByTagName('tbody')[0] || elem.appendChild(elem.ownerDocument.createElement('tbody')) : elem; } function disableScript(elem) { elem.type = (elem.getAttribute('type') !== null) + '/' + elem.type; return elem; } function restoreScript(elem) { var match = rscriptTypeMasked.exec(elem.type); if (match) { elem.type = match[1]; } else { elem.removeAttribute('type'); } return elem; } function setGlobalEval(elems, refElements) { var i = 0, l = elems.length; for (; i < l; i++) { data_priv.set(elems[i], 'globalEval', !refElements || data_priv.get(refElements[i], 'globalEval')); } } function cloneCopyEvent(src, dest) { var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; if (dest.nodeType !== 1) { return; } if (data_priv.hasData(src)) { pdataOld = data_priv.access(src); pdataCur = data_priv.set(dest, pdataOld); events = pdataOld.events; if (events) { delete pdataCur.handle; pdataCur.events = {}; for (type in events) { for (i = 0, l = events[type].length; i < l; i++) { jQuery.event.add(dest, type, events[type][i]); } } } } if (data_user.hasData(src)) { udataOld = data_user.access(src); udataCur = jQuery.extend({}, udataOld); data_user.set(dest, udataCur); } } function getAll(context, tag) { var ret = context.getElementsByTagName ? context.getElementsByTagName(tag || '*') : context.querySelectorAll ? context.querySelectorAll(tag || '*') : []; return tag === undefined || tag && jQuery.nodeName(context, tag) ? jQuery.merge([context], ret) : ret; } function fixInput(src, dest) { var nodeName = dest.nodeName.toLowerCase(); if (nodeName === 'input' && rcheckableType.test(src.type)) { dest.checked = src.checked; } else if (nodeName === 'input' || nodeName === 'textarea') { dest.defaultValue = src.defaultValue; } } jQuery.extend({ clone: function (elem, dataAndEvents, deepDataAndEvents) { var i, l, srcElements, destElements, clone = elem.cloneNode(true), inPage = jQuery.contains(elem.ownerDocument, elem); if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) { destElements = getAll(clone); srcElements = getAll(elem); for (i = 0, l = srcElements.length; i < l; i++) { fixInput(srcElements[i], destElements[i]); } } if (dataAndEvents) { if (deepDataAndEvents) { srcElements = srcElements || getAll(elem); destElements = destElements || getAll(clone); for (i = 0, l = srcElements.length; i < l; i++) { cloneCopyEvent(srcElements[i], destElements[i]); } } else { cloneCopyEvent(elem, clone); } } destElements = getAll(clone, 'script'); if (destElements.length > 0) { setGlobalEval(destElements, !inPage && getAll(elem, 'script')); } return clone; }, buildFragment: function (elems, context, scripts, selection) { var elem, tmp, tag, wrap, contains, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length; for (; i < l; i++) { elem = elems[i]; if (elem || elem === 0) { if (jQuery.type(elem) === 'object') { jQuery.merge(nodes, elem.nodeType ? [elem] : elem); } else if (!rhtml.test(elem)) { nodes.push(context.createTextNode(elem)); } else { tmp = tmp || fragment.appendChild(context.createElement('div')); tag = (rtagName.exec(elem) || [ '', '' ])[1].toLowerCase(); wrap = wrapMap[tag] || wrapMap._default; tmp.innerHTML = wrap[1] + elem.replace(rxhtmlTag, '<$1></$2>') + wrap[2]; j = wrap[0]; while (j--) { tmp = tmp.lastChild; } jQuery.merge(nodes, tmp.childNodes); tmp = fragment.firstChild; tmp.textContent = ''; } } } fragment.textContent = ''; i = 0; while (elem = nodes[i++]) { if (selection && jQuery.inArray(elem, selection) !== -1) { continue; } contains = jQuery.contains(elem.ownerDocument, elem); tmp = getAll(fragment.appendChild(elem), 'script'); if (contains) { setGlobalEval(tmp); } if (scripts) { j = 0; while (elem = tmp[j++]) { if (rscriptType.test(elem.type || '')) { scripts.push(elem); } } } } return fragment; }, cleanData: function (elems) { var data, elem, events, type, key, j, special = jQuery.event.special, i = 0; for (; (elem = elems[i]) !== undefined; i++) { if (jQuery.acceptData(elem)) { key = elem[data_priv.expando]; if (key && (data = data_priv.cache[key])) { events = Object.keys(data.events || {}); if (events.length) { for (j = 0; (type = events[j]) !== undefined; j++) { if (special[type]) { jQuery.event.remove(elem, type); } else { jQuery.removeEvent(elem, type, data.handle); } } } if (data_priv.cache[key]) { delete data_priv.cache[key]; } } } delete data_user.cache[elem[data_user.expando]]; } } }); jQuery.fn.extend({ text: function (value) { return access(this, function (value) { return value === undefined ? jQuery.text(this) : this.empty().each(function () { if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { this.textContent = value; } }); }, null, value, arguments.length); }, append: function () { return this.domManip(arguments, function (elem) { if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { var target = manipulationTarget(this, elem); target.appendChild(elem); } }); }, prepend: function () { return this.domManip(arguments, function (elem) { if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { var target = manipulationTarget(this, elem); target.insertBefore(elem, target.firstChild); } }); }, before: function () { return this.domManip(arguments, function (elem) { if (this.parentNode) { this.parentNode.insertBefore(elem, this); } }); }, after: function () { return this.domManip(arguments, function (elem) { if (this.parentNode) { this.parentNode.insertBefore(elem, this.nextSibling); } }); }, remove: function (selector, keepData) { var elem, elems = selector ? jQuery.filter(selector, this) : this, i = 0; for (; (elem = elems[i]) != null; i++) { if (!keepData && elem.nodeType === 1) { jQuery.cleanData(getAll(elem)); } if (elem.parentNode) { if (keepData && jQuery.contains(elem.ownerDocument, elem)) { setGlobalEval(getAll(elem, 'script')); } elem.parentNode.removeChild(elem); } } return this; }, empty: function () { var elem, i = 0; for (; (elem = this[i]) != null; i++) { if (elem.nodeType === 1) { jQuery.cleanData(getAll(elem, false)); elem.textContent = ''; } } return this; }, clone: function (dataAndEvents, deepDataAndEvents) { dataAndEvents = dataAndEvents == null ? false : dataAndEvents; deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; return this.map(function () { return jQuery.clone(this, dataAndEvents, deepDataAndEvents); }); }, html: function (value) { return access(this, function (value) { var elem = this[0] || {}, i = 0, l = this.length; if (value === undefined && elem.nodeType === 1) { return elem.innerHTML; } if (typeof value === 'string' && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [ '', '' ])[1].toLowerCase()]) { value = value.replace(rxhtmlTag, '<$1></$2>'); try { for (; i < l; i++) { elem = this[i] || {}; if (elem.nodeType === 1) { jQuery.cleanData(getAll(elem, false)); elem.innerHTML = value; } } elem = 0; } catch (e) { } } if (elem) { this.empty().append(value); } }, null, value, arguments.length); }, replaceWith: function () { var arg = arguments[0]; this.domManip(arguments, function (elem) { arg = this.parentNode; jQuery.cleanData(getAll(this)); if (arg) { arg.replaceChild(elem, this); } }); return arg && (arg.length || arg.nodeType) ? this : this.remove(); }, detach: function (selector) { return this.remove(selector, true); }, domManip: function (args, callback) { args = concat.apply([], args); var fragment, first, scripts, hasScripts, node, doc, i = 0, l = this.length, set = this, iNoClone = l - 1, value = args[0], isFunction = jQuery.isFunction(value); if (isFunction || l > 1 && typeof value === 'string' && !support.checkClone && rchecked.test(value)) { return this.each(function (index) { var self = set.eq(index); if (isFunction) { args[0] = value.call(this, index, self.html()); } self.domManip(args, callback); }); } if (l) { fragment = jQuery.buildFragment(args, this[0].ownerDocument, false, this); first = fragment.firstChild; if (fragment.childNodes.length === 1) { fragment = first; } if (first) { scripts = jQuery.map(getAll(fragment, 'script'), disableScript); hasScripts = scripts.length; for (; i < l; i++) { node = fragment; if (i !== iNoClone) { node = jQuery.clone(node, true, true); if (hasScripts) { jQuery.merge(scripts, getAll(node, 'script')); } } callback.call(this[i], node, i); } if (hasScripts) { doc = scripts[scripts.length - 1].ownerDocument; jQuery.map(scripts, restoreScript); for (i = 0; i < hasScripts; i++) { node = scripts[i]; if (rscriptType.test(node.type || '') && !data_priv.access(node, 'globalEval') && jQuery.contains(doc, node)) { if (node.src) { if (jQuery._evalUrl) { jQuery._evalUrl(node.src); } } else { jQuery.globalEval(node.textContent.replace(rcleanScript, '')); } } } } } } return this; } }); jQuery.each({ appendTo: 'append', prependTo: 'prepend', insertBefore: 'before', insertAfter: 'after', replaceAll: 'replaceWith' }, function (name, original) { jQuery.fn[name] = function (selector) { var elems, ret = [], insert = jQuery(selector), last = insert.length - 1, i = 0; for (; i <= last; i++) { elems = i === last ? this : this.clone(true); jQuery(insert[i])[original](elems); push.apply(ret, elems.get()); } return this.pushStack(ret); }; }); module.exports = jQuery;