@vxe-ui/core 1.0.12 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/LICENSE +21 -21
  2. package/README.en.md +31 -31
  3. package/README.md +31 -31
  4. package/README.zh-TW.md +31 -31
  5. package/es/src/core.js +1 -1
  6. package/es/src/log.js +1 -1
  7. package/es/src/permission.js +36 -14
  8. package/lib/index.umd.js +59 -34
  9. package/lib/index.umd.min.js +1 -1
  10. package/lib/src/clipboard.min.js +1 -1
  11. package/lib/src/commands.min.js +1 -1
  12. package/lib/src/core.js +1 -1
  13. package/lib/src/core.min.js +1 -1
  14. package/lib/src/event.min.js +1 -1
  15. package/lib/src/formats.min.js +1 -1
  16. package/lib/src/globalStore.min.js +1 -1
  17. package/lib/src/hooks.min.js +1 -1
  18. package/lib/src/i18n.min.js +1 -1
  19. package/lib/src/i18nStore.min.js +1 -1
  20. package/lib/src/iconStore.min.js +1 -1
  21. package/lib/src/interceptor.min.js +1 -1
  22. package/lib/src/log.js +1 -1
  23. package/lib/src/log.min.js +1 -1
  24. package/lib/src/menus.min.js +1 -1
  25. package/lib/src/permission.js +37 -15
  26. package/lib/src/permission.min.js +1 -1
  27. package/lib/src/renderer.min.js +1 -1
  28. package/lib/src/resize.min.js +1 -1
  29. package/lib/src/store.min.js +1 -1
  30. package/lib/src/themeStore.min.js +1 -1
  31. package/lib/src/useFns.min.js +1 -1
  32. package/lib/src/validators.min.js +1 -1
  33. package/package.json +78 -78
  34. package/packages/index.ts +4 -4
  35. package/packages/src/clipboard.ts +53 -53
  36. package/packages/src/commands.ts +62 -62
  37. package/packages/src/core.ts +167 -167
  38. package/packages/src/event.ts +113 -113
  39. package/packages/src/formats.ts +62 -62
  40. package/packages/src/globalStore.ts +8 -8
  41. package/packages/src/hooks.ts +5 -5
  42. package/packages/src/i18n.ts +19 -19
  43. package/packages/src/i18nStore.ts +11 -11
  44. package/packages/src/iconStore.ts +3 -3
  45. package/packages/src/interceptor.ts +65 -65
  46. package/packages/src/log.ts +19 -19
  47. package/packages/src/menus.ts +62 -62
  48. package/packages/src/permission.ts +61 -39
  49. package/packages/src/renderer.ts +50 -50
  50. package/packages/src/resize.ts +89 -89
  51. package/packages/src/store.ts +49 -49
  52. package/packages/src/themeStore.ts +7 -7
  53. package/packages/src/useFns.ts +34 -34
  54. package/packages/src/validators.ts +9 -9
  55. package/types/core/clipboard.d.ts +13 -13
  56. package/types/core/commands.d.ts +19 -19
  57. package/types/core/components.d.ts +4 -4
  58. package/types/core/formats.d.ts +19 -19
  59. package/types/core/global-config.d.ts +55 -55
  60. package/types/core/global-event.d.ts +39 -39
  61. package/types/core/global-icon.d.ts +6 -6
  62. package/types/core/global-lang.d.ts +1 -1
  63. package/types/core/global-resize.d.ts +3 -3
  64. package/types/core/global-theme.d.ts +1 -1
  65. package/types/core/hooks.d.ts +14 -14
  66. package/types/core/index.d.ts +224 -224
  67. package/types/core/interceptor.d.ts +22 -22
  68. package/types/core/log.d.ts +8 -8
  69. package/types/core/menus.d.ts +19 -19
  70. package/types/core/permission.d.ts +10 -10
  71. package/types/core/renderer.d.ts +14 -14
  72. package/types/core/useFn.d.ts +27 -27
  73. package/types/core/validators.d.ts +19 -19
  74. package/types/index.d.ts +10 -10
  75. package/types/tool/common.d.ts +99 -99
  76. package/types/tool/index.d.ts +2 -2
  77. package/types/tool/util.d.ts +4 -4
