<!doctype html><html lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"/><meta http-equiv="X-UA-Compatible" content="IE=EDGE"/><title>Experience</title><link rel="shortcut icon" href="assets/exb.ico"><base href="/cdn/1213/experience/"/><style>html {
scrollbar-color: var(--light-600) var(--light-200);
}
html, body{
width: 100%;
height: 100%;
margin: 0;
overflow: hidden;
}
#loading{
width: 100vw;
height: 100vh;
}
#app{
width: 100%;
height: 100%;
display: none;
}</style><script>/*
Please make sure the script is in <head>, this can help API module load find the correct "insertPointSibling"
See dojo/dojo.js line 1724-1728
*/
var mountPath = '/';
var isOutOfExb = false;
var appFolderName = 'experience';
var useStructuralUrl = true;
var arcgisJsApiUrl = 'https://js.arcgis.com/4.21/';
// isDevEdition is set to false in webpack, developer edition node server will replace it to true
var isDevEdition = false;
var buildNumber = '1213';
var isBuilder = false;
var isSite = false;
var isInPortal = false;
if(isInPortal){
mountPath = getDeployContextFromLocation() + 'apps/experiencebuilder/';
arcgisJsApiUrl = getDeployContextFromLocation() + 'jsapi/jsapi4/';
}
var hostEnv = 'prod';
if(!isDevEdition && !isInPortal){ // online host version.
if(location.hostname === 'experiencedev.arcgis.com' || location.hostname === 'experiencedevtest.arcgis.com'){
hostEnv = 'dev';
}else if(location.hostname === 'experienceqa.arcgis.com'){
hostEnv = 'qa';
}else if(location.hostname === 'experience.arcgis.com'){
hostEnv = 'prod';
}
// for other domain, we don't rewrite the hostEnv
}
/* for download */
function getPath() {
var fullPath, path;
fullPath = window.location.pathname;
if (fullPath === '/' || fullPath.substr(fullPath.length - 1) === '/') {
path = fullPath;
}else{
var sections = fullPath.split('/');
var lastSection = sections.pop();
if (/\.html$/.test(lastSection) || /\.aspx$/.test(lastSection) ||
/\.jsp$/.test(lastSection) || /\.php$/.test(lastSection)) {
//index.html may be renamed to index.jsp, etc.
path = sections.join('/') + '/';
} else {
return false;
}
}
return path;
}
function getDeployContextFromLocation (){
var keyIndex = window.location.href.indexOf("/home/");
if(keyIndex < 0){
keyIndex = window.location.href.indexOf("/apps/");
}
var context = window.location.href.substring(window.location.href.indexOf(
window.location.host) + window.location.host.length + 1, keyIndex);
if (context !== "/") {
context = "/" + context + "/";
}
return context;
}
function isInBuilder(){
try{
window.parent.jimuConfig;
}catch(err){
//cross domain error
return false;
}
return window !== window.parent && window.parent.jimuConfig && window.parent.jimuConfig.isBuilder? true: false;
}
function initJimuConfig(){
if(!mountPath){
mountPath = '/';
}
if(!/\/$/.test(mountPath)){
mountPath = mountPath + '/';
}
let rootPath = mountPath;
if(appFolderName !== 'site'){
rootPath = mountPath + appFolderName + '/';
}
window.jimuConfig = {
isBuilder: isBuilder,
isSite: isSite,
isInBuilder: isInBuilder(),
mountPath: mountPath,
appFolderName: appFolderName,
rootPath: rootPath,
baseUrl: buildNumber ? mountPath + 'cdn/' + buildNumber + '/' : mountPath,
isOutOfExb: isOutOfExb,
useStructuralUrl: useStructuralUrl,
isInPortal: isInPortal,
isDevEdition: isDevEdition,
arcgisJsApiUrl: arcgisJsApiUrl,
hostEnv: hostEnv,
buildNumber: buildNumber
};
}
initJimuConfig();
//to make react devtools works in iframe.
if (window.parent !== window) {
try{
window.__REACT_DEVTOOLS_GLOBAL_HOOK__ = window.parent.__REACT_DEVTOOLS_GLOBAL_HOOK__;
}catch(err){
console.warn('App is embedded in a cross-origin frame.');
}
}</script></head><body><div id="loading"><style>.loading-content{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.jimu-primary-loading:before, .jimu-primary-loading:after {
position: absolute;
top: 0;
content: '';
}
.jimu-primary-loading:before {
left: -19.992px;
}
.jimu-primary-loading:after {
left: 19.992px;
-webkit-animation-delay: 0.32s !important;
animation-delay: 0.32s !important;
}
.jimu-primary-loading:before, .jimu-primary-loading:after, .jimu-primary-loading {
background: #076fe5;
-webkit-animation: loading-keys-app-loading 0.8s infinite ease-in-out;
animation: loading-keys-app-loading 0.8s infinite ease-in-out;
width: 13.6px;
height: 32px;
}
.jimu-primary-loading {
text-indent: -9999em;
margin: auto;
position: absolute;
right: calc(50% - 6.8px);
top: calc(50% - 16px);
-webkit-animation-delay: 0.16s !important;
animation-delay: 0.16s !important;
}
@-webkit-keyframes loading-keys-app-loading{0%,80%,100%{opacity:.75;box-shadow:0 0 #076fe5;height:32px;}40%{opacity:1;box-shadow:0 -8px #076fe5;height:40px;}}
@keyframes loading-keys-app-loading{0%,80%,100%{opacity:.75;box-shadow:0 0 #076fe5;height:32px;}40%{opacity:1;box-shadow:0 -8px #076fe5;height:40px;}}</style><div class="loading-content"><div class="justify-content-center jimu-primary-loading"></div></div></div><div id="app"></div><script type="systemjs-importmap">{
"imports": {
"jimu-core": "https://BASE_URL/jimu-core/index.js",
"jimu-core/": "https://BASE_URL/jimu-core/",
"jimu-theme": "https://BASE_URL/jimu-theme/index.js",
"jimu-theme/": "https://BASE_URL/jimu-theme/",
"jimu-ui": "https://BASE_URL/jimu-ui/index.js",
"jimu-ui/": "https://BASE_URL/jimu-ui/",
"jimu-icons/": "https://BASE_URL/jimu-icons/",
"jimu-arcgis": "https://BASE_URL/jimu-arcgis/index.js",
"jimu-arcgis/": "https://BASE_URL/jimu-arcgis/",
"jimu-layouts": "https://BASE_URL/jimu-layouts/index.js",
"jimu-layouts/": "https://BASE_URL/jimu-layouts/",
"jimu-for-builder": "https://BASE_URL/jimu-for-builder/index.js",
"jimu-for-builder/": "https://BASE_URL/jimu-for-builder/",
"widgets/": "https://BASE_URL/widgets/",
"themes/": "https://BASE_URL/themes/",
"builder/": "https://BASE_URL/builder/",
"site/": "https://BASE_URL/site/",
"experience/": "https://BASE_URL/experience/",
"template/": "https://BASE_URL/template/",
"templates/": "https://BASE_URL/templates/",
"arcgis-charts": "https://BASE_URL/arcgis-charts/arcgis-charts.js",
"esri/": "https://API_URL/esri/"
}
}</script><script src="../service-worker-registration.js"></script><script src="../jimu-core/init.js"></script><script>SystemJS = System;
const existingResolveHook = SystemJS.constructor.prototype.resolve;
SystemJS.constructor.prototype.resolve = function (id, parentUrl) {
let resolveUrl = existingResolveHook.apply(this, arguments);
if(/(^http:)|(^https:)|(^\/\/)/.test(id)){
// we don't handle absolute request
return resolveUrl;
}
if(resolveUrl.indexOf('https://BASE_URL/') > -1){
resolveUrl = resolveUrl.replace('https://BASE_URL/', window.location.origin + window.jimuConfig.baseUrl);
}else if(resolveUrl.indexOf('https://API_URL/') > -1){
resolveUrl = resolveUrl.replace('https://API_URL/', window.jimuConfig.arcgisJsApiUrl);
}
if(/\/$/.test(resolveUrl) || /\.css$/.test(resolveUrl) || /\.json$/.test(resolveUrl) || /\.wasm$/.test(resolveUrl)){
return resolveUrl;
}
if(!/\.js$/.test(resolveUrl)){
resolveUrl = resolveUrl + '.js';
}
return resolveUrl;
};
const existingInstantiateHook = SystemJS.constructor.prototype.instantiate;
SystemJS.constructor.prototype.instantiate = function (url, parentUrl) {
// for translated files, still use define function, use a simple define function to load.
if(/translations\/(.+)\.js$/.test(url)){
return window.fetch(url).then(function(res){return res.text();}).then(function(source){
let oldDefine = window.define;
var i18nMessage = {};
window.define = function(o){
i18nMessage = o;
}
scriptExec(source, url);
const reg = [[], function (_export) {
_export({ default: i18nMessage, __useDefault: true });
return {
setters: [],
execute: function () {
_export('default', i18nMessage);
}
};
}]
window.define = oldDefine;
return reg;
});
}
// for css, we load as an link tag
if(/.css$/.test(url)){
return loadCSS(url).then(function(){
const m = function(){};
const reg = [[], function (_export) {
_export({ default: m, __useDefault: true });
return {
setters: [],
execute: function () {
_export('default', m);
}
};
}]
return reg;
})
}
// for API module, we use API module loader
if(url.indexOf(window.jimuConfig.arcgisJsApiUrl) === 0 && url !== window.jimuConfig.arcgisJsApiUrl + 'init.js'){
let amdPath = url.replace(window.jimuConfig.arcgisJsApiUrl, '');
amdPath = amdPath.replace(/\.js$/, '');
return new Promise(function(resolve, reject){
window.require([amdPath], function(m){
const reg = [[], function (_export) {
_export({ default: m, __useDefault: true });
return {
setters: [],
execute: function () {
_export('default', m);
}
};
}]
resolve(reg);
})
});
}
let existingResult = existingInstantiateHook.apply(this, arguments);
return existingResult;
};
function loadCSS(url) {
var waitSeconds = 100;
var head = document.getElementsByTagName('head')[0];
var isWebkit = !!window.navigator.userAgent.match(/AppleWebKit\/([^ ;]*)/);
var webkitLoadCheck = function(link, callback) {
setTimeout(function() {
for (var i = 0; i < document.styleSheets.length; i++) {
var sheet = document.styleSheets[i];
if (sheet.href == link.href)
return callback();
}
webkitLoadCheck(link, callback);
}, 10);
};
var noop = function() {};
return new Promise(function(resolve, reject) {
var timeout = setTimeout(function() {
reject('Unable to load CSS');
}, waitSeconds * 1000);
var _callback = function(error) {
clearTimeout(timeout);
link.onload = link.onerror = noop;
setTimeout(function() {
if (error)
reject(error);
else
resolve('');
}, 7);
};
var link = document.createElement('link');
link.type = 'text/css';
link.rel = 'stylesheet';
link.href = url;
link.setAttribute('data-systemjs-css', '');
if (!isWebkit) {
link.onload = function() {
_callback();
}
} else {
webkitLoadCheck(link, _callback);
}
link.onerror = function(event) {
_callback(event.error || new Error('Error loading CSS file.'));
};
head.appendChild(link);
})
}
// script execution via injecting a script tag into the page
// this allows CSP nonce to be set for CSP environments
function scriptExec(source, address, nonce) {
var head = document.head || document.body || document.documentElement;
var script = document.createElement('script');
script.text = source;
var orgOnerror = window.onerror;
window.onerror = function(err) {
console.error(address, err);
}
if (nonce){
script.setAttribute('nonce', nonce);
}
head.appendChild(script);
head.removeChild(script);
window.onerror = orgOnerror;
}</script><script>window.jimuUA = bowser.parse(window.navigator.userAgent);
if(window.jimuUA.browser.name === 'Internet Explorer'){
window.location.href = mountPath + 'unsupported-browser/index.html';
}else{
SystemJS.import(jimuConfig.appFolderName + '/index.js');
}</script><script></script></body></html>