import { ref as v, reactive as Ve, defineComponent as P, computed as m, openBlock as f, createElementBlock as x, normalizeClass as _, unref as c, normalizeStyle as L, Fragment as ue, renderSlot as b, createBlock as z, mergeProps as Y, withCtx as w, createTextVNode as ae, toDisplayString as X, createCommentVNode as j, createElementVNode as Z, watch as se, onMounted as Fe, nextTick as G, resolveComponent as de, createVNode as T, useSlots as Xe, getCurrentInstance as Le, inject as Ze, onUnmounted as Qe, h as ye, provide as et, onBeforeUnmount as tt, resolveDynamicComponent as nt, useAttrs as ot, resolveDirective as rt, createSlots as ve, withDirectives as at, renderList as st, normalizeProps as lt, guardReactiveProps as it } from "vue";
import { Button as he, Tooltip as _e, Drawer as ct } from "ant-design-vue";
import { mergeWith as ut, intersectionWith as dt, isEqual as be, unionWith as pt } from "lodash-es";
import "dayjs";
import { InfoCircleOutlined as ft, ArrowLeftOutlined as gt } from "@ant-design/icons-vue";
import mt from "@purge-icons/generated";
import yt from "resize-observer-polyfill";
const ee = "G", vt = Object.prototype.toString;
function pe(e, t) {
  return vt.call(e) === `[object ${t}]`;
}
function ht(e) {
  return pe(e, "Number");
}
function Ae(e) {
  return pe(e, "String");
}
function le(e) {
  return e && Array.isArray(e);
}
function Se(e) {
  return e !== null && pe(e, "Object");
}
function fe(e) {
  return typeof e == "function";
}
function _t(e) {
  return typeof e < "u";
}
function bt(e) {
  return !_t(e);
}
function ie(e, t, n = "replace") {
  return t ? e ? ut({}, e, t, (o, r) => {
    if (le(r) && le(o))
      switch (n) {
        case "union":
          return pt(o, r, be);
        case "intersection":
          return dt(o, r, be);
        case "concat":
          return o.concat(r);
        case "replace":
          return r;
        default:
          throw new Error(
            `Unknown merge array strategy: ${n}`
          );
      }
    if (Se(r) && Se(o))
      return ie(o, r, n);
  }) : t : e;
}
function St(e, t = "default", n, o) {
  if (!e || !Reflect.has(e, t))
    return null;
  if (!fe(e[t]))
    return console.error(`${t} is not a function!`), null;
  const r = e[t];
  if (!r)
    return null;
  const a = {
    ...n,
    ...o
  };
  return r(a);
}
function Te(e, t, n) {
  e && t && n && e.addEventListener(t, n, !1);
}
function we(e, t, n) {
  e && t && n && e.removeEventListener(t, n, !1);
}
for (let e = 0; e <= 15; e++)
  e.toString(16);
/*!
 * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
 *
 * Copyright (c) 2014-2017, Jon Schlinkert.
 * Released under the MIT License.
 */
