@gm-pc/react 1.13.0 → 1.13.3-alpha.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gm-pc/react",
3
- "version": "1.13.0",
3
+ "version": "1.13.3-alpha.0",
4
4
  "description": "观麦前端基础组件库",
5
5
  "author": "liyatang <liyatang@qq.com>",
6
6
  "homepage": "https://github.com/gmfe/gm-pc#readme",
@@ -24,7 +24,7 @@
24
24
  "dependencies": {
25
25
  "@gm-common/hooks": "^2.10.0",
26
26
  "@gm-common/tool": "^2.10.0",
27
- "@gm-pc/locales": "^1.13.0",
27
+ "@gm-pc/locales": "^1.13.3-alpha.0",
28
28
  "big.js": "^6.0.1",
29
29
  "classnames": "^2.2.5",
30
30
  "lodash": "^4.17.19",
@@ -48,5 +48,5 @@
48
48
  "react-router-dom": "^5.2.0",
49
49
  "react-window": "^1.8.5"
50
50
  },
51
- "gitHead": "d6b40976252d63a7efb06f2a80f8799880e53de3"
51
+ "gitHead": "8f4025e778efd916867e985fd61ccdeaa842e441"
52
52
  }
@@ -1,7 +1,7 @@
1
1
  import { createContext } from 'react'
2
2
  import { VBrowserWindow } from '../types'
3
3
 
4
- const BrowserWindowContext = createContext<VBrowserWindow>(undefined as any)
4
+ const BrowserWindowContext = createContext<string>(undefined as any)
5
5
  BrowserWindowContext.displayName = 'VBrowserWindowContext'
6
6
 
7
7
  export default BrowserWindowContext
@@ -1,5 +1,5 @@
1
1
  import { reaction } from 'mobx'
2
- import React, { useEffect, useContext } from 'react'
2
+ import React, { useEffect, useContext, useRef } from 'react'
3
3
  import BrowserContext from '../context/browser'
4
4
  import BrowserWindowContext from '../context/browserWindow'
5
5
 
@@ -12,29 +12,40 @@ type Noop = () => void
12
12
  */
13
13
  export default function useWindowEffect(fn: () => Noop | void, deps: Array<any>) {
14
14
  const browser = useContext(BrowserContext)
15
- const browserWindow = useContext(BrowserWindowContext)
15
+ const path = useContext(BrowserWindowContext)
16
+ const browserWindow = browser.windows.find((w) => w.path === path)!
17
+ const cb = useRef<Noop | void>()
16
18
 
17
- let cb: Noop | void
18
19
  useEffect(() => {
19
20
  if (!browser || !browserWindow) {
20
21
  console.warn('useWindowEffect需要在VBrowser中使用, 否则将回退到useEffect')
21
- cb = fn()
22
- return cb
22
+ cb.current = fn()
23
+ return cb.current
23
24
  }
24
25
 
25
26
  const alive = browserWindow.path === browser.activeWindow?.path
26
27
  if (!alive) return
27
28
 
29
+ // 激活\失活
28
30
  const dispose = reaction(
29
31
  () => browser.activeWindow,
30
32
  (cur, pre) => {
33
+ if (pre?.path !== browserWindow.path && cur?.path !== browserWindow.path) {
34
+ return
35
+ }
31
36
  const activate = cur?.path === browserWindow.path
32
37
  const deactivate = pre?.path === browserWindow.path
33
- if (activate) cb = fn()
34
- if (deactivate) cb && cb()
38
+ if (activate) {
39
+ cb.current = fn()
40
+ // console.log('activate', browserWindow.path)
41
+ }
42
+ if (deactivate) {
43
+ cb.current && cb.current()
44
+ // console.log('deactivate', browserWindow.path)
45
+ }
35
46
  }
36
47
  )
37
- cb = fn()
48
+ cb.current = fn()
38
49
  return dispose
39
50
  }, deps)
40
51
  }
