@uiw/react-amap-map
Version:
基于 React 封装的高德地图组件。AMap Component Based On React.
110 lines (109 loc) • 4.16 kB
JavaScript
;
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,
Map: true
};
exports.Provider = exports.Map = void 0;
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = _interopRequireWildcard(require("react"));
var _useMap2 = require("./useMap");
Object.keys(_useMap2).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _useMap2[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _useMap2[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 get() {
return _context[key];
}
});
});
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["className", "children"]; /// <reference types="@uiw/react-amap-types" />
var Provider = exports.Provider = function Provider(props) {
var _useReducer = (0, _react.useReducer)(_context.reducer, _context.initialState),
_useReducer2 = (0, _slicedToArray2["default"])(_useReducer, 2),
state = _useReducer2[0],
dispatch = _useReducer2[1];
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.Context.Provider, {
value: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, state), {}, {
state: state,
dispatch: dispatch
}),
children: props.children
});
};
var Map = exports.Map = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
var className = _ref.className,
children = _ref.children,
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
var AMap = window.AMap;
var _useReducer3 = (0, _react.useReducer)(_context.reducer, _context.initialState),
_useReducer4 = (0, _slicedToArray2["default"])(_useReducer3, 2),
state = _useReducer4[0],
dispatch = _useReducer4[1];
var elmRef = (0, _react.useRef)(null);
var _useMap = (0, _useMap2.useMap)((0, _objectSpread2["default"])({
container: props.container || elmRef.current
}, props)),
setContainer = _useMap.setContainer,
container = _useMap.container,
map = _useMap.map;
(0, _react.useEffect)(function () {
return setContainer(elmRef.current);
}, [elmRef.current]);
(0, _react.useImperativeHandle)(ref, function () {
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, props), {}, {
map: map,
AMap: AMap,
container: props.container || elmRef.current
});
}, [map]);
(0, _react.useEffect)(function () {
if (map) {
dispatch({
map: map,
container: elmRef.current,
AMap: AMap
});
}
}, [map]);
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_context.Context.Provider, {
value: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, state), {}, {
state: state,
dispatch: dispatch
}),
children: [!props.container && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
ref: elmRef,
className: className,
style: (0, _objectSpread2["default"])({
fontSize: 1,
width: '100%',
height: '100%'
}, props.style)
}), AMap && map && typeof children === 'function' && children({
AMap: AMap,
map: map,
container: container
}), AMap && map && typeof children !== 'function' && children]
});
});