UNPKG

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
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