@gm-pc/react 1.11.1-beta.0 → 1.12.1

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.11.1-beta.0",
3
+ "version": "1.12.1",
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.11.1-beta.0",
27
+ "@gm-pc/locales": "^1.12.1",
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": "6aac986980cb2d9e2f32ac10171846f5b6beea41"
51
+ "gitHead": "9d0ca9956bfdeee6bb4775ab56e8c15d5b4f5e94"
52
52
  }
@@ -275,6 +275,13 @@ class MoreSelectBase<V extends string | number = string> extends Component<
275
275
  )
276
276
  }
277
277
 
278
+ private _handleMoreSelectClick = () => {
279
+ const { onClick, selected } = this.props
280
+ if (typeof onClick === 'function') {
281
+ return onClick(selected)
282
+ }
283
+ }
284
+
278
285
  render() {
279
286
  const {
280
287
  isInPopup,
@@ -292,6 +299,7 @@ class MoreSelectBase<V extends string | number = string> extends Component<
292
299
  return (
293
300
  <div
294
301
  ref={this._baseRef}
302
+ onClick={this._handleMoreSelectClick}
295
303
  className={classNames(
296
304
  'gm-more-select',
297
305
  {
@@ -73,6 +73,7 @@ class MoreSelect<V = any> extends Component<MoreSelectProps<V>> {
73
73
  multiple,
74
74
  isGroupList,
75
75
  onSearch,
76
+ onClick,
76
77
  renderListFilter,
77
78
  ...rest
78
79
  } = this.props
@@ -109,6 +110,7 @@ class MoreSelect<V = any> extends Component<MoreSelectProps<V>> {
109
110
  return (
110
111
  <MoreSelectBase<V>
111
112
  {...rest}
113
+ onClick={onClick}
112
114
  ref={this._moreSelectBaseRef}
113
115
  data={oData}
114
116
  selected={oSelected}
@@ -95,6 +95,9 @@ const store = observable({
95
95
  setMulSelected(selected: any) {
96
96
  this.mulSelected = selected
97
97
  },
98
+ clickFn(selected: any) {
99
+ this.selected = selected
100
+ },
98
101
  })
99
102
 
100
103
  export const ComMoreSelect = () => (
@@ -249,6 +252,23 @@ export const ComMoreSelectWithMultipleByValue = () => (
249
252
  />
250
253
  </div>
251
254
  )
255
+
256
+ export const ComMoreSelectClick = () => (
257
+ <>
258
+ <MoreSelect<number>
259
+ isGroupList
260
+ multiple
261
+ data={store.dataGroup.slice()}
262
+ onClick={store.clickFn}
263
+ selected={store.selected}
264
+ onSelect={(selected) => {
265
+ store.setSelected(selected)
266
+ }}
267
+ />
268
+ <div>{_.map(store.selected, (item) => item.text).join('')}</div>
269
+ </>
270
+ )
271
+
252
272
  export const ComMoreSelectWithMultipleAndOnSearch = () => {
253
273
  return (
254
274
  <MoreSelect<number>
@@ -70,6 +70,8 @@ interface MoreSelectBaseProps<V extends string | number = string>
70
70
 
71
71
  /** 搜索回调 */
72
72
  onSearch?(searchWord: string, data: MoreSelectGroupDataItem<V>[]): Promise<void> | void
73
+ /** 点击回调 */
74
+ onClick?(selected: MoreSelectSelected<V>[]): void
73
75
 
74
76
  /** 自定义搜索过滤展示的数据 */
75
77
  renderListFilter?(
@@ -94,6 +96,8 @@ interface MoreSelectProps<V extends string | number = string>
94
96
  onChange?(value: V | V[]): void
95
97
  /** 搜索回调 */
96
98
  onSearch?(searchWord: string, data: MoreSelectData<V>): Promise<void> | void
99
+ /** 点击回调 */
100
+ onClick?(selected: MoreSelectSelected<V>[]): void
97
101
 
98
102
  /** 自定义搜索过滤展示的数据 */
99
103
  renderListFilter?(data: MoreSelectData<V>, searchValue: string): MoreSelectData<V>
@@ -101,6 +101,7 @@ class Price extends Component<PriceProps> {
101
101
  keepZero: boolean,
102
102
  isFenUnit: boolean
103
103
  ): string => {
104
+ if (isNaN(value)) return ''
104
105
  const divRatio = isFenUnit ? 100 : 1
105
106
  const result = Big(Math.abs(value)).div(divRatio).toFixed(precision)
106
107
  return keepZero ? result : `${parseFloat(result)}`
@@ -14,7 +14,7 @@ export interface VBrowserWindow {
14
14
  export interface VBrowserProps {
15
15
  /** 窗口数量限制 */
16
16
  maxLength?: number
17
- /** */
17
+ /** 准备就绪 */
18
18
  onReady?: Function
19
19
  /** 重新打开vBrowser时恢复已打开窗口, 默认为true */
20
20
  restore?: boolean
@@ -26,8 +26,15 @@ export interface VBrowserProps {
26
26
  ) => void
27
27
  /** 窗口打开/切换前调用,返回false会阻止窗口打开/切换 */
28
28
  auth?: (from?: VBrowserWindow, to?: VBrowserWindow) => Promise<boolean> | boolean
29
+ /**
30
+ * 错误码参考
31
+ * code: 0, message: '超过最大允许的窗口数量'
32
+ */
29
33
  onError?: (error: { code: number; message: string }) => void
34
+ /** 打开窗口如果没有传入标题,则使用此方法取标题 */
30
35
  autoTitle?: (path: string) => string
36
+ /** 不以子窗口形式展示的页面名单(视觉上), 这些页面会子窗口形式打开,但是视觉上会隐藏子窗口标签栏,且在离开页面时自动close掉,以达到子页面不在vbrowser中的视觉效果 */
37
+ ignoredPath?: Array<string | RegExp>
31
38
  }
32
39
 
33
40
  export interface CacheItem {
@@ -71,21 +71,27 @@ const VBrowserContainer: FC<{ className?: string }> = observer(
71
71
  browser['_portal']
72
72
  )
73
73
  )
74
+ const ignored = browser.props.ignoredPath?.find((p) =>
75
+ typeof p === 'string'
76
+ ? p === browser.activeWindow?.path
77
+ : p.test(browser.activeWindow?.path!)
78
+ )
74
79
  return (
75
80
  <div
76
81
  className={classNames('v-browser tw-relative', {
77
- 'hiding-tabs': browser['_hidingTabs'],
82
+ 'hiding-tabs': browser['_hidingTabs'] || ignored,
78
83
  })}
79
84
  >
80
85
  <div
81
86
  className={classNames(
82
87
  'v-browser-tabs tw-w-full tw-flex tw-items-center tw-overflow-x-auto tw-shadow',
83
- { 'tw-hidden': browser['_hidingTabs'] }
88
+ { 'tw-hidden': browser['_hidingTabs'] || ignored }
84
89
  )}
85
90
  >
86
91
  <div
87
92
  className={classNames('v-browser-tabs-left tw-font-sm tw-px-2.5', {
88
93
  disabled: state.scrollLeft === 0,
94
+ 'tw-hidden': state.width === state.scrollWidth,
89
95
  })}
90
96
  // onClick={(e) => {
91
97
  // e.stopPropagation()
@@ -133,8 +139,9 @@ const VBrowserContainer: FC<{ className?: string }> = observer(
133
139
  {w.faviconURL && (
134
140
  <img
135
141
  src={w.faviconURL}
136
- className='tw-w-3.5 tw-h-3.5 tw-mr-0.5'
137
- style={{ color: '#6A6A6A' }}
142
+ className={classNames('tw-w-3.5 tw-h-3.5 tw-mr-0.5', {
143
+ 'tw-opacity-70': i !== browser.activeIndex,
144
+ })}
138
145
  />
139
146
  )}
140
147
  <span>{w.title || '-'}</span>
@@ -163,6 +170,7 @@ const VBrowserContainer: FC<{ className?: string }> = observer(
163
170
  <div
164
171
  className={classNames('v-browser-tabs-right tw-font-sm tw-px-2.5', {
165
172
  disabled: state.scrollWidth - state.width - state.scrollLeft === 0,
173
+ 'tw-hidden': state.width === state.scrollWidth,
166
174
  })}
167
175
  // onClick={(e) => {
168
176
  // e.stopPropagation()
@@ -188,7 +196,7 @@ const VBrowserContainer: FC<{ className?: string }> = observer(
188
196
  <div className='v-browser-window-wrapper'>
189
197
  <div
190
198
  className={classNames('v-browser-window', className, {
191
- 'hiding-tabs': browser['_hidingTabs'],
199
+ 'hiding-tabs': browser['_hidingTabs'] || ignored,
192
200
  })}
193
201
  ref={containerRef}
194
202
  {...props}
@@ -15,17 +15,17 @@
15
15
  z-index: 100;
16
16
  color: var(--v-browser-tabs-text-color);
17
17
  user-select: none;
18
- padding: 0 40px;
18
+ padding: 0;
19
19
 
20
20
  &::-webkit-scrollbar {
21
- display: none; /* for Chrome, Safari, and Opera */
21
+ display: none;
22
22
  }
23
23
 
24
24
  &-left,
25
25
  &-right {
26
26
  width: 40px;
27
27
  cursor: pointer;
28
- position: absolute;
28
+ // position: absolute;
29
29
  background-color: var(--v-browser-tabs-bg);
30
30
  height: var(--v-browser-tabs-height);
31
31
  display: flex;
@@ -0,0 +1,128 @@
1
+ import { Meta, Story, Canvas } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='窗口/VBrowser(页签)' />
4
+
5
+ # Vbrowser
6
+
7
+ VBrowser 即虚拟浏览器,用以实现页签形式的多窗口管理。
8
+
9
+ ## 使用方式
10
+
11
+ 实例化一个 VBrowser, 接受以下参数:
12
+
13
+ ```
14
+ import { VBrowser } from '@gm-pc/react'
15
+ const vbrowser = new VBrowser({
16
+ /** 窗口数量限制 */
17
+ maxLength?: number
18
+ /** 准备就绪 */
19
+ onReady?: Function
20
+ /** 重新打开vBrowser时恢复已打开窗口, 默认为true */
21
+ restore?: boolean
22
+ /** 窗口变化事件 */
23
+ onChange?: (
24
+ from: VBrowserWindow | undefined,
25
+ to: VBrowserWindow,
26
+ windows: VBrowserWindow[]
27
+ ) => void
28
+ /** 窗口打开/切换前调用,返回false会阻止窗口打开/切换 */
29
+ auth?: (from?: VBrowserWindow, to?: VBrowserWindow) => Promise<boolean> | boolean
30
+ /**
31
+ * 错误码参考
32
+ * code: 0, message: '超过最大允许的窗口数量'
33
+ */
34
+ onError?: (error: { code: number; message: string }) => void
35
+ /** 打开窗口如果没有传入标题,则使用此方法取标题 */
36
+ autoTitle?: (path: string) => string
37
+ /** 不以子窗口形式展示的页面名单(视觉上), 这些页面会子窗口形式打开,但是视觉上会隐藏子窗口标签栏,且在离开页面时自动close掉,以达到子页面不在vbrowser中的视觉效果 */
38
+ ignoredPath?: Array<string | RegExp>
39
+ })
40
+ ```
41
+
42
+ vbrowser 暴露了以下属性和方法,详细信息见类型声明/代码提示:
43
+
44
+ 属性
45
+
46
+ - `props`
47
+
48
+ 实例化传入的参数;
49
+
50
+ - `windows`
51
+
52
+ 已打开的窗口列表;
53
+
54
+ - `activeIndex`
55
+
56
+ 活动窗口索引;
57
+
58
+ - `activeWindow`
59
+
60
+ 活动窗口;
61
+
62
+ - `ui`
63
+
64
+ UI 组件,放在页面要显示到的位置,只读;
65
+
66
+ - `mounted`
67
+
68
+ `ui`是否已挂载;
69
+
70
+ 方法
71
+
72
+ - `open`
73
+
74
+ 打开窗口;
75
+
76
+ - `close`
77
+
78
+ 关闭窗口;
79
+
80
+ - `switchWindow`
81
+
82
+ 切换窗口;
83
+
84
+ - `showTabs`
85
+
86
+ 显示窗口管理栏;
87
+
88
+ - `hideTabs`
89
+
90
+ 隐藏窗口管理栏,可以用于进入全屏模式的场景;
91
+
92
+ - `on`
93
+
94
+ 事件监听, `'error' | 'change' | 'close' | 'show'`,分别对应错误、窗口切换、窗口关闭、窗口激活事件;
95
+
96
+ - `off`
97
+
98
+ 取消监听;
99
+
100
+ ## Hook 函数
101
+
102
+ 当前提供的 Hook 函数有:
103
+
104
+ - `useWindowEffect`
105
+
106
+ 使用方式同 `useEffect`,功能: 窗口激活时、deps 更新时,触发 fn 执行; 窗口失活时执行 fn 返回的销毁函数; 如果子窗口为失活状态,不观察 deps 的更新;
107
+
108
+ ## 路由跳转
109
+
110
+ erp 中做了向后兼容,可以继续使用原有的`history.push`等方法来跳转页面,其会被表现为打开或切换子窗口,也可以直接使用上述 vbrowser 的方法来跳转页面;
111
+
112
+ 需要注意的是如果想在新浏览器窗口中打开某个页面,不建议使用`window.open`方法,`window.open`打开的浏览器窗口会加载缓存恢复 VBrowser 的子窗口,
113
+ 如果其行为不符合预期可以考虑传入 target 到 vbrowser.open 来打开新浏览器窗口:
114
+
115
+ ```
116
+ vbrowser.open('/order/order_manage/create' , { target: '_blank' })
117
+ ```
118
+
119
+ ## 注意事项
120
+
121
+ VBrowser 中打开的窗口中的组件,其生命周期会和预期略有不同:
122
+
123
+ 多窗口中的子页面组件因为被缓存,原来的 `useEffect` 受到影响,即 effect 仅在子窗口创建时触发,销毁函数仅在子窗口关闭时触发;子窗口失活时依然会观察 deps,并触发 effect;
124
+
125
+ 基本大多数情况下可以继续使用 `useEffect`,某些场景下则需要改用 `useWindowEffect`,比如
126
+
127
+ - 希望窗口激活、失活时初始化数据;
128
+ - 希望失活组件停止观察 useEffect 的 deps,比如在订单列表和商品列表页面都观察了`query.q`,那么订单列表页面的`query.q`变化后商品列表页面会做响应,这是没有必要的;
@@ -45,7 +45,7 @@ class VBrowser implements VBrowser {
45
45
 
46
46
  props!: VBrowserProps
47
47
 
48
- /** 窗口列表 */
48
+ /** 子窗口列表 */
49
49
  windows: VBrowserWindow[] = []
50
50
  /** 选中窗口索引 */
51
51
  activeIndex = -1
@@ -57,6 +57,16 @@ class VBrowser implements VBrowser {
57
57
  /** 切换已打开窗口 */
58
58
  switchWindow(w: number | VBrowserWindow) {
59
59
  const oldWindow = this.activeWindow
60
+
61
+ const ignored = this.props.ignoredPath?.find((p) =>
62
+ typeof p === 'string' ? p === oldWindow?.path : p.test(oldWindow?.path!)
63
+ )
64
+ if (ignored) {
65
+ const i = this.windows.indexOf(oldWindow!)
66
+ this.windows.splice(i, 1)
67
+ delete this._cache[i]
68
+ }
69
+
60
70
  if (typeof w === 'number') {
61
71
  this.activeIndex = w
62
72
  } else {
@@ -73,7 +83,7 @@ class VBrowser implements VBrowser {
73
83
  this._stash()
74
84
  }
75
85
 
76
- /** 打开新子窗口,路由已打开则判断query是否相等,相等则切换,不相等则销毁重新加载,未打开则新建子窗口
86
+ /** 打开新子窗口, 子窗口已存在则判断query是否相等,相等则切换,不相等则隐性销毁重新加载;子窗口不存在则新建子窗口;
77
87
  *
78
88
  * target为'_blank'时,新开浏览器窗口
79
89
  */
@@ -116,6 +126,7 @@ class VBrowser implements VBrowser {
116
126
  this.props.onError({ code: 0, message: '超过最大允许的窗口数量' })
117
127
  return
118
128
  }
129
+
119
130
  this.windows.push(w)
120
131
  } else {
121
132
  /**
@@ -153,7 +164,7 @@ class VBrowser implements VBrowser {
153
164
  // #endregion
154
165
  }
155
166
 
156
- /** 关闭窗口 */
167
+ /** 关闭子窗口 */
157
168
  close(i: number | VBrowserWindow) {
158
169
  if (typeof i !== 'number') {
159
170
  i = this.windows.findIndex((item) => item.path === (i as VBrowserWindow).path)
@@ -1,9 +1,9 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
- <title>icon/左右滑动/禁用@2x</title>
3
+ <title>icon/左右滑动@2x</title>
4
4
  <g id="控件" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round">
5
- <g id="icon/左右滑动/禁用" stroke="#575757" stroke-width="1.5">
6
- <path d="M7.8822128,6.07106781 L7.8822128,13.8710678 C7.8822128,13.9815248 7.97175585,14.0710678 8.0822128,14.0710678 L15.8822128,14.0710678 L15.8822128,14.0710678" id="路径-4" transform="translate(11.882213, 10.071068) rotate(-315.000000) translate(-11.882213, -10.071068) "></path>
5
+ <g id="icon/左右滑动/左" stroke="#575757" stroke-width="2">
6
+ <path d="M7.07106781,5.07106781 L7.07106781,14.8710678 C7.07106781,14.9815248 7.16061086,15.0710678 7.27106781,15.0710678 L17.0710678,15.0710678 L17.0710678,15.0710678" id="路径-4" transform="translate(12.071068, 10.071068) rotate(-315.000000) translate(-12.071068, -10.071068) "></path>
7
7
  </g>
8
8
  </g>
9
9
  </svg>
@@ -1,9 +1,9 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
- <title>icon/左右滑动/禁用@2x</title>
3
+ <title>icon/左右滑动@2x</title>
4
4
  <g id="控件" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round">
5
- <g id="icon/左右滑动/右/禁用" stroke="#575757" stroke-width="1.5">
6
- <path d="M3.8822128,6.07106781 L3.8822128,13.8710678 C3.8822128,13.9815248 3.97175585,14.0710678 4.0822128,14.0710678 L11.8822128,14.0710678 L11.8822128,14.0710678" id="路径-4" transform="translate(7.882213, 10.071068) rotate(-135.000000) translate(-7.882213, -10.071068) "></path>
5
+ <g id="icon/左右滑动/右" stroke="#575757" stroke-width="2">
6
+ <path d="M3.07106781,5.07106781 L3.07106781,14.8710678 C3.07106781,14.9815248 3.16061086,15.0710678 3.27106781,15.0710678 L13.0710678,15.0710678 L13.0710678,15.0710678" id="路径-4" transform="translate(8.071068, 10.071068) scale(-1, 1) rotate(-315.000000) translate(-8.071068, -10.071068) "></path>
7
7
  </g>
8
8
  </g>
9
9
  </svg>
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==
@@ -1,10 +0,0 @@
1
- import React from 'react'
2
- import { observable } from 'mobx'
3
-
4
- const store = observable({})
5
-
6
- export const ComSwitch = () => <div />
7
-
8
- export default {
9
- title: '表单/V-Browser',
10
- }