lanes 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/client/lanes/Config.coffee +26 -9
  3. data/client/lanes/access/screens/user-management/UserManagement.cjsx +1 -1
  4. data/client/lanes/components/grid/EditingMixin.cjsx +8 -4
  5. data/client/lanes/components/grid/PopOverMixin.cjsx +7 -1
  6. data/client/lanes/components/modal/Modal.cjsx +11 -1
  7. data/client/lanes/components/record-finder/RecordFinder.cjsx +8 -4
  8. data/client/lanes/components/shared/DateTime.cjsx +8 -6
  9. data/client/lanes/components/shared/FieldMixin.cjsx +3 -3
  10. data/client/lanes/components/shared/Icon.cjsx +1 -1
  11. data/client/lanes/components/shared/ImageAsset.cjsx +23 -11
  12. data/client/lanes/components/shared/NetworkActivityOverlay.cjsx +2 -0
  13. data/client/lanes/extension/Base.coffee +2 -0
  14. data/client/lanes/fonts/fontawesome-webfont.woff +0 -0
  15. data/client/lanes/fonts/fontawesome-webfont.woff2 +0 -0
  16. data/client/lanes/lib/RequestAssets.coffee +30 -0
  17. data/client/lanes/lib/all.js +1 -0
  18. data/client/lanes/lib/loader.js +93 -0
  19. data/client/lanes/lib/utilFunctions.coffee +12 -0
  20. data/client/lanes/models/Asset.coffee +3 -4
  21. data/client/lanes/models/AssociationMap.coffee +17 -6
  22. data/client/lanes/models/Base.coffee +20 -13
  23. data/client/lanes/models/Collection.coffee +4 -1
  24. data/client/lanes/models/PubSub.coffee +2 -3
  25. data/client/lanes/models/SmtpSettings.coffee +7 -0
  26. data/client/lanes/models/Sync.coffee +2 -2
  27. data/client/lanes/react/Viewport.coffee +14 -10
  28. data/client/lanes/react/mixins/FieldErrors.coffee +3 -4
  29. data/client/lanes/react/mixins/ReadEditingState.coffee +1 -0
  30. data/client/lanes/remote/Bootstrap.coffee +85 -0
  31. data/client/lanes/remote/api.coffee +2 -1
  32. data/client/lanes/remote/onDocumentReady.coffee +12 -0
  33. data/client/lanes/screens/Definitions.coffee +29 -12
  34. data/client/lanes/screens/SystemSettings.cjsx +12 -3
  35. data/client/lanes/styles/fonts/_bordered-pulled.scss +9 -0
  36. data/client/lanes/styles/fonts/_core.scss +1 -2
  37. data/client/lanes/styles/fonts/_icons.scss +56 -0
  38. data/client/lanes/styles/fonts/_mixins.scss +37 -4
  39. data/client/lanes/styles/fonts/_path.scss +2 -2
  40. data/client/lanes/styles/fonts/_screen-reader.scss +5 -0
  41. data/client/lanes/styles/fonts/_variables.scss +58 -2
  42. data/client/lanes/styles/fonts/font-awesome.scss +3 -1
  43. data/client/lanes/vendor/development/calendar.js +56 -57
  44. data/client/lanes/vendor/development/commons.js +31319 -29618
  45. data/client/lanes/vendor/development/data.js +8468 -7607
  46. data/client/lanes/vendor/development/helpers.js +265 -131
  47. data/client/lanes/vendor/development/toggle.js +288 -184
  48. data/client/lanes/vendor/development/ui.js +3387 -3492
  49. data/client/lanes/vendor/development/widgets.js +972 -1229
  50. data/client/lanes/vendor/production/calendar.js +60 -61
  51. data/client/lanes/vendor/production/commons.js +30695 -29032
  52. data/client/lanes/vendor/production/data.js +8457 -7598
  53. data/client/lanes/vendor/production/toggle.js +288 -184
  54. data/client/lanes/vendor/production/ui.js +3264 -3373
  55. data/client/lanes/vendor/production/widgets.js +972 -1229
  56. data/client/lanes/vendor/standalone/index.js +21106 -18761
  57. data/client/lanes/vendor/styles/toggle.scss +4 -3
  58. data/client/lanes/workspace/ScreenView.cjsx +2 -2
  59. data/client/lanes/workspace/styles/header.scss +4 -0
  60. data/config/routes.rb +0 -2
  61. data/db/migrate/01_create_system_settings.rb +1 -1
  62. data/db/migrate/02_create_assets.rb +1 -1
  63. data/lanes.gemspec +1 -0
  64. data/lib/lanes.rb +1 -0
  65. data/lib/lanes/access/track_modifications.rb +4 -2
  66. data/lib/lanes/api.rb +1 -0
  67. data/lib/lanes/api/cable.rb +11 -3
  68. data/lib/lanes/api/controller_base.rb +23 -19
  69. data/lib/lanes/api/default_routes.rb +9 -1
  70. data/lib/lanes/api/generic_controller.rb +1 -1
  71. data/lib/lanes/api/handlers/asset.rb +2 -3
  72. data/lib/lanes/api/helper_methods.rb +5 -11
  73. data/lib/lanes/api/pub_sub.rb +13 -7
  74. data/lib/lanes/api/request_wrapper.rb +1 -1
  75. data/lib/lanes/api/routing.rb +10 -7
  76. data/lib/lanes/api/to_json.rb +7 -0
  77. data/lib/lanes/asset.rb +4 -1
  78. data/lib/lanes/concerns/set_attribute_data.rb +2 -1
  79. data/lib/lanes/extension.rb +3 -1
  80. data/lib/lanes/mailer.rb +40 -0
  81. data/lib/lanes/rake_tasks.rb +4 -0
  82. data/lib/lanes/spec_helper.rb +11 -3
  83. data/lib/lanes/system_settings.rb +22 -9
  84. data/lib/lanes/version.rb +1 -1
  85. data/lib/lanes/workspace/extension.rb +5 -0
  86. data/npm-build/package.json +2 -2
  87. data/npm-build/react-toggle.js +1 -1
  88. data/npm-build/standalone.js +3 -0
  89. data/spec/command-reference-files/initial/Gemfile +1 -1
  90. data/spec/command-reference-files/initial/client/appy-app/Extension.coffee +2 -1
  91. data/spec/command-reference-files/model/db/migrate/20150218032025_create_test_tests.rb +1 -1
  92. data/spec/command-reference-files/screen/client/appy-app/Extension.coffee +2 -1
  93. data/spec/fixtures/system_settings.yml +8 -1
  94. data/spec/server/mailer_spec.rb +33 -0
  95. data/spec/server/system_settings_spec.rb +16 -0
  96. data/templates/client/Extension.coffee +2 -1
  97. data/templates/config/database.yml +1 -1
  98. data/templates/db/create_table_migration.rb +1 -1
  99. metadata +27 -6
  100. data/client/fonts/fontawesome-webfont.woff +0 -0
  101. data/client/fonts/fontawesome-webfont.woff2 +0 -0
  102. data/client/lanes/lib/loader.coffee +0 -100
  103. data/client/lanes/workspace/Modal.cjsx +0 -47
