2019-03-01 15:05:03 +01:00
import React , { Component } from 'react' ;
2019-03-04 18:49:46 +01:00
import require$$0 from 'prop-types' ;
2019-03-01 12:22:51 +01:00
import reactDom from 'react-dom' ;
2019-03-04 17:42:59 +01:00
var _typeof = typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ? function ( obj ) {
return typeof obj ;
} : function ( obj ) {
return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ;
} ;
2019-03-01 12:22:51 +01:00
var classCallCheck = function ( instance , Constructor ) {
if ( ! ( instance instanceof Constructor ) ) {
throw new TypeError ( "Cannot call a class as a function" ) ;
}
} ;
var createClass = function ( ) {
function defineProperties ( target , props ) {
for ( var i = 0 ; i < props . length ; i ++ ) {
var descriptor = props [ i ] ;
descriptor . enumerable = descriptor . enumerable || false ;
descriptor . configurable = true ;
if ( "value" in descriptor ) descriptor . writable = true ;
Object . defineProperty ( target , descriptor . key , descriptor ) ;
}
}
return function ( Constructor , protoProps , staticProps ) {
if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ;
if ( staticProps ) defineProperties ( Constructor , staticProps ) ;
return Constructor ;
} ;
} ( ) ;
var _extends = Object . assign || function ( target ) {
for ( var i = 1 ; i < arguments . length ; i ++ ) {
var source = arguments [ i ] ;
for ( var key in source ) {
if ( Object . prototype . hasOwnProperty . call ( source , key ) ) {
target [ key ] = source [ key ] ;
}
}
}
return target ;
} ;
var inherits = function ( subClass , superClass ) {
if ( typeof superClass !== "function" && superClass !== null ) {
throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ;
}
subClass . prototype = Object . create ( superClass && superClass . prototype , {
constructor : {
value : subClass ,
enumerable : false ,
writable : true ,
configurable : true
}
} ) ;
if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ;
} ;
var possibleConstructorReturn = function ( self , call ) {
if ( ! self ) {
throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ;
}
return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ;
} ;
var FormContext = React . createContext ( { data : null } ) ;
var FormConsumer = function ( _Component ) {
inherits ( FormConsumer , _Component ) ;
function FormConsumer ( ) {
classCallCheck ( this , FormConsumer ) ;
return possibleConstructorReturn ( this , ( FormConsumer . _ _proto _ _ || Object . getPrototypeOf ( FormConsumer ) ) . apply ( this , arguments ) ) ;
}
createClass ( FormConsumer , [ {
key : 'render' ,
value : function render ( ) {
var _this2 = this ;
return React . createElement (
FormContext . Consumer ,
null ,
function ( props ) {
return _this2 . props . children ( props ) ;
}
) ;
}
} ] ) ;
return FormConsumer ;
} ( Component ) ;
2019-03-01 14:49:23 +01:00
var FormTranslationContext = React . createContext ( {
renderText : function renderText ( text ) {
return text ;
}
} ) ;
var FormTranslationConsumer = function ( _Component ) {
inherits ( FormTranslationConsumer , _Component ) ;
function FormTranslationConsumer ( ) {
classCallCheck ( this , FormTranslationConsumer ) ;
return possibleConstructorReturn ( this , ( FormTranslationConsumer . _ _proto _ _ || Object . getPrototypeOf ( FormTranslationConsumer ) ) . apply ( this , arguments ) ) ;
}
createClass ( FormTranslationConsumer , [ {
key : 'render' ,
value : function render ( ) {
var _this2 = this ;
return React . createElement (
FormTranslationContext . Consumer ,
null ,
function ( props ) {
return _this2 . props . children ( props ) ;
}
) ;
}
} ] ) ;
return FormTranslationConsumer ;
} ( Component ) ;
2019-03-01 12:22:51 +01:00
var FormItemError = function ( _Component ) {
inherits ( FormItemError , _Component ) ;
function FormItemError ( ) {
classCallCheck ( this , FormItemError ) ;
return possibleConstructorReturn ( this , ( FormItemError . _ _proto _ _ || Object . getPrototypeOf ( FormItemError ) ) . apply ( this , arguments ) ) ;
}
createClass ( FormItemError , [ {
2019-03-01 14:49:23 +01:00
key : 'render' ,
2019-03-01 12:22:51 +01:00
value : function render ( ) {
2019-03-01 14:43:37 +01:00
var _this2 = this ;
2019-03-01 12:22:51 +01:00
var data = this . props . data ;
if ( ! data || ! data . errors || ! data . errors [ this . props . name ] ) return null ;
return React . createElement (
2019-03-01 14:43:37 +01:00
FormTranslationConsumer ,
null ,
function ( translator ) {
return _this2 . renderError ( data , translator ) ;
}
) ;
}
} , {
2019-03-01 14:49:23 +01:00
key : 'renderError' ,
2019-03-01 14:43:37 +01:00
value : function renderError ( data , translator ) {
return React . createElement (
2019-03-01 14:49:23 +01:00
'p' ,
{ className : 'text-danger' } ,
translator . renderText ( data . errors [ this . props . name ] . error )
2019-03-01 12:22:51 +01:00
) ;
}
} ] ) ;
return FormItemError ;
} ( Component ) ;
var CheckBox = function ( _Component ) {
inherits ( CheckBox , _Component ) ;
function CheckBox ( ) {
classCallCheck ( this , CheckBox ) ;
return possibleConstructorReturn ( this , ( CheckBox . _ _proto _ _ || Object . getPrototypeOf ( CheckBox ) ) . apply ( this , arguments ) ) ;
}
createClass ( CheckBox , [ {
key : "render" ,
value : function render ( ) {
var _this2 = this ;
return React . createElement (
FormConsumer ,
null ,
function ( data ) {
return _this2 . renderCheckBox ( data ) ;
}
) ;
}
} , {
key : "renderCheckBox" ,
value : function renderCheckBox ( data ) {
var _this3 = this ;
var props = _extends ( { } , this . props ) ;
if ( props . children ) delete props . children ;
if ( props . onChangeValue ) delete props . onChangeValue ;
return React . createElement (
"div" ,
{ className : "form-check" } ,
React . createElement ( "input" , _extends ( {
type : "checkbox" ,
checked : this . props . value ,
onChange : function onChange ( e ) {
return _this3 . props . onChangeValue ( e . target . checked ) ;
}
} , props ) ) ,
this . renderLabel ( data ) ,
React . createElement ( FormItemError , { name : this . props . name , data : data } )
) ;
}
} , {
key : "renderLabel" ,
value : function renderLabel ( data ) {
if ( this . props . children . length ) {
return React . createElement (
"label" ,
{ className : "form-check-label" , htmlFor : this . props . id } ,
this . props . children
) ;
}
}
} ] ) ;
return CheckBox ;
} ( Component ) ;
CheckBox . defaultProps = {
name : 'checkbox' ,
id : 'checkbox' ,
className : 'form-check-input' ,
onChangeValue : function onChangeValue ( checked ) { }
} ;
2019-03-04 17:48:43 +01:00
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : { } ;
function commonjsRequire ( ) {
throw new Error ( 'Dynamic requires are not currently supported by rollup-plugin-commonjs' ) ;
}
2019-03-01 12:22:51 +01:00
function unwrapExports ( x ) {
return x && x . _ _esModule && Object . prototype . hasOwnProperty . call ( x , 'default' ) ? x . default : x ;
}
function createCommonjsModule ( fn , module ) {
return module = { exports : { } } , fn ( module , module . exports ) , module . exports ;
}
var classnames = createCommonjsModule ( function ( module ) {
/ * !
Copyright ( c ) 2017 Jed Watson .
Licensed under the MIT License ( MIT ) , see
http : //jedwatson.github.io/classnames
* /
/* global define */
( function ( ) {
var hasOwn = { } . hasOwnProperty ;
function classNames ( ) {
var classes = [ ] ;
for ( var i = 0 ; i < arguments . length ; i ++ ) {
var arg = arguments [ i ] ;
if ( ! arg ) continue ;
var argType = typeof arg ;
if ( argType === 'string' || argType === 'number' ) {
classes . push ( arg ) ;
} else if ( Array . isArray ( arg ) && arg . length ) {
var inner = classNames . apply ( null , arg ) ;
if ( inner ) {
classes . push ( inner ) ;
}
} else if ( argType === 'object' ) {
for ( var key in arg ) {
if ( hasOwn . call ( arg , key ) && arg [ key ] ) {
classes . push ( key ) ;
}
}
}
}
return classes . join ( ' ' ) ;
}
if ( module . exports ) {
classNames . default = classNames ;
module . exports = classNames ;
} else {
window . classNames = classNames ;
}
} ( ) ) ;
} ) ;
/ * *
* Copyright ( c ) 2013 - present , Facebook , Inc .
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree .
* /
function componentWillMount ( ) {
// Call this.constructor.gDSFP to support sub-classes.
var state = this . constructor . getDerivedStateFromProps ( this . props , this . state ) ;
if ( state !== null && state !== undefined ) {
this . setState ( state ) ;
}
}
function componentWillReceiveProps ( nextProps ) {
// Call this.constructor.gDSFP to support sub-classes.
// Use the setState() updater to ensure state isn't stale in certain edge cases.
function updater ( prevState ) {
var state = this . constructor . getDerivedStateFromProps ( nextProps , prevState ) ;
return state !== null && state !== undefined ? state : null ;
}
// Binding "this" is important for shallow renderer support.
this . setState ( updater . bind ( this ) ) ;
}
function componentWillUpdate ( nextProps , nextState ) {
try {
var prevProps = this . props ;
var prevState = this . state ;
this . props = nextProps ;
this . state = nextState ;
this . _ _reactInternalSnapshotFlag = true ;
this . _ _reactInternalSnapshot = this . getSnapshotBeforeUpdate (
prevProps ,
prevState
) ;
} finally {
this . props = prevProps ;
this . state = prevState ;
}
}
// React may warn about cWM/cWRP/cWU methods being deprecated.
// Add a flag to suppress these warnings for this special case.
componentWillMount . _ _suppressDeprecationWarning = true ;
componentWillReceiveProps . _ _suppressDeprecationWarning = true ;
componentWillUpdate . _ _suppressDeprecationWarning = true ;
function polyfill ( Component$$1 ) {
var prototype = Component$$1 . prototype ;
if ( ! prototype || ! prototype . isReactComponent ) {
throw new Error ( 'Can only polyfill class components' ) ;
}
if (
typeof Component$$1 . getDerivedStateFromProps !== 'function' &&
typeof prototype . getSnapshotBeforeUpdate !== 'function'
) {
return Component$$1 ;
}
// If new component APIs are defined, "unsafe" lifecycles won't be called.
// Error if any of these lifecycles are present,
// Because they would work differently between older and newer (16.3+) versions of React.
var foundWillMountName = null ;
var foundWillReceivePropsName = null ;
var foundWillUpdateName = null ;
if ( typeof prototype . componentWillMount === 'function' ) {
foundWillMountName = 'componentWillMount' ;
} else if ( typeof prototype . UNSAFE _componentWillMount === 'function' ) {
foundWillMountName = 'UNSAFE_componentWillMount' ;
}
if ( typeof prototype . componentWillReceiveProps === 'function' ) {
foundWillReceivePropsName = 'componentWillReceiveProps' ;
} else if ( typeof prototype . UNSAFE _componentWillReceiveProps === 'function' ) {
foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps' ;
}
if ( typeof prototype . componentWillUpdate === 'function' ) {
foundWillUpdateName = 'componentWillUpdate' ;
} else if ( typeof prototype . UNSAFE _componentWillUpdate === 'function' ) {
foundWillUpdateName = 'UNSAFE_componentWillUpdate' ;
}
if (
foundWillMountName !== null ||
foundWillReceivePropsName !== null ||
foundWillUpdateName !== null
) {
var componentName = Component$$1 . displayName || Component$$1 . name ;
var newApiName =
typeof Component$$1 . getDerivedStateFromProps === 'function'
? 'getDerivedStateFromProps()'
: 'getSnapshotBeforeUpdate()' ;
throw Error (
'Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n' +
componentName +
' uses ' +
newApiName +
' but also contains the following legacy lifecycles:' +
( foundWillMountName !== null ? '\n ' + foundWillMountName : '' ) +
( foundWillReceivePropsName !== null
? '\n ' + foundWillReceivePropsName
: '' ) +
( foundWillUpdateName !== null ? '\n ' + foundWillUpdateName : '' ) +
'\n\nThe above lifecycles should be removed. Learn more about this warning here:\n' +
'https://fb.me/react-async-component-lifecycle-hooks'
) ;
}
// React <= 16.2 does not support static getDerivedStateFromProps.
// As a workaround, use cWM and cWRP to invoke the new static lifecycle.
// Newer versions of React will ignore these lifecycles if gDSFP exists.
if ( typeof Component$$1 . getDerivedStateFromProps === 'function' ) {
prototype . componentWillMount = componentWillMount ;
prototype . componentWillReceiveProps = componentWillReceiveProps ;
}
// React <= 16.2 does not support getSnapshotBeforeUpdate.
// As a workaround, use cWU to invoke the new lifecycle.
// Newer versions of React will ignore that lifecycle if gSBU exists.
if ( typeof prototype . getSnapshotBeforeUpdate === 'function' ) {
if ( typeof prototype . componentDidUpdate !== 'function' ) {
throw new Error (
'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'
) ;
}
prototype . componentWillUpdate = componentWillUpdate ;
var componentDidUpdate = prototype . componentDidUpdate ;
prototype . componentDidUpdate = function componentDidUpdatePolyfill (
prevProps ,
prevState ,
maybeSnapshot
) {
// 16.3+ will not execute our will-update method;
// It will pass a snapshot value to did-update though.
// Older versions will require our polyfilled will-update value.
// We need to handle both cases, but can't just check for the presence of "maybeSnapshot",
// Because for <= 15.x versions this might be a "prevContext" object.
// We also can't just check "__reactInternalSnapshot",
// Because get-snapshot might return a falsy value.
// So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.
var snapshot = this . _ _reactInternalSnapshotFlag
? this . _ _reactInternalSnapshot
: maybeSnapshot ;
componentDidUpdate . call ( this , prevProps , prevState , snapshot ) ;
} ;
}
return Component$$1 ;
}
var reactLifecyclesCompat _es = /*#__PURE__*/ Object . freeze ( {
polyfill : polyfill
} ) ;
var ChildMapping = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . getChildMapping = getChildMapping ;
exports . mergeChildMappings = mergeChildMappings ;
exports . getInitialChildMapping = getInitialChildMapping ;
exports . getNextChildMapping = getNextChildMapping ;
/ * *
* Given ` this.props.children ` , return an object mapping key to child .
*
* @ param { * } children ` this.props.children `
* @ return { object } Mapping of key to child
* /
function getChildMapping ( children , mapFn ) {
var mapper = function mapper ( child ) {
return mapFn && ( 0 , React . isValidElement ) ( child ) ? mapFn ( child ) : child ;
} ;
var result = Object . create ( null ) ;
if ( children ) React . Children . map ( children , function ( c ) {
return c ;
} ) . forEach ( function ( child ) {
// run the map function here instead so that the key is the computed one
result [ child . key ] = mapper ( child ) ;
} ) ;
return result ;
}
/ * *
* When you ' re adding or removing children some may be added or removed in the
* same render pass . We want to show * both * since we want to simultaneously
* animate elements in and out . This function takes a previous set of keys
* and a new set of keys and merges them with its best guess of the correct
* ordering . In the future we may expose some of the utilities in
* ReactMultiChild to make this easy , but for now React itself does not
* directly have this concept of the union of prevChildren and nextChildren
* so we implement it here .
*
* @ param { object } prev prev children as returned from
* ` ReactTransitionChildMapping.getChildMapping() ` .
* @ param { object } next next children as returned from
* ` ReactTransitionChildMapping.getChildMapping() ` .
* @ return { object } a key set that contains all keys in ` prev ` and all keys
* in ` next ` in a reasonable order .
* /
function mergeChildMappings ( prev , next ) {
prev = prev || { } ;
next = next || { } ;
function getValueForKey ( key ) {
return key in next ? next [ key ] : prev [ key ] ;
} // For each key of `next`, the list of keys to insert before that key in
// the combined list
var nextKeysPending = Object . create ( null ) ;
var pendingKeys = [ ] ;
for ( var prevKey in prev ) {
if ( prevKey in next ) {
if ( pendingKeys . length ) {
nextKeysPending [ prevKey ] = pendingKeys ;
pendingKeys = [ ] ;
}
} else {
pendingKeys . push ( prevKey ) ;
}
}
var i ;
var childMapping = { } ;
for ( var nextKey in next ) {
if ( nextKeysPending [ nextKey ] ) {
for ( i = 0 ; i < nextKeysPending [ nextKey ] . length ; i ++ ) {
var pendingNextKey = nextKeysPending [ nextKey ] [ i ] ;
childMapping [ nextKeysPending [ nextKey ] [ i ] ] = getValueForKey ( pendingNextKey ) ;
}
}
childMapping [ nextKey ] = getValueForKey ( nextKey ) ;
} // Finally, add the keys which didn't appear before any key in `next`
for ( i = 0 ; i < pendingKeys . length ; i ++ ) {
childMapping [ pendingKeys [ i ] ] = getValueForKey ( pendingKeys [ i ] ) ;
}
return childMapping ;
}
function getProp ( child , prop , props ) {
return props [ prop ] != null ? props [ prop ] : child . props [ prop ] ;
}
function getInitialChildMapping ( props , onExited ) {
return getChildMapping ( props . children , function ( child ) {
return ( 0 , React . cloneElement ) ( child , {
onExited : onExited . bind ( null , child ) ,
in : true ,
appear : getProp ( child , 'appear' , props ) ,
enter : getProp ( child , 'enter' , props ) ,
exit : getProp ( child , 'exit' , props )
} ) ;
} ) ;
}
function getNextChildMapping ( nextProps , prevChildMapping , onExited ) {
var nextChildMapping = getChildMapping ( nextProps . children ) ;
var children = mergeChildMappings ( prevChildMapping , nextChildMapping ) ;
Object . keys ( children ) . forEach ( function ( key ) {
var child = children [ key ] ;
if ( ! ( 0 , React . isValidElement ) ( child ) ) return ;
var hasPrev = key in prevChildMapping ;
var hasNext = key in nextChildMapping ;
var prevChild = prevChildMapping [ key ] ;
var isLeaving = ( 0 , React . isValidElement ) ( prevChild ) && ! prevChild . props . in ; // item is new (entering)
if ( hasNext && ( ! hasPrev || isLeaving ) ) {
// console.log('entering', key)
children [ key ] = ( 0 , React . cloneElement ) ( child , {
onExited : onExited . bind ( null , child ) ,
in : true ,
exit : getProp ( child , 'exit' , nextProps ) ,
enter : getProp ( child , 'enter' , nextProps )
} ) ;
} else if ( ! hasNext && hasPrev && ! isLeaving ) {
// item is old (exiting)
// console.log('leaving', key)
children [ key ] = ( 0 , React . cloneElement ) ( child , {
in : false
} ) ;
} else if ( hasNext && hasPrev && ( 0 , React . isValidElement ) ( prevChild ) ) {
// item hasn't changed transition states
// copy over the last transition props;
// console.log('unchanged', key)
children [ key ] = ( 0 , React . cloneElement ) ( child , {
onExited : onExited . bind ( null , child ) ,
in : prevChild . props . in ,
exit : getProp ( child , 'exit' , nextProps ) ,
enter : getProp ( child , 'enter' , nextProps )
} ) ;
}
} ) ;
return children ;
}
} ) ;
unwrapExports ( ChildMapping ) ;
var ChildMapping _1 = ChildMapping . getChildMapping ;
var ChildMapping _2 = ChildMapping . mergeChildMappings ;
var ChildMapping _3 = ChildMapping . getInitialChildMapping ;
var ChildMapping _4 = ChildMapping . getNextChildMapping ;
var TransitionGroup _1 = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . default = void 0 ;
2019-03-04 18:49:46 +01:00
var _propTypes = _interopRequireDefault ( require$$0 ) ;
2019-03-01 12:22:51 +01:00
var _react = _interopRequireDefault ( React ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _objectWithoutPropertiesLoose ( source , excluded ) { if ( source == null ) return { } ; var target = { } ; var sourceKeys = Object . keys ( source ) ; var key , i ; for ( i = 0 ; i < sourceKeys . length ; i ++ ) { key = sourceKeys [ i ] ; if ( excluded . indexOf ( key ) >= 0 ) continue ; target [ key ] = source [ key ] ; } return target ; }
function _extends ( ) { _extends = Object . assign || function ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] ; for ( var key in source ) { if ( Object . prototype . hasOwnProperty . call ( source , key ) ) { target [ key ] = source [ key ] ; } } } return target ; } ; return _extends . apply ( this , arguments ) ; }
function _inheritsLoose ( subClass , superClass ) { subClass . prototype = Object . create ( superClass . prototype ) ; subClass . prototype . constructor = subClass ; subClass . _ _proto _ _ = superClass ; }
function _assertThisInitialized ( self ) { if ( self === void 0 ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return self ; }
var values = Object . values || function ( obj ) {
return Object . keys ( obj ) . map ( function ( k ) {
return obj [ k ] ;
} ) ;
} ;
var defaultProps = {
component : 'div' ,
childFactory : function childFactory ( child ) {
return child ;
}
/ * *
* The ` <TransitionGroup> ` component manages a set of transition components
* ( ` <Transition> ` and ` <CSSTransition> ` ) in a list . Like with the transition
* components , ` <TransitionGroup> ` is a state machine for managing the mounting
* and unmounting of components over time .
*
* Consider the example below . As items are removed or added to the TodoList the
* ` in ` prop is toggled automatically by the ` <TransitionGroup> ` .
*
* Note that ` <TransitionGroup> ` does not define any animation behavior !
* Exactly _how _ a list item animates is up to the individual transition
* component . This means you can mix and match animations across different list
* items .
* /
} ;
var TransitionGroup =
/*#__PURE__*/
function ( _React$Component ) {
_inheritsLoose ( TransitionGroup , _React$Component ) ;
function TransitionGroup ( props , context ) {
var _this ;
_this = _React$Component . call ( this , props , context ) || this ;
var handleExited = _this . handleExited . bind ( _assertThisInitialized ( _assertThisInitialized ( _this ) ) ) ; // Initial children should all be entering, dependent on appear
_this . state = {
handleExited : handleExited ,
firstRender : true
} ;
return _this ;
}
var _proto = TransitionGroup . prototype ;
_proto . getChildContext = function getChildContext ( ) {
return {
transitionGroup : {
isMounting : ! this . appeared
}
} ;
} ;
_proto . componentDidMount = function componentDidMount ( ) {
this . appeared = true ;
this . mounted = true ;
} ;
_proto . componentWillUnmount = function componentWillUnmount ( ) {
this . mounted = false ;
} ;
TransitionGroup . getDerivedStateFromProps = function getDerivedStateFromProps ( nextProps , _ref ) {
var prevChildMapping = _ref . children ,
handleExited = _ref . handleExited ,
firstRender = _ref . firstRender ;
return {
children : firstRender ? ( 0 , ChildMapping . getInitialChildMapping ) ( nextProps , handleExited ) : ( 0 , ChildMapping . getNextChildMapping ) ( nextProps , prevChildMapping , handleExited ) ,
firstRender : false
} ;
} ;
_proto . handleExited = function handleExited ( child , node ) {
var currentChildMapping = ( 0 , ChildMapping . getChildMapping ) ( this . props . children ) ;
if ( child . key in currentChildMapping ) return ;
if ( child . props . onExited ) {
child . props . onExited ( node ) ;
}
if ( this . mounted ) {
this . setState ( function ( state ) {
var children = _extends ( { } , state . children ) ;
delete children [ child . key ] ;
return {
children : children
} ;
} ) ;
}
} ;
_proto . render = function render ( ) {
var _this$props = this . props ,
Component$$1 = _this$props . component ,
childFactory = _this$props . childFactory ,
props = _objectWithoutPropertiesLoose ( _this$props , [ "component" , "childFactory" ] ) ;
var children = values ( this . state . children ) . map ( childFactory ) ;
delete props . appear ;
delete props . enter ;
delete props . exit ;
if ( Component$$1 === null ) {
return children ;
}
return _react . default . createElement ( Component$$1 , props , children ) ;
} ;
return TransitionGroup ;
} ( _react . default . Component ) ;
TransitionGroup . childContextTypes = {
transitionGroup : _propTypes . default . object . isRequired
} ;
TransitionGroup . propTypes = process . env . NODE _ENV !== "production" ? {
/ * *
* ` <TransitionGroup> ` renders a ` <div> ` by default . You can change this
* behavior by providing a ` component ` prop .
* If you use React v16 + and would like to avoid a wrapping ` <div> ` element
* you can pass in ` component={null} ` . This is useful if the wrapping div
* borks your css styles .
* /
component : _propTypes . default . any ,
/ * *
* A set of ` <Transition> ` components , that are toggled ` in ` and out as they
* leave . the ` <TransitionGroup> ` will inject specific transition props , so
* remember to spread them through if you are wrapping the ` <Transition> ` as
* with our ` <Fade> ` example .
* /
children : _propTypes . default . node ,
/ * *
* A convenience prop that enables or disables appear animations
* for all children . Note that specifying this will override any defaults set
* on individual children Transitions .
* /
appear : _propTypes . default . bool ,
/ * *
* A convenience prop that enables or disables enter animations
* for all children . Note that specifying this will override any defaults set
* on individual children Transitions .
* /
enter : _propTypes . default . bool ,
/ * *
* A convenience prop that enables or disables exit animations
* for all children . Note that specifying this will override any defaults set
* on individual children Transitions .
* /
exit : _propTypes . default . bool ,
/ * *
* You may need to apply reactive updates to a child as it is exiting .
* This is generally done by using ` cloneElement ` however in the case of an exiting
* child the element has already been removed and not accessible to the consumer .
*
* If you do need to update a child as it leaves you can provide a ` childFactory `
* to wrap every child , even the ones that are leaving .
*
* @ type Function ( child : ReactElement ) - > ReactElement
* /
childFactory : _propTypes . default . func
} : { } ;
TransitionGroup . defaultProps = defaultProps ;
var _default = ( 0 , reactLifecyclesCompat _es . polyfill ) ( TransitionGroup ) ;
exports . default = _default ;
module . exports = exports [ "default" ] ;
} ) ;
unwrapExports ( TransitionGroup _1 ) ;
var constant = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . ACTION = exports . TYPE = exports . POSITION = void 0 ;
var POSITION = {
TOP _LEFT : 'top-left' ,
TOP _RIGHT : 'top-right' ,
TOP _CENTER : 'top-center' ,
BOTTOM _LEFT : 'bottom-left' ,
BOTTOM _RIGHT : 'bottom-right' ,
BOTTOM _CENTER : 'bottom-center'
} ;
exports . POSITION = POSITION ;
var TYPE = {
INFO : 'info' ,
SUCCESS : 'success' ,
WARNING : 'warning' ,
ERROR : 'error' ,
DEFAULT : 'default'
} ;
exports . TYPE = TYPE ;
var ACTION = {
SHOW : 0 ,
CLEAR : 1 ,
DID _MOUNT : 2 ,
WILL _UNMOUNT : 3 ,
ON _CHANGE : 4
} ;
exports . ACTION = ACTION ;
} ) ;
unwrapExports ( constant ) ;
var constant _1 = constant . ACTION ;
var constant _2 = constant . TYPE ;
var constant _3 = constant . POSITION ;
var propValidator = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . isValidDelay = isValidDelay ;
exports . objectValues = objectValues ;
exports . falseOrElement = exports . falseOrDelay = void 0 ;
function isValidDelay ( val ) {
return typeof val === 'number' && ! isNaN ( val ) && val > 0 ;
}
function objectValues ( obj ) {
return Object . keys ( obj ) . map ( function ( key ) {
return obj [ key ] ;
} ) ;
}
function withRequired ( fn ) {
fn . isRequired = function ( props , propName , componentName ) {
var prop = props [ propName ] ;
if ( typeof prop === 'undefined' ) {
return new Error ( "The prop " + propName + " is marked as required in \n " + componentName + ", but its value is undefined." ) ;
}
fn ( props , propName , componentName ) ;
} ;
return fn ;
}
var falseOrDelay = withRequired ( function ( props , propName , componentName ) {
var prop = props [ propName ] ;
if ( prop !== false && ! isValidDelay ( prop ) ) {
return new Error ( componentName + " expect " + propName + " \n to be a valid Number > 0 or equal to false. " + prop + " given." ) ;
}
return null ;
} ) ;
exports . falseOrDelay = falseOrDelay ;
var falseOrElement = withRequired ( function ( props , propName , componentName ) {
var prop = props [ propName ] ;
if ( prop !== false && ! ( 0 , React . isValidElement ) ( prop ) ) {
return new Error ( componentName + " expect " + propName + " \n to be a valid react element or equal to false. " + prop + " given." ) ;
}
return null ;
} ) ;
exports . falseOrElement = falseOrElement ;
} ) ;
unwrapExports ( propValidator ) ;
var propValidator _1 = propValidator . isValidDelay ;
var propValidator _2 = propValidator . objectValues ;
var propValidator _3 = propValidator . falseOrElement ;
var propValidator _4 = propValidator . falseOrDelay ;
var ProgressBar _1 = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . default = void 0 ;
var _react = _interopRequireDefault ( React ) ;
2019-03-04 18:49:46 +01:00
var _propTypes = _interopRequireDefault ( require$$0 ) ;
2019-03-01 12:22:51 +01:00
var _classnames = _interopRequireDefault ( classnames ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _extends ( ) { _extends = Object . assign || function ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] ; for ( var key in source ) { if ( Object . prototype . hasOwnProperty . call ( source , key ) ) { target [ key ] = source [ key ] ; } } } return target ; } ; return _extends . apply ( this , arguments ) ; }
function ProgressBar ( _ref ) {
var _animationEvent ;
var delay = _ref . delay ,
isRunning = _ref . isRunning ,
closeToast = _ref . closeToast ,
type = _ref . type ,
hide = _ref . hide ,
className = _ref . className ,
userStyle = _ref . style ,
controlledProgress = _ref . controlledProgress ,
progress = _ref . progress ,
isProgressDone = _ref . isProgressDone ,
rtl = _ref . rtl ;
var style = _extends ( { } , userStyle , {
animationDuration : delay + "ms" ,
animationPlayState : isRunning ? 'running' : 'paused' ,
opacity : hide ? 0 : 1 ,
transform : controlledProgress ? "scaleX(" + progress + ")" : null
} ) ;
var classNames = ( 0 , _classnames . default ) ( 'Toastify__progress-bar' , controlledProgress ? 'Toastify__progress-bar--controlled' : 'Toastify__progress-bar--animated' , "Toastify__progress-bar--" + type , {
'Toastify__progress-bar--rtl' : rtl
} , className ) ;
var animationEvent = ( _animationEvent = { } , _animationEvent [ controlledProgress && isProgressDone ? 'onTransitionEnd' : 'onAnimationEnd' ] = controlledProgress && ! isProgressDone ? null : closeToast , _animationEvent ) ;
return _react . default . createElement ( "div" , _extends ( {
className : classNames ,
style : style
} , animationEvent ) ) ;
}
ProgressBar . propTypes = {
/ * *
* The animation delay which determine when to close the toast
* /
delay : propValidator . falseOrDelay . isRequired ,
/ * *
* Whether or not the animation is running or paused
* /
isRunning : _propTypes . default . bool . isRequired ,
/ * *
* Func to close the current toast
* /
closeToast : _propTypes . default . func . isRequired ,
/ * *
* Support rtl content
* /
rtl : _propTypes . default . bool . isRequired ,
/ * *
* Optional type : info , success ...
* /
type : _propTypes . default . string ,
/ * *
* Hide or not the progress bar
* /
hide : _propTypes . default . bool ,
/ * *
* Optionnal className
* /
className : _propTypes . default . oneOfType ( [ _propTypes . default . string , _propTypes . default . object ] ) ,
/ * *
* Controlled progress value
* /
progress : _propTypes . default . number ,
/ * *
* Tell wether or not controlled progress bar is used
* /
controlledProgress : _propTypes . default . bool ,
/ * *
* Helper to close the toast when using controlled progress value
* /
isProgressDone : _propTypes . default . bool
} ;
ProgressBar . defaultProps = {
type : constant . TYPE . DEFAULT ,
hide : false
} ;
var _default = ProgressBar ;
exports . default = _default ;
} ) ;
unwrapExports ( ProgressBar _1 ) ;
var Toast _1 = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . default = void 0 ;
var _react = _interopRequireWildcard ( React ) ;
2019-03-04 18:49:46 +01:00
var _propTypes = _interopRequireDefault ( require$$0 ) ;
2019-03-01 12:22:51 +01:00
var _classnames = _interopRequireDefault ( classnames ) ;
var _ProgressBar = _interopRequireDefault ( ProgressBar _1 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _interopRequireWildcard ( obj ) { if ( obj && obj . _ _esModule ) { return obj ; } else { var newObj = { } ; if ( obj != null ) { for ( var key in obj ) { if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) { var desc = Object . defineProperty && Object . getOwnPropertyDescriptor ? Object . getOwnPropertyDescriptor ( obj , key ) : { } ; if ( desc . get || desc . set ) { Object . defineProperty ( newObj , key , desc ) ; } else { newObj [ key ] = obj [ key ] ; } } } } newObj . default = obj ; return newObj ; } }
function _extends ( ) { _extends = Object . assign || function ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] ; for ( var key in source ) { if ( Object . prototype . hasOwnProperty . call ( source , key ) ) { target [ key ] = source [ key ] ; } } } return target ; } ; return _extends . apply ( this , arguments ) ; }
function _inheritsLoose ( subClass , superClass ) { subClass . prototype = Object . create ( superClass . prototype ) ; subClass . prototype . constructor = subClass ; subClass . _ _proto _ _ = superClass ; }
function getX ( e ) {
return e . targetTouches && e . targetTouches . length >= 1 ? e . targetTouches [ 0 ] . clientX : e . clientX ;
}
function getY ( e ) {
return e . targetTouches && e . targetTouches . length >= 1 ? e . targetTouches [ 0 ] . clientY : e . clientY ;
}
var noop = function noop ( ) { } ;
var Toast =
/*#__PURE__*/
function ( _Component ) {
_inheritsLoose ( Toast , _Component ) ;
function Toast ( ) {
var _this ;
for ( var _len = arguments . length , args = new Array ( _len ) , _key = 0 ; _key < _len ; _key ++ ) {
args [ _key ] = arguments [ _key ] ;
}
_this = _Component . call . apply ( _Component , [ this ] . concat ( args ) ) || this ;
_this . state = {
isRunning : true ,
preventExitTransition : false
} ;
_this . flag = {
canCloseOnClick : true ,
canDrag : false
} ;
_this . drag = {
start : 0 ,
x : 0 ,
y : 0 ,
deltaX : 0 ,
removalDistance : 0
} ;
_this . ref = null ;
_this . pauseToast = function ( ) {
if ( _this . props . autoClose ) {
_this . setState ( {
isRunning : false
} ) ;
}
} ;
_this . playToast = function ( ) {
if ( _this . props . autoClose ) {
_this . setState ( {
isRunning : true
} ) ;
}
} ;
_this . onDragStart = function ( e ) {
_this . flag . canCloseOnClick = true ;
_this . flag . canDrag = true ;
_this . ref . style . transition = '' ;
_this . drag . start = _this . drag . x = getX ( e . nativeEvent ) ;
_this . drag . removalDistance = _this . ref . offsetWidth * ( _this . props . draggablePercent / 100 ) ;
} ;
_this . onDragMove = function ( e ) {
if ( _this . flag . canDrag ) {
if ( _this . state . isRunning ) {
_this . pauseToast ( ) ;
}
_this . drag . x = getX ( e ) ;
_this . drag . deltaX = _this . drag . x - _this . drag . start ; // prevent false positif during a toast click
_this . drag . start !== _this . drag . x && ( _this . flag . canCloseOnClick = false ) ;
_this . ref . style . transform = "translateX(" + _this . drag . deltaX + "px)" ;
_this . ref . style . opacity = 1 - Math . abs ( _this . drag . deltaX / _this . drag . removalDistance ) ;
}
} ;
_this . onDragEnd = function ( e ) {
if ( _this . flag . canDrag ) {
_this . flag . canDrag = false ;
if ( Math . abs ( _this . drag . deltaX ) > _this . drag . removalDistance ) {
_this . setState ( {
preventExitTransition : true
} , _this . props . closeToast ) ;
return ;
}
_this . drag . y = getY ( e ) ;
_this . ref . style . transition = 'transform 0.2s, opacity 0.2s' ;
_this . ref . style . transform = 'translateX(0)' ;
_this . ref . style . opacity = 1 ;
}
} ;
_this . onDragTransitionEnd = function ( ) {
var _this$ref$getBounding = _this . ref . getBoundingClientRect ( ) ,
top = _this$ref$getBounding . top ,
bottom = _this$ref$getBounding . bottom ,
left = _this$ref$getBounding . left ,
right = _this$ref$getBounding . right ;
if ( _this . props . pauseOnHover && _this . drag . x >= left && _this . drag . x <= right && _this . drag . y >= top && _this . drag . y <= bottom ) {
_this . pauseToast ( ) ;
} else {
_this . playToast ( ) ;
}
} ;
return _this ;
}
var _proto = Toast . prototype ;
_proto . componentDidMount = function componentDidMount ( ) {
this . props . onOpen ( this . props . children . props ) ;
if ( this . props . draggable ) {
this . bindDragEvents ( ) ;
} // Maybe I could bind the event in the ToastContainer and rely on delegation
if ( this . props . pauseOnFocusLoss ) {
this . bindFocusEvents ( ) ;
}
} ;
_proto . componentDidUpdate = function componentDidUpdate ( prevProps ) {
if ( prevProps . draggable !== this . props . draggable ) {
if ( this . props . draggable ) {
this . bindDragEvents ( ) ;
} else {
this . unbindDragEvents ( ) ;
}
}
if ( prevProps . pauseOnFocusLoss !== this . props . pauseOnFocusLoss ) {
if ( this . props . pauseOnFocusLoss ) {
this . bindFocusEvents ( ) ;
} else {
this . unbindFocusEvents ( ) ;
}
}
} ;
_proto . componentWillUnmount = function componentWillUnmount ( ) {
this . props . onClose ( this . props . children . props ) ;
if ( this . props . draggable ) {
this . unbindDragEvents ( ) ;
}
if ( this . props . pauseOnFocusLoss ) {
this . unbindFocusEvents ( ) ;
}
} ;
_proto . bindFocusEvents = function bindFocusEvents ( ) {
window . addEventListener ( 'focus' , this . playToast ) ;
window . addEventListener ( 'blur' , this . pauseToast ) ;
} ;
_proto . unbindFocusEvents = function unbindFocusEvents ( ) {
window . removeEventListener ( 'focus' , this . playToast ) ;
window . removeEventListener ( 'blur' , this . pauseToast ) ;
} ;
_proto . bindDragEvents = function bindDragEvents ( ) {
document . addEventListener ( 'mousemove' , this . onDragMove ) ;
document . addEventListener ( 'mouseup' , this . onDragEnd ) ;
document . addEventListener ( 'touchmove' , this . onDragMove ) ;
document . addEventListener ( 'touchend' , this . onDragEnd ) ;
} ;
_proto . unbindDragEvents = function unbindDragEvents ( ) {
document . removeEventListener ( 'mousemove' , this . onDragMove ) ;
document . removeEventListener ( 'mouseup' , this . onDragEnd ) ;
document . removeEventListener ( 'touchmove' , this . onDragMove ) ;
document . removeEventListener ( 'touchend' , this . onDragEnd ) ;
} ;
_proto . render = function render ( ) {
var _this2 = this ;
var _this$props = this . props ,
closeButton = _this$props . closeButton ,
children = _this$props . children ,
autoClose = _this$props . autoClose ,
pauseOnHover = _this$props . pauseOnHover ,
closeOnClick = _this$props . closeOnClick ,
type = _this$props . type ,
hideProgressBar = _this$props . hideProgressBar ,
closeToast = _this$props . closeToast ,
Transition = _this$props . transition ,
position = _this$props . position ,
onExited = _this$props . onExited ,
className = _this$props . className ,
bodyClassName = _this$props . bodyClassName ,
progressClassName = _this$props . progressClassName ,
progressStyle = _this$props . progressStyle ,
updateId = _this$props . updateId ,
role = _this$props . role ,
progress = _this$props . progress ,
isProgressDone = _this$props . isProgressDone ,
rtl = _this$props . rtl ;
var toastProps = {
className : ( 0 , _classnames . default ) ( 'Toastify__toast' , "Toastify__toast--" + type , {
'Toastify__toast--rtl' : rtl
} , className )
} ;
if ( autoClose && pauseOnHover ) {
toastProps . onMouseEnter = this . pauseToast ;
toastProps . onMouseLeave = this . playToast ;
} // prevent toast from closing when user drags the toast
if ( closeOnClick ) {
toastProps . onClick = function ( ) {
return _this2 . flag . canCloseOnClick && closeToast ( ) ;
} ;
}
var controlledProgress = parseFloat ( progress ) === progress ;
return _react . default . createElement ( Transition , {
in : this . props . in ,
appear : true ,
unmountOnExit : true ,
onExited : onExited ,
position : position ,
preventExitTransition : this . state . preventExitTransition
} , _react . default . createElement ( "div" , _extends ( { } , toastProps , {
ref : function ref ( _ref ) {
return _this2 . ref = _ref ;
} ,
onMouseDown : this . onDragStart ,
onTouchStart : this . onDragStart ,
onTransitionEnd : this . onDragTransitionEnd
} ) , _react . default . createElement ( "div" , _extends ( { } , this . props . in && {
role : role
} , {
className : ( 0 , _classnames . default ) ( 'Toastify__toast-body' , bodyClassName )
} ) , children ) , closeButton && closeButton , ( autoClose || controlledProgress ) && _react . default . createElement ( _ProgressBar . default , _extends ( { } , updateId && ! controlledProgress ? {
key : "pb-" + updateId
} : { } , {
rtl : rtl ,
delay : autoClose ,
isRunning : this . state . isRunning ,
closeToast : closeToast ,
hide : hideProgressBar ,
type : type ,
style : progressStyle ,
className : progressClassName ,
controlledProgress : controlledProgress ,
isProgressDone : isProgressDone ,
progress : progress
} ) ) ) ) ;
} ;
return Toast ;
} ( _react . Component ) ;
Toast . propTypes = {
closeButton : propValidator . falseOrElement . isRequired ,
autoClose : propValidator . falseOrDelay . isRequired ,
children : _propTypes . default . node . isRequired ,
closeToast : _propTypes . default . func . isRequired ,
position : _propTypes . default . oneOf ( ( 0 , propValidator . objectValues ) ( constant . POSITION ) ) . isRequired ,
pauseOnHover : _propTypes . default . bool . isRequired ,
pauseOnFocusLoss : _propTypes . default . bool . isRequired ,
closeOnClick : _propTypes . default . bool . isRequired ,
transition : _propTypes . default . func . isRequired ,
rtl : _propTypes . default . bool . isRequired ,
hideProgressBar : _propTypes . default . bool . isRequired ,
draggable : _propTypes . default . bool . isRequired ,
draggablePercent : _propTypes . default . number . isRequired ,
in : _propTypes . default . bool ,
onExited : _propTypes . default . func ,
onOpen : _propTypes . default . func ,
onClose : _propTypes . default . func ,
type : _propTypes . default . oneOf ( ( 0 , propValidator . objectValues ) ( constant . TYPE ) ) ,
className : _propTypes . default . oneOfType ( [ _propTypes . default . string , _propTypes . default . object ] ) ,
bodyClassName : _propTypes . default . oneOfType ( [ _propTypes . default . string , _propTypes . default . object ] ) ,
progressClassName : _propTypes . default . oneOfType ( [ _propTypes . default . string , _propTypes . default . object ] ) ,
progressStyle : _propTypes . default . object ,
progress : _propTypes . default . number ,
isProgressDone : _propTypes . default . bool ,
updateId : _propTypes . default . oneOfType ( [ _propTypes . default . string , _propTypes . default . number ] ) ,
ariaLabel : _propTypes . default . string
} ;
Toast . defaultProps = {
type : constant . TYPE . DEFAULT ,
in : true ,
onOpen : noop ,
onClose : noop ,
className : null ,
bodyClassName : null ,
progressClassName : null ,
updateId : null ,
role : 'alert'
} ;
var _default = Toast ;
exports . default = _default ;
} ) ;
unwrapExports ( Toast _1 ) ;
var CloseButton _1 = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . default = void 0 ;
var _react = _interopRequireDefault ( React ) ;
2019-03-04 18:49:46 +01:00
var _propTypes = _interopRequireDefault ( require$$0 ) ;
2019-03-01 12:22:51 +01:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function CloseButton ( _ref ) {
var closeToast = _ref . closeToast ,
type = _ref . type ,
ariaLabel = _ref . ariaLabel ;
return _react . default . createElement ( "button" , {
className : "Toastify__close-button Toastify__close-button--" + type ,
type : "button" ,
onClick : closeToast ,
"aria-label" : ariaLabel
} , "\u2716" ) ;
}
CloseButton . propTypes = {
closeToast : _propTypes . default . func ,
arialLabel : _propTypes . default . string
} ;
CloseButton . defaultProps = {
ariaLabel : 'close'
} ;
var _default = CloseButton ;
exports . default = _default ;
} ) ;
unwrapExports ( CloseButton _1 ) ;
var PropTypes = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . classNamesShape = exports . timeoutsShape = void 0 ;
2019-03-04 18:49:46 +01:00
var _propTypes = _interopRequireDefault ( require$$0 ) ;
2019-03-01 12:22:51 +01:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var timeoutsShape = process . env . NODE _ENV !== 'production' ? _propTypes . default . oneOfType ( [ _propTypes . default . number , _propTypes . default . shape ( {
enter : _propTypes . default . number ,
exit : _propTypes . default . number ,
appear : _propTypes . default . number
} ) . isRequired ] ) : null ;
exports . timeoutsShape = timeoutsShape ;
var classNamesShape = process . env . NODE _ENV !== 'production' ? _propTypes . default . oneOfType ( [ _propTypes . default . string , _propTypes . default . shape ( {
enter : _propTypes . default . string ,
exit : _propTypes . default . string ,
active : _propTypes . default . string
} ) , _propTypes . default . shape ( {
enter : _propTypes . default . string ,
enterDone : _propTypes . default . string ,
enterActive : _propTypes . default . string ,
exit : _propTypes . default . string ,
exitDone : _propTypes . default . string ,
exitActive : _propTypes . default . string
} ) ] ) : null ;
exports . classNamesShape = classNamesShape ;
} ) ;
unwrapExports ( PropTypes ) ;
var PropTypes _1 = PropTypes . classNamesShape ;
var PropTypes _2 = PropTypes . timeoutsShape ;
var Transition _1 = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . default = exports . EXITING = exports . ENTERED = exports . ENTERING = exports . EXITED = exports . UNMOUNTED = void 0 ;
2019-03-04 18:49:46 +01:00
var PropTypes$$1 = _interopRequireWildcard ( require$$0 ) ;
2019-03-01 12:22:51 +01:00
var _react = _interopRequireDefault ( React ) ;
var _reactDom = _interopRequireDefault ( reactDom ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _interopRequireWildcard ( obj ) { if ( obj && obj . _ _esModule ) { return obj ; } else { var newObj = { } ; if ( obj != null ) { for ( var key in obj ) { if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) { var desc = Object . defineProperty && Object . getOwnPropertyDescriptor ? Object . getOwnPropertyDescriptor ( obj , key ) : { } ; if ( desc . get || desc . set ) { Object . defineProperty ( newObj , key , desc ) ; } else { newObj [ key ] = obj [ key ] ; } } } } newObj . default = obj ; return newObj ; } }
function _objectWithoutPropertiesLoose ( source , excluded ) { if ( source == null ) return { } ; var target = { } ; var sourceKeys = Object . keys ( source ) ; var key , i ; for ( i = 0 ; i < sourceKeys . length ; i ++ ) { key = sourceKeys [ i ] ; if ( excluded . indexOf ( key ) >= 0 ) continue ; target [ key ] = source [ key ] ; } return target ; }
function _inheritsLoose ( subClass , superClass ) { subClass . prototype = Object . create ( superClass . prototype ) ; subClass . prototype . constructor = subClass ; subClass . _ _proto _ _ = superClass ; }
var UNMOUNTED = 'unmounted' ;
exports . UNMOUNTED = UNMOUNTED ;
var EXITED = 'exited' ;
exports . EXITED = EXITED ;
var ENTERING = 'entering' ;
exports . ENTERING = ENTERING ;
var ENTERED = 'entered' ;
exports . ENTERED = ENTERED ;
var EXITING = 'exiting' ;
/ * *
* The Transition component lets you describe a transition from one component
* state to another _over time _ with a simple declarative API . Most commonly
* it ' s used to animate the mounting and unmounting of a component , but can also
* be used to describe in - place transition states as well .
*
* By default the ` Transition ` component does not alter the behavior of the
* component it renders , it only tracks "enter" and "exit" states for the components .
* It ' s up to you to give meaning and effect to those states . For example we can
* add styles to a component when it enters or exits :
*
* ` ` ` jsx
* import Transition from 'react-transition-group/Transition' ;
*
* const duration = 300 ;
*
* const defaultStyle = {
* transition : ` opacity ${ duration } ms ease-in-out ` ,
* opacity : 0 ,
* }
*
* const transitionStyles = {
* entering : { opacity : 0 } ,
* entered : { opacity : 1 } ,
* } ;
*
* const Fade = ( { in : inProp } ) => (
* < Transition in = { inProp } timeout = { duration } >
* { ( state ) => (
* < div style = { {
* ... defaultStyle ,
* ... transitionStyles [ state ]
* } } >
* I ' m a fade Transition !
* < / d i v >
* ) }
* < / T r a n s i t i o n >
* ) ;
* ` ` `
*
* As noted the ` Transition ` component doesn ' t _do _ anything by itself to its child component .
* What it does do is track transition states over time so you can update the
* component ( such as by adding styles or classes ) when it changes states .
*
* There are 4 main states a Transition can be in :
* - ` 'entering' `
* - ` 'entered' `
* - ` 'exiting' `
* - ` 'exited' `
*
* Transition state is toggled via the ` in ` prop . When ` true ` the component begins the
* "Enter" stage . During this stage , the component will shift from its current transition state ,
* to ` 'entering' ` for the duration of the transition and then to the ` 'entered' ` stage once
* it 's complete. Let' s take the following example :
*
* ` ` ` jsx
* state = { in : false } ;
*
* toggleEnterState = ( ) => {
* this . setState ( { in : true } ) ;
* }
*
* render ( ) {
* return (
* < div >
* < Transition in = { this . state . in } timeout = { 500 } / >
* < button onClick = { this . toggleEnterState } > Click to Enter < / b u t t o n >
* < / d i v >
* ) ;
* }
* ` ` `
*
* When the button is clicked the component will shift to the ` 'entering' ` state and
* stay there for 500 ms ( the value of ` timeout ` ) before it finally switches to ` 'entered' ` .
*
* When ` in ` is ` false ` the same thing happens except the state moves from ` 'exiting' ` to ` 'exited' ` .
*
* # # Timing
*
* Timing is often the trickiest part of animation , mistakes can result in slight delays
* that are hard to pin down . A common example is when you want to add an exit transition ,
* you should set the desired final styles when the state is ` 'exiting' ` . That ' s when the
* transition to those styles will start and , if you matched the ` timeout ` prop with the
* CSS Transition duration , it will end exactly when the state changes to ` 'exited' ` .
*
* > * * Note * * : For simpler transitions the ` Transition ` component might be enough , but
* > take into account that it ' s platform - agnostic , while the ` CSSTransition ` component
* > [ forces reflows ] ( https : //github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)
* > in order to make more complex transitions more predictable . For example , even though
* > classes ` example-enter ` and ` example-enter-active ` are applied immediately one after
* > another , you can still transition from one to the other because of the forced reflow
* > ( read [ this issue ] ( https : //github.com/reactjs/react-transition-group/issues/159#issuecomment-322761171)
* > for more info ) . Take this into account when choosing between ` Transition ` and
* > ` CSSTransition ` .
* /
exports . EXITING = EXITING ;
var Transition =
/*#__PURE__*/
function ( _React$Component ) {
_inheritsLoose ( Transition , _React$Component ) ;
function Transition ( props , context ) {
var _this ;
_this = _React$Component . call ( this , props , context ) || this ;
var parentGroup = context . transitionGroup ; // In the context of a TransitionGroup all enters are really appears
var appear = parentGroup && ! parentGroup . isMounting ? props . enter : props . appear ;
var initialStatus ;
_this . appearStatus = null ;
if ( props . in ) {
if ( appear ) {
initialStatus = EXITED ;
_this . appearStatus = ENTERING ;
} else {
initialStatus = ENTERED ;
}
} else {
if ( props . unmountOnExit || props . mountOnEnter ) {
initialStatus = UNMOUNTED ;
} else {
initialStatus = EXITED ;
}
}
_this . state = {
status : initialStatus
} ;
_this . nextCallback = null ;
return _this ;
}
var _proto = Transition . prototype ;
_proto . getChildContext = function getChildContext ( ) {
return {
transitionGroup : null // allows for nested Transitions
} ;
} ;
Transition . getDerivedStateFromProps = function getDerivedStateFromProps ( _ref , prevState ) {
var nextIn = _ref . in ;
if ( nextIn && prevState . status === UNMOUNTED ) {
return {
status : EXITED
} ;
}
return null ;
} ; // getSnapshotBeforeUpdate(prevProps) {
// let nextStatus = null
// if (prevProps !== this.props) {
// const { status } = this.state
// if (this.props.in) {
// if (status !== ENTERING && status !== ENTERED) {
// nextStatus = ENTERING
// }
// } else {
// if (status === ENTERING || status === ENTERED) {
// nextStatus = EXITING
// }
// }
// }
// return { nextStatus }
// }
_proto . componentDidMount = function componentDidMount ( ) {
this . updateStatus ( true , this . appearStatus ) ;
} ;
_proto . componentDidUpdate = function componentDidUpdate ( prevProps ) {
var nextStatus = null ;
if ( prevProps !== this . props ) {
var status = this . state . status ;
if ( this . props . in ) {
if ( status !== ENTERING && status !== ENTERED ) {
nextStatus = ENTERING ;
}
} else {
if ( status === ENTERING || status === ENTERED ) {
nextStatus = EXITING ;
}
}
}
this . updateStatus ( false , nextStatus ) ;
} ;
_proto . componentWillUnmount = function componentWillUnmount ( ) {
this . cancelNextCallback ( ) ;
} ;
_proto . getTimeouts = function getTimeouts ( ) {
var timeout = this . props . timeout ;
var exit , enter , appear ;
exit = enter = appear = timeout ;
if ( timeout != null && typeof timeout !== 'number' ) {
exit = timeout . exit ;
enter = timeout . enter ; // TODO: remove fallback for next major
appear = timeout . appear !== undefined ? timeout . appear : enter ;
}
return {
exit : exit ,
enter : enter ,
appear : appear
} ;
} ;
_proto . updateStatus = function updateStatus ( mounting , nextStatus ) {
if ( mounting === void 0 ) {
mounting = false ;
}
if ( nextStatus !== null ) {
// nextStatus will always be ENTERING or EXITING.
this . cancelNextCallback ( ) ;
var node = _reactDom . default . findDOMNode ( this ) ;
if ( nextStatus === ENTERING ) {
this . performEnter ( node , mounting ) ;
} else {
this . performExit ( node ) ;
}
} else if ( this . props . unmountOnExit && this . state . status === EXITED ) {
this . setState ( {
status : UNMOUNTED
} ) ;
}
} ;
_proto . performEnter = function performEnter ( node , mounting ) {
var _this2 = this ;
var enter = this . props . enter ;
var appearing = this . context . transitionGroup ? this . context . transitionGroup . isMounting : mounting ;
var timeouts = this . getTimeouts ( ) ;
var enterTimeout = appearing ? timeouts . appear : timeouts . enter ; // no enter animation skip right to ENTERED
// if we are mounting and running this it means appear _must_ be set
if ( ! mounting && ! enter ) {
this . safeSetState ( {
status : ENTERED
} , function ( ) {
_this2 . props . onEntered ( node ) ;
} ) ;
return ;
}
this . props . onEnter ( node , appearing ) ;
this . safeSetState ( {
status : ENTERING
} , function ( ) {
_this2 . props . onEntering ( node , appearing ) ;
_this2 . onTransitionEnd ( node , enterTimeout , function ( ) {
_this2 . safeSetState ( {
status : ENTERED
} , function ( ) {
_this2 . props . onEntered ( node , appearing ) ;
} ) ;
} ) ;
} ) ;
} ;
_proto . performExit = function performExit ( node ) {
var _this3 = this ;
var exit = this . props . exit ;
var timeouts = this . getTimeouts ( ) ; // no exit animation skip right to EXITED
if ( ! exit ) {
this . safeSetState ( {
status : EXITED
} , function ( ) {
_this3 . props . onExited ( node ) ;
} ) ;
return ;
}
this . props . onExit ( node ) ;
this . safeSetState ( {
status : EXITING
} , function ( ) {
_this3 . props . onExiting ( node ) ;
_this3 . onTransitionEnd ( node , timeouts . exit , function ( ) {
_this3 . safeSetState ( {
status : EXITED
} , function ( ) {
_this3 . props . onExited ( node ) ;
} ) ;
} ) ;
} ) ;
} ;
_proto . cancelNextCallback = function cancelNextCallback ( ) {
if ( this . nextCallback !== null ) {
this . nextCallback . cancel ( ) ;
this . nextCallback = null ;
}
} ;
_proto . safeSetState = function safeSetState ( nextState , callback ) {
// This shouldn't be necessary, but there are weird race conditions with
// setState callbacks and unmounting in testing, so always make sure that
// we can cancel any pending setState callbacks after we unmount.
callback = this . setNextCallback ( callback ) ;
this . setState ( nextState , callback ) ;
} ;
_proto . setNextCallback = function setNextCallback ( callback ) {
var _this4 = this ;
var active = true ;
this . nextCallback = function ( event ) {
if ( active ) {
active = false ;
_this4 . nextCallback = null ;
callback ( event ) ;
}
} ;
this . nextCallback . cancel = function ( ) {
active = false ;
} ;
return this . nextCallback ;
} ;
_proto . onTransitionEnd = function onTransitionEnd ( node , timeout , handler ) {
this . setNextCallback ( handler ) ;
if ( node ) {
if ( this . props . addEndListener ) {
this . props . addEndListener ( node , this . nextCallback ) ;
}
if ( timeout != null ) {
setTimeout ( this . nextCallback , timeout ) ;
}
} else {
setTimeout ( this . nextCallback , 0 ) ;
}
} ;
_proto . render = function render ( ) {
var status = this . state . status ;
if ( status === UNMOUNTED ) {
return null ;
}
var _this$props = this . props ,
children = _this$props . children ,
childProps = _objectWithoutPropertiesLoose ( _this$props , [ "children" ] ) ; // filter props for Transtition
delete childProps . in ;
delete childProps . mountOnEnter ;
delete childProps . unmountOnExit ;
delete childProps . appear ;
delete childProps . enter ;
delete childProps . exit ;
delete childProps . timeout ;
delete childProps . addEndListener ;
delete childProps . onEnter ;
delete childProps . onEntering ;
delete childProps . onEntered ;
delete childProps . onExit ;
delete childProps . onExiting ;
delete childProps . onExited ;
if ( typeof children === 'function' ) {
return children ( status , childProps ) ;
}
var child = _react . default . Children . only ( children ) ;
return _react . default . cloneElement ( child , childProps ) ;
} ;
return Transition ;
} ( _react . default . Component ) ;
Transition . contextTypes = {
transitionGroup : PropTypes$$1 . object
} ;
Transition . childContextTypes = {
transitionGroup : function transitionGroup ( ) { }
} ;
Transition . propTypes = process . env . NODE _ENV !== "production" ? {
/ * *
* A ` function ` child can be used instead of a React element .
* This function is called with the current transition status
* ( 'entering' , 'entered' , 'exiting' , 'exited' , 'unmounted' ) , which can be used
* to apply context specific props to a component .
*
* ` ` ` jsx
* < Transition timeout = { 150 } >
* { ( status ) => (
* < MyComponent className = { ` fade fade- ${ status } ` } / >
* ) }
* < / T r a n s i t i o n >
* ` ` `
* /
children : PropTypes$$1 . oneOfType ( [ PropTypes$$1 . func . isRequired , PropTypes$$1 . element . isRequired ] ) . isRequired ,
/ * *
* Show the component ; triggers the enter or exit states
* /
in : PropTypes$$1 . bool ,
/ * *
* By default the child component is mounted immediately along with
* the parent ` Transition ` component . If you want to "lazy mount" the component on the
* first ` in={true} ` you can set ` mountOnEnter ` . After the first enter transition the component will stay
* mounted , even on "exited" , unless you also specify ` unmountOnExit ` .
* /
mountOnEnter : PropTypes$$1 . bool ,
/ * *
* By default the child component stays mounted after it reaches the ` 'exited' ` state .
* Set ` unmountOnExit ` if you ' d prefer to unmount the component after it finishes exiting .
* /
unmountOnExit : PropTypes$$1 . bool ,
/ * *
* Normally a component is not transitioned if it is shown when the ` <Transition> ` component mounts .
* If you want to transition on the first mount set ` appear ` to ` true ` , and the
* component will transition in as soon as the ` <Transition> ` mounts .
*
* > Note : there are no specific "appear" states . ` appear ` only adds an additional ` enter ` transition .
* /
appear : PropTypes$$1 . bool ,
/ * *
* Enable or disable enter transitions .
* /
enter : PropTypes$$1 . bool ,
/ * *
* Enable or disable exit transitions .
* /
exit : PropTypes$$1 . bool ,
/ * *
* The duration of the transition , in milliseconds .
* Required unless ` addEndListener ` is provided
*
* You may specify a single timeout for all transitions like : ` timeout={500} ` ,
* or individually like :
*
* ` ` ` jsx
* timeout = { {
* enter : 300 ,
* exit : 500 ,
* appear : 500 ,
* } }
* ` ` `
*
* If the value of appear is not set , then the value from enter is taken .
*
* @ type { number | { enter ? : number , exit ? : number } }
* /
timeout : function timeout ( props ) {
var pt = process . env . NODE _ENV !== "production" ? PropTypes . timeoutsShape : { } ; if ( ! props . addEndListener ) pt = pt . isRequired ;
for ( var _len = arguments . length , args = new Array ( _len > 1 ? _len - 1 : 0 ) , _key = 1 ; _key < _len ; _key ++ ) {
args [ _key - 1 ] = arguments [ _key ] ;
}
return pt . apply ( void 0 , [ props ] . concat ( args ) ) ;
} ,
/ * *
* Add a custom transition end trigger . Called with the transitioning
* DOM node and a ` done ` callback . Allows for more fine grained transition end
* logic . * * Note : * * Timeouts are still used as a fallback if provided .
*
* ` ` ` jsx
* addEndListener = { ( node , done ) => {
* // use the css transitionend event to mark the finish of a transition
* node . addEventListener ( 'transitionend' , done , false ) ;
* } }
* ` ` `
* /
addEndListener : PropTypes$$1 . func ,
/ * *
* Callback fired before the "entering" status is applied . An extra parameter
* ` isAppearing ` is supplied to indicate if the enter stage is occurring on the initial mount
*
* @ type Function ( node : HtmlElement , isAppearing : bool ) - > void
* /
onEnter : PropTypes$$1 . func ,
/ * *
* Callback fired after the "entering" status is applied . An extra parameter
* ` isAppearing ` is supplied to indicate if the enter stage is occurring on the initial mount
*
* @ type Function ( node : HtmlElement , isAppearing : bool )
* /
onEntering : PropTypes$$1 . func ,
/ * *
* Callback fired after the "entered" status is applied . An extra parameter
* ` isAppearing ` is supplied to indicate if the enter stage is occurring on the initial mount
*
* @ type Function ( node : HtmlElement , isAppearing : bool ) - > void
* /
onEntered : PropTypes$$1 . func ,
/ * *
* Callback fired before the "exiting" status is applied .
*
* @ type Function ( node : HtmlElement ) - > void
* /
onExit : PropTypes$$1 . func ,
/ * *
* Callback fired after the "exiting" status is applied .
*
* @ type Function ( node : HtmlElement ) - > void
* /
onExiting : PropTypes$$1 . func ,
/ * *
* Callback fired after the "exited" status is applied .
*
* @ type Function ( node : HtmlElement ) - > void
* /
onExited : PropTypes$$1 . func // Name the function so it is clearer in the documentation
} : { } ;
function noop ( ) { }
Transition . defaultProps = {
in : false ,
mountOnEnter : false ,
unmountOnExit : false ,
appear : false ,
enter : true ,
exit : true ,
onEnter : noop ,
onEntering : noop ,
onEntered : noop ,
onExit : noop ,
onExiting : noop ,
onExited : noop
} ;
Transition . UNMOUNTED = 0 ;
Transition . EXITED = 1 ;
Transition . ENTERING = 2 ;
Transition . ENTERED = 3 ;
Transition . EXITING = 4 ;
var _default = ( 0 , reactLifecyclesCompat _es . polyfill ) ( Transition ) ;
exports . default = _default ;
} ) ;
unwrapExports ( Transition _1 ) ;
var Transition _2 = Transition _1 . EXITING ;
var Transition _3 = Transition _1 . ENTERED ;
var Transition _4 = Transition _1 . ENTERING ;
var Transition _5 = Transition _1 . EXITED ;
var Transition _6 = Transition _1 . UNMOUNTED ;
var cssTransition = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . default = _default ;
var _react = _interopRequireDefault ( React ) ;
var _Transition = _interopRequireDefault ( Transition _1 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _extends ( ) { _extends = Object . assign || function ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] ; for ( var key in source ) { if ( Object . prototype . hasOwnProperty . call ( source , key ) ) { target [ key ] = source [ key ] ; } } } return target ; } ; return _extends . apply ( this , arguments ) ; }
function _objectWithoutPropertiesLoose ( source , excluded ) { if ( source == null ) return { } ; var target = { } ; var sourceKeys = Object . keys ( source ) ; var key , i ; for ( i = 0 ; i < sourceKeys . length ; i ++ ) { key = sourceKeys [ i ] ; if ( excluded . indexOf ( key ) >= 0 ) continue ; target [ key ] = source [ key ] ; } return target ; }
var noop = function noop ( ) { } ;
function _default ( _ref ) {
var enter = _ref . enter ,
exit = _ref . exit ,
_ref$duration = _ref . duration ,
duration = _ref$duration === void 0 ? 750 : _ref$duration ,
_ref$appendPosition = _ref . appendPosition ,
appendPosition = _ref$appendPosition === void 0 ? false : _ref$appendPosition ;
return function Animation ( _ref2 ) {
var children = _ref2 . children ,
position = _ref2 . position ,
preventExitTransition = _ref2 . preventExitTransition ,
props = _objectWithoutPropertiesLoose ( _ref2 , [ "children" , "position" , "preventExitTransition" ] ) ;
var enterClassName = appendPosition ? enter + "--" + position : enter ;
var exitClassName = appendPosition ? exit + "--" + position : exit ;
var enterDuration , exitDuration ;
if ( Array . isArray ( duration ) && duration . length === 2 ) {
enterDuration = duration [ 0 ] ;
exitDuration = duration [ 1 ] ;
} else {
enterDuration = exitDuration = duration ;
}
var onEnter = function onEnter ( node ) {
node . classList . add ( enterClassName ) ;
node . style . animationFillMode = 'forwards' ;
node . style . animationDuration = enterDuration * 0.001 + "s" ;
} ;
var onEntered = function onEntered ( node ) {
node . classList . remove ( enterClassName ) ;
node . style . cssText = '' ;
} ;
var onExit = function onExit ( node ) {
node . classList . add ( exitClassName ) ;
node . style . animationFillMode = 'forwards' ;
node . style . animationDuration = exitDuration * 0.001 + "s" ;
} ;
return _react . default . createElement ( _Transition . default , _extends ( { } , props , {
timeout : preventExitTransition ? 0 : {
enter : enterDuration ,
exit : exitDuration
} ,
onEnter : onEnter ,
onEntered : onEntered ,
onExit : preventExitTransition ? noop : onExit
} ) , children ) ;
} ;
}
} ) ;
unwrapExports ( cssTransition ) ;
var Transitions = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . Flip = exports . Zoom = exports . Slide = exports . Bounce = void 0 ;
var _cssTransition = _interopRequireDefault ( cssTransition ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var Bounce = ( 0 , _cssTransition . default ) ( {
enter : 'Toastify__bounce-enter' ,
exit : 'Toastify__bounce-exit' ,
appendPosition : true
} ) ;
exports . Bounce = Bounce ;
var Slide = ( 0 , _cssTransition . default ) ( {
enter : 'Toastify__slide-enter' ,
exit : 'Toastify__slide-exit' ,
duration : [ 450 , 750 ] ,
appendPosition : true
} ) ;
exports . Slide = Slide ;
var Zoom = ( 0 , _cssTransition . default ) ( {
enter : 'Toastify__zoom-enter' ,
exit : 'Toastify__zoom-exit'
} ) ;
exports . Zoom = Zoom ;
var Flip = ( 0 , _cssTransition . default ) ( {
enter : 'Toastify__flip-enter' ,
exit : 'Toastify__flip-exit'
} ) ;
exports . Flip = Flip ;
} ) ;
unwrapExports ( Transitions ) ;
var Transitions _1 = Transitions . Flip ;
var Transitions _2 = Transitions . Zoom ;
var Transitions _3 = Transitions . Slide ;
var Transitions _4 = Transitions . Bounce ;
var eventManager _1 = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . default = void 0 ;
var eventManager = {
list : new Map ( ) ,
on : function on ( event , callback ) {
this . list . has ( event ) || this . list . set ( event , [ ] ) ;
this . list . get ( event ) . push ( callback ) ;
return this ;
} ,
off : function off ( event ) {
this . list . delete ( event ) ;
return this ;
} ,
emit : function emit ( event ) {
for ( var _len = arguments . length , args = new Array ( _len > 1 ? _len - 1 : 0 ) , _key = 1 ; _key < _len ; _key ++ ) {
args [ _key - 1 ] = arguments [ _key ] ;
}
if ( ! this . list . has ( event ) ) {
return false ;
}
this . list . get ( event ) . forEach ( function ( callback ) {
return setTimeout ( function ( ) {
return callback . call . apply ( callback , [ null ] . concat ( args ) ) ;
} , 0 ) ;
} ) ;
return true ;
}
} ;
var _default = eventManager ;
exports . default = _default ;
} ) ;
unwrapExports ( eventManager _1 ) ;
var ToastContainer _1 = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . default = void 0 ;
var _react = _interopRequireWildcard ( React ) ;
2019-03-04 18:49:46 +01:00
var _propTypes = _interopRequireDefault ( require$$0 ) ;
2019-03-01 12:22:51 +01:00
var _classnames = _interopRequireDefault ( classnames ) ;
var _TransitionGroup = _interopRequireDefault ( TransitionGroup _1 ) ;
var _Toast = _interopRequireDefault ( Toast _1 ) ;
var _CloseButton = _interopRequireDefault ( CloseButton _1 ) ;
var _eventManager = _interopRequireDefault ( eventManager _1 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _interopRequireWildcard ( obj ) { if ( obj && obj . _ _esModule ) { return obj ; } else { var newObj = { } ; if ( obj != null ) { for ( var key in obj ) { if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) { var desc = Object . defineProperty && Object . getOwnPropertyDescriptor ? Object . getOwnPropertyDescriptor ( obj , key ) : { } ; if ( desc . get || desc . set ) { Object . defineProperty ( newObj , key , desc ) ; } else { newObj [ key ] = obj [ key ] ; } } } } newObj . default = obj ; return newObj ; } }
function _toConsumableArray ( arr ) { return _arrayWithoutHoles ( arr ) || _iterableToArray ( arr ) || _nonIterableSpread ( ) ; }
function _nonIterableSpread ( ) { throw new TypeError ( "Invalid attempt to spread non-iterable instance" ) ; }
function _iterableToArray ( iter ) { if ( Symbol . iterator in Object ( iter ) || Object . prototype . toString . call ( iter ) === "[object Arguments]" ) return Array . from ( iter ) ; }
function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) { for ( var i = 0 , arr2 = new Array ( arr . length ) ; i < arr . length ; i ++ ) { arr2 [ i ] = arr [ i ] ; } return arr2 ; } }
function _extends ( ) { _extends = Object . assign || function ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] ; for ( var key in source ) { if ( Object . prototype . hasOwnProperty . call ( source , key ) ) { target [ key ] = source [ key ] ; } } } return target ; } ; return _extends . apply ( this , arguments ) ; }
function _inheritsLoose ( subClass , superClass ) { subClass . prototype = Object . create ( superClass . prototype ) ; subClass . prototype . constructor = subClass ; subClass . _ _proto _ _ = superClass ; }
var ToastContainer =
/*#__PURE__*/
function ( _Component ) {
_inheritsLoose ( ToastContainer , _Component ) ;
function ToastContainer ( ) {
var _this ;
for ( var _len = arguments . length , args = new Array ( _len ) , _key = 0 ; _key < _len ; _key ++ ) {
args [ _key ] = arguments [ _key ] ;
}
_this = _Component . call . apply ( _Component , [ this ] . concat ( args ) ) || this ;
_this . state = {
toast : [ ]
} ;
_this . toastKey = 1 ;
_this . collection = { } ;
_this . isToastActive = function ( id ) {
return _this . state . toast . indexOf ( id ) !== - 1 ;
} ;
return _this ;
}
var _proto = ToastContainer . prototype ;
_proto . componentDidMount = function componentDidMount ( ) {
var _this2 = this ;
_eventManager . default . on ( constant . ACTION . SHOW , function ( content , options ) {
return _this2 . show ( content , options ) ;
} ) . on ( constant . ACTION . CLEAR , function ( id ) {
return ! id ? _this2 . clear ( ) : _this2 . removeToast ( id ) ;
} ) . emit ( constant . ACTION . DID _MOUNT , this ) ;
} ;
_proto . componentWillUnmount = function componentWillUnmount ( ) {
_eventManager . default . off ( constant . ACTION . SHOW ) . off ( constant . ACTION . CLEAR ) . emit ( constant . ACTION . WILL _UNMOUNT ) ;
} ;
_proto . removeToast = function removeToast ( id ) {
this . setState ( {
toast : this . state . toast . filter ( function ( v ) {
return v !== id ;
} )
} , this . dispatchChange ) ;
} ;
_proto . dispatchChange = function dispatchChange ( ) {
_eventManager . default . emit ( constant . ACTION . ON _CHANGE , this . state . toast . length ) ;
} ;
_proto . makeCloseButton = function makeCloseButton ( toastClose , toastId , type ) {
var _this3 = this ;
var closeButton = this . props . closeButton ;
if ( ( 0 , _react . isValidElement ) ( toastClose ) || toastClose === false ) {
closeButton = toastClose ;
}
return closeButton === false ? false : ( 0 , _react . cloneElement ) ( closeButton , {
closeToast : function closeToast ( ) {
return _this3 . removeToast ( toastId ) ;
} ,
type : type
} ) ;
} ;
_proto . getAutoCloseDelay = function getAutoCloseDelay ( toastAutoClose ) {
return toastAutoClose === false || ( 0 , propValidator . isValidDelay ) ( toastAutoClose ) ? toastAutoClose : this . props . autoClose ;
} ;
_proto . canBeRendered = function canBeRendered ( content ) {
return ( 0 , _react . isValidElement ) ( content ) || typeof content === 'string' || typeof content === 'number' || typeof content === 'function' ;
} ;
_proto . parseClassName = function parseClassName ( prop ) {
if ( typeof prop === 'string' ) {
return prop ;
} else if ( prop !== null && typeof prop === 'object' && 'toString' in prop ) {
return prop . toString ( ) ;
}
return null ;
} ;
_proto . show = function show ( content , options ) {
var _this4 = this ,
_extends2 ;
if ( ! this . canBeRendered ( content ) ) {
throw new Error ( "The element you provided cannot be rendered. You provided an element of type " + typeof content ) ;
}
var toastId = options . toastId ;
var closeToast = function closeToast ( ) {
return _this4 . removeToast ( toastId ) ;
} ;
var toastOptions = {
id : toastId ,
// ⚠️ if no options.key, this.toastKey - 1 is assigned
key : options . key || this . toastKey ++ ,
type : options . type ,
closeToast : closeToast ,
updateId : options . updateId ,
rtl : this . props . rtl ,
position : options . position || this . props . position ,
transition : options . transition || this . props . transition ,
className : this . parseClassName ( options . className || this . props . toastClassName ) ,
bodyClassName : this . parseClassName ( options . bodyClassName || this . props . bodyClassName ) ,
closeButton : this . makeCloseButton ( options . closeButton , toastId , options . type ) ,
pauseOnHover : typeof options . pauseOnHover === 'boolean' ? options . pauseOnHover : this . props . pauseOnHover ,
pauseOnFocusLoss : typeof options . pauseOnFocusLoss === 'boolean' ? options . pauseOnFocusLoss : this . props . pauseOnFocusLoss ,
draggable : typeof options . draggable === 'boolean' ? options . draggable : this . props . draggable ,
draggablePercent : typeof options . draggablePercent === 'number' && ! isNaN ( options . draggablePercent ) ? options . draggablePercent : this . props . draggablePercent ,
closeOnClick : typeof options . closeOnClick === 'boolean' ? options . closeOnClick : this . props . closeOnClick ,
progressClassName : this . parseClassName ( options . progressClassName || this . props . progressClassName ) ,
progressStyle : this . props . progressStyle ,
autoClose : this . getAutoCloseDelay ( options . autoClose ) ,
hideProgressBar : typeof options . hideProgressBar === 'boolean' ? options . hideProgressBar : this . props . hideProgressBar ,
progress : parseFloat ( options . progress ) ,
isProgressDone : options . isProgressDone
} ;
typeof options . onOpen === 'function' && ( toastOptions . onOpen = options . onOpen ) ;
typeof options . onClose === 'function' && ( toastOptions . onClose = options . onClose ) ; // add closeToast function to react component only
if ( ( 0 , _react . isValidElement ) ( content ) && typeof content . type !== 'string' && typeof content . type !== 'number' ) {
content = ( 0 , _react . cloneElement ) ( content , {
closeToast : closeToast
} ) ;
} else if ( typeof content === 'function' ) {
content = content ( {
closeToast : closeToast
} ) ;
}
this . collection = _extends ( { } , this . collection , ( _extends2 = { } , _extends2 [ toastId ] = {
position : toastOptions . position ,
options : toastOptions ,
content : content
} , _extends2 ) ) ;
this . setState ( {
toast : ( toastOptions . updateId ? _toConsumableArray ( this . state . toast ) : _toConsumableArray ( this . state . toast ) . concat ( [ toastId ] ) ) . filter ( function ( id ) {
return id !== options . staleToastId ;
} )
} , this . dispatchChange ) ;
} ;
_proto . makeToast = function makeToast ( content , options ) {
return _react . default . createElement ( _Toast . default , _extends ( { } , options , {
isDocumentHidden : this . state . isDocumentHidden ,
key : "toast-" + options . key
} ) , content ) ;
} ;
_proto . clear = function clear ( ) {
this . setState ( {
toast : [ ]
} ) ;
} ;
_proto . renderToast = function renderToast ( ) {
var _this5 = this ;
var toastToRender = { } ;
var _this$props = this . props ,
className = _this$props . className ,
style = _this$props . style ,
newestOnTop = _this$props . newestOnTop ;
var collection = newestOnTop ? Object . keys ( this . collection ) . reverse ( ) : Object . keys ( this . collection ) ; // group toast by position
collection . forEach ( function ( toastId ) {
var _this5$collection$toa = _this5 . collection [ toastId ] ,
position = _this5$collection$toa . position ,
options = _this5$collection$toa . options ,
content = _this5$collection$toa . content ;
toastToRender [ position ] || ( toastToRender [ position ] = [ ] ) ;
if ( _this5 . state . toast . indexOf ( options . id ) !== - 1 ) {
toastToRender [ position ] . push ( _this5 . makeToast ( content , options ) ) ;
} else {
toastToRender [ position ] . push ( null ) ;
delete _this5 . collection [ toastId ] ;
}
} ) ;
return Object . keys ( toastToRender ) . map ( function ( position ) {
var disablePointer = toastToRender [ position ] . length === 1 && toastToRender [ position ] [ 0 ] === null ;
var props = {
className : ( 0 , _classnames . default ) ( 'Toastify__toast-container' , "Toastify__toast-container--" + position , {
'Toastify__toast-container--rtl' : _this5 . props . rtl
} , _this5 . parseClassName ( className ) ) ,
style : disablePointer ? _extends ( { } , style , {
pointerEvents : 'none'
} ) : _extends ( { } , style )
} ;
return _react . default . createElement ( _TransitionGroup . default , _extends ( { } , props , {
key : "container-" + position
} ) , toastToRender [ position ] ) ;
} ) ;
} ;
_proto . render = function render ( ) {
return _react . default . createElement ( "div" , {
className : "Toastify"
} , this . renderToast ( ) ) ;
} ;
return ToastContainer ;
} ( _react . Component ) ;
ToastContainer . propTypes = {
/ * *
* Set toast position
* /
position : _propTypes . default . oneOf ( ( 0 , propValidator . objectValues ) ( constant . POSITION ) ) ,
/ * *
* Disable or set autoClose delay
* /
autoClose : propValidator . falseOrDelay ,
/ * *
* Disable or set a custom react element for the close button
* /
closeButton : propValidator . falseOrElement ,
/ * *
* Hide or not progress bar when autoClose is enabled
* /
hideProgressBar : _propTypes . default . bool ,
/ * *
* Pause toast duration on hover
* /
pauseOnHover : _propTypes . default . bool ,
/ * *
* Dismiss toast on click
* /
closeOnClick : _propTypes . default . bool ,
/ * *
* Newest on top
* /
newestOnTop : _propTypes . default . bool ,
/ * *
* An optional className
* /
className : _propTypes . default . oneOfType ( [ _propTypes . default . string , _propTypes . default . object ] ) ,
/ * *
* An optional style
* /
style : _propTypes . default . object ,
/ * *
* An optional className for the toast
* /
toastClassName : _propTypes . default . oneOfType ( [ _propTypes . default . string , _propTypes . default . object ] ) ,
/ * *
* An optional className for the toast body
* /
bodyClassName : _propTypes . default . oneOfType ( [ _propTypes . default . string , _propTypes . default . object ] ) ,
/ * *
* An optional className for the toast progress bar
* /
progressClassName : _propTypes . default . oneOfType ( [ _propTypes . default . string , _propTypes . default . object ] ) ,
/ * *
* An optional style for the toast progress bar
* /
progressStyle : _propTypes . default . object ,
/ * *
* Define enter and exit transition using react - transition - group
* /
transition : _propTypes . default . func ,
/ * *
* Support rtl display
* /
rtl : _propTypes . default . bool ,
/ * *
* Allow toast to be draggable
* /
draggable : _propTypes . default . bool ,
/ * *
* The percentage of the toast ' s width it takes for a drag to dismiss a toast
* /
draggablePercent : _propTypes . default . number ,
/ * *
* Pause the toast on focus loss
* /
pauseOnFocusLoss : _propTypes . default . bool
} ;
ToastContainer . defaultProps = {
position : constant . POSITION . TOP _RIGHT ,
transition : Transitions . Bounce ,
rtl : false ,
autoClose : 5000 ,
hideProgressBar : false ,
closeButton : _react . default . createElement ( _CloseButton . default , null ) ,
pauseOnHover : true ,
pauseOnFocusLoss : true ,
closeOnClick : true ,
newestOnTop : false ,
draggable : true ,
draggablePercent : 80 ,
className : null ,
style : null ,
toastClassName : null ,
bodyClassName : null ,
progressClassName : null ,
progressStyle : null
} ;
var _default = ToastContainer ;
exports . default = _default ;
} ) ;
unwrapExports ( ToastContainer _1 ) ;
var toast _1 = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
exports . default = void 0 ;
var _eventManager = _interopRequireDefault ( eventManager _1 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _extends ( ) { _extends = Object . assign || function ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] ; for ( var key in source ) { if ( Object . prototype . hasOwnProperty . call ( source , key ) ) { target [ key ] = source [ key ] ; } } } return target ; } ; return _extends . apply ( this , arguments ) ; }
var container = null ;
var queue = [ ] ;
var noop = function noop ( ) {
return false ;
} ;
/ * *
* Merge provided options with the defaults settings and generate the toastId
* /
function mergeOptions ( options , type ) {
return _extends ( { } , options , {
type : type ,
toastId : getToastId ( options )
} ) ;
}
/ * *
* Generate a random toastId
* /
function generateToastId ( ) {
return ( Math . random ( ) . toString ( 36 ) + Date . now ( ) . toString ( 36 ) ) . substr ( 2 , 10 ) ;
}
/ * *
* Generate the toastId either automatically or by provided toastId
* /
function getToastId ( options ) {
if ( options && ( typeof options . toastId === 'string' || typeof options . toastId === 'number' && ! isNaN ( options . toastId ) ) ) {
return options . toastId ;
}
return generateToastId ( ) ;
}
/ * *
* Dispatch toast . If the container is not mounted , the toast is enqueued
* /
function emitEvent ( content , options ) {
if ( container !== null ) {
_eventManager . default . emit ( constant . ACTION . SHOW , content , options ) ;
} else {
queue . push ( {
action : constant . ACTION . SHOW ,
content : content ,
options : options
} ) ;
}
return options . toastId ;
}
var toast = _extends ( function ( content , options ) {
return emitEvent ( content , mergeOptions ( options , options && options . type || constant . TYPE . DEFAULT ) ) ;
} , {
success : function success ( content , options ) {
return emitEvent ( content , mergeOptions ( options , constant . TYPE . SUCCESS ) ) ;
} ,
info : function info ( content , options ) {
return emitEvent ( content , mergeOptions ( options , constant . TYPE . INFO ) ) ;
} ,
warn : function warn ( content , options ) {
return emitEvent ( content , mergeOptions ( options , constant . TYPE . WARNING ) ) ;
} ,
warning : function warning ( content , options ) {
return emitEvent ( content , mergeOptions ( options , constant . TYPE . WARNING ) ) ;
} ,
error : function error ( content , options ) {
return emitEvent ( content , mergeOptions ( options , constant . TYPE . ERROR ) ) ;
} ,
dismiss : function dismiss ( id ) {
if ( id === void 0 ) {
id = null ;
}
return container && _eventManager . default . emit ( constant . ACTION . CLEAR , id ) ;
} ,
isActive : noop ,
update : function update ( toastId , options ) {
setTimeout ( function ( ) {
if ( container && typeof container . collection [ toastId ] !== 'undefined' ) {
var _container$collection = container . collection [ toastId ] ,
oldOptions = _container$collection . options ,
oldContent = _container$collection . content ;
var nextOptions = _extends ( { } , oldOptions , options , {
toastId : options . toastId || toastId
} ) ;
if ( ! options . toastId || options . toastId === toastId ) {
nextOptions . updateId = generateToastId ( ) ;
} else {
nextOptions . staleToastId = toastId ;
}
var content = typeof nextOptions . render !== 'undefined' ? nextOptions . render : oldContent ;
delete nextOptions . render ;
emitEvent ( content , nextOptions ) ;
}
} , 0 ) ;
} ,
done : function done ( id , progress ) {
if ( progress === void 0 ) {
progress = 1 ;
}
toast . update ( id , {
progress : progress ,
isProgressDone : true
} ) ;
} ,
onChange : function onChange ( callback ) {
if ( typeof callback === 'function' ) {
_eventManager . default . on ( constant . ACTION . ON _CHANGE , callback ) ;
}
} ,
POSITION : constant . POSITION ,
TYPE : constant . TYPE
} ) ;
/ * *
* Wait until the ToastContainer is mounted to dispatch the toast
* and attach isActive method
* /
_eventManager . default . on ( constant . ACTION . DID _MOUNT , function ( containerInstance ) {
container = containerInstance ;
toast . isActive = function ( id ) {
return container . isToastActive ( id ) ;
} ;
queue . forEach ( function ( item ) {
_eventManager . default . emit ( item . action , item . content , item . options ) ;
} ) ;
queue = [ ] ;
} ) . on ( constant . ACTION . WILL _UNMOUNT , function ( ) {
container = null ;
toast . isActive = noop ;
} ) ;
var _default = toast ;
exports . default = _default ;
} ) ;
unwrapExports ( toast _1 ) ;
var lib = createCommonjsModule ( function ( module , exports ) {
exports . _ _esModule = true ;
var _ToastContainer = _interopRequireDefault ( ToastContainer _1 ) ;
exports . ToastContainer = _ToastContainer . default ;
exports . Bounce = Transitions . Bounce ;
exports . Slide = Transitions . Slide ;
exports . Zoom = Transitions . Zoom ;
exports . Flip = Transitions . Flip ;
exports . ToastPosition = constant . POSITION ;
exports . ToastType = constant . TYPE ;
var _toast = _interopRequireDefault ( toast _1 ) ;
exports . toast = _toast . default ;
var _cssTransition = _interopRequireDefault ( cssTransition ) ;
exports . cssTransition = _cssTransition . default ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
} ) ;
unwrapExports ( lib ) ;
var lib _1 = lib . ToastContainer ;
var lib _2 = lib . Bounce ;
var lib _3 = lib . Slide ;
var lib _4 = lib . Zoom ;
var lib _5 = lib . Flip ;
var lib _6 = lib . ToastPosition ;
var lib _7 = lib . ToastType ;
var lib _8 = lib . toast ;
var lib _9 = lib . cssTransition ;
2019-03-01 15:05:03 +01:00
var ContextAwareForm = function ( _Component ) {
inherits ( ContextAwareForm , _Component ) ;
2019-03-01 12:22:51 +01:00
2019-03-01 15:05:03 +01:00
function ContextAwareForm ( props ) {
classCallCheck ( this , ContextAwareForm ) ;
2019-03-01 12:22:51 +01:00
2019-03-01 15:05:03 +01:00
var _this = possibleConstructorReturn ( this , ( ContextAwareForm . _ _proto _ _ || Object . getPrototypeOf ( ContextAwareForm ) ) . call ( this , props ) ) ;
2019-03-01 12:22:51 +01:00
_this . _onSubmit = function ( e ) {
e . preventDefault ( ) ;
_this . props . onSubmit ( ) ;
_this . displayError = true ;
return false ;
} ;
_this . state = {
data : props . data
} ;
_this . displayError = true ;
_this . handleError ( props ) ;
return _this ;
}
2019-03-01 15:05:03 +01:00
createClass ( ContextAwareForm , [ {
2019-03-01 12:22:51 +01:00
key : 'componentWillReceiveProps' ,
value : function componentWillReceiveProps ( props ) {
this . handleError ( props ) ;
this . setState ( {
data : props . data
} ) ;
}
} , {
key : 'handleError' ,
value : function handleError ( props ) {
if ( props . data && props . data . error && props . toast && this . displayError == true ) {
2019-03-01 15:05:03 +01:00
lib _8 . error ( this . props . translator . renderText ( props . data . error ) ) ;
2019-03-01 12:22:51 +01:00
this . displayError = false ;
}
}
} , {
key : 'render' ,
value : function render ( ) {
return React . createElement (
FormContext . Provider ,
{ value : this . state . data } ,
React . createElement (
'form' ,
{ onSubmit : this . _onSubmit } ,
this . renderError ( ) ,
this . props . children
2019-03-01 13:07:16 +01:00
) ,
React . createElement ( lib _1 , null )
2019-03-01 12:22:51 +01:00
) ;
}
} , {
key : 'renderError' ,
value : function renderError ( ) {
if ( this . state . data && this . state . data . error && ! this . props . toast ) {
return React . createElement (
2019-03-01 15:05:03 +01:00
'p' ,
{ className : 'alert alert-danger' } ,
this . props . translator . renderText ( this . state . data . error )
2019-03-01 12:22:51 +01:00
) ;
}
return null ;
}
} ] ) ;
2019-03-01 15:05:03 +01:00
return ContextAwareForm ;
} ( Component ) ;
var Form = function ( _Component2 ) {
inherits ( Form , _Component2 ) ;
function Form ( ) {
classCallCheck ( this , Form ) ;
return possibleConstructorReturn ( this , ( Form . _ _proto _ _ || Object . getPrototypeOf ( Form ) ) . apply ( this , arguments ) ) ;
}
createClass ( Form , [ {
key : 'render' ,
value : function render ( ) {
var _this3 = this ;
return React . createElement (
FormTranslationConsumer ,
null ,
function ( translator ) {
return React . createElement ( ContextAwareForm , _extends ( { translator : translator } , _this3 . props ) ) ;
}
) ;
}
} ] ) ;
2019-03-01 12:22:51 +01:00
return Form ;
} ( Component ) ;
Form . defaultProps = {
data : null ,
toast : false ,
onSubmit : function onSubmit ( ) {
console . log ( '[Form] submitted' ) ;
}
} ;
var Input = function ( _Component ) {
inherits ( Input , _Component ) ;
function Input ( ) {
classCallCheck ( this , Input ) ;
return possibleConstructorReturn ( this , ( Input . _ _proto _ _ || Object . getPrototypeOf ( Input ) ) . apply ( this , arguments ) ) ;
}
createClass ( Input , [ {
key : "render" ,
value : function render ( ) {
var _this2 = this ;
return React . createElement (
FormConsumer ,
null ,
function ( data ) {
return _this2 . renderInput ( data ) ;
}
) ;
}
} , {
key : "renderInput" ,
value : function renderInput ( data ) {
var _this3 = this ;
var props = _extends ( { } , this . props ) ;
if ( props . children ) delete props . children ;
if ( props . onChangeValue ) delete props . onChangeValue ;
return React . createElement (
"div" ,
{ className : "form-group" } ,
this . renderLabel ( data ) ,
React . createElement ( "input" , _extends ( { onChange : function onChange ( e ) {
return _this3 . props . onChangeValue ( e . target . value ) ;
} } , props ) ) ,
React . createElement ( FormItemError , { name : this . props . name , data : data } )
) ;
}
} , {
key : "renderLabel" ,
value : function renderLabel ( data ) {
if ( this . props . label ) {
return React . createElement (
"label" ,
{ htmlFor : this . props . id } ,
this . props . label
) ;
}
}
} ] ) ;
return Input ;
} ( Component ) ;
Input . defaultProps = {
name : 'input' ,
id : 'input' ,
className : 'form-control' ,
type : 'text' ,
onChangeValue : function onChangeValue ( text ) { }
} ;
var OptionGroupContext = React . createContext ( { } ) ;
var OptionGroupConsumer = function ( _Component ) {
inherits ( OptionGroupConsumer , _Component ) ;
function OptionGroupConsumer ( ) {
classCallCheck ( this , OptionGroupConsumer ) ;
return possibleConstructorReturn ( this , ( OptionGroupConsumer . _ _proto _ _ || Object . getPrototypeOf ( OptionGroupConsumer ) ) . apply ( this , arguments ) ) ;
}
createClass ( OptionGroupConsumer , [ {
key : 'render' ,
value : function render ( ) {
var _this2 = this ;
return React . createElement (
OptionGroupContext . Consumer ,
null ,
function ( props ) {
return _this2 . props . children ( props ) ;
}
) ;
}
} ] ) ;
return OptionGroupConsumer ;
} ( Component ) ;
var OptionGroup = function ( _Component2 ) {
inherits ( OptionGroup , _Component2 ) ;
function OptionGroup ( ) {
var _ref ;
var _temp , _this3 , _ret ;
classCallCheck ( this , OptionGroup ) ;
for ( var _len = arguments . length , args = Array ( _len ) , _key = 0 ; _key < _len ; _key ++ ) {
args [ _key ] = arguments [ _key ] ;
}
return _ret = ( _temp = ( _this3 = possibleConstructorReturn ( this , ( _ref = OptionGroup . _ _proto _ _ || Object . getPrototypeOf ( OptionGroup ) ) . call . apply ( _ref , [ this ] . concat ( args ) ) ) , _this3 ) , _this3 . _onChange = function ( e ) {
if ( _this3 . props . multiple ) {
var value = [ ] ;
var options = e . target . options ;
for ( var i = 0 , l = options . length ; i < l ; i ++ ) {
if ( options [ i ] . selected ) {
value . push ( options [ i ] . value ) ;
}
}
_this3 . props . onChangeValue ( value ) ;
} else {
_this3 . props . onChangeValue ( e . target . value ) ;
}
} , _temp ) , possibleConstructorReturn ( _this3 , _ret ) ;
}
createClass ( OptionGroup , [ {
key : 'render' ,
value : function render ( ) {
var _this4 = this ;
return React . createElement (
FormConsumer ,
null ,
function ( data ) {
return _this4 . renderOptionGroup ( data ) ;
}
) ;
}
} , {
key : 'renderOptionGroup' ,
value : function renderOptionGroup ( data ) {
var _this5 = this ;
var props = _extends ( { } , this . props ) ;
return React . createElement (
'div' ,
{ className : 'form-group' } ,
this . renderLabel ( ) ,
React . createElement (
'select' ,
_extends ( { } , this . props . data , props , { onChange : function onChange ( e ) {
return _this5 . _onChange ( e ) ;
} } ) ,
this . renderChildren ( )
) ,
React . createElement ( FormItemError , { name : this . props . name , data : data } )
) ;
}
} , {
key : 'renderLabel' ,
value : function renderLabel ( ) {
if ( ! this . props . label ) return null ;
return React . createElement (
'label' ,
{ htmlFor : this . props . id } ,
this . props . label
) ;
}
} , {
key : 'renderChildren' ,
value : function renderChildren ( ) {
return React . createElement (
OptionGroupContext . Provider ,
{ value : { } } ,
this . props . children
) ;
}
} ] ) ;
return OptionGroup ;
} ( Component ) ;
OptionGroup . defaultProps = {
name : 'select' ,
className : 'form-control' ,
onChangeValue : function onChangeValue ( value ) { }
} ;
var Option = function ( _Component ) {
inherits ( Option , _Component ) ;
function Option ( ) {
classCallCheck ( this , Option ) ;
return possibleConstructorReturn ( this , ( Option . _ _proto _ _ || Object . getPrototypeOf ( Option ) ) . apply ( this , arguments ) ) ;
}
createClass ( Option , [ {
key : 'render' ,
value : function render ( ) {
var _this2 = this ;
return React . createElement (
OptionGroupConsumer ,
null ,
function ( data ) {
return _this2 . renderOption ( data ) ;
}
) ;
}
} , {
key : 'renderOption' ,
value : function renderOption ( data ) {
var props = _extends ( { } , this . props ) ;
return React . createElement (
'option' ,
props ,
this . props . children
) ;
}
} ] ) ;
return Option ;
} ( Component ) ;
Option . defaultProps = {
value : 'option'
} ;
var RadioGroupContext = React . createContext ( { } ) ;
var RadioGroupConsumer = function ( _Component ) {
inherits ( RadioGroupConsumer , _Component ) ;
function RadioGroupConsumer ( ) {
classCallCheck ( this , RadioGroupConsumer ) ;
return possibleConstructorReturn ( this , ( RadioGroupConsumer . _ _proto _ _ || Object . getPrototypeOf ( RadioGroupConsumer ) ) . apply ( this , arguments ) ) ;
}
createClass ( RadioGroupConsumer , [ {
key : 'render' ,
value : function render ( ) {
var _this2 = this ;
return React . createElement (
RadioGroupContext . Consumer ,
null ,
function ( props ) {
return _this2 . props . children ( props ) ;
}
) ;
}
} ] ) ;
return RadioGroupConsumer ;
} ( Component ) ;
var RadioGroup = function ( _Component2 ) {
inherits ( RadioGroup , _Component2 ) ;
function RadioGroup ( ) {
classCallCheck ( this , RadioGroup ) ;
return possibleConstructorReturn ( this , ( RadioGroup . _ _proto _ _ || Object . getPrototypeOf ( RadioGroup ) ) . apply ( this , arguments ) ) ;
}
createClass ( RadioGroup , [ {
key : 'render' ,
value : function render ( ) {
var _this4 = this ;
return React . createElement (
FormConsumer ,
null ,
function ( data ) {
return _this4 . renderRadioGroup ( data ) ;
}
) ;
}
} , {
key : 'renderRadioGroup' ,
value : function renderRadioGroup ( data ) {
return React . createElement (
'div' ,
{ className : 'form-options mb-3' } ,
this . renderLabel ( ) ,
this . renderChildren ( ) ,
React . createElement ( FormItemError , { name : this . props . name , data : data } )
) ;
}
} , {
key : 'renderLabel' ,
value : function renderLabel ( ) {
if ( ! this . props . label ) return null ;
return React . createElement (
'p' ,
{ className : 'mb-0 mt-2' } ,
this . props . label
) ;
}
} , {
key : 'renderChildren' ,
value : function renderChildren ( ) {
var _this5 = this ;
return React . createElement (
RadioGroupContext . Provider ,
{ value : {
onChangeValue : function onChangeValue ( value ) {
return _this5 . props . onChangeValue ( value ) ;
} ,
value : this . props . value
} } ,
this . props . children
) ;
}
} ] ) ;
return RadioGroup ;
} ( Component ) ;
RadioGroup . defaultProps = {
name : 'radio' ,
onChangeValue : function onChangeValue ( value ) { }
} ;
var Radio = function ( _Component ) {
inherits ( Radio , _Component ) ;
function Radio ( ) {
classCallCheck ( this , Radio ) ;
return possibleConstructorReturn ( this , ( Radio . _ _proto _ _ || Object . getPrototypeOf ( Radio ) ) . apply ( this , arguments ) ) ;
}
createClass ( Radio , [ {
key : "render" ,
value : function render ( ) {
var _this2 = this ;
return React . createElement (
RadioGroupConsumer ,
null ,
function ( data ) {
return _this2 . renderRadio ( data ) ;
}
) ;
}
} , {
key : "renderRadio" ,
value : function renderRadio ( data ) {
var _this3 = this ;
var props = _extends ( { } , this . props ) ;
if ( props . children ) delete props . children ;
return React . createElement (
"div" ,
{ className : "form-check" } ,
React . createElement ( "input" , _extends ( {
type : "radio" ,
checked : data . value === this . props . value ,
onChange : function onChange ( e ) {
if ( e . target . checked ) data . onChangeValue ( _this3 . props . value ) ;
}
} , props ) ) ,
this . renderLabel ( data )
) ;
}
} , {
key : "renderLabel" ,
value : function renderLabel ( data ) {
if ( this . props . children . length ) {
return React . createElement (
"label" ,
{ className : "form-check-label" , htmlFor : this . props . id } ,
this . props . children
) ;
}
}
} ] ) ;
return Radio ;
} ( Component ) ;
Radio . defaultProps = {
value : 'option' ,
className : 'form-check-input'
} ;
var Submit = function ( _Component ) {
inherits ( Submit , _Component ) ;
function Submit ( ) {
classCallCheck ( this , Submit ) ;
return possibleConstructorReturn ( this , ( Submit . _ _proto _ _ || Object . getPrototypeOf ( Submit ) ) . apply ( this , arguments ) ) ;
}
createClass ( Submit , [ {
key : 'render' ,
value : function render ( ) {
return React . createElement (
'button' ,
_extends ( { type : 'submit' } , this . props ) ,
this . props . children
) ;
}
} ] ) ;
return Submit ;
} ( Component ) ;
Submit . defaultProps = {
className : 'btn btn-primary'
} ;
var TextArea = function ( _Component ) {
inherits ( TextArea , _Component ) ;
function TextArea ( ) {
classCallCheck ( this , TextArea ) ;
return possibleConstructorReturn ( this , ( TextArea . _ _proto _ _ || Object . getPrototypeOf ( TextArea ) ) . apply ( this , arguments ) ) ;
}
createClass ( TextArea , [ {
key : "render" ,
value : function render ( ) {
var _this2 = this ;
return React . createElement (
FormConsumer ,
null ,
function ( data ) {
return _this2 . renderTextArea ( data ) ;
}
) ;
}
} , {
key : "renderTextArea" ,
value : function renderTextArea ( data ) {
var _this3 = this ;
var props = _extends ( { } , this . props ) ;
if ( props . onChangeValue ) delete props . onChangeValue ;
return React . createElement (
"div" ,
{ className : "form-group" } ,
this . renderLabel ( data ) ,
React . createElement ( "textarea" , _extends ( { onChange : function onChange ( e ) {
return _this3 . props . onChangeValue ( e . target . value ) ;
} } , props ) ) ,
React . createElement ( FormItemError , { name : this . props . name , data : data } )
) ;
}
} , {
key : "renderLabel" ,
value : function renderLabel ( data ) {
if ( this . props . label ) {
return React . createElement (
"label" ,
{ htmlFor : this . props . id } ,
this . props . label
) ;
}
}
} ] ) ;
return TextArea ;
} ( Component ) ;
TextArea . defaultProps = {
name : 'textarea' ,
id : 'textarea' ,
className : 'form-control' ,
onChangeValue : function onChangeValue ( text ) { }
} ;
2019-03-04 17:48:43 +01:00
var moment = createCommonjsModule ( function ( module , exports ) {
( function ( global , factory ) {
module . exports = factory ( ) ;
} ( commonjsGlobal , ( function ( ) {
var hookCallback ;
2019-03-04 17:42:59 +01:00
2019-03-04 17:48:43 +01:00
function hooks ( ) {
return hookCallback . apply ( null , arguments ) ;
2019-03-04 17:42:59 +01:00
}
2019-03-04 17:48:43 +01:00
// This is done to register the method called with moment()
// without creating circular dependencies.
function setHookCallback ( callback ) {
hookCallback = callback ;
}
2019-03-04 17:42:59 +01:00
2019-03-04 17:48:43 +01:00
function isArray ( input ) {
return input instanceof Array || Object . prototype . toString . call ( input ) === '[object Array]' ;
}
function isObject ( input ) {
// IE8 will treat undefined and null as object if it wasn't for
// input != null
return input != null && Object . prototype . toString . call ( input ) === '[object Object]' ;
}
function isObjectEmpty ( obj ) {
if ( Object . getOwnPropertyNames ) {
return ( Object . getOwnPropertyNames ( obj ) . length === 0 ) ;
} else {
var k ;
for ( k in obj ) {
if ( obj . hasOwnProperty ( k ) ) {
return false ;
2019-03-04 17:42:59 +01:00
}
2019-03-04 17:48:43 +01:00
}
return true ;
2019-03-04 17:42:59 +01:00
}
2019-03-04 17:48:43 +01:00
}
2019-03-04 17:42:59 +01:00
2019-03-04 17:48:43 +01:00
function isUndefined ( input ) {
return input === void 0 ;
}
function isNumber ( input ) {
return typeof input === 'number' || Object . prototype . toString . call ( input ) === '[object Number]' ;
}
function isDate ( input ) {
return input instanceof Date || Object . prototype . toString . call ( input ) === '[object Date]' ;
}
function map ( arr , fn ) {
var res = [ ] , i ;
for ( i = 0 ; i < arr . length ; ++ i ) {
res . push ( fn ( arr [ i ] , i ) ) ;
2019-03-04 17:42:59 +01:00
}
2019-03-04 17:48:43 +01:00
return res ;
}
function hasOwnProp ( a , b ) {
return Object . prototype . hasOwnProperty . call ( a , b ) ;
}
function extend ( a , b ) {
for ( var i in b ) {
if ( hasOwnProp ( b , i ) ) {
a [ i ] = b [ i ] ;
}
}
if ( hasOwnProp ( b , 'toString' ) ) {
a . toString = b . toString ;
}
if ( hasOwnProp ( b , 'valueOf' ) ) {
a . valueOf = b . valueOf ;
}
return a ;
}
function createUTC ( input , format , locale , strict ) {
return createLocalOrUTC ( input , format , locale , strict , true ) . utc ( ) ;
}
function defaultParsingFlags ( ) {
// We need to deep clone this object.
return {
empty : false ,
unusedTokens : [ ] ,
unusedInput : [ ] ,
overflow : - 2 ,
charsLeftOver : 0 ,
nullInput : false ,
invalidMonth : null ,
invalidFormat : false ,
userInvalidated : false ,
iso : false ,
parsedDateParts : [ ] ,
meridiem : null ,
rfc2822 : false ,
weekdayMismatch : false
} ;
}
function getParsingFlags ( m ) {
if ( m . _pf == null ) {
m . _pf = defaultParsingFlags ( ) ;
}
return m . _pf ;
}
var some ;
if ( Array . prototype . some ) {
some = Array . prototype . some ;
} else {
some = function ( fun ) {
var t = Object ( this ) ;
var len = t . length >>> 0 ;
for ( var i = 0 ; i < len ; i ++ ) {
if ( i in t && fun . call ( this , t [ i ] , i , t ) ) {
return true ;
}
}
return false ;
} ;
}
function isValid ( m ) {
if ( m . _isValid == null ) {
var flags = getParsingFlags ( m ) ;
var parsedParts = some . call ( flags . parsedDateParts , function ( i ) {
return i != null ;
} ) ;
var isNowValid = ! isNaN ( m . _d . getTime ( ) ) &&
flags . overflow < 0 &&
! flags . empty &&
! flags . invalidMonth &&
! flags . invalidWeekday &&
! flags . weekdayMismatch &&
! flags . nullInput &&
! flags . invalidFormat &&
! flags . userInvalidated &&
( ! flags . meridiem || ( flags . meridiem && parsedParts ) ) ;
if ( m . _strict ) {
isNowValid = isNowValid &&
flags . charsLeftOver === 0 &&
flags . unusedTokens . length === 0 &&
flags . bigHour === undefined ;
}
if ( Object . isFrozen == null || ! Object . isFrozen ( m ) ) {
m . _isValid = isNowValid ;
}
else {
return isNowValid ;
}
}
return m . _isValid ;
}
function createInvalid ( flags ) {
var m = createUTC ( NaN ) ;
if ( flags != null ) {
extend ( getParsingFlags ( m ) , flags ) ;
}
else {
getParsingFlags ( m ) . userInvalidated = true ;
}
return m ;
}
// Plugins that add properties should also add the key here (null value),
// so we can properly clone ourselves.
var momentProperties = hooks . momentProperties = [ ] ;
function copyConfig ( to , from ) {
var i , prop , val ;
if ( ! isUndefined ( from . _isAMomentObject ) ) {
to . _isAMomentObject = from . _isAMomentObject ;
}
if ( ! isUndefined ( from . _i ) ) {
to . _i = from . _i ;
}
if ( ! isUndefined ( from . _f ) ) {
to . _f = from . _f ;
}
if ( ! isUndefined ( from . _l ) ) {
to . _l = from . _l ;
}
if ( ! isUndefined ( from . _strict ) ) {
to . _strict = from . _strict ;
}
if ( ! isUndefined ( from . _tzm ) ) {
to . _tzm = from . _tzm ;
}
if ( ! isUndefined ( from . _isUTC ) ) {
to . _isUTC = from . _isUTC ;
}
if ( ! isUndefined ( from . _offset ) ) {
to . _offset = from . _offset ;
}
if ( ! isUndefined ( from . _pf ) ) {
to . _pf = getParsingFlags ( from ) ;
}
if ( ! isUndefined ( from . _locale ) ) {
to . _locale = from . _locale ;
}
if ( momentProperties . length > 0 ) {
for ( i = 0 ; i < momentProperties . length ; i ++ ) {
prop = momentProperties [ i ] ;
val = from [ prop ] ;
if ( ! isUndefined ( val ) ) {
to [ prop ] = val ;
}
}
}
return to ;
}
var updateInProgress = false ;
// Moment prototype object
function Moment ( config ) {
copyConfig ( this , config ) ;
this . _d = new Date ( config . _d != null ? config . _d . getTime ( ) : NaN ) ;
if ( ! this . isValid ( ) ) {
this . _d = new Date ( NaN ) ;
}
// Prevent infinite loop in case updateOffset creates new moment
// objects.
if ( updateInProgress === false ) {
updateInProgress = true ;
hooks . updateOffset ( this ) ;
updateInProgress = false ;
}
}
function isMoment ( obj ) {
return obj instanceof Moment || ( obj != null && obj . _isAMomentObject != null ) ;
}
function absFloor ( number ) {
if ( number < 0 ) {
// -0 -> 0
return Math . ceil ( number ) || 0 ;
} else {
return Math . floor ( number ) ;
}
}
function toInt ( argumentForCoercion ) {
var coercedNumber = + argumentForCoercion ,
value = 0 ;
if ( coercedNumber !== 0 && isFinite ( coercedNumber ) ) {
value = absFloor ( coercedNumber ) ;
}
return value ;
}
// compare two arrays, return the number of differences
function compareArrays ( array1 , array2 , dontConvert ) {
var len = Math . min ( array1 . length , array2 . length ) ,
lengthDiff = Math . abs ( array1 . length - array2 . length ) ,
diffs = 0 ,
i ;
for ( i = 0 ; i < len ; i ++ ) {
if ( ( dontConvert && array1 [ i ] !== array2 [ i ] ) ||
( ! dontConvert && toInt ( array1 [ i ] ) !== toInt ( array2 [ i ] ) ) ) {
diffs ++ ;
}
}
return diffs + lengthDiff ;
}
function warn ( msg ) {
if ( hooks . suppressDeprecationWarnings === false &&
( typeof console !== 'undefined' ) && console . warn ) {
console . warn ( 'Deprecation warning: ' + msg ) ;
}
}
function deprecate ( msg , fn ) {
var firstTime = true ;
return extend ( function ( ) {
if ( hooks . deprecationHandler != null ) {
hooks . deprecationHandler ( null , msg ) ;
}
if ( firstTime ) {
var args = [ ] ;
var arg ;
for ( var i = 0 ; i < arguments . length ; i ++ ) {
arg = '' ;
if ( typeof arguments [ i ] === 'object' ) {
arg += '\n[' + i + '] ' ;
for ( var key in arguments [ 0 ] ) {
arg += key + ': ' + arguments [ 0 ] [ key ] + ', ' ;
}
arg = arg . slice ( 0 , - 2 ) ; // Remove trailing comma and space
} else {
arg = arguments [ i ] ;
}
args . push ( arg ) ;
}
warn ( msg + '\nArguments: ' + Array . prototype . slice . call ( args ) . join ( '' ) + '\n' + ( new Error ( ) ) . stack ) ;
firstTime = false ;
}
return fn . apply ( this , arguments ) ;
} , fn ) ;
}
var deprecations = { } ;
function deprecateSimple ( name , msg ) {
if ( hooks . deprecationHandler != null ) {
hooks . deprecationHandler ( name , msg ) ;
}
if ( ! deprecations [ name ] ) {
warn ( msg ) ;
deprecations [ name ] = true ;
}
}
hooks . suppressDeprecationWarnings = false ;
hooks . deprecationHandler = null ;
function isFunction ( input ) {
return input instanceof Function || Object . prototype . toString . call ( input ) === '[object Function]' ;
}
function set ( config ) {
var prop , i ;
for ( i in config ) {
prop = config [ i ] ;
if ( isFunction ( prop ) ) {
this [ i ] = prop ;
} else {
this [ '_' + i ] = prop ;
}
}
this . _config = config ;
// Lenient ordinal parsing accepts just a number in addition to
// number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
// TODO: Remove "ordinalParse" fallback in next major release.
this . _dayOfMonthOrdinalParseLenient = new RegExp (
( this . _dayOfMonthOrdinalParse . source || this . _ordinalParse . source ) +
'|' + ( /\d{1,2}/ ) . source ) ;
}
function mergeConfigs ( parentConfig , childConfig ) {
var res = extend ( { } , parentConfig ) , prop ;
for ( prop in childConfig ) {
if ( hasOwnProp ( childConfig , prop ) ) {
if ( isObject ( parentConfig [ prop ] ) && isObject ( childConfig [ prop ] ) ) {
res [ prop ] = { } ;
extend ( res [ prop ] , parentConfig [ prop ] ) ;
extend ( res [ prop ] , childConfig [ prop ] ) ;
} else if ( childConfig [ prop ] != null ) {
res [ prop ] = childConfig [ prop ] ;
} else {
delete res [ prop ] ;
}
}
}
for ( prop in parentConfig ) {
if ( hasOwnProp ( parentConfig , prop ) &&
! hasOwnProp ( childConfig , prop ) &&
isObject ( parentConfig [ prop ] ) ) {
// make sure changes to properties don't modify parent config
res [ prop ] = extend ( { } , res [ prop ] ) ;
}
}
return res ;
}
function Locale ( config ) {
if ( config != null ) {
this . set ( config ) ;
}
}
var keys ;
if ( Object . keys ) {
keys = Object . keys ;
} else {
keys = function ( obj ) {
var i , res = [ ] ;
for ( i in obj ) {
if ( hasOwnProp ( obj , i ) ) {
res . push ( i ) ;
}
}
return res ;
} ;
}
var defaultCalendar = {
sameDay : '[Today at] LT' ,
nextDay : '[Tomorrow at] LT' ,
nextWeek : 'dddd [at] LT' ,
lastDay : '[Yesterday at] LT' ,
lastWeek : '[Last] dddd [at] LT' ,
sameElse : 'L'
} ;
function calendar ( key , mom , now ) {
var output = this . _calendar [ key ] || this . _calendar [ 'sameElse' ] ;
return isFunction ( output ) ? output . call ( mom , now ) : output ;
}
var defaultLongDateFormat = {
LTS : 'h:mm:ss A' ,
LT : 'h:mm A' ,
L : 'MM/DD/YYYY' ,
LL : 'MMMM D, YYYY' ,
LLL : 'MMMM D, YYYY h:mm A' ,
LLLL : 'dddd, MMMM D, YYYY h:mm A'
} ;
function longDateFormat ( key ) {
var format = this . _longDateFormat [ key ] ,
formatUpper = this . _longDateFormat [ key . toUpperCase ( ) ] ;
if ( format || ! formatUpper ) {
return format ;
}
this . _longDateFormat [ key ] = formatUpper . replace ( /MMMM|MM|DD|dddd/g , function ( val ) {
return val . slice ( 1 ) ;
} ) ;
return this . _longDateFormat [ key ] ;
}
var defaultInvalidDate = 'Invalid date' ;
function invalidDate ( ) {
return this . _invalidDate ;
}
var defaultOrdinal = '%d' ;
var defaultDayOfMonthOrdinalParse = /\d{1,2}/ ;
function ordinal ( number ) {
return this . _ordinal . replace ( '%d' , number ) ;
}
var defaultRelativeTime = {
future : 'in %s' ,
past : '%s ago' ,
s : 'a few seconds' ,
ss : '%d seconds' ,
m : 'a minute' ,
mm : '%d minutes' ,
h : 'an hour' ,
hh : '%d hours' ,
d : 'a day' ,
dd : '%d days' ,
M : 'a month' ,
MM : '%d months' ,
y : 'a year' ,
yy : '%d years'
} ;
function relativeTime ( number , withoutSuffix , string , isFuture ) {
var output = this . _relativeTime [ string ] ;
return ( isFunction ( output ) ) ?
output ( number , withoutSuffix , string , isFuture ) :
output . replace ( /%d/i , number ) ;
}
function pastFuture ( diff , output ) {
var format = this . _relativeTime [ diff > 0 ? 'future' : 'past' ] ;
return isFunction ( format ) ? format ( output ) : format . replace ( /%s/i , output ) ;
}
var aliases = { } ;
function addUnitAlias ( unit , shorthand ) {
var lowerCase = unit . toLowerCase ( ) ;
aliases [ lowerCase ] = aliases [ lowerCase + 's' ] = aliases [ shorthand ] = unit ;
}
function normalizeUnits ( units ) {
return typeof units === 'string' ? aliases [ units ] || aliases [ units . toLowerCase ( ) ] : undefined ;
}
function normalizeObjectUnits ( inputObject ) {
var normalizedInput = { } ,
normalizedProp ,
prop ;
for ( prop in inputObject ) {
if ( hasOwnProp ( inputObject , prop ) ) {
normalizedProp = normalizeUnits ( prop ) ;
if ( normalizedProp ) {
normalizedInput [ normalizedProp ] = inputObject [ prop ] ;
}
}
}
return normalizedInput ;
}
var priorities = { } ;
function addUnitPriority ( unit , priority ) {
priorities [ unit ] = priority ;
}
function getPrioritizedUnits ( unitsObj ) {
var units = [ ] ;
for ( var u in unitsObj ) {
units . push ( { unit : u , priority : priorities [ u ] } ) ;
}
units . sort ( function ( a , b ) {
return a . priority - b . priority ;
} ) ;
return units ;
}
function zeroFill ( number , targetLength , forceSign ) {
var absNumber = '' + Math . abs ( number ) ,
zerosToFill = targetLength - absNumber . length ,
sign = number >= 0 ;
return ( sign ? ( forceSign ? '+' : '' ) : '-' ) +
Math . pow ( 10 , Math . max ( 0 , zerosToFill ) ) . toString ( ) . substr ( 1 ) + absNumber ;
}
var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g ;
var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g ;
var formatFunctions = { } ;
var formatTokenFunctions = { } ;
// token: 'M'
// padded: ['MM', 2]
// ordinal: 'Mo'
// callback: function () { this.month() + 1 }
function addFormatToken ( token , padded , ordinal , callback ) {
var func = callback ;
if ( typeof callback === 'string' ) {
func = function ( ) {
return this [ callback ] ( ) ;
} ;
}
if ( token ) {
formatTokenFunctions [ token ] = func ;
}
if ( padded ) {
formatTokenFunctions [ padded [ 0 ] ] = function ( ) {
return zeroFill ( func . apply ( this , arguments ) , padded [ 1 ] , padded [ 2 ] ) ;
} ;
}
if ( ordinal ) {
formatTokenFunctions [ ordinal ] = function ( ) {
return this . localeData ( ) . ordinal ( func . apply ( this , arguments ) , token ) ;
} ;
}
}
function removeFormattingTokens ( input ) {
if ( input . match ( /\[[\s\S]/ ) ) {
return input . replace ( /^\[|\]$/g , '' ) ;
}
return input . replace ( /\\/g , '' ) ;
}
function makeFormatFunction ( format ) {
var array = format . match ( formattingTokens ) , i , length ;
for ( i = 0 , length = array . length ; i < length ; i ++ ) {
if ( formatTokenFunctions [ array [ i ] ] ) {
array [ i ] = formatTokenFunctions [ array [ i ] ] ;
} else {
array [ i ] = removeFormattingTokens ( array [ i ] ) ;
}
}
return function ( mom ) {
var output = '' , i ;
for ( i = 0 ; i < length ; i ++ ) {
output += isFunction ( array [ i ] ) ? array [ i ] . call ( mom , format ) : array [ i ] ;
}
return output ;
} ;
}
// format date using native date object
function formatMoment ( m , format ) {
if ( ! m . isValid ( ) ) {
return m . localeData ( ) . invalidDate ( ) ;
}
format = expandFormat ( format , m . localeData ( ) ) ;
formatFunctions [ format ] = formatFunctions [ format ] || makeFormatFunction ( format ) ;
return formatFunctions [ format ] ( m ) ;
}
function expandFormat ( format , locale ) {
var i = 5 ;
function replaceLongDateFormatTokens ( input ) {
return locale . longDateFormat ( input ) || input ;
}
localFormattingTokens . lastIndex = 0 ;
while ( i >= 0 && localFormattingTokens . test ( format ) ) {
format = format . replace ( localFormattingTokens , replaceLongDateFormatTokens ) ;
localFormattingTokens . lastIndex = 0 ;
i -= 1 ;
}
return format ;
}
var match1 = /\d/ ; // 0 - 9
var match2 = /\d\d/ ; // 00 - 99
var match3 = /\d{3}/ ; // 000 - 999
var match4 = /\d{4}/ ; // 0000 - 9999
var match6 = /[+-]?\d{6}/ ; // -999999 - 999999
var match1to2 = /\d\d?/ ; // 0 - 99
var match3to4 = /\d\d\d\d?/ ; // 999 - 9999
var match5to6 = /\d\d\d\d\d\d?/ ; // 99999 - 999999
var match1to3 = /\d{1,3}/ ; // 0 - 999
var match1to4 = /\d{1,4}/ ; // 0 - 9999
var match1to6 = /[+-]?\d{1,6}/ ; // -999999 - 999999
var matchUnsigned = /\d+/ ; // 0 - inf
var matchSigned = /[+-]?\d+/ ; // -inf - inf
var matchOffset = /Z|[+-]\d\d:?\d\d/gi ; // +00:00 -00:00 +0000 -0000 or Z
var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi ; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/ ; // 123456789 123456789.123
// any word (or two) characters or numbers including two/three word month in arabic.
// includes scottish gaelic two word and hyphenated months
var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i ;
var regexes = { } ;
function addRegexToken ( token , regex , strictRegex ) {
regexes [ token ] = isFunction ( regex ) ? regex : function ( isStrict , localeData ) {
return ( isStrict && strictRegex ) ? strictRegex : regex ;
} ;
}
function getParseRegexForToken ( token , config ) {
if ( ! hasOwnProp ( regexes , token ) ) {
return new RegExp ( unescapeFormat ( token ) ) ;
}
return regexes [ token ] ( config . _strict , config . _locale ) ;
}
// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
function unescapeFormat ( s ) {
return regexEscape ( s . replace ( '\\' , '' ) . replace ( /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g , function ( matched , p1 , p2 , p3 , p4 ) {
return p1 || p2 || p3 || p4 ;
} ) ) ;
}
function regexEscape ( s ) {
return s . replace ( /[-\/\\^$*+?.()|[\]{}]/g , '\\$&' ) ;
}
var tokens = { } ;
function addParseToken ( token , callback ) {
var i , func = callback ;
if ( typeof token === 'string' ) {
token = [ token ] ;
}
if ( isNumber ( callback ) ) {
func = function ( input , array ) {
array [ callback ] = toInt ( input ) ;
} ;
}
for ( i = 0 ; i < token . length ; i ++ ) {
tokens [ token [ i ] ] = func ;
}
}
function addWeekParseToken ( token , callback ) {
addParseToken ( token , function ( input , array , config , token ) {
config . _w = config . _w || { } ;
callback ( input , config . _w , config , token ) ;
} ) ;
}
function addTimeToArrayFromToken ( token , input , config ) {
if ( input != null && hasOwnProp ( tokens , token ) ) {
tokens [ token ] ( input , config . _a , config , token ) ;
}
}
var YEAR = 0 ;
var MONTH = 1 ;
var DATE = 2 ;
var HOUR = 3 ;
var MINUTE = 4 ;
var SECOND = 5 ;
var MILLISECOND = 6 ;
var WEEK = 7 ;
var WEEKDAY = 8 ;
// FORMATTING
addFormatToken ( 'Y' , 0 , 0 , function ( ) {
var y = this . year ( ) ;
return y <= 9999 ? '' + y : '+' + y ;
} ) ;
addFormatToken ( 0 , [ 'YY' , 2 ] , 0 , function ( ) {
return this . year ( ) % 100 ;
} ) ;
addFormatToken ( 0 , [ 'YYYY' , 4 ] , 0 , 'year' ) ;
addFormatToken ( 0 , [ 'YYYYY' , 5 ] , 0 , 'year' ) ;
addFormatToken ( 0 , [ 'YYYYYY' , 6 , true ] , 0 , 'year' ) ;
// ALIASES
addUnitAlias ( 'year' , 'y' ) ;
// PRIORITIES
addUnitPriority ( 'year' , 1 ) ;
// PARSING
addRegexToken ( 'Y' , matchSigned ) ;
addRegexToken ( 'YY' , match1to2 , match2 ) ;
addRegexToken ( 'YYYY' , match1to4 , match4 ) ;
addRegexToken ( 'YYYYY' , match1to6 , match6 ) ;
addRegexToken ( 'YYYYYY' , match1to6 , match6 ) ;
addParseToken ( [ 'YYYYY' , 'YYYYYY' ] , YEAR ) ;
addParseToken ( 'YYYY' , function ( input , array ) {
array [ YEAR ] = input . length === 2 ? hooks . parseTwoDigitYear ( input ) : toInt ( input ) ;
} ) ;
addParseToken ( 'YY' , function ( input , array ) {
array [ YEAR ] = hooks . parseTwoDigitYear ( input ) ;
} ) ;
addParseToken ( 'Y' , function ( input , array ) {
array [ YEAR ] = parseInt ( input , 10 ) ;
} ) ;
// HELPERS
function daysInYear ( year ) {
return isLeapYear ( year ) ? 366 : 365 ;
}
function isLeapYear ( year ) {
return ( year % 4 === 0 && year % 100 !== 0 ) || year % 400 === 0 ;
}
// HOOKS
hooks . parseTwoDigitYear = function ( input ) {
return toInt ( input ) + ( toInt ( input ) > 68 ? 1900 : 2000 ) ;
} ;
// MOMENTS
var getSetYear = makeGetSet ( 'FullYear' , true ) ;
function getIsLeapYear ( ) {
return isLeapYear ( this . year ( ) ) ;
}
function makeGetSet ( unit , keepTime ) {
return function ( value ) {
if ( value != null ) {
set$1 ( this , unit , value ) ;
hooks . updateOffset ( this , keepTime ) ;
return this ;
} else {
return get ( this , unit ) ;
}
} ;
}
function get ( mom , unit ) {
return mom . isValid ( ) ?
mom . _d [ 'get' + ( mom . _isUTC ? 'UTC' : '' ) + unit ] ( ) : NaN ;
}
function set$1 ( mom , unit , value ) {
if ( mom . isValid ( ) && ! isNaN ( value ) ) {
if ( unit === 'FullYear' && isLeapYear ( mom . year ( ) ) && mom . month ( ) === 1 && mom . date ( ) === 29 ) {
mom . _d [ 'set' + ( mom . _isUTC ? 'UTC' : '' ) + unit ] ( value , mom . month ( ) , daysInMonth ( value , mom . month ( ) ) ) ;
}
else {
mom . _d [ 'set' + ( mom . _isUTC ? 'UTC' : '' ) + unit ] ( value ) ;
}
}
}
// MOMENTS
function stringGet ( units ) {
units = normalizeUnits ( units ) ;
if ( isFunction ( this [ units ] ) ) {
return this [ units ] ( ) ;
}
return this ;
}
function stringSet ( units , value ) {
if ( typeof units === 'object' ) {
units = normalizeObjectUnits ( units ) ;
var prioritized = getPrioritizedUnits ( units ) ;
for ( var i = 0 ; i < prioritized . length ; i ++ ) {
this [ prioritized [ i ] . unit ] ( units [ prioritized [ i ] . unit ] ) ;
}
} else {
units = normalizeUnits ( units ) ;
if ( isFunction ( this [ units ] ) ) {
return this [ units ] ( value ) ;
}
}
return this ;
}
function mod ( n , x ) {
return ( ( n % x ) + x ) % x ;
}
var indexOf ;
if ( Array . prototype . indexOf ) {
indexOf = Array . prototype . indexOf ;
} else {
indexOf = function ( o ) {
// I know
var i ;
for ( i = 0 ; i < this . length ; ++ i ) {
if ( this [ i ] === o ) {
return i ;
}
}
return - 1 ;
} ;
}
function daysInMonth ( year , month ) {
if ( isNaN ( year ) || isNaN ( month ) ) {
return NaN ;
}
var modMonth = mod ( month , 12 ) ;
year += ( month - modMonth ) / 12 ;
return modMonth === 1 ? ( isLeapYear ( year ) ? 29 : 28 ) : ( 31 - modMonth % 7 % 2 ) ;
}
// FORMATTING
addFormatToken ( 'M' , [ 'MM' , 2 ] , 'Mo' , function ( ) {
return this . month ( ) + 1 ;
} ) ;
addFormatToken ( 'MMM' , 0 , 0 , function ( format ) {
return this . localeData ( ) . monthsShort ( this , format ) ;
} ) ;
addFormatToken ( 'MMMM' , 0 , 0 , function ( format ) {
return this . localeData ( ) . months ( this , format ) ;
} ) ;
// ALIASES
addUnitAlias ( 'month' , 'M' ) ;
// PRIORITY
addUnitPriority ( 'month' , 8 ) ;
// PARSING
addRegexToken ( 'M' , match1to2 ) ;
addRegexToken ( 'MM' , match1to2 , match2 ) ;
addRegexToken ( 'MMM' , function ( isStrict , locale ) {
return locale . monthsShortRegex ( isStrict ) ;
} ) ;
addRegexToken ( 'MMMM' , function ( isStrict , locale ) {
return locale . monthsRegex ( isStrict ) ;
} ) ;
addParseToken ( [ 'M' , 'MM' ] , function ( input , array ) {
array [ MONTH ] = toInt ( input ) - 1 ;
} ) ;
addParseToken ( [ 'MMM' , 'MMMM' ] , function ( input , array , config , token ) {
var month = config . _locale . monthsParse ( input , token , config . _strict ) ;
// if we didn't find a month name, mark the date as invalid.
if ( month != null ) {
array [ MONTH ] = month ;
} else {
getParsingFlags ( config ) . invalidMonth = input ;
}
} ) ;
// LOCALES
var MONTHS _IN _FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/ ;
var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December' . split ( '_' ) ;
function localeMonths ( m , format ) {
if ( ! m ) {
return isArray ( this . _months ) ? this . _months :
this . _months [ 'standalone' ] ;
}
return isArray ( this . _months ) ? this . _months [ m . month ( ) ] :
this . _months [ ( this . _months . isFormat || MONTHS _IN _FORMAT ) . test ( format ) ? 'format' : 'standalone' ] [ m . month ( ) ] ;
}
var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec' . split ( '_' ) ;
function localeMonthsShort ( m , format ) {
if ( ! m ) {
return isArray ( this . _monthsShort ) ? this . _monthsShort :
this . _monthsShort [ 'standalone' ] ;
}
return isArray ( this . _monthsShort ) ? this . _monthsShort [ m . month ( ) ] :
this . _monthsShort [ MONTHS _IN _FORMAT . test ( format ) ? 'format' : 'standalone' ] [ m . month ( ) ] ;
}
function handleStrictParse ( monthName , format , strict ) {
var i , ii , mom , llc = monthName . toLocaleLowerCase ( ) ;
if ( ! this . _monthsParse ) {
// this is not used
this . _monthsParse = [ ] ;
this . _longMonthsParse = [ ] ;
this . _shortMonthsParse = [ ] ;
for ( i = 0 ; i < 12 ; ++ i ) {
mom = createUTC ( [ 2000 , i ] ) ;
this . _shortMonthsParse [ i ] = this . monthsShort ( mom , '' ) . toLocaleLowerCase ( ) ;
this . _longMonthsParse [ i ] = this . months ( mom , '' ) . toLocaleLowerCase ( ) ;
}
}
if ( strict ) {
if ( format === 'MMM' ) {
ii = indexOf . call ( this . _shortMonthsParse , llc ) ;
return ii !== - 1 ? ii : null ;
} else {
ii = indexOf . call ( this . _longMonthsParse , llc ) ;
return ii !== - 1 ? ii : null ;
}
} else {
if ( format === 'MMM' ) {
ii = indexOf . call ( this . _shortMonthsParse , llc ) ;
if ( ii !== - 1 ) {
return ii ;
}
ii = indexOf . call ( this . _longMonthsParse , llc ) ;
return ii !== - 1 ? ii : null ;
} else {
ii = indexOf . call ( this . _longMonthsParse , llc ) ;
if ( ii !== - 1 ) {
return ii ;
}
ii = indexOf . call ( this . _shortMonthsParse , llc ) ;
return ii !== - 1 ? ii : null ;
}
}
}
function localeMonthsParse ( monthName , format , strict ) {
var i , mom , regex ;
if ( this . _monthsParseExact ) {
return handleStrictParse . call ( this , monthName , format , strict ) ;
}
if ( ! this . _monthsParse ) {
this . _monthsParse = [ ] ;
this . _longMonthsParse = [ ] ;
this . _shortMonthsParse = [ ] ;
}
// TODO: add sorting
// Sorting makes sure if one month (or abbr) is a prefix of another
// see sorting in computeMonthsParse
for ( i = 0 ; i < 12 ; i ++ ) {
// make the regex if we don't have it already
mom = createUTC ( [ 2000 , i ] ) ;
if ( strict && ! this . _longMonthsParse [ i ] ) {
this . _longMonthsParse [ i ] = new RegExp ( '^' + this . months ( mom , '' ) . replace ( '.' , '' ) + '$' , 'i' ) ;
this . _shortMonthsParse [ i ] = new RegExp ( '^' + this . monthsShort ( mom , '' ) . replace ( '.' , '' ) + '$' , 'i' ) ;
}
if ( ! strict && ! this . _monthsParse [ i ] ) {
regex = '^' + this . months ( mom , '' ) + '|^' + this . monthsShort ( mom , '' ) ;
this . _monthsParse [ i ] = new RegExp ( regex . replace ( '.' , '' ) , 'i' ) ;
}
// test the regex
if ( strict && format === 'MMMM' && this . _longMonthsParse [ i ] . test ( monthName ) ) {
return i ;
} else if ( strict && format === 'MMM' && this . _shortMonthsParse [ i ] . test ( monthName ) ) {
return i ;
} else if ( ! strict && this . _monthsParse [ i ] . test ( monthName ) ) {
return i ;
}
}
}
// MOMENTS
function setMonth ( mom , value ) {
var dayOfMonth ;
if ( ! mom . isValid ( ) ) {
// No op
return mom ;
}
if ( typeof value === 'string' ) {
if ( /^\d+$/ . test ( value ) ) {
value = toInt ( value ) ;
} else {
value = mom . localeData ( ) . monthsParse ( value ) ;
// TODO: Another silent failure?
if ( ! isNumber ( value ) ) {
return mom ;
}
}
}
dayOfMonth = Math . min ( mom . date ( ) , daysInMonth ( mom . year ( ) , value ) ) ;
mom . _d [ 'set' + ( mom . _isUTC ? 'UTC' : '' ) + 'Month' ] ( value , dayOfMonth ) ;
return mom ;
}
function getSetMonth ( value ) {
if ( value != null ) {
setMonth ( this , value ) ;
hooks . updateOffset ( this , true ) ;
return this ;
} else {
return get ( this , 'Month' ) ;
}
}
function getDaysInMonth ( ) {
return daysInMonth ( this . year ( ) , this . month ( ) ) ;
}
var defaultMonthsShortRegex = matchWord ;
function monthsShortRegex ( isStrict ) {
if ( this . _monthsParseExact ) {
if ( ! hasOwnProp ( this , '_monthsRegex' ) ) {
computeMonthsParse . call ( this ) ;
}
if ( isStrict ) {
return this . _monthsShortStrictRegex ;
} else {
return this . _monthsShortRegex ;
}
} else {
if ( ! hasOwnProp ( this , '_monthsShortRegex' ) ) {
this . _monthsShortRegex = defaultMonthsShortRegex ;
}
return this . _monthsShortStrictRegex && isStrict ?
this . _monthsShortStrictRegex : this . _monthsShortRegex ;
}
}
var defaultMonthsRegex = matchWord ;
function monthsRegex ( isStrict ) {
if ( this . _monthsParseExact ) {
if ( ! hasOwnProp ( this , '_monthsRegex' ) ) {
computeMonthsParse . call ( this ) ;
}
if ( isStrict ) {
return this . _monthsStrictRegex ;
} else {
return this . _monthsRegex ;
}
} else {
if ( ! hasOwnProp ( this , '_monthsRegex' ) ) {
this . _monthsRegex = defaultMonthsRegex ;
}
return this . _monthsStrictRegex && isStrict ?
this . _monthsStrictRegex : this . _monthsRegex ;
}
}
function computeMonthsParse ( ) {
function cmpLenRev ( a , b ) {
return b . length - a . length ;
}
var shortPieces = [ ] , longPieces = [ ] , mixedPieces = [ ] ,
i , mom ;
for ( i = 0 ; i < 12 ; i ++ ) {
// make the regex if we don't have it already
mom = createUTC ( [ 2000 , i ] ) ;
shortPieces . push ( this . monthsShort ( mom , '' ) ) ;
longPieces . push ( this . months ( mom , '' ) ) ;
mixedPieces . push ( this . months ( mom , '' ) ) ;
mixedPieces . push ( this . monthsShort ( mom , '' ) ) ;
}
// Sorting makes sure if one month (or abbr) is a prefix of another it
// will match the longer piece.
shortPieces . sort ( cmpLenRev ) ;
longPieces . sort ( cmpLenRev ) ;
mixedPieces . sort ( cmpLenRev ) ;
for ( i = 0 ; i < 12 ; i ++ ) {
shortPieces [ i ] = regexEscape ( shortPieces [ i ] ) ;
longPieces [ i ] = regexEscape ( longPieces [ i ] ) ;
}
for ( i = 0 ; i < 24 ; i ++ ) {
mixedPieces [ i ] = regexEscape ( mixedPieces [ i ] ) ;
}
this . _monthsRegex = new RegExp ( '^(' + mixedPieces . join ( '|' ) + ')' , 'i' ) ;
this . _monthsShortRegex = this . _monthsRegex ;
this . _monthsStrictRegex = new RegExp ( '^(' + longPieces . join ( '|' ) + ')' , 'i' ) ;
this . _monthsShortStrictRegex = new RegExp ( '^(' + shortPieces . join ( '|' ) + ')' , 'i' ) ;
}
function createDate ( y , m , d , h , M , s , ms ) {
// can't just apply() to create a date:
// https://stackoverflow.com/q/181348
var date ;
// the date constructor remaps years 0-99 to 1900-1999
if ( y < 100 && y >= 0 ) {
// preserve leap years using a full 400 year cycle, then reset
date = new Date ( y + 400 , m , d , h , M , s , ms ) ;
if ( isFinite ( date . getFullYear ( ) ) ) {
date . setFullYear ( y ) ;
}
} else {
date = new Date ( y , m , d , h , M , s , ms ) ;
}
return date ;
}
function createUTCDate ( y ) {
var date ;
// the Date.UTC function remaps years 0-99 to 1900-1999
if ( y < 100 && y >= 0 ) {
var args = Array . prototype . slice . call ( arguments ) ;
// preserve leap years using a full 400 year cycle, then reset
args [ 0 ] = y + 400 ;
date = new Date ( Date . UTC . apply ( null , args ) ) ;
if ( isFinite ( date . getUTCFullYear ( ) ) ) {
date . setUTCFullYear ( y ) ;
}
} else {
date = new Date ( Date . UTC . apply ( null , arguments ) ) ;
}
return date ;
}
// start-of-first-week - start-of-year
function firstWeekOffset ( year , dow , doy ) {
var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
fwd = 7 + dow - doy ,
// first-week day local weekday -- which local weekday is fwd
fwdlw = ( 7 + createUTCDate ( year , 0 , fwd ) . getUTCDay ( ) - dow ) % 7 ;
return - fwdlw + fwd - 1 ;
}
// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
function dayOfYearFromWeeks ( year , week , weekday , dow , doy ) {
var localWeekday = ( 7 + weekday - dow ) % 7 ,
weekOffset = firstWeekOffset ( year , dow , doy ) ,
dayOfYear = 1 + 7 * ( week - 1 ) + localWeekday + weekOffset ,
resYear , resDayOfYear ;
if ( dayOfYear <= 0 ) {
resYear = year - 1 ;
resDayOfYear = daysInYear ( resYear ) + dayOfYear ;
} else if ( dayOfYear > daysInYear ( year ) ) {
resYear = year + 1 ;
resDayOfYear = dayOfYear - daysInYear ( year ) ;
} else {
resYear = year ;
resDayOfYear = dayOfYear ;
}
return {
year : resYear ,
dayOfYear : resDayOfYear
} ;
}
function weekOfYear ( mom , dow , doy ) {
var weekOffset = firstWeekOffset ( mom . year ( ) , dow , doy ) ,
week = Math . floor ( ( mom . dayOfYear ( ) - weekOffset - 1 ) / 7 ) + 1 ,
resWeek , resYear ;
if ( week < 1 ) {
resYear = mom . year ( ) - 1 ;
resWeek = week + weeksInYear ( resYear , dow , doy ) ;
} else if ( week > weeksInYear ( mom . year ( ) , dow , doy ) ) {
resWeek = week - weeksInYear ( mom . year ( ) , dow , doy ) ;
resYear = mom . year ( ) + 1 ;
} else {
resYear = mom . year ( ) ;
resWeek = week ;
}
return {
week : resWeek ,
year : resYear
} ;
}
function weeksInYear ( year , dow , doy ) {
var weekOffset = firstWeekOffset ( year , dow , doy ) ,
weekOffsetNext = firstWeekOffset ( year + 1 , dow , doy ) ;
return ( daysInYear ( year ) - weekOffset + weekOffsetNext ) / 7 ;
}
// FORMATTING
addFormatToken ( 'w' , [ 'ww' , 2 ] , 'wo' , 'week' ) ;
addFormatToken ( 'W' , [ 'WW' , 2 ] , 'Wo' , 'isoWeek' ) ;
// ALIASES
addUnitAlias ( 'week' , 'w' ) ;
addUnitAlias ( 'isoWeek' , 'W' ) ;
// PRIORITIES
addUnitPriority ( 'week' , 5 ) ;
addUnitPriority ( 'isoWeek' , 5 ) ;
// PARSING
addRegexToken ( 'w' , match1to2 ) ;
addRegexToken ( 'ww' , match1to2 , match2 ) ;
addRegexToken ( 'W' , match1to2 ) ;
addRegexToken ( 'WW' , match1to2 , match2 ) ;
addWeekParseToken ( [ 'w' , 'ww' , 'W' , 'WW' ] , function ( input , week , config , token ) {
week [ token . substr ( 0 , 1 ) ] = toInt ( input ) ;
} ) ;
// HELPERS
// LOCALES
function localeWeek ( mom ) {
return weekOfYear ( mom , this . _week . dow , this . _week . doy ) . week ;
}
var defaultLocaleWeek = {
dow : 0 , // Sunday is the first day of the week.
doy : 6 // The week that contains Jan 6th is the first week of the year.
} ;
function localeFirstDayOfWeek ( ) {
return this . _week . dow ;
}
function localeFirstDayOfYear ( ) {
return this . _week . doy ;
}
// MOMENTS
function getSetWeek ( input ) {
var week = this . localeData ( ) . week ( this ) ;
return input == null ? week : this . add ( ( input - week ) * 7 , 'd' ) ;
}
function getSetISOWeek ( input ) {
var week = weekOfYear ( this , 1 , 4 ) . week ;
return input == null ? week : this . add ( ( input - week ) * 7 , 'd' ) ;
}
// FORMATTING
addFormatToken ( 'd' , 0 , 'do' , 'day' ) ;
addFormatToken ( 'dd' , 0 , 0 , function ( format ) {
return this . localeData ( ) . weekdaysMin ( this , format ) ;
} ) ;
addFormatToken ( 'ddd' , 0 , 0 , function ( format ) {
return this . localeData ( ) . weekdaysShort ( this , format ) ;
} ) ;
addFormatToken ( 'dddd' , 0 , 0 , function ( format ) {
return this . localeData ( ) . weekdays ( this , format ) ;
} ) ;
addFormatToken ( 'e' , 0 , 0 , 'weekday' ) ;
addFormatToken ( 'E' , 0 , 0 , 'isoWeekday' ) ;
// ALIASES
addUnitAlias ( 'day' , 'd' ) ;
addUnitAlias ( 'weekday' , 'e' ) ;
addUnitAlias ( 'isoWeekday' , 'E' ) ;
// PRIORITY
addUnitPriority ( 'day' , 11 ) ;
addUnitPriority ( 'weekday' , 11 ) ;
addUnitPriority ( 'isoWeekday' , 11 ) ;
// PARSING
addRegexToken ( 'd' , match1to2 ) ;
addRegexToken ( 'e' , match1to2 ) ;
addRegexToken ( 'E' , match1to2 ) ;
addRegexToken ( 'dd' , function ( isStrict , locale ) {
return locale . weekdaysMinRegex ( isStrict ) ;
} ) ;
addRegexToken ( 'ddd' , function ( isStrict , locale ) {
return locale . weekdaysShortRegex ( isStrict ) ;
} ) ;
addRegexToken ( 'dddd' , function ( isStrict , locale ) {
return locale . weekdaysRegex ( isStrict ) ;
} ) ;
addWeekParseToken ( [ 'dd' , 'ddd' , 'dddd' ] , function ( input , week , config , token ) {
var weekday = config . _locale . weekdaysParse ( input , token , config . _strict ) ;
// if we didn't get a weekday name, mark the date as invalid
if ( weekday != null ) {
week . d = weekday ;
} else {
getParsingFlags ( config ) . invalidWeekday = input ;
}
} ) ;
addWeekParseToken ( [ 'd' , 'e' , 'E' ] , function ( input , week , config , token ) {
week [ token ] = toInt ( input ) ;
} ) ;
// HELPERS
function parseWeekday ( input , locale ) {
if ( typeof input !== 'string' ) {
return input ;
}
if ( ! isNaN ( input ) ) {
return parseInt ( input , 10 ) ;
}
input = locale . weekdaysParse ( input ) ;
if ( typeof input === 'number' ) {
return input ;
}
return null ;
}
function parseIsoWeekday ( input , locale ) {
if ( typeof input === 'string' ) {
return locale . weekdaysParse ( input ) % 7 || 7 ;
}
return isNaN ( input ) ? null : input ;
}
// LOCALES
function shiftWeekdays ( ws , n ) {
return ws . slice ( n , 7 ) . concat ( ws . slice ( 0 , n ) ) ;
}
var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday' . split ( '_' ) ;
function localeWeekdays ( m , format ) {
var weekdays = isArray ( this . _weekdays ) ? this . _weekdays :
this . _weekdays [ ( m && m !== true && this . _weekdays . isFormat . test ( format ) ) ? 'format' : 'standalone' ] ;
return ( m === true ) ? shiftWeekdays ( weekdays , this . _week . dow )
: ( m ) ? weekdays [ m . day ( ) ] : weekdays ;
}
var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat' . split ( '_' ) ;
function localeWeekdaysShort ( m ) {
return ( m === true ) ? shiftWeekdays ( this . _weekdaysShort , this . _week . dow )
: ( m ) ? this . _weekdaysShort [ m . day ( ) ] : this . _weekdaysShort ;
}
var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa' . split ( '_' ) ;
function localeWeekdaysMin ( m ) {
return ( m === true ) ? shiftWeekdays ( this . _weekdaysMin , this . _week . dow )
: ( m ) ? this . _weekdaysMin [ m . day ( ) ] : this . _weekdaysMin ;
}
function handleStrictParse$1 ( weekdayName , format , strict ) {
var i , ii , mom , llc = weekdayName . toLocaleLowerCase ( ) ;
if ( ! this . _weekdaysParse ) {
this . _weekdaysParse = [ ] ;
this . _shortWeekdaysParse = [ ] ;
this . _minWeekdaysParse = [ ] ;
for ( i = 0 ; i < 7 ; ++ i ) {
mom = createUTC ( [ 2000 , 1 ] ) . day ( i ) ;
this . _minWeekdaysParse [ i ] = this . weekdaysMin ( mom , '' ) . toLocaleLowerCase ( ) ;
this . _shortWeekdaysParse [ i ] = this . weekdaysShort ( mom , '' ) . toLocaleLowerCase ( ) ;
this . _weekdaysParse [ i ] = this . weekdays ( mom , '' ) . toLocaleLowerCase ( ) ;
}
}
if ( strict ) {
if ( format === 'dddd' ) {
ii = indexOf . call ( this . _weekdaysParse , llc ) ;
return ii !== - 1 ? ii : null ;
} else if ( format === 'ddd' ) {
ii = indexOf . call ( this . _shortWeekdaysParse , llc ) ;
return ii !== - 1 ? ii : null ;
} else {
ii = indexOf . call ( this . _minWeekdaysParse , llc ) ;
return ii !== - 1 ? ii : null ;
}
} else {
if ( format === 'dddd' ) {
ii = indexOf . call ( this . _weekdaysParse , llc ) ;
if ( ii !== - 1 ) {
return ii ;
}
ii = indexOf . call ( this . _shortWeekdaysParse , llc ) ;
if ( ii !== - 1 ) {
return ii ;
}
ii = indexOf . call ( this . _minWeekdaysParse , llc ) ;
return ii !== - 1 ? ii : null ;
} else if ( format === 'ddd' ) {
ii = indexOf . call ( this . _shortWeekdaysParse , llc ) ;
if ( ii !== - 1 ) {
return ii ;
}
ii = indexOf . call ( this . _weekdaysParse , llc ) ;
if ( ii !== - 1 ) {
return ii ;
}
ii = indexOf . call ( this . _minWeekdaysParse , llc ) ;
return ii !== - 1 ? ii : null ;
} else {
ii = indexOf . call ( this . _minWeekdaysParse , llc ) ;
if ( ii !== - 1 ) {
return ii ;
}
ii = indexOf . call ( this . _weekdaysParse , llc ) ;
if ( ii !== - 1 ) {
return ii ;
}
ii = indexOf . call ( this . _shortWeekdaysParse , llc ) ;
return ii !== - 1 ? ii : null ;
}
}
}
function localeWeekdaysParse ( weekdayName , format , strict ) {
var i , mom , regex ;
if ( this . _weekdaysParseExact ) {
return handleStrictParse$1 . call ( this , weekdayName , format , strict ) ;
}
if ( ! this . _weekdaysParse ) {
this . _weekdaysParse = [ ] ;
this . _minWeekdaysParse = [ ] ;
this . _shortWeekdaysParse = [ ] ;
this . _fullWeekdaysParse = [ ] ;
}
for ( i = 0 ; i < 7 ; i ++ ) {
// make the regex if we don't have it already
mom = createUTC ( [ 2000 , 1 ] ) . day ( i ) ;
if ( strict && ! this . _fullWeekdaysParse [ i ] ) {
this . _fullWeekdaysParse [ i ] = new RegExp ( '^' + this . weekdays ( mom , '' ) . replace ( '.' , '\\.?' ) + '$' , 'i' ) ;
this . _shortWeekdaysParse [ i ] = new RegExp ( '^' + this . weekdaysShort ( mom , '' ) . replace ( '.' , '\\.?' ) + '$' , 'i' ) ;
this . _minWeekdaysParse [ i ] = new RegExp ( '^' + this . weekdaysMin ( mom , '' ) . replace ( '.' , '\\.?' ) + '$' , 'i' ) ;
}
if ( ! this . _weekdaysParse [ i ] ) {
regex = '^' + this . weekdays ( mom , '' ) + '|^' + this . weekdaysShort ( mom , '' ) + '|^' + this . weekdaysMin ( mom , '' ) ;
this . _weekdaysParse [ i ] = new RegExp ( regex . replace ( '.' , '' ) , 'i' ) ;
}
// test the regex
if ( strict && format === 'dddd' && this . _fullWeekdaysParse [ i ] . test ( weekdayName ) ) {
return i ;
} else if ( strict && format === 'ddd' && this . _shortWeekdaysParse [ i ] . test ( weekdayName ) ) {
return i ;
} else if ( strict && format === 'dd' && this . _minWeekdaysParse [ i ] . test ( weekdayName ) ) {
return i ;
} else if ( ! strict && this . _weekdaysParse [ i ] . test ( weekdayName ) ) {
return i ;
}
}
}
// MOMENTS
function getSetDayOfWeek ( input ) {
if ( ! this . isValid ( ) ) {
return input != null ? this : NaN ;
}
var day = this . _isUTC ? this . _d . getUTCDay ( ) : this . _d . getDay ( ) ;
if ( input != null ) {
input = parseWeekday ( input , this . localeData ( ) ) ;
return this . add ( input - day , 'd' ) ;
} else {
return day ;
}
}
function getSetLocaleDayOfWeek ( input ) {
if ( ! this . isValid ( ) ) {
return input != null ? this : NaN ;
}
var weekday = ( this . day ( ) + 7 - this . localeData ( ) . _week . dow ) % 7 ;
return input == null ? weekday : this . add ( input - weekday , 'd' ) ;
}
function getSetISODayOfWeek ( input ) {
if ( ! this . isValid ( ) ) {
return input != null ? this : NaN ;
}
// behaves the same as moment#day except
// as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
// as a setter, sunday should belong to the previous week.
if ( input != null ) {
var weekday = parseIsoWeekday ( input , this . localeData ( ) ) ;
return this . day ( this . day ( ) % 7 ? weekday : weekday - 7 ) ;
} else {
return this . day ( ) || 7 ;
}
}
var defaultWeekdaysRegex = matchWord ;
function weekdaysRegex ( isStrict ) {
if ( this . _weekdaysParseExact ) {
if ( ! hasOwnProp ( this , '_weekdaysRegex' ) ) {
computeWeekdaysParse . call ( this ) ;
}
if ( isStrict ) {
return this . _weekdaysStrictRegex ;
} else {
return this . _weekdaysRegex ;
}
} else {
if ( ! hasOwnProp ( this , '_weekdaysRegex' ) ) {
this . _weekdaysRegex = defaultWeekdaysRegex ;
}
return this . _weekdaysStrictRegex && isStrict ?
this . _weekdaysStrictRegex : this . _weekdaysRegex ;
}
}
var defaultWeekdaysShortRegex = matchWord ;
function weekdaysShortRegex ( isStrict ) {
if ( this . _weekdaysParseExact ) {
if ( ! hasOwnProp ( this , '_weekdaysRegex' ) ) {
computeWeekdaysParse . call ( this ) ;
}
if ( isStrict ) {
return this . _weekdaysShortStrictRegex ;
} else {
return this . _weekdaysShortRegex ;
}
} else {
if ( ! hasOwnProp ( this , '_weekdaysShortRegex' ) ) {
this . _weekdaysShortRegex = defaultWeekdaysShortRegex ;
}
return this . _weekdaysShortStrictRegex && isStrict ?
this . _weekdaysShortStrictRegex : this . _weekdaysShortRegex ;
}
}
var defaultWeekdaysMinRegex = matchWord ;
function weekdaysMinRegex ( isStrict ) {
if ( this . _weekdaysParseExact ) {
if ( ! hasOwnProp ( this , '_weekdaysRegex' ) ) {
computeWeekdaysParse . call ( this ) ;
}
if ( isStrict ) {
return this . _weekdaysMinStrictRegex ;
} else {
return this . _weekdaysMinRegex ;
}
} else {
if ( ! hasOwnProp ( this , '_weekdaysMinRegex' ) ) {
this . _weekdaysMinRegex = defaultWeekdaysMinRegex ;
}
return this . _weekdaysMinStrictRegex && isStrict ?
this . _weekdaysMinStrictRegex : this . _weekdaysMinRegex ;
}
}
function computeWeekdaysParse ( ) {
function cmpLenRev ( a , b ) {
return b . length - a . length ;
}
var minPieces = [ ] , shortPieces = [ ] , longPieces = [ ] , mixedPieces = [ ] ,
i , mom , minp , shortp , longp ;
for ( i = 0 ; i < 7 ; i ++ ) {
// make the regex if we don't have it already
mom = createUTC ( [ 2000 , 1 ] ) . day ( i ) ;
minp = this . weekdaysMin ( mom , '' ) ;
shortp = this . weekdaysShort ( mom , '' ) ;
longp = this . weekdays ( mom , '' ) ;
minPieces . push ( minp ) ;
shortPieces . push ( shortp ) ;
longPieces . push ( longp ) ;
mixedPieces . push ( minp ) ;
mixedPieces . push ( shortp ) ;
mixedPieces . push ( longp ) ;
}
// Sorting makes sure if one weekday (or abbr) is a prefix of another it
// will match the longer piece.
minPieces . sort ( cmpLenRev ) ;
shortPieces . sort ( cmpLenRev ) ;
longPieces . sort ( cmpLenRev ) ;
mixedPieces . sort ( cmpLenRev ) ;
for ( i = 0 ; i < 7 ; i ++ ) {
shortPieces [ i ] = regexEscape ( shortPieces [ i ] ) ;
longPieces [ i ] = regexEscape ( longPieces [ i ] ) ;
mixedPieces [ i ] = regexEscape ( mixedPieces [ i ] ) ;
}
this . _weekdaysRegex = new RegExp ( '^(' + mixedPieces . join ( '|' ) + ')' , 'i' ) ;
this . _weekdaysShortRegex = this . _weekdaysRegex ;
this . _weekdaysMinRegex = this . _weekdaysRegex ;
this . _weekdaysStrictRegex = new RegExp ( '^(' + longPieces . join ( '|' ) + ')' , 'i' ) ;
this . _weekdaysShortStrictRegex = new RegExp ( '^(' + shortPieces . join ( '|' ) + ')' , 'i' ) ;
this . _weekdaysMinStrictRegex = new RegExp ( '^(' + minPieces . join ( '|' ) + ')' , 'i' ) ;
}
// FORMATTING
function hFormat ( ) {
return this . hours ( ) % 12 || 12 ;
}
function kFormat ( ) {
return this . hours ( ) || 24 ;
}
addFormatToken ( 'H' , [ 'HH' , 2 ] , 0 , 'hour' ) ;
addFormatToken ( 'h' , [ 'hh' , 2 ] , 0 , hFormat ) ;
addFormatToken ( 'k' , [ 'kk' , 2 ] , 0 , kFormat ) ;
addFormatToken ( 'hmm' , 0 , 0 , function ( ) {
return '' + hFormat . apply ( this ) + zeroFill ( this . minutes ( ) , 2 ) ;
} ) ;
addFormatToken ( 'hmmss' , 0 , 0 , function ( ) {
return '' + hFormat . apply ( this ) + zeroFill ( this . minutes ( ) , 2 ) +
zeroFill ( this . seconds ( ) , 2 ) ;
} ) ;
addFormatToken ( 'Hmm' , 0 , 0 , function ( ) {
return '' + this . hours ( ) + zeroFill ( this . minutes ( ) , 2 ) ;
} ) ;
addFormatToken ( 'Hmmss' , 0 , 0 , function ( ) {
return '' + this . hours ( ) + zeroFill ( this . minutes ( ) , 2 ) +
zeroFill ( this . seconds ( ) , 2 ) ;
} ) ;
function meridiem ( token , lowercase ) {
addFormatToken ( token , 0 , 0 , function ( ) {
return this . localeData ( ) . meridiem ( this . hours ( ) , this . minutes ( ) , lowercase ) ;
} ) ;
}
meridiem ( 'a' , true ) ;
meridiem ( 'A' , false ) ;
// ALIASES
addUnitAlias ( 'hour' , 'h' ) ;
// PRIORITY
addUnitPriority ( 'hour' , 13 ) ;
// PARSING
function matchMeridiem ( isStrict , locale ) {
return locale . _meridiemParse ;
}
addRegexToken ( 'a' , matchMeridiem ) ;
addRegexToken ( 'A' , matchMeridiem ) ;
addRegexToken ( 'H' , match1to2 ) ;
addRegexToken ( 'h' , match1to2 ) ;
addRegexToken ( 'k' , match1to2 ) ;
addRegexToken ( 'HH' , match1to2 , match2 ) ;
addRegexToken ( 'hh' , match1to2 , match2 ) ;
addRegexToken ( 'kk' , match1to2 , match2 ) ;
addRegexToken ( 'hmm' , match3to4 ) ;
addRegexToken ( 'hmmss' , match5to6 ) ;
addRegexToken ( 'Hmm' , match3to4 ) ;
addRegexToken ( 'Hmmss' , match5to6 ) ;
addParseToken ( [ 'H' , 'HH' ] , HOUR ) ;
addParseToken ( [ 'k' , 'kk' ] , function ( input , array , config ) {
var kInput = toInt ( input ) ;
array [ HOUR ] = kInput === 24 ? 0 : kInput ;
} ) ;
addParseToken ( [ 'a' , 'A' ] , function ( input , array , config ) {
config . _isPm = config . _locale . isPM ( input ) ;
config . _meridiem = input ;
} ) ;
addParseToken ( [ 'h' , 'hh' ] , function ( input , array , config ) {
array [ HOUR ] = toInt ( input ) ;
getParsingFlags ( config ) . bigHour = true ;
} ) ;
addParseToken ( 'hmm' , function ( input , array , config ) {
var pos = input . length - 2 ;
array [ HOUR ] = toInt ( input . substr ( 0 , pos ) ) ;
array [ MINUTE ] = toInt ( input . substr ( pos ) ) ;
getParsingFlags ( config ) . bigHour = true ;
} ) ;
addParseToken ( 'hmmss' , function ( input , array , config ) {
var pos1 = input . length - 4 ;
var pos2 = input . length - 2 ;
array [ HOUR ] = toInt ( input . substr ( 0 , pos1 ) ) ;
array [ MINUTE ] = toInt ( input . substr ( pos1 , 2 ) ) ;
array [ SECOND ] = toInt ( input . substr ( pos2 ) ) ;
getParsingFlags ( config ) . bigHour = true ;
} ) ;
addParseToken ( 'Hmm' , function ( input , array , config ) {
var pos = input . length - 2 ;
array [ HOUR ] = toInt ( input . substr ( 0 , pos ) ) ;
array [ MINUTE ] = toInt ( input . substr ( pos ) ) ;
} ) ;
addParseToken ( 'Hmmss' , function ( input , array , config ) {
var pos1 = input . length - 4 ;
var pos2 = input . length - 2 ;
array [ HOUR ] = toInt ( input . substr ( 0 , pos1 ) ) ;
array [ MINUTE ] = toInt ( input . substr ( pos1 , 2 ) ) ;
array [ SECOND ] = toInt ( input . substr ( pos2 ) ) ;
} ) ;
// LOCALES
function localeIsPM ( input ) {
// IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
// Using charAt should be more compatible.
return ( ( input + '' ) . toLowerCase ( ) . charAt ( 0 ) === 'p' ) ;
}
var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i ;
function localeMeridiem ( hours , minutes , isLower ) {
if ( hours > 11 ) {
return isLower ? 'pm' : 'PM' ;
} else {
return isLower ? 'am' : 'AM' ;
}
}
// MOMENTS
// Setting the hour should keep the time, because the user explicitly
// specified which hour they want. So trying to maintain the same hour (in
// a new timezone) makes sense. Adding/subtracting hours does not follow
// this rule.
var getSetHour = makeGetSet ( 'Hours' , true ) ;
var baseConfig = {
calendar : defaultCalendar ,
longDateFormat : defaultLongDateFormat ,
invalidDate : defaultInvalidDate ,
ordinal : defaultOrdinal ,
dayOfMonthOrdinalParse : defaultDayOfMonthOrdinalParse ,
relativeTime : defaultRelativeTime ,
months : defaultLocaleMonths ,
monthsShort : defaultLocaleMonthsShort ,
week : defaultLocaleWeek ,
weekdays : defaultLocaleWeekdays ,
weekdaysMin : defaultLocaleWeekdaysMin ,
weekdaysShort : defaultLocaleWeekdaysShort ,
meridiemParse : defaultLocaleMeridiemParse
} ;
// internal storage for locale config files
var locales = { } ;
var localeFamilies = { } ;
var globalLocale ;
function normalizeLocale ( key ) {
return key ? key . toLowerCase ( ) . replace ( '_' , '-' ) : key ;
}
// pick the locale from the array
// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
function chooseLocale ( names ) {
var i = 0 , j , next , locale , split ;
while ( i < names . length ) {
split = normalizeLocale ( names [ i ] ) . split ( '-' ) ;
j = split . length ;
next = normalizeLocale ( names [ i + 1 ] ) ;
next = next ? next . split ( '-' ) : null ;
while ( j > 0 ) {
locale = loadLocale ( split . slice ( 0 , j ) . join ( '-' ) ) ;
if ( locale ) {
return locale ;
}
if ( next && next . length >= j && compareArrays ( split , next , true ) >= j - 1 ) {
//the next array item is better than a shallower substring of this one
break ;
}
j -- ;
}
i ++ ;
}
return globalLocale ;
}
function loadLocale ( name ) {
var oldLocale = null ;
// TODO: Find a better way to register and load all the locales in Node
if ( ! locales [ name ] && ( 'object' !== 'undefined' ) &&
module && module . exports ) {
try {
oldLocale = globalLocale . _abbr ;
var aliasedRequire = commonjsRequire ;
aliasedRequire ( './locale/' + name ) ;
getSetGlobalLocale ( oldLocale ) ;
} catch ( e ) { }
}
return locales [ name ] ;
}
// This function will load locale and then set the global locale. If
// no arguments are passed in, it will simply return the current global
// locale key.
function getSetGlobalLocale ( key , values ) {
var data ;
if ( key ) {
if ( isUndefined ( values ) ) {
data = getLocale ( key ) ;
}
else {
data = defineLocale ( key , values ) ;
}
if ( data ) {
// moment.duration._locale = moment._locale = data;
globalLocale = data ;
}
else {
if ( ( typeof console !== 'undefined' ) && console . warn ) {
//warn user if arguments are passed but the locale could not be set
console . warn ( 'Locale ' + key + ' not found. Did you forget to load it?' ) ;
}
}
}
return globalLocale . _abbr ;
}
function defineLocale ( name , config ) {
if ( config !== null ) {
var locale , parentConfig = baseConfig ;
config . abbr = name ;
if ( locales [ name ] != null ) {
deprecateSimple ( 'defineLocaleOverride' ,
'use moment.updateLocale(localeName, config) to change ' +
'an existing locale. moment.defineLocale(localeName, ' +
'config) should only be used for creating a new locale ' +
'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.' ) ;
parentConfig = locales [ name ] . _config ;
} else if ( config . parentLocale != null ) {
if ( locales [ config . parentLocale ] != null ) {
parentConfig = locales [ config . parentLocale ] . _config ;
} else {
locale = loadLocale ( config . parentLocale ) ;
if ( locale != null ) {
parentConfig = locale . _config ;
} else {
if ( ! localeFamilies [ config . parentLocale ] ) {
localeFamilies [ config . parentLocale ] = [ ] ;
}
localeFamilies [ config . parentLocale ] . push ( {
name : name ,
config : config
} ) ;
return null ;
}
}
}
locales [ name ] = new Locale ( mergeConfigs ( parentConfig , config ) ) ;
if ( localeFamilies [ name ] ) {
localeFamilies [ name ] . forEach ( function ( x ) {
defineLocale ( x . name , x . config ) ;
} ) ;
}
// backwards compat for now: also set the locale
// make sure we set the locale AFTER all child locales have been
// created, so we won't end up with the child locale set.
getSetGlobalLocale ( name ) ;
return locales [ name ] ;
} else {
// useful for testing
delete locales [ name ] ;
return null ;
}
}
function updateLocale ( name , config ) {
if ( config != null ) {
var locale , tmpLocale , parentConfig = baseConfig ;
// MERGE
tmpLocale = loadLocale ( name ) ;
if ( tmpLocale != null ) {
parentConfig = tmpLocale . _config ;
}
config = mergeConfigs ( parentConfig , config ) ;
locale = new Locale ( config ) ;
locale . parentLocale = locales [ name ] ;
locales [ name ] = locale ;
// backwards compat for now: also set the locale
getSetGlobalLocale ( name ) ;
} else {
// pass null for config to unupdate, useful for tests
if ( locales [ name ] != null ) {
if ( locales [ name ] . parentLocale != null ) {
locales [ name ] = locales [ name ] . parentLocale ;
} else if ( locales [ name ] != null ) {
delete locales [ name ] ;
}
}
}
return locales [ name ] ;
}
// returns locale data
function getLocale ( key ) {
var locale ;
if ( key && key . _locale && key . _locale . _abbr ) {
key = key . _locale . _abbr ;
}
if ( ! key ) {
return globalLocale ;
}
if ( ! isArray ( key ) ) {
//short-circuit everything else
locale = loadLocale ( key ) ;
if ( locale ) {
return locale ;
}
key = [ key ] ;
}
return chooseLocale ( key ) ;
}
function listLocales ( ) {
return keys ( locales ) ;
}
function checkOverflow ( m ) {
var overflow ;
var a = m . _a ;
if ( a && getParsingFlags ( m ) . overflow === - 2 ) {
overflow =
a [ MONTH ] < 0 || a [ MONTH ] > 11 ? MONTH :
a [ DATE ] < 1 || a [ DATE ] > daysInMonth ( a [ YEAR ] , a [ MONTH ] ) ? DATE :
a [ HOUR ] < 0 || a [ HOUR ] > 24 || ( a [ HOUR ] === 24 && ( a [ MINUTE ] !== 0 || a [ SECOND ] !== 0 || a [ MILLISECOND ] !== 0 ) ) ? HOUR :
a [ MINUTE ] < 0 || a [ MINUTE ] > 59 ? MINUTE :
a [ SECOND ] < 0 || a [ SECOND ] > 59 ? SECOND :
a [ MILLISECOND ] < 0 || a [ MILLISECOND ] > 999 ? MILLISECOND :
- 1 ;
if ( getParsingFlags ( m ) . _overflowDayOfYear && ( overflow < YEAR || overflow > DATE ) ) {
overflow = DATE ;
}
if ( getParsingFlags ( m ) . _overflowWeeks && overflow === - 1 ) {
overflow = WEEK ;
}
if ( getParsingFlags ( m ) . _overflowWeekday && overflow === - 1 ) {
overflow = WEEKDAY ;
}
getParsingFlags ( m ) . overflow = overflow ;
}
return m ;
}
// Pick the first defined of two or three arguments.
function defaults ( a , b , c ) {
if ( a != null ) {
return a ;
}
if ( b != null ) {
return b ;
}
return c ;
}
function currentDateArray ( config ) {
// hooks is actually the exported moment object
var nowValue = new Date ( hooks . now ( ) ) ;
if ( config . _useUTC ) {
return [ nowValue . getUTCFullYear ( ) , nowValue . getUTCMonth ( ) , nowValue . getUTCDate ( ) ] ;
}
return [ nowValue . getFullYear ( ) , nowValue . getMonth ( ) , nowValue . getDate ( ) ] ;
}
// convert an array to a date.
// the array should mirror the parameters below
// note: all values past the year are optional and will default to the lowest possible value.
// [year, month, day , hour, minute, second, millisecond]
function configFromArray ( config ) {
var i , date , input = [ ] , currentDate , expectedWeekday , yearToUse ;
if ( config . _d ) {
return ;
}
currentDate = currentDateArray ( config ) ;
//compute day of the year from weeks and weekdays
if ( config . _w && config . _a [ DATE ] == null && config . _a [ MONTH ] == null ) {
dayOfYearFromWeekInfo ( config ) ;
}
//if the day of the year is set, figure out what it is
if ( config . _dayOfYear != null ) {
yearToUse = defaults ( config . _a [ YEAR ] , currentDate [ YEAR ] ) ;
if ( config . _dayOfYear > daysInYear ( yearToUse ) || config . _dayOfYear === 0 ) {
getParsingFlags ( config ) . _overflowDayOfYear = true ;
}
date = createUTCDate ( yearToUse , 0 , config . _dayOfYear ) ;
config . _a [ MONTH ] = date . getUTCMonth ( ) ;
config . _a [ DATE ] = date . getUTCDate ( ) ;
}
// Default to current date.
// * if no year, month, day of month are given, default to today
// * if day of month is given, default month and year
// * if month is given, default only year
// * if year is given, don't default anything
for ( i = 0 ; i < 3 && config . _a [ i ] == null ; ++ i ) {
config . _a [ i ] = input [ i ] = currentDate [ i ] ;
}
// Zero out whatever was not defaulted, including time
for ( ; i < 7 ; i ++ ) {
config . _a [ i ] = input [ i ] = ( config . _a [ i ] == null ) ? ( i === 2 ? 1 : 0 ) : config . _a [ i ] ;
}
// Check for 24:00:00.000
if ( config . _a [ HOUR ] === 24 &&
config . _a [ MINUTE ] === 0 &&
config . _a [ SECOND ] === 0 &&
config . _a [ MILLISECOND ] === 0 ) {
config . _nextDay = true ;
config . _a [ HOUR ] = 0 ;
}
config . _d = ( config . _useUTC ? createUTCDate : createDate ) . apply ( null , input ) ;
expectedWeekday = config . _useUTC ? config . _d . getUTCDay ( ) : config . _d . getDay ( ) ;
// Apply timezone offset from input. The actual utcOffset can be changed
// with parseZone.
if ( config . _tzm != null ) {
config . _d . setUTCMinutes ( config . _d . getUTCMinutes ( ) - config . _tzm ) ;
}
if ( config . _nextDay ) {
config . _a [ HOUR ] = 24 ;
}
// check for mismatching day of week
if ( config . _w && typeof config . _w . d !== 'undefined' && config . _w . d !== expectedWeekday ) {
getParsingFlags ( config ) . weekdayMismatch = true ;
}
}
function dayOfYearFromWeekInfo ( config ) {
var w , weekYear , week , weekday , dow , doy , temp , weekdayOverflow ;
w = config . _w ;
if ( w . GG != null || w . W != null || w . E != null ) {
dow = 1 ;
doy = 4 ;
// TODO: We need to take the current isoWeekYear, but that depends on
// how we interpret now (local, utc, fixed offset). So create
// a now version of current config (take local/utc/offset flags, and
// create now).
weekYear = defaults ( w . GG , config . _a [ YEAR ] , weekOfYear ( createLocal ( ) , 1 , 4 ) . year ) ;
week = defaults ( w . W , 1 ) ;
weekday = defaults ( w . E , 1 ) ;
if ( weekday < 1 || weekday > 7 ) {
weekdayOverflow = true ;
}
} else {
dow = config . _locale . _week . dow ;
doy = config . _locale . _week . doy ;
var curWeek = weekOfYear ( createLocal ( ) , dow , doy ) ;
weekYear = defaults ( w . gg , config . _a [ YEAR ] , curWeek . year ) ;
// Default to current week.
week = defaults ( w . w , curWeek . week ) ;
if ( w . d != null ) {
// weekday -- low day numbers are considered next week
weekday = w . d ;
if ( weekday < 0 || weekday > 6 ) {
weekdayOverflow = true ;
}
} else if ( w . e != null ) {
// local weekday -- counting starts from beginning of week
weekday = w . e + dow ;
if ( w . e < 0 || w . e > 6 ) {
weekdayOverflow = true ;
}
} else {
// default to beginning of week
weekday = dow ;
}
}
if ( week < 1 || week > weeksInYear ( weekYear , dow , doy ) ) {
getParsingFlags ( config ) . _overflowWeeks = true ;
} else if ( weekdayOverflow != null ) {
getParsingFlags ( config ) . _overflowWeekday = true ;
} else {
temp = dayOfYearFromWeeks ( weekYear , week , weekday , dow , doy ) ;
config . _a [ YEAR ] = temp . year ;
config . _dayOfYear = temp . dayOfYear ;
}
}
// iso 8601 regex
// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/ ;
var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/ ;
var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/ ;
var isoDates = [
[ 'YYYYYY-MM-DD' , /[+-]\d{6}-\d\d-\d\d/ ] ,
[ 'YYYY-MM-DD' , /\d{4}-\d\d-\d\d/ ] ,
[ 'GGGG-[W]WW-E' , /\d{4}-W\d\d-\d/ ] ,
[ 'GGGG-[W]WW' , /\d{4}-W\d\d/ , false ] ,
[ 'YYYY-DDD' , /\d{4}-\d{3}/ ] ,
[ 'YYYY-MM' , /\d{4}-\d\d/ , false ] ,
[ 'YYYYYYMMDD' , /[+-]\d{10}/ ] ,
[ 'YYYYMMDD' , /\d{8}/ ] ,
// YYYYMM is NOT allowed by the standard
[ 'GGGG[W]WWE' , /\d{4}W\d{3}/ ] ,
[ 'GGGG[W]WW' , /\d{4}W\d{2}/ , false ] ,
[ 'YYYYDDD' , /\d{7}/ ]
] ;
// iso time formats and regexes
var isoTimes = [
[ 'HH:mm:ss.SSSS' , /\d\d:\d\d:\d\d\.\d+/ ] ,
[ 'HH:mm:ss,SSSS' , /\d\d:\d\d:\d\d,\d+/ ] ,
[ 'HH:mm:ss' , /\d\d:\d\d:\d\d/ ] ,
[ 'HH:mm' , /\d\d:\d\d/ ] ,
[ 'HHmmss.SSSS' , /\d\d\d\d\d\d\.\d+/ ] ,
[ 'HHmmss,SSSS' , /\d\d\d\d\d\d,\d+/ ] ,
[ 'HHmmss' , /\d\d\d\d\d\d/ ] ,
[ 'HHmm' , /\d\d\d\d/ ] ,
[ 'HH' , /\d\d/ ]
] ;
var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i ;
// date from iso format
function configFromISO ( config ) {
var i , l ,
string = config . _i ,
match = extendedIsoRegex . exec ( string ) || basicIsoRegex . exec ( string ) ,
allowTime , dateFormat , timeFormat , tzFormat ;
if ( match ) {
getParsingFlags ( config ) . iso = true ;
for ( i = 0 , l = isoDates . length ; i < l ; i ++ ) {
if ( isoDates [ i ] [ 1 ] . exec ( match [ 1 ] ) ) {
dateFormat = isoDates [ i ] [ 0 ] ;
allowTime = isoDates [ i ] [ 2 ] !== false ;
break ;
}
}
if ( dateFormat == null ) {
config . _isValid = false ;
return ;
}
if ( match [ 3 ] ) {
for ( i = 0 , l = isoTimes . length ; i < l ; i ++ ) {
if ( isoTimes [ i ] [ 1 ] . exec ( match [ 3 ] ) ) {
// match[2] should be 'T' or space
timeFormat = ( match [ 2 ] || ' ' ) + isoTimes [ i ] [ 0 ] ;
break ;
}
}
if ( timeFormat == null ) {
config . _isValid = false ;
return ;
}
}
if ( ! allowTime && timeFormat != null ) {
config . _isValid = false ;
return ;
}
if ( match [ 4 ] ) {
if ( tzRegex . exec ( match [ 4 ] ) ) {
tzFormat = 'Z' ;
} else {
config . _isValid = false ;
return ;
}
}
config . _f = dateFormat + ( timeFormat || '' ) + ( tzFormat || '' ) ;
configFromStringAndFormat ( config ) ;
} else {
config . _isValid = false ;
}
}
// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/ ;
function extractFromRFC2822Strings ( yearStr , monthStr , dayStr , hourStr , minuteStr , secondStr ) {
var result = [
untruncateYear ( yearStr ) ,
defaultLocaleMonthsShort . indexOf ( monthStr ) ,
parseInt ( dayStr , 10 ) ,
parseInt ( hourStr , 10 ) ,
parseInt ( minuteStr , 10 )
] ;
if ( secondStr ) {
result . push ( parseInt ( secondStr , 10 ) ) ;
}
return result ;
}
function untruncateYear ( yearStr ) {
var year = parseInt ( yearStr , 10 ) ;
if ( year <= 49 ) {
return 2000 + year ;
} else if ( year <= 999 ) {
return 1900 + year ;
}
return year ;
}
function preprocessRFC2822 ( s ) {
// Remove comments and folding whitespace and replace multiple-spaces with a single space
return s . replace ( /\([^)]*\)|[\n\t]/g , ' ' ) . replace ( /(\s\s+)/g , ' ' ) . replace ( /^\s\s*/ , '' ) . replace ( /\s\s*$/ , '' ) ;
}
function checkWeekday ( weekdayStr , parsedInput , config ) {
if ( weekdayStr ) {
// TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.
var weekdayProvided = defaultLocaleWeekdaysShort . indexOf ( weekdayStr ) ,
weekdayActual = new Date ( parsedInput [ 0 ] , parsedInput [ 1 ] , parsedInput [ 2 ] ) . getDay ( ) ;
if ( weekdayProvided !== weekdayActual ) {
getParsingFlags ( config ) . weekdayMismatch = true ;
config . _isValid = false ;
return false ;
}
}
return true ;
}
var obsOffsets = {
UT : 0 ,
GMT : 0 ,
EDT : - 4 * 60 ,
EST : - 5 * 60 ,
CDT : - 5 * 60 ,
CST : - 6 * 60 ,
MDT : - 6 * 60 ,
MST : - 7 * 60 ,
PDT : - 7 * 60 ,
PST : - 8 * 60
} ;
function calculateOffset ( obsOffset , militaryOffset , numOffset ) {
if ( obsOffset ) {
return obsOffsets [ obsOffset ] ;
} else if ( militaryOffset ) {
// the only allowed military tz is Z
return 0 ;
} else {
var hm = parseInt ( numOffset , 10 ) ;
var m = hm % 100 , h = ( hm - m ) / 100 ;
return h * 60 + m ;
}
}
// date and time from ref 2822 format
function configFromRFC2822 ( config ) {
var match = rfc2822 . exec ( preprocessRFC2822 ( config . _i ) ) ;
if ( match ) {
var parsedArray = extractFromRFC2822Strings ( match [ 4 ] , match [ 3 ] , match [ 2 ] , match [ 5 ] , match [ 6 ] , match [ 7 ] ) ;
if ( ! checkWeekday ( match [ 1 ] , parsedArray , config ) ) {
return ;
}
config . _a = parsedArray ;
config . _tzm = calculateOffset ( match [ 8 ] , match [ 9 ] , match [ 10 ] ) ;
config . _d = createUTCDate . apply ( null , config . _a ) ;
config . _d . setUTCMinutes ( config . _d . getUTCMinutes ( ) - config . _tzm ) ;
getParsingFlags ( config ) . rfc2822 = true ;
} else {
config . _isValid = false ;
}
}
// date from iso format or fallback
function configFromString ( config ) {
var matched = aspNetJsonRegex . exec ( config . _i ) ;
if ( matched !== null ) {
config . _d = new Date ( + matched [ 1 ] ) ;
return ;
}
configFromISO ( config ) ;
if ( config . _isValid === false ) {
delete config . _isValid ;
} else {
return ;
}
configFromRFC2822 ( config ) ;
if ( config . _isValid === false ) {
delete config . _isValid ;
} else {
return ;
}
// Final attempt, use Input Fallback
hooks . createFromInputFallback ( config ) ;
}
hooks . createFromInputFallback = deprecate (
'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
'discouraged and will be removed in an upcoming major release. Please refer to ' +
'http://momentjs.com/guides/#/warnings/js-date/ for more info.' ,
function ( config ) {
config . _d = new Date ( config . _i + ( config . _useUTC ? ' UTC' : '' ) ) ;
}
) ;
// constant that refers to the ISO standard
hooks . ISO _8601 = function ( ) { } ;
// constant that refers to the RFC 2822 form
hooks . RFC _2822 = function ( ) { } ;
// date from string and format string
function configFromStringAndFormat ( config ) {
// TODO: Move this to another part of the creation flow to prevent circular deps
if ( config . _f === hooks . ISO _8601 ) {
configFromISO ( config ) ;
return ;
}
if ( config . _f === hooks . RFC _2822 ) {
configFromRFC2822 ( config ) ;
return ;
}
config . _a = [ ] ;
getParsingFlags ( config ) . empty = true ;
// This array is used to make a Date, either with `new Date` or `Date.UTC`
var string = '' + config . _i ,
i , parsedInput , tokens , token , skipped ,
stringLength = string . length ,
totalParsedInputLength = 0 ;
tokens = expandFormat ( config . _f , config . _locale ) . match ( formattingTokens ) || [ ] ;
for ( i = 0 ; i < tokens . length ; i ++ ) {
token = tokens [ i ] ;
parsedInput = ( string . match ( getParseRegexForToken ( token , config ) ) || [ ] ) [ 0 ] ;
// console.log('token', token, 'parsedInput', parsedInput,
// 'regex', getParseRegexForToken(token, config));
if ( parsedInput ) {
skipped = string . substr ( 0 , string . indexOf ( parsedInput ) ) ;
if ( skipped . length > 0 ) {
getParsingFlags ( config ) . unusedInput . push ( skipped ) ;
}
string = string . slice ( string . indexOf ( parsedInput ) + parsedInput . length ) ;
totalParsedInputLength += parsedInput . length ;
}
// don't parse if it's not a known token
if ( formatTokenFunctions [ token ] ) {
if ( parsedInput ) {
getParsingFlags ( config ) . empty = false ;
}
else {
getParsingFlags ( config ) . unusedTokens . push ( token ) ;
}
addTimeToArrayFromToken ( token , parsedInput , config ) ;
}
else if ( config . _strict && ! parsedInput ) {
getParsingFlags ( config ) . unusedTokens . push ( token ) ;
}
}
// add remaining unparsed input length to the string
getParsingFlags ( config ) . charsLeftOver = stringLength - totalParsedInputLength ;
if ( string . length > 0 ) {
getParsingFlags ( config ) . unusedInput . push ( string ) ;
}
// clear _12h flag if hour is <= 12
if ( config . _a [ HOUR ] <= 12 &&
getParsingFlags ( config ) . bigHour === true &&
config . _a [ HOUR ] > 0 ) {
getParsingFlags ( config ) . bigHour = undefined ;
}
getParsingFlags ( config ) . parsedDateParts = config . _a . slice ( 0 ) ;
getParsingFlags ( config ) . meridiem = config . _meridiem ;
// handle meridiem
config . _a [ HOUR ] = meridiemFixWrap ( config . _locale , config . _a [ HOUR ] , config . _meridiem ) ;
configFromArray ( config ) ;
checkOverflow ( config ) ;
}
function meridiemFixWrap ( locale , hour , meridiem ) {
var isPm ;
if ( meridiem == null ) {
// nothing to do
return hour ;
}
if ( locale . meridiemHour != null ) {
return locale . meridiemHour ( hour , meridiem ) ;
} else if ( locale . isPM != null ) {
// Fallback
isPm = locale . isPM ( meridiem ) ;
if ( isPm && hour < 12 ) {
hour += 12 ;
}
if ( ! isPm && hour === 12 ) {
hour = 0 ;
}
return hour ;
} else {
// this is not supposed to happen
return hour ;
}
}
// date from string and array of format strings
function configFromStringAndArray ( config ) {
var tempConfig ,
bestMoment ,
scoreToBeat ,
i ,
currentScore ;
if ( config . _f . length === 0 ) {
getParsingFlags ( config ) . invalidFormat = true ;
config . _d = new Date ( NaN ) ;
return ;
}
for ( i = 0 ; i < config . _f . length ; i ++ ) {
currentScore = 0 ;
tempConfig = copyConfig ( { } , config ) ;
if ( config . _useUTC != null ) {
tempConfig . _useUTC = config . _useUTC ;
}
tempConfig . _f = config . _f [ i ] ;
configFromStringAndFormat ( tempConfig ) ;
if ( ! isValid ( tempConfig ) ) {
continue ;
}
// if there is any input that was not parsed add a penalty for that format
currentScore += getParsingFlags ( tempConfig ) . charsLeftOver ;
//or tokens
currentScore += getParsingFlags ( tempConfig ) . unusedTokens . length * 10 ;
getParsingFlags ( tempConfig ) . score = currentScore ;
if ( scoreToBeat == null || currentScore < scoreToBeat ) {
scoreToBeat = currentScore ;
bestMoment = tempConfig ;
}
}
extend ( config , bestMoment || tempConfig ) ;
}
function configFromObject ( config ) {
if ( config . _d ) {
return ;
}
var i = normalizeObjectUnits ( config . _i ) ;
config . _a = map ( [ i . year , i . month , i . day || i . date , i . hour , i . minute , i . second , i . millisecond ] , function ( obj ) {
return obj && parseInt ( obj , 10 ) ;
} ) ;
configFromArray ( config ) ;
}
function createFromConfig ( config ) {
var res = new Moment ( checkOverflow ( prepareConfig ( config ) ) ) ;
if ( res . _nextDay ) {
// Adding is smart enough around DST
res . add ( 1 , 'd' ) ;
res . _nextDay = undefined ;
}
return res ;
}
function prepareConfig ( config ) {
var input = config . _i ,
format = config . _f ;
config . _locale = config . _locale || getLocale ( config . _l ) ;
if ( input === null || ( format === undefined && input === '' ) ) {
return createInvalid ( { nullInput : true } ) ;
}
if ( typeof input === 'string' ) {
config . _i = input = config . _locale . preparse ( input ) ;
}
if ( isMoment ( input ) ) {
return new Moment ( checkOverflow ( input ) ) ;
} else if ( isDate ( input ) ) {
config . _d = input ;
} else if ( isArray ( format ) ) {
configFromStringAndArray ( config ) ;
} else if ( format ) {
configFromStringAndFormat ( config ) ;
} else {
configFromInput ( config ) ;
}
if ( ! isValid ( config ) ) {
config . _d = null ;
}
return config ;
}
function configFromInput ( config ) {
var input = config . _i ;
if ( isUndefined ( input ) ) {
config . _d = new Date ( hooks . now ( ) ) ;
} else if ( isDate ( input ) ) {
config . _d = new Date ( input . valueOf ( ) ) ;
} else if ( typeof input === 'string' ) {
configFromString ( config ) ;
} else if ( isArray ( input ) ) {
config . _a = map ( input . slice ( 0 ) , function ( obj ) {
return parseInt ( obj , 10 ) ;
} ) ;
configFromArray ( config ) ;
} else if ( isObject ( input ) ) {
configFromObject ( config ) ;
} else if ( isNumber ( input ) ) {
// from milliseconds
config . _d = new Date ( input ) ;
} else {
hooks . createFromInputFallback ( config ) ;
}
}
function createLocalOrUTC ( input , format , locale , strict , isUTC ) {
var c = { } ;
if ( locale === true || locale === false ) {
strict = locale ;
locale = undefined ;
}
if ( ( isObject ( input ) && isObjectEmpty ( input ) ) ||
( isArray ( input ) && input . length === 0 ) ) {
input = undefined ;
}
// object construction must be done this way.
// https://github.com/moment/moment/issues/1423
c . _isAMomentObject = true ;
c . _useUTC = c . _isUTC = isUTC ;
c . _l = locale ;
c . _i = input ;
c . _f = format ;
c . _strict = strict ;
return createFromConfig ( c ) ;
}
function createLocal ( input , format , locale , strict ) {
return createLocalOrUTC ( input , format , locale , strict , false ) ;
}
var prototypeMin = deprecate (
'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/' ,
function ( ) {
var other = createLocal . apply ( null , arguments ) ;
if ( this . isValid ( ) && other . isValid ( ) ) {
return other < this ? this : other ;
} else {
return createInvalid ( ) ;
}
}
) ;
var prototypeMax = deprecate (
'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/' ,
function ( ) {
var other = createLocal . apply ( null , arguments ) ;
if ( this . isValid ( ) && other . isValid ( ) ) {
return other > this ? this : other ;
} else {
return createInvalid ( ) ;
}
}
) ;
// Pick a moment m from moments so that m[fn](other) is true for all
// other. This relies on the function fn to be transitive.
//
// moments should either be an array of moment objects or an array, whose
// first element is an array of moment objects.
function pickBy ( fn , moments ) {
var res , i ;
if ( moments . length === 1 && isArray ( moments [ 0 ] ) ) {
moments = moments [ 0 ] ;
}
if ( ! moments . length ) {
return createLocal ( ) ;
}
res = moments [ 0 ] ;
for ( i = 1 ; i < moments . length ; ++ i ) {
if ( ! moments [ i ] . isValid ( ) || moments [ i ] [ fn ] ( res ) ) {
res = moments [ i ] ;
}
}
return res ;
}
// TODO: Use [].sort instead?
function min ( ) {
var args = [ ] . slice . call ( arguments , 0 ) ;
return pickBy ( 'isBefore' , args ) ;
}
function max ( ) {
var args = [ ] . slice . call ( arguments , 0 ) ;
return pickBy ( 'isAfter' , args ) ;
}
var now = function ( ) {
return Date . now ? Date . now ( ) : + ( new Date ( ) ) ;
} ;
var ordering = [ 'year' , 'quarter' , 'month' , 'week' , 'day' , 'hour' , 'minute' , 'second' , 'millisecond' ] ;
function isDurationValid ( m ) {
for ( var key in m ) {
if ( ! ( indexOf . call ( ordering , key ) !== - 1 && ( m [ key ] == null || ! isNaN ( m [ key ] ) ) ) ) {
return false ;
}
}
var unitHasDecimal = false ;
for ( var i = 0 ; i < ordering . length ; ++ i ) {
if ( m [ ordering [ i ] ] ) {
if ( unitHasDecimal ) {
return false ; // only allow non-integers for smallest unit
}
if ( parseFloat ( m [ ordering [ i ] ] ) !== toInt ( m [ ordering [ i ] ] ) ) {
unitHasDecimal = true ;
}
}
}
return true ;
}
function isValid$1 ( ) {
return this . _isValid ;
}
function createInvalid$1 ( ) {
return createDuration ( NaN ) ;
}
function Duration ( duration ) {
var normalizedInput = normalizeObjectUnits ( duration ) ,
years = normalizedInput . year || 0 ,
quarters = normalizedInput . quarter || 0 ,
months = normalizedInput . month || 0 ,
weeks = normalizedInput . week || normalizedInput . isoWeek || 0 ,
days = normalizedInput . day || 0 ,
hours = normalizedInput . hour || 0 ,
minutes = normalizedInput . minute || 0 ,
seconds = normalizedInput . second || 0 ,
milliseconds = normalizedInput . millisecond || 0 ;
this . _isValid = isDurationValid ( normalizedInput ) ;
// representation for dateAddRemove
this . _milliseconds = + milliseconds +
seconds * 1e3 + // 1000
minutes * 6e4 + // 1000 * 60
hours * 1000 * 60 * 60 ; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
// Because of dateAddRemove treats 24 hours as different from a
// day when working around DST, we need to store them separately
this . _days = + days +
weeks * 7 ;
// It is impossible to translate months into days without knowing
// which months you are are talking about, so we have to store
// it separately.
this . _months = + months +
quarters * 3 +
years * 12 ;
this . _data = { } ;
this . _locale = getLocale ( ) ;
this . _bubble ( ) ;
}
function isDuration ( obj ) {
return obj instanceof Duration ;
}
function absRound ( number ) {
if ( number < 0 ) {
return Math . round ( - 1 * number ) * - 1 ;
} else {
return Math . round ( number ) ;
}
}
// FORMATTING
function offset ( token , separator ) {
addFormatToken ( token , 0 , 0 , function ( ) {
var offset = this . utcOffset ( ) ;
var sign = '+' ;
if ( offset < 0 ) {
offset = - offset ;
sign = '-' ;
}
return sign + zeroFill ( ~ ~ ( offset / 60 ) , 2 ) + separator + zeroFill ( ~ ~ ( offset ) % 60 , 2 ) ;
} ) ;
}
offset ( 'Z' , ':' ) ;
offset ( 'ZZ' , '' ) ;
// PARSING
addRegexToken ( 'Z' , matchShortOffset ) ;
addRegexToken ( 'ZZ' , matchShortOffset ) ;
addParseToken ( [ 'Z' , 'ZZ' ] , function ( input , array , config ) {
config . _useUTC = true ;
config . _tzm = offsetFromString ( matchShortOffset , input ) ;
} ) ;
// HELPERS
// timezone chunker
// '+10:00' > ['10', '00']
// '-1530' > ['-15', '30']
var chunkOffset = /([\+\-]|\d\d)/gi ;
function offsetFromString ( matcher , string ) {
var matches = ( string || '' ) . match ( matcher ) ;
if ( matches === null ) {
return null ;
}
var chunk = matches [ matches . length - 1 ] || [ ] ;
var parts = ( chunk + '' ) . match ( chunkOffset ) || [ '-' , 0 , 0 ] ;
var minutes = + ( parts [ 1 ] * 60 ) + toInt ( parts [ 2 ] ) ;
return minutes === 0 ?
0 :
parts [ 0 ] === '+' ? minutes : - minutes ;
}
// Return a moment from input, that is local/utc/zone equivalent to model.
function cloneWithOffset ( input , model ) {
var res , diff ;
if ( model . _isUTC ) {
res = model . clone ( ) ;
diff = ( isMoment ( input ) || isDate ( input ) ? input . valueOf ( ) : createLocal ( input ) . valueOf ( ) ) - res . valueOf ( ) ;
// Use low-level api, because this fn is low-level api.
res . _d . setTime ( res . _d . valueOf ( ) + diff ) ;
hooks . updateOffset ( res , false ) ;
return res ;
} else {
return createLocal ( input ) . local ( ) ;
}
}
function getDateOffset ( m ) {
// On Firefox.24 Date#getTimezoneOffset returns a floating point.
// https://github.com/moment/moment/pull/1871
return - Math . round ( m . _d . getTimezoneOffset ( ) / 15 ) * 15 ;
}
// HOOKS
// This function will be called whenever a moment is mutated.
// It is intended to keep the offset in sync with the timezone.
hooks . updateOffset = function ( ) { } ;
// MOMENTS
// keepLocalTime = true means only change the timezone, without
// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
// +0200, so we adjust the time as needed, to be valid.
//
// Keeping the time actually adds/subtracts (one hour)
// from the actual represented time. That is why we call updateOffset
// a second time. In case it wants us to change the offset again
// _changeInProgress == true case, then we have to adjust, because
// there is no such time in the given timezone.
function getSetOffset ( input , keepLocalTime , keepMinutes ) {
var offset = this . _offset || 0 ,
localAdjust ;
if ( ! this . isValid ( ) ) {
return input != null ? this : NaN ;
}
if ( input != null ) {
if ( typeof input === 'string' ) {
input = offsetFromString ( matchShortOffset , input ) ;
if ( input === null ) {
return this ;
}
} else if ( Math . abs ( input ) < 16 && ! keepMinutes ) {
input = input * 60 ;
}
if ( ! this . _isUTC && keepLocalTime ) {
localAdjust = getDateOffset ( this ) ;
}
this . _offset = input ;
this . _isUTC = true ;
if ( localAdjust != null ) {
this . add ( localAdjust , 'm' ) ;
}
if ( offset !== input ) {
if ( ! keepLocalTime || this . _changeInProgress ) {
addSubtract ( this , createDuration ( input - offset , 'm' ) , 1 , false ) ;
} else if ( ! this . _changeInProgress ) {
this . _changeInProgress = true ;
hooks . updateOffset ( this , true ) ;
this . _changeInProgress = null ;
}
}
return this ;
} else {
return this . _isUTC ? offset : getDateOffset ( this ) ;
}
}
function getSetZone ( input , keepLocalTime ) {
if ( input != null ) {
if ( typeof input !== 'string' ) {
input = - input ;
}
this . utcOffset ( input , keepLocalTime ) ;
return this ;
} else {
return - this . utcOffset ( ) ;
}
}
function setOffsetToUTC ( keepLocalTime ) {
return this . utcOffset ( 0 , keepLocalTime ) ;
}
function setOffsetToLocal ( keepLocalTime ) {
if ( this . _isUTC ) {
this . utcOffset ( 0 , keepLocalTime ) ;
this . _isUTC = false ;
if ( keepLocalTime ) {
this . subtract ( getDateOffset ( this ) , 'm' ) ;
}
}
return this ;
}
function setOffsetToParsedOffset ( ) {
if ( this . _tzm != null ) {
this . utcOffset ( this . _tzm , false , true ) ;
} else if ( typeof this . _i === 'string' ) {
var tZone = offsetFromString ( matchOffset , this . _i ) ;
if ( tZone != null ) {
this . utcOffset ( tZone ) ;
}
else {
this . utcOffset ( 0 , true ) ;
}
}
return this ;
}
function hasAlignedHourOffset ( input ) {
if ( ! this . isValid ( ) ) {
return false ;
}
input = input ? createLocal ( input ) . utcOffset ( ) : 0 ;
return ( this . utcOffset ( ) - input ) % 60 === 0 ;
}
function isDaylightSavingTime ( ) {
return (
this . utcOffset ( ) > this . clone ( ) . month ( 0 ) . utcOffset ( ) ||
this . utcOffset ( ) > this . clone ( ) . month ( 5 ) . utcOffset ( )
) ;
}
function isDaylightSavingTimeShifted ( ) {
if ( ! isUndefined ( this . _isDSTShifted ) ) {
return this . _isDSTShifted ;
}
var c = { } ;
copyConfig ( c , this ) ;
c = prepareConfig ( c ) ;
if ( c . _a ) {
var other = c . _isUTC ? createUTC ( c . _a ) : createLocal ( c . _a ) ;
this . _isDSTShifted = this . isValid ( ) &&
compareArrays ( c . _a , other . toArray ( ) ) > 0 ;
} else {
this . _isDSTShifted = false ;
}
return this . _isDSTShifted ;
}
function isLocal ( ) {
return this . isValid ( ) ? ! this . _isUTC : false ;
}
function isUtcOffset ( ) {
return this . isValid ( ) ? this . _isUTC : false ;
}
function isUtc ( ) {
return this . isValid ( ) ? this . _isUTC && this . _offset === 0 : false ;
}
// ASP.NET json date format regex
var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/ ;
// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
// and further modified to allow for strings containing both week and day
var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/ ;
function createDuration ( input , key ) {
var duration = input ,
// matching against regexp is expensive, do it on demand
match = null ,
sign ,
ret ,
diffRes ;
if ( isDuration ( input ) ) {
duration = {
ms : input . _milliseconds ,
d : input . _days ,
M : input . _months
} ;
} else if ( isNumber ( input ) ) {
duration = { } ;
if ( key ) {
duration [ key ] = input ;
} else {
duration . milliseconds = input ;
}
} else if ( ! ! ( match = aspNetRegex . exec ( input ) ) ) {
sign = ( match [ 1 ] === '-' ) ? - 1 : 1 ;
duration = {
y : 0 ,
d : toInt ( match [ DATE ] ) * sign ,
h : toInt ( match [ HOUR ] ) * sign ,
m : toInt ( match [ MINUTE ] ) * sign ,
s : toInt ( match [ SECOND ] ) * sign ,
ms : toInt ( absRound ( match [ MILLISECOND ] * 1000 ) ) * sign // the millisecond decimal point is included in the match
} ;
} else if ( ! ! ( match = isoRegex . exec ( input ) ) ) {
sign = ( match [ 1 ] === '-' ) ? - 1 : 1 ;
duration = {
y : parseIso ( match [ 2 ] , sign ) ,
M : parseIso ( match [ 3 ] , sign ) ,
w : parseIso ( match [ 4 ] , sign ) ,
d : parseIso ( match [ 5 ] , sign ) ,
h : parseIso ( match [ 6 ] , sign ) ,
m : parseIso ( match [ 7 ] , sign ) ,
s : parseIso ( match [ 8 ] , sign )
} ;
} else if ( duration == null ) { // checks for null or undefined
duration = { } ;
} else if ( typeof duration === 'object' && ( 'from' in duration || 'to' in duration ) ) {
diffRes = momentsDifference ( createLocal ( duration . from ) , createLocal ( duration . to ) ) ;
duration = { } ;
duration . ms = diffRes . milliseconds ;
duration . M = diffRes . months ;
}
ret = new Duration ( duration ) ;
if ( isDuration ( input ) && hasOwnProp ( input , '_locale' ) ) {
ret . _locale = input . _locale ;
}
return ret ;
}
createDuration . fn = Duration . prototype ;
createDuration . invalid = createInvalid$1 ;
function parseIso ( inp , sign ) {
// We'd normally use ~~inp for this, but unfortunately it also
// converts floats to ints.
// inp may be undefined, so careful calling replace on it.
var res = inp && parseFloat ( inp . replace ( ',' , '.' ) ) ;
// apply sign while we're at it
return ( isNaN ( res ) ? 0 : res ) * sign ;
}
function positiveMomentsDifference ( base , other ) {
var res = { } ;
res . months = other . month ( ) - base . month ( ) +
( other . year ( ) - base . year ( ) ) * 12 ;
if ( base . clone ( ) . add ( res . months , 'M' ) . isAfter ( other ) ) {
-- res . months ;
}
res . milliseconds = + other - + ( base . clone ( ) . add ( res . months , 'M' ) ) ;
return res ;
}
function momentsDifference ( base , other ) {
var res ;
if ( ! ( base . isValid ( ) && other . isValid ( ) ) ) {
return { milliseconds : 0 , months : 0 } ;
}
other = cloneWithOffset ( other , base ) ;
if ( base . isBefore ( other ) ) {
res = positiveMomentsDifference ( base , other ) ;
} else {
res = positiveMomentsDifference ( other , base ) ;
res . milliseconds = - res . milliseconds ;
res . months = - res . months ;
}
return res ;
}
// TODO: remove 'name' arg after deprecation is removed
function createAdder ( direction , name ) {
return function ( val , period ) {
var dur , tmp ;
//invert the arguments, but complain about it
if ( period !== null && ! isNaN ( + period ) ) {
deprecateSimple ( name , 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +
'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.' ) ;
tmp = val ; val = period ; period = tmp ;
}
val = typeof val === 'string' ? + val : val ;
dur = createDuration ( val , period ) ;
addSubtract ( this , dur , direction ) ;
return this ;
} ;
}
function addSubtract ( mom , duration , isAdding , updateOffset ) {
var milliseconds = duration . _milliseconds ,
days = absRound ( duration . _days ) ,
months = absRound ( duration . _months ) ;
if ( ! mom . isValid ( ) ) {
// No op
return ;
}
updateOffset = updateOffset == null ? true : updateOffset ;
if ( months ) {
setMonth ( mom , get ( mom , 'Month' ) + months * isAdding ) ;
}
if ( days ) {
set$1 ( mom , 'Date' , get ( mom , 'Date' ) + days * isAdding ) ;
}
if ( milliseconds ) {
mom . _d . setTime ( mom . _d . valueOf ( ) + milliseconds * isAdding ) ;
}
if ( updateOffset ) {
hooks . updateOffset ( mom , days || months ) ;
}
}
var add = createAdder ( 1 , 'add' ) ;
var subtract = createAdder ( - 1 , 'subtract' ) ;
function getCalendarFormat ( myMoment , now ) {
var diff = myMoment . diff ( now , 'days' , true ) ;
return diff < - 6 ? 'sameElse' :
diff < - 1 ? 'lastWeek' :
diff < 0 ? 'lastDay' :
diff < 1 ? 'sameDay' :
diff < 2 ? 'nextDay' :
diff < 7 ? 'nextWeek' : 'sameElse' ;
}
function calendar$1 ( time , formats ) {
// We want to compare the start of today, vs this.
// Getting start-of-today depends on whether we're local/utc/offset or not.
var now = time || createLocal ( ) ,
sod = cloneWithOffset ( now , this ) . startOf ( 'day' ) ,
format = hooks . calendarFormat ( this , sod ) || 'sameElse' ;
var output = formats && ( isFunction ( formats [ format ] ) ? formats [ format ] . call ( this , now ) : formats [ format ] ) ;
return this . format ( output || this . localeData ( ) . calendar ( format , this , createLocal ( now ) ) ) ;
}
function clone ( ) {
return new Moment ( this ) ;
}
function isAfter ( input , units ) {
var localInput = isMoment ( input ) ? input : createLocal ( input ) ;
if ( ! ( this . isValid ( ) && localInput . isValid ( ) ) ) {
return false ;
}
units = normalizeUnits ( units ) || 'millisecond' ;
if ( units === 'millisecond' ) {
return this . valueOf ( ) > localInput . valueOf ( ) ;
} else {
return localInput . valueOf ( ) < this . clone ( ) . startOf ( units ) . valueOf ( ) ;
}
}
function isBefore ( input , units ) {
var localInput = isMoment ( input ) ? input : createLocal ( input ) ;
if ( ! ( this . isValid ( ) && localInput . isValid ( ) ) ) {
return false ;
}
units = normalizeUnits ( units ) || 'millisecond' ;
if ( units === 'millisecond' ) {
return this . valueOf ( ) < localInput . valueOf ( ) ;
} else {
return this . clone ( ) . endOf ( units ) . valueOf ( ) < localInput . valueOf ( ) ;
}
}
function isBetween ( from , to , units , inclusivity ) {
var localFrom = isMoment ( from ) ? from : createLocal ( from ) ,
localTo = isMoment ( to ) ? to : createLocal ( to ) ;
if ( ! ( this . isValid ( ) && localFrom . isValid ( ) && localTo . isValid ( ) ) ) {
return false ;
}
inclusivity = inclusivity || '()' ;
return ( inclusivity [ 0 ] === '(' ? this . isAfter ( localFrom , units ) : ! this . isBefore ( localFrom , units ) ) &&
( inclusivity [ 1 ] === ')' ? this . isBefore ( localTo , units ) : ! this . isAfter ( localTo , units ) ) ;
}
function isSame ( input , units ) {
var localInput = isMoment ( input ) ? input : createLocal ( input ) ,
inputMs ;
if ( ! ( this . isValid ( ) && localInput . isValid ( ) ) ) {
return false ;
}
units = normalizeUnits ( units ) || 'millisecond' ;
if ( units === 'millisecond' ) {
return this . valueOf ( ) === localInput . valueOf ( ) ;
} else {
inputMs = localInput . valueOf ( ) ;
return this . clone ( ) . startOf ( units ) . valueOf ( ) <= inputMs && inputMs <= this . clone ( ) . endOf ( units ) . valueOf ( ) ;
}
}
function isSameOrAfter ( input , units ) {
return this . isSame ( input , units ) || this . isAfter ( input , units ) ;
}
function isSameOrBefore ( input , units ) {
return this . isSame ( input , units ) || this . isBefore ( input , units ) ;
}
function diff ( input , units , asFloat ) {
var that ,
zoneDelta ,
output ;
if ( ! this . isValid ( ) ) {
return NaN ;
}
that = cloneWithOffset ( input , this ) ;
if ( ! that . isValid ( ) ) {
return NaN ;
}
zoneDelta = ( that . utcOffset ( ) - this . utcOffset ( ) ) * 6e4 ;
units = normalizeUnits ( units ) ;
switch ( units ) {
case 'year' : output = monthDiff ( this , that ) / 12 ; break ;
case 'month' : output = monthDiff ( this , that ) ; break ;
case 'quarter' : output = monthDiff ( this , that ) / 3 ; break ;
case 'second' : output = ( this - that ) / 1e3 ; break ; // 1000
case 'minute' : output = ( this - that ) / 6e4 ; break ; // 1000 * 60
case 'hour' : output = ( this - that ) / 36e5 ; break ; // 1000 * 60 * 60
case 'day' : output = ( this - that - zoneDelta ) / 864e5 ; break ; // 1000 * 60 * 60 * 24, negate dst
case 'week' : output = ( this - that - zoneDelta ) / 6048e5 ; break ; // 1000 * 60 * 60 * 24 * 7, negate dst
default : output = this - that ;
}
return asFloat ? output : absFloor ( output ) ;
}
function monthDiff ( a , b ) {
// difference in months
var wholeMonthDiff = ( ( b . year ( ) - a . year ( ) ) * 12 ) + ( b . month ( ) - a . month ( ) ) ,
// b is in (anchor - 1 month, anchor + 1 month)
anchor = a . clone ( ) . add ( wholeMonthDiff , 'months' ) ,
anchor2 , adjust ;
if ( b - anchor < 0 ) {
anchor2 = a . clone ( ) . add ( wholeMonthDiff - 1 , 'months' ) ;
// linear across the month
adjust = ( b - anchor ) / ( anchor - anchor2 ) ;
} else {
anchor2 = a . clone ( ) . add ( wholeMonthDiff + 1 , 'months' ) ;
// linear across the month
adjust = ( b - anchor ) / ( anchor2 - anchor ) ;
}
//check for negative zero, return zero if negative zero
return - ( wholeMonthDiff + adjust ) || 0 ;
}
hooks . defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ' ;
hooks . defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]' ;
function toString ( ) {
return this . clone ( ) . locale ( 'en' ) . format ( 'ddd MMM DD YYYY HH:mm:ss [GMT]ZZ' ) ;
}
function toISOString ( keepOffset ) {
if ( ! this . isValid ( ) ) {
return null ;
}
var utc = keepOffset !== true ;
var m = utc ? this . clone ( ) . utc ( ) : this ;
if ( m . year ( ) < 0 || m . year ( ) > 9999 ) {
return formatMoment ( m , utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ' ) ;
}
if ( isFunction ( Date . prototype . toISOString ) ) {
// native implementation is ~50x faster, use it when we can
if ( utc ) {
return this . toDate ( ) . toISOString ( ) ;
} else {
return new Date ( this . valueOf ( ) + this . utcOffset ( ) * 60 * 1000 ) . toISOString ( ) . replace ( 'Z' , formatMoment ( m , 'Z' ) ) ;
}
}
return formatMoment ( m , utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ' ) ;
}
/ * *
* Return a human readable representation of a moment that can
* also be evaluated to get a new moment which is the same
*
* @ link https : //nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
* /
function inspect ( ) {
if ( ! this . isValid ( ) ) {
return 'moment.invalid(/* ' + this . _i + ' */)' ;
}
var func = 'moment' ;
var zone = '' ;
if ( ! this . isLocal ( ) ) {
func = this . utcOffset ( ) === 0 ? 'moment.utc' : 'moment.parseZone' ;
zone = 'Z' ;
}
var prefix = '[' + func + '("]' ;
var year = ( 0 <= this . year ( ) && this . year ( ) <= 9999 ) ? 'YYYY' : 'YYYYYY' ;
var datetime = '-MM-DD[T]HH:mm:ss.SSS' ;
var suffix = zone + '[")]' ;
return this . format ( prefix + year + datetime + suffix ) ;
}
function format ( inputString ) {
if ( ! inputString ) {
inputString = this . isUtc ( ) ? hooks . defaultFormatUtc : hooks . defaultFormat ;
}
var output = formatMoment ( this , inputString ) ;
return this . localeData ( ) . postformat ( output ) ;
}
function from ( time , withoutSuffix ) {
if ( this . isValid ( ) &&
( ( isMoment ( time ) && time . isValid ( ) ) ||
createLocal ( time ) . isValid ( ) ) ) {
return createDuration ( { to : this , from : time } ) . locale ( this . locale ( ) ) . humanize ( ! withoutSuffix ) ;
} else {
return this . localeData ( ) . invalidDate ( ) ;
}
}
function fromNow ( withoutSuffix ) {
return this . from ( createLocal ( ) , withoutSuffix ) ;
}
function to ( time , withoutSuffix ) {
if ( this . isValid ( ) &&
( ( isMoment ( time ) && time . isValid ( ) ) ||
createLocal ( time ) . isValid ( ) ) ) {
return createDuration ( { from : this , to : time } ) . locale ( this . locale ( ) ) . humanize ( ! withoutSuffix ) ;
} else {
return this . localeData ( ) . invalidDate ( ) ;
}
}
function toNow ( withoutSuffix ) {
return this . to ( createLocal ( ) , withoutSuffix ) ;
}
// If passed a locale key, it will set the locale for this
// instance. Otherwise, it will return the locale configuration
// variables for this instance.
function locale ( key ) {
var newLocaleData ;
if ( key === undefined ) {
return this . _locale . _abbr ;
} else {
newLocaleData = getLocale ( key ) ;
if ( newLocaleData != null ) {
this . _locale = newLocaleData ;
}
return this ;
}
}
var lang = deprecate (
'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.' ,
function ( key ) {
if ( key === undefined ) {
return this . localeData ( ) ;
} else {
return this . locale ( key ) ;
}
}
) ;
function localeData ( ) {
return this . _locale ;
}
var MS _PER _SECOND = 1000 ;
var MS _PER _MINUTE = 60 * MS _PER _SECOND ;
var MS _PER _HOUR = 60 * MS _PER _MINUTE ;
var MS _PER _400 _YEARS = ( 365 * 400 + 97 ) * 24 * MS _PER _HOUR ;
// actual modulo - handles negative numbers (for dates before 1970):
function mod$1 ( dividend , divisor ) {
return ( dividend % divisor + divisor ) % divisor ;
}
function localStartOfDate ( y , m , d ) {
// the date constructor remaps years 0-99 to 1900-1999
if ( y < 100 && y >= 0 ) {
// preserve leap years using a full 400 year cycle, then reset
return new Date ( y + 400 , m , d ) - MS _PER _400 _YEARS ;
} else {
return new Date ( y , m , d ) . valueOf ( ) ;
}
}
function utcStartOfDate ( y , m , d ) {
// Date.UTC remaps years 0-99 to 1900-1999
if ( y < 100 && y >= 0 ) {
// preserve leap years using a full 400 year cycle, then reset
return Date . UTC ( y + 400 , m , d ) - MS _PER _400 _YEARS ;
} else {
return Date . UTC ( y , m , d ) ;
}
}
function startOf ( units ) {
var time ;
units = normalizeUnits ( units ) ;
if ( units === undefined || units === 'millisecond' || ! this . isValid ( ) ) {
return this ;
}
var startOfDate = this . _isUTC ? utcStartOfDate : localStartOfDate ;
switch ( units ) {
case 'year' :
time = startOfDate ( this . year ( ) , 0 , 1 ) ;
break ;
case 'quarter' :
time = startOfDate ( this . year ( ) , this . month ( ) - this . month ( ) % 3 , 1 ) ;
break ;
case 'month' :
time = startOfDate ( this . year ( ) , this . month ( ) , 1 ) ;
break ;
case 'week' :
time = startOfDate ( this . year ( ) , this . month ( ) , this . date ( ) - this . weekday ( ) ) ;
break ;
case 'isoWeek' :
time = startOfDate ( this . year ( ) , this . month ( ) , this . date ( ) - ( this . isoWeekday ( ) - 1 ) ) ;
break ;
case 'day' :
case 'date' :
time = startOfDate ( this . year ( ) , this . month ( ) , this . date ( ) ) ;
break ;
case 'hour' :
time = this . _d . valueOf ( ) ;
time -= mod$1 ( time + ( this . _isUTC ? 0 : this . utcOffset ( ) * MS _PER _MINUTE ) , MS _PER _HOUR ) ;
break ;
case 'minute' :
time = this . _d . valueOf ( ) ;
time -= mod$1 ( time , MS _PER _MINUTE ) ;
break ;
case 'second' :
time = this . _d . valueOf ( ) ;
time -= mod$1 ( time , MS _PER _SECOND ) ;
break ;
}
this . _d . setTime ( time ) ;
hooks . updateOffset ( this , true ) ;
return this ;
}
function endOf ( units ) {
var time ;
units = normalizeUnits ( units ) ;
if ( units === undefined || units === 'millisecond' || ! this . isValid ( ) ) {
return this ;
}
var startOfDate = this . _isUTC ? utcStartOfDate : localStartOfDate ;
switch ( units ) {
case 'year' :
time = startOfDate ( this . year ( ) + 1 , 0 , 1 ) - 1 ;
break ;
case 'quarter' :
time = startOfDate ( this . year ( ) , this . month ( ) - this . month ( ) % 3 + 3 , 1 ) - 1 ;
break ;
case 'month' :
time = startOfDate ( this . year ( ) , this . month ( ) + 1 , 1 ) - 1 ;
break ;
case 'week' :
time = startOfDate ( this . year ( ) , this . month ( ) , this . date ( ) - this . weekday ( ) + 7 ) - 1 ;
break ;
case 'isoWeek' :
time = startOfDate ( this . year ( ) , this . month ( ) , this . date ( ) - ( this . isoWeekday ( ) - 1 ) + 7 ) - 1 ;
break ;
case 'day' :
case 'date' :
time = startOfDate ( this . year ( ) , this . month ( ) , this . date ( ) + 1 ) - 1 ;
break ;
case 'hour' :
time = this . _d . valueOf ( ) ;
time += MS _PER _HOUR - mod$1 ( time + ( this . _isUTC ? 0 : this . utcOffset ( ) * MS _PER _MINUTE ) , MS _PER _HOUR ) - 1 ;
break ;
case 'minute' :
time = this . _d . valueOf ( ) ;
time += MS _PER _MINUTE - mod$1 ( time , MS _PER _MINUTE ) - 1 ;
break ;
case 'second' :
time = this . _d . valueOf ( ) ;
time += MS _PER _SECOND - mod$1 ( time , MS _PER _SECOND ) - 1 ;
break ;
}
this . _d . setTime ( time ) ;
hooks . updateOffset ( this , true ) ;
return this ;
}
function valueOf ( ) {
return this . _d . valueOf ( ) - ( ( this . _offset || 0 ) * 60000 ) ;
}
function unix ( ) {
return Math . floor ( this . valueOf ( ) / 1000 ) ;
}
function toDate ( ) {
return new Date ( this . valueOf ( ) ) ;
}
function toArray ( ) {
var m = this ;
return [ m . year ( ) , m . month ( ) , m . date ( ) , m . hour ( ) , m . minute ( ) , m . second ( ) , m . millisecond ( ) ] ;
}
function toObject ( ) {
var m = this ;
return {
years : m . year ( ) ,
months : m . month ( ) ,
date : m . date ( ) ,
hours : m . hours ( ) ,
minutes : m . minutes ( ) ,
seconds : m . seconds ( ) ,
milliseconds : m . milliseconds ( )
} ;
}
function toJSON ( ) {
// new Date(NaN).toJSON() === null
return this . isValid ( ) ? this . toISOString ( ) : null ;
}
function isValid$2 ( ) {
return isValid ( this ) ;
}
function parsingFlags ( ) {
return extend ( { } , getParsingFlags ( this ) ) ;
}
function invalidAt ( ) {
return getParsingFlags ( this ) . overflow ;
}
function creationData ( ) {
return {
input : this . _i ,
format : this . _f ,
locale : this . _locale ,
isUTC : this . _isUTC ,
strict : this . _strict
} ;
}
// FORMATTING
addFormatToken ( 0 , [ 'gg' , 2 ] , 0 , function ( ) {
return this . weekYear ( ) % 100 ;
} ) ;
addFormatToken ( 0 , [ 'GG' , 2 ] , 0 , function ( ) {
return this . isoWeekYear ( ) % 100 ;
} ) ;
function addWeekYearFormatToken ( token , getter ) {
addFormatToken ( 0 , [ token , token . length ] , 0 , getter ) ;
}
addWeekYearFormatToken ( 'gggg' , 'weekYear' ) ;
addWeekYearFormatToken ( 'ggggg' , 'weekYear' ) ;
addWeekYearFormatToken ( 'GGGG' , 'isoWeekYear' ) ;
addWeekYearFormatToken ( 'GGGGG' , 'isoWeekYear' ) ;
// ALIASES
addUnitAlias ( 'weekYear' , 'gg' ) ;
addUnitAlias ( 'isoWeekYear' , 'GG' ) ;
// PRIORITY
addUnitPriority ( 'weekYear' , 1 ) ;
addUnitPriority ( 'isoWeekYear' , 1 ) ;
// PARSING
addRegexToken ( 'G' , matchSigned ) ;
addRegexToken ( 'g' , matchSigned ) ;
addRegexToken ( 'GG' , match1to2 , match2 ) ;
addRegexToken ( 'gg' , match1to2 , match2 ) ;
addRegexToken ( 'GGGG' , match1to4 , match4 ) ;
addRegexToken ( 'gggg' , match1to4 , match4 ) ;
addRegexToken ( 'GGGGG' , match1to6 , match6 ) ;
addRegexToken ( 'ggggg' , match1to6 , match6 ) ;
addWeekParseToken ( [ 'gggg' , 'ggggg' , 'GGGG' , 'GGGGG' ] , function ( input , week , config , token ) {
week [ token . substr ( 0 , 2 ) ] = toInt ( input ) ;
} ) ;
addWeekParseToken ( [ 'gg' , 'GG' ] , function ( input , week , config , token ) {
week [ token ] = hooks . parseTwoDigitYear ( input ) ;
} ) ;
// MOMENTS
function getSetWeekYear ( input ) {
return getSetWeekYearHelper . call ( this ,
input ,
this . week ( ) ,
this . weekday ( ) ,
this . localeData ( ) . _week . dow ,
this . localeData ( ) . _week . doy ) ;
}
function getSetISOWeekYear ( input ) {
return getSetWeekYearHelper . call ( this ,
input , this . isoWeek ( ) , this . isoWeekday ( ) , 1 , 4 ) ;
}
function getISOWeeksInYear ( ) {
return weeksInYear ( this . year ( ) , 1 , 4 ) ;
}
function getWeeksInYear ( ) {
var weekInfo = this . localeData ( ) . _week ;
return weeksInYear ( this . year ( ) , weekInfo . dow , weekInfo . doy ) ;
}
function getSetWeekYearHelper ( input , week , weekday , dow , doy ) {
var weeksTarget ;
if ( input == null ) {
return weekOfYear ( this , dow , doy ) . year ;
} else {
weeksTarget = weeksInYear ( input , dow , doy ) ;
if ( week > weeksTarget ) {
week = weeksTarget ;
}
return setWeekAll . call ( this , input , week , weekday , dow , doy ) ;
}
}
function setWeekAll ( weekYear , week , weekday , dow , doy ) {
var dayOfYearData = dayOfYearFromWeeks ( weekYear , week , weekday , dow , doy ) ,
date = createUTCDate ( dayOfYearData . year , 0 , dayOfYearData . dayOfYear ) ;
this . year ( date . getUTCFullYear ( ) ) ;
this . month ( date . getUTCMonth ( ) ) ;
this . date ( date . getUTCDate ( ) ) ;
return this ;
}
// FORMATTING
addFormatToken ( 'Q' , 0 , 'Qo' , 'quarter' ) ;
// ALIASES
addUnitAlias ( 'quarter' , 'Q' ) ;
// PRIORITY
addUnitPriority ( 'quarter' , 7 ) ;
// PARSING
addRegexToken ( 'Q' , match1 ) ;
addParseToken ( 'Q' , function ( input , array ) {
array [ MONTH ] = ( toInt ( input ) - 1 ) * 3 ;
} ) ;
// MOMENTS
function getSetQuarter ( input ) {
return input == null ? Math . ceil ( ( this . month ( ) + 1 ) / 3 ) : this . month ( ( input - 1 ) * 3 + this . month ( ) % 3 ) ;
}
// FORMATTING
addFormatToken ( 'D' , [ 'DD' , 2 ] , 'Do' , 'date' ) ;
// ALIASES
addUnitAlias ( 'date' , 'D' ) ;
// PRIORITY
addUnitPriority ( 'date' , 9 ) ;
// PARSING
addRegexToken ( 'D' , match1to2 ) ;
addRegexToken ( 'DD' , match1to2 , match2 ) ;
addRegexToken ( 'Do' , function ( isStrict , locale ) {
// TODO: Remove "ordinalParse" fallback in next major release.
return isStrict ?
( locale . _dayOfMonthOrdinalParse || locale . _ordinalParse ) :
locale . _dayOfMonthOrdinalParseLenient ;
} ) ;
addParseToken ( [ 'D' , 'DD' ] , DATE ) ;
addParseToken ( 'Do' , function ( input , array ) {
array [ DATE ] = toInt ( input . match ( match1to2 ) [ 0 ] ) ;
} ) ;
// MOMENTS
var getSetDayOfMonth = makeGetSet ( 'Date' , true ) ;
// FORMATTING
addFormatToken ( 'DDD' , [ 'DDDD' , 3 ] , 'DDDo' , 'dayOfYear' ) ;
// ALIASES
addUnitAlias ( 'dayOfYear' , 'DDD' ) ;
// PRIORITY
addUnitPriority ( 'dayOfYear' , 4 ) ;
// PARSING
addRegexToken ( 'DDD' , match1to3 ) ;
addRegexToken ( 'DDDD' , match3 ) ;
addParseToken ( [ 'DDD' , 'DDDD' ] , function ( input , array , config ) {
config . _dayOfYear = toInt ( input ) ;
} ) ;
// HELPERS
// MOMENTS
function getSetDayOfYear ( input ) {
var dayOfYear = Math . round ( ( this . clone ( ) . startOf ( 'day' ) - this . clone ( ) . startOf ( 'year' ) ) / 864e5 ) + 1 ;
return input == null ? dayOfYear : this . add ( ( input - dayOfYear ) , 'd' ) ;
}
// FORMATTING
addFormatToken ( 'm' , [ 'mm' , 2 ] , 0 , 'minute' ) ;
// ALIASES
addUnitAlias ( 'minute' , 'm' ) ;
// PRIORITY
addUnitPriority ( 'minute' , 14 ) ;
// PARSING
addRegexToken ( 'm' , match1to2 ) ;
addRegexToken ( 'mm' , match1to2 , match2 ) ;
addParseToken ( [ 'm' , 'mm' ] , MINUTE ) ;
// MOMENTS
var getSetMinute = makeGetSet ( 'Minutes' , false ) ;
// FORMATTING
addFormatToken ( 's' , [ 'ss' , 2 ] , 0 , 'second' ) ;
// ALIASES
addUnitAlias ( 'second' , 's' ) ;
// PRIORITY
addUnitPriority ( 'second' , 15 ) ;
// PARSING
addRegexToken ( 's' , match1to2 ) ;
addRegexToken ( 'ss' , match1to2 , match2 ) ;
addParseToken ( [ 's' , 'ss' ] , SECOND ) ;
// MOMENTS
var getSetSecond = makeGetSet ( 'Seconds' , false ) ;
// FORMATTING
addFormatToken ( 'S' , 0 , 0 , function ( ) {
return ~ ~ ( this . millisecond ( ) / 100 ) ;
} ) ;
addFormatToken ( 0 , [ 'SS' , 2 ] , 0 , function ( ) {
return ~ ~ ( this . millisecond ( ) / 10 ) ;
} ) ;
addFormatToken ( 0 , [ 'SSS' , 3 ] , 0 , 'millisecond' ) ;
addFormatToken ( 0 , [ 'SSSS' , 4 ] , 0 , function ( ) {
return this . millisecond ( ) * 10 ;
} ) ;
addFormatToken ( 0 , [ 'SSSSS' , 5 ] , 0 , function ( ) {
return this . millisecond ( ) * 100 ;
} ) ;
addFormatToken ( 0 , [ 'SSSSSS' , 6 ] , 0 , function ( ) {
return this . millisecond ( ) * 1000 ;
} ) ;
addFormatToken ( 0 , [ 'SSSSSSS' , 7 ] , 0 , function ( ) {
return this . millisecond ( ) * 10000 ;
} ) ;
addFormatToken ( 0 , [ 'SSSSSSSS' , 8 ] , 0 , function ( ) {
return this . millisecond ( ) * 100000 ;
} ) ;
addFormatToken ( 0 , [ 'SSSSSSSSS' , 9 ] , 0 , function ( ) {
return this . millisecond ( ) * 1000000 ;
} ) ;
// ALIASES
addUnitAlias ( 'millisecond' , 'ms' ) ;
// PRIORITY
addUnitPriority ( 'millisecond' , 16 ) ;
// PARSING
addRegexToken ( 'S' , match1to3 , match1 ) ;
addRegexToken ( 'SS' , match1to3 , match2 ) ;
addRegexToken ( 'SSS' , match1to3 , match3 ) ;
var token ;
for ( token = 'SSSS' ; token . length <= 9 ; token += 'S' ) {
addRegexToken ( token , matchUnsigned ) ;
}
function parseMs ( input , array ) {
array [ MILLISECOND ] = toInt ( ( '0.' + input ) * 1000 ) ;
}
for ( token = 'S' ; token . length <= 9 ; token += 'S' ) {
addParseToken ( token , parseMs ) ;
}
// MOMENTS
var getSetMillisecond = makeGetSet ( 'Milliseconds' , false ) ;
// FORMATTING
addFormatToken ( 'z' , 0 , 0 , 'zoneAbbr' ) ;
addFormatToken ( 'zz' , 0 , 0 , 'zoneName' ) ;
// MOMENTS
function getZoneAbbr ( ) {
return this . _isUTC ? 'UTC' : '' ;
}
function getZoneName ( ) {
return this . _isUTC ? 'Coordinated Universal Time' : '' ;
}
var proto = Moment . prototype ;
proto . add = add ;
proto . calendar = calendar$1 ;
proto . clone = clone ;
proto . diff = diff ;
proto . endOf = endOf ;
proto . format = format ;
proto . from = from ;
proto . fromNow = fromNow ;
proto . to = to ;
proto . toNow = toNow ;
proto . get = stringGet ;
proto . invalidAt = invalidAt ;
proto . isAfter = isAfter ;
proto . isBefore = isBefore ;
proto . isBetween = isBetween ;
proto . isSame = isSame ;
proto . isSameOrAfter = isSameOrAfter ;
proto . isSameOrBefore = isSameOrBefore ;
proto . isValid = isValid$2 ;
proto . lang = lang ;
proto . locale = locale ;
proto . localeData = localeData ;
proto . max = prototypeMax ;
proto . min = prototypeMin ;
proto . parsingFlags = parsingFlags ;
proto . set = stringSet ;
proto . startOf = startOf ;
proto . subtract = subtract ;
proto . toArray = toArray ;
proto . toObject = toObject ;
proto . toDate = toDate ;
proto . toISOString = toISOString ;
proto . inspect = inspect ;
proto . toJSON = toJSON ;
proto . toString = toString ;
proto . unix = unix ;
proto . valueOf = valueOf ;
proto . creationData = creationData ;
proto . year = getSetYear ;
proto . isLeapYear = getIsLeapYear ;
proto . weekYear = getSetWeekYear ;
proto . isoWeekYear = getSetISOWeekYear ;
proto . quarter = proto . quarters = getSetQuarter ;
proto . month = getSetMonth ;
proto . daysInMonth = getDaysInMonth ;
proto . week = proto . weeks = getSetWeek ;
proto . isoWeek = proto . isoWeeks = getSetISOWeek ;
proto . weeksInYear = getWeeksInYear ;
proto . isoWeeksInYear = getISOWeeksInYear ;
proto . date = getSetDayOfMonth ;
proto . day = proto . days = getSetDayOfWeek ;
proto . weekday = getSetLocaleDayOfWeek ;
proto . isoWeekday = getSetISODayOfWeek ;
proto . dayOfYear = getSetDayOfYear ;
proto . hour = proto . hours = getSetHour ;
proto . minute = proto . minutes = getSetMinute ;
proto . second = proto . seconds = getSetSecond ;
proto . millisecond = proto . milliseconds = getSetMillisecond ;
proto . utcOffset = getSetOffset ;
proto . utc = setOffsetToUTC ;
proto . local = setOffsetToLocal ;
proto . parseZone = setOffsetToParsedOffset ;
proto . hasAlignedHourOffset = hasAlignedHourOffset ;
proto . isDST = isDaylightSavingTime ;
proto . isLocal = isLocal ;
proto . isUtcOffset = isUtcOffset ;
proto . isUtc = isUtc ;
proto . isUTC = isUtc ;
proto . zoneAbbr = getZoneAbbr ;
proto . zoneName = getZoneName ;
proto . dates = deprecate ( 'dates accessor is deprecated. Use date instead.' , getSetDayOfMonth ) ;
proto . months = deprecate ( 'months accessor is deprecated. Use month instead' , getSetMonth ) ;
proto . years = deprecate ( 'years accessor is deprecated. Use year instead' , getSetYear ) ;
proto . zone = deprecate ( 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/' , getSetZone ) ;
proto . isDSTShifted = deprecate ( 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information' , isDaylightSavingTimeShifted ) ;
function createUnix ( input ) {
return createLocal ( input * 1000 ) ;
}
function createInZone ( ) {
return createLocal . apply ( null , arguments ) . parseZone ( ) ;
}
function preParsePostFormat ( string ) {
return string ;
}
var proto$1 = Locale . prototype ;
proto$1 . calendar = calendar ;
proto$1 . longDateFormat = longDateFormat ;
proto$1 . invalidDate = invalidDate ;
proto$1 . ordinal = ordinal ;
proto$1 . preparse = preParsePostFormat ;
proto$1 . postformat = preParsePostFormat ;
proto$1 . relativeTime = relativeTime ;
proto$1 . pastFuture = pastFuture ;
proto$1 . set = set ;
proto$1 . months = localeMonths ;
proto$1 . monthsShort = localeMonthsShort ;
proto$1 . monthsParse = localeMonthsParse ;
proto$1 . monthsRegex = monthsRegex ;
proto$1 . monthsShortRegex = monthsShortRegex ;
proto$1 . week = localeWeek ;
proto$1 . firstDayOfYear = localeFirstDayOfYear ;
proto$1 . firstDayOfWeek = localeFirstDayOfWeek ;
proto$1 . weekdays = localeWeekdays ;
proto$1 . weekdaysMin = localeWeekdaysMin ;
proto$1 . weekdaysShort = localeWeekdaysShort ;
proto$1 . weekdaysParse = localeWeekdaysParse ;
proto$1 . weekdaysRegex = weekdaysRegex ;
proto$1 . weekdaysShortRegex = weekdaysShortRegex ;
proto$1 . weekdaysMinRegex = weekdaysMinRegex ;
proto$1 . isPM = localeIsPM ;
proto$1 . meridiem = localeMeridiem ;
function get$1 ( format , index , field , setter ) {
var locale = getLocale ( ) ;
var utc = createUTC ( ) . set ( setter , index ) ;
return locale [ field ] ( utc , format ) ;
}
function listMonthsImpl ( format , index , field ) {
if ( isNumber ( format ) ) {
index = format ;
format = undefined ;
}
format = format || '' ;
if ( index != null ) {
return get$1 ( format , index , field , 'month' ) ;
}
var i ;
var out = [ ] ;
for ( i = 0 ; i < 12 ; i ++ ) {
out [ i ] = get$1 ( format , i , field , 'month' ) ;
}
return out ;
}
// ()
// (5)
// (fmt, 5)
// (fmt)
// (true)
// (true, 5)
// (true, fmt, 5)
// (true, fmt)
function listWeekdaysImpl ( localeSorted , format , index , field ) {
if ( typeof localeSorted === 'boolean' ) {
if ( isNumber ( format ) ) {
index = format ;
format = undefined ;
}
format = format || '' ;
} else {
format = localeSorted ;
index = format ;
localeSorted = false ;
if ( isNumber ( format ) ) {
index = format ;
format = undefined ;
}
format = format || '' ;
}
var locale = getLocale ( ) ,
shift = localeSorted ? locale . _week . dow : 0 ;
if ( index != null ) {
return get$1 ( format , ( index + shift ) % 7 , field , 'day' ) ;
}
var i ;
var out = [ ] ;
for ( i = 0 ; i < 7 ; i ++ ) {
out [ i ] = get$1 ( format , ( i + shift ) % 7 , field , 'day' ) ;
}
return out ;
}
function listMonths ( format , index ) {
return listMonthsImpl ( format , index , 'months' ) ;
}
function listMonthsShort ( format , index ) {
return listMonthsImpl ( format , index , 'monthsShort' ) ;
}
function listWeekdays ( localeSorted , format , index ) {
return listWeekdaysImpl ( localeSorted , format , index , 'weekdays' ) ;
}
function listWeekdaysShort ( localeSorted , format , index ) {
return listWeekdaysImpl ( localeSorted , format , index , 'weekdaysShort' ) ;
}
function listWeekdaysMin ( localeSorted , format , index ) {
return listWeekdaysImpl ( localeSorted , format , index , 'weekdaysMin' ) ;
}
getSetGlobalLocale ( 'en' , {
dayOfMonthOrdinalParse : /\d{1,2}(th|st|nd|rd)/ ,
ordinal : function ( number ) {
var b = number % 10 ,
output = ( toInt ( number % 100 / 10 ) === 1 ) ? 'th' :
( b === 1 ) ? 'st' :
( b === 2 ) ? 'nd' :
( b === 3 ) ? 'rd' : 'th' ;
return number + output ;
}
} ) ;
// Side effect imports
hooks . lang = deprecate ( 'moment.lang is deprecated. Use moment.locale instead.' , getSetGlobalLocale ) ;
hooks . langData = deprecate ( 'moment.langData is deprecated. Use moment.localeData instead.' , getLocale ) ;
var mathAbs = Math . abs ;
function abs ( ) {
var data = this . _data ;
this . _milliseconds = mathAbs ( this . _milliseconds ) ;
this . _days = mathAbs ( this . _days ) ;
this . _months = mathAbs ( this . _months ) ;
data . milliseconds = mathAbs ( data . milliseconds ) ;
data . seconds = mathAbs ( data . seconds ) ;
data . minutes = mathAbs ( data . minutes ) ;
data . hours = mathAbs ( data . hours ) ;
data . months = mathAbs ( data . months ) ;
data . years = mathAbs ( data . years ) ;
return this ;
}
function addSubtract$1 ( duration , input , value , direction ) {
var other = createDuration ( input , value ) ;
duration . _milliseconds += direction * other . _milliseconds ;
duration . _days += direction * other . _days ;
duration . _months += direction * other . _months ;
return duration . _bubble ( ) ;
}
// supports only 2.0-style add(1, 's') or add(duration)
function add$1 ( input , value ) {
return addSubtract$1 ( this , input , value , 1 ) ;
}
// supports only 2.0-style subtract(1, 's') or subtract(duration)
function subtract$1 ( input , value ) {
return addSubtract$1 ( this , input , value , - 1 ) ;
}
function absCeil ( number ) {
if ( number < 0 ) {
return Math . floor ( number ) ;
} else {
return Math . ceil ( number ) ;
}
}
function bubble ( ) {
var milliseconds = this . _milliseconds ;
var days = this . _days ;
var months = this . _months ;
var data = this . _data ;
var seconds , minutes , hours , years , monthsFromDays ;
// if we have a mix of positive and negative values, bubble down first
// check: https://github.com/moment/moment/issues/2166
if ( ! ( ( milliseconds >= 0 && days >= 0 && months >= 0 ) ||
( milliseconds <= 0 && days <= 0 && months <= 0 ) ) ) {
milliseconds += absCeil ( monthsToDays ( months ) + days ) * 864e5 ;
days = 0 ;
months = 0 ;
}
// The following code bubbles up values, see the tests for
// examples of what that means.
data . milliseconds = milliseconds % 1000 ;
seconds = absFloor ( milliseconds / 1000 ) ;
data . seconds = seconds % 60 ;
minutes = absFloor ( seconds / 60 ) ;
data . minutes = minutes % 60 ;
hours = absFloor ( minutes / 60 ) ;
data . hours = hours % 24 ;
days += absFloor ( hours / 24 ) ;
// convert days to months
monthsFromDays = absFloor ( daysToMonths ( days ) ) ;
months += monthsFromDays ;
days -= absCeil ( monthsToDays ( monthsFromDays ) ) ;
// 12 months -> 1 year
years = absFloor ( months / 12 ) ;
months %= 12 ;
data . days = days ;
data . months = months ;
data . years = years ;
return this ;
}
function daysToMonths ( days ) {
// 400 years have 146097 days (taking into account leap year rules)
// 400 years have 12 months === 4800
return days * 4800 / 146097 ;
}
function monthsToDays ( months ) {
// the reverse of daysToMonths
return months * 146097 / 4800 ;
}
function as ( units ) {
if ( ! this . isValid ( ) ) {
return NaN ;
}
var days ;
var months ;
var milliseconds = this . _milliseconds ;
units = normalizeUnits ( units ) ;
if ( units === 'month' || units === 'quarter' || units === 'year' ) {
days = this . _days + milliseconds / 864e5 ;
months = this . _months + daysToMonths ( days ) ;
switch ( units ) {
case 'month' : return months ;
case 'quarter' : return months / 3 ;
case 'year' : return months / 12 ;
}
} else {
// handle milliseconds separately because of floating point math errors (issue #1867)
days = this . _days + Math . round ( monthsToDays ( this . _months ) ) ;
switch ( units ) {
case 'week' : return days / 7 + milliseconds / 6048e5 ;
case 'day' : return days + milliseconds / 864e5 ;
case 'hour' : return days * 24 + milliseconds / 36e5 ;
case 'minute' : return days * 1440 + milliseconds / 6e4 ;
case 'second' : return days * 86400 + milliseconds / 1000 ;
// Math.floor prevents floating point math errors here
case 'millisecond' : return Math . floor ( days * 864e5 ) + milliseconds ;
default : throw new Error ( 'Unknown unit ' + units ) ;
}
}
}
// TODO: Use this.as('ms')?
function valueOf$1 ( ) {
if ( ! this . isValid ( ) ) {
return NaN ;
}
return (
this . _milliseconds +
this . _days * 864e5 +
( this . _months % 12 ) * 2592e6 +
toInt ( this . _months / 12 ) * 31536e6
) ;
}
function makeAs ( alias ) {
return function ( ) {
return this . as ( alias ) ;
} ;
}
var asMilliseconds = makeAs ( 'ms' ) ;
var asSeconds = makeAs ( 's' ) ;
var asMinutes = makeAs ( 'm' ) ;
var asHours = makeAs ( 'h' ) ;
var asDays = makeAs ( 'd' ) ;
var asWeeks = makeAs ( 'w' ) ;
var asMonths = makeAs ( 'M' ) ;
var asQuarters = makeAs ( 'Q' ) ;
var asYears = makeAs ( 'y' ) ;
function clone$1 ( ) {
return createDuration ( this ) ;
}
function get$2 ( units ) {
units = normalizeUnits ( units ) ;
return this . isValid ( ) ? this [ units + 's' ] ( ) : NaN ;
}
function makeGetter ( name ) {
return function ( ) {
return this . isValid ( ) ? this . _data [ name ] : NaN ;
} ;
}
var milliseconds = makeGetter ( 'milliseconds' ) ;
var seconds = makeGetter ( 'seconds' ) ;
var minutes = makeGetter ( 'minutes' ) ;
var hours = makeGetter ( 'hours' ) ;
var days = makeGetter ( 'days' ) ;
var months = makeGetter ( 'months' ) ;
var years = makeGetter ( 'years' ) ;
function weeks ( ) {
return absFloor ( this . days ( ) / 7 ) ;
}
var round = Math . round ;
var thresholds = {
ss : 44 , // a few seconds to seconds
s : 45 , // seconds to minute
m : 45 , // minutes to hour
h : 22 , // hours to day
d : 26 , // days to month
M : 11 // months to year
} ;
// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
function substituteTimeAgo ( string , number , withoutSuffix , isFuture , locale ) {
return locale . relativeTime ( number || 1 , ! ! withoutSuffix , string , isFuture ) ;
}
function relativeTime$1 ( posNegDuration , withoutSuffix , locale ) {
var duration = createDuration ( posNegDuration ) . abs ( ) ;
var seconds = round ( duration . as ( 's' ) ) ;
var minutes = round ( duration . as ( 'm' ) ) ;
var hours = round ( duration . as ( 'h' ) ) ;
var days = round ( duration . as ( 'd' ) ) ;
var months = round ( duration . as ( 'M' ) ) ;
var years = round ( duration . as ( 'y' ) ) ;
var a = seconds <= thresholds . ss && [ 's' , seconds ] ||
seconds < thresholds . s && [ 'ss' , seconds ] ||
minutes <= 1 && [ 'm' ] ||
minutes < thresholds . m && [ 'mm' , minutes ] ||
hours <= 1 && [ 'h' ] ||
hours < thresholds . h && [ 'hh' , hours ] ||
days <= 1 && [ 'd' ] ||
days < thresholds . d && [ 'dd' , days ] ||
months <= 1 && [ 'M' ] ||
months < thresholds . M && [ 'MM' , months ] ||
years <= 1 && [ 'y' ] || [ 'yy' , years ] ;
a [ 2 ] = withoutSuffix ;
a [ 3 ] = + posNegDuration > 0 ;
a [ 4 ] = locale ;
return substituteTimeAgo . apply ( null , a ) ;
}
// This function allows you to set the rounding function for relative time strings
function getSetRelativeTimeRounding ( roundingFunction ) {
if ( roundingFunction === undefined ) {
return round ;
}
if ( typeof ( roundingFunction ) === 'function' ) {
round = roundingFunction ;
return true ;
}
return false ;
}
// This function allows you to set a threshold for relative time strings
function getSetRelativeTimeThreshold ( threshold , limit ) {
if ( thresholds [ threshold ] === undefined ) {
return false ;
}
if ( limit === undefined ) {
return thresholds [ threshold ] ;
}
thresholds [ threshold ] = limit ;
if ( threshold === 's' ) {
thresholds . ss = limit - 1 ;
}
return true ;
}
function humanize ( withSuffix ) {
if ( ! this . isValid ( ) ) {
return this . localeData ( ) . invalidDate ( ) ;
}
var locale = this . localeData ( ) ;
var output = relativeTime$1 ( this , ! withSuffix , locale ) ;
if ( withSuffix ) {
output = locale . pastFuture ( + this , output ) ;
}
return locale . postformat ( output ) ;
}
var abs$1 = Math . abs ;
function sign ( x ) {
return ( ( x > 0 ) - ( x < 0 ) ) || + x ;
}
function toISOString$1 ( ) {
// for ISO strings we do not use the normal bubbling rules:
// * milliseconds bubble up until they become hours
// * days do not bubble at all
// * months bubble up until they become years
// This is because there is no context-free conversion between hours and days
// (think of clock changes)
// and also not between days and months (28-31 days per month)
if ( ! this . isValid ( ) ) {
return this . localeData ( ) . invalidDate ( ) ;
}
var seconds = abs$1 ( this . _milliseconds ) / 1000 ;
var days = abs$1 ( this . _days ) ;
var months = abs$1 ( this . _months ) ;
var minutes , hours , years ;
// 3600 seconds -> 60 minutes -> 1 hour
minutes = absFloor ( seconds / 60 ) ;
hours = absFloor ( minutes / 60 ) ;
seconds %= 60 ;
minutes %= 60 ;
// 12 months -> 1 year
years = absFloor ( months / 12 ) ;
months %= 12 ;
// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
var Y = years ;
var M = months ;
var D = days ;
var h = hours ;
var m = minutes ;
var s = seconds ? seconds . toFixed ( 3 ) . replace ( /\.?0+$/ , '' ) : '' ;
var total = this . asSeconds ( ) ;
if ( ! total ) {
// this is the same as C#'s (Noda) and python (isodate)...
// but not other JS (goog.date)
return 'P0D' ;
}
var totalSign = total < 0 ? '-' : '' ;
var ymSign = sign ( this . _months ) !== sign ( total ) ? '-' : '' ;
var daysSign = sign ( this . _days ) !== sign ( total ) ? '-' : '' ;
var hmsSign = sign ( this . _milliseconds ) !== sign ( total ) ? '-' : '' ;
return totalSign + 'P' +
( Y ? ymSign + Y + 'Y' : '' ) +
( M ? ymSign + M + 'M' : '' ) +
( D ? daysSign + D + 'D' : '' ) +
( ( h || m || s ) ? 'T' : '' ) +
( h ? hmsSign + h + 'H' : '' ) +
( m ? hmsSign + m + 'M' : '' ) +
( s ? hmsSign + s + 'S' : '' ) ;
}
var proto$2 = Duration . prototype ;
proto$2 . isValid = isValid$1 ;
proto$2 . abs = abs ;
proto$2 . add = add$1 ;
proto$2 . subtract = subtract$1 ;
proto$2 . as = as ;
proto$2 . asMilliseconds = asMilliseconds ;
proto$2 . asSeconds = asSeconds ;
proto$2 . asMinutes = asMinutes ;
proto$2 . asHours = asHours ;
proto$2 . asDays = asDays ;
proto$2 . asWeeks = asWeeks ;
proto$2 . asMonths = asMonths ;
proto$2 . asQuarters = asQuarters ;
proto$2 . asYears = asYears ;
proto$2 . valueOf = valueOf$1 ;
proto$2 . _bubble = bubble ;
proto$2 . clone = clone$1 ;
proto$2 . get = get$2 ;
proto$2 . milliseconds = milliseconds ;
proto$2 . seconds = seconds ;
proto$2 . minutes = minutes ;
proto$2 . hours = hours ;
proto$2 . days = days ;
proto$2 . weeks = weeks ;
proto$2 . months = months ;
proto$2 . years = years ;
proto$2 . humanize = humanize ;
proto$2 . toISOString = toISOString$1 ;
proto$2 . toString = toISOString$1 ;
proto$2 . toJSON = toISOString$1 ;
proto$2 . locale = locale ;
proto$2 . localeData = localeData ;
proto$2 . toIsoString = deprecate ( 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)' , toISOString$1 ) ;
proto$2 . lang = lang ;
// Side effect imports
// FORMATTING
addFormatToken ( 'X' , 0 , 0 , 'unix' ) ;
addFormatToken ( 'x' , 0 , 0 , 'valueOf' ) ;
// PARSING
addRegexToken ( 'x' , matchSigned ) ;
addRegexToken ( 'X' , matchTimestamp ) ;
addParseToken ( 'X' , function ( input , array , config ) {
config . _d = new Date ( parseFloat ( input , 10 ) * 1000 ) ;
} ) ;
addParseToken ( 'x' , function ( input , array , config ) {
config . _d = new Date ( toInt ( input ) ) ;
} ) ;
// Side effect imports
hooks . version = '2.24.0' ;
setHookCallback ( createLocal ) ;
hooks . fn = proto ;
hooks . min = min ;
hooks . max = max ;
hooks . now = now ;
hooks . utc = createUTC ;
hooks . unix = createUnix ;
hooks . months = listMonths ;
hooks . isDate = isDate ;
hooks . locale = getSetGlobalLocale ;
hooks . invalid = createInvalid ;
hooks . duration = createDuration ;
hooks . isMoment = isMoment ;
hooks . weekdays = listWeekdays ;
hooks . parseZone = createInZone ;
hooks . localeData = getLocale ;
hooks . isDuration = isDuration ;
hooks . monthsShort = listMonthsShort ;
hooks . weekdaysMin = listWeekdaysMin ;
hooks . defineLocale = defineLocale ;
hooks . updateLocale = updateLocale ;
hooks . locales = listLocales ;
hooks . weekdaysShort = listWeekdaysShort ;
hooks . normalizeUnits = normalizeUnits ;
hooks . relativeTimeRounding = getSetRelativeTimeRounding ;
hooks . relativeTimeThreshold = getSetRelativeTimeThreshold ;
hooks . calendarFormat = getCalendarFormat ;
hooks . prototype = proto ;
// currently HTML5 input type only supports 24-hour formats
hooks . HTML5 _FMT = {
DATETIME _LOCAL : 'YYYY-MM-DDTHH:mm' , // <input type="datetime-local" />
DATETIME _LOCAL _SECONDS : 'YYYY-MM-DDTHH:mm:ss' , // <input type="datetime-local" step="1" />
DATETIME _LOCAL _MS : 'YYYY-MM-DDTHH:mm:ss.SSS' , // <input type="datetime-local" step="0.001" />
DATE : 'YYYY-MM-DD' , // <input type="date" />
TIME : 'HH:mm' , // <input type="time" />
TIME _SECONDS : 'HH:mm:ss' , // <input type="time" step="1" />
TIME _MS : 'HH:mm:ss.SSS' , // <input type="time" step="0.001" />
WEEK : 'GGGG-[W]WW' , // <input type="week" />
MONTH : 'YYYY-MM' // <input type="month" />
} ;
return hooks ;
} ) ) ) ;
} ) ;
var DatePicker = function ( _Component ) {
inherits ( DatePicker , _Component ) ;
function DatePicker ( ) {
classCallCheck ( this , DatePicker ) ;
return possibleConstructorReturn ( this , ( DatePicker . _ _proto _ _ || Object . getPrototypeOf ( DatePicker ) ) . apply ( this , arguments ) ) ;
}
createClass ( DatePicker , [ {
key : 'render' ,
value : function render ( ) {
var _this2 = this ;
return React . createElement (
FormConsumer ,
null ,
function ( data ) {
return _this2 . renderDatePicker ( data ) ;
}
) ;
}
} , {
key : 'renderDatePicker' ,
value : function renderDatePicker ( data ) {
var _this3 = this ;
var value = this . props . value ;
var props = _extends ( { } , this . props ) ;
if ( props . children ) delete props . children ;
if ( props . value ) delete props . value ;
if ( props . onChangeValue ) delete props . onChangeValue ;
return React . createElement (
'div' ,
{ className : 'form-group' } ,
this . renderLabel ( data ) ,
React . createElement ( 'input' , _extends ( {
value : this . parseValue ( value ) ,
onChange : function onChange ( e ) {
return _this3 . props . onChangeValue ( moment ( e . target . value ) ) ;
} } , props ) ) ,
React . createElement (
'p' ,
{ className : 'text-muted' } ,
'DatePicker ' ,
this . props . type
) ,
React . createElement ( FormItemError , { name : this . props . name , data : data } )
) ;
}
} , {
key : 'parseValue' ,
value : function parseValue ( value ) {
if ( this . props . type == 'date' ) return moment ( value ) . format ( 'YYYY-MM-DD' ) ;
if ( this . props . type == 'time' ) return moment ( value ) . format ( 'HH:mm:ss' ) ;
return moment ( value ) . format ( 'YYYY-MM-DDTHH:mm' ) ;
}
} , {
key : 'renderLabel' ,
value : function renderLabel ( data ) {
if ( this . props . label ) {
return React . createElement (
'label' ,
2019-03-04 17:42:59 +01:00
{ htmlFor : this . props . id } ,
this . props . label
) ;
}
}
} ] ) ;
return DatePicker ;
} ( Component ) ;
DatePicker . defaultProps = {
name : 'input' ,
id : 'input' ,
className : 'form-control' ,
type : 'datetime-local' ,
2019-03-04 17:48:43 +01:00
value : null ,
2019-03-04 17:42:59 +01:00
onChangeValue : function onChangeValue ( text ) { }
} ;
var FilePicker = function ( _Component ) {
inherits ( FilePicker , _Component ) ;
function FilePicker ( ) {
classCallCheck ( this , FilePicker ) ;
return possibleConstructorReturn ( this , ( FilePicker . _ _proto _ _ || Object . getPrototypeOf ( FilePicker ) ) . apply ( this , arguments ) ) ;
}
createClass ( FilePicker , [ {
key : "render" ,
value : function render ( ) {
var _this2 = this ;
return React . createElement (
FormConsumer ,
null ,
function ( data ) {
return _this2 . renderFilePicker ( data ) ;
}
) ;
}
} , {
key : "renderFilePicker" ,
value : function renderFilePicker ( data ) {
var _this3 = this ;
var value = this . props . value ;
var props = _extends ( { } , this . props ) ;
if ( props . children ) delete props . children ;
if ( props . onChangeValue ) delete props . onChangeValue ;
if ( ! ( _typeof ( props . value ) instanceof File ) ) delete props . value ;
return React . createElement (
"div" ,
{ className : "form-group" } ,
this . renderLabel ( data ) ,
React . createElement ( "input" , _extends ( {
type : "file" ,
onChange : function onChange ( e ) {
return _this3 . props . onChangeValue ( e . target . value ) ;
} } , props ) ) ,
this . renderValue ( value ) ,
React . createElement ( FormItemError , { name : this . props . name , data : data } )
) ;
}
} , {
key : "renderValue" ,
value : function renderValue ( value ) {
if ( value instanceof File ) return React . createElement (
"p" ,
{ className : "text-muted" } ,
value . name ,
" " ,
this . renderDeleteButton ( )
) ;
if ( value !== null ) return React . createElement (
"p" ,
{ className : "text-muted" } ,
value ,
" " ,
this . renderDeleteButton ( )
) ;
return null ;
}
} , {
key : "renderDeleteButton" ,
value : function renderDeleteButton ( ) {
var _this4 = this ;
return React . createElement ( "i" , { className : "fa fa-trash" , onClick : function onClick ( ) {
_this4 . props . onChangeValue ( null ) ;
} } ) ;
}
} , {
key : "renderLabel" ,
value : function renderLabel ( data ) {
if ( this . props . label ) {
return React . createElement (
"label" ,
{ htmlFor : this . props . id } ,
this . props . label
) ;
}
}
} ] ) ;
return FilePicker ;
} ( Component ) ;
FilePicker . defaultProps = {
name : 'file-picker' ,
id : 'file-picker' ,
className : 'form-control' ,
2019-03-04 17:48:43 +01:00
value : null ,
2019-03-04 17:42:59 +01:00
onChangeValue : function onChangeValue ( file ) { }
} ;
export { CheckBox , Form , Input , Option , OptionGroup , RadioGroup , Radio , DatePicker , FilePicker , Submit , TextArea , FormTranslationContext } ;
2019-03-01 12:22:51 +01:00
//# sourceMappingURL=index.es.js.map