@h4wldev/react-naver-maps
Version:
React Navermaps API integration for modern development.
1 lines • 2.74 kB
Source Map (JSON)
{"version":3,"sources":["../src/load-navermaps-script.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport type { ReactElement } from 'react';\n\nimport type { ClientOptions } from './types/client';\nimport { loadScript } from './utils/load-script';\n\nexport function loadNavermapsScript(options: ClientOptions) {\n const url = makeUrl(options);\n\n // TODO: Caching Promise\n\n const promise = loadScript(url).then(() => {\n const navermaps = window.naver.maps;\n\n if (navermaps.jsContentLoaded) {\n return navermaps;\n }\n\n return new Promise<typeof naver.maps>(resolve => {\n navermaps.onJSContentLoaded = () => {\n resolve(navermaps);\n };\n });\n });\n\n return promise;\n}\n\nfunction makeUrl(options: ClientOptions) {\n const submodules = options.submodules;\n let clientIdQuery: string | null = null;\n\n ['ncpClientId', 'ncpKeyId', 'govClientId', 'finClientId'].forEach(key => {\n if (key in options) {\n clientIdQuery = `${key}=${options[key as keyof ClientOptions]}`;\n }\n });\n\n if (!clientIdQuery) {\n throw new Error('react-naver-maps: ncpClientId, govClientId or finClientId is required');\n }\n\n let url = `https://oapi.map.naver.com/openapi/v3/maps.js?${clientIdQuery}`;\n\n if (submodules) {\n url += `&submodules=${submodules.join(',')}`;\n }\n\n return url;\n}\n\ntype Props = ClientOptions & {\n children: () => ReactElement;\n};\n\nexport function LoadNavermapsScript({\n children: Children,\n ...options\n}: Props) {\n const [navermaps, setNavermaps] = useState<typeof naver.maps>();\n\n useEffect(() => {\n loadNavermapsScript(options).then((maps) => {\n setNavermaps(maps);\n });\n }, []);\n\n return (\n (navermaps && Children) ? <Children /> : null\n );\n}\n"],"mappings":";;;;;AAAA,SAAS,WAAW,gBAAgB;AAoEN;AA9DvB,SAAS,oBAAoB,SAAwB;AAC1D,QAAM,MAAM,QAAQ,OAAO;AAI3B,QAAM,UAAU,WAAW,GAAG,EAAE,KAAK,MAAM;AACzC,UAAM,YAAY,OAAO,MAAM;AAE/B,QAAI,UAAU,iBAAiB;AAC7B,aAAO;AAAA,IACT;AAEA,WAAO,IAAI,QAA2B,aAAW;AAC/C,gBAAU,oBAAoB,MAAM;AAClC,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,SAAO;AACT;AAEA,SAAS,QAAQ,SAAwB;AACvC,QAAM,aAAa,QAAQ;AAC3B,MAAI,gBAA+B;AAEnC,GAAC,eAAe,YAAY,eAAe,aAAa,EAAE,QAAQ,SAAO;AACvE,QAAI,OAAO,SAAS;AAClB,sBAAgB,GAAG,OAAO,QAAQ,GAA0B;AAAA,IAC9D;AAAA,EACF,CAAC;AAED,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,MAAM,uEAAuE;AAAA,EACzF;AAEA,MAAI,MAAM,iDAAiD;AAE3D,MAAI,YAAY;AACd,WAAO,eAAe,WAAW,KAAK,GAAG;AAAA,EAC3C;AAEA,SAAO;AACT;AAMO,SAAS,oBAAoB;AAAA,EAClC,UAAU;AAAA,EACV,GAAG;AACL,GAAU;AACR,QAAM,CAAC,WAAW,YAAY,IAAI,SAA4B;AAE9D,YAAU,MAAM;AACd,wBAAoB,OAAO,EAAE,KAAK,CAAC,SAAS;AAC1C,mBAAa,IAAI;AAAA,IACnB,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,SACG,aAAa,WAAY,oBAAC,YAAS,IAAK;AAE7C;","names":[]}