{"version":3,"file":"index-DshybiNK.js","sources":["../../../app/assets/javascripts/app/map/city_map/layers/google_maps_tile_layer.ts","../../../app/assets/javascripts/app/map/leaflet/map_tile_layer/index.ts"],"sourcesContent":["\nimport L from \"plugins/leaflet/index\"\nimport Promise from \"plugins/bluebird/index\"\nimport log from \"plugins/loglevel/index\"\n\nlet layer = null as null | L.Layer\n/* eslint-disable no-empty-function */\n/* eslint-disable @typescript-eslint/no-empty-function */\nlet promise_resolve = (_layer: L.Layer) => {}\n/* eslint-enable @typescript-eslint/no-empty-function */\n/* eslint-enable no-empty-function */\nconst promise: Promise = new Promise((resolve) => {\n promise_resolve = resolve\n})\n\nconst TYPES = {\n GOOGLE_MAPS_API_WRAPPER: \"GOOGLE_MAPS_API_WRAPPER\",\n IMAGE_LOADER_WITH_URL_TEMPLATE: \"IMAGE_LOADER_WITH_URL_TEMPLATE\",\n UNKNOWN: \"UNKNOWN\",\n}\n\nconst GoogleMapsTileLayer = {\n TYPES,\n setLayer(new_layer: null | L.Layer){\n if (new_layer == null){\n log.warn(\"new_layer is null/undefined!\")\n return\n }\n\n layer = new_layer\n promise_resolve(new_layer)\n },\n getLayerPromise: () => promise,\n getLayer: () => layer,\n getLayerType(){\n if (layer === null){\n return null\n }\n\n if (layer instanceof L.Google){\n return TYPES.GOOGLE_MAPS_API_WRAPPER\n }\n\n if (layer instanceof L.TileLayer){\n return TYPES.IMAGE_LOADER_WITH_URL_TEMPLATE\n }\n\n return TYPES.UNKNOWN\n },\n}\n\nexport default GoogleMapsTileLayer\n","\nimport _once from \"lodash/once\"\nimport Promise from \"plugins/bluebird\"\nimport L from \"plugins/leaflet/index\"\nimport URI from \"urijs\"\n\nimport AssetsInfoStore from \"app/assets_info_store\"\nimport DataRetriever from \"app/data_retriever\"\n\nimport GoogleMapsTileLayer from \"app/map/city_map/layers/google_maps_tile_layer\"\n\nimport {\n asyncLoad as Baidu_asyncLoad,\n} from \"app/baidu-maps\"\n\n\nimport I18n from \"plugins/i18n-js\"\n\n\ninterface FullGoogleMapsOptions {\n streetViewControl: boolean,\n styles: boolean,\n}\ninterface PartialGoogleMapsOptions {\n streetViewControl?: boolean,\n styles?: object,\n}\n\nconst get_force_google_cn = _once(() => {\n return URI(window.location.href).search().indexOf(\"force_map_tile=google_cn\") !== -1\n})\nconst get_display_baidu_maps = _once(() => {\n return !get_force_google_cn() && DataRetriever.get(\"display-baidu-maps\")\n})\n\nconst isUserInChina = () => {\n return typeof DataRetriever.get(\"current-location-country-code-is-china\") !== \"undefined\"\n}\n\ninterface LeafletGoogleLogoOptions extends L.ControlOptions {\n url: string,\n}\nclass LeafletGoogleLogoControl extends L.Control {\n constructor(options?: LeafletGoogleLogoOptions) {\n super(options)\n }\n}\nconst L_Google_Logo = L.Control.extend({\n options: {\n position: \"bottomleft\",\n },\n\n onAdd: function() {\n const img: HTMLImageElement = (L.DomUtil.create(\"img\") as HTMLImageElement)\n\n img.src = this.options.url\n img.classList.add(\"l-google-maps-tile-layer-logo\")\n\n return img\n },\n}) as {new(...args: any[]): any} & typeof L.Control & typeof LeafletGoogleLogoControl\n\n\nclass LeafletGoogleMapsTileLayer extends L.TileLayer {\n public onAdd(map: L.Map) {\n AssetsInfoStore.fetch(\"logo/google_logo/colorful_with_outline_transparent_66_26.png\")\n .then((logo_data) => {\n const logo = new L_Google_Logo({\n url: logo_data.url,\n })\n\n map.addControl(logo)\n })\n\n L.TileLayer.prototype.onAdd.call(this, map)\n return this\n }\n}\n\nclass LeafletAutonaviTileLayer extends L.TileLayer {\n public onAdd(map: L.Map) {\n AssetsInfoStore.fetch(\"logo/autonavi_logo/white_with_outline_transparent.png\")\n .then((logo_data) => {\n const logo = new L_Google_Logo({\n url: logo_data.url,\n })\n\n map.addControl(logo)\n })\n\n L.TileLayer.prototype.onAdd.call(this, map)\n return this\n }\n}\n\n\nconst getNewTileLayerPromise = (): Promise => {\n return new Promise((resolve, reject) => {\n try {\n let tile_layer\n if (get_display_baidu_maps()) {\n // This is against Google Maps ToS\n // But this change is authorized by Asif\n const tile_template_url = \"http://{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}\"\n\n tile_layer = new LeafletAutonaviTileLayer(tile_template_url, {\n subdomains: [\"webrd01\", \"webrd02\", \"webrd03\", \"webrd04\"],\n maxNativeZoom: 22,\n // Still not sure what attribution should be used\n // attribution: \"\",\n })\n\n GoogleMapsTileLayer.setLayer(tile_layer)\n resolve(tile_layer)\n }\n else {\n // This is against Google Maps ToS\n // But this change is authorized by Asif\n const tile_template_url = `${window.location.protocol}//{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}&hl=${I18n.locale}`\n\n // https://stackoverflow.com/questions/23017766/google-maps-tile-url-for-hybrid-maptype-tiles\n // `lyrs=m` = Standard Roadmap\n tile_layer = new LeafletGoogleMapsTileLayer(tile_template_url, {\n subdomains: [\"mt0\", \"mt1\", \"mt2\", \"mt3\"],\n maxNativeZoom: 22,\n // Still not sure what attribution should be used\n // attribution: \"\",\n })\n\n GoogleMapsTileLayer.setLayer(tile_layer)\n resolve(tile_layer)\n }\n }\n catch (error) {\n reject(error)\n }\n })\n}\n\nconst LeafletMapTileLayer = {\n getNewTileLayerPromise,\n}\n\nexport {\n LeafletMapTileLayer,\n}\n\nexport default LeafletMapTileLayer\n"],"names":["layer","promise_resolve","_layer","promise","Promise","resolve","TYPES","GoogleMapsTileLayer","new_layer","log","L","get_force_google_cn","_once","URI","get_display_baidu_maps","DataRetriever","LeafletGoogleLogoControl","options","L_Google_Logo","img","LeafletGoogleMapsTileLayer","map","AssetsInfoStore","logo_data","logo","LeafletAutonaviTileLayer","getNewTileLayerPromise","reject","tile_layer","tile_template_url","I18n","error","LeafletMapTileLayer"],"mappings":"sSAKA,IAAIA,EAAQ,KAGRC,EAAmBC,GAAoB,CAAC,EAG5C,MAAMC,EAAuC,IAAIC,EAASC,GAAY,CAClDJ,EAAAI,CACpB,CAAC,EAEKC,EAAQ,CACZ,wBAAgC,0BAChC,+BAAgC,iCAChC,QAAgC,SAClC,EAEMC,EAAsB,CAC1B,MAAAD,EACA,SAASE,EAA0B,CACjC,GAAIA,GAAa,KAAK,CACpBC,EAAI,KAAK,8BAA8B,EACvC,MAAA,CAGMT,EAAAQ,EACRP,EAAgBO,CAAS,CAC3B,EACA,gBAAiB,IAAML,EACvB,SAAU,IAAMH,EAChB,cAAc,CACZ,OAAIA,IAAU,KACL,KAGLA,aAAiBU,EAAE,OACdJ,EAAM,wBAGXN,aAAiBU,EAAE,UACdJ,EAAM,+BAGRA,EAAM,OAAA,CAEjB,ECrBMK,EAAsBC,EAAM,IACzBC,EAAI,OAAO,SAAS,IAAI,EAAE,SAAS,QAAQ,0BAA0B,IAAM,EACnF,EACKC,EAAyBF,EAAM,IAC5B,CAACD,EAAyB,GAAAI,EAAc,IAAI,oBAAoB,CACxE,EASD,MAAMC,UAAiCN,EAAE,OAAQ,CAC/C,YAAYO,EAAoC,CAC9C,MAAMA,CAAO,CAAA,CAEjB,CACA,MAAMC,EAAgBR,EAAE,QAAQ,OAAO,CACrC,QAAS,CACP,SAAU,YACZ,EAEA,MAAO,UAAW,CAChB,MAAMS,EAAyBT,EAAE,QAAQ,OAAO,KAAK,EAEjD,OAAAS,EAAA,IAAM,KAAK,QAAQ,IACnBA,EAAA,UAAU,IAAI,+BAA+B,EAE1CA,CAAA,CAEX,CAAC,EAGD,MAAMC,UAAmCV,EAAE,SAAU,CAC5C,MAAMW,EAAY,CACvB,OAAAC,EAAgB,MAAM,8DAA8D,EACnF,KAAMC,GAAc,CACb,MAAAC,EAAO,IAAIN,EAAc,CAC7B,IAAKK,EAAU,GAAA,CAChB,EAEDF,EAAI,WAAWG,CAAI,CAAA,CACpB,EAEDd,EAAE,UAAU,UAAU,MAAM,KAAK,KAAMW,CAAG,EACnC,IAAA,CAEX,CAEA,MAAMI,UAAiCf,EAAE,SAAU,CAC1C,MAAMW,EAAY,CACvB,OAAAC,EAAgB,MAAM,uDAAuD,EAC5E,KAAMC,GAAc,CACb,MAAAC,EAAO,IAAIN,EAAc,CAC7B,IAAKK,EAAU,GAAA,CAChB,EAEDF,EAAI,WAAWG,CAAI,CAAA,CACpB,EAEDd,EAAE,UAAU,UAAU,MAAM,KAAK,KAAMW,CAAG,EACnC,IAAA,CAEX,CAGA,MAAMK,EAAyB,IACtB,IAAItB,EAAQ,CAACC,EAASsB,IAAW,CAClC,GAAA,CACE,IAAAC,EACJ,GAAId,IAA0B,CAG5B,MAAMe,EAAoB,4FAEbD,EAAA,IAAIH,EAAyBI,EAAmB,CAC3D,WAAe,CAAC,UAAW,UAAW,UAAW,SAAS,EAC1D,cAAe,EAAA,CAGhB,EAEDtB,EAAoB,SAASqB,CAAU,EACvCvB,EAAQuB,CAAU,CAAA,KAEf,CAGH,MAAMC,EAAoB,GAAG,cAAO,SAAS,SAAQ,oDAAmD,OAAAC,EAAK,QAIhGF,EAAA,IAAIR,EAA2BS,EAAmB,CAC7D,WAAe,CAAC,MAAO,MAAO,MAAO,KAAK,EAC1C,cAAe,EAAA,CAGhB,EAEDtB,EAAoB,SAASqB,CAAU,EACvCvB,EAAQuB,CAAU,CAAA,QAGfG,EAAO,CACZJ,EAAOI,CAAK,CAAA,CACd,CACD,EAGGC,EAAsB,CAC1B,uBAAAN,CACF"}