+
{segments.reduce((row, { event, left, right, span }, li) => {
let key = '_lvl_' + li
let gap = left - lastEnd
diff --git a/src/EventRowMixin.js b/src/EventRowMixin.js
index 998bc8206..5e9221715 100644
--- a/src/EventRowMixin.js
+++ b/src/EventRowMixin.js
@@ -1,29 +1,21 @@
import PropTypes from 'prop-types'
import React from 'react'
-import { findDOMNode } from 'react-dom'
import EventCell from './EventCell'
-import getHeight from 'dom-helpers/query/height'
-import { accessor, elementType } from './utils/propTypes'
import { isSelected } from './utils/selection'
/* eslint-disable react/prop-types */
export default {
propTypes: {
- slots: PropTypes.number.isRequired,
- end: PropTypes.instanceOf(Date),
- start: PropTypes.instanceOf(Date),
+ slotMetrics: PropTypes.object.isRequired,
selected: PropTypes.object,
isAllDay: PropTypes.bool,
- eventPropGetter: PropTypes.func,
- titleAccessor: accessor,
- tooltipAccessor: accessor,
- allDayAccessor: accessor,
- startAccessor: accessor,
- endAccessor: accessor,
- eventComponent: elementType,
- eventWrapperComponent: elementType.isRequired,
+ accessors: PropTypes.object.isRequired,
+ localizer: PropTypes.object.isRequired,
+ components: PropTypes.object.isRequired,
+ getters: PropTypes.object.isRequired,
+
onSelect: PropTypes.func,
onDoubleClick: PropTypes.func,
},
@@ -31,44 +23,36 @@ export default {
defaultProps: {
segments: [],
selected: {},
- slots: 7,
},
renderEvent(props, event) {
let {
- eventPropGetter,
selected,
- isAllDay,
- start,
- end,
- startAccessor,
- endAccessor,
- titleAccessor,
- tooltipAccessor,
- allDayAccessor,
- eventComponent,
- eventWrapperComponent,
+ isAllDay: _,
+ accessors,
+ getters,
onSelect,
onDoubleClick,
+ localizer,
+ slotMetrics,
+ components,
} = props
+ let continuesPrior = slotMetrics.continuesPrior(event)
+ let continuesAfter = slotMetrics.continuesAfter(event)
+
return (
)
},
@@ -87,8 +71,4 @@ export default {
)
},
-
- getRowHeight() {
- getHeight(findDOMNode(this))
- },
}
diff --git a/src/EventWrapper.js b/src/EventWrapper.js
index 1275eb27d..1bc6e67f7 100644
--- a/src/EventWrapper.js
+++ b/src/EventWrapper.js
@@ -1,9 +1,3 @@
-import React from 'react'
+import NoopWrapper from './NoopWrapper'
-class EventWrapper extends React.Component {
- render() {
- return this.props.children
- }
-}
-
-export default EventWrapper
+export default NoopWrapper
diff --git a/src/Month.js b/src/Month.js
index 3f82b5dee..919b90358 100644
--- a/src/Month.js
+++ b/src/Month.js
@@ -4,7 +4,6 @@ import { findDOMNode } from 'react-dom'
import cn from 'classnames'
import dates from './utils/dates'
-import localizer from './localizer'
import chunk from 'lodash/chunk'
import { navigate, views } from './utils/constants'
@@ -18,11 +17,10 @@ import DateContentRow from './DateContentRow'
import Header from './Header'
import DateHeader from './DateHeader'
-import { accessor, dateFormat } from './utils/propTypes'
import { inRange, sortEvents } from './utils/eventLevels'
-let eventsForWeek = (evts, start, end, props) =>
- evts.filter(e => inRange(e, start, end, props))
+let eventsForWeek = (evts, start, end, accessors) =>
+ evts.filter(e => inRange(e, start, end, accessors))
let propTypes = {
events: PropTypes.array.isRequired,
@@ -35,20 +33,13 @@ let propTypes = {
getNow: PropTypes.func.isRequired,
scrollToTime: PropTypes.instanceOf(Date),
- eventPropGetter: PropTypes.func,
- dayPropGetter: PropTypes.func,
-
- culture: PropTypes.string,
- dayFormat: dateFormat,
-
rtl: PropTypes.bool,
width: PropTypes.number,
- titleAccessor: accessor.isRequired,
- tooltipAccessor: accessor.isRequired,
- allDayAccessor: accessor.isRequired,
- startAccessor: accessor.isRequired,
- endAccessor: accessor.isRequired,
+ accessors: PropTypes.object.isRequired,
+ components: PropTypes.object.isRequired,
+ getters: PropTypes.object.isRequired,
+ localizer: PropTypes.object.isRequired,
selected: PropTypes.object,
selectable: PropTypes.oneOf([true, false, 'ignoreEvents']),
@@ -62,13 +53,8 @@ let propTypes = {
onDrillDown: PropTypes.func,
getDrilldownView: PropTypes.func.isRequired,
- dateFormat,
-
- weekdayFormat: dateFormat,
popup: PropTypes.bool,
- messages: PropTypes.object,
- components: PropTypes.object.isRequired,
popupOffset: PropTypes.oneOfType([
PropTypes.number,
PropTypes.shape({
@@ -131,8 +117,8 @@ class MonthView extends React.Component {
}
render() {
- let { date, culture, weekdayFormat, className } = this.props,
- month = dates.visibleDays(date, culture),
+ let { date, localizer, className } = this.props,
+ month = dates.visibleDays(date, localizer),
weeks = chunk(month, 7)
this._weekCount = weeks.length
@@ -140,7 +126,7 @@ class MonthView extends React.Component {
return (
- {this.renderHeaders(weeks[0], weekdayFormat, culture)}
+ {this.renderHeaders(weeks[0])}
{weeks.map(this.renderWeek)}
{this.props.popup && this.renderOverlay()}
@@ -153,24 +139,20 @@ class MonthView extends React.Component {
events,
components,
selectable,
- titleAccessor,
- tooltipAccessor,
- startAccessor,
- endAccessor,
- allDayAccessor,
getNow,
- eventPropGetter,
- dayPropGetter,
- messages,
selected,
date,
+ localizer,
longPressThreshold,
+ accessors,
+ getters,
} = this.props
const { needLimitMeasure, rowLimit } = this.state
- events = eventsForWeek(events, week[0], week[week.length - 1], this.props)
- events.sort((a, b) => sortEvents(a, b, this.props))
+ events = eventsForWeek(events, week[0], week[week.length - 1], accessors)
+
+ events.sort((a, b) => sortEvents(a, b, accessors))
return (
@@ -209,17 +184,12 @@ class MonthView extends React.Component {
}
readerDateHeading = ({ date, className, ...props }) => {
- let {
- date: currentDate,
- getDrilldownView,
- dateFormat,
- culture,
- } = this.props
+ let { date: currentDate, getDrilldownView, localizer } = this.props
let isOffRange = dates.month(date) !== dates.month(currentDate)
let isCurrent = dates.eq(date, currentDate, 'day')
let drilldownView = getDrilldownView(date)
- let label = localizer.format(date, dateFormat, culture)
+ let label = localizer.format(date, 'dateFormat')
let DateHeaderComponent = this.props.components.dateHeader || DateHeader
return (
@@ -242,19 +212,18 @@ class MonthView extends React.Component {
)
}
- renderHeaders(row, format, culture) {
+ renderHeaders(row) {
+ let { localizer, components } = this.props
let first = row[0]
let last = row[row.length - 1]
- let HeaderComponent = this.props.components.header || Header
+ let HeaderComponent = components.header || Header
return dates.range(first, last, 'day').map((day, idx) => (
))
@@ -262,7 +231,7 @@ class MonthView extends React.Component {
renderOverlay() {
let overlay = (this.state && this.state.overlay) || {}
- let { components } = this.props
+ let { accessors, localizer, components, getters, selected } = this.props
return (
this.setState({ overlay: null })}
>
{
}
}
-MonthView.title = (date, { formats, culture }) =>
- localizer.format(date, formats.monthHeaderFormat, culture)
+MonthView.title = (date, { localizer }) =>
+ localizer.format(date, 'monthHeaderFormat')
export default MonthView
diff --git a/src/NoopWrapper.js b/src/NoopWrapper.js
new file mode 100644
index 000000000..e40ed1e3d
--- /dev/null
+++ b/src/NoopWrapper.js
@@ -0,0 +1,5 @@
+function NoopWrapper(props) {
+ return props.children
+}
+
+export default NoopWrapper
diff --git a/src/Popup.js b/src/Popup.js
index 1dcbc5f99..af3b9a45c 100644
--- a/src/Popup.js
+++ b/src/Popup.js
@@ -3,11 +3,10 @@ import React from 'react'
import getOffset from 'dom-helpers/query/offset'
import getScrollTop from 'dom-helpers/query/scrollTop'
import getScrollLeft from 'dom-helpers/query/scrollLeft'
+import dates from './utils/dates'
import EventCell from './EventCell'
import { isSelected } from './utils/selection'
-import localizer from './localizer'
-import { elementType, dateFormat } from './utils/propTypes'
const propTypes = {
position: PropTypes.object,
@@ -20,10 +19,17 @@ const propTypes = {
]),
events: PropTypes.array,
selected: PropTypes.object,
- eventComponent: elementType,
- eventWrapperComponent: elementType,
- dayHeaderFormat: dateFormat,
+
+ accessors: PropTypes.object.isRequired,
+ components: PropTypes.object.isRequired,
+ getters: PropTypes.object.isRequired,
+ localizer: PropTypes.object.isRequired,
+ onSelect: PropTypes.func,
+ onDoubleClick: PropTypes.func,
+ slotStart: PropTypes.number,
+ slotEnd: PropTypes.number,
}
+
class Popup extends React.Component {
componentDidMount() {
let { popupOffset = 5 } = this.props,
@@ -49,9 +55,14 @@ class Popup extends React.Component {
let {
events,
selected,
- eventComponent,
- eventWrapperComponent,
- ...props
+ getters,
+ accessors,
+ components,
+ onSelect,
+ onDoubleClick,
+ slotStart,
+ slotEnd,
+ localizer,
} = this.props
let { left, width, top } = this.props.position,
@@ -67,19 +78,20 @@ class Popup extends React.Component {
return (
- {localizer.format(
- props.slotStart,
- props.dayHeaderFormat,
- props.culture
- )}
+ {localizer.format(slotStart, 'dayHeaderFormat')}
{events.map((event, idx) => (
))}
diff --git a/src/Selection.js b/src/Selection.js
index d3f2188a2..d5c9e7c69 100644
--- a/src/Selection.js
+++ b/src/Selection.js
@@ -3,7 +3,7 @@ import closest from 'dom-helpers/query/closest'
import events from 'dom-helpers/events'
function addEventListener(type, handler, target = document) {
- events.on(target, type, handler)
+ events.on(target, type, handler, { passive: false })
return {
remove() {
events.off(target, type, handler)
@@ -15,9 +15,13 @@ function isOverContainer(container, x, y) {
return !container || contains(container, document.elementFromPoint(x, y))
}
-export function isEvent(node, { clientX, clientY }) {
+export function getEventNodeFromPoint(node, { clientX, clientY }) {
let target = document.elementFromPoint(clientX, clientY)
- return !!closest(target, '.rbc-event', node)
+ return closest(target, '.rbc-event', node)
+}
+
+export function isEvent(node, bounds) {
+ return !!getEventNodeFromPoint(node, bounds)
}
function getEventCoordinates(e) {
diff --git a/src/TimeGrid.js b/src/TimeGrid.js
index bb727b8bb..9260311c2 100644
--- a/src/TimeGrid.js
+++ b/src/TimeGrid.js
@@ -10,9 +10,7 @@ import TimeGutter from './TimeGutter'
import getWidth from 'dom-helpers/query/width'
import TimeGridHeader from './TimeGridHeader'
-import { accessor, dateFormat } from './utils/propTypes'
import { notify } from './utils/helpers'
-import { accessor as get } from './utils/accessors'
import { inRange, sortEvents } from './utils/eventLevels'
export default class TimeGrid extends Component {
@@ -21,30 +19,22 @@ export default class TimeGrid extends Component {
resources: PropTypes.array,
step: PropTypes.number,
+ timeslots: PropTypes.number,
range: PropTypes.arrayOf(PropTypes.instanceOf(Date)),
min: PropTypes.instanceOf(Date),
max: PropTypes.instanceOf(Date),
getNow: PropTypes.func.isRequired,
scrollToTime: PropTypes.instanceOf(Date),
- eventPropGetter: PropTypes.func,
- dayPropGetter: PropTypes.func,
- dayFormat: dateFormat,
showMultiDayTimes: PropTypes.bool,
- culture: PropTypes.string,
rtl: PropTypes.bool,
width: PropTypes.number,
- titleAccessor: accessor.isRequired,
- tooltipAccessor: accessor.isRequired,
- allDayAccessor: accessor.isRequired,
- startAccessor: accessor.isRequired,
- endAccessor: accessor.isRequired,
- resourceAccessor: accessor.isRequired,
-
- resourceIdAccessor: accessor.isRequired,
- resourceTitleAccessor: accessor.isRequired,
+ accessors: PropTypes.object.isRequired,
+ components: PropTypes.object.isRequired,
+ getters: PropTypes.object.isRequired,
+ localizer: PropTypes.object.isRequired,
selected: PropTypes.object,
selectable: PropTypes.oneOf([true, false, 'ignoreEvents']),
@@ -58,9 +48,6 @@ export default class TimeGrid extends Component {
onDoubleClickEvent: PropTypes.func,
onDrillDown: PropTypes.func,
getDrilldownView: PropTypes.func.isRequired,
-
- messages: PropTypes.object,
- components: PropTypes.object.isRequired,
}
static defaultProps = {
@@ -150,44 +137,27 @@ export default class TimeGrid extends Component {
}
renderEvents(range, events, today, resources) {
- let {
- min,
- max,
- endAccessor,
- startAccessor,
- resourceAccessor,
- resourceIdAccessor,
- components,
- } = this.props
+ let { min, max, components, accessors, localizer } = this.props
return range.map((date, idx) => {
let daysEvents = events.filter(event =>
- dates.inRange(
- date,
- get(event, startAccessor),
- get(event, endAccessor),
- 'day'
- )
+ dates.inRange(date, accessors.start(event), accessors.end(event), 'day')
)
return resources.map((resource, id) => {
+ const resourceId = accessors.resourceId(resource)
let eventsToDisplay = !resource
? daysEvents
- : daysEvents.filter(
- event =>
- get(event, resourceAccessor) ===
- get(resource, resourceIdAccessor)
- )
+ : daysEvents.filter(event => accessors.resource(event) === resourceId)
return (
{
- if (inRange(event, start, end, this.props)) {
- let eStart = get(event, startAccessor),
- eEnd = get(event, endAccessor)
+ if (inRange(event, start, end, accessors)) {
+ let eStart = accessors.start(event),
+ eEnd = accessors.end(event)
if (
- get(event, allDayAccessor) ||
+ accessors.allDay(event) ||
(dates.isJustDate(eStart) && dates.isJustDate(eEnd)) ||
(!showMultiDayTimes && !dates.eq(eStart, eEnd, 'day'))
) {
@@ -242,7 +213,7 @@ export default class TimeGrid extends Component {
}
})
- allDayEvents.sort((a, b) => sortEvents(a, b, this.props))
+ allDayEvents.sort((a, b) => sortEvents(a, b, accessors))
return (
@@ -251,28 +222,15 @@ export default class TimeGrid extends Component {
events={allDayEvents}
width={width}
getNow={getNow}
- dayFormat={this.props.dayFormat}
- culture={this.props.culture}
+ localizer={localizer}
resources={resources}
selected={selected}
selectable={this.props.selectable}
- startAccessor={startAccessor}
- endAccessor={endAccessor}
- titleAccessor={this.props.titleAccessor}
- tooltipAccessor={this.props.tooltipAccessor}
- allDayAccessor={this.props.allDayAccessor}
- resourceAccessor={this.props.resourceAccessor}
- resourceIdAccessor={this.props.resourceIdAccessor}
- resourceTitleAccessor={this.props.resourceTitleAccessor}
+ accessors={accessors}
+ getters={getters}
+ components={components}
isOverflowing={this.state.isOverflowing}
- dayPropGetter={this.props.dayPropGetter}
- eventPropGetter={eventPropGetter}
longPressThreshold={longPressThreshold}
- headerComponent={components.header}
- eventComponent={components.event}
- eventWrapperComponent={components.eventWrapper}
- dateCellWrapperComponent={components.dateCellWrapper}
- timeGutterHeaderComponent={components.timeGutterHeader}
onSelectSlot={this.handleSelectAllDaySlot}
onSelectEvent={this.handleSelectAlldayEvent}
onDoubleClickEvent={this.props.onDoubleClickEvent}
@@ -281,9 +239,14 @@ export default class TimeGrid extends Component {
/>
{this.renderEvents(range, rangeEvents, getNow(), resources || [null])}
diff --git a/src/TimeGridEvent.js b/src/TimeGridEvent.js
new file mode 100644
index 000000000..de43dfdfa
--- /dev/null
+++ b/src/TimeGridEvent.js
@@ -0,0 +1,63 @@
+import cn from 'classnames'
+import React from 'react'
+
+/* eslint-disable react/prop-types */
+function TimeGridEvent(props) {
+ const {
+ style,
+ className,
+ event,
+ accessors,
+ isRtl,
+ selected,
+ label,
+ continuesEarlier,
+ continuesLater,
+ getters,
+ components: { event: Event, eventWrapper: EventWrapper },
+ } = props
+ let title = accessors.title(event)
+ let tooltip = accessors.tooltip(event)
+ let end = accessors.end(event)
+ let start = accessors.start(event)
+
+ let userProps = getters.eventProp(event, start, end, selected)
+
+ let { height, top, width, xOffset } = style
+ const inner = [
+
+ {label}
+
,
+
+ {Event ? : title}
+
,
+ ]
+
+ return (
+
+
+ {inner}
+
+
+ )
+}
+
+export default TimeGridEvent
diff --git a/src/TimeGridHeader.js b/src/TimeGridHeader.js
index f7016cf57..f94810d5a 100644
--- a/src/TimeGridHeader.js
+++ b/src/TimeGridHeader.js
@@ -4,12 +4,9 @@ import scrollbarSize from 'dom-helpers/util/scrollbarSize'
import React from 'react'
import dates from './utils/dates'
-import { elementType, accessor, dateFormat } from './utils/propTypes'
-import localizer from './localizer'
import DateContentRow from './DateContentRow'
import Header from './Header'
import { notify } from './utils/helpers'
-import { accessor as get } from './utils/accessors'
class TimeGridHeader extends React.Component {
static propTypes = {
@@ -19,43 +16,24 @@ class TimeGridHeader extends React.Component {
getNow: PropTypes.func.isRequired,
isOverflowing: PropTypes.bool,
- dayFormat: dateFormat,
- eventPropGetter: PropTypes.func,
- dayPropGetter: PropTypes.func,
- culture: PropTypes.string,
-
rtl: PropTypes.bool,
width: PropTypes.number,
- titleAccessor: accessor.isRequired,
- tooltipAccessor: accessor.isRequired,
- allDayAccessor: accessor.isRequired,
- startAccessor: accessor.isRequired,
- endAccessor: accessor.isRequired,
- resourceAccessor: accessor.isRequired,
-
- resourceIdAccessor: accessor.isRequired,
- resourceTitleAccessor: accessor.isRequired,
+ localizer: PropTypes.object.isRequired,
+ accessors: PropTypes.object.isRequired,
+ components: PropTypes.object.isRequired,
+ getters: PropTypes.object.isRequired,
selected: PropTypes.object,
selectable: PropTypes.oneOf([true, false, 'ignoreEvents']),
longPressThreshold: PropTypes.number,
- headerComponent: elementType,
- eventComponent: elementType,
- eventWrapperComponent: elementType.isRequired,
- dateCellWrapperComponent: elementType,
- timeGutterHeaderComponent: elementType,
-
onSelectSlot: PropTypes.func,
onSelectEvent: PropTypes.func,
onDoubleClickEvent: PropTypes.func,
onDrillDown: PropTypes.func,
getDrilldownView: PropTypes.func.isRequired,
}
- static defaultProps = {
- headerComponent: Header,
- }
handleHeaderClick = (date, view, e) => {
e.preventDefault()
@@ -63,7 +41,7 @@ class TimeGridHeader extends React.Component {
}
renderHeaderResources(range, resources) {
- const { resourceTitleAccessor, getNow } = this.props
+ const { accessors, getNow } = this.props
const today = getNow()
return range.map((date, i) => {
@@ -76,7 +54,7 @@ class TimeGridHeader extends React.Component {
dates.eq(date, today, 'day') && 'rbc-today'
)}
>
- {get(resource, resourceTitleAccessor)}
+ {accessors.resourceTitle(resource)}
)
})
@@ -85,30 +63,23 @@ class TimeGridHeader extends React.Component {
renderHeaderCells(range) {
let {
- dayFormat,
- culture,
- dayPropGetter,
+ localizer,
getDrilldownView,
getNow,
- headerComponent: Header,
+ getters: { dayProp },
+ components: { header: HeaderComponent = Header },
} = this.props
const today = getNow()
return range.map((date, i) => {
let drilldownView = getDrilldownView(date)
- let label = localizer.format(date, dayFormat, culture)
+ let label = localizer.format(date, 'dayFormat')
- const { className, style } = (dayPropGetter && dayPropGetter(date)) || {}
+ const { className, style } = dayProp(date)
let header = (
-
+
)
return (
@@ -135,21 +106,56 @@ class TimeGridHeader extends React.Component {
)
})
}
+ renderRow = resource => {
+ let {
+ events,
+ rtl,
+ selectable,
+ getNow,
+ range,
+ getters,
+ localizer,
+ accessors,
+ components,
+ } = this.props
+
+ const resourceId = accessors.resourceId(resource)
+ let eventsToDisplay = resource
+ ? events.filter(event => accessors.resource(event) === resourceId)
+ : events
+
+ return (
+
+ )
+ }
render() {
let {
width,
- events,
rtl,
- selectable,
resources,
- getNow,
range,
isOverflowing,
- eventComponent,
- dateCellWrapperComponent,
- eventWrapperComponent,
- timeGutterHeaderComponent: TimeGutterHeader,
+ components: { timeGutterHeader: TimeGutterHeader },
} = this.props
let style = {}
@@ -177,31 +183,13 @@ class TimeGridHeader extends React.Component {
)}
-
+ {resources ? (
+
+ {resources.map(resource => this.renderRow(resource))}
+
+ ) : (
+ this.renderRow()
+ )}
)
diff --git a/src/TimeGutter.js b/src/TimeGutter.js
index 8f0db2564..6a6b2975a 100644
--- a/src/TimeGutter.js
+++ b/src/TimeGutter.js
@@ -3,8 +3,6 @@ import PropTypes from 'prop-types'
import React, { Component } from 'react'
import * as TimeSlotUtils from './utils/TimeSlots'
-import { dateFormat } from './utils/propTypes'
-import localizer from './localizer'
import TimeSlotGroup from './TimeSlotGroup'
export default class TimeGutter extends Component {
@@ -15,8 +13,7 @@ export default class TimeGutter extends Component {
step: PropTypes.number.isRequired,
getNow: PropTypes.func.isRequired,
- timeGutterFormat: dateFormat,
- culture: PropTypes.string,
+ localizer: PropTypes.object.isRequired,
resource: PropTypes.string,
}
@@ -39,18 +36,18 @@ export default class TimeGutter extends Component {
renderSlot = (value, idx) => {
if (idx !== 0) return null
- const { timeGutterFormat, getNow, culture } = this.props
+ const { localizer, getNow } = this.props
const isNow = this.slotMetrics.dateIsInGroup(getNow(), idx)
return (
- {localizer.format(value, timeGutterFormat, culture)}
+ {localizer.format(value, 'timeGutterFormat')}
)
}
render() {
- const { culture, resource } = this.props
+ const { resource } = this.props
return (
@@ -59,7 +56,6 @@ export default class TimeGutter extends Component {
diff --git a/src/TimeSlot.js b/src/TimeSlot.js
deleted file mode 100644
index add35e784..000000000
--- a/src/TimeSlot.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import PropTypes from 'prop-types'
-import React, { Component } from 'react'
-import cn from 'classnames'
-import { elementType } from './utils/propTypes'
-
-export default class TimeSlot extends Component {
- static propTypes = {
- timeSlotWrapperComponent: elementType,
- value: PropTypes.instanceOf(Date).isRequired,
- showLabel: PropTypes.bool,
- slotPropGetter: PropTypes.func,
- resource: PropTypes.string,
- }
-
- static defaultProps = {
- showLabel: false,
- content: '',
- }
-
- render() {
- const { value, slotPropGetter, resource, children } = this.props
- const Wrapper = this.props.timeSlotWrapperComponent
- const { className, style } = (slotPropGetter && slotPropGetter(value)) || {}
-
- return (
-
-
- {children}
-
-
- )
- }
-}
diff --git a/src/TimeSlotGroup.js b/src/TimeSlotGroup.js
index 74a7192d6..bdc3003c7 100644
--- a/src/TimeSlotGroup.js
+++ b/src/TimeSlotGroup.js
@@ -2,19 +2,15 @@ import cn from 'classnames'
import PropTypes from 'prop-types'
import React, { Component } from 'react'
-import { elementType } from './utils/propTypes'
import BackgroundWrapper from './BackgroundWrapper'
export default class TimeSlotGroup extends Component {
static propTypes = {
renderSlot: PropTypes.func,
- timeSlotWrapperComponent: elementType,
group: PropTypes.array.isRequired,
- slotPropGetter: PropTypes.func,
resource: PropTypes.any,
- }
- static defaultProps = {
- timeSlotWrapperComponent: BackgroundWrapper,
+ components: PropTypes.object,
+ getters: PropTypes.object,
}
render() {
@@ -22,15 +18,14 @@ export default class TimeSlotGroup extends Component {
renderSlot,
resource,
group,
- slotPropGetter,
- timeSlotWrapperComponent: Wrapper,
+ getters,
+ components: { timeSlotWrapper: Wrapper = BackgroundWrapper } = {},
} = this.props
return (
{group.map((value, idx) => {
- const slotProps = (slotPropGetter && slotPropGetter(value)) || {}
-
+ const slotProps = getters ? getters.slotProp(value) : {}
return (
diff --git a/src/Week.js b/src/Week.js
index 7a01acb11..7e8a1508d 100644
--- a/src/Week.js
+++ b/src/Week.js
@@ -1,7 +1,6 @@
import PropTypes from 'prop-types'
import React from 'react'
import dates from './utils/dates'
-import localizer from './localizer'
import { navigate } from './utils/constants'
import TimeGrid from './TimeGrid'
@@ -33,21 +32,17 @@ Week.navigate = (date, action) => {
}
}
-Week.range = (date, { culture }) => {
- let firstOfWeek = localizer.startOfWeek(culture)
+Week.range = (date, { localizer }) => {
+ let firstOfWeek = localizer.startOfWeek()
let start = dates.startOf(date, 'week', firstOfWeek)
let end = dates.endOf(date, 'week', firstOfWeek)
return dates.range(start, end)
}
-Week.title = (date, { formats, culture }) => {
- let [start, ...rest] = Week.range(date, { culture })
- return localizer.format(
- { start, end: rest.pop() },
- formats.dayRangeHeaderFormat,
- culture
- )
+Week.title = (date, { localizer }) => {
+ let [start, ...rest] = Week.range(date, { localizer })
+ return localizer.format({ start, end: rest.pop() }, 'dayRangeHeaderFormat')
}
export default Week
diff --git a/src/WorkWeek.js b/src/WorkWeek.js
index bb148d1bb..d13086b20 100644
--- a/src/WorkWeek.js
+++ b/src/WorkWeek.js
@@ -3,7 +3,6 @@ import React from 'react'
import Week from './Week'
import TimeGrid from './TimeGrid'
-import localizer from './localizer'
function workWeekRange(date, options) {
return Week.range(date, options).filter(
@@ -34,13 +33,10 @@ WorkWeek.range = (date, options) => {
WorkWeek.navigate = Week.navigate
-WorkWeek.title = (date, { formats, culture }) => {
- let [start, ...rest] = workWeekRange(date, { culture })
- return localizer.format(
- { start, end: rest.pop() },
- formats.dayRangeHeaderFormat,
- culture
- )
+WorkWeek.title = (date, { localizer }) => {
+ let [start, ...rest] = workWeekRange(date, { localizer })
+
+ return localizer.format({ start, end: rest.pop() }, 'dayRangeHeaderFormat')
}
export default WorkWeek
diff --git a/src/addons/dragAndDrop/DraggableEventWrapper.js b/src/addons/dragAndDrop/DraggableEventWrapper.js
deleted file mode 100644
index 6cf8331f1..000000000
--- a/src/addons/dragAndDrop/DraggableEventWrapper.js
+++ /dev/null
@@ -1,192 +0,0 @@
-import PropTypes from 'prop-types'
-import React from 'react'
-import { DragSource } from 'react-dnd'
-import { getEmptyImage } from 'react-dnd-html5-backend'
-import cn from 'classnames'
-import compose from './compose'
-import { accessor } from '../../utils/propTypes'
-import { accessor as get } from '../../utils/accessors'
-
-import BigCalendar from '../../index'
-
-class DraggableEventWrapper extends React.Component {
- static contextTypes = {
- components: PropTypes.object,
- draggableAccessor: accessor,
- resizableAccessor: accessor,
- }
-
- static propTypes = {
- event: PropTypes.object.isRequired,
-
- connectDragSource: PropTypes.func.isRequired,
- connectTopDragPreview: PropTypes.func.isRequired,
- connectTopDragSource: PropTypes.func.isRequired,
- connectBottomDragPreview: PropTypes.func.isRequired,
- connectBottomDragSource: PropTypes.func.isRequired,
- connectLeftDragPreview: PropTypes.func.isRequired,
- connectLeftDragSource: PropTypes.func.isRequired,
- connectRightDragPreview: PropTypes.func.isRequired,
- connectRightDragSource: PropTypes.func.isRequired,
-
- draggable: PropTypes.bool,
- allDay: PropTypes.bool,
- isRow: PropTypes.bool,
- continuesPrior: PropTypes.bool,
- continuesAfter: PropTypes.bool,
- isDragging: PropTypes.bool,
- isResizing: PropTypes.bool,
- }
-
- componentDidMount() {
- // this is needed to prevent the backend from
- // screenshot'ing the event during a resize which
- // would be very confusing visually
- const emptyImage = getEmptyImage()
- const previewOptions = { captureDraggingState: true }
- this.props.connectTopDragPreview(emptyImage, previewOptions)
- this.props.connectBottomDragPreview(emptyImage, previewOptions)
- this.props.connectLeftDragPreview(emptyImage, previewOptions)
- this.props.connectRightDragPreview(emptyImage, previewOptions)
- }
-
- render() {
- const { components } = this.context
- const EventWrapper =
- components.eventWrapper || BigCalendar.components.eventWrapper
-
- let {
- connectDragSource,
- connectTopDragSource,
- connectBottomDragSource,
- connectLeftDragSource,
- connectRightDragSource,
- isDragging,
- isResizing,
- children,
- event,
- allDay,
- isRow,
- continuesPrior,
- continuesAfter,
- } = this.props
-
- let { draggableAccessor, resizableAccessor } = this.context
-
- let isDraggable = draggableAccessor ? !!get(event, draggableAccessor) : true
-
- /* Event is not draggable, no need to wrap it */
- if (!isDraggable) {
- return children
- }
-
- let StartAnchor = null,
- EndAnchor = null
-
- /*
- * The resizability of events depends on whether they are
- * allDay events and how they are displayed.
- *
- * 1. If the event is being shown in an event row (because
- * it is an allDay event shown in the header row or because as
- * in month view the view is showing all events as rows) then we
- * allow east-west resizing.
- *
- * 2. Otherwise the event is being displayed
- * normally, we can drag it north-south to resize the times.
- *
- * See `DropWrappers` for handling of the drop of such events.
- *
- * Notwithstanding the above, we never show drag anchors for
- * events which continue beyond current component. This happens
- * in the middle of events when showMultiDay is true, and to
- * events at the edges of the calendar's min/max location.
- */
-
- let isResizable = resizableAccessor ? !!get(event, resizableAccessor) : true
-
- if (isResizable) {
- if (isRow || allDay) {
- const anchor = (
-
- )
- StartAnchor = !continuesPrior && connectLeftDragSource(anchor)
- EndAnchor = !continuesAfter && connectRightDragSource(anchor)
- } else {
- const anchor = (
-
- )
- StartAnchor = !continuesPrior && connectTopDragSource(anchor)
- EndAnchor = !continuesAfter && connectBottomDragSource(anchor)
- }
-
- /*
- * props.children is the singular
component.
- * BigCalendar positions the Event abolutely and we
- * need the anchors to be part of that positioning.
- * So we insert the anchors inside the Event's children
- * rather than wrap the Event here as the latter approach
- * would lose the positioning.
- */
- const childrenWithAnchors = (
-
- {StartAnchor}
- {children.props.children}
- {EndAnchor}
-
- )
-
- children = React.cloneElement(children, {
- className: cn(
- children.props.className,
- isDragging && 'rbc-addons-dnd-dragging',
- isResizing && 'rbc-addons-dnd-resizing'
- ),
- children: childrenWithAnchors, // replace original event child with anchor-embellished child
- })
- }
-
- return (
-
- {connectDragSource(children)}
-
- )
- }
-}
-
-/* drag sources */
-const makeEventSource = anchor => ({
- beginDrag: ({ event }) => ({ event, anchor }),
- //canDrag: ({ event }) => true, // support per-event dragability/sizability
-})
-
-export default compose(
- DragSource('event', makeEventSource('drop'), (connect, monitor) => ({
- connectDragSource: connect.dragSource(),
- isDragging: monitor.isDragging(),
- })),
- DragSource('event', makeEventSource('resizeTop'), (connect, monitor) => ({
- connectTopDragSource: connect.dragSource(),
- connectTopDragPreview: connect.dragPreview(),
- isResizing: monitor.isDragging(),
- })),
- DragSource('event', makeEventSource('resizeBottom'), (connect, monitor) => ({
- connectBottomDragSource: connect.dragSource(),
- connectBottomDragPreview: connect.dragPreview(),
- isResizing: monitor.isDragging(),
- })),
- DragSource('event', makeEventSource('resizeLeft'), (connect, monitor) => ({
- connectLeftDragSource: connect.dragSource(),
- connectLeftDragPreview: connect.dragPreview(),
- isResizing: monitor.isDragging(),
- })),
- DragSource('event', makeEventSource('resizeRight'), (connect, monitor) => ({
- connectRightDragSource: connect.dragSource(),
- connectRightDragPreview: connect.dragPreview(),
- isResizing: monitor.isDragging(),
- }))
-)(DraggableEventWrapper)
diff --git a/src/addons/dragAndDrop/DropWrappers.js b/src/addons/dragAndDrop/DropWrappers.js
deleted file mode 100644
index 210549a27..000000000
--- a/src/addons/dragAndDrop/DropWrappers.js
+++ /dev/null
@@ -1,233 +0,0 @@
-import PropTypes from 'prop-types'
-import React from 'react'
-import { DropTarget } from 'react-dnd'
-import cn from 'classnames'
-import noop from 'lodash/noop'
-
-import { accessor } from '../../utils/propTypes'
-import { accessor as get } from '../../utils/accessors'
-import dates from '../../utils/dates'
-import BigCalendar from '../../index'
-
-function getEventDropProps(start, end, dropDate, droppedInAllDay) {
- // Calculate duration between original start and end dates
- const duration = dates.diff(start, end)
-
- /*
- * If the event is dropped in a "Day" cell, preserve an event's start time by extracting the hours and minutes off
- * the original start date and add it to newDate.value
- *
- * note: this behavior remains for backward compatibility, but might be counter-intuitive to some:
- * dragging an event from the grid to the day header might more commonly mean "make this an allDay event
- * on that day" - but the behavior here implements "keep the times of the event, but move it to the
- * new day".
- *
- * To permit either interpretation, we embellish a new `allDay` parameter which determines whether the
- * event was dropped on the day header or not.
- */
-
- const nextStart = droppedInAllDay ? dates.merge(dropDate, start) : dropDate
- const nextEnd = dates.add(nextStart, duration, 'milliseconds')
-
- return {
- start: nextStart,
- end: nextEnd,
- allDay: droppedInAllDay,
- }
-}
-
-class DropWrapper extends React.Component {
- static propTypes = {
- connectDropTarget: PropTypes.func.isRequired,
- isOver: PropTypes.bool,
- range: PropTypes.arrayOf(PropTypes.instanceOf(Date)),
- type: PropTypes.string,
- value: PropTypes.instanceOf(Date),
- }
-
- static contextTypes = {
- onEventDrop: PropTypes.func,
- onEventResize: PropTypes.func,
- components: PropTypes.object,
- dragDropManager: PropTypes.object,
- startAccessor: accessor,
- endAccessor: accessor,
- allDayAccessor: accessor,
- step: PropTypes.number,
- }
-
- // TODO: this is WIP to retain the drag offset so the
- // drag target better tracks the mouseDown location, not
- // just the top of the event.
- //
- // constructor(...args) {
- // super(...args);
- // this.state = { isOver: false };
- // }
- //
- // componentWillMount() {
- // let monitor = this.context.dragDropManager.getMonitor()
- //
- // this.monitor = monitor
- //
- // this.unsubscribeToStateChange = monitor
- // .subscribeToStateChange(this.handleStateChange)
- //
- // this.unsubscribeToOffsetChange = monitor
- // .subscribeToOffsetChange(this.handleOffsetChange)
- // }
- //
- // componentWillUnmount() {
- // this.monitor = null
- // this.unsubscribeToStateChange()
- // this.unsubscribeToOffsetChange()
- // }
- //
- // handleStateChange = () => {
- // const event = this.monitor.getItem();
- // if (!event && this.state.isOver) {
- // this.setState({ isOver: false });
- // }
- // }
- //
- // handleOffsetChange = () => {
- // const { value } = this.props;
- // const { start, end } = this.monitor.getItem();
- //
- // const isOver = dates.inRange(value, start, end, 'minute');
- // if (this.state.isOver !== isOver) {
- // this.setState({ isOver });
- // }
- // };
-
- render() {
- const {
- connectDropTarget,
- children,
- isOver,
- range,
- type,
- value,
- } = this.props
-
- // Check if wrapper component of this type was passed in, otherwise use library default
- const { components } = this.context
- const BackgroundWrapper = components[type] || BigCalendar.components[type]
- const backgroundWrapperProps = {
- value,
- }
-
- if (range) {
- backgroundWrapperProps.range = range
- }
-
- let resultingChildren = children
- if (isOver) {
- resultingChildren = React.cloneElement(children, {
- className: cn(children.props.className, 'rbc-addons-dnd-over'),
- })
- }
-
- return (
-
- {connectDropTarget(resultingChildren)}
-
- )
- }
-}
-
-function createDropWrapper(type) {
- function collectTarget(connect, monitor) {
- return {
- type,
- connectDropTarget: connect.dropTarget(),
- isOver: monitor.isOver(),
- }
- }
-
- const dropTarget = {
- drop(_, monitor, { props, context }) {
- const itemType = monitor.getItemType()
- if (itemType !== 'event') return
-
- const item = monitor.getItem()
- const { event, anchor } = item
- const { value, resource } = props
- const {
- onEventDrop = noop,
- onEventResize = noop,
- startAccessor,
- endAccessor,
- allDayAccessor,
- step,
- } = context
-
- let start = get(event, startAccessor)
- let end = get(event, endAccessor)
- let allDay = get(event, allDayAccessor)
- let droppedInAllDay = type === 'dateCellWrapper'
-
- switch (anchor) {
- case 'drop':
- onEventDrop({
- event,
- ...getEventDropProps(start, end, value, droppedInAllDay),
- resourceId: resource,
- })
- return // all the other cases issue resize action...
-
- // the remaining cases are all resizes...
-
- case 'resizeTop':
- // dragging the top means the event isn't an allDay
- // dropping into the header changes the date, preserves the time
- // dropping elsewhere is just a normal resize
- start = droppedInAllDay ? dates.merge(value, start) : value
- break
-
- case 'resizeBottom':
- // dragging the bottom means the event isn't an allDay
- // dropping into the header changes the date, preserves the time
- // dropping elsewhere is just a normal resize
- // ... but end dates are exclusive so advance it the next slot (e.g. just past the end of this one)
- end = droppedInAllDay
- ? dates.merge(value, end)
- : dates.add(value, step, 'minutes')
- break
-
- case 'resizeLeft':
- // dragging the left means we're dragging something from an event row
- // all cases are the same:
- // preserve its start time, but change the date (works for both allDay and non-allDay)
- start = dates.merge(value, start)
- break
-
- case 'resizeRight':
- // dragging the right means we're dragging something from an event row
- // this case is tricky: for non-allDay events, we just want to change
- // the end date (preserving the end time). For allDay events, we want to change
- // the end date to one day later than the drop date because end dates are exclusive
- end = allDay ? dates.add(value, 1, 'day') : dates.merge(value, end)
- break
-
- default:
- return // don't issue resize
- }
-
- // fall here for all of the resize cases
- // note: the 'drop' param is here for backward compatibility - maybe remove in future?
- onEventResize('drop', {
- event,
- start,
- end,
- resourceId: resource,
- allDay: droppedInAllDay,
- })
- },
- }
-
- return DropTarget('event', dropTarget, collectTarget)(DropWrapper)
-}
-
-export const DroppableDateCellWrapper = createDropWrapper('dateCellWrapper')
-export const DroppableDayWrapper = createDropWrapper('dayWrapper')
diff --git a/src/addons/dragAndDrop/EventContainerWrapper.js b/src/addons/dragAndDrop/EventContainerWrapper.js
new file mode 100644
index 000000000..06117cd14
--- /dev/null
+++ b/src/addons/dragAndDrop/EventContainerWrapper.js
@@ -0,0 +1,265 @@
+import PropTypes from 'prop-types'
+import React from 'react'
+import dates from '../../utils/dates'
+import { findDOMNode } from 'react-dom'
+
+import Selection, {
+ getBoundsForNode,
+ getEventNodeFromPoint,
+} from '../../Selection'
+import TimeGridEvent from '../../TimeGridEvent'
+import { dragAccessors } from './common'
+import NoopWrapper from '../../NoopWrapper'
+
+const pointerInColumn = (node, x, y) => {
+ const { left, right, top } = getBoundsForNode(node)
+ return x < right + 10 && x > left && (y == null || y > top)
+}
+const propTypes = {}
+
+class EventContainerWrapper extends React.Component {
+ static propTypes = {
+ accessors: PropTypes.object.isRequired,
+ components: PropTypes.object.isRequired,
+ getters: PropTypes.object.isRequired,
+ localizer: PropTypes.object.isRequired,
+ slotMetrics: PropTypes.object.isRequired,
+ resource: PropTypes.any,
+ }
+
+ static contextTypes = {
+ onEventDrop: PropTypes.func,
+ onEventResize: PropTypes.func,
+ dragAndDropAction: PropTypes.object,
+ onMove: PropTypes.func,
+ onResize: PropTypes.func,
+ }
+
+ constructor(...args) {
+ super(...args)
+ this.state = {}
+ }
+
+ componentDidMount() {
+ this._selectable()
+ }
+
+ componentWillUnmount() {
+ this._teardownSelectable()
+ }
+
+ reset() {
+ if (this.state.event)
+ this.setState({ event: null, top: null, height: null })
+ }
+
+ update(event, { startDate, endDate, top, height }) {
+ this.setState()
+
+ const { event: lastEvent } = this.state
+ if (
+ lastEvent &&
+ startDate === lastEvent.start &&
+ endDate === lastEvent.end
+ ) {
+ return
+ }
+
+ this.setState({
+ top,
+ height,
+ event: { ...event, start: startDate, end: endDate },
+ })
+ }
+
+ handleMove = ({ event }, point, node) => {
+ const { slotMetrics } = this.props
+
+ if (!pointerInColumn(node, point.x, point.y)) {
+ this.reset()
+ return
+ }
+
+ let currentSlot = slotMetrics.closestSlotFromPoint(
+ { y: point.y - this.eventOffsetTop, x: point.x },
+ getBoundsForNode(node)
+ )
+
+ let end = dates.add(
+ currentSlot,
+ dates.diff(event.start, event.end, 'minutes'),
+ 'minutes'
+ )
+
+ this.update(event, slotMetrics.getRange(currentSlot, end))
+ }
+
+ handleResize({ event, direction }, point, node) {
+ let start, end
+ const { accessors, slotMetrics } = this.props
+ const bounds = getBoundsForNode(node)
+
+ let currentSlot = slotMetrics.closestSlotFromPoint(point, bounds)
+ if (direction === 'UP') {
+ end = accessors.end(event)
+ start = dates.min(currentSlot, slotMetrics.closestSlotFromDate(end, -1))
+ } else if (direction === 'DOWN') {
+ start = accessors.start(event)
+ end = dates.max(currentSlot, slotMetrics.closestSlotFromDate(start))
+ }
+
+ this.update(event, slotMetrics.getRange(start, end))
+ }
+
+ _selectable = () => {
+ let node = findDOMNode(this)
+ let selector = (this._selector = new Selection(() =>
+ node.closest('.rbc-time-view')
+ ))
+
+ selector.on('beforeSelect', point => {
+ const { action } = this.context.dragAndDropAction
+ const eventNode = getEventNodeFromPoint(node, point)
+
+ if (!eventNode) return false
+ this.eventOffsetTop = point.y - getBoundsForNode(eventNode).top
+
+ return (
+ action === 'move' ||
+ (action === 'resize' && pointerInColumn(node, point.x, point.y))
+ )
+ })
+
+ let handler = box => {
+ const { dragAndDropAction } = this.context
+
+ switch (dragAndDropAction.action) {
+ case 'move':
+ this.handleMove(dragAndDropAction, box, node)
+ break
+ case 'resize':
+ this.handleResize(dragAndDropAction, box, node)
+ break
+ }
+ }
+
+ selector.on('selecting', handler)
+
+ selector.on('select', () => {
+ const { dragAndDropAction } = this.context
+
+ switch (dragAndDropAction.action) {
+ case 'move':
+ this.handleEventDrop()
+ break
+ case 'resize':
+ this.handleEventResize()
+ break
+ }
+
+ this._isInitialContainer = false
+ })
+
+ selector.on('click', () => {
+ this._isInitialContainer = false
+ this.context.onMove(null)
+ })
+ }
+
+ handleEventDrop = () => {
+ if (!this.state.event) return
+
+ const { resource } = this.props
+ const { start, end } = this.state.event
+ const { dragAndDropAction, onMove, onEventDrop } = this.context
+
+ this.reset()
+
+ onMove(null)
+
+ onEventDrop({
+ end,
+ start,
+ event: dragAndDropAction.event,
+ resourceId: resource,
+ })
+ }
+
+ handleEventResize = () => {
+ const { event } = this.state
+
+ const { dragAndDropAction, onResize, onEventResize } = this.context
+
+ this.reset()
+
+ onResize(null)
+
+ onEventResize({
+ event: dragAndDropAction.event,
+ start: event.start,
+ end: event.end,
+ })
+ }
+
+ _teardownSelectable = () => {
+ if (!this._selector) return
+ this._selector.teardown()
+ this._selector = null
+ }
+
+ render() {
+ const {
+ children,
+ accessors,
+ components,
+ getters,
+ slotMetrics,
+ localizer,
+ } = this.props
+
+ let { event, top, height } = this.state
+
+ if (!event) return children
+
+ const events = children.props.children
+ const { start, end } = event
+
+ let label
+ let format = 'eventTimeRangeFormat'
+
+ const startsBeforeDay = slotMetrics.startsBeforeDay(start)
+ const startsAfterDay = slotMetrics.startsAfterDay(end)
+
+ if (startsBeforeDay) format = 'eventTimeRangeEndFormat'
+ else if (startsAfterDay) format = 'eventTimeRangeStartFormat'
+
+ if (startsBeforeDay && startsAfterDay) label = localizer.messages.allDay
+ else label = localizer.format({ start, end }, format)
+
+ return React.cloneElement(children, {
+ children: (
+
+ {events}
+
+ {event && (
+
+ )}
+
+ ),
+ })
+ }
+}
+
+EventContainerWrapper.propTypes = propTypes
+
+export default EventContainerWrapper
diff --git a/src/addons/dragAndDrop/EventWrapper.js b/src/addons/dragAndDrop/EventWrapper.js
new file mode 100644
index 000000000..3e3875037
--- /dev/null
+++ b/src/addons/dragAndDrop/EventWrapper.js
@@ -0,0 +1,168 @@
+import PropTypes from 'prop-types'
+import React from 'react'
+import cn from 'classnames'
+import { accessor } from '../../utils/propTypes'
+import { accessor as get } from '../../utils/accessors'
+
+import BigCalendar from '../../index'
+
+class EventWrapper extends React.Component {
+ static contextTypes = {
+ components: PropTypes.object,
+ draggableAccessor: accessor,
+ resizableAccessor: accessor,
+ onMove: PropTypes.func.isRequired,
+ onResize: PropTypes.func.isRequired,
+ dragAndDropAction: PropTypes.object,
+ }
+
+ static propTypes = {
+ type: PropTypes.oneOf(['date', 'time']),
+ event: PropTypes.object.isRequired,
+
+ draggable: PropTypes.bool,
+ allDay: PropTypes.bool,
+ isRow: PropTypes.bool,
+ continuesPrior: PropTypes.bool,
+ continuesAfter: PropTypes.bool,
+ isDragging: PropTypes.bool,
+ isResizing: PropTypes.bool,
+ }
+
+ handleResizeUp = e => {
+ if (e.button !== 0) return
+ e.stopPropagation()
+ this.context.onResize(this.props.event, 'UP')
+ }
+ handleResizeDown = e => {
+ if (e.button !== 0) return
+ e.stopPropagation()
+ this.context.onResize(this.props.event, 'DOWN')
+ }
+ handleResizeLeft = e => {
+ if (e.button !== 0) return
+ e.stopPropagation()
+ this.context.onResize(this.props.event, 'LEFT')
+ }
+ handleResizeRight = e => {
+ if (e.button !== 0) return
+ e.stopPropagation()
+ this.context.onResize(this.props.event, 'RIGHT')
+ }
+ handleStartDragging = e => {
+ if (e.button === 0) this.context.onMove(this.props.event)
+ }
+
+ renderAnchor(direction) {
+ const cls = direction === 'Up' || direction === 'Down' ? 'ns' : 'ew'
+ return (
+
+ )
+ }
+
+ render() {
+ const { components } = this.context
+ const EventWrapper =
+ components.eventWrapper || BigCalendar.components.eventWrapper
+
+ let {
+ isResizing,
+ children,
+ event,
+ allDay,
+ type,
+ continuesPrior,
+ continuesAfter,
+ } = this.props
+
+ if (event.__isPreview)
+ return React.cloneElement(children, {
+ className: cn(children.props.className, 'rbc-addons-dnd-drag-preview'),
+ })
+
+ let { draggableAccessor, resizableAccessor } = this.context
+
+ let isDraggable = draggableAccessor ? !!get(event, draggableAccessor) : true
+
+ /* Event is not draggable, no need to wrap it */
+ if (!isDraggable) {
+ return children
+ }
+
+ let StartAnchor = null,
+ EndAnchor = null
+
+ /*
+ * The resizability of events depends on whether they are
+ * allDay events and how they are displayed.
+ *
+ * 1. If the event is being shown in an event row (because
+ * it is an allDay event shown in the header row or because as
+ * in month view the view is showing all events as rows) then we
+ * allow east-west resizing.
+ *
+ * 2. Otherwise the event is being displayed
+ * normally, we can drag it north-south to resize the times.
+ *
+ * See `DropWrappers` for handling of the drop of such events.
+ *
+ * Notwithstanding the above, we never show drag anchors for
+ * events which continue beyond current component. This happens
+ * in the middle of events when showMultiDay is true, and to
+ * events at the edges of the calendar's min/max location.
+ */
+
+ let isResizable = resizableAccessor ? !!get(event, resizableAccessor) : true
+
+ if (isResizable) {
+ if (type === 'date') {
+ StartAnchor = !continuesPrior && this.renderAnchor('Left')
+ EndAnchor = !continuesAfter && this.renderAnchor('Right')
+ } else {
+ StartAnchor = !continuesPrior && this.renderAnchor('Up')
+ EndAnchor = !continuesAfter && this.renderAnchor('Down')
+ }
+
+ const isDragging = this.context.dragAndDropAction.event === event
+
+ /*
+ * props.children is the singular component.
+ * BigCalendar positions the Event abolutely and we
+ * need the anchors to be part of that positioning.
+ * So we insert the anchors inside the Event's children
+ * rather than wrap the Event here as the latter approach
+ * would lose the positioning.
+ */
+ children = React.cloneElement(children, {
+ onMouseDown: this.handleStartDragging,
+ onTouchStart: this.handleStartDragging,
+ className: cn(
+ children.props.className,
+ isDragging && 'rbc-addons-dnd-dragging',
+ isResizing && 'rbc-addons-dnd-resizing'
+ ),
+ // replace original event child with anchor-embellished child
+ children: (
+
+ {StartAnchor}
+ {children.props.children}
+ {EndAnchor}
+
+ ),
+ })
+ }
+
+ return (
+
+ {children}
+
+ )
+ }
+}
+
+export default EventWrapper
diff --git a/src/addons/dragAndDrop/WeekWrapper.js b/src/addons/dragAndDrop/WeekWrapper.js
new file mode 100644
index 000000000..d3379e733
--- /dev/null
+++ b/src/addons/dragAndDrop/WeekWrapper.js
@@ -0,0 +1,284 @@
+import PropTypes from 'prop-types'
+import React from 'react'
+import dates from '../../utils/dates'
+import { getSlotAtX, pointInBox } from '../../utils/selection'
+import { findDOMNode } from 'react-dom'
+
+import { eventSegments } from '../../utils/eventLevels'
+import Selection, { getBoundsForNode } from '../../Selection'
+import EventRow from '../../EventRow'
+import { dragAccessors } from './common'
+
+const propTypes = {}
+
+const eventTimes = (event, accessors) => {
+ let start = accessors.start(event)
+ let end = accessors.end(event)
+
+ const isZeroDuration =
+ dates.eq(start, end, 'minutes') && start.getMinutes() === 0
+ // make zero duration midnight events at least one day long
+ if (isZeroDuration) end = dates.add(end, 1, 'day')
+ return { start, end }
+}
+
+class WeekWrapper extends React.Component {
+ static propTypes = {
+ isAllDay: PropTypes.bool,
+ slotMetrics: PropTypes.object.isRequired,
+ accessors: PropTypes.object.isRequired,
+ getters: PropTypes.object.isRequired,
+ components: PropTypes.object.isRequired,
+ resourceId: PropTypes.any,
+ }
+
+ static contextTypes = {
+ onEventDrop: PropTypes.func,
+ onEventResize: PropTypes.func,
+
+ onMove: PropTypes.func,
+ onResize: PropTypes.func,
+ dragAndDropAction: PropTypes.object,
+ }
+
+ constructor(...args) {
+ super(...args)
+ this.state = {}
+ }
+
+ componentDidMount() {
+ this._selectable()
+ }
+
+ componentWillUnmount() {
+ this._teardownSelectable()
+ }
+
+ reset() {
+ if (this.state.segment) this.setState({ segment: null })
+ }
+
+ update(event, start, end) {
+ const segment = eventSegments(
+ { ...event, end, start, __isPreview: true },
+ this.props.slotMetrics.range,
+ dragAccessors
+ )
+
+ const { segment: lastSegment } = this.state
+ if (
+ lastSegment &&
+ segment.span === lastSegment.span &&
+ segment.left === lastSegment.left &&
+ segment.right === lastSegment.right
+ ) {
+ return
+ }
+ this.setState({ segment })
+ }
+
+ handleMove = ({ event }, { x, y }, node) => {
+ const metrics = this.props.slotMetrics
+ const { accessors } = this.props
+
+ if (!event) return
+
+ let rowBox = getBoundsForNode(node)
+
+ if (!pointInBox(rowBox, { x, y })) {
+ this.reset()
+ return
+ }
+
+ // Make sure to maintain the time of the start date while moving it to the new slot
+ let start = dates.merge(
+ metrics.getDateForSlot(getSlotAtX(rowBox, x, false, metrics.slots)),
+ accessors.start(event)
+ )
+
+ let end = dates.add(
+ start,
+ dates.diff(accessors.start(event), accessors.end(event), 'minutes'),
+ 'minutes'
+ )
+
+ this.update(event, start, end)
+ }
+
+ handleResize({ event, direction }, point, node) {
+ const { accessors, slotMetrics: metrics } = this.props
+
+ let { start, end } = eventTimes(event, accessors)
+
+ let rowBox = getBoundsForNode(node)
+ let cursorInRow = pointInBox(rowBox, point)
+
+ if (direction === 'RIGHT') {
+ if (cursorInRow) {
+ if (metrics.last < start) return this.reset()
+ // add min
+ end = dates.add(
+ metrics.getDateForSlot(
+ getSlotAtX(rowBox, point.x, false, metrics.slots)
+ ),
+ 1,
+ 'day'
+ )
+ } else if (
+ dates.inRange(start, metrics.first, metrics.last) ||
+ (rowBox.bottom < point.y && +metrics.first > +start)
+ ) {
+ end = dates.add(metrics.last, 1, 'milliseconds')
+ } else {
+ this.setState({ segment: null })
+ return
+ }
+
+ end = dates.max(end, dates.add(start, 1, 'day'))
+ } else if (direction === 'LEFT') {
+ // inbetween Row
+ if (cursorInRow) {
+ if (metrics.first > end) return this.reset()
+
+ start = metrics.getDateForSlot(
+ getSlotAtX(rowBox, point.x, false, metrics.slots)
+ )
+ } else if (
+ dates.inRange(end, metrics.first, metrics.last) ||
+ (rowBox.top > point.y && +metrics.last < +end)
+ ) {
+ start = dates.add(metrics.first, -1, 'milliseconds')
+ } else {
+ this.reset()
+ return
+ }
+
+ start = dates.min(dates.add(end, -1, 'day'), start)
+ }
+
+ this.update(event, start, end)
+ }
+
+ _selectable = () => {
+ let node = findDOMNode(this).closest('.rbc-month-row, .rbc-allday-cell')
+ let container = node.closest('.rbc-month-view, .rbc-time-view')
+
+ let selector = (this._selector = new Selection(() => container))
+
+ selector.on('beforeSelect', point => {
+ const { isAllDay } = this.props
+ const { action } = this.context.dragAndDropAction
+
+ return (
+ action === 'move' ||
+ (action === 'resize' &&
+ (!isAllDay || pointInBox(getBoundsForNode(node), point)))
+ )
+ })
+
+ let handler = box => {
+ const { dragAndDropAction } = this.context
+
+ switch (dragAndDropAction.action) {
+ case 'move':
+ this.handleMove(dragAndDropAction, box, node)
+ break
+ case 'resize':
+ this.handleResize(dragAndDropAction, box, node)
+ break
+ }
+ }
+
+ selector.on('selecting', handler)
+ selector.on('selectStart', handler)
+
+ selector.on('select', box => {
+ const { dragAndDropAction } = this.context
+
+ switch (dragAndDropAction.action) {
+ case 'move':
+ this.handleEventDrop()
+ break
+ case 'resize':
+ this.handleEventResize(box, node)
+ break
+ }
+ })
+
+ selector.on('click', () => {
+ this.context.onMove(null)
+ })
+ }
+
+ handleEventResize = (box, node) => {
+ const { segment } = this.state
+
+ if (!segment || !pointInBox(getBoundsForNode(node), box)) return
+ const { dragAndDropAction, onResize, onEventResize } = this.context
+
+ this.reset()
+
+ onResize(null)
+
+ onEventResize({
+ event: dragAndDropAction.event,
+ start: segment.event.start,
+ end: segment.event.end,
+ })
+ }
+
+ handleEventDrop = () => {
+ const { resourceId } = this.props
+ const { segment } = this.state
+
+ if (!segment) return
+ const { dragAndDropAction, onMove, onEventDrop } = this.context
+
+ this.reset()
+
+ onMove(null)
+
+ onEventDrop({
+ resourceId,
+ event: dragAndDropAction.event,
+ start: segment.event.start,
+ end: segment.event.end,
+ isAllDay: true,
+ })
+ }
+
+ _teardownSelectable = () => {
+ if (!this._selector) return
+ this._selector.teardown()
+ this._selector = null
+ }
+
+ render() {
+ const { children, accessors } = this.props
+
+ let { segment } = this.state
+
+ return (
+
+ {children}
+
+ {segment && (
+
+ )}
+
+ )
+ }
+}
+
+WeekWrapper.propTypes = propTypes
+
+export default WeekWrapper
diff --git a/src/addons/dragAndDrop/common.js b/src/addons/dragAndDrop/common.js
new file mode 100644
index 000000000..6e52746fc
--- /dev/null
+++ b/src/addons/dragAndDrop/common.js
@@ -0,0 +1,6 @@
+import { wrapAccessor } from '../../utils/accessors'
+
+export const dragAccessors = {
+ start: wrapAccessor(e => e.start),
+ end: wrapAccessor(e => e.end),
+}
diff --git a/src/addons/dragAndDrop/compose.js b/src/addons/dragAndDrop/compose.js
deleted file mode 100644
index b06708985..000000000
--- a/src/addons/dragAndDrop/compose.js
+++ /dev/null
@@ -1,11 +0,0 @@
-export default function compose(...funcs) {
- if (funcs.length === 0) {
- return arg => arg
- }
-
- if (funcs.length === 1) {
- return funcs[0]
- }
-
- return funcs.reduce((a, b) => (...args) => a(b(...args)))
-}
diff --git a/src/addons/dragAndDrop/styles.less b/src/addons/dragAndDrop/styles.less
index 7f790a185..87bf3456b 100644
--- a/src/addons/dragAndDrop/styles.less
+++ b/src/addons/dragAndDrop/styles.less
@@ -1,15 +1,22 @@
@import '../../less/variables.less';
.rbc-addons-dnd {
- .rbc-row-content {
- pointer-events: none;
+ .rbc-addons-dnd-row-body {
+ position: relative;
+ }
+ .rbc-addons-dnd-drag-row {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ }
- & .rbc-show-more,
- & .rbc-event {
- pointer-events: all;
- }
+ .rbc-addons-dnd-dragging {
+ opacity: .25;
+ touch-action: manipulation;
}
+
.rbc-addons-dnd-over {
background-color: rgba(
red(@date-selection-bg-color),
@@ -19,21 +26,15 @@
);
}
- .rbc-events-container {
- pointer-events: none;
- }
-
.rbc-event {
transition: opacity 150ms;
- pointer-events: all;
&:hover {
.rbc-addons-dnd-resize-ns-icon, .rbc-addons-dnd-resize-ew-icon { display: block; }
}
}
- &.rbc-addons-dnd-is-dragging .rbc-event {
- pointer-events: none;
+ &.rbc-addons-dnd-is-dragging .rbc-event:not(.rbc-addons-dnd-dragging):not(.rbc-addons-dnd-drag-preview) {
opacity: .50;
}
diff --git a/src/addons/dragAndDrop/withDragAndDrop.js b/src/addons/dragAndDrop/withDragAndDrop.js
index 3771c7b5b..20054d660 100644
--- a/src/addons/dragAndDrop/withDragAndDrop.js
+++ b/src/addons/dragAndDrop/withDragAndDrop.js
@@ -1,19 +1,11 @@
import PropTypes from 'prop-types'
import React from 'react'
-import { DragDropContext } from 'react-dnd'
import cn from 'classnames'
import { accessor } from '../../utils/propTypes'
-import DraggableEventWrapper from './DraggableEventWrapper'
-import { DroppableDayWrapper, DroppableDateCellWrapper } from './DropWrappers'
-
-let html5Backend
-
-try {
- html5Backend = require('react-dnd-html5-backend')
-} catch (err) {
- /* optional dep missing */
-}
+import EventWrapper from './EventWrapper'
+import EventContainerWrapper from './EventContainerWrapper'
+import WeekWrapper from './WeekWrapper'
/**
* Creates a higher-order component (HOC) supporting drag & drop and optionally resizing
@@ -55,10 +47,7 @@ try {
* @param {*} Calendar
* @param {*} backend
*/
-export default function withDragAndDrop(
- Calendar,
- { backend = html5Backend } = {}
-) {
+export default function withDragAndDrop(Calendar) {
class DragAndDropCalendar extends React.Component {
static propTypes = {
onEventDrop: PropTypes.func,
@@ -92,9 +81,11 @@ export default function withDragAndDrop(
static childContextTypes = {
onEventDrop: PropTypes.func,
onEventResize: PropTypes.func,
+ onMove: PropTypes.func,
+ onResize: PropTypes.func,
+ dragAndDropAction: PropTypes.object,
+
components: PropTypes.object,
- startAccessor: accessor,
- endAccessor: accessor,
draggableAccessor: accessor,
resizableAccessor: accessor,
step: PropTypes.number,
@@ -104,44 +95,35 @@ export default function withDragAndDrop(
return {
onEventDrop: this.props.onEventDrop,
onEventResize: this.props.onEventResize,
- components: this.props.components,
- startAccessor: this.props.startAccessor,
- endAccessor: this.props.endAccessor,
step: this.props.step,
+ components: this.props.components,
draggableAccessor: this.props.draggableAccessor,
resizableAccessor: this.props.resizableAccessor,
- }
- }
- constructor(...args) {
- super(...args)
- this.state = { isDragging: false }
- }
+ onResize: (event, direction) =>
+ this.setState({
+ dragAndDropAction: event
+ ? { action: 'resize', event, direction }
+ : {},
+ }),
- componentWillMount() {
- let monitor = this.context.dragDropManager.getMonitor()
- this.monitor = monitor
- this.unsubscribeToStateChange = monitor.subscribeToStateChange(
- this.handleStateChange
- )
- }
+ onMove: event =>
+ this.setState({
+ dragAndDropAction: event ? { action: 'move', event } : {},
+ }),
- componentWillUnmount() {
- this.monitor = null
- this.unsubscribeToStateChange()
+ dragAndDropAction: this.state.dragAndDropAction,
+ }
}
- handleStateChange = () => {
- const isDragging = !!this.monitor.getItem()
-
- if (isDragging !== this.state.isDragging) {
- setTimeout(() => this.setState({ isDragging }))
- }
+ constructor(...args) {
+ super(...args)
+ this.state = { isDragging: false, dragAndDropAction: {} }
}
render() {
const { selectable, components, ...props } = this.props
-
+ const { dragAndDropAction } = this.state
delete props.onEventDrop
delete props.onEventResize
@@ -150,23 +132,19 @@ export default function withDragAndDrop(
props.className = cn(
props.className,
'rbc-addons-dnd',
- this.state.isDragging && 'rbc-addons-dnd-is-dragging'
+ dragAndDropAction.action && 'rbc-addons-dnd-is-dragging'
)
props.components = {
...components,
- dateCellWrapper: DroppableDateCellWrapper,
- dayWrapper: DroppableDayWrapper,
- eventWrapper: DraggableEventWrapper,
+ eventWrapper: EventWrapper,
+ eventContainerWrapper: EventContainerWrapper,
+ weekWrapper: WeekWrapper,
}
return
}
}
- if (backend === false) {
- return DragAndDropCalendar
- } else {
- return DragDropContext(backend)(DragAndDropCalendar)
- }
+ return DragAndDropCalendar
}
diff --git a/src/formats.js b/src/formats.js
deleted file mode 100644
index da29d5163..000000000
--- a/src/formats.js
+++ /dev/null
@@ -1,61 +0,0 @@
-import dates from './utils/dates'
-
-function inSame12Hr(start, end) {
- let s = 12 - dates.hours(start)
- let e = 12 - dates.hours(end)
- return (s <= 0 && e <= 0) || (s >= 0 && e >= 0)
-}
-
-let dateRangeFormat = ({ start, end }, culture, local) =>
- local.format(start, 'd', culture) + ' — ' + local.format(end, 'd', culture)
-
-let timeRangeFormat = ({ start, end }, culture, local) =>
- local.format(start, 'h:mmtt', culture) +
- ' — ' +
- local.format(end, inSame12Hr(start, end) ? 'h:mm' : 'h:mmtt', culture)
-
-let timeRangeStartFormat = ({ start, end }, culture, local) =>
- local.format(start, 'h:mmtt', culture) + ' — '
-
-let timeRangeEndFormat = ({ start, end }, culture, local) =>
- ' — ' + local.format(end, 'h:mmtt', culture)
-
-let weekRangeFormat = ({ start, end }, culture, local) =>
- local.format(start, 'MMM dd', culture) +
- ' - ' +
- local.format(end, dates.eq(start, end, 'month') ? 'dd' : 'MMM dd', culture)
-
-let formats = {
- dateFormat: 'dd',
- dayFormat: 'ddd dd/MM',
- weekdayFormat: 'ddd',
-
- selectRangeFormat: timeRangeFormat,
- eventTimeRangeFormat: timeRangeFormat,
- eventTimeRangeStartFormat: timeRangeStartFormat,
- eventTimeRangeEndFormat: timeRangeEndFormat,
-
- timeGutterFormat: 'h:mm tt',
-
- monthHeaderFormat: 'MMMM yyyy',
- dayHeaderFormat: 'dddd MMM dd',
- dayRangeHeaderFormat: weekRangeFormat,
- agendaHeaderFormat: dateRangeFormat,
-
- agendaDateFormat: 'ddd MMM dd',
- agendaTimeFormat: 'hh:mm tt',
- agendaTimeRangeFormat: timeRangeFormat,
-}
-
-export function set(_formats) {
- if (arguments.length > 1) _formats = { [_formats]: arguments[1] }
-
- Object.assign(formats, _formats)
-}
-
-export default function format(fmts) {
- return {
- ...formats,
- ...fmts,
- }
-}
diff --git a/src/index.js b/src/index.js
index 124115110..5f87f846a 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,14 +1,12 @@
import Calendar from './Calendar'
import EventWrapper from './EventWrapper'
import BackgroundWrapper from './BackgroundWrapper'
-import { set as setLocalizer } from './localizer'
import momentLocalizer from './localizers/moment'
import globalizeLocalizer from './localizers/globalize'
import move from './utils/move'
import { views, navigate } from './utils/constants'
Object.assign(Calendar, {
- setLocalizer,
globalizeLocalizer,
momentLocalizer,
Views: views,
diff --git a/src/less/event.less b/src/less/event.less
index 513a3bcdd..c46bf3764 100644
--- a/src/less/event.less
+++ b/src/less/event.less
@@ -45,12 +45,3 @@
border-bottom-right-radius: 0;
}
-.rbc-event-continues-day-after {
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-}
-
-.rbc-event-continues-day-prior {
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
diff --git a/src/less/time-column.less b/src/less/time-column.less
index 008f77fd2..c682ed0a3 100644
--- a/src/less/time-column.less
+++ b/src/less/time-column.less
@@ -35,7 +35,8 @@
bottom: 0;
left: 0;
position: absolute;
- right: 10px;
+ right: 0;
+ margin-right: 10px;
top: 0;
&.rbc-is-rtl {
diff --git a/src/less/time-grid.less b/src/less/time-grid.less
index 98beb3025..10612c7de 100644
--- a/src/less/time-grid.less
+++ b/src/less/time-grid.less
@@ -31,6 +31,10 @@
box-sizing: content-box;
width: 100%;
position: relative;
+
+ }
+ .rbc-allday-cell + .rbc-allday-cell {
+ border-left: 1px solid @cell-border;
}
.rbc-allday-events {
diff --git a/src/localizer.js b/src/localizer.js
index cdaca1a63..ec97fd129 100644
--- a/src/localizer.js
+++ b/src/localizer.js
@@ -17,16 +17,12 @@ function _format(localizer, formatter, value, format, culture) {
return result
}
-class DateLocalizer {
+export class DateLocalizer {
constructor(spec) {
invariant(
typeof spec.format === 'function',
'date localizer `format(..)` must be a function'
)
- invariant(
- typeof spec.parse === 'function',
- 'date localizer `parse(..)` must be a function'
- )
invariant(
typeof spec.firstOfWeek === 'function',
'date localizer `firstOfWeek(..)` must be a function'
@@ -34,59 +30,28 @@ class DateLocalizer {
this.propType = spec.propType || localePropType
- this.formats = spec.formats
this.startOfWeek = spec.firstOfWeek
-
+ this.formats = spec.formats
this.format = (...args) => _format(this, spec.format, ...args)
-
- this.parse = (value, format, culture) => {
- let result = spec.parse.call(this, value, format, culture)
-
- invariant(
- result == null || (result instanceof Date && !isNaN(result.getTime())),
- 'date localizer `parse(..)` must return a valid Date, null, or undefined'
- )
-
- return result
- }
}
}
-let localizer = {
- parse: error,
- format: error,
- startOfWeek: error,
-}
-
-export function set(newLocalizer) {
- if (!newLocalizer.__isLocalizer__) {
- newLocalizer = new DateLocalizer(newLocalizer)
- newLocalizer.__isLocalizer__ = true
+export function mergeWithDefaults(
+ localizer,
+ culture,
+ formatOverrides,
+ messages
+) {
+ const formats = {
+ ...localizer.formats,
+ ...formatOverrides,
}
- localizer = newLocalizer
- return localizer
-}
-
-let exp = {
- parse(...args) {
- return localizer.parse(...args)
- },
-
- format(...args) {
- return localizer.format(...args)
- },
-
- startOfWeek(...args) {
- return localizer.startOfWeek(...args)
- },
-}
-
-export default exp
-
-function error() {
- throw new Error(
- 'You have not selected a localization strategy for Big Calendar. ' +
- 'Please use either of the two included.'
- )
+ return {
+ ...localizer,
+ messages,
+ startOfWeek: () => localizer.startOfWeek(culture),
+ format: (value, format) =>
+ localizer.format(value, formats[format] || format, culture),
+ }
}
diff --git a/src/localizers/globalize.js b/src/localizers/globalize.js
index 963864aa9..c5419b638 100644
--- a/src/localizers/globalize.js
+++ b/src/localizers/globalize.js
@@ -1,8 +1,7 @@
import dates from '../utils/dates'
import oldGlobalize from './oldGlobalize'
+import { DateLocalizer } from '../localizer'
import warning from 'warning'
-import { set } from '../formats'
-import { set as setLocalizer } from '../localizer'
let dateRangeFormat = ({ start, end }, culture, local) =>
local.format(start, { date: 'short' }, culture) +
@@ -82,16 +81,9 @@ export default function(globalize) {
if (!globalize.load) return oldGlobalize(globalize)
- set(formats)
-
- return setLocalizer({
+ return new DateLocalizer({
firstOfWeek,
-
- parse(value, format, culture) {
- format = typeof format === 'string' ? { raw: format } : format
- return locale(culture).parseDate(value, format)
- },
-
+ formats,
format(value, format, culture) {
format = typeof format === 'string' ? { raw: format } : format
return locale(culture).formatDate(value, format)
diff --git a/src/localizers/moment.js b/src/localizers/moment.js
index 23490055d..72cf446c9 100644
--- a/src/localizers/moment.js
+++ b/src/localizers/moment.js
@@ -1,6 +1,5 @@
import dates from '../utils/dates'
-import { set } from '../formats'
-import { set as setLocalizer } from '../localizer'
+import { DateLocalizer } from '../localizer'
let dateRangeFormat = ({ start, end }, culture, local) =>
local.format(start, 'L', culture) + ' — ' + local.format(end, 'L', culture)
@@ -44,18 +43,13 @@ export let formats = {
export default function(moment) {
let locale = (m, c) => (c ? m.locale(c) : m)
- set(formats)
-
- return setLocalizer({
+ return new DateLocalizer({
+ formats,
firstOfWeek(culture) {
let data = culture ? moment.localeData(culture) : moment.localeData()
return data ? data.firstDayOfWeek() : 0
},
- parse(value, format, culture) {
- return locale(moment(value, format), culture).toDate()
- },
-
format(value, format, culture) {
return locale(moment(value), culture).format(format)
},
diff --git a/src/localizers/oldGlobalize.js b/src/localizers/oldGlobalize.js
index fb046ec0b..b866fa610 100644
--- a/src/localizers/oldGlobalize.js
+++ b/src/localizers/oldGlobalize.js
@@ -1,6 +1,5 @@
import dates from '../utils/dates'
-import { set } from '../formats'
-import { set as setLocalizer } from '../localizer'
+import { DateLocalizer } from '../localizer'
let dateRangeFormat = ({ start, end }, culture, local) =>
local.format(start, 'd', culture) + ' — ' + local.format(end, 'd', culture)
@@ -51,15 +50,9 @@ export default function(globalize) {
return (culture && culture.calendar.firstDay) || 0
}
- set(formats)
-
- return setLocalizer({
+ return new DateLocalizer({
firstOfWeek,
-
- parse(value, format, culture) {
- return globalize.parseDate(value, format, culture)
- },
-
+ formats,
format(value, format, culture) {
return globalize.format(value, format, culture)
},
diff --git a/src/utils/DateSlotMetrics.js b/src/utils/DateSlotMetrics.js
new file mode 100644
index 000000000..8e630e7b2
--- /dev/null
+++ b/src/utils/DateSlotMetrics.js
@@ -0,0 +1,65 @@
+import memoize from 'memoize-one'
+import dates from './dates'
+import { eventSegments, endOfRange, eventLevels } from './eventLevels'
+
+let isSegmentInSlot = (seg, slot) => seg.left <= slot && seg.right >= slot
+
+const isEqual = (a, b) => a.range === b.range && a.events === b.events
+
+export function getSlotMetrics() {
+ return memoize(options => {
+ const { range, events, maxRows, minRows, accessors } = options
+ let { first, last } = endOfRange(range)
+
+ let segments = events.map(evt => eventSegments(evt, range, accessors))
+
+ let { levels, extra } = eventLevels(segments, Math.max(maxRows - 1, 1))
+ while (levels.length < minRows) levels.push([])
+
+ return {
+ first,
+ last,
+
+ levels,
+ extra,
+ range,
+ slots: range.length,
+
+ clone(args) {
+ const metrics = getSlotMetrics()
+ return metrics({ ...options, ...args })
+ },
+
+ getDateForSlot(slotNumber) {
+ return range[slotNumber]
+ },
+
+ getSlotForDate(date) {
+ return range.find(r => dates.eq(r, date, 'day'))
+ },
+
+ getEventsForSlot(slot) {
+ return segments
+ .filter(seg => isSegmentInSlot(seg, slot))
+ .map(seg => seg.event)
+ },
+
+ continuesPrior(event) {
+ return dates.lt(accessors.start(event), first, 'day')
+ },
+
+ continuesAfter(event) {
+ const eventEnd = accessors.end(event)
+ const singleDayDuration = dates.eq(
+ accessors.start(event),
+ eventEnd,
+ 'minutes'
+ )
+
+ return singleDayDuration
+ ? dates.gte(eventEnd, last, 'minutes')
+ : dates.gt(eventEnd, last, 'minutes')
+ },
+ }
+ }, isEqual)
+}
diff --git a/src/utils/DayEventLayout.js b/src/utils/DayEventLayout.js
index b9e87c0d4..80610c45a 100644
--- a/src/utils/DayEventLayout.js
+++ b/src/utils/DayEventLayout.js
@@ -1,8 +1,7 @@
import sortBy from 'lodash/sortBy'
-import { accessor as get } from './accessors'
class Event {
- constructor(data, { startAccessor, endAccessor, slotMetrics }) {
+ constructor(data, { accessors, slotMetrics }) {
const {
start,
startDate,
@@ -10,7 +9,7 @@ class Event {
endDate,
top,
height,
- } = slotMetrics.getRange(get(data, startAccessor), get(data, endAccessor))
+ } = slotMetrics.getRange(accessors.start(data), accessors.end(data))
this.start = start
this.end = end
@@ -129,10 +128,17 @@ function sortByRender(events) {
return sorted
}
-function getStyledEvents({ events, minimumStartDifference, ...props }) {
+function getStyledEvents({
+ events,
+ minimumStartDifference,
+ slotMetrics,
+ accessors,
+}) {
// Create proxy events and order them so that we don't have
// to fiddle with z-indexes.
- const proxies = events.map(event => new Event(event, props))
+ const proxies = events.map(
+ event => new Event(event, { slotMetrics, accessors })
+ )
const eventsInRenderOrder = sortByRender(proxies)
// Group overlapping events, while keeping order.
diff --git a/src/utils/TimeSlots.js b/src/utils/TimeSlots.js
index 0731370c7..75f7ff2cd 100644
--- a/src/utils/TimeSlots.js
+++ b/src/utils/TimeSlots.js
@@ -95,12 +95,34 @@ export function getSlotMetrics({ min: start, max: end, step, timeslots }) {
return slots[slot]
},
+ closestSlotFromPoint(point, boundaryRect) {
+ let range = Math.abs(boundaryRect.top - boundaryRect.bottom)
+ return this.closestSlotToPosition((point.y - boundaryRect.top) / range)
+ },
+
+ closestSlotFromDate(date, offset = 0) {
+ if (dates.lt(date, start, 'minutes')) return slots[0]
+
+ const diffMins = dates.diff(start, date, 'minutes')
+ return slots[(diffMins - diffMins % step) / step + offset]
+ },
+
+ startsBeforeDay(date) {
+ return dates.lt(date, start, 'day')
+ },
+
+ startsAfterDay(date) {
+ return dates.gt(date, end, 'day')
+ },
+
startsBefore(date) {
return dates.lt(dates.merge(start, date), start, 'minutes')
},
+
startsAfter(date) {
return dates.gt(dates.merge(end, date), end, 'minutes')
},
+
getRange(rangeStart, rangeEnd) {
rangeStart = dates.min(end, dates.max(start, rangeStart))
rangeEnd = dates.min(end, dates.max(start, rangeEnd))
diff --git a/src/utils/accessors.js b/src/utils/accessors.js
index 8becc3083..0aed6f2ed 100644
--- a/src/utils/accessors.js
+++ b/src/utils/accessors.js
@@ -19,3 +19,5 @@ export function accessor(data, field) {
return value
}
+
+export const wrapAccessor = acc => data => accessor(data, acc)
diff --git a/src/utils/dates.js b/src/utils/dates.js
index c28159797..23f6811d1 100644
--- a/src/utils/dates.js
+++ b/src/utils/dates.js
@@ -1,6 +1,5 @@
/* eslint no-fallthrough: off */
import dateMath from 'date-arithmetic'
-import localizer from '../localizer'
const MILLI = {
seconds: 1000,
@@ -20,21 +19,21 @@ let dates = {
return MONTHS.map(i => dates.month(date, i))
},
- firstVisibleDay(date, culture) {
+ firstVisibleDay(date, localizer) {
let firstOfMonth = dates.startOf(date, 'month')
- return dates.startOf(firstOfMonth, 'week', localizer.startOfWeek(culture))
+ return dates.startOf(firstOfMonth, 'week', localizer.startOfWeek())
},
- lastVisibleDay(date, culture) {
+ lastVisibleDay(date, localizer) {
let endOfMonth = dates.endOf(date, 'month')
- return dates.endOf(endOfMonth, 'week', localizer.startOfWeek(culture))
+ return dates.endOf(endOfMonth, 'week', localizer.startOfWeek())
},
- visibleDays(date, culture) {
- let current = dates.firstVisibleDay(date, culture),
- last = dates.lastVisibleDay(date, culture),
+ visibleDays(date, localizer) {
+ let current = dates.firstVisibleDay(date, localizer),
+ last = dates.lastVisibleDay(date, localizer),
days = []
while (dates.lte(current, last, 'day')) {
diff --git a/src/utils/eventLevels.js b/src/utils/eventLevels.js
index bf3af37f6..900fabc4b 100644
--- a/src/utils/eventLevels.js
+++ b/src/utils/eventLevels.js
@@ -1,6 +1,5 @@
import findIndex from 'lodash/findIndex'
import dates from './dates'
-import { accessor as get } from './accessors'
export function endOfRange(dateRange, unit = 'day') {
return {
@@ -9,16 +8,12 @@ export function endOfRange(dateRange, unit = 'day') {
}
}
-export function eventSegments(
- event,
- first,
- last,
- { startAccessor, endAccessor },
- range
-) {
+export function eventSegments(event, range, accessors) {
+ let { first, last } = endOfRange(range)
+
let slots = dates.diff(first, last, 'day')
- let start = dates.max(dates.startOf(get(event, startAccessor), 'day'), first)
- let end = dates.min(dates.ceil(get(event, endAccessor), 'day'), last)
+ let start = dates.max(dates.startOf(accessors.start(event), 'day'), first)
+ let end = dates.min(dates.ceil(accessors.end(event), 'day'), last)
let padding = findIndex(range, x => dates.eq(x, start, 'day'))
let span = dates.diff(start, end, 'day')
@@ -60,9 +55,9 @@ export function eventLevels(rowSegments, limit = Infinity) {
return { levels, extra }
}
-export function inRange(e, start, end, { startAccessor, endAccessor }) {
- let eStart = dates.startOf(get(e, startAccessor), 'day')
- let eEnd = get(e, endAccessor)
+export function inRange(e, start, end, accessors) {
+ let eStart = dates.startOf(accessors.start(e), 'day')
+ let eEnd = accessors.end(e)
let startsBeforeEnd = dates.lte(eStart, end, 'day')
// when the event is zero duration we need to handle a bit differently
@@ -79,31 +74,27 @@ export function segsOverlap(seg, otherSegs) {
)
}
-export function sortEvents(
- evtA,
- evtB,
- { startAccessor, endAccessor, allDayAccessor }
-) {
+export function sortEvents(evtA, evtB, accessors) {
let startSort =
- +dates.startOf(get(evtA, startAccessor), 'day') -
- +dates.startOf(get(evtB, startAccessor), 'day')
+ +dates.startOf(accessors.start(evtA), 'day') -
+ +dates.startOf(accessors.start(evtB), 'day')
let durA = dates.diff(
- get(evtA, startAccessor),
- dates.ceil(get(evtA, endAccessor), 'day'),
+ accessors.start(evtA),
+ dates.ceil(accessors.end(evtA), 'day'),
'day'
)
let durB = dates.diff(
- get(evtB, startAccessor),
- dates.ceil(get(evtB, endAccessor), 'day'),
+ accessors.start(evtB),
+ dates.ceil(accessors.end(evtB), 'day'),
'day'
)
return (
startSort || // sort by start Day first
Math.max(durB, 1) - Math.max(durA, 1) || // events spanning multiple days go first
- !!get(evtB, allDayAccessor) - !!get(evtA, allDayAccessor) || // then allDay single day events
- +get(evtA, startAccessor) - +get(evtB, startAccessor)
+ !!accessors.allDay(evtB) - !!accessors.allDay(evtA) || // then allDay single day events
+ +accessors.start(evtA) - +accessors.start(evtB)
) // then sort by start time
}
diff --git a/src/utils/messages.js b/src/utils/messages.js
index 0fdb1a1bc..27575c345 100644
--- a/src/utils/messages.js
+++ b/src/utils/messages.js
@@ -1,5 +1,3 @@
-import invariant from 'invariant'
-
let defaultMessages = {
date: 'Date',
time: 'Time',
@@ -19,20 +17,6 @@ let defaultMessages = {
showMore: total => `+${total} more`,
}
-export function set(key, msg) {
- invariant(
- messages.hasOwnProperty(key),
- `The message key: "${key}" is not a valid message name. ` +
- `valid keys are: ${Object.keys(messages).join(', ')}`
- )
-
- messages[key] = msg
-}
-
-export function result(msg, ...args) {
- return typeof msg === 'function' ? msg(args) : msg
-}
-
export default function messages(msgs) {
return {
...defaultMessages,
diff --git a/src/utils/propTypes.js b/src/utils/propTypes.js
index a557b19c1..e4c935e8a 100644
--- a/src/utils/propTypes.js
+++ b/src/utils/propTypes.js
@@ -1,24 +1,10 @@
import PropTypes from 'prop-types'
-import localizer from '../localizer'
import elementType from 'react-prop-types/lib/elementType'
import all from 'react-prop-types/lib/all'
import { views as Views } from './constants'
-import createChainableTypeChecker from 'react-prop-types/lib/utils/createChainableTypeChecker'
-
export { elementType }
-// export contextShape = React.PropTypes.shape({
-// formats: React.PropTypes.object.isRequired,
-// messages: React.PropTypes.object.isRequired,
-// accessors: React.PropTypes.shape({
-// titleAccessor: accessor,
-// startAccessor: accessor,
-// endAccessor: accessor,
-// allDayAccessor: accessor,
-// }).isRequired,
-// }).isRequired,
-
export let eventComponent = PropTypes.oneOfType([
elementType,
PropTypes.shape({
@@ -33,9 +19,7 @@ let viewNames = Object.keys(Views).map(k => Views[k])
export let accessor = PropTypes.oneOfType([PropTypes.string, PropTypes.func])
-export let dateFormat = createChainableTypeChecker(
- (...args) => localizer.propType && localizer.propType(...args)
-)
+export let dateFormat = PropTypes.any
export let dateRangeFormat = PropTypes.func
diff --git a/src/utils/selection.js b/src/utils/selection.js
index a9c27024f..2756279c7 100644
--- a/src/utils/selection.js
+++ b/src/utils/selection.js
@@ -10,7 +10,8 @@ export function slotWidth(rowBox, slots) {
return cellWidth
}
-export function getCellAtX(rowBox, x, cellWidth, rtl, slots) {
+export function getSlotAtX(rowBox, x, rtl, slots) {
+ const cellWidth = slotWidth(rowBox, slots)
return rtl
? slots - 1 - Math.floor((x - rowBox.left) / cellWidth)
: Math.floor((x - rowBox.left) / cellWidth)
@@ -28,7 +29,7 @@ export function dateCellSelection(start, rowBox, box, slots, rtl) {
let cellWidth = slotWidth(rowBox, slots)
// cell under the mouse
- let currentSlot = getCellAtX(rowBox, box.x, cellWidth, rtl, slots)
+ let currentSlot = getSlotAtX(rowBox, box.x, rtl, slots)
// Identify row as either the initial row
// or the row under the current mouse point
diff --git a/stories/Calendar.js b/stories/Calendar.js
index 93133d032..a88834371 100644
--- a/stories/Calendar.js
+++ b/stories/Calendar.js
@@ -2,540 +2,120 @@ import { storiesOf, action } from '@storybook/react'
import moment from 'moment'
import React from 'react'
-import Calendar from '../src'
-import momentLocalizer from '../src/localizers/moment.js'
import '../src/less/styles.less'
import '../src/addons/dragAndDrop/styles.less'
import demoEvents from '../examples/events'
-import createEvents from './createEvents'
-import customComponents from './customComponents'
-import resources from './resourceEvents'
-import withDragAndDrop from '../src/addons/dragAndDrop'
+import createEvents from './helpers/createEvents'
+import customComponents from './helpers/customComponents'
-/* eslint-disable react/prop-types */
+import { events, Calendar } from './helpers'
-// Setup the localizer by providing the moment (or globalize) Object
-// to the correct localizer.
-momentLocalizer(moment) // or globalizeLocalizer
-
-const events = [
- {
- title: 'test',
- start: moment()
- .add(1, 'days')
- .subtract(5, 'hours')
- .toDate(),
- end: moment()
- .add(1, 'days')
- .subtract(4, 'hours')
- .toDate(),
- allDay: false,
- },
- {
- title: 'test larger',
- start: moment()
- .startOf('day')
- .add(5, 'hours')
- .toDate(),
- end: moment()
- .startOf('day')
- .add(10, 'hours')
- .toDate(),
- allDay: false,
- },
-
- {
- title: 'test larger',
- start: moment()
- .startOf('day')
- .add(15, 'hours')
- .toDate(),
- end: moment()
- .startOf('day')
- .add(23, 'hours')
- .toDate(),
- allDay: false,
- },
- {
- title: 'test all day',
- start: moment()
- .startOf('day')
- .toDate(),
- end: moment()
- .startOf('day')
- .add(1, 'day')
- .toDate(),
- allDay: true,
- },
- {
- title: 'test 2 days',
- start: moment()
- .startOf('day')
- .toDate(),
- end: moment()
- .startOf('day')
- .add(2, 'days')
- .toDate(),
- allDay: true,
- },
- {
- title: 'test multi-day',
- start: moment().toDate(),
- end: moment()
- .add(3, 'days')
- .toDate(),
- allDay: false,
- },
-]
-
-const DragAndDropCalendar = withDragAndDrop(Calendar)
-
-const DragableCalendar = props => {
- return (
- (
+
- )
-}
-
-storiesOf('module.Calendar.week', module)
- .add('demo', () => {
- return (
-
-
-
- )
- })
+ ))
.add('default view', () => {
return (
-
-
-
- )
- })
- .add('Daylight savings', () => {
- return (
-
-
-
- )
- })
- .add('event layout', () => {
- return (
-
-
-
- )
- })
- .add('resource', () => {
- return (
-
-
-
+
)
})
+
.add('selectable', () => {
return (
-
-
-
- )
- })
- .add('selectable, step 15, 4 timeslots', () => {
- return (
-
-
-
- )
- })
- .add('selectable, step 10, 6 timeslots', () => {
- return (
-
-
-
- )
- })
- .add('selectable, step 5, 6 timeslots', () => {
- return (
-
-
-
- )
- })
- .add('selectable, 3 timeslots', () => {
- return (
-
- moment('9:30am', 'h:mma').toDate()}
- min={moment('12:00am', 'h:mma').toDate()}
- max={moment('11:59pm', 'h:mma').toDate()}
- events={events}
- onSelectEvent={action('event selected')}
- onSelectSlot={action('slot selected')}
- defaultDate={new Date()}
- />
-
- )
- })
- .add('first of the week all-day event', () => {
- return (
-
-
-
- )
- })
- .add('end of the week all-day event', () => {
- return (
-
-
-
- )
- })
- .add('event at end of week', () => {
- return (
-
-
-
- )
- })
- .add('event at start of week', () => {
- return (
-
-
-
- )
- })
- .add('events on a constrained day column', () => {
- return (
-
-
-
+
)
})
.add('add custom date header', () => {
return (
-
- (
- {label} - Custom date header
- ),
- },
- }}
- />
-
- )
- })
- .add('add custom dateCellWrapper', () => {
- return (
-
-
-
- )
- })
- .add('add custom dayWrapper', () => {
- return (
-
-
-
- )
- })
- .add('add custom eventWrapper', () => {
- return (
-
-
-
- )
- })
- .add('no duration', () => {
- return (
-
- {/* should display all three events */}
-
-
+ (
+ {label} - Custom date header
+ ),
+ },
+ }}
+ />
)
})
.add('complex day view layout', () => {
return (
-
-
-
+
)
})
.add('multi-day', () => {
return (
-
- {/* should display all three events */}
-
-
+ /* should display all three events */
+
)
})
.add('agenda view - with length prop', () => {
return (
-
- {/* should display as title toolbar (from now to now + 14 days) */}
-
-
+ /* should display as title toolbar (from now to now + 14 days) */
+
)
})
- .add(
- 'event should end after week start to be eligible to be displayed in that week',
- () => {
- return (
-
- {/* should display all three events */}
-
-
- )
- }
- )
.add('custom now is the first of the month', () => {
const customNow = () => {
let now = new Date()
@@ -543,134 +123,65 @@ storiesOf('module.Calendar.week', module)
return now
}
return (
-
-
-
- )
- })
- .add('draggable and resizable', () => {
- return (
-
-
-
- )
- })
- .add('draggable and resizable with non-default steps and timeslots', () => {
- return (
-
-
-
- )
- })
- .add('draggable and resizable with showMultiDayTimes', () => {
- return (
-
-
-
+
)
})
- .add('draggable and resizable with custom dateCellWrapper', () => {
+
+ .add('custom time gutter header', () => {
+ const TimeGutter = () => Custom gutter text
+
return (
-
-
-
+
)
})
- .add('draggable and resizable with custom dayWrapper', () => {
+ .add('add custom dateCellWrapper', () => {
return (
-
-
-
+
)
})
- .add('draggable and resizable with custom eventWrapper', () => {
+ .add('add custom dayWrapper', () => {
return (
-
-
-
+
)
})
- .add('custom time gutter header', () => {
- const TimeGutter = () => Custom gutter text
-
+ .add('add custom eventWrapper', () => {
return (
-
-
-
+
)
})
diff --git a/stories/DragAndDrop.js b/stories/DragAndDrop.js
new file mode 100644
index 000000000..550058186
--- /dev/null
+++ b/stories/DragAndDrop.js
@@ -0,0 +1,94 @@
+import React from 'react'
+import { storiesOf, action } from '@storybook/react'
+
+import { events, Calendar, DragAndDropCalendar } from './helpers'
+import customComponents from './helpers/customComponents'
+
+storiesOf('Drag and Drop')
+ .add('draggable and resizable', () => {
+ return (
+
+ )
+ })
+ .add('draggable and resizable with non-default steps and timeslots', () => {
+ return (
+
+ )
+ })
+ .add('draggable and resizable with showMultiDayTimes', () => {
+ return (
+
+ )
+ })
+ .add('draggable and resizable with custom dateCellWrapper', () => {
+ return (
+
+ )
+ })
+ .add('draggable and resizable with custom dayWrapper', () => {
+ return (
+
+ )
+ })
+ .add('draggable and resizable with custom eventWrapper', () => {
+ return (
+
+ )
+ })
diff --git a/stories/Durations.js b/stories/Durations.js
new file mode 100644
index 000000000..a6a06565d
--- /dev/null
+++ b/stories/Durations.js
@@ -0,0 +1,30 @@
+import React from 'react'
+import { storiesOf } from '@storybook/react'
+import moment from 'moment'
+
+import { Calendar, DragableCalendar } from './helpers'
+
+storiesOf('Event Durations').add('Daylight savings', () => {
+ return (
+
+ )
+})
diff --git a/stories/Layout.js b/stories/Layout.js
new file mode 100644
index 000000000..27791fc18
--- /dev/null
+++ b/stories/Layout.js
@@ -0,0 +1,183 @@
+import React from 'react'
+import { storiesOf } from '@storybook/react'
+import moment from 'moment'
+
+import { events, Calendar, DragAndDropCalendar } from './helpers'
+import createEvents from './helpers/createEvents'
+
+storiesOf('Layout Issues')
+ .add('event layout', () => {
+ return (
+
+ )
+ })
+ .add('first of the week all-day event', () => {
+ return (
+
+ )
+ })
+ .add('end of the week all-day event', () => {
+ return (
+
+ )
+ })
+ .add('event at end of week', () => {
+ return (
+
+ )
+ })
+ .add('event at start of week', () => {
+ return (
+
+ )
+ })
+ .add('events on a constrained day column', () => {
+ return (
+
+ )
+ })
+ .add('no duration', () => {
+ return (
+ /* should display all three events */
+
+ )
+ })
+ .add('Single days should only span one slot, multi-days multiple', () => {
+ return (
+
+ )
+ })
+ .add('zero duration oddities', () => {
+ return (
+
+ )
+ })
diff --git a/stories/Resources.js b/stories/Resources.js
new file mode 100644
index 000000000..73e709d2e
--- /dev/null
+++ b/stories/Resources.js
@@ -0,0 +1,9 @@
+import React from 'react'
+import { storiesOf } from '@storybook/react'
+
+import { DragableCalendar } from './helpers'
+import resources from './helpers/resourceEvents'
+
+storiesOf('Resources').add('demo', () => (
+
+))
diff --git a/stories/Timeslots.js b/stories/Timeslots.js
new file mode 100644
index 000000000..4d043bc9b
--- /dev/null
+++ b/stories/Timeslots.js
@@ -0,0 +1,72 @@
+import { storiesOf, action } from '@storybook/react'
+import moment from 'moment'
+import React from 'react'
+
+import { events, Calendar } from './helpers'
+/* eslint-disable react/prop-types */
+
+storiesOf('Timeslots', module)
+ .add('selectable, step 15, 4 timeslots', () => {
+ return (
+
+ )
+ })
+ .add('selectable, step 10, 6 timeslots', () => {
+ return (
+
+ )
+ })
+ .add('selectable, step 5, 6 timeslots', () => {
+ return (
+
+ )
+ })
+ .add('selectable, 3 timeslots', () => {
+ return (
+ moment('9:30am', 'h:mma').toDate()}
+ min={moment('12:00am', 'h:mma').toDate()}
+ max={moment('11:59pm', 'h:mma').toDate()}
+ events={events}
+ onSelectEvent={action('event selected')}
+ onSelectSlot={action('slot selected')}
+ defaultDate={new Date()}
+ />
+ )
+ })
diff --git a/stories/createEvents.js b/stories/helpers/createEvents.js
similarity index 100%
rename from stories/createEvents.js
rename to stories/helpers/createEvents.js
diff --git a/stories/customComponents.js b/stories/helpers/customComponents.js
similarity index 100%
rename from stories/customComponents.js
rename to stories/helpers/customComponents.js
diff --git a/stories/helpers/index.js b/stories/helpers/index.js
new file mode 100644
index 000000000..55917d9a7
--- /dev/null
+++ b/stories/helpers/index.js
@@ -0,0 +1,115 @@
+import { addDecorator } from '@storybook/react'
+import { action } from '@storybook/addon-actions'
+
+import moment from 'moment'
+import React from 'react'
+
+import BaseCalendar from '../../src'
+import momentLocalizer from '../../src/localizers/moment.js'
+
+import '../../src/less/styles.less'
+import '../../src/addons/dragAndDrop/styles.less'
+
+import withDragAndDrop from '../../src/addons/dragAndDrop'
+
+addDecorator(function WithHeigt(fn) {
+ return {fn()}
+})
+
+const localizer = momentLocalizer(moment)
+
+export resourcesEvents from './resourceEvents'
+
+export const date = (...args) => moment(...args).toDate()
+
+export const Calendar = props => (
+
+)
+
+Object.assign(Calendar, BaseCalendar)
+
+export const DragAndDropCalendar = withDragAndDrop(Calendar)
+
+export const DragableCalendar = props => {
+ return (
+
+ )
+}
+
+export const events = [
+ {
+ title: 'test',
+ start: moment()
+ .add(1, 'days')
+ .subtract(5, 'hours')
+ .toDate(),
+ end: moment()
+ .add(1, 'days')
+ .subtract(4, 'hours')
+ .toDate(),
+ allDay: false,
+ },
+ {
+ title: 'test larger',
+ start: moment()
+ .startOf('day')
+ .add(5, 'hours')
+ .toDate(),
+ end: moment()
+ .startOf('day')
+ .add(10, 'hours')
+ .toDate(),
+ allDay: false,
+ },
+
+ {
+ title: 'test larger',
+ start: moment()
+ .startOf('day')
+ .add(15, 'hours')
+ .toDate(),
+ end: moment()
+ .startOf('day')
+ .add(23, 'hours')
+ .toDate(),
+ allDay: false,
+ },
+ {
+ title: 'test all day',
+ start: moment()
+ .startOf('day')
+ .toDate(),
+ end: moment()
+ .startOf('day')
+ .add(1, 'day')
+ .toDate(),
+ allDay: true,
+ },
+ {
+ title: 'test 2 days',
+ start: moment()
+ .startOf('day')
+ .toDate(),
+ end: moment()
+ .startOf('day')
+ .add(2, 'days')
+ .toDate(),
+ allDay: true,
+ },
+ {
+ title: 'test multi-day',
+ start: moment().toDate(),
+ end: moment()
+ .add(3, 'days')
+ .toDate(),
+ allDay: false,
+ },
+]
diff --git a/stories/resourceEvents.js b/stories/helpers/resourceEvents.js
similarity index 100%
rename from stories/resourceEvents.js
rename to stories/helpers/resourceEvents.js
diff --git a/stories/index.js b/stories/index.js
index 90a32f265..c7652eee5 100644
--- a/stories/index.js
+++ b/stories/index.js
@@ -1 +1,6 @@
import './Calendar'
+import './DragAndDrop'
+import './Resources'
+import './Timeslots'
+import './Layout'
+import './Durations'
diff --git a/test/utils/DayEventLayout.test.js b/test/utils/DayEventLayout.test.js
index 959fa4abb..c0d96ed0d 100644
--- a/test/utils/DayEventLayout.test.js
+++ b/test/utils/DayEventLayout.test.js
@@ -7,14 +7,14 @@ describe('getStyledEvents', () => {
const min = dates.startOf(d(), 'day')
const max = dates.endOf(d(), 'day')
const slotMetrics = getSlotMetrics({ min, max, step: 30, timeslots: 4 })
+ const accessors = { start: e => e.start, end: e => e.end }
describe('matrix', () => {
function compare(title, events, expectedResults) {
it(title, () => {
const styledEvents = getStyledEvents({
events,
- startAccessor: 'start',
- endAccessor: 'end',
+ accessors,
slotMetrics,
minimumStartDifference: 10,
})
diff --git a/test/utils/eventLevels.test.js b/test/utils/eventLevels.test.js
index a6d89dd16..746fdafe6 100644
--- a/test/utils/eventLevels.test.js
+++ b/test/utils/eventLevels.test.js
@@ -29,11 +29,9 @@ describe('endOfRange', () => {
describe('eventSegments', () => {
const event = { start: new Date(2017, 0, 8), end: new Date(2017, 0, 11, 12) }
- const accessors = { startAccessor: 'start', endAccessor: 'end' }
+ const accessors = { start: e => e.start, end: e => e.end }
test('it includes the original event in the returned object', () => {
- const first = new Date(2017, 0, 8)
- const last = new Date(2017, 0, 12)
const range = [
new Date(2017, 0, 8),
new Date(2017, 0, 9),
@@ -41,14 +39,12 @@ describe('eventSegments', () => {
new Date(2017, 0, 11),
]
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.event).toEqual(event)
})
describe('when the event spans the full range', () => {
- const first = new Date(2017, 0, 8)
- const last = new Date(2017, 0, 12)
const range = [
new Date(2017, 0, 8),
new Date(2017, 0, 9),
@@ -57,27 +53,25 @@ describe('eventSegments', () => {
]
test('it sets span equal to the number of days the event spans', () => {
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.span).toBe(4)
})
test('it sets left equal to one', () => {
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.left).toBe(1)
})
test('it sets right equal to the length of the range', () => {
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.right).toBe(4)
})
})
describe('when the event starts before the range and ends at the end of the range', () => {
- const first = new Date(2017, 0, 9)
- const last = new Date(2017, 0, 12)
const range = [
new Date(2017, 0, 9),
new Date(2017, 0, 10),
@@ -85,27 +79,25 @@ describe('eventSegments', () => {
]
test('it sets span equal to the number of days the range spans', () => {
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.span).toBe(3)
})
test('it sets left equal to one', () => {
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.left).toBe(1)
})
test('it sets right equal to the length of the range', () => {
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.right).toBe(3)
})
})
describe('when the event starts at the start of the range and ends after it', () => {
- const first = new Date(2017, 0, 8)
- const last = new Date(2017, 0, 11)
const range = [
new Date(2017, 0, 8),
new Date(2017, 0, 9),
@@ -113,27 +105,25 @@ describe('eventSegments', () => {
]
test('it sets span equal to the number of days the range spans', () => {
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.span).toBe(3)
})
test('it sets left equal to one', () => {
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.left).toBe(1)
})
test('it sets right equal to the length of the range', () => {
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.right).toBe(3)
})
})
describe('when the event starts and ends within the range', () => {
- const first = new Date(2017, 0, 7)
- const last = new Date(2017, 0, 13)
const range = [
new Date(2017, 0, 7),
new Date(2017, 0, 8),
@@ -144,19 +134,19 @@ describe('eventSegments', () => {
]
test('it sets span equal to the number of days the event spans', () => {
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.span).toBe(4)
})
test('it sets left equal to the 1-based index into the range where the event starts', () => {
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.left).toBe(2)
})
test('it sets right equal to the 1-based index into the range where the event ends', () => {
- const result = eventSegments(event, first, last, accessors, range)
+ const result = eventSegments(event, range, accessors)
expect(result.right).toBe(5)
})
@@ -263,7 +253,7 @@ describe('inRange', () => {
const rangeStart = new Date(2017, 4, 1)
const rangeEnd = new Date(2017, 5, 1)
- const accessors = { startAccessor: 'start', endAccessor: 'end' }
+ const accessors = { start: e => e.start, end: e => e.end }
describe('matrix', () => {
function compare(title, event, [rangeStart, rangeEnd], result = true) {
@@ -474,9 +464,9 @@ describe('segsOverlap', () => {
describe('sortEvents', () => {
const accessors = {
- startAccessor: 'start',
- endAccessor: 'end',
- allDayAccessor: 'allDay',
+ start: e => e.start,
+ end: e => e.end,
+ allDay: e => e.allDay,
}
describe('when the events start on different calendar days', () => {
diff --git a/yarn.lock b/yarn.lock
index 2d55d4024..a13630134 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,48 +2,93 @@
# yarn lockfile v1
-"@storybook/addon-actions@^3.2.16":
- version "3.3.7"
- resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-3.3.7.tgz#edc2d4fe3472a3f542d7c3ed990400b5433e58fc"
+"@babel/parser@7.0.0-beta.53":
+ version "7.0.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-beta.53.tgz#1f45eb617bf9463d482b2c04d349d9e4edbf4892"
+
+"@storybook/addon-actions@3.4.8", "@storybook/addon-actions@^3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-3.4.8.tgz#557bae7c7cc60be9d5199ff972b028de8b574f92"
dependencies:
+ "@storybook/components" "3.4.8"
+ babel-runtime "^6.26.0"
deep-equal "^1.0.1"
+ glamor "^2.20.40"
+ glamorous "^4.12.1"
global "^4.3.2"
- make-error "^1.3.2"
- prop-types "^15.6.0"
+ make-error "^1.3.4"
+ prop-types "^15.6.1"
react-inspector "^2.2.2"
- uuid "^3.1.0"
+ uuid "^3.2.1"
-"@storybook/addon-links@^3.2.16":
- version "3.3.7"
- resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-3.3.7.tgz#df3114718bc7f0a39b6cdc61e301363768d7f2a0"
+"@storybook/addon-links@3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-3.4.8.tgz#303e2e37c8abf1861accc95dd9c5f9274bf528ad"
dependencies:
- "@storybook/components" "^3.3.7"
+ "@storybook/components" "3.4.8"
+ babel-runtime "^6.26.0"
global "^4.3.2"
- prop-types "^15.5.10"
+ prop-types "^15.6.1"
-"@storybook/addons@^3.2.16":
- version "3.3.7"
- resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-3.3.7.tgz#cc27f4ba9da47810f7eae4013224fb5f72b22ffd"
+"@storybook/addons@3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-3.4.8.tgz#ff1142d8f0963dd28b7c6f88dc9d3be170ac6600"
-"@storybook/channel-postmessage@^3.2.16":
- version "3.3.7"
- resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-3.3.7.tgz#15bcc1525a27429348485fafb2fcbcb1091b72e1"
+"@storybook/channel-postmessage@3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-3.4.8.tgz#4df9b315f6ceff07f33334a633f24c7b81a3ac28"
dependencies:
- "@storybook/channels" "^3.3.7"
+ "@storybook/channels" "3.4.8"
global "^4.3.2"
json-stringify-safe "^5.0.1"
-"@storybook/channels@^3.3.7":
- version "3.3.7"
- resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-3.3.7.tgz#227d1aac8d8d227354bdcfcef1e4ad5bee6afc44"
+"@storybook/channels@3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-3.4.8.tgz#df0aff0d20a9597402e76caa7e5ddb088ede3591"
-"@storybook/components@^3.3.7":
- version "3.3.7"
- resolved "https://registry.yarnpkg.com/@storybook/components/-/components-3.3.7.tgz#6f64d56e9516907cd077e66564b8171a5745bc82"
+"@storybook/client-logger@3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-3.4.8.tgz#82d6e1c2cb3e37184cc597a933f64b38fb61b88b"
+
+"@storybook/components@3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@storybook/components/-/components-3.4.8.tgz#45934d9a25374e68152826a162e61b9732871eaf"
dependencies:
glamor "^2.20.40"
- glamorous "^4.11.2"
- prop-types "^15.6.0"
+ glamorous "^4.12.1"
+ prop-types "^15.6.1"
+
+"@storybook/core@3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@storybook/core/-/core-3.4.8.tgz#a7f077175081b9e957cd3b04442c01606271fd2d"
+ dependencies:
+ "@storybook/addons" "3.4.8"
+ "@storybook/channel-postmessage" "3.4.8"
+ "@storybook/client-logger" "3.4.8"
+ "@storybook/node-logger" "3.4.8"
+ "@storybook/ui" "3.4.8"
+ autoprefixer "^7.2.6"
+ babel-runtime "^6.26.0"
+ chalk "^2.3.2"
+ commander "^2.15.0"
+ css-loader "^0.28.11"
+ dotenv "^5.0.1"
+ events "^2.0.0"
+ express "^4.16.3"
+ file-loader "^1.1.11"
+ global "^4.3.2"
+ json-loader "^0.5.7"
+ postcss-flexbugs-fixes "^3.2.0"
+ postcss-loader "^2.1.2"
+ prop-types "^15.6.1"
+ qs "^6.5.1"
+ serve-favicon "^2.4.5"
+ shelljs "^0.8.1"
+ style-loader "^0.20.3"
+ url-loader "^0.6.2"
+ webpack "^3.11.0"
+ webpack-dev-middleware "^1.12.2"
+ webpack-hot-middleware "^2.22.1"
"@storybook/mantra-core@^1.7.2":
version "1.7.2"
@@ -53,6 +98,19 @@
"@storybook/react-simple-di" "^1.2.1"
babel-runtime "6.x.x"
+"@storybook/node-logger@3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-3.4.8.tgz#8f8abcd51920545c7458385b0b30199ae48ad78a"
+ dependencies:
+ npmlog "^4.1.2"
+
+"@storybook/podda@^1.2.3":
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/@storybook/podda/-/podda-1.2.3.tgz#53c4a1a3f8c7bbd5755dff5c34576fd1af9d38ba"
+ dependencies:
+ babel-runtime "^6.11.6"
+ immutable "^3.8.1"
+
"@storybook/react-komposer@^2.0.1", "@storybook/react-komposer@^2.0.3":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@storybook/react-komposer/-/react-komposer-2.0.3.tgz#f9e12a9586b2ce95c24c137eabb8b71527ddb369"
@@ -78,97 +136,75 @@
dependencies:
babel-runtime "^6.5.0"
-"@storybook/react@3.2.16":
- version "3.2.16"
- resolved "https://registry.yarnpkg.com/@storybook/react/-/react-3.2.16.tgz#9a0eaecbc7ba6c97e89ce1d17dee7a2af68260c9"
- dependencies:
- "@storybook/addon-actions" "^3.2.16"
- "@storybook/addon-links" "^3.2.16"
- "@storybook/addons" "^3.2.16"
- "@storybook/channel-postmessage" "^3.2.16"
- "@storybook/ui" "^3.2.16"
- airbnb-js-shims "^1.3.0"
- autoprefixer "^7.1.6"
- babel-core "^6.26.0"
- babel-loader "^7.1.2"
- babel-plugin-react-docgen "^1.8.0"
+"@storybook/react@3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@storybook/react/-/react-3.4.8.tgz#857b83778abb0547525637b084d2fe684a53fc81"
+ dependencies:
+ "@storybook/addon-actions" "3.4.8"
+ "@storybook/addon-links" "3.4.8"
+ "@storybook/addons" "3.4.8"
+ "@storybook/channel-postmessage" "3.4.8"
+ "@storybook/client-logger" "3.4.8"
+ "@storybook/core" "3.4.8"
+ "@storybook/node-logger" "3.4.8"
+ "@storybook/ui" "3.4.8"
+ airbnb-js-shims "^1.4.1"
+ babel-loader "^7.1.4"
+ babel-plugin-macros "^2.2.0"
+ babel-plugin-react-docgen "^1.9.0"
babel-plugin-transform-regenerator "^6.26.0"
babel-plugin-transform-runtime "^6.23.0"
babel-preset-env "^1.6.1"
- babel-preset-minify "^0.2.0"
+ babel-preset-minify "^0.3.0"
babel-preset-react "^6.24.1"
- babel-preset-react-app "^3.1.0"
babel-preset-stage-0 "^6.24.1"
babel-runtime "^6.26.0"
- case-sensitive-paths-webpack-plugin "^2.1.1"
- chalk "^2.3.0"
- commander "^2.11.0"
- common-tags "^1.4.0"
- configstore "^3.1.1"
- core-js "^2.5.1"
- css-loader "^0.28.7"
- express "^4.16.2"
- file-loader "^1.1.5"
+ case-sensitive-paths-webpack-plugin "^2.1.2"
+ common-tags "^1.7.2"
+ core-js "^2.5.3"
+ dotenv-webpack "^1.5.5"
find-cache-dir "^1.0.0"
glamor "^2.20.40"
- glamorous "^4.11.0"
+ glamorous "^4.12.1"
global "^4.3.2"
- json-loader "^0.5.7"
- json-stringify-safe "^5.0.1"
+ html-loader "^0.5.5"
+ html-webpack-plugin "^2.30.1"
json5 "^0.5.1"
lodash.flattendeep "^4.4.0"
- lodash.pick "^4.4.0"
- postcss-flexbugs-fixes "^3.2.0"
- postcss-loader "^2.0.8"
- prop-types "^15.6.0"
- qs "^6.5.1"
+ markdown-loader "^2.0.2"
+ prop-types "^15.6.1"
+ react-dev-utils "^5.0.0"
redux "^3.7.2"
- request "^2.83.0"
- serve-favicon "^2.4.5"
- shelljs "^0.7.8"
- style-loader "^0.18.2"
- url-loader "^0.6.2"
+ uglifyjs-webpack-plugin "^1.2.4"
util-deprecate "^1.0.2"
- uuid "^3.1.0"
- webpack "^3.8.1"
- webpack-dev-middleware "^1.12.0"
- webpack-hot-middleware "^2.20.0"
+ webpack "^3.11.0"
+ webpack-hot-middleware "^2.22.1"
-"@storybook/ui@^3.2.16":
- version "3.3.7"
- resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-3.3.7.tgz#6d58b65955e47ac65588b7244c587fe28df3a1f3"
+"@storybook/ui@3.4.8":
+ version "3.4.8"
+ resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-3.4.8.tgz#73245f02a714cc3de0bb1b62261ec64b6d0d65ae"
dependencies:
- "@storybook/components" "^3.3.7"
+ "@storybook/components" "3.4.8"
"@storybook/mantra-core" "^1.7.2"
+ "@storybook/podda" "^1.2.3"
"@storybook/react-komposer" "^2.0.3"
babel-runtime "^6.26.0"
deep-equal "^1.0.1"
- events "^1.1.1"
+ events "^2.0.0"
fuse.js "^3.2.0"
global "^4.3.2"
- json-stringify-safe "^5.0.1"
keycode "^2.1.9"
lodash.debounce "^4.0.8"
lodash.pick "^4.4.0"
lodash.sortby "^4.7.0"
- podda "^1.2.2"
- prop-types "^15.6.0"
+ lodash.throttle "^4.1.1"
+ prop-types "^15.6.1"
qs "^6.5.1"
- react-fuzzy "^0.5.1"
+ react-fuzzy "^0.5.2"
react-icons "^2.2.7"
- react-inspector "^2.2.2"
- react-modal "^3.1.10"
- react-split-pane "^0.1.74"
+ react-modal "^3.3.2"
+ react-split-pane "^0.1.77"
react-treebeard "^2.1.0"
- redux "^3.7.2"
-
-"@types/inline-style-prefixer@^3.0.0":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@types/inline-style-prefixer/-/inline-style-prefixer-3.0.1.tgz#8541e636b029124b747952e9a28848286d2b5bf6"
-
-"@types/react@^16.0.18":
- version "16.0.34"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.34.tgz#7a8f795afd8a404a9c4af9539b24c75d3996914e"
abab@^1.0.3:
version "1.0.4"
@@ -185,6 +221,13 @@ accepts@~1.3.4:
mime-types "~2.1.16"
negotiator "0.6.1"
+accepts@~1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
+ dependencies:
+ mime-types "~2.1.18"
+ negotiator "0.6.1"
+
acorn-dynamic-import@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
@@ -215,22 +258,29 @@ acorn@^5.0.0, acorn@^5.2.1:
version "5.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822"
-airbnb-js-shims@^1.3.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-1.4.0.tgz#b920b0bc9fafe8b8ae2a073f29fb10303b1b2b18"
+address@1.0.3, address@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9"
+
+airbnb-js-shims@^1.4.1:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-1.6.0.tgz#b0675d05113e928c89bfa5b7b80b7399de8cee2a"
dependencies:
array-includes "^3.0.3"
- array.prototype.flatmap "^1.1.1"
- array.prototype.flatten "^1.1.1"
- es5-shim "^4.5.9"
+ array.prototype.flat "^1.2.1"
+ array.prototype.flatmap "^1.2.1"
+ array.prototype.flatten "^1.2.1"
+ es5-shim "^4.5.10"
es6-shim "^0.35.3"
- function.prototype.name "^1.0.3"
+ function.prototype.name "^1.1.0"
object.entries "^1.0.4"
object.getownpropertydescriptors "^2.0.3"
object.values "^1.0.4"
promise.prototype.finally "^3.1.0"
+ string.prototype.matchall "^3.0.0"
string.prototype.padend "^3.0.0"
string.prototype.padstart "^3.0.0"
+ symbol.prototype.description "^1.0.0"
ajv-keywords@^1.0.0:
version "1.5.1"
@@ -240,6 +290,10 @@ ajv-keywords@^2.0.0, ajv-keywords@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
+ajv-keywords@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
+
ajv@^4.7.0, ajv@^4.9.1:
version "4.11.8"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
@@ -256,6 +310,15 @@ ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5:
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0"
+ajv@^6.1.0:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.2.tgz#678495f9b82f7cca6be248dd92f59bff5e1f4360"
+ dependencies:
+ fast-deep-equal "^2.0.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.1"
+
align-text@^0.1.1, align-text@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
@@ -302,6 +365,12 @@ ansi-styles@^3.1.0, ansi-styles@^3.2.0:
dependencies:
color-convert "^1.9.0"
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ dependencies:
+ color-convert "^1.9.0"
+
any-observable@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242"
@@ -373,6 +442,10 @@ array-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
+array-filter@~0.0.0:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
+
array-find-index@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
@@ -396,6 +469,14 @@ array-includes@^3.0.3:
define-properties "^1.1.2"
es-abstract "^1.7.0"
+array-map@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
+
+array-reduce@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
+
array-union@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@@ -421,17 +502,25 @@ array.prototype.find@^2.0.1:
define-properties "^1.1.2"
es-abstract "^1.7.0"
-array.prototype.flatmap@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.1.1.tgz#dbb6c44693c2a2a2fcab24e551dfbf47f67fde03"
+array.prototype.flat@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz#812db8f02cad24d3fab65dd67eabe3b8903494a4"
dependencies:
define-properties "^1.1.2"
es-abstract "^1.10.0"
function-bind "^1.1.1"
-array.prototype.flatten@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/array.prototype.flatten/-/array.prototype.flatten-1.1.1.tgz#301b351aa8a632356ee2f5311c6c8e8f50d318cc"
+array.prototype.flatmap@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.1.tgz#3103cd4826ef90019c9b0a4839b2535fa6faf4e9"
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.10.0"
+ function-bind "^1.1.1"
+
+array.prototype.flatten@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/array.prototype.flatten/-/array.prototype.flatten-1.2.1.tgz#a77ae1b64524ce373b137fade324d12040d3c680"
dependencies:
define-properties "^1.1.2"
es-abstract "^1.10.0"
@@ -441,7 +530,7 @@ arrify@^1.0.0, arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
-asap@^2.0.6, asap@~2.0.3:
+asap@~2.0.3:
version "2.0.6"
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
@@ -479,6 +568,14 @@ ast-types@0.10.1:
version "0.10.1"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd"
+ast-types@0.11.5:
+ version "0.11.5"
+ resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28"
+
+ast-types@0.9.6:
+ version "0.9.6"
+ resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9"
+
astral-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
@@ -520,7 +617,7 @@ autoprefixer@^6.0.0, autoprefixer@^6.3.1:
postcss "^5.2.16"
postcss-value-parser "^3.2.3"
-autoprefixer@^7.1.4, autoprefixer@^7.1.6:
+autoprefixer@^7.1.4:
version "7.2.4"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.4.tgz#29b367c03876a29bfd3721260d945e3545666c8d"
dependencies:
@@ -531,6 +628,17 @@ autoprefixer@^7.1.4, autoprefixer@^7.1.6:
postcss "^6.0.15"
postcss-value-parser "^3.2.3"
+autoprefixer@^7.2.6:
+ version "7.2.6"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.6.tgz#256672f86f7c735da849c4f07d008abb056067dc"
+ dependencies:
+ browserslist "^2.11.3"
+ caniuse-lite "^1.0.30000805"
+ normalize-range "^0.1.2"
+ num2fraction "^1.2.2"
+ postcss "^6.0.17"
+ postcss-value-parser "^3.2.3"
+
aws-sign2@~0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
@@ -564,7 +672,7 @@ babel-cli@^6.7.5:
optionalDependencies:
chokidar "^1.6.1"
-babel-code-frame@^6.16.0, babel-code-frame@^6.26.0:
+babel-code-frame@6.26.0, babel-code-frame@^6.16.0, babel-code-frame@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
dependencies:
@@ -661,9 +769,9 @@ babel-helper-define-map@^6.24.1:
babel-types "^6.26.0"
lodash "^4.17.4"
-babel-helper-evaluate-path@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.2.0.tgz#0bb2eb01996c0cef53c5e8405e999fe4a0244c08"
+babel-helper-evaluate-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.3.0.tgz#2439545e0b6eae5b7f49b790acbebd6b9a73df20"
babel-helper-explode-assignable-expression@^6.24.1:
version "6.24.1"
@@ -682,9 +790,9 @@ babel-helper-explode-class@^6.24.1:
babel-traverse "^6.24.1"
babel-types "^6.24.1"
-babel-helper-flip-expressions@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.2.0.tgz#160d2090a3d9f9c64a750905321a0bc218f884ec"
+babel-helper-flip-expressions@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.3.0.tgz#f5b6394bd5219b43cf8f7b201535ed540c6e7fa2"
babel-helper-function-name@^6.24.1:
version "6.24.1"
@@ -714,13 +822,13 @@ babel-helper-is-nodes-equiv@^0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684"
-babel-helper-is-void-0@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.2.0.tgz#6ed0ada8a9b1c5b6e88af6b47c1b3b5c080860eb"
+babel-helper-is-void-0@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.3.0.tgz#95570d20bd27b2206f68083ae9980ee7003d8fe7"
-babel-helper-mark-eval-scopes@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.2.0.tgz#7648aaf2ec92aae9b09a20ad91e8df5e1fcc94b2"
+babel-helper-mark-eval-scopes@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.3.0.tgz#b4731314fdd7a89091271a5213b4e12d236e29e8"
babel-helper-optimise-call-expression@^6.24.1:
version "6.24.1"
@@ -747,9 +855,9 @@ babel-helper-remap-async-to-generator@^6.24.1:
babel-traverse "^6.24.1"
babel-types "^6.24.1"
-babel-helper-remove-or-void@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.2.0.tgz#8e46ad5b30560d57d7510b3fd93f332ee7c67386"
+babel-helper-remove-or-void@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.3.0.tgz#f43c86147c8fcc395a9528cbb31e7ff49d7e16e3"
babel-helper-replace-supers@^6.24.1:
version "6.24.1"
@@ -762,9 +870,9 @@ babel-helper-replace-supers@^6.24.1:
babel-traverse "^6.24.1"
babel-types "^6.24.1"
-babel-helper-to-multiple-sequence-expressions@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.2.0.tgz#d1a419634c6cb301f27858c659167cfee0a9d318"
+babel-helper-to-multiple-sequence-expressions@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.3.0.tgz#8da2275ccc26995566118f7213abfd9af7214427"
babel-helpers@^6.24.1:
version "6.24.1"
@@ -788,6 +896,14 @@ babel-loader@^7.1.2:
loader-utils "^1.0.2"
mkdirp "^0.5.1"
+babel-loader@^7.1.4:
+ version "7.1.5"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68"
+ dependencies:
+ find-cache-dir "^1.0.0"
+ loader-utils "^1.0.2"
+ mkdirp "^0.5.1"
+
babel-messages@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
@@ -808,14 +924,6 @@ babel-plugin-dev-expression@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.1.tgz#d4a7beefefbb50e3f2734990a82a2486cf9eb9ee"
-babel-plugin-dynamic-import-node@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.1.0.tgz#bd1d88ac7aaf98df4917c384373b04d971a2b37a"
- dependencies:
- babel-plugin-syntax-dynamic-import "^6.18.0"
- babel-template "^6.26.0"
- babel-types "^6.26.0"
-
babel-plugin-istanbul@^4.0.0:
version "4.1.5"
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e"
@@ -832,82 +940,88 @@ babel-plugin-jsx-fragment@^4.0.2:
version "4.0.3"
resolved "https://registry.yarnpkg.com/babel-plugin-jsx-fragment/-/babel-plugin-jsx-fragment-4.0.3.tgz#78d1ea66185014370a760bc98b35ab8f14104d92"
-babel-plugin-minify-builtins@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.2.0.tgz#317f824b0907210b6348671bb040ca072e2e0c82"
+babel-plugin-macros@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.3.0.tgz#1538e6339cbcbf093f334dc2f10f5f53043e3fda"
dependencies:
- babel-helper-evaluate-path "^0.2.0"
+ cosmiconfig "^4.0.0"
-babel-plugin-minify-constant-folding@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.2.0.tgz#8c70b528b2eb7c13e94d95c8789077d4cdbc3970"
+babel-plugin-minify-builtins@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.3.0.tgz#4740117a6a784063aaf8f092989cf9e4bd484860"
dependencies:
- babel-helper-evaluate-path "^0.2.0"
+ babel-helper-evaluate-path "^0.3.0"
-babel-plugin-minify-dead-code-elimination@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.2.0.tgz#e8025ee10a1e5e4f202633a6928ce892c33747e3"
+babel-plugin-minify-constant-folding@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.3.0.tgz#687e40336bd4ddd921e0e197f0006235ac184bb9"
+ dependencies:
+ babel-helper-evaluate-path "^0.3.0"
+
+babel-plugin-minify-dead-code-elimination@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.3.0.tgz#a323f686c404b824186ba5583cf7996cac81719e"
dependencies:
- babel-helper-evaluate-path "^0.2.0"
- babel-helper-mark-eval-scopes "^0.2.0"
- babel-helper-remove-or-void "^0.2.0"
+ babel-helper-evaluate-path "^0.3.0"
+ babel-helper-mark-eval-scopes "^0.3.0"
+ babel-helper-remove-or-void "^0.3.0"
lodash.some "^4.6.0"
-babel-plugin-minify-flip-comparisons@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.2.0.tgz#0c9c8e93155c8f09dedad8118b634c259f709ef5"
+babel-plugin-minify-flip-comparisons@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.3.0.tgz#6627893a409c9f30ef7f2c89e0c6eea7ee97ddc4"
dependencies:
- babel-helper-is-void-0 "^0.2.0"
+ babel-helper-is-void-0 "^0.3.0"
-babel-plugin-minify-guarded-expressions@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.2.0.tgz#8a8c950040fce3e258a12e6eb21eab94ad7235ab"
+babel-plugin-minify-guarded-expressions@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.3.0.tgz#2552d96189ef45d9a463f1a6b5e4fa110703ac8d"
dependencies:
- babel-helper-flip-expressions "^0.2.0"
+ babel-helper-flip-expressions "^0.3.0"
-babel-plugin-minify-infinity@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.2.0.tgz#30960c615ddbc657c045bb00a1d8eb4af257cf03"
+babel-plugin-minify-infinity@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.3.0.tgz#c5ec0edd433517cf31b3af17077c202beb48bbe7"
-babel-plugin-minify-mangle-names@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.2.0.tgz#719892297ff0106a6ec1a4b0fc062f1f8b6a8529"
+babel-plugin-minify-mangle-names@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.3.0.tgz#f28561bad0dd2f0380816816bb946e219b3b6135"
dependencies:
- babel-helper-mark-eval-scopes "^0.2.0"
+ babel-helper-mark-eval-scopes "^0.3.0"
-babel-plugin-minify-numeric-literals@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.2.0.tgz#5746e851700167a380c05e93f289a7070459a0d1"
+babel-plugin-minify-numeric-literals@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.3.0.tgz#b57734a612e8a592005407323c321119f27d4b40"
-babel-plugin-minify-replace@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.2.0.tgz#3c1f06bc4e6d3e301eacb763edc1be611efc39b0"
+babel-plugin-minify-replace@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.3.0.tgz#980125bbf7cbb5a637439de9d0b1b030a4693893"
-babel-plugin-minify-simplify@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.2.0.tgz#21ceec4857100c5476d7cef121f351156e5c9bc0"
+babel-plugin-minify-simplify@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.3.0.tgz#14574cc74d21c81d3060fafa041010028189f11b"
dependencies:
- babel-helper-flip-expressions "^0.2.0"
+ babel-helper-flip-expressions "^0.3.0"
babel-helper-is-nodes-equiv "^0.0.1"
- babel-helper-to-multiple-sequence-expressions "^0.2.0"
+ babel-helper-to-multiple-sequence-expressions "^0.3.0"
-babel-plugin-minify-type-constructors@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.2.0.tgz#7f3b6458be0863cfd59e9985bed6d134aa7a2e17"
+babel-plugin-minify-type-constructors@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.3.0.tgz#7f5a86ef322c4746364e3c591b8514eeafea6ad4"
dependencies:
- babel-helper-is-void-0 "^0.2.0"
+ babel-helper-is-void-0 "^0.3.0"
babel-plugin-object-assign@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/babel-plugin-object-assign/-/babel-plugin-object-assign-1.2.1.tgz#40eaf89086b436312c2247d16812a9ad32db0998"
-babel-plugin-react-docgen@^1.8.0:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-1.8.1.tgz#6e08e057f5dcd46b434e7553e971baa604dae377"
+babel-plugin-react-docgen@^1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-1.9.0.tgz#2e79aeed2f93b53a172398f93324fdcf9f02e01f"
dependencies:
babel-types "^6.24.1"
- lodash "4.x.x"
- react-docgen "^2.15.0"
+ lodash "^4.17.0"
+ react-docgen "^3.0.0-beta11"
babel-plugin-syntax-async-functions@^6.8.0:
version "6.13.0"
@@ -933,7 +1047,7 @@ babel-plugin-syntax-do-expressions@^6.8.0:
version "6.13.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d"
-babel-plugin-syntax-dynamic-import@6.18.0, babel-plugin-syntax-dynamic-import@^6.18.0:
+babel-plugin-syntax-dynamic-import@^6.18.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
@@ -989,7 +1103,7 @@ babel-plugin-transform-class-constructor-call@^6.24.1:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-plugin-transform-class-properties@6.24.1, babel-plugin-transform-class-properties@^6.23.0, babel-plugin-transform-class-properties@^6.24.1:
+babel-plugin-transform-class-properties@^6.23.0, babel-plugin-transform-class-properties@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac"
dependencies:
@@ -1212,21 +1326,21 @@ babel-plugin-transform-function-bind@^6.22.0:
babel-plugin-syntax-function-bind "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-inline-consecutive-adds@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.2.0.tgz#15dae78921057f4004f8eafd79e15ddc5f12f426"
+babel-plugin-transform-inline-consecutive-adds@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.3.0.tgz#f07d93689c0002ed2b2b62969bdd99f734e03f57"
-babel-plugin-transform-member-expression-literals@^6.8.5:
- version "6.8.5"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.5.tgz#e06ae305cf48d819822e93a70d79269f04d89eec"
+babel-plugin-transform-member-expression-literals@^6.9.0:
+ version "6.9.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz#37039c9a0c3313a39495faac2ff3a6b5b9d038bf"
-babel-plugin-transform-merge-sibling-variables@^6.8.6:
- version "6.8.6"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.6.tgz#6d21efa5ee4981f71657fae716f9594bb2622aef"
+babel-plugin-transform-merge-sibling-variables@^6.9.0:
+ version "6.9.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz#85b422fc3377b449c9d1cde44087203532401dae"
-babel-plugin-transform-minify-booleans@^6.8.3:
- version "6.8.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.3.tgz#5906ed776d3718250519abf1bace44b0b613ddf9"
+babel-plugin-transform-minify-booleans@^6.9.0:
+ version "6.9.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz#acbb3e56a3555dd23928e4b582d285162dd2b198"
babel-plugin-transform-object-assign@^6.22.0:
version "6.22.0"
@@ -1234,46 +1348,40 @@ babel-plugin-transform-object-assign@^6.22.0:
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-object-rest-spread@6.26.0, babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object-rest-spread@^6.23.0:
+babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object-rest-spread@^6.23.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
dependencies:
babel-plugin-syntax-object-rest-spread "^6.8.0"
babel-runtime "^6.26.0"
-babel-plugin-transform-property-literals@^6.8.5:
- version "6.8.5"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.5.tgz#67ed5930b34805443452c8b9690c7ebe1e206c40"
+babel-plugin-transform-property-literals@^6.9.0:
+ version "6.9.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz#98c1d21e255736573f93ece54459f6ce24985d39"
dependencies:
esutils "^2.0.2"
-babel-plugin-transform-react-constant-elements@6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz#2f119bf4d2cdd45eb9baaae574053c604f6147dd"
- dependencies:
- babel-runtime "^6.22.0"
-
babel-plugin-transform-react-display-name@^6.23.0:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1"
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-react-jsx-self@6.22.0, babel-plugin-transform-react-jsx-self@^6.22.0:
+babel-plugin-transform-react-jsx-self@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
dependencies:
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-react-jsx-source@6.22.0, babel-plugin-transform-react-jsx-source@^6.22.0:
+babel-plugin-transform-react-jsx-source@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
dependencies:
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-react-jsx@6.24.1, babel-plugin-transform-react-jsx@^6.24.1:
+babel-plugin-transform-react-jsx@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
dependencies:
@@ -1281,39 +1389,39 @@ babel-plugin-transform-react-jsx@6.24.1, babel-plugin-transform-react-jsx@^6.24.
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-regenerator@6.26.0, babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.26.0:
+babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
dependencies:
regenerator-transform "^0.10.0"
-babel-plugin-transform-regexp-constructors@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.2.0.tgz#6aa5dd0acc515db4be929bbcec4ed4c946c534a3"
+babel-plugin-transform-regexp-constructors@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.3.0.tgz#9bb2c8dd082271a5cb1b3a441a7c52e8fd07e0f5"
-babel-plugin-transform-remove-console@^6.8.5:
- version "6.8.5"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.8.5.tgz#fde9d2d3d725530b0fadd8d31078402410386810"
+babel-plugin-transform-remove-console@^6.9.0:
+ version "6.9.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz#b980360c067384e24b357a588d807d3c83527780"
-babel-plugin-transform-remove-debugger@^6.8.5:
- version "6.8.5"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.8.5.tgz#809584d412bf918f071fdf41e1fdb15ea89cdcd5"
+babel-plugin-transform-remove-debugger@^6.9.0:
+ version "6.9.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz#42b727631c97978e1eb2d199a7aec84a18339ef2"
-babel-plugin-transform-remove-undefined@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.2.0.tgz#94f052062054c707e8d094acefe79416b63452b1"
+babel-plugin-transform-remove-undefined@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.3.0.tgz#03f5f0071867781e9beabbc7b77bf8095fd3f3ec"
dependencies:
- babel-helper-evaluate-path "^0.2.0"
+ babel-helper-evaluate-path "^0.3.0"
-babel-plugin-transform-runtime@6.23.0, babel-plugin-transform-runtime@^6.23.0:
+babel-plugin-transform-runtime@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee"
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-simplify-comparison-operators@^6.8.5:
- version "6.8.5"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.5.tgz#a838786baf40cc33a93b95ae09e05591227e43bf"
+babel-plugin-transform-simplify-comparison-operators@^6.9.0:
+ version "6.9.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz#f62afe096cab0e1f68a2d753fdf283888471ceb9"
babel-plugin-transform-strict-mode@^6.24.1:
version "6.24.1"
@@ -1322,9 +1430,9 @@ babel-plugin-transform-strict-mode@^6.24.1:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
-babel-plugin-transform-undefined-to-void@^6.8.3:
- version "6.8.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.3.tgz#fc52707f6ee1ddc71bb91b0d314fbefdeef9beb4"
+babel-plugin-transform-undefined-to-void@^6.9.0:
+ version "6.9.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280"
babel-polyfill@^6.26.0:
version "6.26.0"
@@ -1334,7 +1442,7 @@ babel-polyfill@^6.26.0:
core-js "^2.5.0"
regenerator-runtime "^0.10.5"
-babel-preset-env@1.6.1, babel-preset-env@^1.1.8, babel-preset-env@^1.6.1:
+babel-preset-env@^1.1.8, babel-preset-env@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"
dependencies:
@@ -1398,52 +1506,35 @@ babel-preset-jest@^21.2.0:
babel-plugin-jest-hoist "^21.2.0"
babel-plugin-syntax-object-rest-spread "^6.13.0"
-babel-preset-minify@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.2.0.tgz#006566552d9b83834472273f306c0131062a0acc"
- dependencies:
- babel-plugin-minify-builtins "^0.2.0"
- babel-plugin-minify-constant-folding "^0.2.0"
- babel-plugin-minify-dead-code-elimination "^0.2.0"
- babel-plugin-minify-flip-comparisons "^0.2.0"
- babel-plugin-minify-guarded-expressions "^0.2.0"
- babel-plugin-minify-infinity "^0.2.0"
- babel-plugin-minify-mangle-names "^0.2.0"
- babel-plugin-minify-numeric-literals "^0.2.0"
- babel-plugin-minify-replace "^0.2.0"
- babel-plugin-minify-simplify "^0.2.0"
- babel-plugin-minify-type-constructors "^0.2.0"
- babel-plugin-transform-inline-consecutive-adds "^0.2.0"
- babel-plugin-transform-member-expression-literals "^6.8.5"
- babel-plugin-transform-merge-sibling-variables "^6.8.6"
- babel-plugin-transform-minify-booleans "^6.8.3"
- babel-plugin-transform-property-literals "^6.8.5"
- babel-plugin-transform-regexp-constructors "^0.2.0"
- babel-plugin-transform-remove-console "^6.8.5"
- babel-plugin-transform-remove-debugger "^6.8.5"
- babel-plugin-transform-remove-undefined "^0.2.0"
- babel-plugin-transform-simplify-comparison-operators "^6.8.5"
- babel-plugin-transform-undefined-to-void "^6.8.3"
+babel-preset-minify@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.3.0.tgz#7db64afa75f16f6e06c0aa5f25195f6f36784d77"
+ dependencies:
+ babel-plugin-minify-builtins "^0.3.0"
+ babel-plugin-minify-constant-folding "^0.3.0"
+ babel-plugin-minify-dead-code-elimination "^0.3.0"
+ babel-plugin-minify-flip-comparisons "^0.3.0"
+ babel-plugin-minify-guarded-expressions "^0.3.0"
+ babel-plugin-minify-infinity "^0.3.0"
+ babel-plugin-minify-mangle-names "^0.3.0"
+ babel-plugin-minify-numeric-literals "^0.3.0"
+ babel-plugin-minify-replace "^0.3.0"
+ babel-plugin-minify-simplify "^0.3.0"
+ babel-plugin-minify-type-constructors "^0.3.0"
+ babel-plugin-transform-inline-consecutive-adds "^0.3.0"
+ babel-plugin-transform-member-expression-literals "^6.9.0"
+ babel-plugin-transform-merge-sibling-variables "^6.9.0"
+ babel-plugin-transform-minify-booleans "^6.9.0"
+ babel-plugin-transform-property-literals "^6.9.0"
+ babel-plugin-transform-regexp-constructors "^0.3.0"
+ babel-plugin-transform-remove-console "^6.9.0"
+ babel-plugin-transform-remove-debugger "^6.9.0"
+ babel-plugin-transform-remove-undefined "^0.3.0"
+ babel-plugin-transform-simplify-comparison-operators "^6.9.0"
+ babel-plugin-transform-undefined-to-void "^6.9.0"
lodash.isplainobject "^4.0.6"
-babel-preset-react-app@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-3.1.0.tgz#d77f6061ab9d7bf4b3cdc86b7cde9ded0df03e48"
- dependencies:
- babel-plugin-dynamic-import-node "1.1.0"
- babel-plugin-syntax-dynamic-import "6.18.0"
- babel-plugin-transform-class-properties "6.24.1"
- babel-plugin-transform-object-rest-spread "6.26.0"
- babel-plugin-transform-react-constant-elements "6.23.0"
- babel-plugin-transform-react-jsx "6.24.1"
- babel-plugin-transform-react-jsx-self "6.22.0"
- babel-plugin-transform-react-jsx-source "6.22.0"
- babel-plugin-transform-regenerator "6.26.0"
- babel-plugin-transform-runtime "6.23.0"
- babel-preset-env "1.6.1"
- babel-preset-react "6.24.1"
-
-babel-preset-react@6.24.1, babel-preset-react@^6.24.1:
+babel-preset-react@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380"
dependencies:
@@ -1508,12 +1599,6 @@ babel-runtime@6.x.x, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime
core-js "^2.4.0"
regenerator-runtime "^0.11.0"
-babel-runtime@^5.8.25:
- version "5.8.38"
- resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-5.8.38.tgz#1c0b02eb63312f5f087ff20450827b425c9d4c19"
- dependencies:
- core-js "^1.0.0"
-
babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
@@ -1603,7 +1688,7 @@ block-stream@*:
dependencies:
inherits "~2.0.0"
-bluebird@^3.4.7, bluebird@^3.5.0:
+bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
@@ -1667,6 +1752,13 @@ bowser@^1.0.0, bowser@^1.7.3:
version "1.9.1"
resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.1.tgz#f86ef2132e8cb10b3eb6ea5af018758c587020db"
+brace-expansion@^1.0.0:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
brace-expansion@^1.1.7:
version "1.1.8"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
@@ -1778,6 +1870,13 @@ browserslist@^2.1.2, browserslist@^2.10.2:
caniuse-lite "^1.0.30000784"
electron-to-chromium "^1.3.30"
+browserslist@^2.11.3:
+ version "2.11.3"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2"
+ dependencies:
+ caniuse-lite "^1.0.30000792"
+ electron-to-chromium "^1.3.30"
+
bser@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
@@ -1830,6 +1929,24 @@ cacache@^10.0.1:
unique-filename "^1.1.0"
y18n "^3.2.1"
+cacache@^10.0.4:
+ version "10.0.4"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
+ dependencies:
+ bluebird "^3.5.1"
+ chownr "^1.0.1"
+ glob "^7.1.2"
+ graceful-fs "^4.1.11"
+ lru-cache "^4.1.1"
+ mississippi "^2.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.2"
+ ssri "^5.2.4"
+ unique-filename "^1.1.0"
+ y18n "^4.0.0"
+
cache-base@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
@@ -1905,9 +2022,13 @@ caniuse-lite@^1.0.30000784:
version "1.0.30000789"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000789.tgz#2e3d937b267133f63635ef7f441fac66360fc889"
-case-sensitive-paths-webpack-plugin@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz#3d29ced8c1f124bf6f53846fb3f5894731fdc909"
+caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805:
+ version "1.0.30000865"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000865.tgz#70026616e8afe6e1442f8bb4e1092987d81a2f25"
+
+case-sensitive-paths-webpack-plugin@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.2.tgz#c899b52175763689224571dad778742e133f0192"
case@^1.3.2:
version "1.5.4"
@@ -1932,7 +2053,7 @@ chain-function@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.0.tgz#0d4ab37e7e18ead0bdc47b920764118ce58733dc"
-chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
+chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
dependencies:
@@ -1942,6 +2063,14 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
+chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
@@ -1950,6 +2079,10 @@ chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0:
escape-string-regexp "^1.0.5"
supports-color "^4.0.0"
+chardet@^0.4.0:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
+
child-process-promise@^1.0.2:
version "1.1.0"
resolved "https://registry.yarnpkg.com/child-process-promise/-/child-process-promise-1.1.0.tgz#131e01a705f15ed4a05d554dd5e032e52612cf30"
@@ -2023,7 +2156,7 @@ class-utils@^0.3.5:
lazy-cache "^2.0.2"
static-extend "^0.1.1"
-classnames@^2.1.3, classnames@^2.1.5, classnames@^2.2.5:
+classnames@^2.1.3, classnames@^2.2.5:
version "2.2.5"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d"
@@ -2039,6 +2172,12 @@ cli-cursor@^1.0.1, cli-cursor@^1.0.2:
dependencies:
restore-cursor "^1.0.1"
+cli-cursor@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+ dependencies:
+ restore-cursor "^2.0.0"
+
cli-spinners@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
@@ -2162,12 +2301,20 @@ commander@2.12.x, commander@^2.11.0, commander@^2.8.1, commander@^2.9.0, command
version "2.12.2"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555"
-common-tags@^1.3.1, common-tags@^1.4.0:
+commander@2.16.x, commander@^2.15.0, commander@~2.16.0:
+ version "2.16.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50"
+
+common-tags@^1.3.1:
version "1.7.1"
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.7.1.tgz#ffc4b8aef2bede5625e8e0c43230cb5ee0424632"
dependencies:
babel-runtime "^6.26.0"
+common-tags@^1.7.2:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937"
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -2216,17 +2363,6 @@ concat-stream@^1.5.0, concat-stream@^1.5.2:
readable-stream "^2.2.2"
typedarray "^0.0.6"
-configstore@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90"
- dependencies:
- dot-prop "^4.1.0"
- graceful-fs "^4.1.2"
- make-dir "^1.0.0"
- unique-string "^1.0.0"
- write-file-atomic "^2.0.0"
- xdg-basedir "^3.0.0"
-
connect-history-api-fallback@^1.3.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a"
@@ -2292,10 +2428,14 @@ core-js@^1.0.0:
version "1.2.7"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
-core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.5.1:
+core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0:
version "2.5.3"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
+core-js@^2.5.3:
+ version "2.5.7"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
+
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@@ -2321,6 +2461,15 @@ cosmiconfig@^3.1.0:
parse-json "^3.0.0"
require-from-string "^2.0.1"
+cosmiconfig@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc"
+ dependencies:
+ is-directory "^0.3.1"
+ js-yaml "^3.9.0"
+ parse-json "^4.0.0"
+ require-from-string "^2.0.1"
+
cp-file@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-2.3.0.tgz#72778324941d664abd8b5377d24635d0c42505bd"
@@ -2377,19 +2526,19 @@ create-react-class@^15.6.2:
loose-envify "^1.3.1"
object-assign "^4.1.1"
-cross-spawn@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
+cross-spawn@5.1.0, cross-spawn@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
dependencies:
lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
which "^1.2.9"
-cross-spawn@^5.0.1:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+cross-spawn@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
dependencies:
lru-cache "^4.0.1"
- shebang-command "^1.2.0"
which "^1.2.9"
cryptiles@2.x.x:
@@ -2420,10 +2569,6 @@ crypto-browserify@^3.11.0:
randombytes "^2.0.0"
randomfill "^1.0.3"
-crypto-random-string@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
-
css-color-names@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
@@ -2448,6 +2593,25 @@ css-literal-loader@^0.2.0:
lodash "^4.17.2"
memory-fs "^0.3.0"
+css-loader@^0.28.11:
+ version "0.28.11"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7"
+ dependencies:
+ babel-code-frame "^6.26.0"
+ css-selector-tokenizer "^0.7.0"
+ cssnano "^3.10.0"
+ icss-utils "^2.1.0"
+ loader-utils "^1.0.2"
+ lodash.camelcase "^4.3.0"
+ object-assign "^4.1.1"
+ postcss "^5.0.6"
+ postcss-modules-extract-imports "^1.2.0"
+ postcss-modules-local-by-default "^1.2.0"
+ postcss-modules-scope "^1.1.0"
+ postcss-modules-values "^1.3.0"
+ postcss-value-parser "^3.3.0"
+ source-list-map "^2.0.0"
+
css-loader@^0.28.7:
version "0.28.8"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.8.tgz#ff36381464dea18fe60f2601a060ba6445886bd5"
@@ -2546,6 +2710,10 @@ cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
dependencies:
cssom "0.3.x"
+csstype@^2.2.0:
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.6.tgz#2ae1db2319642d8b80a668d2d025c6196071e788"
+
currently-unhandled@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@@ -2580,7 +2748,7 @@ date-now@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
-debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
+debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
dependencies:
@@ -2684,6 +2852,10 @@ depd@1.1.1, depd@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+
des.js@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
@@ -2709,6 +2881,13 @@ detect-node@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127"
+detect-port-alt@1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275"
+ dependencies:
+ address "^1.0.1"
+ debug "^2.6.0"
+
diff@^3.2.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c"
@@ -2721,19 +2900,6 @@ diffie-hellman@^5.0.0:
miller-rabin "^4.0.0"
randombytes "^2.0.0"
-disposables@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/disposables/-/disposables-1.0.2.tgz#36c6a674475f55a2d6913567a601444e487b4b6e"
-
-dnd-core@^2.5.4:
- version "2.5.4"
- resolved "https://registry.yarnpkg.com/dnd-core/-/dnd-core-2.5.4.tgz#0c70a8dcbb609c0b222e275fcae9fa83e5897397"
- dependencies:
- asap "^2.0.6"
- invariant "^2.0.0"
- lodash "^4.2.0"
- redux "^3.7.1"
-
dns-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
@@ -2770,14 +2936,10 @@ dom-converter@~0.1:
dependencies:
utila "~0.3"
-"dom-helpers@^2.3.0 || ^3.0.0", dom-helpers@^3.2.0, dom-helpers@^3.2.1:
+"dom-helpers@^2.3.0 || ^3.0.0", dom-helpers@^3.2.0, dom-helpers@^3.2.1, dom-helpers@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6"
-dom-helpers@^2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-2.4.0.tgz#9bb4b245f637367b1fa670274272aa28fe06c367"
-
dom-serializer@0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
@@ -2820,11 +2982,19 @@ domutils@1.5.1:
dom-serializer "0"
domelementtype "1"
-dot-prop@^4.1.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
+dotenv-webpack@^1.5.5:
+ version "1.5.7"
+ resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.5.7.tgz#c44395ab21d1fd28d79a90942a7b14b1debd145f"
dependencies:
- is-obj "^1.0.0"
+ dotenv "^5.0.1"
+
+dotenv@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef"
+
+duplexer@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
duplexify@^3.1.2, duplexify@^3.4.2:
version "3.5.1"
@@ -2886,6 +3056,10 @@ encodeurl@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+
encoding@^0.1.11:
version "0.1.12"
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
@@ -2941,6 +3115,16 @@ es-abstract@^1.10.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1,
is-callable "^1.1.3"
is-regex "^1.0.4"
+es-abstract@^1.12.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
+ dependencies:
+ es-to-primitive "^1.1.1"
+ function-bind "^1.1.1"
+ has "^1.0.1"
+ is-callable "^1.1.3"
+ is-regex "^1.0.4"
+
es-to-primitive@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
@@ -2956,7 +3140,7 @@ es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
es6-iterator "~2.0.1"
es6-symbol "~3.1.1"
-es5-shim@^4.5.9:
+es5-shim@^4.5.10:
version "4.5.10"
resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.5.10.tgz#b7e17ef4df2a145b821f1497b50c25cf94026205"
@@ -3000,6 +3184,13 @@ es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1:
d "1"
es5-ext "~0.10.14"
+es6-templates@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4"
+ dependencies:
+ recast "~0.11.12"
+ through "~2.3.6"
+
es6-weak-map@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
@@ -3013,7 +3204,7 @@ escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
-escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
@@ -3153,7 +3344,7 @@ esprima@^2.6.0:
version "2.7.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
-esprima@^3.1.3:
+esprima@^3.1.3, esprima@~3.1.0:
version "3.1.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
@@ -3197,10 +3388,14 @@ eventemitter3@1.x.x:
version "1.2.0"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
-events@^1.0.0, events@^1.1.1:
+events@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+events@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5"
+
eventsource@0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
@@ -3276,6 +3471,12 @@ expand-range@^1.8.1:
dependencies:
fill-range "^2.1.0"
+expand-tilde@^2.0.0, expand-tilde@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+ dependencies:
+ homedir-polyfill "^1.0.1"
+
expect@^21.2.1:
version "21.2.1"
resolved "https://registry.yarnpkg.com/expect/-/expect-21.2.1.tgz#003ac2ac7005c3c29e73b38a272d4afadd6d1d7b"
@@ -3329,6 +3530,41 @@ express@^4.16.2:
utils-merge "1.0.1"
vary "~1.1.2"
+express@^4.16.3:
+ version "4.16.3"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53"
+ dependencies:
+ accepts "~1.3.5"
+ array-flatten "1.1.1"
+ body-parser "1.18.2"
+ content-disposition "0.5.2"
+ content-type "~1.0.4"
+ cookie "0.3.1"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "~1.1.2"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "1.1.1"
+ fresh "0.5.2"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "~2.3.0"
+ parseurl "~1.3.2"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.3"
+ qs "6.5.1"
+ range-parser "~1.2.0"
+ safe-buffer "5.1.1"
+ send "0.16.2"
+ serve-static "1.13.2"
+ setprototypeof "1.1.0"
+ statuses "~1.4.0"
+ type-is "~1.6.16"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
extend-shallow@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
@@ -3346,6 +3582,14 @@ extend@~3.0.0, extend@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
+external-editor@^2.0.4:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
+ dependencies:
+ chardet "^0.4.0"
+ iconv-lite "^0.4.17"
+ tmp "^0.0.33"
+
extglob@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
@@ -3386,6 +3630,10 @@ fast-deep-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
+fast-deep-equal@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
+
fast-json-stable-stringify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
@@ -3439,6 +3687,12 @@ figures@^1.3.5, figures@^1.7.0:
escape-string-regexp "^1.0.5"
object-assign "^4.1.0"
+figures@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
file-entry-cache@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
@@ -3452,12 +3706,12 @@ file-loader@^0.11.2:
dependencies:
loader-utils "^1.0.2"
-file-loader@^1.1.5:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.6.tgz#7b9a8f2c58f00a77fddf49e940f7ac978a3ea0e8"
+file-loader@^1.1.11:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
dependencies:
loader-utils "^1.0.2"
- schema-utils "^0.3.0"
+ schema-utils "^0.4.5"
filename-regex@^2.0.0:
version "2.0.1"
@@ -3470,6 +3724,10 @@ fileset@^2.0.2:
glob "^7.0.3"
minimatch "^3.0.3"
+filesize@3.5.11:
+ version "3.5.11"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.11.tgz#1919326749433bb3cf77368bd158caabcc19e9ee"
+
fill-range@^2.1.0:
version "2.2.3"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
@@ -3501,6 +3759,18 @@ finalhandler@1.1.0:
statuses "~1.3.1"
unpipe "~1.0.0"
+finalhandler@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "~2.3.0"
+ parseurl "~1.3.2"
+ statuses "~1.4.0"
+ unpipe "~1.0.0"
+
find-cache-dir@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
@@ -3670,7 +3940,7 @@ function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
-function.prototype.name@^1.0.3:
+function.prototype.name@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327"
dependencies:
@@ -3757,16 +4027,17 @@ glamor@^2.20.40:
prop-types "^15.5.10"
through "^2.3.8"
-glamorous@^4.11.0, glamorous@^4.11.2:
- version "4.11.2"
- resolved "https://registry.yarnpkg.com/glamorous/-/glamorous-4.11.2.tgz#ce144c6a53e247ddf0896ad6faddebf78c49d864"
+glamorous@^4.12.1:
+ version "4.13.1"
+ resolved "https://registry.yarnpkg.com/glamorous/-/glamorous-4.13.1.tgz#8909afcbc7f09133c6eb26bedcc1250c1f774312"
dependencies:
brcast "^3.0.0"
+ csstype "^2.2.0"
fast-memoize "^2.2.7"
html-tag-names "^1.1.1"
is-function "^1.0.1"
is-plain-object "^2.0.4"
- react-html-attributes "^1.3.0"
+ react-html-attributes "^1.4.2"
svg-tag-names "^1.1.0"
glob-base@^0.3.0:
@@ -3820,6 +4091,24 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1:
once "^1.3.0"
path-is-absolute "^1.0.0"
+global-modules@1.0.0, global-modules@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
+ dependencies:
+ global-prefix "^1.0.1"
+ is-windows "^1.0.1"
+ resolve-dir "^1.0.0"
+
+global-prefix@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
+ dependencies:
+ expand-tilde "^2.0.2"
+ homedir-polyfill "^1.0.1"
+ ini "^1.3.4"
+ is-windows "^1.0.1"
+ which "^1.2.14"
+
global@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f"
@@ -3887,6 +4176,12 @@ growly@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
+gzip-size@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+ dependencies:
+ duplexer "^0.1.1"
+
handle-thing@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
@@ -3946,6 +4241,10 @@ has-flag@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+
has-symbols@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
@@ -4049,10 +4348,6 @@ hoist-non-react-statics@1.x.x, hoist-non-react-statics@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb"
-hoist-non-react-statics@^2.1.0:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz#343db84c6018c650778898240135a1420ee22ce0"
-
home-or-tmp@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
@@ -4060,6 +4355,12 @@ home-or-tmp@^2.0.0:
os-homedir "^1.0.0"
os-tmpdir "^1.0.1"
+homedir-polyfill@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
+ dependencies:
+ parse-passwd "^1.0.0"
+
hosted-git-info@^2.1.4:
version "2.5.0"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
@@ -4091,6 +4392,16 @@ html-entities@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
+html-loader@^0.5.5:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea"
+ dependencies:
+ es6-templates "^0.2.3"
+ fastparse "^1.1.1"
+ html-minifier "^3.5.8"
+ loader-utils "^1.1.0"
+ object-assign "^4.1.1"
+
html-minifier@^3.2.3:
version "3.5.8"
resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.8.tgz#5ccdb1f73a0d654e6090147511f6e6b2ee312700"
@@ -4104,11 +4415,23 @@ html-minifier@^3.2.3:
relateurl "0.2.x"
uglify-js "3.3.x"
+html-minifier@^3.5.8:
+ version "3.5.19"
+ resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.19.tgz#ed53c4b7326fe507bc3a1adbcc3bbb56660a2ebd"
+ dependencies:
+ camel-case "3.0.x"
+ clean-css "4.1.x"
+ commander "2.16.x"
+ he "1.1.x"
+ param-case "2.1.x"
+ relateurl "0.2.x"
+ uglify-js "3.4.x"
+
html-tag-names@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/html-tag-names/-/html-tag-names-1.1.2.tgz#f65168964c5a9c82675efda882875dcb2a875c22"
-html-webpack-plugin@^2.28.0:
+html-webpack-plugin@^2.28.0, html-webpack-plugin@^2.30.1:
version "2.30.1"
resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz#7f9c421b7ea91ec460f56527d78df484ee7537d5"
dependencies:
@@ -4197,6 +4520,12 @@ iconv-lite@0.4.19, iconv-lite@~0.4.13:
version "0.4.19"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
+iconv-lite@^0.4.17:
+ version "0.4.23"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
icss-replace-symbols@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
@@ -4227,6 +4556,18 @@ immutable@^3.8.1:
version "3.8.2"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3"
+import-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
+ dependencies:
+ import-from "^2.1.0"
+
+import-from@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
+ dependencies:
+ resolve-from "^3.0.0"
+
import-loader@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/import-loader/-/import-loader-1.0.1.tgz#73f1a8400f4e928051b4d9a6754dff4c0ba2bab4"
@@ -4286,7 +4627,7 @@ inherits@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
-ini@~1.3.0:
+ini@^1.3.4, ini@~1.3.0:
version "1.3.5"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
@@ -4304,6 +4645,25 @@ inline-style-prefixer@^3.0.6:
bowser "^1.7.3"
css-in-js-utils "^2.0.0"
+inquirer@3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
+ dependencies:
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.0"
+ cli-cursor "^2.1.0"
+ cli-width "^2.0.0"
+ external-editor "^2.0.4"
+ figures "^2.0.0"
+ lodash "^4.3.0"
+ mute-stream "0.0.7"
+ run-async "^2.2.0"
+ rx-lite "^4.0.8"
+ rx-lite-aggregates "^4.0.8"
+ string-width "^2.1.0"
+ strip-ansi "^4.0.0"
+ through "^2.3.6"
+
inquirer@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
@@ -4332,12 +4692,18 @@ interpret@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
-invariant@^2.0.0, invariant@^2.1.0, invariant@^2.1.2, invariant@^2.2.2:
+invariant@^2.1.0, invariant@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
dependencies:
loose-envify "^1.0.0"
+invariant@^2.2.1:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
+ dependencies:
+ loose-envify "^1.0.0"
+
invert-kv@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
@@ -4350,6 +4716,10 @@ ipaddr.js@1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0"
+ipaddr.js@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b"
+
is-absolute-url@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
@@ -4530,7 +4900,7 @@ is-number@^3.0.0:
dependencies:
kind-of "^3.0.2"
-is-obj@^1.0.0, is-obj@^1.0.1:
+is-obj@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
@@ -4608,6 +4978,10 @@ is-resolvable@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.1.tgz#acca1cd36dbe44b974b924321555a70ba03b1cf4"
+is-root@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-root/-/is-root-1.0.0.tgz#07b6c233bc394cd9d02ba15c966bd6660d6342d5"
+
is-stream@^1.0.1, is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@@ -4644,6 +5018,10 @@ is-windows@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c"
+is-windows@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+
is-wsl@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
@@ -5031,10 +5409,18 @@ json-loader@^0.5.4, json-loader@^0.5.7:
version "0.5.7"
resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
+json-parse-better-errors@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+
json-schema-traverse@^0.3.0:
version "0.3.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+
json-schema@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
@@ -5078,7 +5464,11 @@ jsx-ast-utils@^1.3.4:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1"
-keycode@^2.1.0, keycode@^2.1.9:
+keycode@^2.1.2:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04"
+
+keycode@^2.1.9:
version "2.1.9"
resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.1.9.tgz#964a23c54e4889405b4861a5c9f0480d45141dfa"
@@ -5291,10 +5681,6 @@ locate-path@^2.0.0:
p-locate "^2.0.0"
path-exists "^3.0.0"
-lodash-compat@^3.10.1:
- version "3.10.2"
- resolved "https://registry.yarnpkg.com/lodash-compat/-/lodash-compat-3.10.2.tgz#c6940128a9d30f8e902cd2cf99fd0cba4ecfc183"
-
lodash-es@^4.2.1:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7"
@@ -5392,18 +5778,26 @@ lodash.tail@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
+lodash.throttle@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
+
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
-lodash@4.x.x, lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.4:
- version "4.17.4"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
-
lodash@^3.10.1, lodash@^3.8.0:
version "3.10.1"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
+lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.4:
+ version "4.17.4"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+
+lodash@^4.17.0:
+ version "4.17.10"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
+
log-symbols@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
@@ -5465,9 +5859,9 @@ make-dir@^1.0.0:
dependencies:
pify "^3.0.0"
-make-error@^1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.2.tgz#8762ffad2444dd8ff1f7c819629fa28e24fea1c4"
+make-error@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.4.tgz#19978ed575f9e9545d2ff8c13e33b5d18a67d535"
makeerror@1.0.x:
version "1.0.11"
@@ -5498,10 +5892,21 @@ markdown-jsx-loader@^3.0.2:
marked "^0.3.6"
prismjs "^1.3.0"
+markdown-loader@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/markdown-loader/-/markdown-loader-2.0.2.tgz#1cdcf11307658cd611046d7db34c2fe80542af7c"
+ dependencies:
+ loader-utils "^1.1.0"
+ marked "^0.3.9"
+
marked@^0.3.5, marked@^0.3.6:
version "0.3.12"
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.12.tgz#7cf25ff2252632f3fe2406bde258e94eee927519"
+marked@^0.3.9:
+ version "0.3.19"
+ resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790"
+
math-expression-evaluator@^1.2.14:
version "1.2.17"
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
@@ -5523,6 +5928,10 @@ mem@^1.1.0:
dependencies:
mimic-fn "^1.0.0"
+memoize-one@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.0.0.tgz#fc5e2f1427a216676a62ec652cf7398cfad123db"
+
memory-fs@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290"
@@ -5619,12 +6028,22 @@ mime-db@~1.30.0:
version "1.30.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
+mime-db@~1.35.0:
+ version "1.35.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47"
+
mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7:
version "2.1.17"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
dependencies:
mime-db "~1.30.0"
+mime-types@~2.1.18:
+ version "2.1.19"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0"
+ dependencies:
+ mime-db "~1.35.0"
+
mime@1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
@@ -5655,7 +6074,13 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
dependencies:
- brace-expansion "^1.1.7"
+ brace-expansion "^1.1.7"
+
+minimatch@3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+ dependencies:
+ brace-expansion "^1.0.0"
minimist@0.0.8:
version "0.0.8"
@@ -5684,6 +6109,21 @@ mississippi@^1.3.0:
stream-each "^1.1.0"
through2 "^2.0.0"
+mississippi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f"
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^2.0.1"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
mixin-deep@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.0.tgz#47a8732ba97799457c8c1eca28f95132d7e8150a"
@@ -5749,6 +6189,10 @@ mute-stream@0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
+mute-stream@0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
+
nan@^2.3.0, nan@^2.3.2:
version "2.8.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
@@ -5976,7 +6420,7 @@ npm-which@^3.0.1:
npm-path "^2.0.2"
which "^1.2.10"
-"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2:
+"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2, npmlog@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
dependencies:
@@ -6112,6 +6556,18 @@ onetime@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
+onetime@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+ dependencies:
+ mimic-fn "^1.0.0"
+
+opn@5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/opn/-/opn-5.2.0.tgz#71fdf934d6827d676cecbea1531f95d354641225"
+ dependencies:
+ is-wsl "^1.1.0"
+
opn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519"
@@ -6173,7 +6629,7 @@ os-locale@^2.0.0:
lcid "^1.0.0"
mem "^1.1.0"
-os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
+os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
@@ -6269,6 +6725,17 @@ parse-json@^3.0.0:
dependencies:
error-ex "^1.3.1"
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-passwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+
parse5@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
@@ -6385,13 +6852,6 @@ pluralize@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
-podda@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/podda/-/podda-1.2.2.tgz#15b0edbd334ade145813343f5ecf9c10a71cf500"
- dependencies:
- babel-runtime "^6.11.6"
- immutable "^3.8.1"
-
portfinder@^1.0.9:
version "1.0.13"
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
@@ -6480,6 +6940,13 @@ postcss-load-config@^1.2.0:
postcss-load-options "^1.2.0"
postcss-load-plugins "^2.3.0"
+postcss-load-config@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484"
+ dependencies:
+ cosmiconfig "^4.0.0"
+ import-cwd "^2.0.0"
+
postcss-load-options@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c"
@@ -6494,7 +6961,7 @@ postcss-load-plugins@^2.3.0:
cosmiconfig "^2.1.1"
object-assign "^4.1.0"
-postcss-loader@^2.0.6, postcss-loader@^2.0.8:
+postcss-loader@^2.0.6:
version "2.0.10"
resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.10.tgz#090db0540140bd56a7a7f717c41bc29aeef4c674"
dependencies:
@@ -6503,6 +6970,15 @@ postcss-loader@^2.0.6, postcss-loader@^2.0.8:
postcss-load-config "^1.2.0"
schema-utils "^0.3.0"
+postcss-loader@^2.1.2:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740"
+ dependencies:
+ loader-utils "^1.1.0"
+ postcss "^6.0.0"
+ postcss-load-config "^2.0.0"
+ schema-utils "^0.4.0"
+
postcss-merge-idents@^2.1.5:
version "2.1.7"
resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
@@ -6570,6 +7046,12 @@ postcss-modules-extract-imports@^1.1.0:
dependencies:
postcss "^6.0.1"
+postcss-modules-extract-imports@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85"
+ dependencies:
+ postcss "^6.0.1"
+
postcss-modules-local-by-default@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
@@ -6688,6 +7170,14 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.15:
source-map "^0.6.1"
supports-color "^5.1.0"
+postcss@^6.0.17:
+ version "6.0.23"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
+ dependencies:
+ chalk "^2.4.1"
+ source-map "^0.6.1"
+ supports-color "^5.4.0"
+
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
@@ -6776,6 +7266,13 @@ prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8,
loose-envify "^1.3.1"
object-assign "^4.1.1"
+prop-types@^15.6.1, prop-types@^15.6.2:
+ version "15.6.2"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102"
+ dependencies:
+ loose-envify "^1.3.1"
+ object-assign "^4.1.1"
+
proxy-addr@~2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec"
@@ -6783,6 +7280,13 @@ proxy-addr@~2.0.2:
forwarded "~0.1.2"
ipaddr.js "1.5.2"
+proxy-addr@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341"
+ dependencies:
+ forwarded "~0.1.2"
+ ipaddr.js "1.6.0"
+
prr@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
@@ -6808,6 +7312,13 @@ pump@^1.0.0:
end-of-stream "^1.1.0"
once "^1.3.1"
+pump@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
pumpify@^1.3.3:
version "1.3.5"
resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.3.5.tgz#1b671c619940abcaeac0ad0e3a3c164be760993b"
@@ -6824,6 +7335,10 @@ punycode@^1.2.4, punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+punycode@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+
q@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -6918,20 +7433,22 @@ rc@^1.1.7:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
-react-bootstrap@^0.28.0:
- version "0.28.5"
- resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-0.28.5.tgz#393ab59ad66071a6a7bae0fda7518cdd228f2baf"
- dependencies:
- babel-runtime "^5.8.25"
- classnames "^2.1.5"
- dom-helpers "^2.4.0"
- invariant "^2.1.2"
- keycode "^2.1.0"
- lodash-compat "^3.10.1"
- react-overlays "^0.6.0"
- react-prop-types "^0.3.0"
- uncontrollable "^3.1.3"
- warning "^2.1.0"
+react-bootstrap@^0.32.1:
+ version "0.32.1"
+ resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-0.32.1.tgz#60624c1b48a39d773ef6cce6421a4f33ecc166bb"
+ dependencies:
+ babel-runtime "^6.11.6"
+ classnames "^2.2.5"
+ dom-helpers "^3.2.0"
+ invariant "^2.2.1"
+ keycode "^2.1.2"
+ prop-types "^15.5.10"
+ prop-types-extra "^1.0.1"
+ react-overlays "^0.8.0"
+ react-prop-types "^0.4.0"
+ react-transition-group "^2.0.0"
+ uncontrollable "^4.1.0"
+ warning "^3.0.0"
react-component-metadata@^3.0.0:
version "3.1.0"
@@ -6942,24 +7459,30 @@ react-component-metadata@^3.0.0:
babylon "^6.7.0"
lodash "^3.8.0"
-react-dnd-html5-backend@^2.1.2:
- version "2.5.4"
- resolved "https://registry.yarnpkg.com/react-dnd-html5-backend/-/react-dnd-html5-backend-2.5.4.tgz#974ad083f67b12d56977a5b171f5ffeb29d78352"
- dependencies:
- lodash "^4.2.0"
-
-react-dnd@^2.1.4:
- version "2.5.4"
- resolved "https://registry.yarnpkg.com/react-dnd/-/react-dnd-2.5.4.tgz#0b6dc5e9d0dfc2909f4f4fe736e5534f3afd1bd9"
- dependencies:
- disposables "^1.0.1"
- dnd-core "^2.5.4"
- hoist-non-react-statics "^2.1.0"
- invariant "^2.1.0"
- lodash "^4.2.0"
- prop-types "^15.5.10"
+react-dev-utils@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-5.0.1.tgz#1f396e161fe44b595db1b186a40067289bf06613"
+ dependencies:
+ address "1.0.3"
+ babel-code-frame "6.26.0"
+ chalk "1.1.3"
+ cross-spawn "5.1.0"
+ detect-port-alt "1.1.6"
+ escape-string-regexp "1.0.5"
+ filesize "3.5.11"
+ global-modules "1.0.0"
+ gzip-size "3.0.0"
+ inquirer "3.3.0"
+ is-root "1.0.0"
+ opn "5.2.0"
+ react-error-overlay "^4.0.0"
+ recursive-readdir "2.2.1"
+ shell-quote "1.6.1"
+ sockjs-client "1.1.4"
+ strip-ansi "3.0.1"
+ text-table "0.2.0"
-react-docgen@^2.14.1, react-docgen@^2.15.0:
+react-docgen@^2.14.1:
version "2.20.0"
resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-2.20.0.tgz#41a6da483a34a4aaed041a9909f5e61864d681cb"
dependencies:
@@ -6971,27 +7494,43 @@ react-docgen@^2.14.1, react-docgen@^2.15.0:
node-dir "^0.1.10"
recast "^0.12.6"
-react-dom@^16.2.0:
- version "16.2.0"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.2.0.tgz#69003178601c0ca19b709b33a83369fe6124c044"
+react-docgen@^3.0.0-beta11:
+ version "3.0.0-rc.0"
+ resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-3.0.0-rc.0.tgz#6452afc31649d651c9bafce9b94a470581530b76"
+ dependencies:
+ "@babel/parser" "7.0.0-beta.53"
+ async "^2.1.4"
+ babel-runtime "^6.9.2"
+ commander "^2.9.0"
+ doctrine "^2.0.0"
+ node-dir "^0.1.10"
+ recast "^0.15.0"
+
+react-dom@^16.4.1:
+ version "16.4.1"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.1.tgz#7f8b0223b3a5fbe205116c56deb85de32685dad6"
dependencies:
fbjs "^0.8.16"
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.0"
-react-fuzzy@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/react-fuzzy/-/react-fuzzy-0.5.1.tgz#295c2a4079ad39402e05605d9d7accd2db8527b6"
+react-error-overlay@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-4.0.0.tgz#d198408a85b4070937a98667f500c832f86bd5d4"
+
+react-fuzzy@^0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/react-fuzzy/-/react-fuzzy-0.5.2.tgz#fc13bf6f0b785e5fefe908724efebec4935eaefe"
dependencies:
babel-runtime "^6.23.0"
classnames "^2.2.5"
fuse.js "^3.0.1"
prop-types "^15.5.9"
-react-html-attributes@^1.3.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/react-html-attributes/-/react-html-attributes-1.4.1.tgz#97b5ec710da68833598c8be6f89ac436216840a5"
+react-html-attributes@^1.4.2:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/react-html-attributes/-/react-html-attributes-1.4.3.tgz#8c36c35fce6b750938d286af428ed1da7625186e"
dependencies:
html-element-attributes "^1.0.0"
@@ -7012,21 +7551,17 @@ react-inspector@^2.2.2:
babel-runtime "^6.26.0"
is-dom "^1.0.9"
-react-modal@^3.1.10:
- version "3.1.10"
- resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.1.10.tgz#8898b5cc4ebba78adbb8dea4c55a69818aa682cc"
+react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
+
+react-modal@^3.3.2:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.5.1.tgz#33d38527def90ea324848f7d63e53acc4468a451"
dependencies:
exenv "^1.2.0"
prop-types "^15.5.10"
- warning "^3.0.0"
-
-react-overlays@^0.6.0:
- version "0.6.12"
- resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.6.12.tgz#a079c750cc429d7db4c7474a95b4b54033e255c3"
- dependencies:
- classnames "^2.2.5"
- dom-helpers "^3.2.0"
- react-prop-types "^0.4.0"
+ react-lifecycles-compat "^3.0.0"
warning "^3.0.0"
react-overlays@^0.7.0:
@@ -7039,11 +7574,16 @@ react-overlays@^0.7.0:
prop-types-extra "^1.0.1"
warning "^3.0.0"
-react-prop-types@^0.3.0:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/react-prop-types/-/react-prop-types-0.3.2.tgz#e2763ac6f3a80199d8981c3647c44b0554c97b7f"
+react-overlays@^0.8.0:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.8.3.tgz#fad65eea5b24301cca192a169f5dddb0b20d3ac5"
dependencies:
- warning "^2.0.0"
+ classnames "^2.2.5"
+ dom-helpers "^3.2.1"
+ prop-types "^15.5.10"
+ prop-types-extra "^1.0.1"
+ react-transition-group "^2.2.0"
+ warning "^3.0.0"
react-prop-types@^0.4.0:
version "0.4.0"
@@ -7051,14 +7591,13 @@ react-prop-types@^0.4.0:
dependencies:
warning "^3.0.0"
-react-split-pane@^0.1.74:
- version "0.1.74"
- resolved "https://registry.yarnpkg.com/react-split-pane/-/react-split-pane-0.1.74.tgz#cf79fc98b51ab0763fdc778749b810a102b036ca"
+react-split-pane@^0.1.77:
+ version "0.1.82"
+ resolved "https://registry.yarnpkg.com/react-split-pane/-/react-split-pane-0.1.82.tgz#42fbb9fd4823f05e037de0dab3cd6cf9bf0cf4ea"
dependencies:
- "@types/inline-style-prefixer" "^3.0.0"
- "@types/react" "^16.0.18"
inline-style-prefixer "^3.0.6"
prop-types "^15.5.10"
+ react-lifecycles-compat "^3.0.4"
react-style-proptype "^3.0.0"
react-style-proptype@^3.0.0:
@@ -7077,6 +7616,15 @@ react-transition-group@^1.1.2:
prop-types "^15.5.6"
warning "^3.0.0"
+react-transition-group@^2.0.0, react-transition-group@^2.2.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.4.0.tgz#1d9391fabfd82e016f26fabd1eec329dbd922b5a"
+ dependencies:
+ dom-helpers "^3.3.1"
+ loose-envify "^1.3.1"
+ prop-types "^15.6.2"
+ react-lifecycles-compat "^3.0.4"
+
react-treebeard@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/react-treebeard/-/react-treebeard-2.1.0.tgz#fbd5cf51089b6f09a9b18350ab3bddf736e57800"
@@ -7088,9 +7636,9 @@ react-treebeard@^2.1.0:
shallowequal "^0.2.2"
velocity-react "^1.3.1"
-react@^16.2.0:
- version "16.2.0"
- resolved "https://registry.yarnpkg.com/react/-/react-16.2.0.tgz#a31bd2dab89bff65d42134fa187f24d054c273ba"
+react@^16.4.1:
+ version "16.4.1"
+ resolved "https://registry.yarnpkg.com/react/-/react-16.4.1.tgz#de51ba5764b5dbcd1f9079037b862bd26b82fe32"
dependencies:
fbjs "^0.8.16"
loose-envify "^1.1.0"
@@ -7175,12 +7723,36 @@ recast@^0.12.6:
private "~0.1.5"
source-map "~0.6.1"
+recast@^0.15.0:
+ version "0.15.3"
+ resolved "https://registry.yarnpkg.com/recast/-/recast-0.15.3.tgz#5fc1fd1c8e2d4d027ee3977a176bbb8d1c83305e"
+ dependencies:
+ ast-types "0.11.5"
+ esprima "~4.0.0"
+ private "~0.1.5"
+ source-map "~0.6.1"
+
+recast@~0.11.12:
+ version "0.11.23"
+ resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3"
+ dependencies:
+ ast-types "0.9.6"
+ esprima "~3.1.0"
+ private "~0.1.5"
+ source-map "~0.5.0"
+
rechoir@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
dependencies:
resolve "^1.1.6"
+recursive-readdir@2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.1.tgz#90ef231d0778c5ce093c9a48d74e5c5422d13a99"
+ dependencies:
+ minimatch "3.0.3"
+
redent@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
@@ -7202,7 +7774,7 @@ reduce-function-call@^1.0.1:
dependencies:
balanced-match "^0.4.2"
-redux@^3.7.1, redux@^3.7.2:
+redux@^3.7.2:
version "3.7.2"
resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b"
dependencies:
@@ -7243,6 +7815,12 @@ regex-not@^1.0.0:
dependencies:
extend-shallow "^2.0.1"
+regexp.prototype.flags@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c"
+ dependencies:
+ define-properties "^1.1.2"
+
regexpu-core@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
@@ -7312,7 +7890,7 @@ repeating@^2.0.0:
dependencies:
is-finite "^1.0.0"
-request@2, request@^2.60.0, request@^2.79.0, request@^2.83.0:
+request@2, request@^2.60.0, request@^2.79.0:
version "2.83.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
dependencies:
@@ -7424,6 +8002,13 @@ resolve-cwd@^2.0.0:
dependencies:
resolve-from "^3.0.0"
+resolve-dir@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
+ dependencies:
+ expand-tilde "^2.0.0"
+ global-modules "^1.0.0"
+
resolve-from@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
@@ -7453,13 +8038,20 @@ restore-cursor@^1.0.1:
exit-hook "^1.0.0"
onetime "^1.0.0"
+restore-cursor@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+ dependencies:
+ onetime "^2.0.0"
+ signal-exit "^3.0.2"
+
right-align@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
dependencies:
align-text "^0.1.1"
-rimraf@2, rimraf@^2.2.8, rimraf@^2.4.2, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1:
+rimraf@2, rimraf@^2.2.8, rimraf@^2.4.2, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
dependencies:
@@ -7478,12 +8070,28 @@ run-async@^0.1.0:
dependencies:
once "^1.3.0"
+run-async@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
+ dependencies:
+ is-promise "^2.1.0"
+
run-queue@^1.0.0, run-queue@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
dependencies:
aproba "^1.1.1"
+rx-lite-aggregates@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
+ dependencies:
+ rx-lite "*"
+
+rx-lite@*, rx-lite@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
+
rx-lite@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
@@ -7498,6 +8106,10 @@ safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, s
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
+"safer-buffer@>= 2.1.2 < 3":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+
sane@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/sane/-/sane-2.2.0.tgz#d6d2e2fcab00e3d283c93b912b7c3a20846f1d56"
@@ -7541,6 +8153,13 @@ schema-utils@^0.3.0:
dependencies:
ajv "^5.0.0"
+schema-utils@^0.4.0, schema-utils@^0.4.5:
+ version "0.4.5"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e"
+ dependencies:
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
+
schema-utils@^0.4.2:
version "0.4.3"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.3.tgz#e2a594d3395834d5e15da22b48be13517859458e"
@@ -7595,6 +8214,24 @@ send@0.16.1:
range-parser "~1.2.0"
statuses "~1.3.1"
+send@0.16.2:
+ version "0.16.2"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
+ dependencies:
+ debug "2.6.9"
+ depd "~1.1.2"
+ destroy "~1.0.4"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "~1.6.2"
+ mime "1.4.1"
+ ms "2.0.0"
+ on-finished "~2.3.0"
+ range-parser "~1.2.0"
+ statuses "~1.4.0"
+
serialize-javascript@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005"
@@ -7630,6 +8267,15 @@ serve-static@1.13.1:
parseurl "~1.3.2"
send "0.16.1"
+serve-static@1.13.2:
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.2"
+ send "0.16.2"
+
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
@@ -7706,11 +8352,20 @@ shebang-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+shell-quote@1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
+ dependencies:
+ array-filter "~0.0.0"
+ array-map "~0.0.0"
+ array-reduce "~0.0.0"
+ jsonify "~0.0.0"
+
shelljs@^0.5.1:
version "0.5.3"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.5.3.tgz#c54982b996c76ef0c1e6b59fbdc5825f5b713113"
-shelljs@^0.7.5, shelljs@^0.7.8:
+shelljs@^0.7.5:
version "0.7.8"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3"
dependencies:
@@ -7718,6 +8373,14 @@ shelljs@^0.7.5, shelljs@^0.7.8:
interpret "^1.0.0"
rechoir "^0.6.2"
+shelljs@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.2.tgz#345b7df7763f4c2340d584abb532c5f752ca9e35"
+ dependencies:
+ glob "^7.0.0"
+ interpret "^1.0.0"
+ rechoir "^0.6.2"
+
shellwords@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
@@ -7821,7 +8484,7 @@ source-map-url@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
-source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6:
+source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.6:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
@@ -7902,6 +8565,12 @@ ssri@^5.0.0:
dependencies:
safe-buffer "^5.1.0"
+ssri@^5.2.4:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06"
+ dependencies:
+ safe-buffer "^5.1.1"
+
staged-git-files@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35"
@@ -7913,7 +8582,7 @@ static-extend@^0.1.1:
define-property "^0.2.5"
object-copy "^0.1.0"
-"statuses@>= 1.3.1 < 2":
+"statuses@>= 1.3.1 < 2", statuses@~1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
@@ -7980,13 +8649,23 @@ string-width@^1.0.1, string-width@^1.0.2:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-string-width@^2.0.0:
+string-width@^2.0.0, string-width@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
dependencies:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
+string.prototype.matchall@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-3.0.0.tgz#66f4d8dd5c6c6cea4dffb55ec5f3184a8dd0dd59"
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.12.0"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ regexp.prototype.flags "^1.2.0"
+
string.prototype.padend@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0"
@@ -8025,7 +8704,7 @@ stringstream@~0.0.4, stringstream@~0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+strip-ansi@3.0.1, strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
dependencies:
@@ -8065,13 +8744,6 @@ strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-style-loader@^0.18.2:
- version "0.18.2"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.18.2.tgz#cc31459afbcd6d80b7220ee54b291a9fd66ff5eb"
- dependencies:
- loader-utils "^1.0.2"
- schema-utils "^0.3.0"
-
style-loader@^0.19.0:
version "0.19.1"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.1.tgz#591ffc80bcefe268b77c5d9ebc0505d772619f85"
@@ -8079,6 +8751,13 @@ style-loader@^0.19.0:
loader-utils "^1.0.2"
schema-utils "^0.3.0"
+style-loader@^0.20.3:
+ version "0.20.3"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.20.3.tgz#ebef06b89dec491bcb1fdb3452e913a6fd1c10c4"
+ dependencies:
+ loader-utils "^1.1.0"
+ schema-utils "^0.4.5"
+
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
@@ -8101,6 +8780,12 @@ supports-color@^5.1.0:
dependencies:
has-flag "^2.0.0"
+supports-color@^5.3.0, supports-color@^5.4.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
+ dependencies:
+ has-flag "^3.0.0"
+
svg-tag-names@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/svg-tag-names/-/svg-tag-names-1.1.1.tgz#9641b29ef71025ee094c7043f7cdde7d99fbd50a"
@@ -8133,6 +8818,12 @@ symbol-tree@^3.2.1:
version "3.2.2"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
+symbol.prototype.description@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/symbol.prototype.description/-/symbol.prototype.description-1.0.0.tgz#6e355660eb1e44ca8ad53a68fdb72ef131ca4b12"
+ dependencies:
+ has-symbols "^1.0.0"
+
table@^3.7.8:
version "3.8.3"
resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
@@ -8183,7 +8874,7 @@ test-exclude@^4.1.1:
read-pkg-up "^1.0.1"
require-main-filename "^1.0.1"
-text-table@~0.2.0:
+text-table@0.2.0, text-table@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -8198,7 +8889,7 @@ through2@^2.0.0:
readable-stream "^2.1.5"
xtend "~4.0.1"
-through@^2.3.6, through@^2.3.8:
+through@^2.3.6, through@^2.3.8, through@~2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
@@ -8220,6 +8911,12 @@ tiny-emitter@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.2.tgz#82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c"
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ dependencies:
+ os-tmpdir "~1.0.2"
+
tmpl@1.0.x:
version "1.0.4"
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
@@ -8312,6 +9009,13 @@ type-is@~1.6.15:
media-typer "0.3.0"
mime-types "~2.1.15"
+type-is@~1.6.16:
+ version "1.6.16"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.18"
+
typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
@@ -8334,6 +9038,13 @@ uglify-js@3.3.x:
commander "~2.12.1"
source-map "~0.6.1"
+uglify-js@3.4.x:
+ version "3.4.5"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.5.tgz#650889c0766cf0f6fd5346cea09cd212f544be69"
+ dependencies:
+ commander "~2.16.0"
+ source-map "~0.6.1"
+
uglify-js@^2.6, uglify-js@^2.8.29:
version "2.8.29"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
@@ -8368,6 +9079,19 @@ uglifyjs-webpack-plugin@^1.0.0-beta.2:
webpack-sources "^1.1.0"
worker-farm "^1.5.2"
+uglifyjs-webpack-plugin@^1.2.4:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00"
+ dependencies:
+ cacache "^10.0.4"
+ find-cache-dir "^1.0.0"
+ schema-utils "^0.4.5"
+ serialize-javascript "^1.4.0"
+ source-map "^0.6.1"
+ uglify-es "^3.3.4"
+ webpack-sources "^1.1.0"
+ worker-farm "^1.5.2"
+
uid-number@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
@@ -8376,13 +9100,7 @@ unc-path-regex@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
-uncontrollable@^3.1.3:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-3.3.1.tgz#e23b402e7a4c69b1853fb4b43ce34b6480c65b6f"
- dependencies:
- invariant "^2.1.0"
-
-uncontrollable@^4.0.0:
+uncontrollable@^4.0.0, uncontrollable@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-4.1.0.tgz#e0358291252e1865222d90939b19f2f49f81c1a9"
dependencies:
@@ -8423,12 +9141,6 @@ unique-slug@^2.0.0:
dependencies:
imurmurhash "^0.1.4"
-unique-string@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
- dependencies:
- crypto-random-string "^1.0.0"
-
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@@ -8444,6 +9156,12 @@ upper-case@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
+uri-js@^4.2.1:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
+ dependencies:
+ punycode "^2.1.0"
+
urix@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
@@ -8521,6 +9239,10 @@ uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
+uuid@^3.2.1:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
+
v8flags@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
@@ -8575,7 +9297,7 @@ walker@~1.0.5:
dependencies:
makeerror "1.0.x"
-warning@^2.0.0, warning@^2.1.0:
+warning@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/warning/-/warning-2.1.0.tgz#21220d9c63afc77a8c92111e011af705ce0c6901"
dependencies:
@@ -8648,7 +9370,7 @@ webpack-atoms@^4.1.2:
node-sass "^4.5.3"
sass-loader "^6.0.6"
-webpack-dev-middleware@1.12.2, webpack-dev-middleware@^1.12.0:
+webpack-dev-middleware@1.12.2, webpack-dev-middleware@^1.12.2:
version "1.12.2"
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"
dependencies:
@@ -8690,9 +9412,9 @@ webpack-dev-server@^2.9.5:
webpack-dev-middleware "1.12.2"
yargs "6.6.0"
-webpack-hot-middleware@^2.20.0:
- version "2.21.0"
- resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.21.0.tgz#7b3c113a7a4b301c91e0749573c7aab28b414b52"
+webpack-hot-middleware@^2.22.1:
+ version "2.22.3"
+ resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.22.3.tgz#ae6025d57d656085c5b716b44e0bc0f796787776"
dependencies:
ansi-html "0.0.7"
html-entities "^1.2.0"
@@ -8706,7 +9428,7 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0:
source-list-map "^2.0.0"
source-map "~0.6.1"
-webpack@^3.10.0, webpack@^3.6.0, webpack@^3.8.1:
+webpack@^3.10.0, webpack@^3.6.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725"
dependencies:
@@ -8733,6 +9455,33 @@ webpack@^3.10.0, webpack@^3.6.0, webpack@^3.8.1:
webpack-sources "^1.0.1"
yargs "^8.0.2"
+webpack@^3.11.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.12.0.tgz#3f9e34360370602fcf639e97939db486f4ec0d74"
+ dependencies:
+ acorn "^5.0.0"
+ acorn-dynamic-import "^2.0.0"
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
+ async "^2.1.2"
+ enhanced-resolve "^3.4.0"
+ escope "^3.6.0"
+ interpret "^1.0.0"
+ json-loader "^0.5.4"
+ json5 "^0.5.1"
+ loader-runner "^2.3.0"
+ loader-utils "^1.1.0"
+ memory-fs "~0.4.1"
+ mkdirp "~0.5.0"
+ node-libs-browser "^2.0.0"
+ source-map "^0.5.3"
+ supports-color "^4.2.1"
+ tapable "^0.2.7"
+ uglifyjs-webpack-plugin "^0.4.6"
+ watchpack "^1.4.0"
+ webpack-sources "^1.0.1"
+ yargs "^8.0.2"
+
websocket-driver@>=0.5.1:
version "0.7.0"
resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb"
@@ -8779,6 +9528,12 @@ which@1, which@^1.2.10, which@^1.2.12, which@^1.2.9:
dependencies:
isexe "^2.0.0"
+which@^1.2.14:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ dependencies:
+ isexe "^2.0.0"
+
wide-align@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
@@ -8823,7 +9578,7 @@ wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-write-file-atomic@^2.0.0, write-file-atomic@^2.1.0:
+write-file-atomic@^2.1.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab"
dependencies:
@@ -8837,10 +9592,6 @@ write@^0.2.1:
dependencies:
mkdirp "^0.5.1"
-xdg-basedir@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
-
xml-char-classes@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
@@ -8857,6 +9608,10 @@ y18n@^3.2.0, y18n@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
+y18n@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+
yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"