@elastic/react-search-ui
Version:
A React library for building search experiences
108 lines (84 loc) • 9.24 kB
JavaScript
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireWildcard(require("react"));
var _searchUi = require("@elastic/search-ui");
var _SearchContext = _interopRequireDefault(require("./SearchContext"));
var _A11yNotifications = _interopRequireDefault(require("./A11yNotifications"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
/**
* The SearchProvider primarily holds a reference to the SearchDriver and
* exposes it to the rest of the application in a Context.
*/
var SearchProvider =
/*#__PURE__*/
function (_Component) {
(0, _inherits2.default)(SearchProvider, _Component);
function SearchProvider() {
var _this;
(0, _classCallCheck2.default)(this, SearchProvider);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(SearchProvider).call(this));
_this.state = {
driver: null
};
return _this;
}
(0, _createClass2.default)(SearchProvider, [{
key: "componentDidMount",
value: function componentDidMount() {
var config = this.props.config; // This initialization is done inside of componentDidMount, because initializing the SearchDriver server side
// will error out, since the driver depends on window. Placing the initialization inside of componentDidMount
// assures that it won't attempt to initialize server side.
var driver = new _searchUi.SearchDriver(_objectSpread({}, config, {
a11yNotificationMessages: _objectSpread({}, _A11yNotifications.default, {}, config.a11yNotificationMessages)
}));
this.setState({
driver: driver
});
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
this.state.driver.tearDown();
}
}, {
key: "render",
value: function render() {
var children = this.props.children; // Since driver is initialized in componentDidMount above, we are waiting
// to render until the driver is available.
if (!this.state.driver) return null; // Passing the entire "this.state" to the Context is significant. Because
// Context determines when to re-render based on referential identity
// something like this could cause unnecessary renders:
//
// <SearchContext.Provider value={{driver: this.state.driver}}>
//
// By passing the entire state, we ensure that re-renders only occur when
// state is actually updated.
return _react.default.createElement(_SearchContext.default.Provider, {
value: this.state
}, children);
}
}]);
return SearchProvider;
}(_react.Component);
(0, _defineProperty2.default)(SearchProvider, "propTypes", {
children: _propTypes.default.node.isRequired,
// Not providing a shape here because the shape matches the shape of
// SearchDriver. SearchDriver can do it's own parameter validation.
config: _propTypes.default.object
});
var _default = SearchProvider;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TZWFyY2hQcm92aWRlci5qcyJdLCJuYW1lcyI6WyJTZWFyY2hQcm92aWRlciIsInN0YXRlIiwiZHJpdmVyIiwiY29uZmlnIiwicHJvcHMiLCJTZWFyY2hEcml2ZXIiLCJhMTF5Tm90aWZpY2F0aW9uTWVzc2FnZXMiLCJkZWZhdWx0QTExeU1lc3NhZ2VzIiwic2V0U3RhdGUiLCJ0ZWFyRG93biIsImNoaWxkcmVuIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwibm9kZSIsImlzUmVxdWlyZWQiLCJvYmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7Ozs7OztBQUVBOzs7O0lBSU1BLGM7Ozs7O0FBUUosNEJBQWM7QUFBQTs7QUFBQTtBQUNaO0FBQ0EsVUFBS0MsS0FBTCxHQUFhO0FBQ1hDLE1BQUFBLE1BQU0sRUFBRTtBQURHLEtBQWI7QUFGWTtBQUtiOzs7O3dDQUVtQjtBQUFBLFVBQ1ZDLE1BRFUsR0FDQyxLQUFLQyxLQUROLENBQ1ZELE1BRFUsRUFFbEI7QUFDQTtBQUNBOztBQUNBLFVBQU1ELE1BQU0sR0FBRyxJQUFJRyxzQkFBSixtQkFDVkYsTUFEVTtBQUViRyxRQUFBQSx3QkFBd0Isb0JBQ25CQywwQkFEbUIsTUFFbkJKLE1BQU0sQ0FBQ0csd0JBRlk7QUFGWCxTQUFmO0FBT0EsV0FBS0UsUUFBTCxDQUFjO0FBQ1pOLFFBQUFBLE1BQU0sRUFBTkE7QUFEWSxPQUFkO0FBR0Q7OzsyQ0FFc0I7QUFDckIsV0FBS0QsS0FBTCxDQUFXQyxNQUFYLENBQWtCTyxRQUFsQjtBQUNEOzs7NkJBRVE7QUFBQSxVQUNDQyxRQURELEdBQ2MsS0FBS04sS0FEbkIsQ0FDQ00sUUFERCxFQUdQO0FBQ0E7O0FBQ0EsVUFBSSxDQUFDLEtBQUtULEtBQUwsQ0FBV0MsTUFBaEIsRUFBd0IsT0FBTyxJQUFQLENBTGpCLENBT1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxhQUNFLDZCQUFDLHNCQUFELENBQWUsUUFBZjtBQUF3QixRQUFBLEtBQUssRUFBRSxLQUFLRDtBQUFwQyxTQUNHUyxRQURILENBREY7QUFLRDs7O0VBeEQwQkMsZ0I7OzhCQUF2QlgsYyxlQUNlO0FBQ2pCVSxFQUFBQSxRQUFRLEVBQUVFLG1CQUFVQyxJQUFWLENBQWVDLFVBRFI7QUFFakI7QUFDQTtBQUNBWCxFQUFBQSxNQUFNLEVBQUVTLG1CQUFVRztBQUpELEM7ZUEwRE5mLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFNlYXJjaERyaXZlciB9IGZyb20gXCJAZWxhc3RpYy9zZWFyY2gtdWlcIjtcbmltcG9ydCBTZWFyY2hDb250ZXh0IGZyb20gXCIuL1NlYXJjaENvbnRleHRcIjtcblxuaW1wb3J0IGRlZmF1bHRBMTF5TWVzc2FnZXMgZnJvbSBcIi4vQTExeU5vdGlmaWNhdGlvbnNcIjtcblxuLyoqXG4gKiBUaGUgU2VhcmNoUHJvdmlkZXIgcHJpbWFyaWx5IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBTZWFyY2hEcml2ZXIgYW5kXG4gKiBleHBvc2VzIGl0IHRvIHRoZSByZXN0IG9mIHRoZSBhcHBsaWNhdGlvbiBpbiBhIENvbnRleHQuXG4gKi9cbmNsYXNzIFNlYXJjaFByb3ZpZGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgICAvLyBOb3QgcHJvdmlkaW5nIGEgc2hhcGUgaGVyZSBiZWNhdXNlIHRoZSBzaGFwZSBtYXRjaGVzIHRoZSBzaGFwZSBvZlxuICAgIC8vIFNlYXJjaERyaXZlci4gU2VhcmNoRHJpdmVyIGNhbiBkbyBpdCdzIG93biBwYXJhbWV0ZXIgdmFsaWRhdGlvbi5cbiAgICBjb25maWc6IFByb3BUeXBlcy5vYmplY3RcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBkcml2ZXI6IG51bGxcbiAgICB9O1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3QgeyBjb25maWcgfSA9IHRoaXMucHJvcHM7XG4gICAgLy8gVGhpcyBpbml0aWFsaXphdGlvbiBpcyBkb25lIGluc2lkZSBvZiBjb21wb25lbnREaWRNb3VudCwgYmVjYXVzZSBpbml0aWFsaXppbmcgdGhlIFNlYXJjaERyaXZlciBzZXJ2ZXIgc2lkZVxuICAgIC8vIHdpbGwgZXJyb3Igb3V0LCBzaW5jZSB0aGUgZHJpdmVyIGRlcGVuZHMgb24gd2luZG93LiBQbGFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBpbnNpZGUgb2YgY29tcG9uZW50RGlkTW91bnRcbiAgICAvLyBhc3N1cmVzIHRoYXQgaXQgd29uJ3QgYXR0ZW1wdCB0byBpbml0aWFsaXplIHNlcnZlciBzaWRlLlxuICAgIGNvbnN0IGRyaXZlciA9IG5ldyBTZWFyY2hEcml2ZXIoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgYTExeU5vdGlmaWNhdGlvbk1lc3NhZ2VzOiB7XG4gICAgICAgIC4uLmRlZmF1bHRBMTF5TWVzc2FnZXMsXG4gICAgICAgIC4uLmNvbmZpZy5hMTF5Tm90aWZpY2F0aW9uTWVzc2FnZXNcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGRyaXZlclxuICAgIH0pO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5zdGF0ZS5kcml2ZXIudGVhckRvd24oKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgLy8gU2luY2UgZHJpdmVyIGlzIGluaXRpYWxpemVkIGluIGNvbXBvbmVudERpZE1vdW50IGFib3ZlLCB3ZSBhcmUgd2FpdGluZ1xuICAgIC8vIHRvIHJlbmRlciB1bnRpbCB0aGUgZHJpdmVyIGlzIGF2YWlsYWJsZS5cbiAgICBpZiAoIXRoaXMuc3RhdGUuZHJpdmVyKSByZXR1cm4gbnVsbDtcblxuICAgIC8vIFBhc3NpbmcgdGhlIGVudGlyZSBcInRoaXMuc3RhdGVcIiB0byB0aGUgQ29udGV4dCBpcyBzaWduaWZpY2FudC4gQmVjYXVzZVxuICAgIC8vIENvbnRleHQgZGV0ZXJtaW5lcyB3aGVuIHRvIHJlLXJlbmRlciBiYXNlZCBvbiByZWZlcmVudGlhbCBpZGVudGl0eVxuICAgIC8vIHNvbWV0aGluZyBsaWtlIHRoaXMgY291bGQgY2F1c2UgdW5uZWNlc3NhcnkgcmVuZGVyczpcbiAgICAvL1xuICAgIC8vIDxTZWFyY2hDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7ZHJpdmVyOiB0aGlzLnN0YXRlLmRyaXZlcn19PlxuICAgIC8vXG4gICAgLy8gQnkgcGFzc2luZyB0aGUgZW50aXJlIHN0YXRlLCB3ZSBlbnN1cmUgdGhhdCByZS1yZW5kZXJzIG9ubHkgb2NjdXIgd2hlblxuICAgIC8vIHN0YXRlIGlzIGFjdHVhbGx5IHVwZGF0ZWQuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTZWFyY2hDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnN0YXRlfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9TZWFyY2hDb250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoUHJvdmlkZXI7XG4iXX0=
;