UNPKG

react-naver-maps

Version:

React Navermaps API integration for modern development.

1 lines 3.28 kB
{"version":3,"sources":["../src/overlays/ground-overlay.tsx"],"sourcesContent":["import pick from 'lodash.pick';\nimport { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\n\nimport { HandleEvents } from '../helpers/event';\nimport { Overlay } from '../overlay';\nimport type { UIEventHandlers } from '../types/event';\nimport { useNavermaps } from '../use-navermaps';\n\nconst kvoKeys = [\n 'clickable',\n 'opacity',\n] as const;\nconst kvoEvents = kvoKeys.map(key => `${key}_changed`);\nconst uiEvents = [\n 'mousedown',\n 'mouseup',\n 'click',\n 'dblclick',\n 'rightclick',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n] as const;\nconst events = [...uiEvents, ...kvoEvents];\n\ntype GroundOverlayOptions = {\n clickable?: boolean;\n opacity?: number;\n};\n\nexport type Props = GroundOverlayOptions & {\n url: string;\n /**\n * bounds\n * @type naver.maps.Bounds | naver.maps.BoundsLiteral\n */\n bounds: naver.maps.Bounds | naver.maps.BoundsLiteral;\n onOpacityChanged?: (value: number) => void;\n onClickableChanged?: (event: boolean) => void;\n} & UIEventHandlers<typeof uiEvents>;\n\nexport const GroundOverlay = forwardRef<naver.maps.GroundOverlay, Props>(function GroundOverlay(props, ref) {\n const options = pick(props, kvoKeys);\n const { url, bounds } = props;\n const navermaps = useNavermaps();\n const [groundOverlay, setGroundOverlay] = useState(() => new navermaps.GroundOverlay(url, bounds, options));\n\n useImperativeHandle<naver.maps.GroundOverlay | undefined, naver.maps.GroundOverlay | undefined>(ref, () => groundOverlay, [groundOverlay]);\n\n useEffect(() => {\n if (groundOverlay.getUrl() !== url || groundOverlay.getBounds().equals(bounds as naver.maps.Bounds)) {\n setGroundOverlay(new naver.maps.GroundOverlay(url, bounds, options));\n }\n }, [url, bounds]);\n\n useEffect(() => {\n kvoKeys.forEach(key => {\n if (options[key] && groundOverlay.get(key) !== options[key]) {\n groundOverlay.set(key, options[key]);\n }\n });\n }, kvoKeys.map(key => options[key]));\n\n return (\n <Overlay element={groundOverlay}>\n <HandleEvents events={events} listeners={props as any} />\n </Overlay>\n );\n});\n"],"mappings":";;;;;;;;;;;AAAA,OAAO,UAAU;AACjB,SAAS,YAAY,WAAW,qBAAqB,gBAAgB;AAgE/D;AAzDN,IAAM,UAAU;AAAA,EACd;AAAA,EACA;AACF;AACA,IAAM,YAAY,QAAQ,IAAI,SAAO,GAAG,aAAa;AACrD,IAAM,WAAW;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,SAAS,CAAC,GAAG,UAAU,GAAG,SAAS;AAkBlC,IAAM,gBAAgB,WAA4C,SAASA,eAAc,OAAO,KAAK;AAC1G,QAAM,UAAU,KAAK,OAAO,OAAO;AACnC,QAAM,EAAE,KAAK,OAAO,IAAI;AACxB,QAAM,YAAY,aAAa;AAC/B,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,MAAM,IAAI,UAAU,cAAc,KAAK,QAAQ,OAAO,CAAC;AAE1G,sBAAgG,KAAK,MAAM,eAAe,CAAC,aAAa,CAAC;AAEzI,YAAU,MAAM;AACd,QAAI,cAAc,OAAO,MAAM,OAAO,cAAc,UAAU,EAAE,OAAO,MAA2B,GAAG;AACnG,uBAAiB,IAAI,MAAM,KAAK,cAAc,KAAK,QAAQ,OAAO,CAAC;AAAA,IACrE;AAAA,EACF,GAAG,CAAC,KAAK,MAAM,CAAC;AAEhB,YAAU,MAAM;AACd,YAAQ,QAAQ,SAAO;AACrB,UAAI,QAAQ,QAAQ,cAAc,IAAI,GAAG,MAAM,QAAQ,MAAM;AAC3D,sBAAc,IAAI,KAAK,QAAQ,IAAI;AAAA,MACrC;AAAA,IACF,CAAC;AAAA,EACH,GAAG,QAAQ,IAAI,SAAO,QAAQ,IAAI,CAAC;AAEnC,SACE,oBAAC;AAAA,IAAQ,SAAS;AAAA,IAChB,8BAAC;AAAA,MAAa;AAAA,MAAgB,WAAW;AAAA,KAAc;AAAA,GACzD;AAEJ,CAAC;","names":["GroundOverlay"]}