UNPKG

rc-bmap

Version:

<p align="center"> <img src="https://bmap.jser-club.com/home.png" width="200px"> </p> <p align="center">基于 React 的百度地图组件</p>

118 lines (89 loc) 3.48 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _class, _temp, _initialiseProps; var _utils = require('../utils'); var _utils2 = _interopRequireDefault(_utils); var _map = require('../utils/map'); var _map2 = _interopRequireDefault(_map); var _autoComplete = require('../options/autoComplete'); var _autoComplete2 = _interopRequireDefault(_autoComplete); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var getAutocompleteOptions = function getAutocompleteOptions(config, map) { return { location: config.location || map, types: config.types, onSearchComplete: config.onSearchComplete, input: config.input }; }; var AutoComplete = (_temp = _class = function () { function AutoComplete() { var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var map = arguments[1]; (0, _classCallCheck3.default)(this, AutoComplete); _initialiseProps.call(this); this.config = (0, _extends3.default)({}, config); this.init(config, map); } (0, _createClass3.default)(AutoComplete, [{ key: 'processOptions', value: function processOptions(config) { if (config.value) { config.inputValue = config.value; } _utils2.default.processSetOptions(this.instance, _autoComplete2.default.SET, config); } }]); return AutoComplete; }(), _initialiseProps = function _initialiseProps() { var _this = this; this.config = {}; this.outOfRangeOpts = ['input', 'onSearchComplete']; this.hasOutOfRangeOpts = function () { var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; return opts.some(function (item) { return _this.outOfRangeOpts.indexOf(item) > -1; }); }; this.init = function (config, map) { _this.checkInputExist(); var options = getAutocompleteOptions(config, map); _this.instance = _map2.default.BAutocomplete(options); _this.processOptions(config); _this.processEvents(config.events); }; this.checkInputExist = function () { if (!document.querySelector('#' + _this.config.input)) { throw Error('[Input] ' + _this.config.input + ' is not exist when init autocomplete.'); } }; this.repaint = function (config) { var diffConfig = _utils2.default.compareConfig(_this.config, config) || {}; if (_this.hasOutOfRangeOpts((0, _keys2.default)(diffConfig))) { _this.destroy(); _this.init((0, _extends3.default)({}, _this.config, diffConfig)); } else { _this.processOptions(diffConfig); } _this.config = (0, _extends3.default)({}, _this.config, diffConfig); _this.processEvents(_this.config.events); }; this.destroy = function () { _this.instance.dispose(); }; this.processEvents = function (events) { _utils2.default.unbindEvents(_this.instance); _utils2.default.bindEvents(_this.instance, events); }; }, _temp); exports.default = AutoComplete;