react-naver-maps
Version:
React Navermaps API integration for modern development.
1 lines • 2.85 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\n const clientIdQuery = 'ncpKeyId' in options ? `ncpKeyId=${options.ncpKeyId}` :\n 'ncpClientId' in options\n ? `ncpClientId=${options.ncpClientId}`\n : 'govClientId' in options\n ? `govClientId=${options.govClientId}`\n : 'finClientId' in options\n ? `finClientId=${options.finClientId}`\n : undefined;\n\n if (!clientIdQuery) {\n throw new Error('react-naver-maps: ncpKeyId, 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\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;AAuEN;AAjEvB,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;AAE3B,QAAM,gBAAgB,cAAc,UAAU,YAAY,QAAQ,aAChE,iBAAiB,UACb,eAAe,QAAQ,gBACvB,iBAAiB,UACf,eAAe,QAAQ,gBACvB,iBAAiB,UACf,eAAe,QAAQ,gBACvB;AAEV,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,MAAM,iFAAiF;AAAA,EACnG;AAEA,MAAI,MAAM,iDAAiD;AAE3D,MAAI,YAAY;AACd,WAAO,eAAe,WAAW,KAAK,GAAG;AAAA,EAC3C;AAEA,SAAO;AACT;AAOO,SAAS,oBAAoB;AAAA,EAClC,UAAU;AAAA,KACP;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,YAAQ,IAAK;AAE5C;","names":[]}