UNPKG

ddd-jquery

Version:

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

260 lines 10.1 kB
var jQuery = require('./core'), pnum = require('./var/pnum'), access = require('./core/access'), rmargin = require('./css/var/rmargin'), rnumnonpx = require('./css/var/rnumnonpx'), cssExpand = require('./css/var/cssExpand'), isHidden = require('./css/var/isHidden'), getStyles = require('./css/var/getStyles'), curCSS = require('./css/curCSS'), defaultDisplay = require('./css/defaultDisplay'), addGetHookIf = require('./css/addGetHookIf'), support = require('./css/support'), data_priv = require('./data/var/data_priv'), __unnameddep__ = require('./core/init'), __unnameddep__ = require('./css/swap'), __unnameddep__ = require('./core/ready'), __unnameddep__ = require('./selector'); var rdisplayswap = /^(none|table(?!-c[ea]).+)/, rnumsplit = new RegExp('^(' + pnum + ')(.*)$', 'i'), rrelNum = new RegExp('^([+-])=(' + pnum + ')', 'i'), cssShow = { position: 'absolute', visibility: 'hidden', display: 'block' }, cssNormalTransform = { letterSpacing: 0, fontWeight: 400 }, cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ]; function vendorPropName(style, name) { if (name in style) { return name; } var capName = name[0].toUpperCase() + name.slice(1), origName = name, i = cssPrefixes.length; while (i--) { name = cssPrefixes[i] + capName; if (name in style) { return name; } } return origName; } function setPositiveNumber(elem, value, subtract) { var matches = rnumsplit.exec(value); return matches ? Math.max(0, matches[1] - (subtract || 0)) + (matches[2] || 'px') : value; } function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles) { var i = extra === (isBorderBox ? 'border' : 'content') ? 4 : name === 'width' ? 1 : 0, val = 0; for (; i < 4; i += 2) { if (extra === 'margin') { val += jQuery.css(elem, extra + cssExpand[i], true, styles); } if (isBorderBox) { if (extra === 'content') { val -= jQuery.css(elem, 'padding' + cssExpand[i], true, styles); } if (extra !== 'margin') { val -= jQuery.css(elem, 'border' + cssExpand[i] + 'Width', true, styles); } } else { val += jQuery.css(elem, 'padding' + cssExpand[i], true, styles); if (extra !== 'padding') { val += jQuery.css(elem, 'border' + cssExpand[i] + 'Width', true, styles); } } } return val; } function getWidthOrHeight(elem, name, extra) { var valueIsBorderBox = true, val = name === 'width' ? elem.offsetWidth : elem.offsetHeight, styles = getStyles(elem), isBorderBox = jQuery.css(elem, 'boxSizing', false, styles) === 'border-box'; if (val <= 0 || val == null) { val = curCSS(elem, name, styles); if (val < 0 || val == null) { val = elem.style[name]; } if (rnumnonpx.test(val)) { return val; } valueIsBorderBox = isBorderBox && (support.boxSizingReliable() || val === elem.style[name]); val = parseFloat(val) || 0; } return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? 'border' : 'content'), valueIsBorderBox, styles) + 'px'; } function showHide(elements, show) { var display, elem, hidden, values = [], index = 0, length = elements.length; for (; index < length; index++) { elem = elements[index]; if (!elem.style) { continue; } values[index] = data_priv.get(elem, 'olddisplay'); display = elem.style.display; if (show) { if (!values[index] && display === 'none') { elem.style.display = ''; } if (elem.style.display === '' && isHidden(elem)) { values[index] = data_priv.access(elem, 'olddisplay', defaultDisplay(elem.nodeName)); } } else { if (!values[index]) { hidden = isHidden(elem); if (display && display !== 'none' || !hidden) { data_priv.set(elem, 'olddisplay', hidden ? display : jQuery.css(elem, 'display')); } } } } for (index = 0; index < length; index++) { elem = elements[index]; if (!elem.style) { continue; } if (!show || elem.style.display === 'none' || elem.style.display === '') { elem.style.display = show ? values[index] || '' : 'none'; } } return elements; } jQuery.extend({ cssHooks: { opacity: { get: function (elem, computed) { if (computed) { var ret = curCSS(elem, 'opacity'); return ret === '' ? '1' : ret; } } } }, cssNumber: { 'columnCount': true, 'fillOpacity': true, 'fontWeight': true, 'lineHeight': true, 'opacity': true, 'order': true, 'orphans': true, 'widows': true, 'zIndex': true, 'zoom': true }, cssProps: { 'float': 'cssFloat' }, style: function (elem, name, value, extra) { if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) { return; } var ret, type, hooks, origName = jQuery.camelCase(name), style = elem.style; name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(style, origName)); hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; if (value !== undefined) { type = typeof value; if (type === 'string' && (ret = rrelNum.exec(value))) { value = (ret[1] + 1) * ret[2] + parseFloat(jQuery.css(elem, name)); type = 'number'; } if (value == null || value !== value) { return; } if (type === 'number' && !jQuery.cssNumber[origName]) { value += 'px'; } if (!support.clearCloneStyle && value === '' && name.indexOf('background') === 0) { style[name] = 'inherit'; } if (!hooks || !('set' in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) { style[name] = ''; style[name] = value; } } else { if (hooks && 'get' in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) { return ret; } return style[name]; } }, css: function (elem, name, extra, styles) { var val, num, hooks, origName = jQuery.camelCase(name); name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(elem.style, origName)); hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; if (hooks && 'get' in hooks) { val = hooks.get(elem, true, extra); } if (val === undefined) { val = curCSS(elem, name, styles); } if (val === 'normal' && name in cssNormalTransform) { val = cssNormalTransform[name]; } if (extra === '' || extra) { num = parseFloat(val); return extra === true || jQuery.isNumeric(num) ? num || 0 : val; } return val; } }); jQuery.each([ 'height', 'width' ], function (i, name) { jQuery.cssHooks[name] = { get: function (elem, computed, extra) { if (computed) { return elem.offsetWidth === 0 && rdisplayswap.test(jQuery.css(elem, 'display')) ? jQuery.swap(elem, cssShow, function () { return getWidthOrHeight(elem, name, extra); }) : getWidthOrHeight(elem, name, extra); } }, set: function (elem, value, extra) { var styles = extra && getStyles(elem); return setPositiveNumber(elem, value, extra ? augmentWidthOrHeight(elem, name, extra, jQuery.css(elem, 'boxSizing', false, styles) === 'border-box', styles) : 0); } }; }); jQuery.cssHooks.marginRight = addGetHookIf(support.reliableMarginRight, function (elem, computed) { if (computed) { return jQuery.swap(elem, { 'display': 'inline-block' }, curCSS, [ elem, 'marginRight' ]); } }); jQuery.each({ margin: '', padding: '', border: 'Width' }, function (prefix, suffix) { jQuery.cssHooks[prefix + suffix] = { expand: function (value) { var i = 0, expanded = {}, parts = typeof value === 'string' ? value.split(' ') : [value]; for (; i < 4; i++) { expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0]; } return expanded; } }; if (!rmargin.test(prefix)) { jQuery.cssHooks[prefix + suffix].set = setPositiveNumber; } }); jQuery.fn.extend({ css: function (name, value) { return access(this, function (elem, name, value) { var styles, len, map = {}, i = 0; if (jQuery.isArray(name)) { styles = getStyles(elem); len = name.length; for (; i < len; i++) { map[name[i]] = jQuery.css(elem, name[i], false, styles); } return map; } return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name); }, name, value, arguments.length > 1); }, show: function () { return showHide(this, true); }, hide: function () { return showHide(this); }, toggle: function (state) { if (typeof state === 'boolean') { return state ? this.show() : this.hide(); } return this.each(function () { if (isHidden(this)) { jQuery(this).show(); } else { jQuery(this).hide(); } }); } }); module.exports = jQuery;