| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | import defined from "./defined.js";import DeveloperError from "./DeveloperError.js";import getAbsoluteUri from "./getAbsoluteUri.js";import Resource from "./Resource.js";/*global CESIUM_BASE_URL,define,require*/const cesiumScriptRegex = /((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function getBaseUrlFromCesiumScript() {  const scripts = document.getElementsByTagName("script");  for (let i = 0, len = scripts.length; i < len; ++i) {    const src = scripts[i].getAttribute("src");    const result = cesiumScriptRegex.exec(src);    if (result !== null) {      return result[1];    }  }  return undefined;}let a;function tryMakeAbsolute(url) {  if (typeof document === "undefined") {    //Node.js and Web Workers. In both cases, the URL will already be absolute.    return url;  }  if (!defined(a)) {    a = document.createElement("a");  }  a.href = url;  // IE only absolutizes href on get, not set  // eslint-disable-next-line no-self-assign  a.href = a.href;  return a.href;}let baseResource;function getCesiumBaseUrl() {  if (defined(baseResource)) {    return baseResource;  }  let baseUrlString;  if (typeof CESIUM_BASE_URL !== "undefined") {    baseUrlString = CESIUM_BASE_URL;  } else if (    typeof define === "object" &&    defined(define.amd) &&    !define.amd.toUrlUndefined &&    defined(require.toUrl)  ) {    baseUrlString = getAbsoluteUri(      "..",      buildModuleUrl("Core/buildModuleUrl.js")    );  } else {    baseUrlString = getBaseUrlFromCesiumScript();  }  //>>includeStart('debug', pragmas.debug);  if (!defined(baseUrlString)) {    throw new DeveloperError(      "Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL."    );  }  //>>includeEnd('debug');  baseResource = new Resource({    url: tryMakeAbsolute(baseUrlString),  });  baseResource.appendForwardSlash();  return baseResource;}function buildModuleUrlFromRequireToUrl(moduleID) {  //moduleID will be non-relative, so require it relative to this module, in Core.  return tryMakeAbsolute(require.toUrl(`../${moduleID}`));}function buildModuleUrlFromBaseUrl(moduleID) {  const resource = getCesiumBaseUrl().getDerivedResource({    url: moduleID,  });  return resource.url;}let implementation;/** * Given a relative URL under the Cesium base URL, returns an absolute URL. * @function * * @param {String} relativeUrl The relative path. * @returns {String} The absolutely URL representation of the provided path. * * @example * const viewer = new Cesium.Viewer("cesiumContainer", { *   imageryProvider: new Cesium.TileMapServiceImageryProvider({ *   url: Cesium.buildModuleUrl("Assets/Textures/NaturalEarthII"), *   }), *   baseLayerPicker: false, * }); */function buildModuleUrl(relativeUrl) {  if (!defined(implementation)) {    //select implementation    if (      typeof define === "object" &&      defined(define.amd) &&      !define.amd.toUrlUndefined &&      defined(require.toUrl)    ) {      implementation = buildModuleUrlFromRequireToUrl;    } else {      implementation = buildModuleUrlFromBaseUrl;    }  }  const url = implementation(relativeUrl);  return url;}// exposed for testingbuildModuleUrl._cesiumScriptRegex = cesiumScriptRegex;buildModuleUrl._buildModuleUrlFromBaseUrl = buildModuleUrlFromBaseUrl;buildModuleUrl._clearBaseResource = function () {  baseResource = undefined;};/** * Sets the base URL for resolving modules. * @param {String} value The new base URL. */buildModuleUrl.setBaseUrl = function (value) {  baseResource = Resource.DEFAULT.getDerivedResource({    url: value,  });};/** * Gets the base URL for resolving modules. * * @function * @returns {String} The configured base URL */buildModuleUrl.getCesiumBaseUrl = getCesiumBaseUrl;export default buildModuleUrl;
 |