@@ -14,7 +14,7 @@ export interface VBrowserWindow {
14
14
  export interface VBrowserProps {
15
15
  /** 窗口数量限制 */
16
16
  maxLength?: number
17
- /** 准备就绪 */
17
+ /** 准备就绪 (读取Storage) */
18
18
  onReady?: Function
19
19
  /** 重新打开vBrowser时恢复已打开窗口, 默认为true */
20
20
  restore?: boolean
@@ -17,8 +17,8 @@ const VBrowserContainer: FC<{ className?: string }> = observer(
17
17
  ({ className, ...props }) => {
18
18
  const containerRef = createRef<HTMLDivElement>()
19
19
  const browser = useContext(Context)
20
- const leftInterval = useRef<number>()
21
- const rightInterval = useRef<number>()
20
+ // const leftInterval = useRef<number>()
21
+ // const rightInterval = useRef<number>()
22
22
 
23
23
  const [state, setState] = useState({ scrollLeft: 0, scrollWidth: 0, width: 0 })
24
24
 
@@ -55,6 +55,7 @@ const VBrowserContainer: FC<{ className?: string }> = observer(
55
55
  if (!wrapper) return
56
56
  wrapper.scrollTo({
57
57
  left: clamp(wrapper.scrollLeft + offset, 0, wrapper.scrollWidth),
58
+ behavior: 'smooth',
58
59
  })
59
60
  }
60
61
  // #endregion
@@ -63,7 +64,7 @@ const VBrowserContainer: FC<{ className?: string }> = observer(
63
64
  createPortal(
64
65
  pages.map((page, i) => {
65
66
  return (
66
- <BrowserWindowContext.Provider key={i} value={page}>
67
+ <BrowserWindowContext.Provider key={i} value={page.path}>
67
68
  <WindowWrapper key={i} path={page.path} />
68
69
  </BrowserWindowContext.Provider>
69
70
  )
@@ -93,18 +94,18 @@ const VBrowserContainer: FC<{ className?: string }> = observer(
93
94
  disabled: state.scrollLeft === 0,
94
95
  'tw-hidden': state.width === state.scrollWidth,
95
96
  })}
96
- // onClick={(e) => {
97
- // e.stopPropagation()
98
- // _handleScroll(-150)
99
- // }}
100
- onMouseEnter={() => {
101
- leftInterval.current = setInterval(() => {
102
- _handleScroll(-1)
103
- }, 0) as any
104
- }}
105
- onMouseLeave={() => {
106
- clearInterval(leftInterval.current)
97
+ onClick={(e) => {
98
+ e.stopPropagation()
99
+ _handleScroll(-160)
107
100
  }}
101
+ // onMouseEnter={() => {
102
+ // leftInterval.current = setInterval(() => {
103
+ // _handleScroll(-1)
104
+ // }, 0) as any
105
+ // }}
106
+ // onMouseLeave={() => {
107
+ // clearInterval(leftInterval.current)
108
+ // }}
108
109
  >
109
110
  <Left
110
111
  className={classNames(
@@ -116,53 +117,54 @@ const VBrowserContainer: FC<{ className?: string }> = observer(
116
117
  <div className='v-browser-tabs-items tw-w-full tw-h-full tw-flex tw-items-center'>
117
118
  {browser.windows.map((w, i) => {
118
119
  return (
119
- <div
120
- key={i}
121
- className={classNames(
122
- 'v-browser-tabs-items-item tw-font-sm tw-px-2.5 tw-flex-shrink-0 tw-flex tw-items-center tw-truncate tw-w-min',
123
- {
124
- active: i === browser.activeIndex,
125
- border:
126
- i !== browser.windows.length - 1 &&
127
- i !== browser.activeIndex &&
128
- i !== browser.activeIndex - 1,
129
- }
130
- )}
131
- data-tab-id={w.path}
132
- onClick={() => browser.switchWindow(w)}
133
- >
120
+ <>
134
121
  <div
135
- className='tw-flex-grow tw-text-sm'
136
- style={{ minWidth: typeof w.title !== 'string' ? 'auto' : '100px' }}
122
+ key={i}
123
+ className={classNames(
124
+ 'v-browser-tabs-items-item tw-font-sm tw-px-2.5 tw-flex-shrink-0 tw-flex tw-items-center tw-truncate tw-w-min',
125
+ {
126
+ active: i === browser.activeIndex,
127
+ border:
128
+ i !== browser.activeIndex && i !== browser.activeIndex - 1,
129
+ }
130
+ )}
131
+ data-tab-id={w.path}
132
+ onClick={() => browser.switchWindow(w)}
137
133
  >
138
- <div className='tw-flex tw-items-center'>
139
- {w.faviconURL && (
140
- <img
141
- src={w.faviconURL}
142
- className={classNames('tw-w-3.5 tw-h-3.5 tw-mr-0.5', {
143
- 'tw-opacity-70': i !== browser.activeIndex,
144
- })}
145
- />
146
- )}
147
- <span>{w.title || '-'}</span>
134
+ <div
135
+ className='tw-flex-grow tw-text-sm'
136
+ style={{ minWidth: typeof w.title !== 'string' ? 'auto' : '100px' }}
137
+ >
138
+ <div className='tw-flex tw-items-center'>
139
+ {w.faviconURL && (
140
+ <img
141
+ src={w.faviconURL}
142
+ className={classNames('tw-w-3.5 tw-h-3.5 tw-mr-0.5', {
143
+ 'tw-opacity-70': i !== browser.activeIndex,
144
+ })}
145
+ />
146
+ )}
147
+ <span>{w.title || '-'}</span>
148
+ </div>
148
149
  </div>
149
- </div>
150
150
 
151
- <div className='tw-pl-2 tw-flex tw-items-center'>
152
- <Delete
153
- className={classNames(
154
- 'v-browser-tabs-items-item-close tw-w-3.5 tw-h-3.5',
155
- {
156
- 'tw-hidden': !w.closeable,
157
- }
158
- )}
159
- onClick={(e) => {
160
- e.stopPropagation()
161
- browser.close(w)
162
- }}
163
- />
151
+ <div className='tw-pl-2 tw-flex tw-items-center'>
152
+ <Delete
153
+ className={classNames(
154
+ 'v-browser-tabs-items-item-close tw-w-3.5 tw-h-3.5',
155
+ {
156
+ 'tw-hidden': !w.closeable,
157
+ }
158
+ )}
159
+ onClick={(e) => {
160
+ e.stopPropagation()
161
+ browser.close(w)
162
+ }}
163
+ />
164
+ </div>
164
165
  </div>
165
- </div>
166
+ <div key={`divider-${i}`} className='v-browser-tabs-items-divider' />
167
+ </>
166
168
  )
167
169
  })}
168
170
  </div>
@@ -172,18 +174,18 @@ const VBrowserContainer: FC<{ className?: string }> = observer(
172
174
  disabled: state.scrollWidth - state.width - state.scrollLeft < 1,
173
175
  'tw-hidden': state.width === state.scrollWidth,
174
176
  })}
175
- // onClick={(e) => {
176
- // e.stopPropagation()
177
- // _handleScroll(150)
178
- // }}
179
- onMouseEnter={() => {
180
- rightInterval.current = setInterval(() => {
181
- _handleScroll(+1)
182
- }, 0) as any
183
- }}
184
- onMouseLeave={() => {
185
- clearInterval(rightInterval.current)
177
+ onClick={(e) => {
178
+ e.stopPropagation()
179
+ _handleScroll(160)
186
180
  }}
181
+ // onMouseEnter={() => {
182
+ // rightInterval.current = setInterval(() => {
183
+ // _handleScroll(+1)
184
+ // }, 0) as any
185
+ // }}
186
+ // onMouseLeave={() => {
187
+ // clearInterval(rightInterval.current)
188
+ // }}
187
189
  >
188
190
  <Right
189
191
  className={classNames(
@@ -57,23 +57,17 @@
57
57
  background-color: #dae7ff !important;
58
58
  }
59
59
 
60
- &.border::after {
61
- content: '';
62
- position: absolute;
63
- right: 0;
64
- width: 1px;
65
- height: 24px;
66
- background-color: #e8ecf3;
67
- }
68
-
69
- &:hover::after {
70
- content: none;
71
- }
72
-
73
60
  &-close:hover {
74
61
  filter: brightness(0);
75
62
  }
76
63
  }
64
+
65
+ &-divider {
66
+ width: 1px;
67
+ height: 24px;
68
+ background-color: #e8ecf3;
69
+ flex-shrink: 0;
70
+ }
77
71
  }
78
72
 
79
73
  &-left,
@@ -1,9 +1,11 @@
1
1
  /* eslint-disable dot-notation */
2
2
  import { get } from 'lodash'
3
3
  import { observer } from 'mobx-react'
4
- import React, { createRef, FC, useContext, useEffect } from 'react'
4
+ import React, { createRef, FC, lazy, Suspense, useContext, useEffect } from 'react'
5
+ import { Loading } from '../../loading'
5
6
  import { NProgress } from '../../n_progress'
6
7
  import BrowserContext from '../context/browser'
8
+ import BrowserWindowContext from '../context/browserWindow'
7
9
  import { CacheItem } from '../types'
8
10
  import { pages } from '../v_browser'
9
11
 
@@ -34,27 +36,27 @@ const WindowWrapper: FC<WindowWrapperProps> = ({ path }) => {
34
36
  const page = pages.find((p) => p.path === path)
35
37
  if (!page) throw new Error('[VBrowser] page not found: ' + path)
36
38
 
37
- NProgress.start()
38
- page
39
- .loader()
40
- .then((module) => {
41
- const Component = module.default
42
- const vNode = (
43
- <div
44
- className='v-browser-window-content'
45
- data-vbrowser-window={path}
46
- ref={createRef()}
47
- >
48
- <Component />
49
- </div>
50
- ) as CacheItem['vNode']
51
- browser['_setCache'](path, { vNode })
52
- browser['_fire']('show', w!)
53
- return null
54
- })
55
- .finally(() => {
56
- NProgress.done()
57
- })
39
+ const loading = (
40
+ <div className='tw-w-full tw-h-full tw-flex tw-items-center tw-justify-center'>
41
+ <Loading size='24' />
42
+ </div>
43
+ )
44
+ const Component = lazy(page.loader)
45
+ const vNode = (
46
+ <div
47
+ className='v-browser-window-content'
48
+ data-vbrowser-window={path}
49
+ ref={createRef()}
50
+ >
51
+ {/* <BrowserWindowContext.Provider value={page.path}> */}
52
+ <Suspense fallback={loading}>
53
+ <Component />
54
+ </Suspense>
55
+ {/* </BrowserWindowContext.Provider> */}
56
+ </div>
57
+ ) as CacheItem['vNode']
58
+ browser['_setCache'](path, { vNode })
59
+ browser['_fire']('show', w!)
58
60
  return
59
61
  }
60
62
 
@@ -4,7 +4,7 @@ import VBrowserContainer from './ui/index'
4
4
  import BrowserContext from './context/browser'
5
5
  import { CacheItem, VBrowserProps, VBrowserWindow } from './types'
6
6
  import { parse, stringify } from 'querystring'
7
- import { isEqual } from 'lodash'
7
+ import { debounce, isEqual } from 'lodash'
8
8
 
9
9
  // @ts-ignore
10
10
  const req = require.context('@/pages', true, __AUTO_ROUTER_REG__, 'lazy')
@@ -15,7 +15,7 @@ export const pages = req.keys().map((key) => {
15
15
  }
16
16
  })
17
17
 
18
- const STORAGE_KEY = 'vbrowser-cache'
18
+ export const VBROWSER_STORAGE_KEY = 'gm_vbrowser-cache'
19
19
 
20
20
  type EventName = 'error' | 'change' | 'close' | 'show'
21
21
 
@@ -35,6 +35,7 @@ class VBrowser implements VBrowser {
35
35
  <VBrowserContainer />
36
36
  </BrowserContext.Provider>
37
37
  )
38
+ // this.open = debounce(this.open).bind(this) as typeof this.open
38
39
  this._loadStash().then(async () => {
39
40
  await when(() => this.mounted)
40
41
  this.props.onReady && this.props.onReady()
@@ -150,16 +151,18 @@ class VBrowser implements VBrowser {
150
151
  // #region 打开新浏览器窗口
151
152
  if (target === '_blank') {
152
153
  // 避免继承
153
- const currentCache = JSON.parse(sessionStorage.getItem(STORAGE_KEY) || '{}')
154
+ const currentCache = JSON.parse(
155
+ sessionStorage.getItem(VBROWSER_STORAGE_KEY) || '{}'
156
+ )
154
157
  const newCache = { windows: [] as VBrowserWindow[], activeIndex: 0 }
155
158
  newCache.windows.push(...this.windows.filter((w) => !w.closeable))
156
159
  newCache.windows.push(w)
157
160
  newCache.activeIndex = newCache.windows.findIndex(
158
161
  (item) => item.path === (w as VBrowserWindow).path
159
162
  )
160
- sessionStorage.setItem(STORAGE_KEY, JSON.stringify(newCache))
163
+ sessionStorage.setItem(VBROWSER_STORAGE_KEY, JSON.stringify(newCache))
161
164
  window.open(`#${w.path}?${stringify(w.query || {})}`, '_blank')
162
- sessionStorage.setItem(STORAGE_KEY, JSON.stringify(currentCache))
165
+ sessionStorage.setItem(VBROWSER_STORAGE_KEY, JSON.stringify(currentCache))
163
166
  }
164
167
  // #endregion
165
168
  }
@@ -218,24 +221,18 @@ class VBrowser implements VBrowser {
218
221
  windows,
219
222
  activeIndex: this.activeIndex,
220
223
  })
221
- sessionStorage.setItem(STORAGE_KEY, string)
224
+ sessionStorage.setItem(VBROWSER_STORAGE_KEY, string)
222
225
  }
223
226
 
224
227
  // 恢复已开窗口
225
- private _loadStash() {
226
- return new Promise((resolve, reject) => {
227
- const { windows = [], activeIndex = 0 } = JSON.parse(
228
- sessionStorage.getItem(STORAGE_KEY) || '{}'
229
- )
230
- if (windows.length === 0) return resolve(undefined)
231
- this.windows = windows
232
- const onShow = (w: VBrowserWindow) => {
233
- this.switchWindow(activeIndex)
234
- this.off('show', onShow)
235
- resolve(undefined)
236
- }
237
- this.on('show', onShow)
238
- })
228
+ private async _loadStash() {
229
+ await new Promise((resolve) => setTimeout(resolve, 100))
230
+ const { windows = [], activeIndex = 0 } = JSON.parse(
231
+ sessionStorage.getItem(VBROWSER_STORAGE_KEY) || '{}'
232
+ )
233
+ if (windows.length === 0) return
234
+ this.windows = windows
235
+ this.open(windows[activeIndex])
239
236
  }
240
237
 
241
238
  /** 隐藏标签栏 */
package/yarn-error.log ADDED
@@ -0,0 +1,267 @@
1
+ Arguments:
2
+ /usr/local/bin/node /usr/local/bin/yarn add react-router-dom^5.2.0 --peer
3
+
4
+ PATH:
5
+ /opt/intel/openvino_2021/deployment_tools/model_optimizer:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/go/bin:/opt/X11/bin:/Library/Apple/usr/bin:/Users/jawei/google-cloud-sdk/bin:/Users/jawei/opt/anaconda3/bin:/Users/jawei/opt/anaconda3/condabin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/Users/jawei/flutter/bin:/Users/yuanzhiying/Library/flutter/bin:/usr/local/go/bin
6
+
7
+ Yarn version:
8
+ 1.22.10
9
+
10
+ Node version:
11
+ 14.15.1
12
+
13
+ Platform:
14
+ darwin x64
15
+
16
+ Trace:
17
+ Error: https://registry.npm.taobao.org/react-router-dom%5E5.2.0: [NOT_FOUND] react-router-dom^5.2.0 not found
18
+ at Request.params.callback [as _callback] (/usr/local/lib/node_modules/yarn/lib/cli.js:66988:18)
19
+ at Request.self.callback (/usr/local/lib/node_modules/yarn/lib/cli.js:140662:22)
20
+ at Request.emit (events.js:315:20)
21
+ at Request.<anonymous> (/usr/local/lib/node_modules/yarn/lib/cli.js:141634:10)
22
+ at Request.emit (events.js:315:20)
23
+ at Gunzip.<anonymous> (/usr/local/lib/node_modules/yarn/lib/cli.js:141556:12)
24
+ at Object.onceWrapper (events.js:421:28)
25
+ at Gunzip.emit (events.js:315:20)
26
+ at endReadableNT (_stream_readable.js:1327:12)
27
+ at processTicksAndRejections (internal/process/task_queues.js:80:21)
28
+
29
+ npm manifest:
30
+ {
31
+ "name": "@gm-pc/react",
32
+ "version": "1.7.4-alpha.0",
33
+ "description": "观麦前端基础组件库",
34
+ "author": "liyatang <liyatang@qq.com>",
35
+ "homepage": "https://github.com/gmfe/gm-pc#readme",
36
+ "license": "ISC",
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "main": "src/index.ts",
41
+ "module": "src/index.ts",
42
+ "types": "src/index.ts",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "git+https://github.com/gmfe/gm-pc.git"
46
+ },
47
+ "scripts": {
48
+ "test": "echo \"Error: run tests from root\" && exit 1"
49
+ },
50
+ "bugs": {
51
+ "url": "https://github.com/gmfe/gm-pc/issues"
52
+ },
53
+ "dependencies": {
54
+ "@gm-common/hooks": "^2.10.0",
55
+ "@gm-common/tool": "^2.10.0",
56
+ "@gm-pc/locales": "^1.7.4-alpha.0",
57
+ "big.js": "^6.0.1",
58
+ "classnames": "^2.2.5",
59
+ "lodash": "^4.17.19",
60
+ "modern-normalize": "^1.0.0",
61
+ "moment": "^2.29.1",
62
+ "react-window": "^1.8.5"
63
+ },
64
+ "devDependencies": {
65
+ "@types/react-router-dom": "^5.3.3",
66
+ "react": "^16.14.0",
67
+ "react-dom": "^16.14.0"
68
+ },
69
+ "peerDependencies": {
70
+ "big.js": "^6.0.1",
71
+ "classnames": "^2.2.5",
72
+ "lodash": "^4.17.19",
73
+ "modern-normalize": "^1.0.0",
74
+ "moment": "^2.29.1",
75
+ "react": "^16.14.0",
76
+ "react-dom": "^16.14.0",
77
+ "react-router-dom": "^5.2.0",
78
+ "react-window": "^1.8.5"
79
+ }
80
+ }
81
+
82
+ yarn manifest:
83
+ No manifest
84
+
85
+ Lockfile:
86
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
87
+ # yarn lockfile v1
88
+
89
+
90
+ "@babel/runtime@^7.0.0":
91
+ version "7.12.1"
92
+ resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.12.1.tgz?cache=0&sync_timestamp=1602799933339&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740"
93
+ integrity sha1-tBFqa2cR0BCy2tO3tuQ78bmVR0A=
94
+ dependencies:
95
+ regenerator-runtime "^0.13.4"
96
+
97
+ "@gm-common/hooks@^2.10.0":
98
+ version "2.10.0"
99
+ resolved "https://registry.npmmirror.com/@gm-common/hooks/download/@gm-common/hooks-2.10.0.tgz#c67e02875b4d266ef911e7828257d957e923826b"
100
+ integrity sha1-xn4Ch1tNJm75EeeCglfZV+kjgms=
101
+ dependencies:
102
+ "@gm-common/tool" "^2.10.0"
103
+ ts-config-gm-react-app "^3.4.5"
104
+
105
+ "@gm-common/tool@^2.10.0":
106
+ version "2.10.0"
107
+ resolved "https://registry.npmmirror.com/@gm-common/tool/download/@gm-common/tool-2.10.0.tgz#f4f512233ff1118eff8bbdeca9762f0e65ce26bd"
108
+ integrity sha1-9PUSIz/xEY7/i73sqXYvDmXOJr0=
109
+ dependencies:
110
+ lodash "^4.17.20"
111
+
112
+ "@gm-pc/locales@^1.7.4-alpha.0":
113
+ version "1.8.6-alpha.0"
114
+ resolved "https://registry.npmmirror.com/@gm-pc/locales/-/locales-1.8.6-alpha.0.tgz#9fc9918454ee774c0d61ff41f5b33343411dd3c3"
115
+ integrity sha512-iNAdAuu8bg7F3xB7Vr0DgvY+jpJ1lxkOTAOw+2BK3ljI1eRTbIYkqvazX9ImrdcaB+7R0sbDGUMeR8Ca7iRY3w==
116
+
117
+ "@types/history@^4.7.11":
118
+ version "4.7.11"
119
+ resolved "https://registry.npmmirror.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64"
120
+ integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==
121
+
122
+ "@types/prop-types@*":
123
+ version "15.7.4"
124
+ resolved "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
125
+ integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
126
+
127
+ "@types/react-router-dom@^5.3.3":
128
+ version "5.3.3"
129
+ resolved "https://registry.npmmirror.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83"
130
+ integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==
131
+ dependencies:
132
+ "@types/history" "^4.7.11"
133
+ "@types/react" "*"
134
+ "@types/react-router" "*"
135
+
136
+ "@types/react-router@*":
137
+ version "5.1.18"
138
+ resolved "https://registry.npmmirror.com/@types/react-router/-/react-router-5.1.18.tgz#c8851884b60bc23733500d86c1266e1cfbbd9ef3"
139
+ integrity sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==
140
+ dependencies:
141
+ "@types/history" "^4.7.11"
142
+ "@types/react" "*"
143
+
144
+ "@types/react@*":
145
+ version "17.0.39"
146
+ resolved "https://registry.npmmirror.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce"
147
+ integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==
148
+ dependencies:
149
+ "@types/prop-types" "*"
150
+ "@types/scheduler" "*"
151
+ csstype "^3.0.2"
152
+
153
+ "@types/scheduler@*":
154
+ version "0.16.2"
155
+ resolved "https://registry.npmmirror.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
156
+ integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
157
+
158
+ big.js@^6.0.1:
159
+ version "6.0.1"
160
+ resolved "https://registry.npm.taobao.org/big.js/download/big.js-6.0.1.tgz#9e0a2e8b1825ce006cd4a096d6f294738cd5cff6"
161
+ integrity sha1-ngouixglzgBs1KCW1vKUc4zVz/Y=
162
+
163
+ classnames@^2.2.5:
164
+ version "2.2.6"
165
+ resolved "https://registry.npm.taobao.org/classnames/download/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
166
+ integrity sha1-Q5Nb/90pHzJtrQogUwmzjQD2UM4=
167
+
168
+ csstype@^3.0.2:
169
+ version "3.0.10"
170
+ resolved "https://registry.npmmirror.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5"
171
+ integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==
172
+
173
+ "js-tokens@^3.0.0 || ^4.0.0":
174
+ version "4.0.0"
175
+ resolved "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
176
+ integrity sha1-GSA/tZmR35jjoocFDUZHzerzJJk=
177
+
178
+ lodash@^4.17.19, lodash@^4.17.20:
179
+ version "4.17.20"
180
+ resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
181
+ integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
182
+
183
+ loose-envify@^1.1.0, loose-envify@^1.4.0:
184
+ version "1.4.0"
185
+ resolved "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
186
+ integrity sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=
187
+ dependencies:
188
+ js-tokens "^3.0.0 || ^4.0.0"
189
+
190
+ "memoize-one@>=3.1.1 <6":
191
+ version "5.1.1"
192
+ resolved "https://registry.npm.taobao.org/memoize-one/download/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0"
193
+ integrity sha1-BHtuMZm1COrsA1BN5xIpuOsddcA=
194
+
195
+ modern-normalize@^1.0.0:
196
+ version "1.0.0"
197
+ resolved "https://registry.npm.taobao.org/modern-normalize/download/modern-normalize-1.0.0.tgz#539d84a1e141338b01b346f3e27396d0ed17601e"
198
+ integrity sha1-U52EoeFBM4sBs0bz4nOW0O0XYB4=
199
+
200
+ moment@^2.29.1:
201
+ version "2.29.1"
202
+ resolved "https://registry.npm.taobao.org/moment/download/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
203
+ integrity sha1-sr52n6MZQL6e7qZGnAdeNQBvo9M=
204
+
205
+ object-assign@^4.1.1:
206
+ version "4.1.1"
207
+ resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
208
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
209
+
210
+ prop-types@^15.6.2:
211
+ version "15.7.2"
212
+ resolved "https://registry.npm.taobao.org/prop-types/download/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
213
+ integrity sha1-UsQedbjIfnK52TYOAga5ncv/psU=
214
+ dependencies:
215
+ loose-envify "^1.4.0"
216
+ object-assign "^4.1.1"
217
+ react-is "^16.8.1"
218
+
219
+ react-dom@^16.14.0:
220
+ version "16.14.0"
221
+ resolved "https://registry.npm.taobao.org/react-dom/download/react-dom-16.14.0.tgz?cache=0&sync_timestamp=1603367590403&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact-dom%2Fdownload%2Freact-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89"
222
+ integrity sha1-etg47Cmnd/s8dcOhkPZhz5Kri4k=
223
+ dependencies:
224
+ loose-envify "^1.1.0"
225
+ object-assign "^4.1.1"
226
+ prop-types "^15.6.2"
227
+ scheduler "^0.19.1"
228
+
229
+ react-is@^16.8.1:
230
+ version "16.13.1"
231
+ resolved "https://registry.npm.taobao.org/react-is/download/react-is-16.13.1.tgz?cache=0&sync_timestamp=1603367576715&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact-is%2Fdownload%2Freact-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
232
+ integrity sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ=
233
+
234
+ react-window@^1.8.5:
235
+ version "1.8.6"
236
+ resolved "https://registry.npm.taobao.org/react-window/download/react-window-1.8.6.tgz#d011950ac643a994118632665aad0c6382e2a112"
237
+ integrity sha1-0BGVCsZDqZQRhjJmWq0MY4LioRI=
238
+ dependencies:
239
+ "@babel/runtime" "^7.0.0"
240
+ memoize-one ">=3.1.1 <6"
241
+
242
+ react@^16.14.0:
243
+ version "16.14.0"
244
+ resolved "https://registry.npm.taobao.org/react/download/react-16.14.0.tgz?cache=0&sync_timestamp=1603367592109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact%2Fdownload%2Freact-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d"
245
+ integrity sha1-lNd23dCqo32j7aj8W2sYpMmjEU0=
246
+ dependencies:
247
+ loose-envify "^1.1.0"
248
+ object-assign "^4.1.1"
249
+ prop-types "^15.6.2"
250
+
251
+ regenerator-runtime@^0.13.4:
252
+ version "0.13.7"
253
+ resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz?cache=0&sync_timestamp=1595456311465&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
254
+ integrity sha1-ysLazIoepnX+qrrriugziYrkb1U=
255
+
256
+ scheduler@^0.19.1:
257
+ version "0.19.1"
258
+ resolved "https://registry.npm.taobao.org/scheduler/download/scheduler-0.19.1.tgz?cache=0&sync_timestamp=1603367591660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fscheduler%2Fdownload%2Fscheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196"
259
+ integrity sha1-Tz4u0sGn1laB9MhU+oxaHMtA8ZY=
260
+ dependencies:
261
+ loose-envify "^1.1.0"
262
+ object-assign "^4.1.1"
263
+
264
+ ts-config-gm-react-app@^3.4.5:
265
+ version "3.4.7"
266
+ resolved "https://registry.npmjs.org/ts-config-gm-react-app/-/ts-config-gm-react-app-3.4.7.tgz#51decbf847c991ae8e3bd950f3f84cfb0523ba4b"
267
+ integrity sha512-1XOMmAIEiUr2R0JTasF30zj5ZRZgVTOx/ycZJOh2xusQCYC4n1/wGbXfEzm8Dzhv2YSWHEWPVHpytAM3mYsu9Q==