react-widgets
Version:
An à la carte set of polished, extensible, and accessible inputs built for React
1,481 lines (1,175 loc) • 443 kB
JavaScript
/*! (c) 2014 - present: Jason Quense | https://github.com/jquense/react-widgets/blob/master/LICENSE.md */
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("react"), require("react-dom"));
else if(typeof define === 'function' && define.amd)
define(["react", "react-dom"], factory);
else if(typeof exports === 'object')
exports["ReactWidgets"] = factory(require("react"), require("react-dom"));
else
root["ReactWidgets"] = factory(root["React"], root["ReactDOM"]);
})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_6__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 57);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
/**
* Copyright (c) 2013-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
if (false) {
var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&
Symbol.for &&
Symbol.for('react.element')) ||
0xeac7;
var isValidElement = function(object) {
return typeof object === 'object' &&
object !== null &&
object.$$typeof === REACT_ELEMENT_TYPE;
};
// By explicitly using `prop-types` you are opting into new development behavior.
// http://fb.me/prop-types-in-prod
var throwOnDirectAccess = true;
module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);
} else {
// By explicitly using `prop-types` you are opting into new production behavior.
// http://fb.me/prop-types-in-prod
module.exports = __webpack_require__(59)();
}
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
Copyright (c) 2016 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
/* global define */
(function () {
'use strict';
var hasOwn = {}.hasOwnProperty;
function classNames () {
var classes = [];
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (!arg) continue;
var argType = typeof arg;
if (argType === 'string' || argType === 'number') {
classes.push(arg);
} else if (Array.isArray(arg)) {
classes.push(classNames.apply(null, arg));
} else if (argType === 'object') {
for (var key in arg) {
if (hasOwn.call(arg, key) && arg[key]) {
classes.push(key);
}
}
}
}
return classes.join(' ');
}
if (typeof module !== 'undefined' && module.exports) {
module.exports = classNames;
} else if (true) {
// register as 'classnames', consistent with npm package name
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
return classNames;
}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else {
window.classNames = classNames;
}
}());
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.message = exports.accessor = exports.disabled = exports.dateFormat = exports.numberFormat = void 0;
var _propTypes = _interopRequireDefault(__webpack_require__(1));
var _elementType = _interopRequireDefault(__webpack_require__(77));
exports.elementType = _elementType.default;
var _createChainableTypeChecker = _interopRequireDefault(__webpack_require__(51));
var _localizers = __webpack_require__(5);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var numberFormat = (0, _createChainableTypeChecker.default)(function () {
return _localizers.number.propType.apply(_localizers.number, arguments);
});
exports.numberFormat = numberFormat;
var dateFormat = (0, _createChainableTypeChecker.default)(function () {
return _localizers.date.propType.apply(_localizers.date, arguments);
});
exports.dateFormat = dateFormat;
var disabled = (0, _createChainableTypeChecker.default)(function () {
return _propTypes.default.bool.apply(_propTypes.default, arguments);
});
exports.disabled = disabled;
disabled.acceptsArray = _propTypes.default.oneOfType([disabled, _propTypes.default.array]);
var accessor = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]);
exports.accessor = accessor;
var message = _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.string, _propTypes.default.func]);
exports.message = message;
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.pick = pick;
exports.pickElementProps = pickElementProps;
exports.omitOwn = omitOwn;
var whitelist = ['style', 'className', 'role', 'id', 'autocomplete', 'size', 'tabIndex', 'maxLength', 'name'];
var whitelistRegex = [/^aria-/, /^data-/, /^on[A-Z]\w+/];
function pick(props, componentClass) {
var keys = Object.keys(componentClass.propTypes);
var result = {};
Object.keys(props).forEach(function (key) {
if (keys.indexOf(key) === -1) return;
result[key] = props[key];
});
return result;
}
function pickElementProps(component) {
for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
others[_key - 1] = arguments[_key];
}
var props = omitOwn.apply(void 0, [component].concat(others));
var result = {};
Object.keys(props).forEach(function (key) {
if (whitelist.indexOf(key) !== -1 || whitelistRegex.some(function (r) {
return !!key.match(r);
})) result[key] = props[key];
});
return result;
}
function omitOwn(component) {
var initial = Object.keys(component.constructor.propTypes);
for (var _len2 = arguments.length, others = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
others[_key2 - 1] = arguments[_key2];
}
var keys = others.reduce(function (arr, compClass) {
return arr.concat(Object.keys(compClass.propTypes));
}, initial);
var result = {};
Object.keys(component.props).forEach(function (key) {
if (keys.indexOf(key) !== -1) return;
result[key] = component.props[key];
});
return result;
}
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.setNumber = setNumber;
exports.setDate = setDate;
exports.date = exports.number = void 0;
var _invariant = _interopRequireDefault(__webpack_require__(24));
var _ = __webpack_require__(7);
var _propTypes = _interopRequireDefault(__webpack_require__(1));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var localePropType = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]);
var REQUIRED_NUMBER_FORMATS = ['default'];
var REQUIRED_DATE_FORMATS = ['default', 'date', 'time', 'header', 'footer', 'weekday', 'dayOfMonth', 'month', 'year', 'decade', 'century'];
var _numberLocalizer = createWrapper('NumberPicker');
var number = {
propType: function propType() {
var _numberLocalizer2;
return (_numberLocalizer2 = _numberLocalizer).propType.apply(_numberLocalizer2, arguments);
},
getFormat: function getFormat(key, format) {
return format || _numberLocalizer.formats[key];
},
parse: function parse() {
var _numberLocalizer3;
return (_numberLocalizer3 = _numberLocalizer).parse.apply(_numberLocalizer3, arguments);
},
format: function format() {
var _numberLocalizer4;
return (_numberLocalizer4 = _numberLocalizer).format.apply(_numberLocalizer4, arguments);
},
decimalChar: function decimalChar() {
var _numberLocalizer5;
return (_numberLocalizer5 = _numberLocalizer).decimalChar.apply(_numberLocalizer5, arguments);
},
precision: function precision() {
var _numberLocalizer6;
return (_numberLocalizer6 = _numberLocalizer).precision.apply(_numberLocalizer6, arguments);
}
};
exports.number = number;
function setNumber(_ref) {
var format = _ref.format,
_parse = _ref.parse,
formats = _ref.formats,
_ref$propType = _ref.propType,
propType = _ref$propType === void 0 ? localePropType : _ref$propType,
_ref$decimalChar = _ref.decimalChar,
decimalChar = _ref$decimalChar === void 0 ? function () {
return '.';
} : _ref$decimalChar,
_ref$precision = _ref.precision,
precision = _ref$precision === void 0 ? function () {
return null;
} : _ref$precision;
checkFormats(REQUIRED_NUMBER_FORMATS, formats);
_numberLocalizer = {
formats: formats,
precision: precision,
decimalChar: decimalChar,
propType: propType,
format: wrapFormat(format),
parse: function parse(value, culture, format) {
var result = _parse.call(this, value, culture, format);
!(result == null || typeof result === 'number') ? false ? (0, _invariant.default)(false, 'number localizer `parse(..)` must return a number, null, or undefined') : invariant(false) : void 0;
return result;
}
};
}
var _dateLocalizer = createWrapper('DateTimePicker');
var date = {
propType: function propType() {
var _dateLocalizer2;
return (_dateLocalizer2 = _dateLocalizer).propType.apply(_dateLocalizer2, arguments);
},
getFormat: function getFormat(key, format) {
return format || _dateLocalizer.formats[key];
},
parse: function parse() {
var _dateLocalizer3;
return (_dateLocalizer3 = _dateLocalizer).parse.apply(_dateLocalizer3, arguments);
},
format: function format() {
var _dateLocalizer4;
return (_dateLocalizer4 = _dateLocalizer).format.apply(_dateLocalizer4, arguments);
},
firstOfWeek: function firstOfWeek() {
var _dateLocalizer5;
return (_dateLocalizer5 = _dateLocalizer).firstOfWeek.apply(_dateLocalizer5, arguments);
}
};
exports.date = date;
function setDate(_ref2) {
var formats = _ref2.formats,
format = _ref2.format,
_parse2 = _ref2.parse,
firstOfWeek = _ref2.firstOfWeek,
_ref2$propType = _ref2.propType,
propType = _ref2$propType === void 0 ? localePropType : _ref2$propType;
checkFormats(REQUIRED_DATE_FORMATS, formats);
_dateLocalizer = {
formats: formats,
propType: propType,
firstOfWeek: firstOfWeek,
format: wrapFormat(format),
parse: function parse(value, culture) {
var result = _parse2.call(this, value, culture);
!(result == null || result instanceof Date && !isNaN(result.getTime())) ? false ? (0, _invariant.default)(false, 'date localizer `parse(..)` must return a valid Date, null, or undefined') : invariant(false) : void 0;
return result;
}
};
}
var wrapFormat = function wrapFormat(formatter) {
return function (value, format, culture) {
var result = typeof format === 'function' ? format(value, culture, this) : formatter.call(this, value, format, culture);
!(result == null || typeof result === 'string') ? false ? (0, _invariant.default)(false, '`localizer format(..)` must return a string, null, or undefined') : invariant(false) : void 0;
return result;
};
};
function checkFormats(required, formats) {
if (false) required.forEach(function (f) {
return !(0, _.has)(formats, f) ? process.env.NODE_ENV !== "production" ? (0, _invariant.default)(false, 'localizer missing required format: `%s`', f) : invariant(false) : void 0;
});
}
function createWrapper() {
var dummy = {};
if (false) {
['formats', 'parse', 'format', 'firstOfWeek', 'precision', 'propType'].forEach(function (name) {
return Object.defineProperty(dummy, name, {
enumerable: true,
get: function get() {
throw new Error('[React Widgets] You are attempting to use a widget that requires localization ' + '(Calendar, DateTimePicker, NumberPicker). ' + 'However there is no localizer set. Please configure a localizer. \n\n' + 'see http://jquense.github.io/react-widgets/docs/#/i18n for more info.');
}
});
});
}
return dummy;
}
/***/ }),
/* 6 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_6__;
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.isShallowEqual = isShallowEqual;
exports.chunk = chunk;
exports.groupBySortedKeys = groupBySortedKeys;
exports.has = exports.makeArray = void 0;
var _warning = _interopRequireDefault(__webpack_require__(39));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var makeArray = function makeArray(obj) {
return obj == null ? [] : [].concat(obj);
};
exports.makeArray = makeArray;
var has = function has(o, k) {
return o ? Object.prototype.hasOwnProperty.call(o, k) : false;
};
exports.has = has;
function isShallowEqual(a, b) {
if (a === b) return true;
if (a instanceof Date && b instanceof Date) return +a === +b;
if (typeof a !== 'object' && typeof b !== 'object') return a === b;
if (typeof a !== typeof b) return false;
if (a == null || b == null) return false; // if they were both null we wouldn't be here
var keysA = Object.keys(a);
var keysB = Object.keys(b);
if (keysA.length !== keysB.length) return false;
for (var i = 0; i < keysA.length; i++) {
if (!has(b, keysA[i]) || a[keysA[i]] !== b[keysA[i]]) return false;
}
return true;
}
function chunk(array, chunkSize) {
var index = 0,
length = array ? array.length : 0;
var result = [];
chunkSize = Math.max(+chunkSize || 1, 1);
while (index < length) {
result.push(array.slice(index, index += chunkSize));
}
return result;
}
function groupBySortedKeys(groupBy, data, keys) {
var iter = typeof groupBy === 'function' ? groupBy : function (item) {
return item[groupBy];
}; // the keys array ensures that groups are rendered in the order they came in
// which means that if you sort the data array it will render sorted,
// so long as you also sorted by group
keys = keys || [];
false ? (0, _warning.default)(typeof groupBy !== 'string' || !data.length || has(data[0], groupBy), "[React Widgets] You seem to be trying to group this list by a " + ("property `" + groupBy + "` that doesn't exist in the dataset items, this may be a typo")) : void 0;
return data.reduce(function (grps, item) {
var group = iter(item);
if (has(grps, group)) {
grps[group].push(item);
} else {
keys.push(group);
grps[group] = [item];
}
return grps;
}, {});
}
/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
var _spyOnComponent = _interopRequireDefault(__webpack_require__(26));
exports.spyOnComponent = _spyOnComponent.default;
var _autoFocus = _interopRequireDefault(__webpack_require__(64));
exports.autoFocus = _autoFocus.default;
var _focusManager = _interopRequireDefault(__webpack_require__(65));
exports.focusManager = _focusManager.default;
var _mountManager = _interopRequireDefault(__webpack_require__(33));
exports.mountManager = _mountManager.default;
var _timeoutManager = _interopRequireDefault(__webpack_require__(41));
exports.timeoutManager = _timeoutManager.default;
var _mixin = _interopRequireDefault(__webpack_require__(66));
exports.mixin = _mixin.default;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.notify = notify;
exports.instanceId = instanceId;
exports.isFirstFocusedRender = isFirstFocusedRender;
var idCount = 0;
function uniqueId(prefix) {
return '' + ((prefix == null ? '' : prefix) + ++idCount);
}
function notify(handler, args) {
handler && handler.apply(null, [].concat(args));
}
function instanceId(component, suffix) {
if (suffix === void 0) {
suffix = '';
}
component.__id || (component.__id = uniqueId('rw_'));
return (component.props.id || component.__id) + suffix;
}
function isFirstFocusedRender(component) {
return component._firstFocus || component.state.focused && (component._firstFocus = true);
}
/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
module.exports = exports['default'];
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.getMessages = getMessages;
var _react = _interopRequireDefault(__webpack_require__(0));
var _jsxFileName = "/Users/jason/src/react-widgets/packages/react-widgets/src/messages.js";
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var messages = {
moveBack: 'Navigate back',
moveForward: 'Navigate forward',
dateButton: 'Select date',
timeButton: 'Select time',
openCombobox: 'open combobox',
openDropdown: 'open dropdown',
placeholder: '',
filterPlaceholder: '',
emptyList: 'There are no items in this list',
emptyFilter: 'The filter returned no results',
createOption: function createOption(_ref) {
var searchTerm = _ref.searchTerm;
return [' Create option', searchTerm && ' ', searchTerm && _react.default.createElement("strong", {
key: "_",
__source: {
fileName: _jsxFileName,
lineNumber: 22
},
__self: this
}, "\"" + searchTerm + "\"")];
},
tagsLabel: 'Selected items',
removeLabel: 'Remove selected item',
noneSelected: 'no selected items',
selectedItems: function selectedItems(labels) {
return "Selected items: " + labels.join(', ');
},
// number
increment: 'Increment value',
decrement: 'Decrement value'
};
function getMessages(defaults) {
if (defaults === void 0) {
defaults = {};
}
var processed = {};
Object.keys(messages).forEach(function (message) {
var value = defaults[message];
if (value == null) value = messages[message];
processed[message] = typeof value === 'function' ? value : function () {
return value;
};
});
return processed;
}
/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.disabledManager = exports.widgetEditable = exports.widgetEnabled = exports.isInDisabledFieldset = void 0;
var _reactDom = __webpack_require__(6);
var _matches = _interopRequireDefault(__webpack_require__(54));
var _reactComponentManagers = __webpack_require__(8);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var isInDisabledFieldset = function isInDisabledFieldset(inst) {
var node;
try {
node = (0, _reactDom.findDOMNode)(inst);
} catch (err) {
/* ignore */
}
return !!node && (0, _matches.default)(node, 'fieldset[disabled] *');
};
exports.isInDisabledFieldset = isInDisabledFieldset;
var widgetEnabled = interactionDecorator(true);
exports.widgetEnabled = widgetEnabled;
var widgetEditable = interactionDecorator(false);
exports.widgetEditable = widgetEditable;
function interactionDecorator(disabledOnly) {
function wrap(method) {
return function decoratedMethod() {
var _props = this.props,
disabled = _props.disabled,
readOnly = _props.readOnly;
disabled = isInDisabledFieldset(this) || disabled == true || !disabledOnly && readOnly === true;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
if (!disabled) return method.apply(this, args);
};
}
return function decorate(target, key, desc) {
if (desc.initializer) {
var init = desc.initializer;
desc.initializer = function () {
return wrap(init.call(this)).bind(this);
};
} else desc.value = wrap(desc.value);
return desc;
};
}
var disabledManager = function disabledManager(component) {
var mounted = false;
var isInFieldSet = false;
var useCached = false;
(0, _reactComponentManagers.spyOnComponent)(component, {
componentDidMount: function componentDidMount() {
mounted = true; // becasue we can't access a dom node in the first render we need to
// render again if the component was disabled via a fieldset
if (isInDisabledFieldset(this)) this.forceUpdate();
},
componentWillUpdate: function componentWillUpdate() {
isInFieldSet = mounted && isInDisabledFieldset(component);
useCached = mounted;
},
componentDidUpdate: function componentDidUpdate() {
useCached = false;
},
componentWillUnmount: function componentWillUnmount() {
component = null;
}
});
return function () {
return component.props.disabled === true || (useCached ? isInFieldSet : mounted && isInDisabledFieldset(component)) || component.props.disabled // return the prop if nothing is true in case it's an array
;
};
};
exports.disabledManager = disabledManager;
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.default = void 0;
var _dateArithmetic = _interopRequireDefault(__webpack_require__(89));
var _localizers = __webpack_require__(5);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
var dates = _extends({}, _dateArithmetic.default, {
monthsInYear: function monthsInYear(year) {
var date = new Date(year, 0, 1);
return [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map(function (i) {
return dates.month(date, i);
});
},
firstVisibleDay: function firstVisibleDay(date, culture) {
var firstOfMonth = dates.startOf(date, 'month');
return dates.startOf(firstOfMonth, 'week', _localizers.date.firstOfWeek(culture));
},
lastVisibleDay: function lastVisibleDay(date, culture) {
var endOfMonth = dates.endOf(date, 'month');
return dates.endOf(endOfMonth, 'week', _localizers.date.firstOfWeek(culture));
},
visibleDays: function visibleDays(date, culture) {
var current = dates.firstVisibleDay(date, culture);
var last = dates.lastVisibleDay(date, culture);
var days = [];
while (dates.lte(current, last, 'day')) {
days.push(current);
current = dates.add(current, 1, 'day');
}
return days;
},
merge: function merge(date, time, defaultDate) {
if (time == null && date == null) return null;
if (time == null) time = defaultDate || new Date();
if (date == null) date = defaultDate || new Date();
date = dates.startOf(date, 'day');
date = dates.hours(date, dates.hours(time));
date = dates.minutes(date, dates.minutes(time));
date = dates.seconds(date, dates.seconds(time));
return dates.milliseconds(date, dates.milliseconds(time));
},
today: function today() {
return dates.startOf(new Date(), 'day');
},
tomorrow: function tomorrow() {
return dates.add(dates.startOf(new Date(), 'day'), 1, 'day');
}
});
var _default = dates;
exports.default = _default;
module.exports = exports["default"];
/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.default = uncontrollable;
var _react = _interopRequireDefault(__webpack_require__(0));
var _invariant = _interopRequireDefault(__webpack_require__(24));
var Utils = _interopRequireWildcard(__webpack_require__(67));
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
function uncontrollable(Component, controlledValues, methods) {
if (methods === void 0) {
methods = [];
}
var displayName = Component.displayName || Component.name || 'Component';
var isCompositeComponent = Utils.isReactComponent(Component);
var controlledProps = Object.keys(controlledValues);
var PROPS_TO_OMIT = controlledProps.map(Utils.defaultKey);
!(isCompositeComponent || !methods.length) ? false ? (0, _invariant.default)(false, '[uncontrollable] stateless function components cannot pass through methods ' + 'because they have no associated instances. Check component: ' + displayName + ', ' + 'attempting to pass through methods: ' + methods.join(', ')) : invariant(false) : void 0;
var UncontrolledComponent =
/*#__PURE__*/
function (_React$Component) {
_inheritsLoose(UncontrolledComponent, _React$Component);
function UncontrolledComponent() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
_this.handlers = Object.create(null);
controlledProps.forEach(function (propName) {
var handlerName = controlledValues[propName];
var handleChange = function handleChange(value) {
if (_this.props[handlerName]) {
var _this$props;
_this._notifying = true;
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
(_this$props = _this.props)[handlerName].apply(_this$props, [value].concat(args));
_this._notifying = false;
}
_this._values[propName] = value;
if (!_this.unmounted) _this.forceUpdate();
};
_this.handlers[handlerName] = handleChange;
});
if (isCompositeComponent) _this.attachRef = function (ref) {
_this.inner = ref;
};
return _this;
}
var _proto = UncontrolledComponent.prototype;
_proto.shouldComponentUpdate = function shouldComponentUpdate() {
//let the forceUpdate trigger the update
return !this._notifying;
};
_proto.componentWillMount = function componentWillMount() {
var _this2 = this;
var props = this.props;
this._values = Object.create(null);
controlledProps.forEach(function (key) {
_this2._values[key] = props[Utils.defaultKey(key)];
});
};
_proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
var _this3 = this;
var props = this.props;
controlledProps.forEach(function (key) {
/**
* If a prop switches from controlled to Uncontrolled
* reset its value to the defaultValue
*/
if (!Utils.isProp(nextProps, key) && Utils.isProp(props, key)) {
_this3._values[key] = nextProps[Utils.defaultKey(key)];
}
});
};
_proto.componentWillUnmount = function componentWillUnmount() {
this.unmounted = true;
};
_proto.getControlledInstance = function getControlledInstance() {
return this.inner;
};
_proto.render = function render() {
var _this4 = this;
var props = _extends({}, this.props);
PROPS_TO_OMIT.forEach(function (prop) {
delete props[prop];
});
var newProps = {};
controlledProps.forEach(function (propName) {
var propValue = _this4.props[propName];
newProps[propName] = propValue !== undefined ? propValue : _this4._values[propName];
});
return _react.default.createElement(Component, _extends({}, props, newProps, this.handlers, {
ref: this.attachRef
}));
};
return UncontrolledComponent;
}(_react.default.Component);
UncontrolledComponent.displayName = "Uncontrolled(" + displayName + ")";
UncontrolledComponent.propTypes = Utils.uncontrolledPropTypes(controlledValues, displayName);
methods.forEach(function (method) {
UncontrolledComponent.prototype[method] = function $proxiedMethod() {
var _inner;
return (_inner = this.inner)[method].apply(_inner, arguments);
};
});
UncontrolledComponent.ControlledComponent = Component;
/**
* useful when wrapping a Component and you want to control
* everything
*/
UncontrolledComponent.deferControlTo = function (newComponent, additions, nextMethods) {
if (additions === void 0) {
additions = {};
}
return uncontrollable(newComponent, _extends({}, controlledValues, additions), nextMethods);
};
return UncontrolledComponent;
}
module.exports = exports["default"];
/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.default = void 0;
var _react = _interopRequireDefault(__webpack_require__(0));
var _propTypes = _interopRequireDefault(__webpack_require__(1));
var _classnames = _interopRequireDefault(__webpack_require__(2));
var _jsxFileName = "/Users/jason/src/react-widgets/packages/react-widgets/src/Widget.js";
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
var Widget =
/*#__PURE__*/
function (_React$Component) {
_inheritsLoose(Widget, _React$Component);
function Widget() {
return _React$Component.apply(this, arguments) || this;
}
var _proto = Widget.prototype;
_proto.render = function render() {
var _props = this.props,
className = _props.className,
tabIndex = _props.tabIndex,
focused = _props.focused,
open = _props.open,
dropUp = _props.dropUp,
disabled = _props.disabled,
readOnly = _props.readOnly,
props = _objectWithoutProperties(_props, ["className", "tabIndex", "focused", "open", "dropUp", "disabled", "readOnly"]);
var isRtl = !!this.context.isRtl;
tabIndex = tabIndex != null ? tabIndex : '-1';
return _react.default.createElement("div", _extends({}, props, {
tabIndex: tabIndex,
className: (0, _classnames.default)(className, 'rw-widget', isRtl && 'rw-rtl', disabled && 'rw-state-disabled', readOnly && 'rw-state-readonly', focused && 'rw-state-focus', open && "rw-open" + (dropUp ? '-up' : '')),
__source: {
fileName: _jsxFileName,
lineNumber: 35
},
__self: this
}));
};
return Widget;
}(_react.default.Component);
Widget.contextTypes = {
isRtl: _propTypes.default.bool
};
Widget.propTypes = {
tabIndex: _propTypes.default.node,
focused: _propTypes.default.bool,
disabled: _propTypes.default.bool,
readOnly: _propTypes.default.bool,
open: _propTypes.default.bool,
dropUp: _propTypes.default.bool
};
var _default = Widget;
exports.default = _default;
module.exports = exports["default"];
/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.default = createFocusManager;
var _reactComponentManagers = __webpack_require__(8);
var _interaction = __webpack_require__(12);
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function createFocusManager(component, options) {
var _didHandle = options.didHandle;
return (0, _reactComponentManagers.focusManager)(component, _extends({}, options, {
onChange: function onChange(focused) {
component.setState({
focused: focused
});
},
isDisabled: function isDisabled() {
return (0, _interaction.isInDisabledFieldset)(component) || component.props.disabled === true;
},
didHandle: function didHandle(focused, event) {
var handler = this.props[focused ? 'onFocus' : 'onBlur'];
handler && handler(event);
if (_didHandle && !event.isWidgetDefaultPrevented) _didHandle(focused, event);
}
}));
}
module.exports = exports["default"];
/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.default = void 0;
var _react = _interopRequireDefault(__webpack_require__(0));
var _propTypes = _interopRequireDefault(__webpack_require__(1));
var _classnames = _interopRequireDefault(__webpack_require__(2));
var _jsxFileName = "/Users/jason/src/react-widgets/packages/react-widgets/src/Button.js";
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
var Button =
/*#__PURE__*/
function (_React$Component) {
_inheritsLoose(Button, _React$Component);
function Button() {
return _React$Component.apply(this, arguments) || this;
}
var _proto = Button.prototype;
_proto.render = function render() {
var _props = this.props,
className = _props.className,
disabled = _props.disabled,
label = _props.label,
icon = _props.icon,
busy = _props.busy,
active = _props.active,
children = _props.children,
_props$variant = _props.variant,
variant = _props$variant === void 0 ? 'primary' : _props$variant,
_props$component = _props.component,
Tag = _props$component === void 0 ? 'button' : _props$component,
props = _objectWithoutProperties(_props, ["className", "disabled", "label", "icon", "busy", "active", "children", "variant", "component"]);
var type = props.type;
if (Tag === 'button') type = type || 'button';
return _react.default.createElement(Tag, _extends({}, props, {
tabIndex: "-1",
title: label,
type: type,
disabled: disabled,
"aria-disabled": disabled,
"aria-label": label,
className: (0, _classnames.default)(className, 'rw-btn', active && !disabled && 'rw-state-active', variant && 'rw-btn-' + variant),
__source: {
fileName: _jsxFileName,
lineNumber: 35
},
__self: this
}), (icon || busy) && _react.default.createElement("span", {
"aria-hidden": "true",
className: (0, _classnames.default)('rw-i', "rw-i-" + icon, busy && 'rw-loading'),
__source: {
fileName: _jsxFileName,
lineNumber: 51
},
__self: this
}), children);
};
return Button;
}(_react.default.Component);
Button.propTypes = {
disabled: _propTypes.default.bool,
label: _propTypes.default.string,
icon: _propTypes.default.string,
busy: _propTypes.default.bool,
active: _propTypes.default.bool,
variant: _propTypes.default.oneOf(['primary', 'select']),
component: _propTypes.default.any
};
var _default = Button;
exports.default = _default;
module.exports = exports["default"];
/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.normalizeComponent = normalizeComponent;
exports.defaultGetDataState = defaultGetDataState;
exports.default = listDataManager;
var _react = _interopRequireDefault(__webpack_require__(0));
var _reactComponentManagers = __webpack_require__(8);
var _Filter = __webpack_require__(30);
var _ = __webpack_require__(7);
var _accessorManager = _interopRequireDefault(__webpack_require__(22));
var _jsxFileName = "/Users/jason/src/react-widgets/packages/react-widgets/src/util/listDataManager.js";
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
var EMPTY_VALUE = {};
function normalizeComponent(Component) {
return function (itemProps) {
return Component ? _react.default.createElement(Component, _extends({}, itemProps, {
__source: {
fileName: _jsxFileName,
lineNumber: 13
},
__self: this
})) : itemProps.text || itemProps.item;
};
}
function defaultGetDataState(data, _ref, lastState) {
var groupBy = _ref.groupBy;
if (lastState === void 0) {
lastState = {};
}
if (lastState.data !== data || lastState.groupBy !== groupBy) {
if (!groupBy) return {};
var keys = [];
var groups = (0, _.groupBySortedKeys)(groupBy, data, keys);
return {
data: data,
groupBy: groupBy,
groups: groups,
sortedKeys: keys,
sequentialData: Object.keys(groups).reduce(function (flat, grp) {
return flat.concat(groups[grp]);
}, [])
};
}
return lastState;
}
function defaultGetStateGetterFromList(_ref2) {
var listComponent = _ref2.listComponent;
return listComponent && listComponent.getDataState;
}
function listDataManager(component, _temp) {
var _ref3 = _temp === void 0 ? {} : _temp,
getDataState = _ref3.getDataState,
getStateGetterFromProps = _ref3.getStateGetterFromProps,
_ref3$accessors = _ref3.accessors,
accessors = _ref3$accessors === void 0 ? (0, _accessorManager.default)(component) : _ref3$accessors;
var listData;
var listState;
var needsUpdate = true;
var currentProps = component.props;
if (getDataState) getStateGetterFromProps = null;else {
if (!getStateGetterFromProps) getStateGetterFromProps = defaultGetStateGetterFromList;
getDataState = getStateGetterFromProps(currentProps) || defaultGetDataState;
}
(0, _reactComponentManagers.spyOnComponent)(component, {
componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
if (!needsUpdate) needsUpdate = nextProps !== currentProps;
currentProps = nextProps;
if (needsUpdate && getStateGetterFromProps) {
getDataState = getStateGetterFromProps(currentProps) || defaultGetDataState;
}
},
componentWillUnmount: function componentWillUnmount() {
listData = null;
listState = null;
currentProps = null;
getDataState = null;
getStateGetterFromProps = null;
}
});
function isDisabled(item) {
var disabled = currentProps.disabled;
if (!Array.isArray(disabled)) return false;
return disabled.some(function (disabled) {
return accessors.value(item) === accessors.value(disabled);
});
}
function getMatcher(word) {
if (!word) return function () {
return true;
};
word = word.toLowerCase();
return function (item) {
return _Filter.presets.startsWith(accessors.text(item).toLowerCase(), word);
};
}
function getSequentialData() {
var state = manager.getState();
return state && state.sequentialData || listData;
}
var renderItem = function renderItem(_ref4) {
var item = _ref4.item,
rest = _objectWithoutProperties(_ref4, ["item"]);
// eslint-disable-line react/prop-types
var Component = currentProps.itemComponent;
return Component ? _react.default.createElement(Component, _extends({
item: item,
value: accessors.value(item),
text: accessors.text(item),
disabled: isDisabled(item)
}, rest, {
__source: {
fileName: _jsxFileName,
lineNumber: 109
},
__self: this
})) : accessors.text(item);
};
var renderGroup = function renderGroup(_ref5) {
var group = _ref5.group;
// eslint-disable-line react/prop-types
var Component = currentProps.groupComponent;
return Component ? _react.default.createElement(Component, {
item: group,
__source: {
fileName: _jsxFileName,
lineNumber: 121
},
__self: this
}) : group;
};
var manager = {
isDisabled: isDisabled,
first: function first() {
return manager.next(EMPTY_VALUE);
},
last: function last() {
var data = getSequentialData();
return manager.prevEnabled(data[data.length - 1]);
},
prevEnabled: function prevEnabled(item) {
return isDisabled(item) ? manager.prev(item) : item;
},
prev: function prev(item, word) {
var data = getSequentialData();
var matches = getMatcher(word);
var nextIdx = data.indexOf(item);
if (nextIdx < 0 || nextIdx == null) nextIdx = 0;
nextIdx--;
while (nextIdx > -1 && (isDisabled(data[nextIdx]) || !matches(data[nextIdx]))) {
nextIdx--;
}
if (nextIdx >= 0) return data[nextIdx];
if (!manager.isDisabled(item)) return item;
},
next: function next(item, word) {
var data = getSequentialData();
var matches = getMatcher(word);
var nextIdx = data.indexOf(item) + 1;
var len = data.length;
while (nextIdx < len && (isDisabled(data[nextIdx]) || !matches(data[nextIdx]))) {
nextIdx++;
}
if (nextIdx < len) return data[nextIdx];
if (!manager.isDisabled(item)) return item;
},
nextEnabled: function nextEnabled(item) {
return isDisabled(item) ? manager.next(item) : item;
},
setData: function setData(data) {
if (!needsUpdate) needsUpdate = data !== listData;
listData = data;
},
getState: function getState() {
if (needsUpdate) {
needsUpdate = false;
listState = getDataState(listData, currentProps, listState);
}
return listState;
},
defaultProps: function defaultProps() {
var _currentProps = currentProps,
groupBy = _currentProps.groupBy,
optionComponent = _currentProps.optionComponent,
searchTerm = _currentProps.searchTerm;
return _extends({
groupBy: groupBy,
renderItem: renderItem,
renderGroup: renderGroup,
searchTerm: searchTerm,
optionComponent: optionComponent,
isDisabled: isDisabled
}, currentProps.listProps, {
data: listData,
dataState: manager.getState()
});
}
};
return manager;
}
/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
exports.default = void 0;
var _react = _interopRequireDefault(__webpack_require__(0));
var _propTypes = _interopRequireDefault(__webpack_require__(1));
var _classnames = _interopRequireDefault(__webpack_require__(2));
var _jsxFileName = "/Users/jason/src/react-widgets/packages/react-widgets/src/WidgetPicker.js";
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) con