@@ -1,62 +1,62 @@
1
- import XEUtils from 'xe-utils'
2
- import { log } from './log'
3
-
4
- import { VxeGlobalFormats } from '../../types'
5
-
6
- class VXEFormatsStore {
7
- private store: any = {}
8
-
9
- mixin (options: any): VXEFormatsStore {
10
- XEUtils.each(options, (item, key) => {
11
- this.add(key, item)
12
- })
13
- return this
14
- }
15
-
16
- has (name: string): boolean {
17
- return !!this.get(name)
18
- }
19
-
20
- get (name: string): any {
21
- return this.store[name]
22
- }
23
-
24
- add (name: string, render: any): VXEFormatsStore {
25
- const conf = this.store[name]
26
- // 兼容
27
- if (XEUtils.isFunction(render)) {
28
- if (process.env.VUE_APP_VXE_ENV === 'development') {
29
- log.warn('vxe.error.delProp', ['formats -> callback', 'cellFormatMethod'])
30
- }
31
- render = {
32
- cellFormatMethod: render
33
- }
34
- }
35
-
36
- // 检测是否覆盖
37
- if (process.env.VUE_APP_VXE_ENV === 'development') {
38
- const confKeys = XEUtils.keys(conf)
39
- XEUtils.each(render, (item, key) => {
40
- if (confKeys.includes(key)) {
41
- log.warn('vxe.error.coverProp', [name, key])
42
- }
43
- })
44
- }
45
- this.store[name] = conf ? XEUtils.merge(conf, render) : render
46
- return this
47
- }
48
-
49
- delete (name: string): void {
50
- delete this.store[name]
51
- }
52
-
53
- forEach (callback: any): void {
54
- XEUtils.objectEach(this.store, callback)
55
- }
56
- }
57
-
58
- export const formats = new VXEFormatsStore() as VxeGlobalFormats
59
-
60
- if (process.env.VUE_APP_VXE_ENV === 'development') {
61
- Object.assign(formats, { _name: 'Formats' })
62
- }
1
+ import XEUtils from 'xe-utils'
2
+ import { log } from './log'
3
+
4
+ import { VxeGlobalFormats } from '../../types'
5
+
6
+ class VXEFormatsStore {
7
+ private store: any = {}
8
+
9
+ mixin (options: any): VXEFormatsStore {
10
+ XEUtils.each(options, (item, key) => {
11
+ this.add(key, item)
12
+ })
13
+ return this
14
+ }
15
+
16
+ has (name: string): boolean {
17
+ return !!this.get(name)
18
+ }
19
+
20
+ get (name: string): any {
21
+ return this.store[name]
22
+ }
23
+
24
+ add (name: string, render: any): VXEFormatsStore {
25
+ const conf = this.store[name]
26
+ // 兼容
27
+ if (XEUtils.isFunction(render)) {
28
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
29
+ log.warn('vxe.error.delProp', ['formats -> callback', 'cellFormatMethod'])
30
+ }
31
+ render = {
32
+ cellFormatMethod: render
33
+ }
34
+ }
35
+
36
+ // 检测是否覆盖
37
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
38
+ const confKeys = XEUtils.keys(conf)
39
+ XEUtils.each(render, (item, key) => {
40
+ if (confKeys.includes(key)) {
41
+ log.warn('vxe.error.coverProp', [name, key])
42
+ }
43
+ })
44
+ }
45
+ this.store[name] = conf ? XEUtils.merge(conf, render) : render
46
+ return this
47
+ }
48
+
49
+ delete (name: string): void {
50
+ delete this.store[name]
51
+ }
52
+
53
+ forEach (callback: any): void {
54
+ XEUtils.objectEach(this.store, callback)
55
+ }
56
+ }
57
+
58
+ export const formats = new VXEFormatsStore() as VxeGlobalFormats
59
+
60
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
61
+ Object.assign(formats, { _name: 'Formats' })
62
+ }
@@ -1,8 +1,8 @@
1
- import { VxeGlobalConfig } from '../../types'
2
-
3
- export const globalConfigStore: VxeGlobalConfig = {
4
- size: '',
5
- version: 1,
6
- zIndex: 999,
7
- resizeInterval: 500
8
- }
1
+ import { VxeGlobalConfig } from '../../types'
2
+
3
+ export const globalConfigStore: VxeGlobalConfig = {
4
+ size: '',
5
+ version: 1,
6
+ zIndex: 999,
7
+ resizeInterval: 500
8
+ }
@@ -1,5 +1,5 @@
1
- import VXEStore from './store'
2
-
3
- import { VxeGlobalHooks } from '../../types'
4
-
5
- export const hooks = new VXEStore() as VxeGlobalHooks
1
+ import VXEStore from './store'
2
+
3
+ import { VxeGlobalHooks } from '../../types'
4
+
5
+ export const hooks = new VXEStore() as VxeGlobalHooks
@@ -1,19 +1,19 @@
1
- import XEUtils from 'xe-utils'
2
- import { i18nConfigStore } from './i18nStore'
3
-
4
- import { VxeGlobalI18nLocale } from '../../types'
5
-
6
- export function getI18n (key: string, args?: any) {
7
- const { langMaps, language } = i18nConfigStore
8
- return XEUtils.toFormatString(XEUtils.get(langMaps[language], key, key), args)
9
- }
10
-
11
- export function hasLanguage (language: VxeGlobalI18nLocale) {
12
- const { langMaps } = i18nConfigStore
13
- return !!langMaps[language]
14
- }
15
-
16
- export function getLanguage () {
17
- const { language } = i18nConfigStore
18
- return language
19
- }
1
+ import XEUtils from 'xe-utils'
2
+ import { i18nConfigStore } from './i18nStore'
3
+
4
+ import { VxeGlobalI18nLocale } from '../../types'
5
+
6
+ export function getI18n (key: string, args?: any) {
7
+ const { langMaps, language } = i18nConfigStore
8
+ return XEUtils.toFormatString(XEUtils.get(langMaps[language], key, key), args)
9
+ }
10
+
11
+ export function hasLanguage (language: VxeGlobalI18nLocale) {
12
+ const { langMaps } = i18nConfigStore
13
+ return !!langMaps[language]
14
+ }
15
+
16
+ export function getLanguage () {
17
+ const { language } = i18nConfigStore
18
+ return language
19
+ }
@@ -1,11 +1,11 @@
1
- import { reactive } from 'vue'
2
-
3
- import { VxeGlobalI18nLocale } from '../../types'
4
-
5
- export const i18nConfigStore: {
6
- language: VxeGlobalI18nLocale,
7
- langMaps: Partial<Record<VxeGlobalI18nLocale, any>>
8
- } = reactive({
9
- language: '',
10
- langMaps: {}
11
- })
1
+ import { reactive } from 'vue'
2
+
3
+ import { VxeGlobalI18nLocale } from '../../types'
4
+
5
+ export const i18nConfigStore: {
6
+ language: VxeGlobalI18nLocale,
7
+ langMaps: Partial<Record<VxeGlobalI18nLocale, any>>
8
+ } = reactive({
9
+ language: '',
10
+ langMaps: {}
11
+ })
@@ -1,3 +1,3 @@
1
- import { VxeGlobalIcon } from '../../types'
2
-
3
- export const iconConfigStore: VxeGlobalIcon = {}
1
+ import { VxeGlobalIcon } from '../../types'
2
+
3
+ export const iconConfigStore: VxeGlobalIcon = {}
@@ -1,65 +1,65 @@
1
- import XEUtils from 'xe-utils'
2
- import { log } from './log'
3
-
4
- import { VxeGlobalInterceptor, VxeGlobalInterceptorHandles } from '../../types'
5
-
6
- const storeMap: { [type: string]: VxeGlobalInterceptorHandles.InterceptorCallback[] } = {}
7
-
8
- export const interceptor: VxeGlobalInterceptor = {
9
- mixin (options) {
10
- XEUtils.each(options, (render, type) => {
11
- interceptor.add(type, render)
12
- })
13
- return interceptor
14
- },
15
- get (type) {
16
- return storeMap[type] || []
17
- },
18
- add (type, render) {
19
- // 兼容
20
- if (XEUtils.isFunction(render)) {
21
- // if (process.env.VUE_APP_VXE_ENV === 'development') {
22
- // log.warn('vxe.error.delProp', ['interceptor -> callback', 'tableInterceptorMethod'])
23
- // }
24
- render = {
25
- tableInterceptorMethod: render
26
- }
27
- }
28
- const callback = render.tableInterceptorMethod
29
-
30
- if (callback) {
31
- let eList = storeMap[type]
32
- if (!eList) {
33
- eList = storeMap[type] = []
34
- }
35
-
36
- // 检测重复
37
- if (process.env.VUE_APP_VXE_ENV === 'development') {
38
- if (eList.indexOf(callback) > -1) {
39
- log.warn('vxe.error.coverProp', ['Interceptor', type])
40
- }
41
- }
42
-
43
- eList.push(callback)
44
- }
45
- return interceptor
46
- },
47
- delete (type, render) {
48
- const eList = storeMap[type]
49
- if (eList) {
50
- // 兼容
51
- if (XEUtils.isFunction(render)) {
52
- render = {
53
- tableInterceptorMethod: render
54
- }
55
- }
56
- const callback = render ? render.tableInterceptorMethod : null
57
-
58
- if (callback) {
59
- XEUtils.remove(eList, fn => fn === callback)
60
- } else {
61
- delete storeMap[type]
62
- }
63
- }
64
- }
65
- }
1
+ import XEUtils from 'xe-utils'
2
+ import { log } from './log'
3
+
4
+ import { VxeGlobalInterceptor, VxeGlobalInterceptorHandles } from '../../types'
5
+
6
+ const storeMap: { [type: string]: VxeGlobalInterceptorHandles.InterceptorCallback[] } = {}
7
+
8
+ export const interceptor: VxeGlobalInterceptor = {
9
+ mixin (options) {
10
+ XEUtils.each(options, (render, type) => {
11
+ interceptor.add(type, render)
12
+ })
13
+ return interceptor
14
+ },
15
+ get (type) {
16
+ return storeMap[type] || []
17
+ },
18
+ add (type, render) {
19
+ // 兼容
20
+ if (XEUtils.isFunction(render)) {
21
+ // if (process.env.VUE_APP_VXE_ENV === 'development') {
22
+ // log.warn('vxe.error.delProp', ['interceptor -> callback', 'tableInterceptorMethod'])
23
+ // }
24
+ render = {
25
+ tableInterceptorMethod: render
26
+ }
27
+ }
28
+ const callback = render.tableInterceptorMethod
29
+
30
+ if (callback) {
31
+ let eList = storeMap[type]
32
+ if (!eList) {
33
+ eList = storeMap[type] = []
34
+ }
35
+
36
+ // 检测重复
37
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
38
+ if (eList.indexOf(callback) > -1) {
39
+ log.warn('vxe.error.coverProp', ['Interceptor', type])
40
+ }
41
+ }
42
+
43
+ eList.push(callback)
44
+ }
45
+ return interceptor
46
+ },
47
+ delete (type, render) {
48
+ const eList = storeMap[type]
49
+ if (eList) {
50
+ // 兼容
51
+ if (XEUtils.isFunction(render)) {
52
+ render = {
53
+ tableInterceptorMethod: render
54
+ }
55
+ }
56
+ const callback = render ? render.tableInterceptorMethod : null
57
+
58
+ if (callback) {
59
+ XEUtils.remove(eList, fn => fn === callback)
60
+ } else {
61
+ delete storeMap[type]
62
+ }
63
+ }
64
+ }
65
+ }
@@ -1,19 +1,19 @@
1
- import { getI18n } from './i18n'
2
-
3
- import { VxeGlobalLog } from '../../types'
4
-
5
- function createLog (type: 'log' | 'warn' | 'error', name?: string) {
6
- return function (key: string, args?: any) {
7
- const msg = `[vxe ${name || ''}] ${getI18n(key, args)}`
8
- console[type](msg)
9
- return msg
10
- }
11
- }
12
-
13
- const version = process.env.VUE_APP_VXE_VERSION
14
-
15
- export const log: VxeGlobalLog = {
16
- create: createLog,
17
- warn: createLog('warn', `v${version}`),
18
- err: createLog('error', `v${version}`)
19
- }
1
+ import { getI18n } from './i18n'
2
+
3
+ import { VxeGlobalLog } from '../../types'
4
+
5
+ function createLog (type: 'log' | 'warn' | 'error', name?: string) {
6
+ return function (key: string, args?: any) {
7
+ const msg = `[vxe ${name || ''}] ${getI18n(key, args)}`
8
+ console[type](msg)
9
+ return msg
10
+ }
11
+ }
12
+
13
+ const version = process.env.VUE_APP_VXE_VERSION
14
+
15
+ export const log: VxeGlobalLog = {
16
+ create: createLog,
17
+ warn: createLog('warn', `v${version}`),
18
+ err: createLog('error', `v${version}`)
19
+ }
@@ -1,62 +1,62 @@
1
- import XEUtils from 'xe-utils'
2
- import { log } from './log'
3
-
4
- import { VxeGlobalMenus } from '../../types'
5
-
6
- class VXEMenusStore {
7
- private store: any = {}
8
-
9
- mixin (options: any): VXEMenusStore {
10
- XEUtils.each(options, (item, key) => {
11
- this.add(key, item)
12
- })
13
- return this
14
- }
15
-
16
- has (name: string): boolean {
17
- return !!this.get(name)
18
- }
19
-
20
- get (name: string): any {
21
- return this.store[name]
22
- }
23
-
24
- add (name: string, render: any): VXEMenusStore {
25
- const conf = this.store[name]
26
- // 兼容
27
- if (XEUtils.isFunction(render)) {
28
- if (process.env.VUE_APP_VXE_ENV === 'development') {
29
- log.warn('vxe.error.delProp', ['menus -> callback', 'menuMethod'])
30
- }
31
- render = {
32
- menuMethod: render
33
- }
34
- }
35
-
36
- // 检测是否覆盖
37
- if (process.env.VUE_APP_VXE_ENV === 'development') {
38
- const confKeys = XEUtils.keys(conf)
39
- XEUtils.each(render, (item, key) => {
40
- if (confKeys.includes(key)) {
41
- log.warn('vxe.error.coverProp', [name, key])
42
- }
43
- })
44
- }
45
- this.store[name] = conf ? XEUtils.merge(conf, render) : render
46
- return this
47
- }
48
-
49
- delete (name: string): void {
50
- delete this.store[name]
51
- }
52
-
53
- forEach (callback: any): void {
54
- XEUtils.objectEach(this.store, callback)
55
- }
56
- }
57
-
58
- export const menus = new VXEMenusStore() as VxeGlobalMenus
59
-
60
- if (process.env.VUE_APP_VXE_ENV === 'development') {
61
- Object.assign(menus, { _name: 'Menus' })
62
- }
1
+ import XEUtils from 'xe-utils'
2
+ import { log } from './log'
3
+
4
+ import { VxeGlobalMenus } from '../../types'
5
+
6
+ class VXEMenusStore {
7
+ private store: any = {}
8
+
9
+ mixin (options: any): VXEMenusStore {
10
+ XEUtils.each(options, (item, key) => {
11
+ this.add(key, item)
12
+ })
13
+ return this
14
+ }
15
+
16
+ has (name: string): boolean {
17
+ return !!this.get(name)
18
+ }
19
+
20
+ get (name: string): any {
21
+ return this.store[name]
22
+ }
23
+
24
+ add (name: string, render: any): VXEMenusStore {
25
+ const conf = this.store[name]
26
+ // 兼容
27
+ if (XEUtils.isFunction(render)) {
28
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
29
+ log.warn('vxe.error.delProp', ['menus -> callback', 'menuMethod'])
30
+ }
31
+ render = {
32
+ menuMethod: render
33
+ }
34
+ }
35
+
36
+ // 检测是否覆盖
37
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
38
+ const confKeys = XEUtils.keys(conf)
39
+ XEUtils.each(render, (item, key) => {
40
+ if (confKeys.includes(key)) {
41
+ log.warn('vxe.error.coverProp', [name, key])
42
+ }
43
+ })
44
+ }
45
+ this.store[name] = conf ? XEUtils.merge(conf, render) : render
46
+ return this
47
+ }
48
+
49
+ delete (name: string): void {
50
+ delete this.store[name]
51
+ }
52
+
53
+ forEach (callback: any): void {
54
+ XEUtils.objectEach(this.store, callback)
55
+ }
56
+ }
57
+
58
+ export const menus = new VXEMenusStore() as VxeGlobalMenus
59
+
60
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
61
+ Object.assign(menus, { _name: 'Menus' })
62
+ }
@@ -1,39 +1,61 @@
1
- import { globalConfigStore } from './globalStore'
2
- import XEUtils from 'xe-utils'
3
-
4
- import type { VxeGlobalPermission, VxeComponentPermissionCodeType, VxeComponentPermissionInfo, VxeComponentPermissionMethod } from '../../types'
5
-
6
- export function handleCheckInfo (code?: VxeComponentPermissionCodeType, permissionMethod?: VxeComponentPermissionMethod) {
7
- let visible = true
8
- let disabled = false
9
- const checkMethod = permissionMethod || globalConfigStore.permissionMethod
10
- if (code && checkMethod) {
11
- const rest = checkMethod({ code })
12
- if (XEUtils.isBoolean(rest)) {
13
- visible = rest
14
- } else if (rest) {
15
- visible = !!rest.visible
16
- disabled = !!rest.disabled
17
- }
18
- }
19
- const info: VxeComponentPermissionInfo = {
20
- code,
21
- visible,
22
- disabled
23
- }
24
- return info
25
- }
26
-
27
- export const permission: VxeGlobalPermission = {
28
- getCheckInfo (code) {
29
- return handleCheckInfo(code)
30
- },
31
- checkVisible (code) {
32
- const permissionInfo = handleCheckInfo(code)
33
- return permissionInfo.visible
34
- },
35
- checkDisable (code) {
36
- const permissionInfo = handleCheckInfo(code)
37
- return permissionInfo.disabled
38
- }
39
- }
1
+ import { globalConfigStore } from './globalStore'
2
+ import XEUtils from 'xe-utils'
3
+
4
+ import type { VxeGlobalPermission, VxeComponentPermissionCodeType, VxeComponentPermissionInfo, VxeComponentPermissionMethod } from '../../types'
5
+
6
+ export function handleCheckInfo (permissionCode?: VxeComponentPermissionCodeType, permissionMethod?: VxeComponentPermissionMethod) {
7
+ let checkVisible = true
8
+ let checkDisabled = false
9
+ const checkMethod = permissionMethod || globalConfigStore.permissionMethod
10
+ if (permissionCode && checkMethod) {
11
+ checkVisible = false
12
+ checkDisabled = true
13
+ let vDone = false
14
+ let dDone = false
15
+ // 使用 | 隔开:任意一个为可视,则可视;任意一个禁用,则禁用
16
+ const codeList = String(permissionCode).split('|')
17
+ for (let i = 0; i < codeList.length; i++) {
18
+ const code = codeList[i]
19
+ let visible = true
20
+ let disabled = false
21
+ const rest = checkMethod({ code })
22
+ if (XEUtils.isBoolean(rest)) {
23
+ visible = rest
24
+ } else if (rest) {
25
+ visible = !!rest.visible
26
+ disabled = !!rest.disabled
27
+ }
28
+ if (!disabled && !dDone) {
29
+ dDone = true
30
+ checkDisabled = disabled
31
+ }
32
+ if (visible && !vDone) {
33
+ vDone = true
34
+ checkVisible = visible
35
+ }
36
+ if (vDone && dDone) {
37
+ break
38
+ }
39
+ }
40
+ }
41
+ const info: VxeComponentPermissionInfo = {
42
+ code: permissionCode,
43
+ visible: checkVisible,
44
+ disabled: checkDisabled
45
+ }
46
+ return info
47
+ }
48
+
49
+ export const permission: VxeGlobalPermission = {
50
+ getCheckInfo (code) {
51
+ return handleCheckInfo(code)
52
+ },
53
+ checkVisible (code) {
54
+ const permissionInfo = handleCheckInfo(code)
55
+ return permissionInfo.visible
56
+ },
57
+ checkDisable (code) {
58
+ const permissionInfo = handleCheckInfo(code)
59
+ return permissionInfo.disabled
60
+ }
61
+ }