index.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import XEUtils from 'xe-utils/ctor'
  2. import GlobalConfig from '../conf'
  3. import interceptor from './src/interceptor'
  4. import renderer from './src/renderer'
  5. import commands from './src/commands'
  6. import menus from './src/menus'
  7. import formats from './src/formats'
  8. import setup from './src/setup'
  9. import { UtilTools } from '../tools'
  10. const installedPlugins = []
  11. function use (Plugin, options) {
  12. /* eslint-disable @typescript-eslint/no-use-before-define */
  13. if (Plugin && Plugin.install) {
  14. if (installedPlugins.indexOf(Plugin) === -1) {
  15. Plugin.install(VXETable, options)
  16. installedPlugins.push(Plugin)
  17. }
  18. }
  19. return VXETable
  20. }
  21. /**
  22. * 检测模块的安装顺序是否正确
  23. */
  24. function reg (key) {
  25. /* eslint-disable @typescript-eslint/no-use-before-define */
  26. if (VXETable.Table) {
  27. UtilTools.error('vxe.error.useErr', [key])
  28. }
  29. VXETable[`_${key}`] = 1
  30. }
  31. function _t (key, args) {
  32. return key ? XEUtils.toValueString(GlobalConfig.translate ? GlobalConfig.translate(key, args) : key) : ''
  33. }
  34. export const VXETable = {
  35. t: (key, args) => GlobalConfig.i18n(key, args),
  36. _t,
  37. v: 'v2',
  38. reg,
  39. use,
  40. types: {},
  41. setup,
  42. interceptor,
  43. renderer,
  44. commands,
  45. formats,
  46. menus
  47. }
  48. // v3.0 中废弃 buttons
  49. Object.defineProperty(VXETable, 'buttons', {
  50. get () {
  51. UtilTools.warn('vxe.error.delProp', ['buttons', 'commands'])
  52. return commands
  53. }
  54. })
  55. /**
  56. * 获取当前的 zIndex
  57. */
  58. Object.defineProperty(VXETable, 'zIndex', { get: UtilTools.getLastZIndex })
  59. /**
  60. * 获取下一个 zIndex
  61. */
  62. Object.defineProperty(VXETable, 'nextZIndex', { get: UtilTools.nextZIndex })
  63. function getExportOrImpotType (types, flag) {
  64. const rest = []
  65. XEUtils.objectEach(types, (val, type) => {
  66. if (val === 0 || val === flag) {
  67. rest.push(type)
  68. }
  69. })
  70. return rest
  71. }
  72. /**
  73. * 获取所有导出类型
  74. */
  75. Object.defineProperty(VXETable, 'exportTypes', {
  76. get () {
  77. return getExportOrImpotType(GlobalConfig.export.types, 1)
  78. }
  79. })
  80. /**
  81. * 获取所有导入类型
  82. */
  83. Object.defineProperty(VXETable, 'importTypes', {
  84. get () {
  85. return getExportOrImpotType(GlobalConfig.export.types, 2)
  86. }
  87. })
  88. export default VXETable