export function loadExampleCode()

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);
        }
      }
    );
  });
}