"use strict";

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

function _react() {
  const data = _interopRequireDefault(require("react"));

  _react = function _react() {
    return data;
  };

  return data;
}

function _path() {
  const data = require("path");

  _path = function _path() {
    return data;
  };

  return data;
}

function _randomColor() {
  const data = _interopRequireDefault(require("random-color"));

  _randomColor = function _randomColor() {
    return data;
  };

  return data;
}

function _assert() {
  const data = _interopRequireDefault(require("assert"));

  _assert = function _assert() {
    return data;
  };

  return data;
}

function _chalk() {
  const data = _interopRequireDefault(require("chalk"));

  _chalk = function _chalk() {
    return data;
  };

  return data;
}

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

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var _default = api => {
  const paths = api.paths,
        config = api.config,
        log = api.log;
  return class Generator extends api.Generator {
    constructor(args, options) {
      super(args, options);

      if (config.routes) {
        log.warn(`You should config the routes in config.routes manunally since ${_chalk().default.red('config.routes')} exists`);
        console.log();
      }
    }

    writing() {
      const jsxExt = this.isTypeScript ? 'tsx' : 'js';
      const cssExt = this.options.less ? 'less' : 'css';
      const context = {
        name: 'index',
        title: `Global Layout`,
        color: (0, _randomColor().default)().hexString(),
        isTypeScript: this.isTypeScript,
        jsxExt,
        cssExt
      };

      if (this.options.global) {
        (0, _assert().default)(!this.args.length, `You don't need to specify the path with --global, e.g. umi g layout --global`);
        this.fs.copyTpl(this.templatePath('layout.js.tpl'), (0, _path().join)(paths.absSrcPath, `layouts`, `index.${jsxExt}`), context);
        this.fs.copyTpl(this.templatePath('layout.css.tpl'), (0, _path().join)(paths.absSrcPath, `layouts`, `index.${cssExt}`), context);
        return;
      }

      const path = this.args[0];
      (0, _assert().default)(typeof path === 'string', `You should specify the path, e.g. umi g layout abc`);
      this.fs.copyTpl(this.templatePath('layout.js.tpl'), (0, _path().join)(paths.absPagesPath, path, `_layout.${jsxExt}`), _objectSpread({}, context, {
        name: '_layout',
        title: `Layout for ${path}`
      }));
      this.fs.copyTpl(this.templatePath('layout.css.tpl'), (0, _path().join)(paths.absPagesPath, path, `_layout.${cssExt}`), context);
    }

  };
};

exports.default = _default;