UNPKG

@vis.gl/react-maplibre

Version:

React components for Maplibre GL JS

56 lines 1.39 kB
/** These methods may break the react binding if called directly */ const skipMethods = [ 'setMaxBounds', 'setMinZoom', 'setMaxZoom', 'setMinPitch', 'setMaxPitch', 'setRenderWorldCopies', 'setProjection', 'setStyle', 'addSource', 'removeSource', 'addLayer', 'removeLayer', 'setLayerZoomRange', 'setFilter', 'setPaintProperty', 'setLayoutProperty', 'setLight', 'setTerrain', 'setFog', 'remove' ]; export default function createRef(mapInstance) { if (!mapInstance) { return null; } const map = mapInstance.map; const result = { getMap: () => map }; for (const key of getMethodNames(map)) { // @ts-expect-error if (!(key in result) && !skipMethods.includes(key)) { result[key] = map[key].bind(map); } } return result; } function getMethodNames(obj) { const result = new Set(); let proto = obj; while (proto) { for (const key of Object.getOwnPropertyNames(proto)) { if (key[0] !== '_' && typeof obj[key] === 'function' && key !== 'fire' && key !== 'setEventedParent') { result.add(key); } } proto = Object.getPrototypeOf(proto); } return Array.from(result); } //# sourceMappingURL=create-ref.js.map