UNPKG

@elastic/react-search-ui

Version:

A React library for building search experiences

108 lines (84 loc) 9.24 kB
"use strict"; 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=