"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.defaultApp = exports.initMicroApps = void 0;

var _qiankun = require("qiankun");

var _micor = _interopRequireDefault(require("../config/micor"));

var _package = _interopRequireDefault(require("../package.json"));

var _constants = require("./utils/constants");

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var MICRO_STATUS = {
  NOT_LOADED: "NOT_LOADED",
  LOADING_SOURCE_CODE: "LOADING_SOURCE_CODE",
  NOT_BOOTSTRAPPED: "NOT_BOOTSTRAPPED",
  BOOTSTRAPPING: 'BOOTSTRAPPING',
  NOT_MOUNTED: 'NOT_MOUNTED',
  MOUNTING: 'MOUNTING',
  MOUNTED: 'MOUNTED',
  UPDATING: 'UPDATING',
  UNMOUNTING: 'UNMOUNTING',
  UNLOADING: 'UNLOADING',
  SKIP_BECAUSE_BROKEN: 'SKIP_BECAUSE_BROKEN',
  LOAD_ERROR: 'LOAD_ERROR'
};

var initMicroApps = function initMicroApps(loader) {
  var entrys = process.env.NODE_ENV !== 'production' ? _micor["default"].dev : _micor["default"].prod;
  (0, _qiankun.registerMicroApps)(entrys.map(function (item) {
    item.loader = loader;
    item.props = {
      emitter: window.share.event,
      baseRoot: item.name,
      globalConfig: createStoreage.get('globalConfig'),
      XMLHttpRequest: window.XMLHttpRequest
    };
    return item;
  }), {
    beforeLoad: [function (app) {
      console.log('[LifeCycle] before load %c%s', 'color: green;', app.name);
    }],
    beforeMount: [function (app) {
      // hookRequest()
      // ReactDOM.unmountComponentAtNode(
      //   document.getElementById('subapp-container'),
      // );
      // console.log(
      //   '[LifeCycle] before mount %c%s',
      //   'color: green;',
      //   JSON.stringify(app),
      // );
      // window.share.event.removeAllListeners();
      console.log('[LifeCycle] before mount %c%s', 'color: green;', app.name);
    }],
    afterMount: [function (app) {
      console.log('[LifeCycle] after mount %c%s', 'color: green;', app.name);
    }],
    beforeUnmount: [function (app) {
      window.share.event.removeAllListeners('changeRoute');
      console.log('[LifeCycle] after unmount %c%s', 'color: green;', app.name);
    }],
    afterUnmount: [function (app) {}]
  });

  var _initGlobalState = (0, _qiankun.initGlobalState)({
    globalConfig: createStoreage.get('globalConfig')
  }),
      setGlobalState = _initGlobalState.setGlobalState;

  setGlobalState({
    globalConfig: createStoreage.get('globalConfig')
  });
  (0, _qiankun.start)({
    sandbox: {
      experimentalStyleIsolation: true,
      loose: true
    },
    singular: true,
    scopedCSS: true,
    getPublicPath: window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__,
    excludeAssetFilter: function excludeAssetFilter(url) {
      return url.indexOf('framework/amap/AMap.UI') !== -1 || url.indexOf('framework/amap/init.js') !== -1 || url.indexOf('framework/three.js') !== -1 || url.indexOf('threedimensional/frameworkthree') !== -1 || url.indexOf('iframe/Civ3DLLab/js') !== -1 || url.indexOf('framework/jquery/gridify-min.js') !== -1 || url.indexOf('framework/jquery/gridify.qrcode.js') !== -1 || url.indexOf('echarts') !== -1 || url.indexOf('lbs.amap.com') !== -1 || url.indexOf('restapi.amap.com') !== -1 || url.indexOf('webapi.amap.com') !== -1 || url.indexOf('webapi.amap.com/count') !== -1 || url.indexOf('api.map.baidu.com') !== -1 || url.indexOf('map.baidu.com') !== -1 || url.indexOf('pv.sohu.com') !== -1 || url.indexOf('mt0.google.cn') !== -1 || url.indexOf('mt1.google.cn') !== -1 || url.indexOf('mt2.google.cn') !== -1 || url.indexOf('mt3.google.cn') !== -1 || url.indexOf('hm.baidu.com') !== -1 || url.indexOf('https://maponline0.bdimg.com') !== -1 || url.indexOf('https://maponline1.bdimg.com') !== -1 || url.indexOf('https://maponline2.bdimg.com') !== -1 || url.indexOf('https://maponline3.bdimg.com') !== -1 || url.indexOf('https://api.map.baidu.com/getscript') !== -1;
    }
  });
  (0, _qiankun.runAfterFirstMounted)(function () {
    console.log('[MainApp] first app mounted');
  });
  defaultApp();
  (0, _qiankun.addGlobalUncaughtErrorHandler)(function (event) {
    console.log(event);
    var error = event.error;
    var reson = 'Failed to fetch';

    if (error && error.message.indexOf(MICRO_STATUS.LOADING_SOURCE_CODE) && error.message.indexOf(reson)) {// window.history.pushState({message: '应用服务请求异常，请检查应用配置'}, null, '/civbase/500')
    }
  });
};

exports.initMicroApps = initMicroApps;

var defaultApp = function defaultApp() {
  var config = createStoreage.get('globalConfig');

  if (config && config.token) {
    // const startWith = config.homepage ? config.homepage.split('/') : [];
    var basePath = config.homepage !== "" && _constants.FILTER_FOLER_REG.test(config.homepage) ? 'civweb4' : 'civweb4';
    (0, _qiankun.setDefaultMountApp)("/".concat(_package["default"].name.toLocaleLowerCase(), "/").concat(basePath, "/?client=").concat(config.client));
  }
};

exports.defaultApp = defaultApp;