qwc2
Version:
QGIS Web Client
25 lines • 30 kB
JavaScript
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _regeneratorRuntime(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */_regeneratorRuntime=function _regeneratorRuntime(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function define(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{define({},"")}catch(t){define=function define(t,e,r){return t[e]=r}}function wrap(t,e,r,n){var i=e&&e.prototype instanceof Generator?e:Generator,a=Object.create(i.prototype),c=new Context(n||[]);return o(a,"_invoke",{value:makeInvokeMethod(t,r,c)}),a}function tryCatch(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=wrap;var h="suspendedStart",l="suspendedYield",f="executing",s="completed",y={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var p={};define(p,a,function(){return this});var d=Object.getPrototypeOf,v=d&&d(d(values([])));v&&v!==r&&n.call(v,a)&&(p=v);var g=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(p);function defineIteratorMethods(t){["next","throw","return"].forEach(function(e){define(t,e,function(t){return this._invoke(e,t)})})}function AsyncIterator(t,e){function invoke(r,o,i,a){var c=tryCatch(t[r],t,o);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==_typeof(h)&&n.call(h,"__await")?e.resolve(h.__await).then(function(t){invoke("next",t,i,a)},function(t){invoke("throw",t,i,a)}):e.resolve(h).then(function(t){u.value=t,i(u)},function(t){return invoke("throw",t,i,a)})}a(c.arg)}var r;o(this,"_invoke",{value:function value(t,n){function callInvokeWithMethodAndArg(){return new e(function(e,r){invoke(t,n,e,r)})}return r=r?r.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}})}function makeInvokeMethod(e,r,n){var o=h;return function(i,a){if(o===f)throw Error("Generator is already running");if(o===s){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=maybeInvokeDelegate(c,n);if(u){if(u===y)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===h)throw o=s,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=f;var p=tryCatch(e,r,n);if("normal"===p.type){if(o=n.done?s:l,p.arg===y)continue;return{value:p.arg,done:n.done}}"throw"===p.type&&(o=s,n.method="throw",n.arg=p.arg)}}}function maybeInvokeDelegate(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator["return"]&&(r.method="return",r.arg=t,maybeInvokeDelegate(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var i=tryCatch(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,y;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,y):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function pushTryEntry(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function resetTryEntry(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function Context(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(pushTryEntry,this),this.reset(!0)}function values(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function next(){for(;++o<e.length;)if(n.call(e,o))return next.value=e[o],next.done=!1,next;return next.value=t,next.done=!0,next};return i.next=i}}throw new TypeError(_typeof(e)+" is not iterable")}return GeneratorFunction.prototype=GeneratorFunctionPrototype,o(g,"constructor",{value:GeneratorFunctionPrototype,configurable:!0}),o(GeneratorFunctionPrototype,"constructor",{value:GeneratorFunction,configurable:!0}),GeneratorFunction.displayName=define(GeneratorFunctionPrototype,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===GeneratorFunction||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,GeneratorFunctionPrototype):(t.__proto__=GeneratorFunctionPrototype,define(t,u,"GeneratorFunction")),t.prototype=Object.create(g),t},e.awrap=function(t){return{__await:t}},defineIteratorMethods(AsyncIterator.prototype),define(AsyncIterator.prototype,c,function(){return this}),e.AsyncIterator=AsyncIterator,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new AsyncIterator(wrap(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then(function(t){return t.done?t.value:a.next()})},defineIteratorMethods(g),define(g,u,"Generator"),define(g,a,function(){return this}),define(g,"toString",function(){return"[object Generator]"}),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function next(){for(;r.length;){var t=r.pop();if(t in e)return next.value=t,next.done=!1,next}return next.done=!0,next}},e.values=values,Context.prototype={constructor:Context,reset:function reset(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(resetTryEntry),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function stop(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function dispatchException(e){if(this.done)throw e;var r=this;function handle(n,o){return a.type="throw",a.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return handle("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0);if(this.prev<i.finallyLoc)return handle(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return handle(i.finallyLoc)}}}},abrupt:function abrupt(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,y):this.complete(a)},complete:function complete(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function finish(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),resetTryEntry(r),y}},"catch":function _catch(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;resetTryEntry(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function delegateYield(e,r,n){return this.delegate={iterator:values(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),y}},e}function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}_next(void 0)})}}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t["return"]||t["return"]()}finally{if(u)throw o}}}}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e))}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
* Copyright 2017-2024 Sourcepole AG
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/import React from"react";import{connect}from"react-redux";import axios from"axios";import isEmpty from"lodash.isempty";import{WorkerMessageHandler}from"pdfjs-dist/build/pdf.worker";import Proj4js from"proj4";import PropTypes from"prop-types";import{addLayer,addLayerFeatures,removeLayer,replacePlaceholderLayer}from"../actions/layers";import EditableSelect from"../components/widgets/EditableSelect";import ConfigUtils from"../utils/ConfigUtils";import CoordinatesUtils from"../utils/CoordinatesUtils";import LocaleUtils from"../utils/LocaleUtils";import MiscUtils from"../utils/MiscUtils";import ServiceLayerUtils from"../utils/ServiceLayerUtils";import VectorLayerUtils from"../utils/VectorLayerUtils";import FileSelector from"./widgets/FileSelector";import LayerCatalogWidget from"./widgets/LayerCatalogWidget";import Spinner from"./widgets/Spinner";import"./style/ImportLayer.css";var ImportLayer=/*#__PURE__*/function(_React$Component){function ImportLayer(){var _this;_classCallCheck(this,ImportLayer);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}_this=_callSuper(this,ImportLayer,[].concat(args));_defineProperty(_this,"state",{type:"URL",file:null,url:"",pendingRequests:0,serviceLayers:null,addingLayer:false});_defineProperty(_this,"onFileSelected",function(file){_this.setState({file:file})});_defineProperty(_this,"scanService",function(url){var reqUrl=url!==null&&url!==void 0?url:_this.state.url;if(!reqUrl){return}if(!reqUrl.match(/^[^:]+:\/\/.*$/)&&!reqUrl.startsWith("/")){reqUrl=location.protocol+"//"+reqUrl}else{reqUrl=MiscUtils.adjustProtocol(reqUrl)}var pendingRequests=0;// Attempt to load catalog
if(reqUrl.toLowerCase().endsWith(".json")||reqUrl.toLowerCase().endsWith(".xml")&&!reqUrl.toLowerCase().endsWith("wmtscapabilities.xml")){++pendingRequests;var type;if(reqUrl.toLowerCase().endsWith(".json")){type="json"}else if(reqUrl.toLowerCase().endsWith(".xml")){type="xml"}axios.get(reqUrl).then(function(response){if(type==="xml"){var catalogPendingRequests=0;// Load from QGIS WMS/WFS connections
var doc=new DOMParser().parseFromString(response.data,"text/xml");var parsers=[{type:"wms",getCapabilities:ServiceLayerUtils.getWMSCapabilities,getLayers:function getLayers(capabilities,requestUrl){return ServiceLayerUtils.getWMSLayers(capabilities,requestUrl,true)}},{type:"wfs",getCapabilities:ServiceLayerUtils.getWFSCapabilities,getLayers:function getLayers(capabilities,requestUrl){return ServiceLayerUtils.getWFSLayers(capabilities,requestUrl,_this.props.mapCrs)}}];parsers.forEach(function(parser){var connections=doc.getElementsByTagName("qgs"+parser.type.toUpperCase()+"Connections");if(connections.length){var _iterator=_createForOfIteratorHelper([].slice.call(connections[0].getElementsByTagName(parser.type))),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var conn=_step.value;++catalogPendingRequests;parser.getCapabilities(conn.attributes.url.value).then(function(_ref){var capabilities=_ref.capabilities,requestUrl=_ref.requestUrl;var result=parser.getLayers(capabilities,requestUrl);_this.setState(function(state){return{pendingRequests:state.pendingRequests-1,serviceLayers:(state.serviceLayers||[]).concat(result)}})})["catch"](function(){_this.setState(function(state){return{pendingRequests:state.pendingRequests-1,serviceLayers:state.serviceLayers||[]}})})}}catch(err){_iterator.e(err)}finally{_iterator.f()}}});_this.setState(function(state){return{pendingRequests:state.pendingRequests-1+catalogPendingRequests}})}else if(type==="json"&&response.data.catalog){// Load as JSON catalog
_this.setState(function(state){return{pendingRequests:state.pendingRequests-1,serviceLayers:(state.serviceLayers||[]).concat(response.data.catalog)}})}})["catch"](function(){_this.setState(function(state){return{pendingRequests:state.pendingRequests-1,serviceLayers:state.serviceLayers||[]}})})}// Attempt to load as WMTS
++pendingRequests;ServiceLayerUtils.getWMTSCapabilities(reqUrl).then(function(_ref2){var capabilities=_ref2.capabilities,requestUrl=_ref2.requestUrl;var result=ServiceLayerUtils.getWMTSLayers(capabilities,requestUrl,_this.props.mapCrs);_this.setState(function(state){return{pendingRequests:state.pendingRequests-1,serviceLayers:(state.serviceLayers||[]).concat(result)}})})["catch"](function(){_this.setState(function(state){return{pendingRequests:state.pendingRequests-1,serviceLayers:state.serviceLayers||[]}})});// Attempt to load as WMS
++pendingRequests;ServiceLayerUtils.getWMSCapabilities(reqUrl).then(function(_ref3){var capabilities=_ref3.capabilities,requestUrl=_ref3.requestUrl;var result=ServiceLayerUtils.getWMSLayers(capabilities,requestUrl);_this.setState(function(state){return{pendingRequests:state.pendingRequests-1,serviceLayers:(state.serviceLayers||[]).concat(result)}})})["catch"](function(){_this.setState(function(state){return{pendingRequests:state.pendingRequests-1,serviceLayers:state.serviceLayers||[]}})});// Attempt to load as WFS
++pendingRequests;ServiceLayerUtils.getWFSCapabilities(reqUrl).then(function(_ref4){var capabilities=_ref4.capabilities,requestUrl=_ref4.requestUrl;var result=ServiceLayerUtils.getWFSLayers(capabilities,requestUrl,_this.props.mapCrs);_this.setState(function(state){return{pendingRequests:state.pendingRequests-1,serviceLayers:(state.serviceLayers||[]).concat(result)}})})["catch"](function(){_this.setState(function(state){return{pendingRequests:state.pendingRequests-1,serviceLayers:state.serviceLayers||[]}})});_this.setState({pendingRequests:pendingRequests,serviceLayers:null})});_defineProperty(_this,"importFileLayer",function(){if(!_this.state.file){return}_this.setState({addingLayer:true});var file=_this.state.file;if(file.name.toLowerCase().endsWith(".pdf")){_this.addGeoPDFLayer(file)}else if(file.name.toLowerCase().endsWith(".zip")){_this.addSHPLayer(file)}else{var reader=new FileReader;reader.onload=function(ev){if(file.name.toLowerCase().endsWith(".kml")){_this.addKMLLayer(file.name,ev.target.result)}else if(file.name.toLowerCase().endsWith(".geojson")||file.name.toLowerCase().endsWith(".json")){var data={};try{data=JSON.parse(ev.target.result);_this.addGeoJSONLayer(file.name,data)}catch(e){/* Pass */}}else if(file.name.toLowerCase().endsWith(".pdf")){_this.addGeoPDFLayer(file.name,ev.target.result)}_this.setState({file:null,addingLayer:false})};reader.readAsText(_this.state.file)}});_defineProperty(_this,"addKMLLayer",function(filename,data){_this.addGeoJSONLayer(filename,{features:VectorLayerUtils.kmlToGeoJSON(data)})});_defineProperty(_this,"addGeoJSONLayer",function(filename,data){if(!data.features&&data.type==="Feature"){data={type:"FeatureCollection",features:[data],crs:data.crs}}if(!isEmpty(data.features)){var defaultCrs="EPSG:4326";if(data.crs&&data.crs.properties&&data.crs.properties.name){// Extract CRS from FeatureCollection crs
defaultCrs=CoordinatesUtils.fromOgcUrnCrs(data.crs.properties.name)}var features=data.features.map(function(feature){var crs=defaultCrs;if(feature.crs&&feature.crs.properties&&feature.crs.properties.name){crs=CoordinatesUtils.fromOgcUrnCrs(feature.crs.properties.name)}else if(typeof feature.crs==="string"){crs=feature.crs}if(feature.geometry&&feature.geometry.coordinates){feature.geometry.coordinates=feature.geometry.coordinates.map(VectorLayerUtils.convert3dto2d)}return _objectSpread(_objectSpread({},feature),{},{crs:crs})});_this.props.addLayerFeatures({name:filename,title:filename.replace(/\.[^/.]+$/,""),zoomToExtent:true},features,true)}else{// eslint-disable-next-line
alert(LocaleUtils.tr("importlayer.nofeatures"))}});_defineProperty(_this,"addGeoPDFLayer",function(file){var reader=new FileReader;reader.onload=function(ev){var pdfText=atob(ev.target.result.slice(28));/* FIXME: This is a very ugly way to extract PDF objects */var GPTS=pdfText.match(/\/GPTS\s+\[([^\]]+)\]/);var LPTS=pdfText.match(/\/LPTS\s+\[([^\]]+)\]/);var Viewport=pdfText.match(/<<([^>]+\/Type\s+\/Viewport[^>]+)>>/);var EPSG=pdfText.match(/\/EPSG\s*(\d+)/);if(!GPTS||!LPTS||!Viewport||!EPSG){/* eslint-disable-next-line */alert(LocaleUtils.tr("importlayer.notgeopdf"));_this.setState({file:null,addingLayer:false});return}var pairs=function pairs(res,value,idx,array){return idx%2===0?[].concat(_toConsumableArray(res),[array.slice(idx,idx+2)]):res};var gpts=GPTS[1].split(/\s+/).filter(Boolean).map(Number).reduce(pairs,[]).map(function(e){return e.reverse()});// lat-lon => lon-lat
var lpts=LPTS[1].split(/\s+/).filter(Boolean).map(Number).reduce(pairs,[]);var viewport=Viewport[1].match(/\/BBox\s+\[([^\]]+)\]/)[1].split(/\s+/).filter(Boolean).map(Number);var epsg=EPSG[1];var projDef=Proj4js.defs("EPSG:"+epsg);if(!projDef){/* eslint-disable-next-line */alert(LocaleUtils.tr("importlayer.unknownproj","EPSG:"+epsg));_this.setState({file:null,addingLayer:false});return}// Construct geog CS
var geogCs={projName:"longlat",ellps:projDef.ellps,datum_params:projDef.datum_params,no_defs:projDef.no_defs};// Compute the georeferenced area
// Note: this is a simplistic implementation, assuming that the frame is rectangular and not skewed
var getCornerIdx=function getCornerIdx(x,y){return lpts.findIndex(function(entry){return Math.round(entry[0])===x&&Math.round(entry[1])===y})};var idxBL=getCornerIdx(0,0);var idxTR=getCornerIdx(1,1);var computeCorner=function computeCorner(idx){return{pixel:[viewport[0]*(1-lpts[idx][0])+viewport[2]*lpts[idx][0],viewport[1]*(1-lpts[idx][1])+viewport[3]*lpts[idx][1]],// eslint-disable-next-line
coo:Proj4js(geogCs,_this.props.mapCrs,gpts[idx])}};var bl=computeCorner(idxBL);var tr=computeCorner(idxTR);var geoextent=[bl.coo[0],bl.coo[1],tr.coo[0],tr.coo[1]];var imgextent=[bl.pixel[0],bl.pixel[1],tr.pixel[0],tr.pixel[1]];import("pdfjs-dist/build/pdf").then(function(pdfjsLib){pdfjsLib.GlobalWorkerOptions.workerSrc=WorkerMessageHandler;pdfjsLib.getDocument(ev.target.result).promise.then(function(pdf){pdf.getPage(1).then(function(page){var pageViewport=page.getViewport({scale:1});var canvas=document.createElement("canvas");canvas.width=imgextent[2]-imgextent[0];canvas.height=imgextent[3]-imgextent[1];var context=canvas.getContext("2d");context.translate(-imgextent[0],-(pageViewport.height-imgextent[3]));page.render({canvasContext:context,viewport:pageViewport}).promise.then(function(){_this.props.addLayer({type:"image",name:file.name,title:file.name,url:canvas.toDataURL(),projection:_this.props.mapCrs,imageExtent:geoextent});_this.setState({file:null,addingLayer:false})})})})})["catch"](function(){/* eslint-disable-next-line */console.warn("pdfjs import failed");_this.setState({file:null,addingLayer:false})})};reader.readAsDataURL(file)});_defineProperty(_this,"addSHPLayer",/*#__PURE__*/function(){var _ref5=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(file){var _yield$import,_BrowserFileSystem,load,_yield$import2,ShapefileLoader,_yield$import3,ZipLoader,fileMap,EXTENSIONS,files,fileName,name,ext,fileList,blob,f,list,fileSystem,fetch,filename,data;return _regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.next=2;return import("@loaders.gl/core");case 2:_yield$import=_context.sent;_BrowserFileSystem=_yield$import._BrowserFileSystem;load=_yield$import.load;_context.next=7;return import("@loaders.gl/shapefile");case 7:_yield$import2=_context.sent;ShapefileLoader=_yield$import2.ShapefileLoader;_context.next=11;return import("@loaders.gl/zip");case 11:_yield$import3=_context.sent;ZipLoader=_yield$import3.ZipLoader;if(!(file.type==="application/zip")){_context.next=51;break}_context.next=16;return load(file,ZipLoader);case 16:fileMap=_context.sent;EXTENSIONS=["shp","shx","dbf","cpg","prj"];files={};// Iterate through all the files in ZIP to get a list of (SHP + sidecar files) by filename
for(fileName in fileMap){if(Object.hasOwn(fileMap,fileName)){name=fileName.split(".")[0];ext=fileName.split(".").pop();fileList=files[name]||[];if(EXTENSIONS.includes(ext)){// Create Blob and File from arrayBuffer loaded by ZipLoader
blob=new Blob([fileMap[fileName]]);fileList.push(new File([blob],fileName))}files[name]=fileList}}// Load each SHP with sidecar files as GeoJSON features
_context.t0=_regeneratorRuntime().keys(files);case 21:if((_context.t1=_context.t0()).done){_context.next=50;break}f=_context.t1.value;if(!Object.hasOwn(files,f)){_context.next=48;break}list=files[f];fileSystem=new _BrowserFileSystem(list);fetch=fileSystem.fetch.bind(fileSystem.fetch);filename="".concat(f,".shp");// Load SHP and reproject to mapCrs
data=null;_context.prev=29;_context.next=32;return load(filename,ShapefileLoader,{fetch:fetch,shapefile:{shape:"geojson-table"},gis:{format:"geojson",reproject:true,_targetCrs:_this.props.mapCrs}});case 32:data=_context.sent;_context.next=47;break;case 35:_context.prev=35;_context.t2=_context["catch"](29);_context.prev=37;_context.next=40;return load(filename,ShapefileLoader,{fetch:fetch,shapefile:{shape:"geojson-table"},gis:{format:"geojson",reproject:false,_targetCrs:_this.props.mapCrs}});case 40:data=_context.sent;/* eslint-disable-next-line */alert(LocaleUtils.tr("importlayer.shpreprojectionerror"));_context.next=47;break;case 44:_context.prev=44;_context.t3=_context["catch"](37);data=null;case 47:if(data){data.crs={type:"name",properties:{name:CoordinatesUtils.toOgcUrnCrs(_this.props.mapCrs)}};// Add data as GeoJSON layer
_this.addGeoJSONLayer(f,data)}case 48:_context.next=21;break;case 50:_this.setState({file:null,addingLayer:false});case 51:case"end":return _context.stop()}},_callee,null,[[29,35],[37,44]])}));return function(_x){return _ref5.apply(this,arguments)}}());return _this}_inherits(ImportLayer,_React$Component);return _createClass(ImportLayer,[{key:"renderInputField",value:function renderInputField(){var _this2=this;var placeholder=LocaleUtils.tr("importlayer.urlplaceholder");var urlPresets=ConfigUtils.getConfigProp("importLayerUrlPresets",this.props.theme)||[];if(this.state.type==="Local"){return/*#__PURE__*/React.createElement(FileSelector,{accept:".kml,.json,.geojson,.pdf,.zip",file:this.state.file,onFileSelected:this.onFileSelected,title:LocaleUtils.tr("importlayer.supportedformats")})}else{return/*#__PURE__*/React.createElement(EditableSelect,{onChange:function onChange(value){return _this2.setState({url:value})},onSubmit:this.scanService,options:urlPresets,placeholder:placeholder,readOnly:this.state.pendingRequests>0,value:this.state.url})}}},{key:"render",value:function render(){var _this3=this;var button=null;if(this.state.type==="URL"){button=/*#__PURE__*/React.createElement("button",{className:"button importlayer-addbutton",disabled:!this.state.url||this.state.pendingRequests>0,onClick:function onClick(){return _this3.scanService()}},this.state.pendingRequests>0?/*#__PURE__*/React.createElement(Spinner,null):null,LocaleUtils.tr("importlayer.connect"))}else{button=/*#__PURE__*/React.createElement("button",{className:"button importlayer-addbutton",disabled:this.state.file===null||this.state.addingLayer,onClick:this.importFileLayer,type:"button"},this.state.addingLayer?/*#__PURE__*/React.createElement(Spinner,null):null,LocaleUtils.tr("importlayer.addlayer"))}var layerList=null;if(this.state.serviceLayers!==null){layerList=/*#__PURE__*/React.createElement(LayerCatalogWidget,{addLayer:this.props.addLayer,catalog:this.state.serviceLayers,pendingRequests:this.state.pendingRequests,removeLayer:this.props.removeLayer,replacePlaceholderLayer:this.props.replacePlaceholderLayer})}var disableLocal=ConfigUtils.getConfigProp("disableImportingLocalLayers",this.props.theme);return/*#__PURE__*/React.createElement("div",{className:"ImportLayer"},/*#__PURE__*/React.createElement("div",{className:"importlayer-input-fields controlgroup"},/*#__PURE__*/React.createElement("select",{disabled:this.state.pendingRequests>0,onChange:function onChange(ev){return _this3.setState({type:ev.target.value,file:null,url:"",serviceLayers:null})},value:this.state.type},/*#__PURE__*/React.createElement("option",{value:"URL"},LocaleUtils.tr("importlayer.url")),!disableLocal?/*#__PURE__*/React.createElement("option",{value:"Local"},LocaleUtils.tr("importlayer.localfile")):null),this.renderInputField()),button,layerList)}}])}(React.Component);_defineProperty(ImportLayer,"propTypes",{addLayer:PropTypes.func,addLayerFeatures:PropTypes.func,mapCrs:PropTypes.string,removeLayer:PropTypes.func,replacePlaceholderLayer:PropTypes.func,theme:PropTypes.object,themes:PropTypes.object});export default connect(function(state){return{mapCrs:state.map.projection,themes:state.theme.themes}},{addLayer:addLayer,addLayerFeatures:addLayerFeatures,removeLayer:removeLayer,replacePlaceholderLayer:replacePlaceholderLayer})(ImportLayer);