Loading src/.babelrcdeleted 100644 → 0 +0 −8 Original line number Diff line number Diff line { "presets": ["@babel/preset-env"], "plugins": [ "@babel/plugin-proposal-object-rest-spread", "transform-inline-environment-variables", "minify-dead-code-elimination" ] } src/main.js +3 −3 Original line number Diff line number Diff line import lazy from './utils/lazyValue' import { loadGmapApi } from './manager' import { loadGMapApi } from './manager' import { createApp } from 'vue' import Marker from './components/marker' import Polyline from './components/polyline' Loading @@ -18,7 +18,7 @@ let GmapApi = null // export everything export { loadGmapApi, loadGMapApi, Marker, Polyline, Polygon, Loading Loading @@ -100,7 +100,7 @@ function makeGmapApiPromiseLazy(options) { return new Promise((resolve, reject) => { try { window['vueGoogleMapsInit'] = resolve loadGmapApi(options.load, options.loadCn) loadGMapApi(options.load, options.loadCn) } catch (err) { reject(err) } Loading src/manager.js +8 −66 Original line number Diff line number Diff line import {Env} from "@/utils/env"; import {createMapScript} from "@/utils/create-map-script"; let isApiSetUp = false export function loadGMapApi (options) { /** * @param apiKey API Key, or object with the URL parameters. For example * to use Google Maps Premium API, pass * `{ client: <YOUR-CLIENT-ID> }`. * You may pass the libraries and/or version (as `v`) parameter into * this parameter and skip the next two parameters * @param version Google Maps version * @param libraries Libraries to load (@see * https://developers.google.com/maps/documentation/javascript/libraries) * @param loadCn Boolean. If set to true, the map will be loaded from google maps China * (@see https://developers.google.com/maps/documentation/javascript/basics#GoogleMapsChina) * * Example: * ``` * import {load} from 'vue-google-maps' * * load(<YOUR-API-KEY>) * * load({ * key: <YOUR-API-KEY>, * }) * * load({ * client: <YOUR-CLIENT-ID>, * channel: <YOUR CHANNEL> * }) * ``` */ export const loadGmapApi = (options, loadCn) => { if (typeof document === 'undefined') { // Do nothing if run from server-side return if (Env.isServer()) { return; } if (!isApiSetUp) { isApiSetUp = true const googleMapScript = document.createElement('SCRIPT') // Allow options to be an object. // This is to support more esoteric means of loading Google Maps, // such as Google for business // https://developers.google.com/maps/documentation/javascript/get-api-key#premium-auth if (typeof options !== 'object') { throw new Error('options should be an object') } // libraries /* eslint-disable no-prototype-builtins */ if (Array.prototype.isPrototypeOf(options.libraries)) { options.libraries = options.libraries.join(',') } options['callback'] = 'vueGoogleMapsInit' let baseUrl = 'https://maps.googleapis.com/' if (typeof loadCn === 'boolean' && loadCn === true) { baseUrl = 'https://maps.google.cn/' } let url = baseUrl + 'maps/api/js?' + Object.keys(options) .map((key) => encodeURIComponent(key) + '=' + encodeURIComponent(options[key])) .join('&') googleMapScript.setAttribute('src', url) googleMapScript.setAttribute('async', '') googleMapScript.setAttribute('defer', '') const googleMapScript = createMapScript(options); document.head.appendChild(googleMapScript) } else { throw new Error('You already started the loading of google maps') Loading src/utils/create-map-script.js 0 → 100644 +32 −0 Original line number Diff line number Diff line export function createMapScript(options) { const googleMapScript = document.createElement('SCRIPT') // Allow options to be an object. // This is to support more esoteric means of loading Google Maps, // such as Google for business // https://developers.google.com/maps/documentation/javascript/get-api-key#premium-auth if (typeof options !== 'object') { throw new Error('options should be an object') } // libraries /* eslint-disable no-prototype-builtins */ if (Array.prototype.isPrototypeOf(options.libraries)) { options.libraries = options.libraries.join(',') } options['callback'] = 'vueGoogleMapsInit' let baseUrl = 'https://maps.googleapis.com/' let url = baseUrl + 'maps/api/js?' + Object.keys(options) .map((key) => encodeURIComponent(key) + '=' + encodeURIComponent(options[key])) .join('&') googleMapScript.setAttribute('src', url) googleMapScript.setAttribute('async', '') googleMapScript.setAttribute('defer', '') return googleMapScript; } src/utils/env.js 0 → 100644 +5 −0 Original line number Diff line number Diff line export class Env { static isServer() { return typeof document === 'undefined'; } } Loading
src/.babelrcdeleted 100644 → 0 +0 −8 Original line number Diff line number Diff line { "presets": ["@babel/preset-env"], "plugins": [ "@babel/plugin-proposal-object-rest-spread", "transform-inline-environment-variables", "minify-dead-code-elimination" ] }
src/main.js +3 −3 Original line number Diff line number Diff line import lazy from './utils/lazyValue' import { loadGmapApi } from './manager' import { loadGMapApi } from './manager' import { createApp } from 'vue' import Marker from './components/marker' import Polyline from './components/polyline' Loading @@ -18,7 +18,7 @@ let GmapApi = null // export everything export { loadGmapApi, loadGMapApi, Marker, Polyline, Polygon, Loading Loading @@ -100,7 +100,7 @@ function makeGmapApiPromiseLazy(options) { return new Promise((resolve, reject) => { try { window['vueGoogleMapsInit'] = resolve loadGmapApi(options.load, options.loadCn) loadGMapApi(options.load, options.loadCn) } catch (err) { reject(err) } Loading
src/manager.js +8 −66 Original line number Diff line number Diff line import {Env} from "@/utils/env"; import {createMapScript} from "@/utils/create-map-script"; let isApiSetUp = false export function loadGMapApi (options) { /** * @param apiKey API Key, or object with the URL parameters. For example * to use Google Maps Premium API, pass * `{ client: <YOUR-CLIENT-ID> }`. * You may pass the libraries and/or version (as `v`) parameter into * this parameter and skip the next two parameters * @param version Google Maps version * @param libraries Libraries to load (@see * https://developers.google.com/maps/documentation/javascript/libraries) * @param loadCn Boolean. If set to true, the map will be loaded from google maps China * (@see https://developers.google.com/maps/documentation/javascript/basics#GoogleMapsChina) * * Example: * ``` * import {load} from 'vue-google-maps' * * load(<YOUR-API-KEY>) * * load({ * key: <YOUR-API-KEY>, * }) * * load({ * client: <YOUR-CLIENT-ID>, * channel: <YOUR CHANNEL> * }) * ``` */ export const loadGmapApi = (options, loadCn) => { if (typeof document === 'undefined') { // Do nothing if run from server-side return if (Env.isServer()) { return; } if (!isApiSetUp) { isApiSetUp = true const googleMapScript = document.createElement('SCRIPT') // Allow options to be an object. // This is to support more esoteric means of loading Google Maps, // such as Google for business // https://developers.google.com/maps/documentation/javascript/get-api-key#premium-auth if (typeof options !== 'object') { throw new Error('options should be an object') } // libraries /* eslint-disable no-prototype-builtins */ if (Array.prototype.isPrototypeOf(options.libraries)) { options.libraries = options.libraries.join(',') } options['callback'] = 'vueGoogleMapsInit' let baseUrl = 'https://maps.googleapis.com/' if (typeof loadCn === 'boolean' && loadCn === true) { baseUrl = 'https://maps.google.cn/' } let url = baseUrl + 'maps/api/js?' + Object.keys(options) .map((key) => encodeURIComponent(key) + '=' + encodeURIComponent(options[key])) .join('&') googleMapScript.setAttribute('src', url) googleMapScript.setAttribute('async', '') googleMapScript.setAttribute('defer', '') const googleMapScript = createMapScript(options); document.head.appendChild(googleMapScript) } else { throw new Error('You already started the loading of google maps') Loading
src/utils/create-map-script.js 0 → 100644 +32 −0 Original line number Diff line number Diff line export function createMapScript(options) { const googleMapScript = document.createElement('SCRIPT') // Allow options to be an object. // This is to support more esoteric means of loading Google Maps, // such as Google for business // https://developers.google.com/maps/documentation/javascript/get-api-key#premium-auth if (typeof options !== 'object') { throw new Error('options should be an object') } // libraries /* eslint-disable no-prototype-builtins */ if (Array.prototype.isPrototypeOf(options.libraries)) { options.libraries = options.libraries.join(',') } options['callback'] = 'vueGoogleMapsInit' let baseUrl = 'https://maps.googleapis.com/' let url = baseUrl + 'maps/api/js?' + Object.keys(options) .map((key) => encodeURIComponent(key) + '=' + encodeURIComponent(options[key])) .join('&') googleMapScript.setAttribute('src', url) googleMapScript.setAttribute('async', '') googleMapScript.setAttribute('defer', '') return googleMapScript; }
src/utils/env.js 0 → 100644 +5 −0 Original line number Diff line number Diff line export class Env { static isServer() { return typeof document === 'undefined'; } }