Skip to content

Commit ce0d56b

Browse files
TrySoundjquense
authored andcommitted
feat: remove propTypes in production (jquense#1180)
This saves ~7kB
1 parent 69b28af commit ce0d56b

22 files changed

+371
-353
lines changed

.babelrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
{
22
"presets": ["jason"],
3+
plugins: [
4+
['transform-react-remove-prop-types', { mode: 'wrap' }],
5+
],
36
"env": {
47
"esm": {
58
"presets": [

.size-snapshot.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"./dist/react-big-calendar.js": {
3-
"bundled": 470107,
4-
"minified": 152579,
5-
"gzipped": 42233
3+
"bundled": 469894,
4+
"minified": 152522,
5+
"gzipped": 42174
66
},
77
"./dist/react-big-calendar.min.js": {
8-
"bundled": 439313,
9-
"minified": 142681,
10-
"gzipped": 39554
8+
"bundled": 412865,
9+
"minified": 135555,
10+
"gzipped": 38300
1111
}
1212
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
"babel-core": "^7.0.0-bridge.0",
7373
"babel-eslint": "^10.0.1",
7474
"babel-jest": "^23.6.0",
75+
"babel-plugin-transform-react-remove-prop-types": "^0.4.22",
7576
"babel-preset-jason": "^6.0.1",
7677
"bootstrap": "^3.3.5",
7778
"component-metadata-loader": "^4.0.0",

src/Agenda.js

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,6 @@ import { inRange } from './utils/eventLevels'
1010
import { isSelected } from './utils/selection'
1111

1212
class Agenda extends React.Component {
13-
static propTypes = {
14-
events: PropTypes.array,
15-
date: PropTypes.instanceOf(Date),
16-
length: PropTypes.number.isRequired,
17-
18-
selected: PropTypes.object,
19-
20-
accessors: PropTypes.object.isRequired,
21-
components: PropTypes.object.isRequired,
22-
getters: PropTypes.object.isRequired,
23-
localizer: PropTypes.object.isRequired,
24-
}
25-
26-
static defaultProps = {
27-
length: 30,
28-
}
29-
3013
componentDidMount() {
3114
this._adjustHeader()
3215
}
@@ -200,6 +183,23 @@ class Agenda extends React.Component {
200183
}
201184
}
202185

186+
Agenda.propTypes = {
187+
events: PropTypes.array,
188+
date: PropTypes.instanceOf(Date),
189+
length: PropTypes.number.isRequired,
190+
191+
selected: PropTypes.object,
192+
193+
accessors: PropTypes.object.isRequired,
194+
components: PropTypes.object.isRequired,
195+
getters: PropTypes.object.isRequired,
196+
localizer: PropTypes.object.isRequired,
197+
}
198+
199+
Agenda.defaultProps = {
200+
length: 30,
201+
}
202+
203203
Agenda.range = (start, { length = Agenda.defaultProps.length }) => {
204204
let end = dates.add(start, length, 'day')
205205
return { start, end }

src/BackgroundCells.js

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,6 @@ import { dateCellSelection, getSlotAtX, pointInBox } from './utils/selection'
99
import Selection, { getBoundsForNode, isEvent } from './Selection'
1010

1111
class BackgroundCells extends React.Component {
12-
static propTypes = {
13-
date: PropTypes.instanceOf(Date),
14-
getNow: PropTypes.func.isRequired,
15-
16-
getters: PropTypes.object.isRequired,
17-
components: PropTypes.object.isRequired,
18-
19-
container: PropTypes.func,
20-
dayPropGetter: PropTypes.func,
21-
selectable: PropTypes.oneOf([true, false, 'ignoreEvents']),
22-
longPressThreshold: PropTypes.number,
23-
24-
onSelectSlot: PropTypes.func.isRequired,
25-
onSelectEnd: PropTypes.func,
26-
onSelectStart: PropTypes.func,
27-
28-
range: PropTypes.arrayOf(PropTypes.instanceOf(Date)),
29-
rtl: PropTypes.bool,
30-
type: PropTypes.string,
31-
}
32-
3312
constructor(props, context) {
3413
super(props, context)
3514

@@ -185,4 +164,25 @@ class BackgroundCells extends React.Component {
185164
}
186165
}
187166

167+
BackgroundCells.propTypes = {
168+
date: PropTypes.instanceOf(Date),
169+
getNow: PropTypes.func.isRequired,
170+
171+
getters: PropTypes.object.isRequired,
172+
components: PropTypes.object.isRequired,
173+
174+
container: PropTypes.func,
175+
dayPropGetter: PropTypes.func,
176+
selectable: PropTypes.oneOf([true, false, 'ignoreEvents']),
177+
longPressThreshold: PropTypes.number,
178+
179+
onSelectSlot: PropTypes.func.isRequired,
180+
onSelectEnd: PropTypes.func,
181+
onSelectStart: PropTypes.func,
182+
183+
range: PropTypes.arrayOf(PropTypes.instanceOf(Date)),
184+
rtl: PropTypes.bool,
185+
type: PropTypes.string,
186+
}
187+
188188
export default BackgroundCells

src/Calendar.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -952,7 +952,11 @@ class Calendar extends React.Component {
952952
}
953953

954954
let views = this.getViews()
955-
this.handleRangeChange(this.props.date || this.props.getNow(), views[view], view)
955+
this.handleRangeChange(
956+
this.props.date || this.props.getNow(),
957+
views[view],
958+
view
959+
)
956960
}
957961

958962
handleSelectEvent = (...args) => {

src/DateContentRow.js

Lines changed: 39 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -11,46 +11,6 @@ import EventRow from './EventRow'
1111
import EventEndingRow from './EventEndingRow'
1212
import * as DateSlotMetrics from './utils/DateSlotMetrics'
1313

14-
const propTypes = {
15-
date: PropTypes.instanceOf(Date),
16-
events: PropTypes.array.isRequired,
17-
range: PropTypes.array.isRequired,
18-
19-
rtl: PropTypes.bool,
20-
resourceId: PropTypes.any,
21-
renderForMeasure: PropTypes.bool,
22-
renderHeader: PropTypes.func,
23-
24-
container: PropTypes.func,
25-
selected: PropTypes.object,
26-
selectable: PropTypes.oneOf([true, false, 'ignoreEvents']),
27-
longPressThreshold: PropTypes.number,
28-
29-
onShowMore: PropTypes.func,
30-
onSelectSlot: PropTypes.func,
31-
onSelect: PropTypes.func,
32-
onSelectEnd: PropTypes.func,
33-
onSelectStart: PropTypes.func,
34-
onDoubleClick: PropTypes.func,
35-
dayPropGetter: PropTypes.func,
36-
37-
getNow: PropTypes.func.isRequired,
38-
isAllDay: PropTypes.bool,
39-
40-
accessors: PropTypes.object.isRequired,
41-
components: PropTypes.object.isRequired,
42-
getters: PropTypes.object.isRequired,
43-
localizer: PropTypes.object.isRequired,
44-
45-
minRows: PropTypes.number.isRequired,
46-
maxRows: PropTypes.number.isRequired,
47-
}
48-
49-
const defaultProps = {
50-
minRows: 0,
51-
maxRows: Infinity,
52-
}
53-
5414
class DateContentRow extends React.Component {
5515
constructor(...args) {
5616
super(...args)
@@ -218,7 +178,44 @@ class DateContentRow extends React.Component {
218178
}
219179
}
220180

221-
DateContentRow.propTypes = propTypes
222-
DateContentRow.defaultProps = defaultProps
181+
DateContentRow.propTypes = {
182+
date: PropTypes.instanceOf(Date),
183+
events: PropTypes.array.isRequired,
184+
range: PropTypes.array.isRequired,
185+
186+
rtl: PropTypes.bool,
187+
resourceId: PropTypes.any,
188+
renderForMeasure: PropTypes.bool,
189+
renderHeader: PropTypes.func,
190+
191+
container: PropTypes.func,
192+
selected: PropTypes.object,
193+
selectable: PropTypes.oneOf([true, false, 'ignoreEvents']),
194+
longPressThreshold: PropTypes.number,
195+
196+
onShowMore: PropTypes.func,
197+
onSelectSlot: PropTypes.func,
198+
onSelect: PropTypes.func,
199+
onSelectEnd: PropTypes.func,
200+
onSelectStart: PropTypes.func,
201+
onDoubleClick: PropTypes.func,
202+
dayPropGetter: PropTypes.func,
203+
204+
getNow: PropTypes.func.isRequired,
205+
isAllDay: PropTypes.bool,
206+
207+
accessors: PropTypes.object.isRequired,
208+
components: PropTypes.object.isRequired,
209+
getters: PropTypes.object.isRequired,
210+
localizer: PropTypes.object.isRequired,
211+
212+
minRows: PropTypes.number.isRequired,
213+
maxRows: PropTypes.number.isRequired,
214+
}
215+
216+
DateContentRow.defaultProps = {
217+
minRows: 0,
218+
maxRows: Infinity,
219+
}
223220

224221
export default DateContentRow

src/Day.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@ import { navigate } from './utils/constants'
66
import TimeGrid from './TimeGrid'
77

88
class Day extends React.Component {
9-
static propTypes = {
10-
date: PropTypes.instanceOf(Date).isRequired,
11-
}
12-
139
render() {
1410
let { date, ...props } = this.props
1511
let range = Day.range(date)
@@ -18,6 +14,10 @@ class Day extends React.Component {
1814
}
1915
}
2016

17+
Day.propTypes = {
18+
date: PropTypes.instanceOf(Date).isRequired,
19+
}
20+
2121
Day.range = date => {
2222
return [dates.startOf(date, 'day')]
2323
}

src/DayColumn.js

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -14,46 +14,6 @@ import TimeSlotGroup from './TimeSlotGroup'
1414
import TimeGridEvent from './TimeGridEvent'
1515

1616
class DayColumn extends React.Component {
17-
static propTypes = {
18-
events: PropTypes.array.isRequired,
19-
step: PropTypes.number.isRequired,
20-
date: PropTypes.instanceOf(Date).isRequired,
21-
min: PropTypes.instanceOf(Date).isRequired,
22-
max: PropTypes.instanceOf(Date).isRequired,
23-
getNow: PropTypes.func.isRequired,
24-
isNow: PropTypes.bool,
25-
26-
rtl: PropTypes.bool,
27-
28-
accessors: PropTypes.object.isRequired,
29-
components: PropTypes.object.isRequired,
30-
getters: PropTypes.object.isRequired,
31-
localizer: PropTypes.object.isRequired,
32-
33-
showMultiDayTimes: PropTypes.bool,
34-
culture: PropTypes.string,
35-
timeslots: PropTypes.number,
36-
37-
selected: PropTypes.object,
38-
selectable: PropTypes.oneOf([true, false, 'ignoreEvents']),
39-
eventOffset: PropTypes.number,
40-
longPressThreshold: PropTypes.number,
41-
42-
onSelecting: PropTypes.func,
43-
onSelectSlot: PropTypes.func.isRequired,
44-
onSelectEvent: PropTypes.func.isRequired,
45-
onDoubleClickEvent: PropTypes.func.isRequired,
46-
47-
className: PropTypes.string,
48-
dragThroughEvents: PropTypes.bool,
49-
resource: PropTypes.any,
50-
}
51-
52-
static defaultProps = {
53-
dragThroughEvents: true,
54-
timeslots: 2,
55-
}
56-
5717
state = { selecting: false, timeIndicatorPosition: null }
5818

5919
constructor(...args) {
@@ -390,4 +350,44 @@ class DayColumn extends React.Component {
390350
}
391351
}
392352

353+
DayColumn.propTypes = {
354+
events: PropTypes.array.isRequired,
355+
step: PropTypes.number.isRequired,
356+
date: PropTypes.instanceOf(Date).isRequired,
357+
min: PropTypes.instanceOf(Date).isRequired,
358+
max: PropTypes.instanceOf(Date).isRequired,
359+
getNow: PropTypes.func.isRequired,
360+
isNow: PropTypes.bool,
361+
362+
rtl: PropTypes.bool,
363+
364+
accessors: PropTypes.object.isRequired,
365+
components: PropTypes.object.isRequired,
366+
getters: PropTypes.object.isRequired,
367+
localizer: PropTypes.object.isRequired,
368+
369+
showMultiDayTimes: PropTypes.bool,
370+
culture: PropTypes.string,
371+
timeslots: PropTypes.number,
372+
373+
selected: PropTypes.object,
374+
selectable: PropTypes.oneOf([true, false, 'ignoreEvents']),
375+
eventOffset: PropTypes.number,
376+
longPressThreshold: PropTypes.number,
377+
378+
onSelecting: PropTypes.func,
379+
onSelectSlot: PropTypes.func.isRequired,
380+
onSelectEvent: PropTypes.func.isRequired,
381+
onDoubleClickEvent: PropTypes.func.isRequired,
382+
383+
className: PropTypes.string,
384+
dragThroughEvents: PropTypes.bool,
385+
resource: PropTypes.any,
386+
}
387+
388+
DayColumn.defaultProps = {
389+
dragThroughEvents: true,
390+
timeslots: 2,
391+
}
392+
393393
export default DayColumn

0 commit comments

Comments
 (0)