function $e(e) {
  return Object.prototype.toString.call(e) === "[object Object]";
}
function Tt(e) {
  var t, n;
  return $e(e) === !1 ? !1 : (t = e.constructor, t === void 0 ? !0 : (n = t.prototype, !($e(n) === !1 || n.hasOwnProperty("isPrototypeOf") === !1)));
}
function U() {
  return U = Object.assign ? Object.assign.bind() : function(e) {
    for (var t = 1; t < arguments.length; t++) {
      var n = arguments[t];
      for (var o in n)
        Object.prototype.hasOwnProperty.call(n, o) && (e[o] = n[o]);
    }
    return e;
  }, U.apply(this, arguments);
}
function Ie(e, t) {
  if (e == null)
    return {};
  var n, o, r = {}, a = Object.keys(e);
  for (o = 0; o < a.length; o++)
    t.indexOf(n = a[o]) >= 0 || (r[n] = e[n]);
  return r;
}
const ce = { silent: !1, logLevel: "warn" }, wt = ["validator"], Me = Object.prototype, Ee = Me.toString, $t = Me.hasOwnProperty, Re = /^\s*function (\w+)/;
function Oe(e) {
  var t;
  const n = (t = e == null ? void 0 : e.type) !== null && t !== void 0 ? t : e;
  if (n) {
    const o = n.toString().match(Re);
    return o ? o[1] : "";
  }
  return "";
}
const B = Tt, He = (e) => e;
let y = He;
process.env.NODE_ENV !== "production" && (y = typeof console < "u" ? function(t, n = ce.logLevel) {
  ce.silent === !1 && console[n](`[VueTypes warn]: ${t}`);
} : He);
const A = (e, t) => $t.call(e, t), Ot = Number.isInteger || function(e) {
  return typeof e == "number" && isFinite(e) && Math.floor(e) === e;
}, I = Array.isArray || function(e) {
  return Ee.call(e) === "[object Array]";
}, M = (e) => Ee.call(e) === "[object Function]", Q = (e) => B(e) && A(e, "_vueTypes_name"), We = (e) => B(e) && (A(e, "type") || ["_vueTypes_name", "validator", "default", "required"].some((t) => A(e, t)));
function ge(e, t) {
  return Object.defineProperty(e.bind(t), "__original", { value: e });
}
function C(e, t, n = !1) {
  let o, r = !0, a = "";
  o = B(e) ? e : { type: e };
  const i = Q(o) ? o._vueTypes_name + " - " : "";
  if (We(o) && o.type !== null) {
    if (o.type === void 0 || o.type === !0 || !o.required && t === void 0)
      return r;
    I(o.type) ? (r = o.type.some((l) => C(l, t, !0) === !0), a = o.type.map((l) => Oe(l)).join(" or ")) : (a = Oe(o), r = a === "Array" ? I(t) : a === "Object" ? B(t) : a === "String" || a === "Number" || a === "Boolean" || a === "Function" ? function(l) {
      if (l == null)
        return "";
      const s = l.constructor.toString().match(Re);
      return s ? s[1] : "";
    }(t) === a : t instanceof o.type);
  }
  if (!r) {
    const l = `${i}value "${t}" should be of type "${a}"`;
    return n === !1 ? (y(l), !1) : l;
  }
  if (A(o, "validator") && M(o.validator)) {
    const l = y, s = [];
    if (y = (u) => {
      s.push(u);
    }, r = o.validator(t), y = l, !r) {
      const u = (s.length > 1 ? "* " : "") + s.join(`
* `);
      return s.length = 0, n === !1 ? (y(u), r) : u;
    }
  }
  return r;
}
function S(e, t) {
  const n = Object.defineProperties(t, { _vueTypes_name: { value: e, writable: !0 }, isRequired: { get() {
    return this.required = !0, this;
  } }, def: { value(r) {
    return r === void 0 ? (A(this, "default") && delete this.default, this) : M(r) || C(this, r, !0) === !0 ? (this.default = I(r) ? () => [...r] : B(r) ? () => Object.assign({}, r) : r, this) : (y(`${this._vueTypes_name} - invalid default value: "${r}"`), this);
  } } }), { validator: o } = n;
  return M(o) && (n.validator = ge(o, n)), n;
}
function k(e, t) {
  const n = S(e, t);
  return Object.defineProperty(n, "validate", { value(o) {
    return M(this.validator) && y(`${this._vueTypes_name} - calling .validate() will overwrite the current custom validator function. Validator info:
${JSON.stringify(this)}`), this.validator = ge(o, this), this;
  } });
}
function xe(e, t, n) {
  const o = function(s) {
    const u = {};
    return Object.getOwnPropertyNames(s).forEach((p) => {
      u[p] = Object.getOwnPropertyDescriptor(s, p);
    }), Object.defineProperties({}, u);
  }(t);
  if (o._vueTypes_name = e, !B(n))
    return o;
  const { validator: r } = n, a = Ie(n, wt);
  if (M(r)) {
    let { validator: s } = o;
    s && (s = (l = (i = s).__original) !== null && l !== void 0 ? l : i), o.validator = ge(s ? function(u) {
      return s.call(this, u) && r.call(this, u);
    } : r, o);
  }
  var i, l;
  return Object.assign(o, a);
}
function te(e) {
  return e.replace(/^(?!\s*$)/gm, "  ");
}
const xt = () => k("any", {}), kt = () => k("function", { type: Function }), Pt = () => k("boolean", { type: Boolean }), zt = () => k("string", { type: String }), jt = () => k("number", { type: Number }), Bt = () => k("array", { type: Array }), Ct = () => k("object", { type: Object }), Dt = () => S("integer", { type: Number, validator: (e) => Ot(e) }), Nt = () => S("symbol", { validator: (e) => typeof e == "symbol" });
function Ft(e, t = "custom validation failed") {
  if (typeof e != "function")
    throw new TypeError("[VueTypes error]: You must provide a function as argument");
  return S(e.name || "<<anonymous function>>", { type: null, validator(n) {
    const o = e(n);
    return o || y(`${this._vueTypes_name} - ${t}`), o;
  } });
}
function Lt(e) {
  if (!I(e))
    throw new TypeError("[VueTypes error]: You must provide an array as argument.");
  const t = `oneOf - value should be one of "${e.join('", "')}".`, n = e.reduce((o, r) => {
    if (r != null) {
      const a = r.constructor;
      o.indexOf(a) === -1 && o.push(a);
    }
    return o;
  }, []);
  return S("oneOf", { type: n.length > 0 ? n : void 0, validator(o) {
    const r = e.indexOf(o) !== -1;
    return r || y(t), r;
  } });
}
function At(e) {
  if (!I(e))
    throw new TypeError("[VueTypes error]: You must provide an array as argument");
  let t = !1, n = [];
  for (let r = 0; r < e.length; r += 1) {
    const a = e[r];
    if (We(a)) {
      if (Q(a) && a._vueTypes_name === "oneOf" && a.type) {
        n = n.concat(a.type);
        continue;
      }
      if (M(a.validator) && (t = !0), a.type === !0 || !a.type) {
        y('oneOfType - invalid usage of "true" or "null" as types.');
        continue;
      }
      n = n.concat(a.type);
    } else
      n.push(a);
  }
  n = n.filter((r, a) => n.indexOf(r) === a);
  const o = n.length > 0 ? n : null;
  return S("oneOfType", t ? { type: o, validator(r) {
    const a = [], i = e.some((l) => {
      const s = C(Q(l) && l._vueTypes_name === "oneOf" ? l.type || null : l, r, !0);
      return typeof s == "string" && a.push(s), s === !0;
    });
    return i || y(`oneOfType - provided value does not match any of the ${a.length} passed-in validators:
${te(a.join(`
`))}`), i;
  } } : { type: o });
}
function It(e) {
  return S("arrayOf", { type: Array, validator(t) {
    let n = "";
    const o = t.every((r) => (n = C(e, r, !0), n === !0));
    return o || y(`arrayOf - value validation error:
${te(n)}`), o;
  } });
}
function Mt(e) {
  return S("instanceOf", { type: e });
}
function Et(e) {
  return S("objectOf", { type: Object, validator(t) {
    let n = "";
    const o = Object.keys(t).every((r) => (n = C(e, t[r], !0), n === !0));
    return o || y(`objectOf - value validation error:
${te(n)}`), o;
  } });
}
function Rt(e) {
  const t = Object.keys(e), n = t.filter((r) => {
    var a;
    return !((a = e[r]) === null || a === void 0 || !a.required);
  }), o = S("shape", { type: Object, validator(r) {
    if (!B(r))
      return !1;
    const a = Object.keys(r);
    if (n.length > 0 && n.some((i) => a.indexOf(i) === -1)) {
      const i = n.filter((l) => a.indexOf(l) === -1);
      return y(i.length === 1 ? `shape - required property "${i[0]}" is not defined.` : `shape - required properties "${i.join('", "')}" are not defined.`), !1;
    }
    return a.every((i) => {
      if (t.indexOf(i) === -1)
        return this._vueTypes_isLoose === !0 || (y(`shape - shape definition does not include a "${i}" property. Allowed keys: "${t.join('", "')}".`), !1);
      const l = C(e[i], r[i], !0);
      return typeof l == "string" && y(`shape - "${i}" property validation error:
 ${te(l)}`), l === !0;
    });
  } });
  return Object.defineProperty(o, "_vueTypes_isLoose", { writable: !0, value: !1 }), Object.defineProperty(o, "loose", { get() {
    return this._vueTypes_isLoose = !0, this;
  } }), o;
}
const Ht = ["name", "validate", "getter"], Wt = /* @__PURE__ */ (() => {
  var e;
  return (e = class {
    static get any() {
      return xt();
    }
    static get func() {
      return kt().def(this.defaults.func);
    }
    static get bool() {
      return Pt().def(this.defaults.bool);
    }
    static get string() {
      return zt().def(this.defaults.string);
    }
    static get number() {
      return jt().def(this.defaults.number);
    }
    static get array() {
      return Bt().def(this.defaults.array);
    }
    static get object() {
      return Ct().def(this.defaults.object);
    }
    static get integer() {
      return Dt().def(this.defaults.integer);
    }
    static get symbol() {
      return Nt();
    }
    static get nullable() {
      return { type: null };
    }
    static extend(t) {
      if (I(t))
        return t.forEach((s) => this.extend(s)), this;
      const { name: n, validate: o = !1, getter: r = !1 } = t, a = Ie(t, Ht);
      if (A(this, n))
        throw new TypeError(`[VueTypes error]: Type "${n}" already defined`);
      const { type: i } = a;
      if (Q(i))
        return delete a.type, Object.defineProperty(this, n, r ? { get: () => xe(n, i, a) } : { value(...s) {
          const u = xe(n, i, a);
          return u.validator && (u.validator = u.validator.bind(u, ...s)), u;
        } });
      let l;
      return l = r ? { get() {
        const s = Object.assign({}, a);
        return o ? k(n, s) : S(n, s);
      }, enumerable: !0 } : { value(...s) {
        const u = Object.assign({}, a);
        let p;
        return p = o ? k(n, u) : S(n, u), u.validator && (p.validator = u.validator.bind(p, ...s)), p;
      }, enumerable: !0 }, Object.defineProperty(this, n, l);
    }
  }).defaults = {}, e.sensibleDefaults = void 0, e.config = ce, e.custom = Ft, e.oneOf = Lt, e.instanceOf = Mt, e.oneOfType = At, e.arrayOf = It, e.objectOf = Et, e.shape = Rt, e.utils = { validate: (t, n) => C(n, t, !0) === !0, toType: (t, n, o = !1) => o ? k(t, n) : S(t, n) }, e;
})();
function Ue(e = { func: () => {
}, bool: !0, string: "", number: 0, array: () => [], object: () => ({}), integer: 0 }) {
  var t;
  return (t = class extends Wt {
    static get sensibleDefaults() {
      return U({}, this.defaults);
    }
    static set sensibleDefaults(n) {
      this.defaults = n !== !1 ? U({}, n !== !0 ? n : e) : {};
    }
  }).defaults = U({}, e), t;
}
class An extends Ue() {
}
const Ut = Ue({
  func: void 0,
  bool: void 0,
  string: void 0,
  number: void 0,
  object: void 0,
  integer: void 0
});
Ut.extend([
  {
    name: "style",
    getter: !0,
    type: [String, Object],
    default: void 0
  },
  {
    name: "VNodeChild",
    getter: !0,
    type: void 0
  }
]);
const ke = "g";
function J(e, t, n) {
  let o = e;
  return t && (o += `__${t}`), n && (o += `--${n}`), o;
}
function E(e, t = !1) {
  const n = t ? `.${ke}-${e}` : `${ke}-${e}`;
  return {
    b: () => J(n),
    e: (l) => l ? J(n, l) : "",
    m: (l) => l ? J(n, "", l) : "",
    em: (l, s) => l && s ? J(n, l, s) : ""
  };
}
const qt = {
  pagination: {
    totalItemText: "Total",
    goToText: "Go to"
  },
  accordion: {
    loading: "loading",
    noData: "No Data"
  },
  autoCompleteDropdown: {
    latestInput: "Latest input"
  },
  cascaderList: {
    noData: "No data"
  },
  colorPicker: {
    foundationPanel: "Foundation panel",
    advancedPanel: "Advanced panel"
  },
  datePickerPro: {
    ok: "OK",
    placeholder: "select date",
    month1: "Jan",
    month2: "Feb",
    month3: "Mar",
    month4: "Apr",
    month5: "May",
    month6: "June",
    month7: "July",
    month8: "Aug",
    month9: "Sep",
    month10: "Oct",
    month11: "Nov",
    month12: "Dec",
    year: "年",
    startPlaceholder: "select start date",
    endPlaceholder: "select end date",
    getWeekDays() {
      return ["Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat"];
    },
    getTimeArr() {
      return ["Hr", "Min", "Sec"];
    },
    getYearMonthStr(e, t) {
      return `${e} - ${t}`;
    }
  },
  editableSelect: {
    noRelatedRecords: "No related records found",
    noData: "No data"
  },
  input: {
    placeholder: "Please enter"
  },
  splitterBar: {
    collapse: "Collapse",
    expand: "Expand"
  },
  stepsGuide: {
    previous: "Previous",
    continue: "Continue",
    ok: "OK"
  },
  table: {
    selectAll: "Select all",
    ok: "OK"
  },
  timePopup: {
    ok: "OK"
  },
  transfer: {
    unit: "",
    panelUnit: "",
    headerUnit: "",
    noData: "No Data",
    placeholder: "Please enter keywords"
  },
  tree: {
    loading: "Loading",
    newNode: "New node",
    selectPlaceholder: "Please select"
  },
  upload: {
    save: "Save",
    upload: "Upload",
    imgUpload: "ImageUpload",
    uploaded: "Uploaded",
    operating: "Operating",
    del: "Delete",
    download: "download",
    saveWarn: "Please wait for the file to upload and save!",
    saveError: "There is no file successfully uploaded and cannot be saved!",
    preview: "Preview",
    choose: "Select the file",
    accept: "Support {0} format",
    acceptUpload: "Only upload files in {0} format",
    maxSize: "A single file does not exceed {0}MB ",
    maxSizeMultiple: "Only upload files up to {0}MB!",
    maxNumber: "Only upload up to {0} files",
    legend: "Legend",
    fileName: "File name",
    fileSize: "File size",
    fileStatue: "File status",
    startUpload: "Start upload",
    uploadSuccess: "Upload successfully",
    uploadError: "Upload failed",
    uploading: "Uploading",
    uploadWait: "Please wait for the file upload to finish",
    reUploadFailed: "Re-upload failed files",
    noFile: "The file does not exist!"
  },
  search: {
    placeholder: "Enter a keyword"
  },
  select: {
    placeholder: "Please select",
    noDataText: "No data",
    noMatchText: "No related records found",
    loadingText: "Loading..."
  },
  tagInput: {
    maxTagsText: "Maximum number reached: "
  },
  timeSelect: {
    placeholder: "Please select time"
  },
  modal: {
    cancelText: "Close",
    okText: "Confirm",
    close: "Close",
    maximize: "Maximize",
    restore: "Restore"
  },
  excel: {
    exportModalTitle: "Export data",
    fileType: "File type",
    fileName: "File name"
  },
  form: {
    putAway: "Put away",
    unfold: "Unfold",
    maxTip: "The number of characters should be less than {0}",
    apiSelectNotFound: "Wait for data loading to complete..."
  },
  previewFile: {
    notSupport: "The file does not support preview",
    download: "download"
  },
  signature: {
    deleteSelectedSignature: "Delete selected signature",
    deleteAllSignature: "Delete all signatures",
    page: "page",
    jumpTo: "jump to",
    dragTip: "Please select the following signature and drag it to the left file",
    selectTip: "Please select the signature",
    smallTip: "The signature can't be any smaller",
    deleteTip: "Please select the signature you want to delete",
    addSignature: "Add Signature"
  },
  common: {
    preview: "Preview",
    download: "Download",
    okText: "OK",
    closeText: "Close",
    cancelText: "Cancel",
    loadingText: "Loading...",
    saveText: "Save",
    submitText: "Submit",
    delText: "Delete",
    resetText: "Reset",
    searchText: "Search",
    queryText: "Search",
    inputText: "Please enter",
    chooseText: "Please choose",
    redo: "Refresh",
    back: "Back",
    light: "Light",
    dark: "Dark",
    zoomIn: "Zoom In",
    zoomOut: "Zoom Out",
    reset: "reset",
    enterFullScreen: "Full Screen",
    exitFullScreen: "Exit Full Screen"
  }
}, Yt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: qt
}, Symbol.toStringTag, { value: "Module" })), Gt = {
  pagination: {
    totalItemText: "所有条目",
    goToText: "跳至",
    perPage: "条/页"
  },
  accordion: {
    loading: "加载中",
    noData: "没有数据"
  },
  autoCompleteDropdown: {
    latestInput: "最近输入"
  },
  cascaderList: {
    noData: "没有数据"
  },
  colorPicker: {
    foundationPanel: "基础面板",
    advancedPanel: "高级面板"
  },
  datePickerPro: {
    ok: "确定",
    placeholder: "请选择日期",
    month1: "1月",
    month2: "2月",
    month3: "3月",
    month4: "4月",
    month5: "5月",
    month6: "6月",
    month7: "7月",
    month8: "8月",
    month9: "9月",
    month10: "10月",
    month11: "11月",
    month12: "12月",
    year: "年",
    startPlaceholder: "请选择开始日期",
    endPlaceholder: "请选择结束日期",
    getWeekDays() {
      return ["日", "一", "二", "三", "四", "五", "六"];
    },
    getTimeArr() {
      return ["时", "分", "秒"];
    },
    getYearMonthStr(e, t) {
      return `${e}年${t}月`;
    }
  },
  editableSelect: {
    noRelatedRecords: "找不到相关记录",
    noData: "没有数据"
  },
  input: {
    placeholder: "请输入"
  },
  splitterBar: {
    collapse: "收起",
    expand: "展开"
  },
  stepsGuide: {
    previous: "上一步",
    continue: "我知道啦，继续",
    ok: "我知道啦"
  },
  table: {
    selectAll: "全选",
    ok: "确定"
  },
  timePopup: {
    ok: "确定"
  },
  transfer: {
    unit: "项",
    panelUnit: "项",
    headerUnit: "项",
    noData: "暂无数据",
    placeholder: "请输入关键词搜索"
  },
  tree: {
    loading: "加载中",
    newNode: "新节点",
    selectPlaceholder: "请选择"
  },
  upload: {
    save: "保存",
    upload: "上传",
    imgUpload: "图片上传",
    uploaded: "已上传",
    operating: "操作",
    del: "删除",
    download: "下载",
    saveWarn: "请等待文件上传后，保存!",
    saveError: "没有上传成功的文件，无法保存!",
    preview: "预览",
    choose: "选择文件",
    accept: "支持{0}格式",
    acceptUpload: "只能上传{0}格式文件",
    maxSize: "单个文件不超过{0}MB",
    maxSizeMultiple: "只能上传不超过{0}MB的文件!",
    maxNumber: "最多只能上传{0}个文件",
    legend: "略缩图",
    fileName: "文件名",
    fileSize: "文件大小",
    fileStatue: "状态",
    startUpload: "开始上传",
    uploadSuccess: "上传成功",
    uploadError: "上传失败",
    uploading: "上传中",
    uploadWait: "请等待文件上传结束后操作",
    reUploadFailed: "重新上传失败文件",
    import: "导入",
    startImport: "开始导入",
    importing: "导入中",
    reImportFailed: "重新导入失败文件",
    noFile: "文件不存在！"
  },
  search: {
    placeholder: "请输入关键字"
  },
  select: {
    placeholder: "请选择",
    noDataText: "无数据",
    noMatchText: "找不到相关记录",
    loadingText: "加载中..."
  },
  tagInput: {
    maxTagsText: "已达到最大个数："
  },
  timeSelect: {
    placeholder: "请选择时间"
  },
  modal: {
    cancelText: "关闭",
    okText: "确认",
    close: "关闭",
    maximize: "最大化",
    restore: "还原"
  },
  excel: {
    exportModalTitle: "导出数据",
    fileType: "文件类型",
    fileName: "文件名"
  },
  form: {
    putAway: "收起",
    unfold: "展开",
    maxTip: "字符数应小于{0}位",
    apiSelectNotFound: "请等待数据加载完成..."
  },
  previewFile: {
    notSupport: "该文件不支持预览",
    download: "下载"
  },
  signature: {
    deleteSelectedSignature: "删除选中签名",
    deleteAllSignature: "删除全部签名",
    page: "页",
    jumpTo: "跳至",
    dragTip: "请选择以下签名并将其拖到左侧文件",
    selectTip: "请选择签名",
    smallTip: "已经最小了",
    deleteTip: "请选中你要删除的签名",
    addSignature: "新建电子签章"
  },
  common: {
    preview: "预览",
    download: "下载",
    okText: "确认",
    closeText: "关闭",
    cancelText: "取消",
    loadingText: "加载中...",
    saveText: "保存",
    submitText: "提交",
    delText: "删除",
    resetText: "重置",
    searchText: "搜索",
    queryText: "查询",
    inputText: "请输入",
    chooseText: "请选择",
    redo: "刷新",
    back: "返回",
    light: "亮色主题",
    dark: "黑暗主题",
    zoomIn: "放大",
    zoomOut: "缩小",
    reset: "还原",
    enterFullScreen: "全屏",
    exitFullScreen: "退出全屏"
  }
}, Kt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: Gt
}, Symbol.toStringTag, { value: "Module" })), Pe = /* @__PURE__ */ Object.assign({ "./lang/en.ts": Yt, "./lang/zh_cn.ts": Kt }), qe = {};
Object.keys(Pe).forEach((e) => {
  const t = Pe[e].default || {};
  qe[e] = t;
});
const ze = v("zh_cn"), Jt = () => {
  const e = Ve({
    langMessages: qe
  }), t = () => ze.value.toLocaleLowerCase();
  return {
    getLang: t,
    setLang: (r) => {
      ze.value = r;
    },
    getMessages: () => {
      const r = `./lang/${t()}.ts`;
      return e.langMessages[r];
    }
  };
};
function Vt(e, t) {
  const n = t.split(".");
  let o = e;
  return n.forEach((r) => {
    o = o[r] ?? "";
  }), o;
}
function Ye() {
  return (e) => {
    const t = Jt().getMessages();
    return Vt(t, e);
  };
}
const je = Ye(), Ge = {
  confirmLoading: { type: Boolean },
  /**
   * @description: Show close button
   */
  showCancelBtn: { type: Boolean, default: !0 },
  cancelButtonProps: Object,
  cancelText: { type: String, default: je("modal.cancelText") },
  /**
   * @description: Show confirmation button
   */
  showOkBtn: { type: Boolean, default: !0 },
  okButtonProps: Object,
  okText: { type: String, default: je("modal.okText") },
  okType: { type: String, default: "primary" },
  showFooter: { type: Boolean },
  footerHeight: {
    type: [String, Number],
    default: 60
  }
}, Xt = {
  isDetail: { type: Boolean },
  title: { type: String, default: "" },
  loadingText: { type: String },
  showDetailBack: { type: Boolean, default: !0 },
  open: { type: Boolean },
  loading: { type: Boolean },
  maskClosable: { type: Boolean, default: !0 },
  getContainer: {
    type: [Object, String]
  },
  closeFunc: {
    type: [Function, Object],
    default: null
  },
  destroyOnClose: { type: Boolean },
  ...Ge
}, Zt = {
  name: "BasicDrawerFooter"
}, Qt = /* @__PURE__ */ P({
  ...Zt,
  props: {
    ...Ge,
    height: {
      type: String,
      default: "60px"
    }
  },
  emits: ["ok", "close"],
  setup(e, { emit: t }) {
    const n = e, o = t, r = E("basic-drawer-footer").b(), a = m(() => {
      const s = `${n.height}`;
      return {
        height: s,
        lineHeight: `calc(${s} - 1px)`
      };
    });
    function i() {
      o("ok");
    }
    function l() {
      o("close");
    }
    return (s, u) => s.showFooter || s.$slots.footer ? (f(), x("div", {
      key: 0,
      class: _(c(r)),
      style: L(a.value)
    }, [
      s.$slots.footer ? b(s.$slots, "footer", { key: 1 }) : (f(), x(ue, { key: 0 }, [
        b(s.$slots, "insertFooter"),
        s.showCancelBtn ? (f(), z(c(he), Y({ key: 0 }, s.cancelButtonProps, {
          onClick: l,
          class: "mr-2"
        }), {
          default: w(() => [
            ae(X(s.cancelText), 1)
          ]),
          _: 1
        }, 16)) : j("", !0),
        b(s.$slots, "centerFooter"),
        s.showOkBtn ? (f(), z(c(he), Y({
          key: 1,
          type: s.okType,
          onClick: i
        }, s.okButtonProps, {
          class: "mr-2",
          loading: s.confirmLoading
        }), {
          default: w(() => [
            ae(X(s.okText), 1)
          ]),
          _: 1
        }, 16, ["type", "loading"])) : j("", !0),
        b(s.$slots, "appendFooter")
      ], 64))
    ], 6)) : j("", !0);
  }
});
const en = P({
  name: `${ee}SvgIcon`,
  props: {
    prefix: {
      type: String,
      default: "icon"
    },
    name: {
      type: String,
      required: !0
    },
    size: {
      type: [Number, String],
      default: 16
    },
    spin: {
      type: Boolean,
      default: !1
    }
  },
  setup(e) {
    const n = E("svg-icon").b(), o = m(() => `#${e.prefix}-${e.name}`), r = m(() => {
      const { size: a } = e;
      let i = `${a}`;
      return i = `${i.replace("px", "")}px`, {
        width: i,
        height: i
      };
    });
    return { symbolId: o, prefixCls: n, getStyle: r };
  }
});
const ne = (e, t) => {
  const n = e.__vccOpts || e;
  for (const [o, r] of t)
    n[o] = r;
  return n;
}, tn = ["xlink:href"];
function nn(e, t, n, o, r, a) {
  return f(), x("svg", {
    class: _([e.prefixCls, e.$attrs.class, e.spin && "svg-icon-spin"]),
    style: L(e.getStyle),
    "aria-hidden": "true"
  }, [
    Z("use", { "xlink:href": e.symbolId }, null, 8, tn)
  ], 6);
}
const on = /* @__PURE__ */ ne(en, [["render", nn]]), Be = "|svg", rn = P({
  name: `${ee}Icon`,
  components: { SvgIcon: on },
  props: {
    // icon name
    icon: String,
    // icon color
    color: String,
    // icon size
    size: {
      type: [String, Number],
      default: 16
    },
    spin: {
      type: Boolean,
      default: !1
    },
    prefix: {
      type: String,
      default: ""
    }
  },
  setup(e) {
    const t = v(null), n = m(() => {
      var l;
      return (l = e.icon) == null ? void 0 : l.endsWith(Be);
    }), o = m(
      () => e.icon.replace(Be, "")
    ), r = m(
      () => `${e.prefix ? e.prefix + ":" : ""}${e.icon}`
    ), a = async () => {
      if (c(n))
        return;
      const l = c(t);
      if (!l)
        return;
      await G();
      const s = c(r);
      if (!s)
        return;
      const u = mt.renderSVG(s, {});
      if (u)
        l.textContent = "", l.appendChild(u);
      else {
        const p = document.createElement("span");
        p.className = "iconify", p.dataset.icon = s, l.textContent = "", l.appendChild(p);
      }
    }, i = m(() => {
      const { size: l, color: s } = e;
      let u = l;
      return Ae(l) && (u = parseInt(l, 10)), {
        fontSize: `${u}px`,
        color: s,
        display: "inline-flex"
      };
    });
    return se(() => e.icon, a, { flush: "post" }), Fe(a), { elRef: t, getWrapStyle: i, isSvgIcon: n, getSvgIcon: o };
  }
});
function an(e, t, n, o, r, a) {
  const i = de("SvgIcon");
  return e.isSvgIcon ? (f(), z(i, {
    key: 0,
    size: e.size,
    name: e.getSvgIcon,
    class: _([e.$attrs.class, "anticon"]),
    spin: e.spin
  }, null, 8, ["size", "name", "class", "spin"])) : (f(), x("span", {
    key: 1,
    ref: "elRef",
    class: _([e.$attrs.class, "app-iconify anticon", e.spin && "app-iconify-spin"]),
    style: L(e.getWrapStyle)
  }, null, 6));
}
const re = /* @__PURE__ */ ne(rn, [["render", an]]);
re.install = function(e, t) {
  e.component(t || re.name, re);
};
const sn = {
  /**
   * Help text max-width
   * @default: 600px
   */
  maxWidth: {
    type: String,
    default: "600px"
  },
  /**
   * Whether to display the serial number
   * @default: false
   */
  showIndex: {
    type: Boolean
  },
  /**
   * Help text font color
   * @default: #ffffff
   */
  color: {
    type: String,
    default: "#ffffff"
  },
  /**
   * Help text font size
   * @default: 14px
   */
  fontSize: {
    type: String,
    default: "14px"
  },
  /**
   * Help text list
   */
  placement: {
    type: String,
    default: "right"
  },
  /**
   * Help text list
   */
  text: {
    type: [Array, String]
  }
}, ln = /* @__PURE__ */ P({
  name: "BasicHelp",
  components: {
    Tooltip: _e
  },
  props: sn,
  setup(e, {
    slots: t
  }) {
    const o = E("basic-help").b(), r = m(() => ({
      color: e.color,
      fontSize: e.fontSize
    })), a = m(() => ({
      maxWidth: e.maxWidth
    }));
    function i() {
      const s = e.text;
      return Ae(s) ? T("p", null, [s]) : le(s) ? s.map((u, p) => T("p", {
        key: u
      }, [T(ue, null, [e.showIndex ? `${p + 1}. ` : "", u])])) : null;
    }
    function l(s) {
      return (s == null ? void 0 : s.parentNode) ?? document.body;
    }
    return () => T(_e, {
      overlayClassName: `${o}__wrap`,
      title: T("div", {
        style: c(r)
      }, [i()]),
      autoAdjustOverflow: !0,
      overlayStyle: c(a),
      placement: e.placement,
      getPopupContainer: () => l()
    }, {
      default: () => [T("span", {
        class: o
      }, [St(t) || T(ft, null, null)])]
    });
  }
});
const cn = /* @__PURE__ */ P({
  __name: "BasicTitle",
  props: {
    /**
     * Help text list or string
     * @default: ''
     */
    helpMessage: {
      type: [String, Array],
      default: ""
    },
    /**
     * Whether the color block on the left side of the title
     * @default: false
     */
    span: { type: Boolean },
    /**
     * Whether to default the text, that is, not bold
     * @default: false
     */
    normal: { type: Boolean }
  },
  setup(e) {
    const t = E("basic-title"), n = e, o = t.b(), r = Xe(), a = m(() => [
      o,
      { [`${o}-show-span`]: n.span && r.default },
      { [`${o}-normal`]: n.normal }
    ]);
    return (i, l) => (f(), x("span", {
      class: _(a.value)
    }, [
      b(i.$slots, "default"),
      e.helpMessage ? (f(), z(ln, {
        key: 0,
        class: _(`${c(o)}-help`),
        text: e.helpMessage
      }, null, 8, ["class", "text"])) : j("", !0)
    ], 2));
  }
});
const un = { key: 1 }, dn = {
  name: "BasicDrawerHeader"
}, pn = /* @__PURE__ */ P({
  ...dn,
  props: {
    isDetail: Boolean,
    showDetailBack: Boolean,
    title: String
  },
  emits: ["close"],
  setup(e, { emit: t }) {
    const n = t, o = E("basic-drawer-header").b();
    function r() {
      n("close");
    }
    return (a, i) => e.isDetail ? (f(), x("div", {
      key: 1,
      class: _([c(o), `${c(o)}--detail`])
    }, [
      Z("span", {
        class: _(`${c(o)}__twrap`)
      }, [
        e.showDetailBack ? (f(), x("span", {
          key: 0,
          onClick: r
        }, [
          T(c(gt), {
            class: _(`${c(o)}__back`)
          }, null, 8, ["class"])
        ])) : j("", !0),
        e.title ? (f(), x("span", un, X(e.title), 1)) : j("", !0)
      ], 2),
      Z("span", {
        class: _(`${c(o)}__toolbar`)
      }, [
        b(a.$slots, "titleToolbar")
      ], 2)
    ], 2)) : (f(), z(c(cn), {
      key: 0,
      class: _(c(o))
    }, {
      default: w(() => [
        b(a.$slots, "title"),
        ae(" " + X(a.$slots.title ? "" : e.title), 1)
      ]),
      _: 3
    }, 8, ["class"]));
  }
});
const fn = typeof window > "u";
function gn(e) {
  for (const t of e) {
    const n = t.target.__resizeListeners__ || [];
    n.length && n.forEach((o) => {
      o();
    });
  }
}
function Ce(e, t) {
  fn || (e.__resizeListeners__ || (e.__resizeListeners__ = [], e.__ro__ = new yt(gn), e.__ro__.observe(e)), e.__resizeListeners__.push(t));
}
function De(e, t) {
  !e || !e.__resizeListeners__ || (e.__resizeListeners__.splice(
    e.__resizeListeners__.indexOf(t),
    1
  ), e.__resizeListeners__.length || e.__ro__.disconnect());
}
const mn = {
  vertical: {
    offset: "offsetHeight",
    scroll: "scrollTop",
    scrollSize: "scrollHeight",
    size: "height",
    key: "vertical",
    axis: "Y",
    client: "clientY",
    direction: "top"
  },
  horizontal: {
    offset: "offsetWidth",
    scroll: "scrollLeft",
    scrollSize: "scrollWidth",
    size: "width",
    key: "horizontal",
    axis: "X",
    client: "clientX",
    direction: "left"
  }
};
function yn({ move: e, size: t, bar: n }) {
  const o = {}, r = `translate${n.axis}(${e}%)`;
  return o[n.size] = t, o.transform = r, o.msTransform = r, o.webkitTransform = r, o;
}
function vn(e, t) {
  return Object.assign(e, t);
}
function hn(e) {
  const t = {};
  for (let n = 0; n < e.length; n++)
    e[n] && vn(t, e[n]);
  return t;
}
const _n = P({
  name: "Bar",
  props: {
    vertical: Boolean,
    size: String,
    move: Number
  },
  setup(e) {
    const t = Le(), n = v(), o = Ze(
      "scroll-bar-wrap",
      {}
    ), r = m(() => mn[e.vertical ? "vertical" : "horizontal"]), a = v({}), i = v(), l = (g) => {
      var K, F;
      if (i.value === !1)
        return;
      const h = a.value[r.value.axis];
      if (!h)
        return;
      const R = (((K = t == null ? void 0 : t.vnode.el) == null ? void 0 : K.getBoundingClientRect()[r.value.direction]) - g[r.value.client]) * -1, D = n.value[r.value.offset] - h, N = (R - D) * 100 / ((F = t == null ? void 0 : t.vnode.el) == null ? void 0 : F[r.value.offset]);
      o.value[r.value.scroll] = N * o.value[r.value.scrollSize] / 100;
    };
    function s() {
      i.value = !1, a.value[r.value.axis] = 0, we(document, "mousemove", l), document.onselectstart = null;
    }
    const u = (g) => {
      g.stopImmediatePropagation(), i.value = !0, Te(document, "mousemove", l), Te(document, "mouseup", s), document.onselectstart = () => !1;
    }, p = (g) => {
      var h;
      g.ctrlKey || g.button === 2 || ((h = window.getSelection()) == null || h.removeAllRanges(), u(g), a.value[r.value.axis] = g.currentTarget[r.value.offset] - (g[r.value.client] - g.currentTarget.getBoundingClientRect()[r.value.direction]));
    }, $ = (g) => {
      var N;
      const h = Math.abs(
        g.target.getBoundingClientRect()[r.value.direction] - g[r.value.client]
      ), R = n.value[r.value.offset] / 2, D = (h - R) * 100 / ((N = t == null ? void 0 : t.vnode.el) == null ? void 0 : N[r.value.offset]);
      o.value[r.value.scroll] = D * o.value[r.value.scrollSize] / 100;
    };
    return Qe(() => {
      we(document, "mouseup", s);
    }), () => ye(
      "div",
      {
        class: ["scrollbar__bar", "is-" + r.value.key],
        onMousedown: $
      },
      ye("div", {
        ref: n,
        class: "scrollbar__thumb",
        onMousedown: p,
        style: yn({
          size: e.size,
          move: e.move,
          bar: r.value
        })
      })
    );
  }
}), bn = P({
  name: "Scrollbar",
  // inheritAttrs: false,
  components: { Bar: _n },
  props: {
    native: {
      type: Boolean,
      default: !1
    },
    wrapStyle: {
      type: [String, Array],
      default: ""
    },
    wrapClass: {
      type: [String, Array],
      default: ""
    },
    viewClass: {
      type: [String, Array],
      default: ""
    },
    viewStyle: {
      type: [String, Array],
      default: ""
    },
    noresize: Boolean,
    // 如果 container 尺寸不会发生变化，最好设置它可以优化性能
    tag: {
      type: String,
      default: "div"
    }
  },
  setup(e) {
    const t = v("0"), n = v("0"), o = v(0), r = v(0), a = v(), i = v();
    et("scroll-bar-wrap", a);
    const l = m(() => Array.isArray(e.wrapStyle) ? hn(e.wrapStyle) : e.wrapStyle), s = () => {
      e.native || (r.value = c(a).scrollTop * 100 / c(a).clientHeight, o.value = c(a).scrollLeft * 100 / c(a).clientWidth);
    }, u = () => {
      if (!c(a))
        return;
      const p = c(a).clientHeight * 100 / c(a).scrollHeight, $ = c(a).clientWidth * 100 / c(a).scrollWidth;
      n.value = p < 100 ? p + "%" : "", t.value = $ < 100 ? $ + "%" : "";
    };
    return Fe(() => {
      e.native || (G(u), e.noresize || (Ce(c(i), u), Ce(c(a), u), addEventListener("resize", u)));
    }), tt(() => {
      e.native || e.noresize || (De(c(i), u), De(c(a), u), removeEventListener("resize", u));
    }), {
      moveX: o,
      moveY: r,
      sizeWidth: t,
      sizeHeight: n,
      style: l,
      wrap: a,
      resize: i,
      update: u,
      handleScroll: s
    };
  }
});
const Sn = { class: "scrollbar" };
function Tn(e, t, n, o, r, a) {
  const i = de("bar");
  return f(), x("div", Sn, [
    Z("div", {
      ref: "wrap",
      class: _([
        e.wrapClass,
        "scrollbar__wrap",
        e.native ? "" : "scrollbar__wrap--hidden-default"
      ]),
      style: L(e.style),
      onScroll: t[0] || (t[0] = (...l) => e.handleScroll && e.handleScroll(...l))
    }, [
      (f(), z(nt(e.tag), {
        ref: "resize",
        class: _(["scrollbar__view", e.viewClass]),
        style: L(e.viewStyle)
      }, {
        default: w(() => [
          b(e.$slots, "default")
        ]),
        _: 3
      }, 8, ["class", "style"]))
    ], 38),
    e.native ? j("", !0) : (f(), x(ue, { key: 0 }, [
      T(i, {
        move: e.moveX,
        size: e.sizeWidth
      }, null, 8, ["move", "size"]),
      T(i, {
        vertical: "",
        move: e.moveY,
        size: e.sizeHeight
      }, null, 8, ["move", "size"])
    ], 64))
  ]);
}
const wn = /* @__PURE__ */ ne(bn, [["render", Tn]]), $n = (e, t, n, o) => (e /= o / 2, e < 1 ? n / 2 * e * e + t : (e--, -n / 2 * (e * (e - 2) - 1) + t)), On = (e, t) => {
  e.scrollTop = t;
}, xn = (e) => e.scrollTop;
function Ne({
  el: e,
  to: t,
  duration: n = 500,
  callback: o
}) {
  const r = v(!1), a = xn(e), i = t - a, l = 20;
  let s = 0;
  n = bt(n) ? 500 : n;
  const u = function() {
    if (!c(r))
      return;
    s += l;
    const g = $n(s, a, i, n);
    On(e, g), s < n && c(r) ? requestAnimationFrame(u) : o && fe(o) && o();
  };
  return { start: () => {
    r.value = !0, u();
  }, stop: () => {
    r.value = !1;
  } };
}
const kn = P({
  name: `${ee}ScrollContainer`,
  components: { Scrollbar: wn },
  setup() {
    const e = v(null);
    function t(r, a = 500) {
      const i = c(e);
      i && G(() => {
        const l = c(i.wrap);
        if (!l)
          return;
        const { start: s } = Ne({
          el: l,
          to: r,
          duration: a
        });
        s();
      });
    }
    function n() {
      const r = c(e);
      return r ? r.wrap : null;
    }
    function o() {
      const r = c(e);
      r && G(() => {
        const a = c(r.wrap);
        if (!a)
          return;
        const i = a.scrollHeight, { start: l } = Ne({
          el: a,
          to: i
        });
        l();
      });
    }
    return {
      scrollbarRef: e,
      scrollTo: t,
      scrollBottom: o,
      getScrollWrap: n
    };
  }
});
function Pn(e, t, n, o, r, a) {
  const i = de("Scrollbar");
  return f(), z(i, Y({
    ref: "scrollbarRef",
    class: "scroll-container"
  }, e.$attrs), {
    default: w(() => [
      b(e.$slots, "default")
    ]),
    _: 3
  }, 16);
}
const V = /* @__PURE__ */ ne(kn, [["render", Pn]]);
V.install = function(e, t) {
  e.component(t || V.name, V);
};
const zn = {
  name: `${ee}BasicDrawer`
}, q = /* @__PURE__ */ P({
  ...zn,
  props: Xt,
  emits: ["open-change", "ok", "close", "register"],
  setup(e, { emit: t }) {
    const n = e, o = t, r = Ye(), a = v(!1), i = ot(), l = v({}), u = E("basic-drawer").b(), p = {
      setDrawerProps: Ke,
      emitOpen: void 0
    }, $ = Le();
    $ && o("register", p, $.uid);
    const g = m(() => ie(n, c(l))), h = m(() => {
      const d = {
        placement: "right",
        ...c(i),
        ...c(g),
        open: c(a)
      };
      d.title = void 0;
      const { isDetail: O, width: H, wrapClassName: W, getContainer: oe } = d;
      if (O) {
        H || (d.width = "100%");
        const me = `${u}__detail`;
        d.rootClassName = W ? `${W} ${me}` : me, oe || (d.getContainer = `.${u}-layout-content`);
      }
      return d;
    }), R = m(() => ({
      ...i,
      ...c(h)
    })), D = m(() => {
      const { footerHeight: d, showFooter: O } = c(h);
      return O && d ? ht(d) ? `${d}px` : `${d.replace("px", "")}px` : "0px";
    }), N = m(() => ({
      position: "relative",
      height: `calc(100% - ${c(D)})`
    })), K = m(() => {
      var d;
      return !!((d = c(h)) != null && d.loading);
    });
    se(
      () => n.open,
      (d, O) => {
        d !== O && (a.value = d);
      },
      { deep: !0 }
    ), se(
      () => a.value,
      (d) => {
        G(() => {
          o("open-change", d), $ && p.emitOpen && p.emitOpen(d, $.uid);
        });
      }
    );
    async function F(d) {
      const { closeFunc: O } = c(h);
      if (o("close", d), O && fe(O)) {
        const H = await O();
        a.value = !H;
        return;
      }
      a.value = !1;
    }
    function Ke(d) {
      l.value = ie(c(l), d), Reflect.has(d, "open") && (a.value = !!d.open);
    }
    function Je() {
      o("ok");
    }
    return (d, O) => {
      const H = rt("loading");
      return f(), z(c(ct), Y(R.value, {
        class: c(u),
        onClose: F
      }), ve({
        default: w(() => [
          at((f(), z(c(V), {
            style: L(N.value),
            "loading-tip": d.loadingText || c(r)("common.loadingText")
          }, {
            default: w(() => [
              b(d.$slots, "default")
            ]),
            _: 3
          }, 8, ["style", "loading-tip"])), [
            [H, K.value]
          ]),
          T(Qt, Y(h.value, {
            onClose: F,
            onOk: Je,
            height: D.value
          }), ve({ _: 2 }, [
            st(Object.keys(d.$slots), (W) => ({
              name: W,
              fn: w((oe) => [
                b(d.$slots, W, lt(it(oe || {})))
              ])
            }))
          ]), 1040, ["height"])
        ]),
        _: 2
      }, [
        d.$slots.title ? {
          name: "title",
          fn: w(() => [
            b(d.$slots, "title")
          ]),
          key: "1"
        } : {
          name: "title",
          fn: w(() => [
            T(pn, {
              title: g.value.title,
              isDetail: d.isDetail,
              showDetailBack: d.showDetailBack,
              onClose: F
            }, {
              titleToolbar: w(() => [
                b(d.$slots, "titleToolbar")
              ]),
              _: 3
            }, 8, ["title", "isDetail", "showDetailBack"])
          ]),
          key: "0"
        }
      ]), 1040, ["class"]);
    };
  }
});
q.install = function(e, t) {
  e.component(t || q.name, q);
};
const In = {
  title: "BasicDrawer 抽屉",
  category: "反馈",
  status: "100%",
  install(e) {
    e.component(q.name, q);
  }
};
export {
  q as BasicDrawer,
  In as default
};
