UNPKG

@uiw/react-baidu-map-map

Version:
124 lines (123 loc) 4.37 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); var _exportNames = { Provider: true }; exports.default = exports.Provider = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireWildcard(require("react")); var _useMap = require("./useMap"); Object.keys(_useMap).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; if (key in exports && exports[key] === _useMap[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _useMap[key]; } }); }); var _context = require("./context"); Object.keys(_context).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; if (key in exports && exports[key] === _context[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _context[key]; } }); }); var _jsxRuntime = require("react/jsx-runtime"); const _excluded = ["className", "style", "children"]; /// <reference types="@uiw/react-baidu-map-types" /> const Provider = props => { const [state, dispatch] = (0, _react.useReducer)(_context.reducer, _context.initialState); return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.Context.Provider, { value: { state, dispatch }, children: props.children }); }; exports.Provider = Provider; var _default = exports.default = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => { let { className, style, children } = _ref, props = (0, _objectWithoutProperties2.default)(_ref, _excluded); const [state, dispatch] = (0, _react.useReducer)(_context.reducer, _context.initialState); window.BMap = window.BMap || window.BMapGL; const elmRef = (0, _react.useRef)(null); const { setContainer, container, setCenter, setAutoLocalCity, map } = (0, _useMap.useMap)((0, _objectSpread2.default)({ container: elmRef.current }, props)); // eslint-disable-next-line react-hooks/exhaustive-deps (0, _react.useEffect)(() => setContainer(elmRef.current), [elmRef.current]); // eslint-disable-next-line react-hooks/exhaustive-deps (0, _react.useMemo)(() => props.center && setCenter(props.center), [props.center]); // eslint-disable-next-line react-hooks/exhaustive-deps (0, _react.useEffect)(() => setAutoLocalCity(props.autoLocalCity), [props.autoLocalCity]); // eslint-disable-next-line react-hooks/exhaustive-deps (0, _react.useImperativeHandle)(ref, () => (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, { map, BMap, container: elmRef.current }), [map]); const chields = typeof children === 'function' ? [children] : _react.default.Children.toArray(children); (0, _react.useEffect)(() => { if (map) { dispatch({ map, container: elmRef.current, BMap }); } }, [map]); return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_context.Context.Provider, { value: { state, dispatch }, children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { ref: elmRef, className: className, style: (0, _objectSpread2.default)({ fontSize: 1, height: '100%' }, style) }), BMap && map && typeof children === 'function' && children({ BMap, map, container }), BMap && map && chields.map((child, key) => { if (! /*#__PURE__*/_react.default.isValidElement(child)) return null; if (child.type && typeof child.type === 'string') { return /*#__PURE__*/_react.default.cloneElement(child, { key }); } return /*#__PURE__*/_react.default.cloneElement(child, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child.props), {}, { BMap, map, container, key })); })] }); });