@@ -6,248 +6,353 @@ webpackJsonp([2],{
6
6
  /* WEBPACK VAR INJECTION */(function(global) {var Lanes = ( global.Lanes || (global.Lanes = {}) );
7
7
  Lanes.Vendor = ( Lanes.Vendor || {} );
8
8
 
9
- Lanes.Vendor.ReactToggle = __webpack_require__(683)
10
- __webpack_require__(689);
9
+ Lanes.Vendor.ReactToggle = __webpack_require__(720).default;
10
+ __webpack_require__(726);
11
11
 
12
12
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
13
13
 
14
14
  /***/ },
15
15
 
16
- /***/ 683:
16
+ /***/ 720:
17
17
  /***/ function(module, exports, __webpack_require__) {
18
18
 
19
- "use strict";
19
+ 'use strict';
20
20
 
21
- var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
21
+ Object.defineProperty(exports, "__esModule", {
22
+ value: true
23
+ });
22
24
 
23
25
  var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
24
26
 
25
- var React = _interopRequire(__webpack_require__(11));
27
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
26
28
 
27
- var classNames = _interopRequire(__webpack_require__(682));
29
+ var _react = __webpack_require__(11);
28
30
 
29
- var Check = _interopRequire(__webpack_require__(684));
31
+ var _react2 = _interopRequireDefault(_react);
30
32
 
31
- var X = _interopRequire(__webpack_require__(685));
33
+ var _classnames = __webpack_require__(719);
32
34
 
33
- var PureRenderMixin = _interopRequire(__webpack_require__(686));
35
+ var _classnames2 = _interopRequireDefault(_classnames);
34
36
 
35
- module.exports = React.createClass({
36
- mixins: [PureRenderMixin],
37
+ var _check = __webpack_require__(721);
37
38
 
38
- displayName: "Toggle",
39
+ var _check2 = _interopRequireDefault(_check);
39
40
 
40
- propTypes: {
41
- checked: React.PropTypes.bool,
42
- defaultChecked: React.PropTypes.bool,
43
- onChange: React.PropTypes.func,
44
- name: React.PropTypes.string,
45
- value: React.PropTypes.string,
46
- id: React.PropTypes.string,
47
- "aria-labelledby": React.PropTypes.string,
48
- "aria-label": React.PropTypes.string
49
- },
41
+ var _x = __webpack_require__(722);
50
42
 
51
- getInitialState: function getInitialState() {
52
- var checked = false;
53
- if ("checked" in this.props) {
54
- checked = this.props.checked;
55
- } else if ("defaultChecked" in this.props) {
56
- checked = this.props.defaultChecked;
57
- }
58
- return {
59
- checked: !!checked,
43
+ var _x2 = _interopRequireDefault(_x);
44
+
45
+ var _util = __webpack_require__(723);
46
+
47
+ var _reactAddonsShallowCompare = __webpack_require__(724);
48
+
49
+ var _reactAddonsShallowCompare2 = _interopRequireDefault(_reactAddonsShallowCompare);
50
+
51
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
52
+
53
+ function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
54
+
55
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
56
+
57
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
58
+
59
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
60
+
61
+ var Toggle = function (_Component) {
62
+ _inherits(Toggle, _Component);
63
+
64
+ function Toggle(props) {
65
+ _classCallCheck(this, Toggle);
66
+
67
+ var _this = _possibleConstructorReturn(this, (Toggle.__proto__ || Object.getPrototypeOf(Toggle)).call(this, props));
68
+
69
+ _this.handleClick = _this.handleClick.bind(_this);
70
+ _this.handleTouchStart = _this.handleTouchStart.bind(_this);
71
+ _this.handleTouchMove = _this.handleTouchMove.bind(_this);
72
+ _this.handleTouchEnd = _this.handleTouchEnd.bind(_this);
73
+ _this.handleFocus = _this.setState.bind(_this, { hasFocus: true }, function () {});
74
+ _this.handleBlur = _this.setState.bind(_this, { hasFocus: false }, function () {});
75
+ _this.previouslyChecked = !!(props.checked || props.defaultChecked);
76
+ _this.state = {
77
+ checked: !!(props.checked || props.defaultChecked),
60
78
  hasFocus: false
61
79
  };
62
- },
80
+ return _this;
81
+ }
63
82
 
64
- componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
65
- if ("checked" in nextProps) {
66
- this.setState({ checked: !!nextProps.checked });
83
+ _createClass(Toggle, [{
84
+ key: 'componentWillReceiveProps',
85
+ value: function componentWillReceiveProps(nextProps) {
86
+ if ('checked' in nextProps) {
87
+ this.setState({ checked: !!nextProps.checked });
88
+ }
67
89
  }
68
- },
90
+ }, {
91
+ key: 'handleClick',
92
+ value: function handleClick(event) {
93
+ var checkbox = this.input;
94
+ if (event.target !== checkbox && !this.moved) {
95
+ this.previouslyChecked = checkbox.checked;
96
+ event.preventDefault();
97
+ checkbox.focus();
98
+ checkbox.click();
99
+ return;
100
+ }
69
101
 
70
- handleClick: function handleClick(event) {
71
- var checkbox = this.refs.input;
72
- if (event.target !== checkbox) {
73
- event.preventDefault();
74
- checkbox.focus();
75
- checkbox.click();
76
- return;
102
+ this.setState({ checked: checkbox.checked });
103
+ }
104
+ }, {
105
+ key: 'handleTouchStart',
106
+ value: function handleTouchStart(event) {
107
+ this.startX = (0, _util.pointerCoord)(event).x;
108
+ this.activated = true;
77
109
  }
110
+ }, {
111
+ key: 'handleTouchMove',
112
+ value: function handleTouchMove(event) {
113
+ if (!this.activated) return;
114
+ this.moved = true;
115
+
116
+ if (this.startX) {
117
+ var currentX = (0, _util.pointerCoord)(event).x;
118
+ if (this.state.checked && currentX + 15 < this.startX) {
119
+ this.setState({ checked: false });
120
+ this.startX = currentX;
121
+ this.activated = true;
122
+ } else if (currentX - 15 > this.startX) {
123
+ this.setState({ checked: true });
124
+ this.startX = currentX;
125
+ this.activated = currentX < this.startX + 5;
126
+ }
127
+ }
128
+ }
129
+ }, {
130
+ key: 'handleTouchEnd',
131
+ value: function handleTouchEnd(event) {
132
+ if (!this.moved) return;
133
+ var checkbox = this.input;
134
+ event.preventDefault();
78
135
 
79
- if (!("checked" in this.props)) {
80
- this.setState({ checked: checkbox.checked });
136
+ if (this.startX) {
137
+ var endX = (0, _util.pointerCoord)(event).x;
138
+ if (this.previouslyChecked === true && this.startX + 4 > endX) {
139
+ if (this.previouslyChecked !== this.state.checked) {
140
+ this.setState({ checked: false });
141
+ this.previouslyChecked = this.state.checked;
142
+ checkbox.click();
143
+ }
144
+ } else if (this.startX - 4 < endX) {
145
+ if (this.previouslyChecked !== this.state.checked) {
146
+ this.setState({ checked: true });
147
+ this.previouslyChecked = this.state.checked;
148
+ checkbox.click();
149
+ }
150
+ }
151
+
152
+ this.activated = false;
153
+ this.startX = null;
154
+ this.moved = false;
155
+ }
156
+ }
157
+ }, {
158
+ key: 'getIcon',
159
+ value: function getIcon(type) {
160
+ var icons = this.props.icons;
161
+
162
+ if (!icons) {
163
+ return null;
164
+ }
165
+ return icons[type] === undefined ? Toggle.defaultProps.icons[type] : icons[type];
166
+ }
167
+ }, {
168
+ key: 'shouldComponentUpdate',
169
+ value: function shouldComponentUpdate(nextProps, nextState) {
170
+ return (0, _reactAddonsShallowCompare2.default)(this, nextProps, nextState);
81
171
  }
82
- },
83
-
84
- handleFocus: function handleFocus() {
85
- this.setState({ hasFocus: true });
86
- },
87
-
88
- handleBlur: function handleBlur() {
89
- this.setState({ hasFocus: false });
90
- },
91
-
92
- render: function render() {
93
- var classes = classNames("react-toggle", {
94
- "react-toggle--checked": this.state.checked,
95
- "react-toggle--focus": this.state.hasFocus,
96
- "react-toggle--disabled": this.props.disabled
97
- });
98
-
99
- return React.createElement(
100
- "div",
101
- { className: classes, onClick: this.handleClick },
102
- React.createElement(
103
- "div",
104
- { className: "react-toggle-track" },
105
- React.createElement(
106
- "div",
107
- { className: "react-toggle-track-check" },
108
- React.createElement(Check, null)
172
+ }, {
173
+ key: 'render',
174
+ value: function render() {
175
+ var _this2 = this;
176
+
177
+ var _props = this.props,
178
+ className = _props.className,
179
+ _icons = _props.icons,
180
+ inputProps = _objectWithoutProperties(_props, ['className', 'icons']);
181
+
182
+ var classes = (0, _classnames2.default)('react-toggle', {
183
+ 'react-toggle--checked': this.state.checked,
184
+ 'react-toggle--focus': this.state.hasFocus,
185
+ 'react-toggle--disabled': this.props.disabled
186
+ }, className);
187
+
188
+ return _react2.default.createElement(
189
+ 'div',
190
+ { className: classes,
191
+ onClick: this.handleClick,
192
+ onTouchStart: this.handleTouchStart,
193
+ onTouchMove: this.handleTouchMove,
194
+ onTouchEnd: this.handleTouchEnd },
195
+ _react2.default.createElement(
196
+ 'div',
197
+ { className: 'react-toggle-track' },
198
+ _react2.default.createElement(
199
+ 'div',
200
+ { className: 'react-toggle-track-check' },
201
+ this.getIcon('checked')
202
+ ),
203
+ _react2.default.createElement(
204
+ 'div',
205
+ { className: 'react-toggle-track-x' },
206
+ this.getIcon('unchecked')
207
+ )
109
208
  ),
110
- React.createElement(
111
- "div",
112
- { className: "react-toggle-track-x" },
113
- React.createElement(X, null)
114
- )
115
- ),
116
- React.createElement("div", { className: "react-toggle-thumb" }),
117
- React.createElement("input", _extends({
118
- ref: "input",
119
- onFocus: this.handleFocus,
120
- onBlur: this.handleBlur,
121
- className: "react-toggle-screenreader-only",
122
- type: "checkbox"
123
- }, this.props))
124
- );
209
+ _react2.default.createElement('div', { className: 'react-toggle-thumb' }),
210
+ _react2.default.createElement('input', _extends({}, inputProps, {
211
+ ref: function ref(_ref) {
212
+ _this2.input = _ref;
213
+ },
214
+ onFocus: this.handleFocus,
215
+ onBlur: this.handleBlur,
216
+ className: 'react-toggle-screenreader-only',
217
+ type: 'checkbox' }))
218
+ );
219
+ }
220
+ }]);
221
+
222
+ return Toggle;
223
+ }(_react.Component);
224
+
225
+ exports.default = Toggle;
226
+
227
+
228
+ Toggle.displayName = 'Toggle';
229
+
230
+ Toggle.defaultProps = {
231
+ icons: {
232
+ checked: _react2.default.createElement(_check2.default, null),
233
+ unchecked: _react2.default.createElement(_x2.default, null)
125
234
  }
126
- });
235
+ };
127
236
 
237
+ Toggle.propTypes = {
238
+ checked: _react.PropTypes.bool,
239
+ disabled: _react.PropTypes.bool,
240
+ defaultChecked: _react.PropTypes.bool,
241
+ onChange: _react.PropTypes.func,
242
+ className: _react.PropTypes.string,
243
+ name: _react.PropTypes.string,
244
+ value: _react.PropTypes.string,
245
+ id: _react.PropTypes.string,
246
+ 'aria-labelledby': _react.PropTypes.string,
247
+ 'aria-label': _react.PropTypes.string,
248
+ icons: _react.PropTypes.oneOfType([_react.PropTypes.bool, _react.PropTypes.shape({
249
+ checked: _react.PropTypes.node,
250
+ unchecked: _react.PropTypes.node
251
+ })])
252
+ };
128
253
 
129
254
  /***/ },
130
255
 
131
- /***/ 684:
256
+ /***/ 721:
132
257
  /***/ function(module, exports, __webpack_require__) {
133
258
 
134
- "use strict";
259
+ 'use strict';
135
260
 
136
- var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
261
+ Object.defineProperty(exports, "__esModule", {
262
+ value: true
263
+ });
137
264
 
138
- var React = _interopRequire(__webpack_require__(11));
265
+ var _react = __webpack_require__(11);
139
266
 
140
- module.exports = React.createClass({
141
- displayName: "check.es6",
267
+ var _react2 = _interopRequireDefault(_react);
142
268
 
143
- render: function render() {
144
- return React.createElement(
145
- "svg",
146
- { width: "14", height: "11", viewBox: "0 0 14 11" },
147
- React.createElement(
148
- "title",
149
- null,
150
- "switch-check"
151
- ),
152
- React.createElement("path", { d: "M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0", fill: "#fff", fillRule: "evenodd" })
153
- );
154
- }
155
- });
269
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
156
270
 
271
+ exports.default = function () {
272
+ return _react2.default.createElement(
273
+ 'svg',
274
+ { width: '14', height: '11', viewBox: '0 0 14 11' },
275
+ _react2.default.createElement(
276
+ 'title',
277
+ null,
278
+ 'switch-check'
279
+ ),
280
+ _react2.default.createElement('path', { d: 'M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0', fill: '#fff', fillRule: 'evenodd' })
281
+ );
282
+ };
157
283
 
158
284
  /***/ },
159
285
 
160
- /***/ 685:
286
+ /***/ 722:
161
287
  /***/ function(module, exports, __webpack_require__) {
162
288
 
163
- "use strict";
164
-
165
- var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
166
-
167
- var React = _interopRequire(__webpack_require__(11));
168
-
169
- module.exports = React.createClass({
170
- displayName: "x.es6",
289
+ 'use strict';
171
290
 
172
- render: function render() {
173
- return React.createElement(
174
- "svg",
175
- { width: "10", height: "10", viewBox: "0 0 10 10" },
176
- React.createElement(
177
- "title",
178
- null,
179
- "switch-x"
180
- ),
181
- React.createElement("path", { d: "M9.9 2.12L7.78 0 4.95 2.828 2.12 0 0 2.12l2.83 2.83L0 7.776 2.123 9.9 4.95 7.07 7.78 9.9 9.9 7.776 7.072 4.95 9.9 2.12", fill: "#fff", fillRule: "evenodd" })
182
- );
183
- }
291
+ Object.defineProperty(exports, "__esModule", {
292
+ value: true
184
293
  });
185
294
 
295
+ var _react = __webpack_require__(11);
186
296
 
187
- /***/ },
297
+ var _react2 = _interopRequireDefault(_react);
188
298
 
189
- /***/ 686:
190
- /***/ function(module, exports, __webpack_require__) {
299
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
191
300
 
192
- module.exports = __webpack_require__(687);
301
+ exports.default = function () {
302
+ return _react2.default.createElement(
303
+ 'svg',
304
+ { width: '10', height: '10', viewBox: '0 0 10 10' },
305
+ _react2.default.createElement(
306
+ 'title',
307
+ null,
308
+ 'switch-x'
309
+ ),
310
+ _react2.default.createElement('path', { d: 'M9.9 2.12L7.78 0 4.95 2.828 2.12 0 0 2.12l2.83 2.83L0 7.776 2.123 9.9 4.95 7.07 7.78 9.9 9.9 7.776 7.072 4.95 9.9 2.12', fill: '#fff', fillRule: 'evenodd' })
311
+ );
312
+ };
193
313
 
194
314
  /***/ },
195
315
 
196
- /***/ 687:
197
- /***/ function(module, exports, __webpack_require__) {
316
+ /***/ 723:
317
+ /***/ function(module, exports) {
198
318
 
199
- /**
200
- * Copyright 2013-present, Facebook, Inc.
201
- * All rights reserved.
202
- *
203
- * This source code is licensed under the BSD-style license found in the
204
- * LICENSE file in the root directory of this source tree. An additional grant
205
- * of patent rights can be found in the PATENTS file in the same directory.
206
- *
207
- * @providesModule ReactComponentWithPureRenderMixin
208
- */
319
+ "use strict";
209
320
 
210
- 'use strict';
321
+ Object.defineProperty(exports, "__esModule", {
322
+ value: true
323
+ });
324
+ exports.pointerCoord = pointerCoord;
325
+ // Copyright 2015-present Drifty Co.
326
+ // http://drifty.com/
327
+ // from: https://github.com/driftyco/ionic/blob/master/src/util/dom.ts
328
+
329
+ function pointerCoord(event) {
330
+ // get coordinates for either a mouse click
331
+ // or a touch depending on the given event
332
+ if (event) {
333
+ var changedTouches = event.changedTouches;
334
+ if (changedTouches && changedTouches.length > 0) {
335
+ var touch = changedTouches[0];
336
+ return { x: touch.clientX, y: touch.clientY };
337
+ }
338
+ var pageX = event.pageX;
339
+ if (pageX !== undefined) {
340
+ return { x: pageX, y: event.pageY };
341
+ }
342
+ }
343
+ return { x: 0, y: 0 };
344
+ }
211
345
 
212
- var shallowCompare = __webpack_require__(688);
346
+ /***/ },
213
347
 
214
- /**
215
- * If your React component's render function is "pure", e.g. it will render the
216
- * same result given the same props and state, provide this mixin for a
217
- * considerable performance boost.
218
- *
219
- * Most React components have pure render functions.
220
- *
221
- * Example:
222
- *
223
- * var ReactComponentWithPureRenderMixin =
224
- * require('ReactComponentWithPureRenderMixin');
225
- * React.createClass({
226
- * mixins: [ReactComponentWithPureRenderMixin],
227
- *
228
- * render: function() {
229
- * return <div className={this.props.className}>foo</div>;
230
- * }
231
- * });
232
- *
233
- * Note: This only checks shallow equality for props and state. If these contain
234
- * complex data structures this mixin may have false-negatives for deeper
235
- * differences. Only mixin to components which have simple props and state, or
236
- * use `forceUpdate()` when you know deep data structures have changed.
237
- *
238
- * See https://facebook.github.io/react/docs/pure-render-mixin.html
239
- */
240
- var ReactComponentWithPureRenderMixin = {
241
- shouldComponentUpdate: function (nextProps, nextState) {
242
- return shallowCompare(this, nextProps, nextState);
243
- }
244
- };
348
+ /***/ 724:
349
+ /***/ function(module, exports, __webpack_require__) {
245
350
 
246
- module.exports = ReactComponentWithPureRenderMixin;
351
+ module.exports = __webpack_require__(725);
247
352
 
248
353
  /***/ },
249
354
 
250
- /***/ 688:
355
+ /***/ 725:
251
356
  /***/ function(module, exports, __webpack_require__) {
252
357
 
253
358
  /**
@@ -258,12 +363,11 @@ webpackJsonp([2],{
258
363
  * LICENSE file in the root directory of this source tree. An additional grant
259
364
  * of patent rights can be found in the PATENTS file in the same directory.
260
365
  *
261
- * @providesModule shallowCompare
262
- */
366
+ */
263
367
 
264
368
  'use strict';
265
369
 
266
- var shallowEqual = __webpack_require__(359);
370
+ var shallowEqual = __webpack_require__(298);
267
371
 
268
372
  /**
269
373
  * Does a shallow comparison for props and state.
@@ -278,7 +382,7 @@ webpackJsonp([2],{
278
382
 
279
383
  /***/ },
280
384
 
281
- /***/ 689:
385
+ /***/ 726:
282
386
  /***/ function(module, exports) {
283
387
 
284
388
  // removed by extract-text-webpack-plugin