acklen-keystone
Version:
Web Application Framework and Admin GUI / Content Management System built on Express.js and Mongoose
1,453 lines (1,233 loc) • 15.4 MB
JavaScript
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
/**
* @ignore
* base event object for custom and dom event.
* @author yiminghe@gmail.com
*/
function returnFalse() {
return false;
}
function returnTrue() {
return true;
}
function EventBaseObject() {
this.timeStamp = Date.now();
this.target = undefined;
this.currentTarget = undefined;
}
EventBaseObject.prototype = {
isEventObject: 1,
constructor: EventBaseObject,
isDefaultPrevented: returnFalse,
isPropagationStopped: returnFalse,
isImmediatePropagationStopped: returnFalse,
preventDefault: function preventDefault() {
this.isDefaultPrevented = returnTrue;
},
stopPropagation: function stopPropagation() {
this.isPropagationStopped = returnTrue;
},
stopImmediatePropagation: function stopImmediatePropagation() {
this.isImmediatePropagationStopped = returnTrue;
// fixed 1.2
// call stopPropagation implicitly
this.stopPropagation();
},
halt: function halt(immediate) {
if (immediate) {
this.stopImmediatePropagation();
} else {
this.stopPropagation();
}
this.preventDefault();
}
};
exports["default"] = EventBaseObject;
module.exports = exports['default'];
},{}],2:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _EventBaseObject = require('./EventBaseObject');
var _EventBaseObject2 = _interopRequireDefault(_EventBaseObject);
var _objectAssign = require('object-assign');
var _objectAssign2 = _interopRequireDefault(_objectAssign);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
* @ignore
* event object for dom
* @author yiminghe@gmail.com
*/
var TRUE = true;
var FALSE = false;
var commonProps = ['altKey', 'bubbles', 'cancelable', 'ctrlKey', 'currentTarget', 'eventPhase', 'metaKey', 'shiftKey', 'target', 'timeStamp', 'view', 'type'];
function isNullOrUndefined(w) {
return w === null || w === undefined;
}
var eventNormalizers = [{
reg: /^key/,
props: ['char', 'charCode', 'key', 'keyCode', 'which'],
fix: function fix(event, nativeEvent) {
if (isNullOrUndefined(event.which)) {
event.which = !isNullOrUndefined(nativeEvent.charCode) ? nativeEvent.charCode : nativeEvent.keyCode;
}
// add metaKey to non-Mac browsers (use ctrl for PC 's and Meta for Macs)
if (event.metaKey === undefined) {
event.metaKey = event.ctrlKey;
}
}
}, {
reg: /^touch/,
props: ['touches', 'changedTouches', 'targetTouches']
}, {
reg: /^hashchange$/,
props: ['newURL', 'oldURL']
}, {
reg: /^gesturechange$/i,
props: ['rotation', 'scale']
}, {
reg: /^(mousewheel|DOMMouseScroll)$/,
props: [],
fix: function fix(event, nativeEvent) {
var deltaX = void 0;
var deltaY = void 0;
var delta = void 0;
var wheelDelta = nativeEvent.wheelDelta;
var axis = nativeEvent.axis;
var wheelDeltaY = nativeEvent.wheelDeltaY;
var wheelDeltaX = nativeEvent.wheelDeltaX;
var detail = nativeEvent.detail;
// ie/webkit
if (wheelDelta) {
delta = wheelDelta / 120;
}
// gecko
if (detail) {
// press control e.detail == 1 else e.detail == 3
delta = 0 - (detail % 3 === 0 ? detail / 3 : detail);
}
// Gecko
if (axis !== undefined) {
if (axis === event.HORIZONTAL_AXIS) {
deltaY = 0;
deltaX = 0 - delta;
} else if (axis === event.VERTICAL_AXIS) {
deltaX = 0;
deltaY = delta;
}
}
// Webkit
if (wheelDeltaY !== undefined) {
deltaY = wheelDeltaY / 120;
}
if (wheelDeltaX !== undefined) {
deltaX = -1 * wheelDeltaX / 120;
}
// 默认 deltaY (ie)
if (!deltaX && !deltaY) {
deltaY = delta;
}
if (deltaX !== undefined) {
/**
* deltaX of mousewheel event
* @property deltaX
* @member Event.DomEvent.Object
*/
event.deltaX = deltaX;
}
if (deltaY !== undefined) {
/**
* deltaY of mousewheel event
* @property deltaY
* @member Event.DomEvent.Object
*/
event.deltaY = deltaY;
}
if (delta !== undefined) {
/**
* delta of mousewheel event
* @property delta
* @member Event.DomEvent.Object
*/
event.delta = delta;
}
}
}, {
reg: /^mouse|contextmenu|click|mspointer|(^DOMMouseScroll$)/i,
props: ['buttons', 'clientX', 'clientY', 'button', 'offsetX', 'relatedTarget', 'which', 'fromElement', 'toElement', 'offsetY', 'pageX', 'pageY', 'screenX', 'screenY'],
fix: function fix(event, nativeEvent) {
var eventDoc = void 0;
var doc = void 0;
var body = void 0;
var target = event.target;
var button = nativeEvent.button;
// Calculate pageX/Y if missing and clientX/Y available
if (target && isNullOrUndefined(event.pageX) && !isNullOrUndefined(nativeEvent.clientX)) {
eventDoc = target.ownerDocument || document;
doc = eventDoc.documentElement;
body = eventDoc.body;
event.pageX = nativeEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
event.pageY = nativeEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
}
// which for click: 1 === left; 2 === middle; 3 === right
// do not use button
if (!event.which && button !== undefined) {
if (button & 1) {
event.which = 1;
} else if (button & 2) {
event.which = 3;
} else if (button & 4) {
event.which = 2;
} else {
event.which = 0;
}
}
// add relatedTarget, if necessary
if (!event.relatedTarget && event.fromElement) {
event.relatedTarget = event.fromElement === target ? event.toElement : event.fromElement;
}
return event;
}
}];
function retTrue() {
return TRUE;
}
function retFalse() {
return FALSE;
}
function DomEventObject(nativeEvent) {
var type = nativeEvent.type;
var isNative = typeof nativeEvent.stopPropagation === 'function' || typeof nativeEvent.cancelBubble === 'boolean';
_EventBaseObject2["default"].call(this);
this.nativeEvent = nativeEvent;
// in case dom event has been mark as default prevented by lower dom node
var isDefaultPrevented = retFalse;
if ('defaultPrevented' in nativeEvent) {
isDefaultPrevented = nativeEvent.defaultPrevented ? retTrue : retFalse;
} else if ('getPreventDefault' in nativeEvent) {
// https://bugzilla.mozilla.org/show_bug.cgi?id=691151
isDefaultPrevented = nativeEvent.getPreventDefault() ? retTrue : retFalse;
} else if ('returnValue' in nativeEvent) {
isDefaultPrevented = nativeEvent.returnValue === FALSE ? retTrue : retFalse;
}
this.isDefaultPrevented = isDefaultPrevented;
var fixFns = [];
var fixFn = void 0;
var l = void 0;
var prop = void 0;
var props = commonProps.concat();
eventNormalizers.forEach(function (normalizer) {
if (type.match(normalizer.reg)) {
props = props.concat(normalizer.props);
if (normalizer.fix) {
fixFns.push(normalizer.fix);
}
}
});
l = props.length;
// clone properties of the original event object
while (l) {
prop = props[--l];
this[prop] = nativeEvent[prop];
}
// fix target property, if necessary
if (!this.target && isNative) {
this.target = nativeEvent.srcElement || document; // srcElement might not be defined either
}
// check if target is a text node (safari)
if (this.target && this.target.nodeType === 3) {
this.target = this.target.parentNode;
}
l = fixFns.length;
while (l) {
fixFn = fixFns[--l];
fixFn(this, nativeEvent);
}
this.timeStamp = nativeEvent.timeStamp || Date.now();
}
var EventBaseObjectProto = _EventBaseObject2["default"].prototype;
(0, _objectAssign2["default"])(DomEventObject.prototype, EventBaseObjectProto, {
constructor: DomEventObject,
preventDefault: function preventDefault() {
var e = this.nativeEvent;
// if preventDefault exists run it on the original event
if (e.preventDefault) {
e.preventDefault();
} else {
// otherwise set the returnValue property of the original event to FALSE (IE)
e.returnValue = FALSE;
}
EventBaseObjectProto.preventDefault.call(this);
},
stopPropagation: function stopPropagation() {
var e = this.nativeEvent;
// if stopPropagation exists run it on the original event
if (e.stopPropagation) {
e.stopPropagation();
} else {
// otherwise set the cancelBubble property of the original event to TRUE (IE)
e.cancelBubble = TRUE;
}
EventBaseObjectProto.stopPropagation.call(this);
}
});
exports["default"] = DomEventObject;
module.exports = exports['default'];
},{"./EventBaseObject":1,"object-assign":783}],3:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = addEventListener;
var _EventObject = require('./EventObject');
var _EventObject2 = _interopRequireDefault(_EventObject);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function addEventListener(target, eventType, callback) {
function wrapCallback(e) {
var ne = new _EventObject2["default"](e);
callback.call(target, ne);
}
if (target.addEventListener) {
target.addEventListener(eventType, wrapCallback, false);
return {
remove: function remove() {
target.removeEventListener(eventType, wrapCallback, false);
}
};
} else if (target.attachEvent) {
target.attachEvent('on' + eventType, wrapCallback);
return {
remove: function remove() {
target.detachEvent('on' + eventType, wrapCallback);
}
};
}
}
module.exports = exports['default'];
},{"./EventObject":2}],4:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports.getComponentLocale = getComponentLocale;
exports.getLocaleCode = getLocaleCode;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function getComponentLocale(props, context, componentName, getDefaultLocale) {
var locale = {};
if (context && context.antLocale && context.antLocale[componentName]) {
locale = context.antLocale[componentName];
} else {
var defaultLocale = getDefaultLocale();
// TODO: make default lang of antd be English
// https://github.com/ant-design/ant-design/issues/6334
locale = defaultLocale['default'] || defaultLocale;
}
var result = (0, _extends3['default'])({}, locale, props.locale);
result.lang = (0, _extends3['default'])({}, locale.lang, props.locale.lang);
return result;
}
function getLocaleCode(context) {
var localeCode = context.antLocale && context.antLocale.locale;
// Had use LocaleProvide but didn't set locale
if (context.antLocale && context.antLocale.exist && !localeCode) {
return 'zh-cn';
}
return localeCode;
}
},{"babel-runtime/helpers/extends":184}],5:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = getRequestAnimationFrame;
exports.cancelRequestAnimationFrame = cancelRequestAnimationFrame;
var availablePrefixs = ['moz', 'ms', 'webkit'];
function requestAnimationFramePolyfill() {
var lastTime = 0;
return function (callback) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = window.setTimeout(function () {
callback(currTime + timeToCall);
}, timeToCall);
lastTime = currTime + timeToCall;
return id;
};
}
function getRequestAnimationFrame() {
if (typeof window === 'undefined') {
return function () {};
}
if (window.requestAnimationFrame) {
return window.requestAnimationFrame;
}
var prefix = availablePrefixs.filter(function (key) {
return key + 'RequestAnimationFrame' in window;
})[0];
return prefix ? window[prefix + 'RequestAnimationFrame'] : requestAnimationFramePolyfill();
}
function cancelRequestAnimationFrame(id) {
if (typeof window === 'undefined') {
return null;
}
if (window.cancelAnimationFrame) {
return window.cancelAnimationFrame(id);
}
var prefix = availablePrefixs.filter(function (key) {
return key + 'CancelAnimationFrame' in window || key + 'CancelRequestAnimationFrame' in window;
})[0];
return prefix ? (window[prefix + 'CancelAnimationFrame'] || window[prefix + 'CancelRequestAnimationFrame']).call(this, id) : clearTimeout(id);
}
},{}],6:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = getScroll;
function getScroll(target, top) {
if (typeof window === 'undefined') {
return 0;
}
var prop = top ? 'pageYOffset' : 'pageXOffset';
var method = top ? 'scrollTop' : 'scrollLeft';
var isWindow = target === window;
var ret = isWindow ? target[prop] : target[method];
// ie6,7,8 standard mode
if (isWindow && typeof ret !== 'number') {
ret = window.document.documentElement[method];
}
return ret;
}
module.exports = exports['default'];
},{}],7:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var animation = void 0;
function isCssAnimationSupported() {
if (animation !== undefined) {
return animation;
}
var domPrefixes = 'Webkit Moz O ms Khtml'.split(' ');
var elm = document.createElement('div');
if (elm.style.animationName !== undefined) {
animation = true;
}
if (animation !== undefined) {
for (var i = 0; i < domPrefixes.length; i++) {
if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
animation = true;
break;
}
}
}
animation = animation || false;
return animation;
}
exports['default'] = isCssAnimationSupported;
module.exports = exports['default'];
},{}],8:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = isFlexSupported;
function isFlexSupported() {
if (typeof window !== 'undefined' && window.document && window.document.documentElement) {
var documentElement = window.document.documentElement;
return 'flex' in documentElement.style || 'webkitFlex' in documentElement.style || 'Flex' in documentElement.style || 'msFlex' in documentElement.style;
}
return false;
}
module.exports = exports['default'];
},{}],9:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _cssAnimation = require('css-animation');
var _cssAnimation2 = _interopRequireDefault(_cssAnimation);
var _getRequestAnimationFrame = require('./getRequestAnimationFrame');
var _getRequestAnimationFrame2 = _interopRequireDefault(_getRequestAnimationFrame);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var reqAnimFrame = (0, _getRequestAnimationFrame2['default'])();
function animate(node, show, done) {
var height = void 0;
var requestAnimationFrameId = void 0;
return (0, _cssAnimation2['default'])(node, 'ant-motion-collapse', {
start: function start() {
if (!show) {
node.style.height = node.offsetHeight + 'px';
node.style.opacity = 1;
} else {
height = node.offsetHeight;
node.style.height = 0;
node.style.opacity = 0;
}
},
active: function active() {
if (requestAnimationFrameId) {
(0, _getRequestAnimationFrame.cancelRequestAnimationFrame)(requestAnimationFrameId);
}
requestAnimationFrameId = reqAnimFrame(function () {
node.style.height = (show ? height : 0) + 'px';
node.style.opacity = show ? 1 : 0;
});
},
end: function end() {
if (requestAnimationFrameId) {
(0, _getRequestAnimationFrame.cancelRequestAnimationFrame)(requestAnimationFrameId);
}
node.style.height = '';
node.style.opacity = '';
done();
}
});
}
var animation = {
enter: function enter(node, done) {
return animate(node, true, done);
},
leave: function leave(node, done) {
return animate(node, false, done);
},
appear: function appear(node, done) {
return animate(node, true, done);
}
};
exports['default'] = animation;
module.exports = exports['default'];
},{"./getRequestAnimationFrame":5,"css-animation":294}],10:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
exports['default'] = throttleByAnimationFrame;
exports.throttleByAnimationFrameDecorator = throttleByAnimationFrameDecorator;
var _getRequestAnimationFrame = require('../_util/getRequestAnimationFrame');
var _getRequestAnimationFrame2 = _interopRequireDefault(_getRequestAnimationFrame);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var reqAnimFrame = (0, _getRequestAnimationFrame2['default'])();
function throttleByAnimationFrame(fn) {
var requestId = void 0;
var later = function later(args) {
return function () {
requestId = null;
fn.apply(undefined, (0, _toConsumableArray3['default'])(args));
};
};
var throttled = function throttled() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
if (requestId == null) {
requestId = reqAnimFrame(later(args));
}
};
throttled.cancel = function () {
return (0, _getRequestAnimationFrame.cancelRequestAnimationFrame)(requestId);
};
return throttled;
}
function throttleByAnimationFrameDecorator() {
return function (target, key, descriptor) {
var fn = descriptor.value;
var definingProperty = false;
return {
configurable: true,
get: function get() {
if (definingProperty || this === target.prototype || this.hasOwnProperty(key)) {
return fn;
}
var boundFn = throttleByAnimationFrame(fn.bind(this));
definingProperty = true;
Object.defineProperty(this, key, {
value: boundFn,
configurable: true,
writable: true
});
definingProperty = false;
return boundFn;
}
};
};
}
},{"../_util/getRequestAnimationFrame":5,"babel-runtime/helpers/toConsumableArray":190}],11:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = triggerEvent;
function triggerEvent(el, type) {
if ('createEvent' in document) {
// modern browsers, IE9+
var e = document.createEvent('HTMLEvents');
e.initEvent(type, false, true);
el.dispatchEvent(e);
}
}
module.exports = exports['default'];
},{}],12:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _warning = require('warning');
var _warning2 = _interopRequireDefault(_warning);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var warned = {};
exports['default'] = function (valid, message) {
if (!valid && !warned[message]) {
(0, _warning2['default'])(false, message);
warned[message] = true;
}
};
module.exports = exports['default'];
},{"warning":1429}],13:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = require("babel-runtime/helpers/defineProperty");
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _extends2 = require("babel-runtime/helpers/extends");
var _extends3 = _interopRequireDefault(_extends2);
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn");
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require("babel-runtime/helpers/inherits");
var _inherits3 = _interopRequireDefault(_inherits2);
var _typeof2 = require("babel-runtime/helpers/typeof");
var _typeof3 = _interopRequireDefault(_typeof2);
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _reactDom = require("react-dom");
var _reactDom2 = _interopRequireDefault(_reactDom);
var _propTypes = require("prop-types");
var _propTypes2 = _interopRequireDefault(_propTypes);
var _addEventListener = require("rc-util/lib/Dom/addEventListener");
var _addEventListener2 = _interopRequireDefault(_addEventListener);
var _classnames = require("classnames");
var _classnames2 = _interopRequireDefault(_classnames);
var _shallowequal = require("shallowequal");
var _shallowequal2 = _interopRequireDefault(_shallowequal);
var _omit = require("omit.js");
var _omit2 = _interopRequireDefault(_omit);
var _getScroll = require("../_util/getScroll");
var _getScroll2 = _interopRequireDefault(_getScroll);
var _throttleByAnimationFrame = require("../_util/throttleByAnimationFrame");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof3["default"])(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
}return c > 3 && r && Object.defineProperty(target, key, r), r;
};
function getTargetRect(target) {
return target !== window ? target.getBoundingClientRect() : { top: 0, left: 0, bottom: 0 };
}
function getOffset(element, target) {
var elemRect = element.getBoundingClientRect();
var targetRect = getTargetRect(target);
var scrollTop = (0, _getScroll2["default"])(target, true);
var scrollLeft = (0, _getScroll2["default"])(target, false);
var docElem = window.document.body;
var clientTop = docElem.clientTop || 0;
var clientLeft = docElem.clientLeft || 0;
return {
top: elemRect.top - targetRect.top + scrollTop - clientTop,
left: elemRect.left - targetRect.left + scrollLeft - clientLeft,
width: elemRect.width,
height: elemRect.height
};
}
function noop() {}
function getDefaultTarget() {
return typeof window !== 'undefined' ? window : null;
}
var Affix = function (_React$Component) {
(0, _inherits3["default"])(Affix, _React$Component);
function Affix(props) {
(0, _classCallCheck3["default"])(this, Affix);
var _this = (0, _possibleConstructorReturn3["default"])(this, (Affix.__proto__ || Object.getPrototypeOf(Affix)).call(this, props));
_this.state = {
affixStyle: null,
placeholderStyle: null
};
return _this;
}
(0, _createClass3["default"])(Affix, [{
key: "setAffixStyle",
value: function setAffixStyle(e, affixStyle) {
var _this2 = this;
var _props = this.props,
_props$onChange = _props.onChange,
onChange = _props$onChange === undefined ? noop : _props$onChange,
_props$target = _props.target,
target = _props$target === undefined ? getDefaultTarget : _props$target;
var originalAffixStyle = this.state.affixStyle;
var isWindow = target() === window;
if (e.type === 'scroll' && originalAffixStyle && affixStyle && isWindow) {
return;
}
if ((0, _shallowequal2["default"])(affixStyle, originalAffixStyle)) {
return;
}
this.setState({ affixStyle: affixStyle }, function () {
var affixed = !!_this2.state.affixStyle;
if (affixStyle && !originalAffixStyle || !affixStyle && originalAffixStyle) {
onChange(affixed);
}
});
}
}, {
key: "setPlaceholderStyle",
value: function setPlaceholderStyle(placeholderStyle) {
var originalPlaceholderStyle = this.state.placeholderStyle;
if ((0, _shallowequal2["default"])(placeholderStyle, originalPlaceholderStyle)) {
return;
}
this.setState({ placeholderStyle: placeholderStyle });
}
}, {
key: "updatePosition",
value: function updatePosition(e) {
var _props2 = this.props,
offsetTop = _props2.offsetTop,
offsetBottom = _props2.offsetBottom,
offset = _props2.offset,
_props2$target = _props2.target,
target = _props2$target === undefined ? getDefaultTarget : _props2$target;
var targetNode = target();
// Backwards support
offsetTop = offsetTop || offset;
var scrollTop = (0, _getScroll2["default"])(targetNode, true);
var affixNode = _reactDom2["default"].findDOMNode(this);
var elemOffset = getOffset(affixNode, targetNode);
var elemSize = {
width: this.refs.fixedNode.offsetWidth,
height: this.refs.fixedNode.offsetHeight
};
var offsetMode = {
top: false,
bottom: false
};
// Default to `offsetTop=0`.
if (typeof offsetTop !== 'number' && typeof offsetBottom !== 'number') {
offsetMode.top = true;
offsetTop = 0;
} else {
offsetMode.top = typeof offsetTop === 'number';
offsetMode.bottom = typeof offsetBottom === 'number';
}
var targetRect = getTargetRect(targetNode);
var targetInnerHeight = targetNode.innerHeight || targetNode.clientHeight;
if (scrollTop > elemOffset.top - offsetTop && offsetMode.top) {
// Fixed Top
var width = elemOffset.width;
this.setAffixStyle(e, {
position: 'fixed',
top: targetRect.top + offsetTop,
left: targetRect.left + elemOffset.left,
width: width
});
this.setPlaceholderStyle({
width: width,
height: affixNode.offsetHeight
});
} else if (scrollTop < elemOffset.top + elemSize.height + offsetBottom - targetInnerHeight && offsetMode.bottom) {
// Fixed Bottom
var targetBottomOffet = targetNode === window ? 0 : window.innerHeight - targetRect.bottom;
var _width = elemOffset.width;
this.setAffixStyle(e, {
position: 'fixed',
bottom: targetBottomOffet + offsetBottom,
left: targetRect.left + elemOffset.left,
width: _width
});
this.setPlaceholderStyle({
width: _width,
height: affixNode.offsetHeight
});
} else {
var affixStyle = this.state.affixStyle;
if (e.type === 'resize' && affixStyle && affixStyle.position === 'fixed' && affixNode.offsetWidth) {
this.setAffixStyle(e, (0, _extends3["default"])({}, affixStyle, { width: affixNode.offsetWidth }));
} else {
this.setAffixStyle(e, null);
}
this.setPlaceholderStyle(null);
}
}
}, {
key: "componentDidMount",
value: function componentDidMount() {
var _this3 = this;
var target = this.props.target || getDefaultTarget;
// Wait for parent component ref has its value
this.timeout = setTimeout(function () {
_this3.setTargetEventListeners(target);
});
}
}, {
key: "componentWillReceiveProps",
value: function componentWillReceiveProps(nextProps) {
if (this.props.target !== nextProps.target) {
this.clearScrollEventListeners();
this.setTargetEventListeners(nextProps.target);
// Mock Event object.
this.updatePosition({});
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
this.clearScrollEventListeners();
clearTimeout(this.timeout);
this.updatePosition.cancel();
}
}, {
key: "setTargetEventListeners",
value: function setTargetEventListeners(getTarget) {
var target = getTarget();
if (!target) {
return;
}
this.clearScrollEventListeners();
this.scrollEvent = (0, _addEventListener2["default"])(target, 'scroll', this.updatePosition);
this.resizeEvent = (0, _addEventListener2["default"])(target, 'resize', this.updatePosition);
}
}, {
key: "clearScrollEventListeners",
value: function clearScrollEventListeners() {
var _this4 = this;
['scrollEvent', 'resizeEvent'].forEach(function (name) {
if (_this4[name]) {
_this4[name].remove();
}
});
}
}, {
key: "render",
value: function render() {
var className = (0, _classnames2["default"])((0, _defineProperty3["default"])({}, this.props.prefixCls || 'ant-affix', this.state.affixStyle));
var props = (0, _omit2["default"])(this.props, ['prefixCls', 'offsetTop', 'offsetBottom', 'target', 'onChange']);
var placeholderStyle = (0, _extends3["default"])({}, this.state.placeholderStyle, this.props.style);
return _react2["default"].createElement(
"div",
(0, _extends3["default"])({}, props, { style: placeholderStyle }),
_react2["default"].createElement(
"div",
{ className: className, ref: "fixedNode", style: this.state.affixStyle },
this.props.children
)
);
}
}]);
return Affix;
}(_react2["default"].Component);
exports["default"] = Affix;
Affix.propTypes = {
offsetTop: _propTypes2["default"].number,
offsetBottom: _propTypes2["default"].number,
target: _propTypes2["default"].func
};
__decorate([(0, _throttleByAnimationFrame.throttleByAnimationFrameDecorator)()], Affix.prototype, "updatePosition", null);
module.exports = exports["default"];
},{"../_util/getScroll":6,"../_util/throttleByAnimationFrame":10,"babel-runtime/helpers/classCallCheck":181,"babel-runtime/helpers/createClass":182,"babel-runtime/helpers/defineProperty":183,"babel-runtime/helpers/extends":184,"babel-runtime/helpers/inherits":186,"babel-runtime/helpers/possibleConstructorReturn":188,"babel-runtime/helpers/typeof":191,"classnames":"classnames","omit.js":784,"prop-types":790,"rc-util/lib/Dom/addEventListener":997,"react":"react","react-dom":"react-dom","shallowequal":1422}],14:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _rcAnimate = require('rc-animate');
var _rcAnimate2 = _interopRequireDefault(_rcAnimate);
var _icon = require('../icon');
var _icon2 = _interopRequireDefault(_icon);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function noop() {}
var Alert = function (_React$Component) {
(0, _inherits3['default'])(Alert, _React$Component);
function Alert(props) {
(0, _classCallCheck3['default'])(this, Alert);
var _this = (0, _possibleConstructorReturn3['default'])(this, (Alert.__proto__ || Object.getPrototypeOf(Alert)).call(this, props));
_this.handleClose = function (e) {
e.preventDefault();
var dom = _reactDom2['default'].findDOMNode(_this);
dom.style.height = dom.offsetHeight + 'px';
// Magic code
// 重复一次后才能正确设置 height
dom.style.height = dom.offsetHeight + 'px';
_this.setState({
closing: false
});
(_this.props.onClose || noop)(e);
};
_this.animationEnd = function () {
_this.setState({
closed: true,
closing: true
});
};
_this.state = {
closing: true,
closed: false
};
return _this;
}
(0, _createClass3['default'])(Alert, [{
key: 'render',
value: function render() {
var _classNames;
var _props = this.props,
closable = _props.closable,
description = _props.description,
type = _props.type,
_props$prefixCls = _props.prefixCls,
prefixCls = _props$prefixCls === undefined ? 'ant-alert' : _props$prefixCls,
message = _props.message,
closeText = _props.closeText,
showIcon = _props.showIcon,
banner = _props.banner,
_props$className = _props.className,
className = _props$className === undefined ? '' : _props$className,
style = _props.style;
// banner模式默认有 Icon
showIcon = banner && showIcon === undefined ? true : showIcon;
// banner模式默认为警告
type = banner && type === undefined ? 'warning' : type || 'info';
var iconType = '';
switch (type) {
case 'success':
iconType = 'check-circle';
break;
case 'info':
iconType = 'info-circle';
break;
case 'error':
iconType = 'cross-circle';
break;
case 'warning':
iconType = 'exclamation-circle';
break;
default:
iconType = 'default';
}
// use outline icon in alert with description
if (!!description) {
iconType += '-o';
}
var alertCls = (0, _classnames2['default'])(prefixCls, (_classNames = {}, (0, _defineProperty3['default'])(_classNames, prefixCls + '-' + type, true), (0, _defineProperty3['default'])(_classNames, prefixCls + '-close', !this.state.closing), (0, _defineProperty3['default'])(_classNames, prefixCls + '-with-description', !!description), (0, _defineProperty3['default'])(_classNames, prefixCls + '-no-icon', !showIcon), (0, _defineProperty3['default'])(_classNames, prefixCls + '-banner', !!banner), _classNames), className);
// closeable when closeText is assigned
if (closeText) {
closable = true;
}
var closeIcon = closable ? _react2['default'].createElement(
'a',
{ onClick: this.handleClose, className: prefixCls + '-close-icon' },
closeText || _react2['default'].createElement(_icon2['default'], { type: 'cross' })
) : null;
return this.state.closed ? null : _react2['default'].createElement(
_rcAnimate2['default'],
{ component: '', showProp: 'data-show', transitionName: prefixCls + '-slide-up', onEnd: this.animationEnd },
_react2['default'].createElement(
'div',
{ 'data-show': this.state.closing, className: alertCls, style: style },
showIcon ? _react2['default'].createElement(_icon2['default'], { className: prefixCls + '-icon', type: iconType }) : null,
_react2['default'].createElement(
'span',
{ className: prefixCls + '-message' },
message
),
_react2['default'].createElement(
'span',
{ className: prefixCls + '-description' },
description
),
closeIcon
)
);
}
}]);
return Alert;
}(_react2['default'].Component);
exports['default'] = Alert;
module.exports = exports['default'];
},{"../icon":60,"babel-runtime/helpers/classCallCheck":181,"babel-runtime/helpers/createClass":182,"babel-runtime/helpers/defineProperty":183,"babel-runtime/helpers/inherits":186,"babel-runtime/helpers/possibleConstructorReturn":188,"classnames":"classnames","rc-animate":801,"react":"react","react-dom":"react-dom"}],15:[function(require,module,exports){
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _addEventListener = require('rc-util/lib/Dom/addEventListener');
var _addEventListener2 = _interopRequireDefault(_addEventListener);
var _affix = require('../affix');
var _affix2 = _interopRequireDefault(_affix);
var _getScroll = require('../_util/getScroll');
var _getScroll2 = _interopRequireDefault(_getScroll);
var _getRequestAnimationFrame = require('../_util/getRequestAnimationFrame');
var _getRequestAnimationFrame2 = _interopRequireDefault(_getRequestAnimationFrame);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function getDefaultTarget() {
return typeof window !== 'undefined' ? window : null;
}
function getOffsetTop(element) {
if (!element) {
return 0;
}
if (!element.getClientRects().length) {
return 0;
}
var rect = element.getBoundingClientRect();
if (rect.width || rect.height) {
var doc = element.ownerDocument;
var docElem = doc.documentElement;
return rect.top - docElem.clientTop;
}
return rect.top;
}
function easeInOutCubic(t, b, c, d) {
var cc = c - b;
t /= d / 2;
if (t < 1) {
return cc / 2 * t * t * t + b;
}
return cc / 2 * ((t -= 2) * t * t + 2) + b;
}
var reqAnimFrame = (0, _getRequestAnimationFrame2['default'])();
function scrollTo(href) {
var offsetTop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var target = arguments[2];
var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};
var scrollTop = (0, _getScroll2['default'])(target(), true);
var targetElement = document.getElementById(href.substring(1));
if (!targetElement) {
return;
}
var eleOffsetTop = getOffsetTop(targetElement);
var targetScrollTop = scrollTop + eleOffsetTop - offsetTop;
var startTime = Date.now();
var frameFunc = function frameFunc() {
var timestamp = Date.now();
var time = timestamp - startTime;
window.scrollTo(window.pageXOffset, easeInOutCubic(time, scrollTop, targetScrollTop, 450));
if (time < 450) {
reqAnimFrame(frameFunc);
} else {
callback();
}
};
reqAnimFrame(frameFunc);
history.pushState(null, '', href);
}
var Anchor = function (_React$Component) {
(0, _inherits3['default'])(Anchor, _React$Component);
function Anchor(props) {
(0, _classCallCheck3['default'])(this, Anchor);
var _this = (0, _possibleConstructorReturn3['default'])(this, (Anchor.__proto__ || Object.getPrototypeOf(Anchor)).call(this, props));
_this.handleScroll = function () {
if (_this.animating) {
return;
}
var _this$props = _this.props,
offsetTop = _this$props.offsetTop,
bounds = _this$props.bounds;
_this.setState({
activeLink: _this.getCurrentAnchor(offsetTop, bounds)
});
};
_this.handleScrollTo = function (link) {
var _this$props2 = _this.props,
offsetTop = _this$props2.offsetTop,
_this$props2$target = _this$props2.target,
target = _this$props2$target === undefined ? getDefaultTarget : _this$props2$target;
_this.animating = true;
_this.setState({ activeLink: link });
scrollTo(link, offsetTop, target, function () {
_this.animating = false;
});
};
_this.updateInk = function () {
if (typeof document === 'undefined') {
return;
}
var prefixCls = _this.props.prefixCls;
var linkNode = _reactDom2['default'].findDOMNode(_this).getElementsByClassName(prefixCls + '-link-title-active')[0];
if (linkNode) {
_this.refs.ink.style.top = linkNode.offsetTop + linkNode.clientHeight / 2 - 4.5 + 'px';
}
};
_this.state = {
activeLink: null
};
_this.links = [];
return _this;
}
(0, _createClass3['default'])(Anchor, [{
key: 'getChildContext',
value: function getChildContext() {
var _this2 = this;
return {
antAnchor: {
registerLink: function registerLink(link) {
if (!_this2.links.includes(link)) {
_this2.links.push(link);
}
},
unregisterLink: function unregisterLink(link) {
var index = _this2.links.indexOf(link);
if (index !== -1) {
_this2.links.splice(index, 1);
}
},
activeLink: this.state.activeLink,
scrollTo: this.handleScrollTo
}
};
}
}, {
key: 'componentDidMount',
value: function componentDidMount() {
var getTarget = this.props.target || getDefaultTarget;
this.scrollEvent = (0, _addEventListener2['default'])(getTarget(), 'scroll', this.handleScroll);
this.handleScroll();
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
if (this.scrollEvent) {
this.scrollEvent.remove();
}
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate() {
this.updateInk();
}
}, {
key: 'getCurrentAnchor',
value: function getCurrentAnchor() {
var offsetTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var bounds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
var activeLink = '';
if (typeof document === 'undefined') {
return activeLink;
}
var linkSections = [];
this.links.forEach(function (link) {
var target = document.getElementById(link.substring(1));
if (target && getOffsetTop(target) < offsetTop + bounds) {
var top = getOffsetTop(target);
linkSections.push({
link: link,
top: top
});
}
});
if (linkSections.length) {
var maxSection = linkSections.reduce(function (prev, curr) {
return curr.top > prev.top ? curr : prev;
});
return maxSection.link;
}
return '';
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
prefixCls = _props.prefixCls,
_props$className = _props.className,
className = _props$className === undefined ? '' : _props$className,
style = _props.style,
offsetTop = _props.offsetTop,
affix = _props.affix,
showInkInFixed = _props.showInkInFixed,
children = _props.children;
var activeLink = this.state.activeLink;
var inkClass = (0, _classnames2['default'])(prefixCls + '-ink-ball', {
visible: activeLink
});
var wrapperClass = (0, _classnames2['default'])(className, prefixCls + '-wrapper');
var anchorClass = (0, _classnames2['default'])(prefixCls, {
'fixed': !affix && !showInkInFixed
});
var anchorContent = _react2['default'].createElement(
'div',
{ className: wrapperClass, style: style },
_react2['default'].createElement(
'div',
{ className: anchorClass },
_react2['default'].createElement(
'div',
{ className: prefixCls + '-ink' },
_react2['default'].createElement('span', { className: inkClass, ref: 'ink' })
),
children
)
);
return !affix ? anchorContent : _react2['default'].createElement(
_affix2['default'],
{ offsetTop: offsetTop },
anchorContent
);
}
}]);
return Anchor;
}(_react2['default'].Component);
exports['default'] = Anchor;
Anchor.defaultProps = {
prefixCls: 'ant-anchor',
affix: true,
showInkInFixed: false
};
Anchor.childContextTypes = {
antAnchor: _propTypes2['default'].object
};
module.exports = exports['default'];
},{"../_util/getRequestAnimationFrame":5,"../_util/getScroll":6,"../affix":13,"babel-runtime/helpers/classCallCheck":181,"babel-r