in src/common/store.js [120:170]
export function loadExampleCode() {
const localCode = loadExampleCodeFromLocal();
if (localCode) {
clearLocalExampleCode();
// for sharing URL
if (localCode.codeModified) {
store.initialCode = CODE_CHANGED_FLAG;
}
return Promise.resolve(localCode.code);
}
return new Promise((resolve, reject) => {
// ignore c if code is provided
let code = URL_PARAMS.code;
if (code) {
try {
// PENDING fallback to `c` if the decompressed code is not available?
// TODO: auto-detect the encoder type?
code =
URL_PARAMS.enc === 'base64'
? decodeBase64(code)
: decompressStr(code);
// not considered as shared code if it's opened by echarts website like echarts-doc
store.isSharedCode = !isTrustedOpener() && !!code;
// clear the opener
window.opener = null;
return code
? resolve(code)
: reject('code was decompressed but got nothing');
} catch (e) {
console.error(e);
return reject('failed to decompress code');
}
}
const glFolder = 'gl' in URL_PARAMS ? 'gl/' : '';
const lang = store.typeCheck ? 'ts' : 'js';
// fallback to line-simple if no c is provided
const c = URL_PARAMS.c || 'line-simple';
$.ajax(
`${store.cdnRoot}/examples/${lang}/${glFolder}${c}.${lang}?_v_${store.version}`,
{
dataType: 'text',
success(data) {
resolve(data);
},
error() {
reject('failed to load example', c);
}
}
);
});
}