Compare commits

...

939 Commits

Author SHA1 Message Date
xxq250 3800a62810 Merge pull request '更新对不使用/使用区块链的判断适配' (#506) from Nigel/forgeplus-react:master_zxh into dev_nanda 2023-02-04 18:10:18 +08:00
zhangxunhui fcaaef137a 调整了前端对使用和未使用确权项目的支持 2023-02-04 11:08:53 +08:00
zhangxunhui c2a21b2780 change getData file 2023-02-03 14:16:09 +08:00
xxq250 266036cd2a Merge pull request '对区块链相关功能的修改' (#505) from Nigel/forgeplus-react:master_zxh into dev_nanda 2023-02-02 21:51:08 +08:00
zhangxunhui 016b69f5ed 删除了个人赞助信息修改的链接 2023-02-02 21:37:12 +08:00
zhangxunhui 95ebb0aba2 修改了填写项目创始人token占比的文字描述 2023-02-02 21:32:20 +08:00
zhangxunhui 11d0ec97d9 change project name to identifier 2023-02-02 20:45:01 +08:00
xxq250 ed4d11876d Merge pull request '增加了对项目中显示贡献者贡献度的支持' (#504) from Nigel/forgeplus-react:master_zxh into dev_nanda 2023-02-02 17:16:22 +08:00
zhangxunhui 19d025b602 添加了对项目中用户贡献度显示的支持 2023-02-02 17:01:35 +08:00
xxq250 fbf8e7784b Merge pull request '更新了贡献确权(blockchain)相关代码' (#503) from Nigel/forgeplus-react:master_zxh into dev_nanda 2023-01-31 10:31:04 +08:00
zhangxunhui 48d042ad64 修改了blockchain相关前端代码 2023-01-30 21:17:15 +08:00
zhangxunhui 88087b4d62 修改了change_blockchain_type函数 2023-01-30 20:38:09 +08:00
zhangxunhui 806b0e5438 update user infos.js for blockchain 2023-01-30 20:24:04 +08:00
zhangxunhui 95201ec88d 修改了加入确权机制的文字说明 2023-01-29 08:20:29 +08:00
xxq250 99efe31609 Merge pull request 'nanda版本' (#502) from qyzh1996/forgeplus-react:sponsor into dev_nanda 2023-01-12 22:19:42 +08:00
xxq250 bf4165e92c Merge branch 'dev_nanda' of https://gitlink.org.cn/Gitlink/forgeplus-react into master_zxh 2023-01-12 22:18:53 +08:00
xxq250 cd2b383b0d Merge pull request '区块链版本' (#501) from Nigel/forgeplus-react:master_zxh into dev_nanda 2023-01-12 21:32:26 +08:00
xxq250 5b109d8afa 修正合并错误 2023-01-12 21:27:11 +08:00
xxq250 da5305cb2d Merge branch 'dev_nanda' of https://gitlink.org.cn/Gitlink/forgeplus-react into master_zxh
 Conflicts:
	.idea/workspace.xml
	package.json
	src/forge/New/Index.js
	src/forge/Order/order_form.js
	src/forge/users/Infos.js
2023-01-12 21:12:13 +08:00
xxq250 a9cfa2b56f Merge pull request 'nanda版本' (#500) from qyzh1996/forgeplus-react:sponsor into dev_nanda 2023-01-12 21:07:16 +08:00
xxq250 002156fa61 修正合并错误 2023-01-12 20:52:53 +08:00
xxq250 9e65e9332c Merge branch 'pre_gitlink_server' of https://gitlink.org.cn/Gitlink/forgeplus-react into sponsor
 Conflicts:
	.gitignore
	package-lock.json
	package.json
	src/App.js
	src/AppConfig.js
	src/forge/Main/sub/DetailBanner.jsx
	src/forge/users/Infos.js
	src/forge/users/InfosUser.js
2023-01-12 18:50:53 +08:00
caishi 8f75ed4637 动态-新增内容显示 2023-01-06 10:52:57 +08:00
caishi 2731d54fd1 issue 2023-01-05 13:26:19 +08:00
caishi b1d13f4014 个人主页-修改简介 2022-12-30 13:53:36 +08:00
caishi acb87c7e09 update 2022-12-30 11:59:33 +08:00
caishi c0bbe817d8 merge 2022-12-29 11:06:29 +08:00
caishi ef91e6ece9 add 2022-12-29 11:06:05 +08:00
tongChong e789c8365b Merge pull request '增加百度统计,优化项目加载文件,合并css文件,react调用cdn资源' (#493) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2022-12-28 16:14:37 +08:00
何童崇 be3157f9c4 优化项目加载文件,合并css文件,react调用cdn资源 2022-12-28 15:33:19 +08:00
caishi 7cf9e7b6f1 update 同上 2022-12-27 14:18:46 +08:00
caishi 6610f7f065 第三方登录-第二版 2022-12-26 15:26:57 +08:00
caishi a446c45bff merge 2022-12-14 16:02:23 +08:00
tongChong 90898afc81 Merge pull request '更新' (#487) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-12-14 15:42:16 +08:00
caishi 7588cab079 登录后不能进入注册登录等页面 2022-12-14 15:07:38 +08:00
谢思 aa0f02b402 优化导航栏样式,超出显示区域左右滚动 2022-12-12 17:25:05 +08:00
caishi 156b2fd5e3 组织设置为私有+弹框 2022-12-12 16:05:00 +08:00
caishi fd042dec1b style 2022-12-09 15:26:14 +08:00
caishi a1ef6862a0 merge 2022-12-09 14:57:18 +08:00
xxq250 004829eee3 Merge pull request '更新' (#484) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-12-09 14:57:57 +08:00
caishi f37c2b5670 register panel position 2022-12-09 14:56:33 +08:00
caishi 6a2d04c9a5 third login tip 2022-12-09 14:45:38 +08:00
谢思 400ce3f8cd 添加登录注册找回密码等6个网页标题,新增wiki显示文案错误,从我关注的/关注我的跳回个人主页之后无tab导航问题 2022-12-09 14:32:19 +08:00
caishi 56ff7958b4 change 2022-12-08 16:45:34 +08:00
caishi 27d93bd964 merge 2022-12-08 14:52:41 +08:00
xxq250 3bec9b5a1c Merge pull request '更新' (#483) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-12-08 14:53:47 +08:00
caishi f688ef5258 新建文件-content用base64加密 2022-12-08 14:50:49 +08:00
谢思 37499aa201 网页标题修改 2022-12-08 11:01:52 +08:00
谢思 7a48179753 Merge branch 'gitlink_server' of https://git.trustie.net/durian/forgeplus-react into gitlink_server 2022-12-07 18:33:29 +08:00
谢思 ec47699ef8 网页标题修改-个人主页/组织/项目点赞关注fork列表 2022-12-07 18:32:52 +08:00
caishi 311c3d072c pull 2022-12-05 09:34:25 +08:00
caishi 9ed47edb27 save 2022-12-05 09:32:11 +08:00
谢思 308a75ac0b 代码库上传文件放开文件类型限制 2022-12-02 11:36:36 +08:00
tongChong fa47fcf0f6 Merge pull request '代码库上传文件限制文件类型' (#481) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-12-02 11:22:32 +08:00
谢思 4f29bb1c3d Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into gitlink_server 2022-12-02 10:22:31 +08:00
caishi 2c07870f9e issue筛选条件清除 2022-11-30 11:07:44 +08:00
谢思 28e0afedef 代码库上传文件限制文件类型 2022-11-29 16:46:33 +08:00
caishi 4f05ce683a remove console 2022-11-29 12:23:16 +08:00
tongChong 2873c4425d Merge pull request 'issue' (#480) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-11-28 16:08:37 +08:00
谢思 6547657e45 仓库readme展示优化、组织项目列表翻页组件bug、关于我们-合作伙伴样式优化以及参数调整 2022-11-28 16:01:43 +08:00
caishi ed1b881cf4 issue 2022-11-28 15:46:05 +08:00
谢思 4b381b8b56 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into gitlink_server 2022-11-28 15:45:11 +08:00
谢思 6278d0651c Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into gitlink_server 2022-11-28 15:25:49 +08:00
caishi 008bab7131 修改资料-提示 2022-11-25 16:22:34 +08:00
caishi 78a762f775 add supplyPhone modal 2022-11-25 15:57:26 +08:00
谢思 8d92f2962b Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into gitlink_server 2022-11-25 15:37:53 +08:00
caishi c23dbaa492 更新手机号 2022-11-24 17:37:54 +08:00
caishi 3e56087c33 退出、登录反复情况下头像下拉框的内容无法渲染 2022-11-22 15:27:58 +08:00
谢思 f1a2e11969 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into gitlink_server 2022-11-22 13:53:13 +08:00
tongChong 2e2fbda9c3 Merge pull request '邀请成员403的接口特殊处理' (#477) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2022-11-21 10:15:48 +08:00
何童崇 7e71484574 邀请成员403的接口特殊处理 2022-11-21 10:12:43 +08:00
何童崇 c725fe3d40 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2022-11-18 10:47:21 +08:00
何童崇 e9c6a74ada 修改package.json 2022-11-18 10:47:01 +08:00
谢思 4062edebcc Merge branch 'gitlink_server' of http://106.75.45.236:3000/durian/forgeplus-react into gitlink_server 2022-11-18 10:23:44 +08:00
谢思 c877253b6b readme显示效果 2022-11-18 10:19:31 +08:00
tongChong 3e3ad0531a Merge pull request '更新' (#476) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-11-17 17:05:17 +08:00
谢思 382c6fc90a Merge branch 'feature_md' of http://106.75.45.236:3000/tongChong/forgeplus-react into gitlink_server 2022-11-17 15:53:13 +08:00
何童崇 0d9cfd16fb 优化MD编辑器 2022-11-17 15:54:35 +08:00
谢思 56ce9cfbec 首页banner跳转+md换行样式恢复 2022-11-17 15:52:27 +08:00
谢思 1608f30ba6 设置页添加修改邮箱跳转入口 2022-11-17 13:56:12 +08:00
谢思 21a66aaecc Merge branch 'feature_md' of http://106.75.45.236:3000/tongChong/forgeplus-react into gitlink_server 2022-11-16 15:13:43 +08:00
何童崇 d35d0aacdd Merge branch 'gitlink_server' of https://gitlink.org.cn/durian/forgeplus-react into feature_md 2022-11-16 15:13:06 +08:00
谢思 bc7cb9be9f 修改项目列表搜索提示语句 2022-11-16 15:12:35 +08:00
何童崇 f46399fe5f 修改MD编辑器 2022-11-16 15:11:58 +08:00
谢思 79e1d6247a issue 2022-11-16 11:37:55 +08:00
何童崇 f13830faca Merge branch 'gitlink_server' of https://git.trustie.net/caishi/forgeplus-react into feature_md 2022-11-15 16:08:00 +08:00
caishi 069af4e5f7 issue 53976 2022-11-15 15:58:46 +08:00
caishi 94ffb5d299 settings接口重复调用 2022-11-15 15:50:35 +08:00
何童崇 c809f19f0b Merge branch 'gitlink_server' of https://gitlink.org.cn/durian/forgeplus-react into feature_md 2022-11-15 15:19:58 +08:00
caishi c338db5dbf update webIDE login 2022-11-15 15:17:03 +08:00
谢思 0a32913247 手机号注册登录+声明功能优化 2022-11-15 15:16:27 +08:00
何童崇 cf17f1c2fb Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into feature_md 2022-11-15 15:12:32 +08:00
何童崇 6a552fd2d5 修改markdown编辑器 2022-11-15 15:11:23 +08:00
caishi 5347be0614 webIDE 点击时判断是否登录 2022-11-14 16:44:53 +08:00
caishi eac7c739ae Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2022-11-14 16:17:50 +08:00
caishi 824392407b 针对webIDE进行埋点 2022-11-14 16:17:44 +08:00
何童崇 45247e6a03 增加个人主页和项目的title设置 2022-11-14 09:54:52 +08:00
tongChong c2bb54738a Merge pull request '更新' (#473) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-11-11 15:02:39 +08:00
谢思 5fa0d547af 更新 2022-11-11 14:52:20 +08:00
谢思 3f63707fce Merge branch 'gitlink_server' of http://106.75.45.236:3000/tongChong/forgeplus-react into gitlink_server 2022-11-11 11:25:07 +08:00
何童崇 c18311d4a6 修改创建PR时默认指向分支 2022-11-11 11:26:45 +08:00
谢思 30b0ef6393 Merge branch 'gitlink_server' of http://106.75.45.236:3000/tongChong/forgeplus-react into gitlink_server 2022-11-09 09:48:29 +08:00
谢思 f6a004c202 意见反馈弹窗 2022-11-09 09:48:14 +08:00
何童崇 f1df8baf96 修改PR发送逻辑 2022-11-08 17:29:03 +08:00
tongChong 2f45383f46 Merge pull request '更新' (#470) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-11-08 10:29:56 +08:00
谢思 ba7333f1ad 更新 2022-11-03 14:47:52 +08:00
tongChong 0a19859bf7 Merge pull request '更新' (#466) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-10-28 16:26:28 +08:00
durian f77cf31019 Merge pull request '更新' (#6) from feature_setting_issue into gitlink_server 2022-10-28 15:57:07 +08:00
谢思 1e11999ff9 更改邮箱页面调整文案 2022-10-28 15:48:24 +08:00
谢思 7c9f01ea74 个人设置页issue更改 2022-10-28 11:43:18 +08:00
谢思 e7b4fb030e 首页devops宣传图更新 2022-10-27 10:49:18 +08:00
谢思 8cf681d71b pull代码 2022-10-27 10:23:10 +08:00
谢思 cd7ce0e7e6 Merge branch 'gitlink_server' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_setting_issue 2022-10-27 10:16:54 +08:00
何童崇 c11b1fcfbe 恢复对项目新建的修改 2022-10-27 10:17:06 +08:00
谢思 c46c8c976b 更改路由 2022-10-27 10:15:21 +08:00
何童崇 a757801658 恢复项目修改 2022-10-27 10:13:34 +08:00
谢思 6b47ae67ea pull代码 2022-10-27 10:04:35 +08:00
何童崇 2565856622 解决tag加载的问题 2022-10-27 09:41:20 +08:00
谢思 cc05830f97 devops首页介绍图 2022-10-26 15:36:20 +08:00
tongChong 5025182aac Merge pull request '解决tag加载的问题' (#464) from tongChong/forgeplus-react:hotfix into gitlink_server 2022-10-25 17:33:58 +08:00
何童崇 a73ea7338a 解决tag加载的问题 2022-10-25 17:26:42 +08:00
谢思 8580334a79 个人设置页改版待测试 2022-10-25 15:50:58 +08:00
tongChong 8004d78033 Merge pull request 'glcc延长导师评分时间至24号24点' (#461) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-10-25 13:50:57 +08:00
谢思 963ca00eba glcc延长导师评分时间至24号24点 2022-10-24 10:51:31 +08:00
tongChong a248611764 Merge pull request '应建木要求修改devops页面样式' (#459) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-10-19 16:18:38 +08:00
谢思 2d8f9e0487 devops跳转样式 2022-10-19 15:59:12 +08:00
tongChong 1f5430597e Merge pull request '首页新增banner图' (#456) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-10-19 14:54:49 +08:00
谢思 6dd5868644 Merge branch 'gitlink_server' of https://git.trustie.net/durian/forgeplus-react into gitlink_server 2022-10-14 19:19:26 +08:00
谢思 d0ddd9b87c glcc学生提交考核材料时间延长至17号 2022-10-14 19:18:43 +08:00
tongChong fdbb42d5b7 Merge pull request '修改个人设置文案' (#458) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2022-10-14 19:03:51 +08:00
何童崇 7e4bf5b655 修改个人设置文案 2022-10-14 19:00:53 +08:00
谢思 0511b484c2 glcc学生提交资料添加message提示+其他 2022-10-11 17:08:20 +08:00
谢思 6d36c546b1 首页banner获取数量 2022-10-10 11:44:59 +08:00
tongChong 7cfbcf716b Merge pull request '更新' (#454) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-10-08 10:27:44 +08:00
谢思 592f6e69bf 修改public/index.html文件 2022-09-30 14:37:55 +08:00
谢思 94a8951b6f Merge branch 'glcc' of http://106.75.45.236:3000/durian/forgeplus-react into gitlink_server 2022-09-30 14:27:07 +08:00
谢思 c72007ddfd glc导师评语限制2000字 2022-09-30 14:25:30 +08:00
谢思 8b6a83309a glcc issue修改 2022-10-08 11:20:26 +08:00
谢思 24decb8855 更换reposyncer logo 2022-09-27 17:15:38 +08:00
谢思 26c047ed96 Merge branch 'glcc' of http://106.75.45.236:3000/durian/forgeplus-react into gitlink_server 2022-10-08 11:24:52 +08:00
谢思 bc6a03926c pull 代码 2022-09-26 09:35:50 +08:00
tongChong 77de180ac9 Merge pull request '增加webIDE功能' (#450) from tongChong/forgeplus-react:feature_IDE into gitlink_server 2022-09-23 16:33:20 +08:00
何童崇 80960895c4 code review 2022-09-23 16:31:00 +08:00
何童崇 a07dbdc0cd 调整webIDE 2022-09-23 16:18:31 +08:00
谢思 bc2ddd62ff glcc结项考核 2022-09-23 15:27:46 +08:00
谢思 74f6682178 提交pr浏览代码link url 2022-09-22 16:59:00 +08:00
何童崇 1dd0c7debb 修改webIDE欢迎页 2022-09-21 16:30:09 +08:00
何童崇 3409c28090 解决合并的冲突 2022-09-16 15:26:52 +08:00
何童崇 b992136f20 WebIDE修改 2022-09-16 15:16:03 +08:00
tongChong 8cc9024e38 Merge pull request 'gitlink 新增new提示,回归删除不了其他分支文件、文件路径跳转a标签问题解决' (#448) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2022-09-09 10:40:39 +08:00
何童崇 123f89f077 gitlink 新增new提示,回归删除不了其他分支文件、文件路径跳转a标签问题解决 2022-09-09 10:38:11 +08:00
tongChong 29da691c4f Merge pull request '团队项目批量操作+webhook总数限制调整+跨平台代码同步新建同步分支样式优化' (#447) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-09-09 09:57:41 +08:00
何童崇 fbd360a949 修改webide 2022-09-09 09:06:22 +08:00
谢思 373700edf2 团队项目批量操作+webhook总数限制调整+跨平台代码同步新建同步分支样式优化 2022-09-08 17:23:40 +08:00
“xxq250” 8f78fcf399 搜索关键字调整 2022-09-07 11:19:38 +08:00
tongChong 8a5389e92b Merge pull request 'nps用户调研系统' (#446) from durian/forgeplus-react:feature_nps into gitlink_server 2022-09-02 16:21:02 +08:00
何童崇 0cd00eecba Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into feature_IDE 2022-09-02 16:20:18 +08:00
何童崇 1354c05d86 新增webIDE 2022-09-02 16:15:14 +08:00
谢思 e9b1deb9a0 修改nps issue 2022-09-02 15:52:50 +08:00
谢思 0dbe7d9f0f nps接口联调 2022-09-01 14:35:14 +08:00
谢思 087d932906 nps用户调研系统静态页面 2022-08-30 15:41:41 +08:00
tongChong 35bce10781 Merge pull request '修复Safari兼容问题及glcc公示' (#441) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2022-08-27 12:42:59 +08:00
何童崇 3d1fa2ab75 修改glcc公示 2022-08-27 11:21:51 +08:00
何童崇 589e60abad 修复Safari兼容问题 2022-08-26 22:46:24 +08:00
何童崇 bf9da54fe8 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2022-08-26 22:23:43 +08:00
tongChong f65d6878b7 Merge pull request 'glcc导师中期考核结果不设置结束时间' (#440) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-08-26 22:15:18 +08:00
谢思 e4fc7db843 glcc结果公示路由修改 2022-08-26 16:17:34 +08:00
谢思 84c4ec3c3d glcc中期考核结果入口关闭 2022-08-26 16:09:47 +08:00
谢思 fe2a2be6f8 Merge branch 'pre_gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into gitlink_server 2022-08-26 15:03:16 +08:00
谢思 e6e7f83f25 glcc结果公示答辩视频url更正 2022-08-26 14:59:22 +08:00
谢思 e4a858d6f3 glcc导师中期考核结果不设置结束时间 2022-08-26 13:37:56 +08:00
何童崇 2dfb319483 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2022-08-26 12:30:25 +08:00
xxq250 7d02d9a8d8 Merge pull request '首页更新' (#439) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-08-24 17:56:10 +08:00
谢思 b624f0bdf6 仓库服务tab去掉系统二字文案 2022-08-24 14:25:06 +08:00
谢思 99e858632d 首页 2022-08-24 11:12:56 +08:00
xxq250 00f0bfa0a2 Merge pull request '跨平台代码同步去掉logo' (#437) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-08-22 09:17:59 +08:00
谢思 dd52f5b434 跨平台代码同步去掉logo 2022-08-19 14:12:56 +08:00
tongChong 2915756e66 Merge pull request '合并至生产分支' (#436) from gitlink_server into pre_gitlink_server 2022-08-19 14:00:25 +08:00
xxq250 6db7a58f41 Merge pull request 'issue' (#433) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-08-18 16:17:54 +08:00
谢思 17232d3b45 更改提示语句 2022-08-18 14:04:50 +08:00
谢思 00b0d6541b issue3 2022-08-18 13:42:47 +08:00
tongChong 2b67a187ea Merge pull request '修改cloudcloudIDE加载时的logo,升级插件版本' (#432) from tongChong/forgeplus-react:feature_IDE into gitlink_server 2022-08-17 16:06:45 +08:00
何童崇 afcea9142c Merge branch 'gitlink_server' of https://gitlink.org.cn/durian/forgeplus-react into feature_IDE 2022-08-17 15:53:10 +08:00
何童崇 00b84650fd 修改cloudcloudIDE加载时的logo,升级插件版本 2022-08-17 15:41:27 +08:00
谢思 d18145d9e3 Merge branch 'reposyncer' of http://106.75.45.236:3000/durian/forgeplus-react into gitlink_server 2022-08-17 11:06:07 +08:00
谢思 c1f22136d4 建木创建的webhook不可编辑删除 2022-08-17 11:05:30 +08:00
谢思 45c3bfbcaf Merge branch 'feature_devops' of http://106.75.45.236:3000/durian/forgeplus-react into gitlink_server 2022-08-16 15:44:58 +08:00
何童崇 d4adba77a8 修改cloudcloudIde 2022-08-16 15:40:11 +08:00
谢思 a53028731f devops引擎配置域名 2022-08-16 13:47:24 +08:00
谢思 ac224dc3d1 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_devops 2022-08-16 13:40:37 +08:00
谢思 aa2b7c322d 修改文案 2022-08-15 16:09:44 +08:00
谢思 79ec0e60e6 仓库同步记录从后往前删除跳转至前一页 2022-08-15 15:51:32 +08:00
谢思 e45b50356b issue修改 2022-08-15 14:40:07 +08:00
何童崇 5b0d73bbd6 修复cloudcloudIDE层级 问题,提交后刷新 版本 2022-08-15 14:39:59 +08:00
谢思 46415d167f Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into gitlink_server 2022-08-15 11:19:43 +08:00
谢思 57e6ad16e8 代码溯源系统维护+游客状态不可访问服务tab 2022-08-15 11:19:07 +08:00
何童崇 f3b7895609 优化代码,优化评审组件空白 2022-08-12 23:04:23 +08:00
何童崇 bd1a8f2eb7 修改设置 2022-08-12 17:26:45 +08:00
xxq250 067aac948b Merge pull request 'glcc三期' (#430) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-08-12 16:03:44 +08:00
谢思 b8357b4246 导师评论成功提示语句显示状态修改 2022-08-12 15:59:05 +08:00
谢思 9b840b0027 fork仓库还会弹协议 2022-08-27 15:41:44 +08:00
durian 8cb058bbef Merge pull request '开源夏令营三期' (#5) from feature_GLCC into gitlink_server 2022-08-12 15:07:39 +08:00
谢思 1a24f3be0c 结果公示页传参修改 2022-08-12 15:04:43 +08:00
谢思 a70608ebbf ppt模板下载配置生产环境地址 2022-08-12 14:15:55 +08:00
谢思 67f743ef0c 未登录状态下导师url访问跳转登录 2022-08-12 11:28:35 +08:00
谢思 0992c716b7 导师列表过滤学生为空的情况 2022-08-12 10:45:20 +08:00
谢思 79ecba5dc9 更改路由 2022-08-18 16:02:37 +08:00
谢思 b50bcef4d8 非管理员访问引擎tab显示无权限 2022-08-12 10:19:29 +08:00
何童崇 08d59f4612 回归代码评审issue 2022-08-11 16:19:19 +08:00
谢思 76058894df 新增需求 2022-08-11 15:41:22 +08:00
谢思 bfc1813fa5 中期考核结果公示页 2022-08-13 16:36:23 +08:00
谢思 0f8160c049 issue 2022-08-13 15:09:01 +08:00
谢思 53874bba88 参数传递 2022-08-13 14:04:26 +08:00
谢思 5ba6b27722 开源夏令营中期考核 2022-08-13 13:31:03 +08:00
谢思 3e3a055b7d 需求优化 2022-08-11 11:38:12 +08:00
谢思 d793440b37 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into reposyncer 2022-08-11 10:30:46 +08:00
何童崇 732afc85f5 修改cloudIDE换行设置 2022-08-10 17:33:06 +08:00
何童崇 7efe16370f 增加cloudIDE工具栏工具 2022-08-10 10:07:59 +08:00
何童崇 0374ad3769 修改图片工具函数 2022-08-08 16:54:01 +08:00
何童崇 1e3552bd0c 修改评论 2022-08-08 16:24:13 +08:00
何童崇 250c19d1f0 修改cloudIDE 2022-08-08 15:37:06 +08:00
谢思 d973661c29 github分支改为非必填 2022-08-08 15:34:44 +08:00
谢思 6ffb2d19f3 代码溯源fork仓库不可用 2022-08-08 15:22:28 +08:00
谢思 7c83425dba 页面调整 2022-08-05 17:13:16 +08:00
何童崇 886d7cf6cf Merge branch 'feature_devops' of https://gitlink.org.cn/durian/forgeplus-react into feature_IDE 2022-08-04 14:31:08 +08:00
谢思 40e88d95d8 引擎tab仅当前仓库管理员可见 2022-08-04 14:06:28 +08:00
何童崇 f325491d37 Merge branch 'feature_devops' of https://gitlink.org.cn/durian/forgeplus-react into feature_IDE 2022-08-04 13:57:41 +08:00
何童崇 3c82d90c95 调整代码评审未定义变量 2022-08-04 13:56:49 +08:00
何童崇 a3fe44dbd7 合并主分支代码 2022-08-04 10:05:23 +08:00
何童崇 06c2466580 修改代码评审 2022-08-04 09:59:42 +08:00
谢思 48c4b64b2b 对建木创建的webhook特殊处理 2022-08-04 09:07:48 +08:00
谢思 09e3ecc67d devops 高度自适应 2022-08-03 09:48:16 +08:00
谢思 eb458d9528 调整样式 2022-08-02 10:59:24 +08:00
谢思 652ba72680 Merge branch 'gitlink_server' of https://gitlink.org.cn/Gitlink/forgeplus-react into feature_devops 2022-08-02 10:22:34 +08:00
谢思 58c32c27ef 嵌入devops 2022-08-02 10:15:18 +08:00
xxq250 5fbac9d61c Merge pull request 'webhook url密钥长度校验改成200' (#428) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-08-01 14:53:58 +08:00
谢思 4e9237d812 webhook url密钥长度校验改成200 2022-08-01 10:24:14 +08:00
谢思 e34485c7dc 合并gitlink_server代码 2022-08-01 09:28:58 +08:00
tongChong 81b3f3961f Merge pull request '修改代码溯源配置' (#427) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2022-07-29 22:14:25 +08:00
何童崇 212447905c 修改代码溯源配置 2022-07-29 22:08:27 +08:00
tongChong d456054521 Merge pull request '修改代码溯源下载条件' (#426) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2022-07-29 18:57:03 +08:00
何童崇 85f99fbc8c 修改代码溯源下载条件 2022-07-29 18:54:48 +08:00
tongChong 8eb2eb2157 Merge pull request '修改代码溯源' (#425) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2022-07-29 18:24:10 +08:00
何童崇 145e58959f 修改代码溯源按钮 2022-07-29 18:22:01 +08:00
何童崇 f37810e955 代码溯源轮询及iframe自适应 2022-07-29 17:37:05 +08:00
何童崇 9cb3c7c3bd 修改用户参数 2022-07-29 17:00:23 +08:00
谢思 8c3d227d02 iframe高度自适应 2022-07-29 14:17:01 +08:00
何童崇 b1725372b7 修改cloudIDE 2022-07-29 14:14:25 +08:00
谢思 e29d55986b 联调0.5 2022-07-26 15:50:35 +08:00
谢思 047ee8fae9 样式 2022-07-22 15:30:02 +08:00
谢思 b464d23955 代码溯源结果查看页面 2022-07-22 14:25:20 +08:00
谢思 0d7af597b5 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into gitlink_server 2022-07-22 14:05:50 +08:00
xxq250 69e471052c Merge pull request '编辑wiki新增代码库样式问题' (#422) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-07-21 15:38:04 +08:00
谢思 a287d7677d 注册邮箱校验 2022-07-20 09:57:59 +08:00
谢思 0b1893d7d6 编辑wiki新增代码库样式问题 2022-07-13 15:15:27 +08:00
谢思 ac195c9bf7 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into gitlink_server 2022-07-13 11:47:05 +08:00
tongChong b96cc536b5 Merge pull request '修改md样式' (#420) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2022-07-11 16:21:55 +08:00
何童崇 7c512e065e Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into gitlink_server 2022-07-11 14:29:22 +08:00
何童崇 469f05a3c8 修改md样式 2022-07-11 14:28:54 +08:00
谢思 5678fa0232 跨平台代码同步静态页面 2022-07-08 15:17:36 +08:00
tongChong cf8dcd90e3 Merge pull request '20220708里程碑issue回归' (#417) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2022-07-08 14:01:34 +08:00
何童崇 3534856786 20220708里程碑issue回归 2022-07-08 13:56:11 +08:00
谢思 f4f8bea77d install 2022-07-04 17:10:49 +08:00
tongChong 22b9990893 Merge pull request '修改glcc传参等' (#411) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-07-01 14:21:48 +08:00
何童崇 dba6c37f18 修改glcc传参等 2022-07-01 14:19:39 +08:00
xxq250 90d9579e8f Merge pull request 'glcc地址栏优化' (#409) from durian/forgeplus-react:feature_GLCC2 into gitlink_server 2022-06-30 11:07:02 +08:00
谢思 c05f9ff858 glcc结果公示时间调整 2022-06-30 10:55:33 +08:00
谢思 23914dd777 glcc地址栏优化 2022-06-29 14:23:43 +08:00
tongChong 5ba93620b4 Merge pull request '修改glcc报名逻辑' (#408) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-06-28 16:03:55 +08:00
何童崇 95328d2c60 修改glcc报名逻辑 2022-06-29 15:56:56 +08:00
tongChong 01cc3eae3f Merge pull request '导师审核' (#407) from durian/forgeplus-react:feature_GLCC2 into gitlink_server 2022-06-27 22:54:28 +08:00
谢思 432b21bf32 issue 2022-06-27 22:48:53 +08:00
谢思 bc37fa68af Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_GLCC2 2022-06-27 20:26:16 +08:00
谢思 70e3b22873 issue 2022-06-27 20:25:12 +08:00
何童崇 4ae8337379 回归issue 2022-06-27 19:50:32 +08:00
何童崇 e770137773 合并列表页修改 2022-06-27 18:33:13 +08:00
何童崇 47f3c33ae2 修改glcc学生报名逻辑 2022-06-27 18:31:52 +08:00
谢思 b23720e41d glcc结果公示页 2022-06-27 17:39:26 +08:00
tongChong 0240c63745 Merge pull request '关闭glcc弹框及微调邀请样式' (#406) from tongChong/forgeplus-react:feature_invite into gitlink_server 2022-06-27 10:00:37 +08:00
何童崇 ac8d4d54dd 关闭glcc弹框及微调邀请样式 2022-06-27 09:53:18 +08:00
谢思 aa64908ef2 公示结果页+glcc学生报名页面 2022-06-27 09:37:27 +08:00
谢思 23b6708b6e 合并代码 2022-06-27 09:26:42 +08:00
yystopf 6279ac64cc Merge pull request 'glcc报名结束时间控制' (#405) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-06-25 08:41:14 +08:00
谢思 be8c9734fc glcc学生报名 2022-06-25 08:36:37 +08:00
谢思 ccc97628fe glcc报名结束时间控制 2022-06-25 02:00:59 +08:00
谢思 7fe3a1cf0b Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_GLCC2 2022-06-24 09:52:09 +08:00
谢思 f3c6fdf397 报名结果公示 2022-06-23 16:20:02 +08:00
tongChong 204fcfb30f Merge pull request '增加邀请链接' (#403) from tongChong/forgeplus-react:feature_invite into gitlink_server 2022-06-21 15:03:15 +08:00
何童崇 90c626feb7 修改邀请链接 2022-06-21 14:56:56 +08:00
何童崇 cc443fa112 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into feature_IDE 2022-06-21 11:12:01 +08:00
谢思 85d1d9a976 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into gitlink_server 2022-06-20 09:49:10 +08:00
何童崇 53869f95fa 修改邀请 2022-06-17 17:50:30 +08:00
何童崇 5d3f6dd714 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_invite 2022-06-17 14:24:10 +08:00
xxq250 08d7971e7c Merge pull request '微调glcc样式' (#402) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-06-17 14:18:35 +08:00
何童崇 9f4346eebf 微调glcc列表样式 2022-06-17 14:11:41 +08:00
何童崇 9629a0d760 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_invite 2022-06-17 14:00:26 +08:00
xxq250 afc39ece1c Merge pull request '增加glcc明星项目及其它issue回归' (#401) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-06-17 13:56:48 +08:00
何童崇 0aac9d11e0 增加glcc明星项目及其它issue 2022-06-17 13:45:16 +08:00
何童崇 cb241bece3 邀请用户链接页面 2022-06-17 11:08:33 +08:00
谢思 c30e229f73 成员邀请静态页面 2022-06-16 17:32:47 +08:00
xxq250 202ffd1a62 Merge pull request '修改glcc二维码' (#400) from tongChong/forgeplus-react:feature_style into gitlink_server 2022-06-16 14:44:26 +08:00
何童崇 0bf5e2a356 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_style 2022-06-16 14:38:45 +08:00
何童崇 ba37a24750 修改glcc二维码 2022-06-16 14:37:04 +08:00
xxq250 e0e6c48933 Merge pull request '修改统一风格,新增glcc弹框,回归wiki、issue列表issue' (#399) from tongChong/forgeplus-react:feature_style into gitlink_server 2022-06-16 11:16:25 +08:00
何童崇 6b2a86863a 修改仓库设置样式 2022-06-16 10:46:21 +08:00
何童崇 533d04df8a 新增glcc弹框 2022-06-16 10:38:56 +08:00
何童崇 0f2dcd4436 修改antd风格,增加全局scss变量 2022-06-16 09:48:41 +08:00
何童崇 c2b1808cab Merge branch 'hotfix_gitlink' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_style 2022-06-15 17:11:03 +08:00
何童崇 b789fc50be 回归wiki、issue列表issue 2022-06-15 17:09:57 +08:00
何童崇 999441165a Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into hotfix_gitlink 2022-06-15 09:15:41 +08:00
何童崇 38c12b02cb Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_style 2022-06-15 09:14:33 +08:00
xxq250 dd595fcb9c Merge pull request '修改glcc,每个项目对应一个路由及其它issue' (#397) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-06-14 19:34:44 +08:00
何童崇 70a118061c Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_GLCC 2022-06-14 19:19:43 +08:00
何童崇 88ee244e96 修改glcc,每个项目对应一个路由 2022-06-14 19:19:12 +08:00
何童崇 67c262bcec 修改风格,增加统一颜色变量 2022-06-14 15:09:57 +08:00
何童崇 26ef1057ba 回归issue分页、Wiki路由的issue 2022-06-13 17:27:44 +08:00
何童崇 25b4ba1d54 修改统一风格 2022-06-13 15:00:22 +08:00
何童崇 b6c12ca861 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into feature_IDE 2022-06-12 10:59:02 +08:00
yystopf ce66f507a6 Merge pull request '新增glcc赞助商页' (#396) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-06-10 17:17:24 +08:00
何童崇 8b74348f2e Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_IDE 2022-06-10 16:55:11 +08:00
何童崇 5505142eb7 修改赞助商专题页 2022-06-10 16:48:01 +08:00
何童崇 790504a2f4 Merge branch 'feature_GLCC2' of http://106.75.45.236:3000/durian/forgeplus-react into feature_GLCC 2022-06-10 16:40:57 +08:00
何童崇 d4a75f5dcc Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_IDE 2022-06-10 16:27:04 +08:00
何童崇 08135585ea 压缩图片 2022-06-10 16:25:58 +08:00
何童崇 c9841cd2fa 修改issue 2022-06-10 16:23:39 +08:00
谢思 62f265f56e 优化 2022-06-10 16:15:35 +08:00
何童崇 33609e087e 调整专题页样式 2022-06-10 15:53:36 +08:00
何童崇 bb41de7c29 调整专题页样式 2022-06-10 15:49:00 +08:00
何童崇 63622e2f9c Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_IDE 2022-06-10 15:10:49 +08:00
何童崇 e325181ef4 修改样式 2022-06-10 15:09:48 +08:00
何童崇 cef85e5ebe Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_IDE 2022-06-10 14:55:25 +08:00
何童崇 790fef4899 Merge branch 'feature_GLCC2' of http://106.75.45.236:3000/durian/forgeplus-react into feature_GLCC 2022-06-10 14:53:39 +08:00
何童崇 ebcb1d6163 修改glcc专题页 2022-06-10 14:52:37 +08:00
谢思 30740c59aa 导师一栏页面以及入口页面 2022-06-10 14:42:12 +08:00
何童崇 65795f1f02 修改glcc专题页 2022-06-10 09:05:31 +08:00
何童崇 9d999c4aef Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_IDE 2022-06-09 14:03:43 +08:00
何童崇 8130fcbff9 glcc赞助商页 2022-06-09 14:02:16 +08:00
xxq250 fcb86bd2a1 Merge pull request 'openmmlab初始化' (#394) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-06-08 15:12:39 +08:00
何童崇 7ab24b7ffb openmmlab专题页初版 2022-06-08 15:01:34 +08:00
xxq250 e605d5e5b5 Merge pull request '新增导师审核页面' (#393) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-06-08 14:17:29 +08:00
何童崇 53f78ab0f8 glcc导师审核页修改 2022-06-08 14:10:16 +08:00
何童崇 02e189741c 新增导师审核页面 2022-06-07 10:35:09 +08:00
何童崇 23276fb44b Merge branch 'feature_IDE' of https://git.trustie.net/tongChong/forgeplus-react into feature_IDE 2022-06-06 10:13:17 +08:00
何童崇 31a3a7051a 新增语言插件 2022-06-06 10:12:51 +08:00
何童崇 aba7713b12 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_IDE 2022-06-06 09:23:25 +08:00
xxq250 b649f7a18c Merge pull request 'glcc二期报名修改' (#391) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-06-02 16:46:23 +08:00
何童崇 8b6a969173 Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_IDE 2022-06-02 16:14:00 +08:00
何童崇 bb1b8e6b36 修改glcc样式 2022-06-02 16:12:30 +08:00
何童崇 10fc7bf457 Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_IDE 2022-06-02 11:21:23 +08:00
何童崇 56f74c747b glcc报名修改 2022-06-02 11:19:43 +08:00
何童崇 af75705d03 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_GLCC 2022-06-01 10:07:05 +08:00
何童崇 d839e4aa26 调整报名逻辑 2022-06-01 10:06:42 +08:00
caishi 3d8a910820 组织项目列表增加私有标示 2022-05-30 14:55:02 +08:00
caishi ba283d7c13 devlop是否激活 两个页面部根据state的字段来判断 2022-05-30 14:01:55 +08:00
xiaoxiaoqiong 96cca430b9 Merge branch 'gitlink_server' into pre_gitlink_server 2022-05-27 18:12:34 +08:00
xiaoxiaoqiong 04fbddc58d Merge branch 'gitlink_server' into pre_gitlink_server 2022-05-27 17:44:52 +08:00
xxq250 90bb5297f3 Merge pull request '修改赞助商' (#388) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-05-27 17:42:55 +08:00
何童崇 b3baee328c Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_IDE 2022-05-27 17:30:55 +08:00
何童崇 597768d252 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_GLCC 2022-05-27 17:29:45 +08:00
何童崇 93d0356598 修改赞助商 2022-05-27 17:29:20 +08:00
caishi 77754288f0 上传头像透明背景变成了黑色背景 2022-05-27 17:24:01 +08:00
何童崇 8f9579fa5b Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_IDE 2022-05-27 16:13:19 +08:00
caishi 2be33ed9d1 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2022-05-27 16:04:52 +08:00
caishi 20171244fc devops返回到引擎配置页面需要加state 2022-05-27 16:04:47 +08:00
xxq250 e87fb6080c Merge pull request '调整glcc样式' (#387) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-05-27 15:56:23 +08:00
何童崇 d264627af7 调整glcc样式 2022-05-27 15:50:42 +08:00
caishi fb10468c08 update content to replace_content 2022-05-27 14:26:48 +08:00
caishi 8b8484a683 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2022-05-27 14:17:19 +08:00
何童崇 6e9066a933 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_IDE 2022-05-27 13:48:39 +08:00
xxq250 cffd70a897 Merge pull request '修改赞助商logo' (#386) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-05-27 11:50:47 +08:00
何童崇 50fa57188f 修改glcc首页 2022-05-27 11:43:16 +08:00
何童崇 e8f48434a8 修改赞助商logo 2022-05-27 10:42:34 +08:00
xxq250 2d40d393cf Merge pull request '修改赞助商链接' (#385) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-05-26 16:48:45 +08:00
何童崇 0f1b1dcf8c Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_GLCC 2022-05-26 16:42:27 +08:00
何童崇 c1ce16bce7 修改赞助商链接 2022-05-26 16:41:07 +08:00
caishi 5b69d12802 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2022-05-26 16:30:24 +08:00
caishi f053b25744 退出仓库 2022-05-26 16:30:19 +08:00
xxq250 2403b8a420 Merge pull request '适配logo' (#384) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-05-26 16:26:00 +08:00
何童崇 714e204b1b 适配logo 2022-05-26 16:18:36 +08:00
xxq250 c906a50e48 Merge pull request 'glcc二期' (#383) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-05-26 16:01:11 +08:00
何童崇 3f16be965b 修改登录框样式 2022-05-26 15:54:18 +08:00
何童崇 0d6a12d5a6 修改glcc2期 2022-05-26 15:42:56 +08:00
何童崇 6b4fe5b4a3 合并预生产代码 2022-05-26 15:08:51 +08:00
何童崇 d353f2a21e 修改项目及课题路由 2022-05-26 14:57:55 +08:00
caishi dbcf0bb1b9 服务新建成功提示语+激 活devops后未跳转到引擎配置 2022-05-26 14:51:48 +08:00
何童崇 84f51cd3ad glcc赞助商 2022-05-26 14:47:01 +08:00
何童崇 bd43f3d841 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_GLCC 2022-05-26 14:46:01 +08:00
何童崇 9a043175da Merge branch 'pre_gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_GLCC 2022-05-26 14:45:40 +08:00
谢思 2d75cb85dc issue 2022-05-25 20:12:46 +08:00
谢思 756d88b13f issue 2022-05-25 20:03:23 +08:00
何童崇 ead518c714 Merge branch 'feature_GLCC2' of http://106.75.45.236:3000/durian/forgeplus-react into feature_IDE 2022-05-25 15:54:31 +08:00
谢思 7e186bf765 issue 2022-05-25 15:53:43 +08:00
谢思 4b89f85874 Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_GLCC2 2022-05-28 14:17:54 +08:00
谢思 2676d6f54e glcc二期 新增课题详情页 2022-05-28 14:17:34 +08:00
何童崇 a621d10d9d 新增cloudIDE 2022-05-25 15:26:19 +08:00
caishi e1582102aa 文件列表message只显示第一行的内容 2022-05-23 18:30:03 +08:00
caishi 36e2f03946 文件夹、文件名字含有特殊字符 2022-05-23 17:25:14 +08:00
caishi d906b6c391 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2022-05-23 14:37:14 +08:00
caishi b1edabfa0f 个人主页-头部 2022-05-23 14:36:51 +08:00
xxq250 461442f275 Merge pull request '修改文案' (#380) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-05-20 18:11:13 +08:00
何童崇 3b820fb65c Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_GLCC 2022-05-20 18:08:56 +08:00
何童崇 2349dca261 修改文案 2022-05-20 18:07:20 +08:00
caishi 654e1af7eb merge 2022-05-20 17:27:08 +08:00
caishi f9149e0606 readme 接口返回编辑、显示数据的字段不一致 2022-05-20 17:26:07 +08:00
xxq250 6b987f980b Merge pull request 'glcc issue' (#379) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-05-20 17:18:25 +08:00
何童崇 a4b4f69bb4 上传时间修改 2022-05-20 17:16:11 +08:00
谢思 aadd44c30e Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_GLCC2 2022-05-20 16:49:06 +08:00
谢思 424742665b 学生报名通道关闭 2022-05-20 16:48:08 +08:00
xxq250 a07ca37bab Merge pull request '开源夏令营二期issue' (#378) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-05-20 14:43:16 +08:00
何童崇 99d85dbdad 修改报名时间及报名样式控制 2022-05-20 14:31:45 +08:00
何童崇 d088e1a2e1 Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_GLCC 2022-05-20 14:26:56 +08:00
何童崇 6cabd38d87 修改issue 2022-05-20 14:25:45 +08:00
谢思 50d92c2bdd issue 2022-05-20 14:23:36 +08:00
caishi aa539facee 暂时隐藏服务入口 2022-05-20 14:17:10 +08:00
谢思 cf361ad002 开源夏令营二期issue 2022-05-20 13:34:29 +08:00
谢思 ea12d924d5 开源夏令营二期issue 2022-05-27 10:29:33 +08:00
谢思 9eda6cc082 开源夏令营二期issue 2022-05-20 09:08:37 +08:00
caishi 10895a26f8 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlinkSource 2022-05-19 18:30:32 +08:00
xxq250 2089c7a28f Merge pull request 'glcc issue回归' (#377) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-05-19 18:28:54 +08:00
何童崇 f5af389098 合并谢思修改代码 2022-05-19 18:10:59 +08:00
何童崇 1a09f82960 修改glcc issue 2022-05-19 18:06:41 +08:00
caishi f8a9c0785f update issue 2022-05-19 17:56:42 +08:00
谢思 4a3b68430b 合并代码 2022-05-19 17:36:09 +08:00
谢思 b3c390df16 样式优化 2022-05-19 17:26:26 +08:00
何童崇 b81610f7d3 修改glcc issue 2022-05-19 17:13:42 +08:00
谢思 258b6d651f 开源夏令营2期issue 2022-05-19 17:06:34 +08:00
caishi 24bb69cc22 pull 何 代码-glcc 2022-05-19 10:40:10 +08:00
xxq250 c3536864c7 Merge pull request 'glcc2期初版' (#376) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-05-19 10:32:41 +08:00
何童崇 38a9155769 优化样式 2022-05-19 10:29:05 +08:00
谢思 a884146577 项目及课题列表优化 2022-05-19 10:24:24 +08:00
caishi 6a73e98701 update 2022-05-19 10:23:52 +08:00
谢思 ed18f7afcf 完整流程联调 2022-05-18 19:21:43 +08:00
何童崇 85d81c2553 修改取消所有报名后的问题 2022-05-18 18:57:50 +08:00
何童崇 da0caba73b 修改文件服务地址 2022-05-18 16:44:20 +08:00
何童崇 299fb1358d 修改报名信息 2022-05-18 16:06:38 +08:00
何童崇 c859b6a439 新增学生报名静态页面 2022-05-17 17:31:26 +08:00
谢思 96f047a252 课题项目列表 2022-05-17 17:21:35 +08:00
caishi 4b4197e459 merge gitlink_server 2022-05-16 09:42:58 +08:00
caishi 2f37586a1b 服务‘ 2022-05-16 09:42:01 +08:00
caishi d29eaa5d30 服务-save 2022-05-12 09:11:59 +08:00
xxq250 c170a5e6fe Merge pull request '开源夏令营报名跳转到https://wj.qq.com/s2/10175205/e8df/' (#374) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-05-10 17:50:47 +08:00
谢思 147e538e6f 开源夏令营报名跳转到另一个链接 2022-05-10 17:42:00 +08:00
caishi 76a2231fe7 merge 2022-05-10 09:23:47 +08:00
caishi 35c32aed9c 新建合并请求-提交部分增加分页功能 2022-05-10 09:21:38 +08:00
xxq250 b6033a7262 Merge pull request '开源夏令营报名页面 报名时间显示错误' (#373) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-05-09 15:34:11 +08:00
谢思 68f60d2a51 报名页面展示报名时间错误 2022-05-09 15:27:48 +08:00
xxq250 575c98260a Merge pull request '开源夏令营优化' (#372) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-05-09 14:48:49 +08:00
谢思 c96da86078 glcc优化 2022-05-09 14:36:41 +08:00
caishi 0b959c4a9b 新建合并请求-底部提交没有显示isFirstLoading控制 2022-05-07 14:55:49 +08:00
yystopf 92ea4faa3e Merge pull request '修复合并请求调两次接口' (#371) from gitlink_server into pre_gitlink_server 2022-05-07 14:41:56 +08:00
caishi 9f58eb1a5a 合并请求需请求两次获取分支的接口 2022-05-07 14:38:49 +08:00
yystopf 62f4a0417f Merge pull request '20220507周里程碑内容' (#370) from gitlink_server into pre_gitlink_server 2022-05-07 13:55:25 +08:00
caishi dbadc3f1a0 markdown 左右宽度 2022-05-07 11:30:45 +08:00
caishi 41d24b341c pull 2022-05-07 10:37:54 +08:00
caishi 102f0bc04a 新建issue时报错不清空issue内容 2022-05-07 10:37:10 +08:00
xxq250 7690843ff8 Merge pull request '开源夏令营帮助中心图片限制最大宽度' (#366) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-05-06 10:59:05 +08:00
caishi 284d230821 merge 2022-05-06 10:21:07 +08:00
xxq250 f9773a7e42 Merge pull request '修改Wiki校验样式' (#368) from tongChong/forgeplus-react:hotfix_gitlink into gitlink_server 2022-05-06 10:20:37 +08:00
caishi e4a95602cc 合并请求分支下拉接口以及搜索 2022-05-06 10:19:52 +08:00
何童崇 6a6f8d292f 修改Wiki校验样式 2022-05-06 10:05:22 +08:00
xxq250 4f40755af1 Merge pull request '修改Wiki和视频路径' (#367) from tongChong/forgeplus-react:hotfix_gitlink into gitlink_server 2022-05-05 18:04:26 +08:00
何童崇 70838266ad Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into hotfix_gitlink 2022-05-05 17:35:20 +08:00
何童崇 7fd94060db 修改Wiki高度及视频等路径 2022-05-05 17:34:49 +08:00
谢思 872ca88ae8 开源夏令营帮助中心图片限制最大宽度 2022-05-05 15:50:17 +08:00
xxq250 b5d65e5311 Merge pull request '修改开源夏令营帮助中心对应的wiki仓库' (#365) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-05-05 15:01:20 +08:00
谢思 68f209272c 修改开源夏令营帮助中心wiki仓库 2022-05-05 14:47:03 +08:00
何童崇 ea079eb475 Merge branch 'pre_gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into hotfix_gitlink 2022-05-05 09:36:47 +08:00
caishi 51d028336f 新建合并请求-分支下拉搜索 2022-04-29 09:24:05 +08:00
caishi 4cd25cffc7 issue/pr各下拉列表增加搜索功能 2022-04-26 17:48:21 +08:00
caishi b59409e2fc 从各新建合并请求点击时跳转的链接要是默认分支 2022-04-25 14:38:33 +08:00
yystopf 6ac8a9863d Merge pull request '四月第四周里程碑内容' (#361) from gitlink_server into pre_gitlink_server 2022-04-21 17:58:43 +08:00
caishi feb6ad6d89 上传文件 2022-04-21 16:45:17 +08:00
caishi a3c6ad78ee 拖拽上传文件夹 2022-04-20 17:14:14 +08:00
caishi 04e10722e3 install 2022-04-19 11:15:00 +08:00
xxq250 5007377c57 Merge pull request '开源夏令营修改' (#357) from durian/forgeplus-react:feature_GLCC into gitlink_server 2022-04-15 17:28:58 +08:00
谢思 3bf38174b3 修改开源夏令营文件上传服务以及banner图压缩以及新闻公告代码优化 2022-04-15 17:11:20 +08:00
xxq250 eec4fa4204 Merge pull request '新增glcc,开源夏令营' (#356) from tongChong/forgeplus-react:feature_GLCC into gitlink_server 2022-04-15 15:35:41 +08:00
谢思 bce4543ab4 更新正式环境帮助中心wiki仓库 2022-04-15 14:55:53 +08:00
谢思 41c0a29bef Merge branch 'gitlink_server' of http://106.75.45.236:3000/Gitlink/forgeplus-react into feature_GLCC 2022-04-15 14:15:50 +08:00
谢思 3482c17d1f 参与高校更新 2022-04-15 14:14:17 +08:00
谢思 13a54a3e29 提交报名信息二级确认框 2022-04-13 17:21:59 +08:00
谢思 cbf0f827dd 修改文案 2022-04-13 17:00:43 +08:00
谢思 3c358c8175 开源夏令营优化 2022-04-13 16:28:39 +08:00
谢思 ad7f878357 报名提交确认框 2022-04-13 15:16:50 +08:00
谢思 fc6b6dbede 报名截至时间 2022-04-13 10:35:36 +08:00
谢思 e7a23064a8 限制开源夏令营报名时间 2022-04-13 09:59:48 +08:00
谢思 947b7a4be6 Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_GLCC 2022-04-12 17:31:38 +08:00
谢思 c601d6681b 开源xia夏令营issue 2022-04-12 17:30:50 +08:00
何童崇 6649db21b1 样式bug 2022-04-12 17:25:50 +08:00
谢思 aac55ea94f 开源夏令营issue 2022-04-12 16:18:59 +08:00
谢思 baf69efac8 开源夏令营issue 2022-04-12 14:46:50 +08:00
谢思 d49659deb3 引入组件 2022-04-12 14:05:34 +08:00
谢思 a6ed2ca451 合并代码+报名页添加banner图 2022-04-12 13:57:57 +08:00
谢思 83c2517824 开源夏令营报名页+帮助页+首页-组织方、联系我们 2022-04-12 13:48:47 +08:00
何童崇 27b6732ac4 修改glcc首页 2022-04-11 17:54:41 +08:00
谢思 60c01d8682 首页-合作伙伴 2022-04-08 17:34:37 +08:00
caishi 5daada4b98 issue按钮显示 2022-04-08 16:37:35 +08:00
何童崇 5156441c2a 首页静态页面完成75% 2022-04-08 15:34:10 +08:00
谢思 de206759bd Merge branch 'feature_GLCC' of http://106.75.45.236:3000/tongChong/forgeplus-react into feature_GLCC 2022-04-08 15:33:55 +08:00
谢思 d375ed8b02 帮助中心 2022-04-08 15:32:34 +08:00
谢思 5edf45988e 开源夏令营报名页面 2022-04-08 13:47:44 +08:00
caishi 4c0f3497a9 新建发行版 2022-04-07 18:10:00 +08:00
caishi d4a59e9a94 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2022-04-07 17:58:34 +08:00
何童崇 d91446dc12 初始化glcc 2022-04-07 09:47:38 +08:00
xxq250 87f26db26d Merge pull request '登录后如果打开首页,第一次默认进入个人详情页' (#355) from tongChong/forgeplus-react:hotfix_gitlink into gitlink_server 2022-04-06 14:36:49 +08:00
何童崇 4a4d767710 登录后如果打开首页,第一次默认进入个人详情页 2022-04-06 14:28:55 +08:00
caishi 4f71cd1c0a ignore 2022-04-03 13:21:27 +08:00
caishi 1f7dda2526 仓库设置 2022-04-01 19:19:15 +08:00
yystopf e8a74dc780 Merge pull request '合并最新代码' (#354) from gitlink_server into pre_gitlink_server 2022-04-01 19:18:33 +08:00
caishi fc3a1e4088 issue详情-word 2022-03-31 14:51:10 +08:00
caishi 335e484167 style 2022-03-30 16:13:42 +08:00
caishi 4d613fd07f 同上 2022-03-29 09:51:20 +08:00
caishi cb87a9d075 403,404 2022-03-29 09:47:38 +08:00
caishi 25a3e10c27 issues 2022-03-23 16:14:00 +08:00
xxq250 60327188eb Merge pull request '关于我们职位招聘显示不全' (#349) from gitlink_server into pre_gitlink_server 2022-03-17 17:13:09 +08:00
xxq250 4b3e62b907 Merge pull request '修复issue' (#348) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-03-17 17:11:10 +08:00
谢思 714b90581b 关于我们职位招聘显示不全 2022-03-16 16:29:16 +08:00
xxq250 ff1e063979 Merge pull request '数据统计->专业定位不显示数据问题修复' (#344) from durian/forgeplus-react:gitlink_server into gitlink_server 2022-03-03 11:43:53 +08:00
unknown 4264c127d9 数据统计->专业定位不显示数据问题修复 2022-03-03 09:53:27 +08:00
xxq250 400bd28801 Merge pull request '0304-issue代码修改' (#343) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2022-03-02 15:57:06 +08:00
何童崇 15b2ce6ea9 修改组织图片issue 2022-03-02 15:10:18 +08:00
何童崇 3ae9284494 0304-issue 2022-03-02 14:10:23 +08:00
caishi fb63377996 login页面logo更新 2022-03-02 10:27:22 +08:00
caishi 9527f69486 组织成员-每页条数 2022-02-24 14:22:09 +08:00
caishi b82e7d9d69 组织成员-接口参数page、limit 2022-02-22 11:39:53 +08:00
caishi 9db4f1b18c 0216-issue 2022-02-16 10:37:24 +08:00
caishi c13c7025dd webhook-新建 2022-02-11 09:56:06 +08:00
caishi d8384ab4bd 引擎-权限-非报告者即可 2022-02-10 16:00:54 +08:00
xxq250 882f0760e8 Merge pull request 'issue列表筛选bug以及新增按钮' (#337) from caishi/forgeplus-react:gitlink_server into gitlink_server 2022-01-26 13:47:05 +08:00
caishi 5e337cb94f issue列表排序时其它筛选条件不起作用 2022-01-26 11:35:36 +08:00
caishi 569bc39e1e cursor 2022-01-24 15:57:11 +08:00
caishi 0e643287f9 issue列表:筛选清除按钮、切换时清除分页 2022-01-21 15:29:14 +08:00
xxq250 3d9b43a784 Merge pull request 'issue列表筛选保存、项目名含http报错等问题' (#336) from caishi/forgeplus-react:gitlink_server into gitlink_server 2022-01-14 17:37:28 +08:00
caishi ed2c16661a issue-筛选保存 2022-01-14 17:33:25 +08:00
xxq250 8e4819217c Merge pull request '贡献者返回字段改为list' (#334) from caishi/forgeplus-react:gitlink_server into gitlink_server 2022-01-10 18:03:00 +08:00
caishi d03182cbd4 贡献者返回字段改为list 2022-01-10 18:00:01 +08:00
xxq250 7416d9bcb6 Merge pull request '修改头像、组织添加成员等功能' (#333) from caishi/forgeplus-react:gitlink_server into gitlink_server 2022-01-07 16:57:21 +08:00
caishi 3bfbba2303 同上-update 2022-01-07 16:32:01 +08:00
caishi fa47ae9b5e 设置页面增加修改功能 2022-01-07 11:00:52 +08:00
caishi ac93cfbc8a 截取头像-正方形 2022-01-06 14:03:41 +08:00
caishi bb7732c666 修改后更新 2022-01-06 09:31:59 +08:00
caishi 81d8a866f0 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2022-01-05 11:48:37 +08:00
caishi 0a334abede 修改头像组件 2022-01-05 11:48:31 +08:00
xxq250 1ada91917e Merge pull request 'issue-项目首页和个人主页、点击新开页' (#332) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-12-31 16:52:36 +08:00
caishi 25f193a1d3 点击新开页 2021-12-30 17:21:18 +08:00
caishi e8bcebbf71 notice-show 2021-12-29 11:41:34 +08:00
xxq250 afaef5f0d0 Merge pull request 'issue-以及分支含特殊字符的处理' (#330) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-12-28 15:52:54 +08:00
caishi e096e1aa50 branch 转义 2021-12-28 15:50:25 +08:00
caishi ec2d51e0d3 基本资料-性别、单位非必填 2021-12-24 14:35:07 +08:00
xxq250 4ab36af1a9 Merge pull request 'fix issue' (#329) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-12-24 09:47:40 +08:00
caishi b0088a24ae 分支-特殊字符 2021-12-23 14:07:12 +08:00
caishi 2f25643fcc issue-2021-12-22 2021-12-22 18:29:23 +08:00
caishi 91338c863c explore/all 筛选 2021-12-21 14:17:14 +08:00
xxq250 9786aaa4fe Merge pull request '密码管理+issue' (#327) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-12-20 17:50:23 +08:00
caishi 34f108118b 文案更新’ 2021-12-20 17:37:02 +08:00
caishi 61abecde53 密码管理 2021-12-20 17:25:25 +08:00
xxq250 326aede507 Merge pull request 'issue' (#324) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-12-17 16:24:06 +08:00
caishi c3cc105468 易修改为疑修 2021-12-17 15:49:52 +08:00
caishi 80e20a9cca 热门开发者-无项目情况 2021-12-17 10:13:00 +08:00
qyzh 600227600a 本地化改动 2021-12-16 19:43:58 +08:00
xxq250 bb8e671c20 Merge pull request 'issue' (#322) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-12-16 16:11:43 +08:00
caishi 1954a4f8d3 个人主页-组织-sort 2021-12-16 16:08:13 +08:00
caishi b3dec1ee8e Merge branches 'gitlink_server' and 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-12-15 09:46:44 +08:00
caishi 278cdba352 commit clear 2021-12-15 09:46:39 +08:00
caishi e25de315f8 clear 2021-12-15 09:31:43 +08:00
xxq250 6bbdb3d7a8 Merge pull request '教学实践页面' (#318) from durian/forgeplus-react:gitlink_server into gitlink_server 2021-12-14 14:11:27 +08:00
谢思 eb254de9fd 教学实践页面顶部增加跳转 2021-12-14 13:52:27 +08:00
xxq250 c9279b274e Merge pull request '修改issue详情路由及websocket定时请求' (#316) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2021-12-13 16:58:29 +08:00
何童崇 ce477020de Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-12-13 16:18:34 +08:00
xxq250 21078af26f Merge pull request 'issue修改' (#314) from durian/forgeplus-react:gitlink_server into gitlink_server 2021-12-13 16:08:30 +08:00
何童崇 bc5ec6103e 兼容特定情况下的报错 2021-12-13 16:04:36 +08:00
何童崇 fcc53f5278 上传websocket修改 2021-12-13 15:48:31 +08:00
谢思 da69213b8e Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-12-13 15:34:26 +08:00
xxq250 365ff99785 Merge pull request '教学实践' (#315) from durian/forgeplus-react:feature_teaching into gitlink_server 2021-12-13 15:25:02 +08:00
谢思 e206de9f1f Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into feature_teaching 2021-12-13 15:09:17 +08:00
何童崇 358880bfd2 修改issue详情路由 2021-12-13 15:01:03 +08:00
谢思 63971edc44 教学实践优化 2021-12-13 13:19:26 +08:00
谢思 020a976135 易修修改 2021-12-13 11:04:17 +08:00
谢思 29d74526d1 教学实践页面 2021-12-10 15:42:50 +08:00
xxq250 2e1cf5ad82 Merge pull request '针对educoder项目做限制' (#313) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-12-09 18:23:02 +08:00
caishi 56c8f7fa82 educoder项目添加只读标识 2021-12-09 17:31:34 +08:00
caishi 4db125545f educoder项目-图片不能点击 2021-12-09 14:04:54 +08:00
caishi ecd1a8444e Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-12-09 11:03:57 +08:00
caishi 0a0705d42c educoder项目无提交记录信息 2021-12-09 11:03:52 +08:00
xxq250 be0e0134f3 Merge pull request 'issue' (#312) from hc1913847458/forgeplus-react:gitlink_server into gitlink_server 2021-12-09 10:43:40 +08:00
hucong 6904116a3a Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-12-09 10:15:35 +08:00
hucong 421218ef77 issue 2021-12-09 10:15:30 +08:00
xxq250 5f89356679 Merge pull request 'issue以及需求更改' (#311) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-12-09 09:54:14 +08:00
hucong cab540b812 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-12-09 09:50:35 +08:00
caishi 2ffa835b84 代码库-贡献者和语言使用单独接口,detail.json接口不返回这两个数组 2021-12-09 09:48:47 +08:00
caishi e93778b004 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-12-08 15:21:25 +08:00
caishi 232e09c04f clear 2021-12-08 15:20:55 +08:00
xxq250 459e05f465 Merge pull request '易修声明功能' (#310) from starlee/forgeplus-react:lzx-claim-2.0 into gitlink_server 2021-12-08 15:15:36 +08:00
caishi 5ee3519c21 项目首页增加搜索功能 2021-12-08 10:11:13 +08:00
caishi 4270d1d8eb @我列表头像链接错误 2021-12-07 17:28:25 +08:00
hucong dd298380a7 相关文案修改 2021-12-07 16:31:51 +08:00
caishi 255ae11012 项目首页-educoder平台头像处理 2021-12-07 16:03:37 +08:00
caishi ec4e70d7f0 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-12-06 16:20:09 +08:00
caishi 758600e4d0 搜索页翻页距离底部的距离 2021-12-03 10:47:47 +08:00
xxq250 7d4def6056 Merge pull request '项目首页-精选项目-固定八个组织的logo信息' (#307) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-12-02 17:30:42 +08:00
caishi a1cc59e89b 项目首页-精选项目-固定八个组织 2021-12-02 16:27:11 +08:00
xxq250 9e4ca503df Merge pull request 'issue-优化' (#306) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-12-02 14:16:09 +08:00
caishi 472ea69e29 上线后-update 2021-12-01 18:04:49 +08:00
xxq250 3c5e10fa58 Merge pull request '新建文件不能包含特殊字符:!@\/:"<>|?%' (#305) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-12-01 11:10:48 +08:00
caishi 915bf69e6f 文件名特殊字符判断 2021-12-01 11:06:10 +08:00
xxq250 a00452b960 Merge pull request 'issue' (#304) from hc1913847458/forgeplus-react:gitlink_server into gitlink_server 2021-12-01 09:01:48 +08:00
hucong 3eeed4620c issue 2021-12-01 08:51:17 +08:00
xxq250 54858bcd39 Merge pull request 'issue' (#303) from hc1913847458/forgeplus-react:gitlink_server into gitlink_server 2021-11-30 18:37:23 +08:00
hucong 6820fed5b5 issue 2021-11-30 18:34:41 +08:00
xxq250 82ac32d84f Merge pull request 'issue修改-merge 解决冲突' (#302) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-11-30 18:07:33 +08:00
xxq250 fe6f8a9349 Merge pull request 'issue' (#301) from hc1913847458/forgeplus-react:gitlink_server into gitlink_server 2021-11-30 18:04:42 +08:00
caishi d4f0d21608 添加成员-删了后不能重复添加成员 2021-11-30 17:55:29 +08:00
hucong 56c867a4a3 issue 2021-11-30 17:51:50 +08:00
hucong bd219c0b41 issue 2021-11-30 17:11:56 +08:00
caishi 1292019aac merge-conflicts 2021-11-30 17:00:58 +08:00
caishi 33e1b7e400 合并请求-权限 2021-11-30 16:58:48 +08:00
xxq250 9af269061d Merge pull request '优化复制issue' (#300) from durian/forgeplus-react:gitlink_server into gitlink_server 2021-11-30 16:58:18 +08:00
谢思 2557b36cea Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-11-30 16:54:09 +08:00
谢思 f6c84e4fad 复制issue 2021-11-30 16:52:12 +08:00
xxq250 161866aaaf Merge pull request 'issue' (#299) from hc1913847458/forgeplus-react:gitlink_server into gitlink_server 2021-11-30 16:52:02 +08:00
hucong 3151314529 易修 2021-11-30 16:27:13 +08:00
hucong 775434d856 易修 2021-11-30 15:44:43 +08:00
caishi b802fd2fbd merge+update 2021-11-30 15:37:28 +08:00
caishi cee82314da merge 2021-11-30 15:29:32 +08:00
caishi 7295a71bc5 标记显示宽度 2021-11-30 15:27:11 +08:00
xxq250 4971dc0a3d Merge pull request 'issue' (#298) from durian/forgeplus-react:gitlink_server into gitlink_server 2021-11-30 15:26:36 +08:00
caishi e591de00fd 加入项目申请按钮 2021-11-30 15:22:23 +08:00
谢思 c331dbb445 优化复制issue@列表 2021-11-30 15:05:40 +08:00
caishi 36a58c0fe3 合并请求-字段 2021-11-30 14:16:42 +08:00
caishi 0e949110fd 后端新增字段-非成员不能修改编辑易修 2021-11-30 14:07:22 +08:00
caishi 4ffb2acc9c 编辑标记-长度 2021-11-30 13:57:05 +08:00
xxq250 0991ba4698 Merge pull request 'issue修改' (#297) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-11-30 11:37:41 +08:00
caishi f82a51fd83 merge 2021-11-30 11:28:43 +08:00
caishi 98ed1794cf 代码库 2021-11-30 11:28:02 +08:00
baladiwei 6e756826f7 Merge pull request 'issue' (#296) from durian/forgeplus-react:gitlink_server into gitlink_server 2021-11-30 11:27:09 +08:00
谢思 684f9dbfe1 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-11-30 11:20:20 +08:00
谢思 9577478e97 issue 2021-11-30 11:19:55 +08:00
caishi ff9beb0949 issue-修改‘ 2021-11-30 11:11:25 +08:00
caishi f4055e50e2 个人中心devops-立即激活跳转报错 2021-11-30 09:48:35 +08:00
caishi af8a5058b8 devops 2021-11-30 09:15:33 +08:00
xxq250 efb918e21d Merge pull request 'issue-优化' (#295) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-11-29 17:42:15 +08:00
caishi a9a3f9c977 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-11-29 16:26:35 +08:00
caishi d6b0eee067 update 2021-11-29 16:25:55 +08:00
xxq250 ca409857bb Merge pull request '修改wiki调用' (#294) from tongChong/forgeplus-react:gitlink_server into gitlink_server 2021-11-29 16:20:39 +08:00
何童崇 219590a0cd 修改wiki调用 2021-11-29 16:07:51 +08:00
caishi 2f88227388 devops-name update 2021-11-29 14:35:05 +08:00
caishi a3b943f744 同上-代码编辑器选中高亮 2021-11-29 14:17:33 +08:00
caishi 8b4fc88b1d merge 编辑器滚动问题‘
2021-11-29 14:16:58 +08:00
caishi 131d8fa81c 加入项目错误提示 2021-11-29 14:01:23 +08:00
xxq250 3c2e899a20 Merge pull request 'issue-优化' (#291) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-11-29 11:02:21 +08:00
caishi 07511efbd6 issue-优化 2021-11-29 10:55:50 +08:00
caishi 3eaf1dc214 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-11-29 09:56:05 +08:00
caishi 9608f204e8 优化 2021-11-29 09:54:54 +08:00
xxq250 534a6bdeab Merge pull request '优化' (#290) from durian/forgeplus-react:gitlink_server into gitlink_server 2021-11-29 09:52:58 +08:00
谢思 ca5c279ac0 修改意见反馈的指派成员 2021-11-29 09:34:45 +08:00
谢思 ce3b460717 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-11-29 09:03:29 +08:00
xxq250 1c87cf6b98 Merge pull request '解决冲突以及issue' (#289) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-11-26 15:17:00 +08:00
caishi 614f0ea436 add aboutus-update 2021-11-26 14:29:36 +08:00
xiaoxiaoqiong a3ae80aa22 Merge branch 'feature_aboutus' into gitlink_server 2021-11-26 14:27:34 +08:00
baladiwei 70f9cd0997 Merge pull request '优化代码' (#288) from durian/forgeplus-react:about_us into feature_aboutus 2021-11-26 14:15:08 +08:00
谢思 fa247e39bf 优化代码 2021-11-26 14:11:09 +08:00
caishi 97a81572a9 package 2021-11-26 14:09:15 +08:00
caishi e084b015cf Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2021-11-26 14:08:11 +08:00
xiaoxiaoqiong cbe427a114 解决merge关于我们冲突 2021-11-26 14:02:47 +08:00
xiaoxiaoqiong f842f75065 mrege develop 2021-11-26 13:40:27 +08:00
caishi c8eed99f5d 个人主页-贡献度无数据时只显示x/y轴的内容 2021-11-26 10:59:33 +08:00
xxq250 fbd4273603 Merge pull request '列表样式,合并请求路由值根据接口改为number或者id' (#286) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-11-26 10:19:02 +08:00
caishi 9299a1667e gitlink首页style 2021-11-26 10:15:53 +08:00
baladiwei 10c9891b7b Merge pull request '关于我们' (#285) from durian/forgeplus-react:about_us into feature_aboutus 2021-11-25 16:53:39 +08:00
谢思 e5f8eac497 【关于我们】页面 2021-11-25 16:50:05 +08:00
caishi 633dee9655 合并请求列表跳转链接改为number或者id 2021-11-25 15:29:52 +08:00
starlee e7b7d20f94 add claim mechanism 2021-11-25 14:05:13 +08:00
xxq250 801c544f65 Merge pull request '前端页面优化' (#282) from hc1913847458/forgeplus-react:testdev into develop 2021-11-25 09:43:19 +08:00
hucong 5a1fcb1443 403,404登录验证 2021-11-24 18:31:46 +08:00
谢思 cf1d2dd5ba 修改招聘岗位要求 2021-11-24 17:43:42 +08:00
谢思 121b1aaab1 关于我们0.8版 2021-11-24 17:16:59 +08:00
谢思 3e42a620d9 关于我们0.5版 2021-11-23 21:47:52 +08:00
hucong 33297226ea 页面优化 2021-11-23 18:00:05 +08:00
谢思 982536b547 关于我们0.1版 2021-11-23 17:30:05 +08:00
hucong fd4046af04 issue 2021-11-23 15:04:34 +08:00
hucong 36683ad69b 团队介绍根据不同团队权限显示不同内容 2021-11-23 15:00:06 +08:00
hucong 2262508777 前端403,404,500页面优化 2021-11-23 14:39:44 +08:00
谢思 4f64b840b0 修改 fork项目失败原因为已经复刻过则跳转到复刻仓库,合并请求【仓库:分支】显示统一样式 2021-11-23 14:39:23 +08:00
谢思 a04b8de39e 刷新合并请求页面之后新建合并请求报错(恢复2.0版) 2021-11-23 10:13:11 +08:00
谢思 4d99c97370 刷新新建合并请求页面之后新建合并请求报错3.0 2021-11-23 09:48:36 +08:00
谢思 58f7c984a2 处理页面刷新之后创建合并请求报错2.0 2021-11-22 17:12:20 +08:00
hucong 9db8455de8 项目导航菜单悬停优化 2021-11-22 15:40:59 +08:00
谢思 4b1bccd1cd 处理页面刷新之后创建合并请求报错问题 2021-11-22 15:25:24 +08:00
jasder eff12234fa Merge pull request '意见反馈' (#277) from durian/forgeplus-react:gitlink_server into gitlink_server 2021-11-22 11:03:47 +08:00
谢思 77fdafd58b 解决css文件冲突 2021-11-22 10:15:41 +08:00
谢思 5fea412ca8 解决css文件冲突 2021-11-22 09:36:54 +08:00
yystopf 5f15b03462 Merge pull request 'merge issue上线' (#273) from caishi/forgeplus-react:gitservers into gitlink_server 2021-11-19 14:34:13 +08:00
caishi a2f63732cf build 2021-11-19 14:26:41 +08:00
caishi abf9b25651 iconfont 2021-11-19 14:21:39 +08:00
谢思 bf4ef7023d 意见反馈仓库信息更换成/Gitlink/forgeplus,issue指派成员更换成36480 2021-11-19 14:18:45 +08:00
谢思 f463b20de7 Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-11-19 11:13:57 +08:00
谢思 7934f07cea 代码库、易修页面未登录状态创建修改跳登录框代码层面优化,之后可实现复用 2021-11-19 11:11:14 +08:00
caishi f19a9f6ceb clear 2021-11-19 09:19:48 +08:00
caishi 8b5e159cac Merge branch 'develop' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-11-19 09:18:50 +08:00
caishi 16dff252c0 issue 2021-11-18 17:36:03 +08:00
谢思 fe0fab7b61 顶部导航栏搜索框还原 2021-11-18 17:08:03 +08:00
谢思 4e18d13b6b 注册和找回密码优化 2021-11-18 15:37:06 +08:00
谢思 d81d456d76 顶部搜索优化 2021-11-18 10:55:10 +08:00
jasder 8c66d817b5 Merge pull request 'fix 合并主干开发分支' (#267) from develop into gitlink_server 2021-11-18 10:53:15 +08:00
jasder 7579dc8a59 Merge pull request 'ADD @功能' (#266) from feature_notification_v2 into develop 2021-11-18 10:51:43 +08:00
谢思 3087e5471a 顶部搜索栏为空处理 2021-11-18 10:40:53 +08:00
谢思 4e8f304262 顶部输入框样式调整 2021-11-18 10:28:15 +08:00
谢思 48e9ca6706 意见反馈跳转调试 2021-11-17 15:06:55 +08:00
谢思 fc8a476aa3 修改意见反馈新建issue仓库和指派成员 2021-11-17 14:41:17 +08:00
jasder 89773b5036 Merge pull request '文案调整' (#264) from hc1913847458/forgeplus-react:testdev into develop 2021-11-17 14:31:12 +08:00
谢思 387387108a 意见反馈功能+未登录状态显示创建issue按钮 2021-11-17 14:03:10 +08:00
hucong 2617831a9f 文案调整 2021-11-16 18:29:55 +08:00
hucong f0747eab05 文案调整 2021-11-16 18:28:30 +08:00
caishi 789e84211c 小屏内容宽度调整 2021-11-16 15:54:45 +08:00
谢思 12ce0aa4f5 意见反馈功能 2021-11-16 13:18:03 +08:00
jasder 4a322d1e2e Merge pull request '登陆注册功能' (#262) from durian/forgeplus-react:gitlink_server into gitlink_server 2021-11-16 10:16:59 +08:00
谢思 a38b4af8bc 意见反馈功能 2021-11-16 09:21:13 +08:00
jasder d1743b350d Merge pull request '项目tab栏wiki添加中文' (#258) from hc1913847458/forgeplus-react:testdev into develop 2021-11-15 11:01:37 +08:00
baladiwei 7fd790fe7d Merge pull request '@我功能' (#261) from durian/forgeplus-react:feature_notification_v2 into feature_notification_v2 2021-11-12 14:21:39 +08:00
谢思 c48e3584c3 删除之前atwo.js的引入 2021-11-12 14:17:06 +08:00
谢思 d0ca09e780 Merge branch 'feature_notification_v2' of https://git.trustie.net/Gitlink/forgeplus-react into feature_notification_v2 2021-11-12 14:08:56 +08:00
baladiwei ed3bf55f90 Merge pull request 'merge old version' (#260) from feature_noti_v2 into feature_notification_v2 2021-11-12 14:07:07 +08:00
谢思 7ff29fec70 未及时更新评论内容 2021-11-12 13:50:35 +08:00
谢思 79331db271 登陆注册bug修复 2021-11-12 12:33:46 +08:00
hucong fbfd5f175d 项目tab栏合并请求增加英文 2021-11-12 10:34:56 +08:00
hucong 07101f5770 项目tab栏wiki增加中文 2021-11-12 10:29:53 +08:00
yystopf 652de9b441 Merge pull request '查看源代码的浏览器logo以及页面添加的监听事件的移除' (#257) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-11-11 16:38:14 +08:00
caishi f2a660d595 ico + 移除滚动事件 2021-11-11 16:35:37 +08:00
jasder 711c2e57da Merge pull request '首页相关需求、issues修改' (#256) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-11-11 13:44:38 +08:00
caishi 6fc441d7c5 issues 2021-11-11 13:41:55 +08:00
谢思 a94d02bb8a atwo markdown渲染 2021-11-11 11:31:42 +08:00
谢思 cc2dd35ff4 编辑合并请求最后一行@弹框被遮挡 2021-11-10 20:45:23 +08:00
谢思 f003a99779 @我功能。 2021-11-10 16:47:22 +08:00
caishi b4e2c6148a logo and issues 2021-11-10 15:07:39 +08:00
谢思 b1ead191a6 Merge branch 'pre_develop' of https://git.trustie.net/Gitlink/forgeplus-react into feature_notification_v2 2021-11-10 10:28:23 +08:00
caishi 0735968e73 图片压缩替换 2021-11-10 10:21:01 +08:00
caishi 37f5bce087 pr/Anchor等问题 2021-11-09 16:38:53 +08:00
caishi 951792dc11 style update 2021-11-09 11:20:36 +08:00
caishi 7d7f265ffb Merge branch 'gitlink_server' of https://git.trustie.net/Gitlink/forgeplus-react into gitlink_server 2021-11-09 09:49:54 +08:00
jasder 7495c54f8d Merge pull request 'fix 发布gitlink server 版本' (#252) from jasder/forgeplus-react:gitlink_server into gitlink_server 2021-11-09 09:49:30 +08:00
jasder 631f8ceeea FIX 合并登陆注册功能分支代码 2021-11-09 09:45:36 +08:00
jasder d70ddfb2f7 Merge remote-tracking branch 'gitlink/gitlink_server' into gitlink_server 2021-11-09 09:31:23 +08:00
jasder 54741a6d8a Merge branch 'develop' into gitlink_server 2021-11-09 09:31:05 +08:00
jasder 116c3e531f Merge pull request '登陆注册功能' (#250) from durian/forgeplus-react:featrue_login_and_register into featrue_login_and_register 2021-11-09 09:19:36 +08:00
谢思 990cfe2781 代码优化 2021-11-08 16:44:38 +08:00
谢思 66e1235c3b 找回密码次数上限+找回密码确认密码优化 2021-11-08 16:39:37 +08:00
谢思 76fdff6737 背景图片过大加载慢 2021-11-08 16:15:04 +08:00
谢思 55a6f93fe3 atwho 2021-11-08 16:04:19 +08:00
谢思 4bc79b5153 添加第三方登录 2021-11-08 15:43:55 +08:00
谢思 ac4488a907 atwho 2021-11-08 15:14:04 +08:00
caishi 3085e40426 hide 2021-11-08 15:12:12 +08:00
jasder ea979b78ee Merge pull request '目录跳转问题' (#248) from hc1913847458/forgeplus-react:testdev into develop 2021-11-08 14:34:11 +08:00
hucong b1775e5158 目录跳转问题 2021-11-08 14:05:39 +08:00
hucong 3678b8eb72 issue 2021-11-08 13:58:46 +08:00
谢思 12d8f5bf5d 登陆注册功能 2021-11-08 13:29:12 +08:00
hucong e04fb11194 目录跳转问题 2021-11-05 19:03:24 +08:00
hucong 010edf3cb2 目录跳转问题 2021-11-05 18:31:14 +08:00
jasder ab26a528b6 Merge pull request 'gitlink首页数据绑定以及需求更改、文案修改等' (#246) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-11-04 14:18:37 +08:00
jasder 6d39e25667 Merge pull request 'pr中的用户名称显示问题' (#244) from hc1913847458/forgeplus-react:testdev into develop 2021-11-03 18:46:12 +08:00
caishi a2ea832208 gitlink首页-数据绑定 2021-11-03 18:43:41 +08:00
caishi d1bc3680b9 gitlink首页 2021-11-02 14:15:19 +08:00
caishi 08416390e5 update 2021-11-02 10:23:04 +08:00
hucong 190200d1e6 Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into testdev 2021-11-01 14:41:27 +08:00
hucong b124364203 pr中用户名称显示问题 2021-11-01 14:40:41 +08:00
谢思 2078a044b6 at我列表 2021-11-01 09:31:08 +08:00
caishi 35c2f63c55 update 2021-10-29 18:22:45 +08:00
caishi 30c61f0a7d 上线update 2021-10-29 17:01:55 +08:00
caishi 743dabd553 需求+设计+bug修改 2021-10-29 14:18:30 +08:00
caishi 015296e065 merge gitlink首页、项目首页,update 2021-10-29 09:39:59 +08:00
jasder 48c21ac245 Merge pull request 'merge' (#241) from caishi/forgeplus-react:gitlink_server into gitlink_server 2021-10-28 18:26:10 +08:00
caishi a93b8a08c9 register 2021-10-28 18:23:22 +08:00
jasder 1c48ffb130 合并平台首页、项目首页功能分支,并处理代码冲突 2021-10-28 18:11:07 +08:00
jasder 0ee9280bb1 Merge pull request 'fix 开发主干分支并入gitlink服务分支' (#239) from develop into gitlink_server 2021-10-28 17:54:22 +08:00
jasder e785e9a358 Merge pull request 'ADD 项目首页功能并入开发分支' (#238) from featrue_project_homepage into develop 2021-10-28 17:53:05 +08:00
jasder b3b95e9856 Merge pull request 'merge' (#237) from caishi/forgeplus-react:featrue_project_homepage into featrue_project_homepage 2021-10-28 17:51:56 +08:00
caishi 5be8ead356 Merge branch 'develop' of https://git.trustie.net/Gitlink/forgeplus-react into featrue_project_homepage 2021-10-28 17:48:56 +08:00
jasder 7d78919c4a Merge pull request 'FIX 解决冲突' (#236) from pre_develop into develop 2021-10-28 17:48:45 +08:00
jasder d5b4c5425f Merge pull request 'wip' (#235) from pre_develop_dev into pre_develop 2021-10-28 17:48:03 +08:00
caishi f259f05cdc Merge branch 'develop' of https://git.trustie.net/Gitlink/forgeplus-react into featrue_project_homepage 2021-10-28 17:46:55 +08:00
jasder 95cd289373 Merge pull request '项目首页改版更新' (#232) from caishi/forgeplus-react:featrue_project_homepage into featrue_project_homepage 2021-10-28 17:43:43 +08:00
jasder e739f5b786 Merge pull request 'fix 更改注册页面备案号等相关信息' (#231) from jasder/forgeplus-react:gitlink_server into gitlink_server 2021-10-28 17:43:16 +08:00
caishi c79be9a597 Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into featrue_project_homepage 2021-10-28 17:41:54 +08:00
jasder fb03565a25 Merge pull request '并入开发分支' (#230) from pre_develop_dev into develop 2021-10-28 17:39:40 +08:00
jasder 7ec53a246c Merge pull request 'logo 从接口获取 nav_logo_url' (#226) from caishi/forgeplus-react:feature_homepage into feature_homepage 2021-10-28 17:30:39 +08:00
jasder 56946f94e8 更改域名相关信息 2021-10-28 17:29:35 +08:00
caishi 61ee3fe36f 注册页面相关信息修改 2021-10-28 17:25:50 +08:00
caishi d5f989bbe2 update 2021-10-28 17:08:36 +08:00
caishi f5817e5150 Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage 2021-10-28 09:31:35 +08:00
caishi 1c24baf3b9 数据绑定 2021-10-28 09:31:08 +08:00
caishi 3d3ef19d4a 项目首页 banner 2021-10-26 09:40:35 +08:00
jasder 7b77c46915 Merge pull request '导入仓库链接和项目issue优化更改' (#228) from hc1913847458/forgeplus-react:testdev into pre_develop_dev 2021-10-25 17:33:48 +08:00
hucong 746f552a21 issue 2021-10-25 16:37:50 +08:00
hucong 7872d5ecab 导入链接优化 2021-10-25 15:56:06 +08:00
hucong 60da6bd110 导入链接优化 2021-10-25 15:46:57 +08:00
caishi a3bbf6b1c1 头部logo 2021-10-25 11:29:21 +08:00
caishi d37709b1a5 首页文件夹 2021-10-25 11:24:21 +08:00
hucong aeff357660 项目页icon更改 2021-10-25 11:09:41 +08:00
hucong 0e6cb3954a 项目页icon更改 2021-10-25 11:09:13 +08:00
hucong ae12618c0c 导入链接显示优化 2021-10-25 10:45:40 +08:00
谢思 1c46617144 Merge branch 'pre_develop' of https://git.trustie.net/Gitlink/forgeplus-react into feature_notification_v2 2021-10-23 19:52:58 +08:00
谢思 ec133a6880 添加todo 2021-10-23 19:50:17 +08:00
谢思 bcdb631c20 删除引入的js文件 2021-10-23 19:43:58 +08:00
谢思 8021d96cd8 atwho列表 2021-10-23 19:39:54 +08:00
caishi 914966bd39 detail 2021-10-22 16:42:43 +08:00
caishi f89f4b6628 Merge branch 'standalone_develop' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage 2021-10-22 14:33:40 +08:00
jasder 7407545d1f Merge pull request '冲突引起iconfont丢失' (#215) from caishi/forgeplus-react:standalone into standalone 2021-10-22 14:05:27 +08:00
caishi f0ffc9a29c iconfont + style 2021-10-22 13:56:34 +08:00
jasder 987eb39681 Merge pull request 'standalone merge problem' (#214) from caishi/forgeplus-react:standalone into standalone 2021-10-22 11:44:51 +08:00
caishi 848109afe8 settings 2021-10-22 11:40:41 +08:00
caishi d7bdb35bb7 merge bug 2021-10-22 11:28:22 +08:00
caishi 254b3173d1 merge 2021-10-22 11:25:44 +08:00
caishi 44f06b7305 Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage
# Conflicts:
#	public/css/iconfont.css
#	public/css/iconfont.js
#	public/css/iconfont.json
#	public/css/iconfont.ttf
#	public/css/iconfont.woff
#	public/css/iconfont.woff2
#	src/App.js
#	src/forge/Head/Footer.jsx
#	src/modules/tpm/TPMIndexHOC.js
2021-10-22 10:33:18 +08:00
jasder b16e95923a Merge pull request 'FIX bug' (#211) from jasder/forgeplus-react:standalone into standalone 2021-10-22 10:11:03 +08:00
jasder 98a7f73c04 Merge branch 'master' into standalone 2021-10-22 10:09:53 +08:00
jasder b6a450a482 FIX 项目路由改造的bug 2021-10-22 10:04:39 +08:00
jasder 66c495d6b5 Merge pull request '合并代码后,变量重复引发错误' (#203) from caishi/forgeplus-react:standalone into standalone 2021-10-21 18:32:37 +08:00
caishi 42139ef998 settings多次声明 2021-10-21 18:30:28 +08:00
jasder 925d5ea356 Merge pull request '并入独立版本' (#202) from jasder/forgeplus-react:standalone into standalone 2021-10-21 18:28:15 +08:00
jasder ad1f0e29e7 FIX 合并主干分支代码并解决冲突 2021-10-21 18:24:06 +08:00
谢思 3498390974 at 2021-10-21 14:12:15 +08:00
谢思 4f3e385f78 at谁列表(缺弹框的上下,enter键监听) 2021-10-21 10:51:40 +08:00
谢思 18b289b84c @who(缺优化) 2021-10-21 09:41:17 +08:00
谢思 e3f49db5c0 at谁列表 2021-10-18 14:19:32 +08:00
谢思 4add266047 at谁列表 2021-10-15 11:36:51 +08:00
谢思 4a6012bfa9 at谁列表 2021-10-14 15:04:17 +08:00
谢思 7fe88aa4d9 at列表 2021-10-14 09:11:37 +08:00
谢思 bc6ef583fb atwho 2021-10-13 16:01:38 +08:00
谢思 b268b540d8 @我列表 2021-10-13 14:53:13 +08:00
谢思 7e69c64c9c @who列表 2021-10-13 11:52:54 +08:00
谢思 85ef26f70e @who 2021-10-13 10:07:38 +08:00
谢思 8c7865d2c1 Merge branch 'pre_develop' of https://git.trustie.net/Gitlink/forgeplus-react into feature_notification_v2 2021-10-13 09:54:04 +08:00
谢思 999a15761d md@谁列表 2021-10-12 14:24:18 +08:00
谢思 5c2330512e @我:在markdown编辑器中输入@我弹出列表需要引入的js 2021-10-11 13:48:50 +08:00
caishi 3da9306ed6 style 2021-09-30 15:42:37 +08:00
caishi 568a632d65 Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage
# Conflicts:
#	src/forge/Head/header.scss
2021-09-29 19:34:03 +08:00
caishi 5982c0df96 首页需求更改 2021-09-29 19:31:55 +08:00
jasder 21046bbcb7 Merge pull request 'gitlink首页需求更新' (#86) from caishi/forgeplus-react:feature_homepage into feature_homepage 2021-09-29 08:24:44 +08:00
caishi 0c816805fb gitlink 首页:合作单位的image以及需求更新 2021-09-28 16:08:25 +08:00
caishi 28f8b6b54c Merge branch 'feature_homepage' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage 2021-09-24 18:19:27 +08:00
caishi 7d087ec1f2 gitlink首页-第一版 2021-09-24 18:18:55 +08:00
jasder beba8975ca Merge pull request 'fix merge pro develop dev' (#73) from pre_develop_dev into feature_homepage 2021-09-24 18:18:42 +08:00
qyzh f05984a7ca merge gitlink/develop 2021-09-24 17:20:33 +08:00
caishi d4690cc8b5 拉取测试版分支代码,且更新gitlink首页 2021-09-22 09:23:20 +08:00
caishi 38021c2e4b Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage 2021-09-17 09:50:03 +08:00
caishi 4233811ae3 Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage 2021-09-16 17:26:00 +08:00
caishi 8273acd195 Merge branch 'pre_develop_dev' of https://git.trustie.net/Gitlink/forgeplus-react into feature_homepage 2021-09-16 15:57:24 +08:00
caishi cacb8c84ae 合并develop分支的个人中心改版-全部 2021-06-10 09:36:03 +08:00
caishi fb8ae3fcdf 小修 2021-06-09 18:08:49 +08:00
caishi a257d832cb issue 2021-06-09 18:08:01 +08:00
caishi ff7d191011 merge 2021-06-09 18:07:39 +08:00
caishi 9a2c3f1754 merge 2021-06-09 18:06:54 +08:00
caishi bcdf506e6c 数据统计三个时间筛选参数值必须是时间戳 2021-06-09 18:06:14 +08:00
caishi ccc6cb5d26 merge 2021-06-09 18:03:52 +08:00
caishi 0661c6b932 添加成员后要清除选中的成员 2021-06-09 18:03:24 +08:00
caishi 99947c0c87 merge 2021-06-09 17:56:51 +08:00
caishi 03cff6ec2e merge 2021-06-09 17:56:02 +08:00
caishi f86acfebdf merge冲突 2021-06-09 17:55:12 +08:00
caishi 9a62d7806e 同上-修改细节 2021-06-09 17:54:06 +08:00
caishi a7df6da5f0 merge 个人中心部分 冲突 2021-06-09 17:53:57 +08:00
caishi eab68ac270 概览页数据绑定完成,只差数据统计页 2021-06-09 17:52:43 +08:00
caishi a9e3513706 year 2021-06-09 17:52:31 +08:00
caishi 6b20391c72 merge 个人中心改版 2021-06-09 17:40:05 +08:00
qyzh b03d8c2f07 所有图表的前后端交互 2021-06-09 11:03:22 +08:00
qyzh 25e768f5af 修复取消赞助重复提示 2021-06-02 11:22:02 +08:00
caishi 3135300fe6 merge d029840874 2021-05-14 11:32:01 +08:00
nigel007 01d3972d3e add information 2021-05-13 22:28:57 +08:00
nigel007 36691c25a4 remove description 2021-05-13 16:05:54 +08:00
nigel007 95bc2d7e3e change width css 2021-05-13 09:39:04 +08:00
nigel007 c52fa2e79f change appearance in blockchain functions 2021-05-12 15:45:02 +08:00
nigel007 c7da648ae8 merge conflict 2021-05-11 22:07:25 +08:00
caishi ecc6387113 no message 2021-05-08 17:22:44 +08:00
caishi 990c4e22b0 编辑合并请求-url地址错误 2021-05-08 14:35:51 +08:00
caishi 7eea9316dd detail+同步镜像type=2的才不需要合并请求 2021-05-07 17:41:01 +08:00
caishi 6a546c79e4 merge 2021-05-07 16:36:22 +08:00
caishi 4c48b6c77a merge 2021-05-07 16:35:17 +08:00
caishi 4d5430c3ed 统一项目简介、项目概览 2021-05-07 16:33:57 +08:00
caishi d49af735f1 merge 2021-05-06 17:21:19 +08:00
caishi 03370e8a07 merge 2021-05-06 17:19:09 +08:00
caishi 0b43fa8952 merge develop 2021-05-06 17:18:30 +08:00
caishi 465c4cc8c7 04-28休假期修改issue --需合并至其它分支(合并请求相关) 2021-04-28 20:23:57 +08:00
caishi 37668ddcd4 组织团队-无数据显示错误 2021-04-27 09:47:10 +08:00
caishi 7102594444 代码库编辑文件-切换到其它目录后要重新将编辑状态改为显示状态 2021-04-25 17:48:58 +08:00
nigel007 fe681a07d9 merge conflict 2021-04-24 08:48:07 +08:00
nigel007 21762c21eb change blockchain related things 2021-04-23 21:38:14 +08:00
caishi b2f2df65bb 样式覆盖 2021-04-23 18:07:15 +08:00
caishi 8a577fb263 资源库 2021-04-23 17:16:50 +08:00
caishi 5c491071b6 +上 关注后不需要提示 2021-04-23 16:37:16 +08:00
caishi c554237076 +上 贡献者悬浮框里增加的跳转链接不要新开页 2021-04-23 16:37:06 +08:00
caishi d22a741bf7 贡献者-悬浮内容增加跳转链接 2021-04-23 16:36:56 +08:00
caishi 383b3f5d74 imageUrl + / 2021-04-23 16:36:41 +08:00
caishi 63da7adcf9 个人中心关注-关注或者取消关注未更新状态 2021-04-23 16:36:31 +08:00
caishi 3243aeebc6 贡献者-悬浮卡片-测试版1 2021-04-23 16:36:22 +08:00
caishi 1a86a75345 发布评论者头像路径错误 2021-04-23 16:36:11 +08:00
caishi 3b6cc99d49 merge 2021-04-23 16:35:49 +08:00
caishi d872ffc606 merge 2021-04-23 16:31:15 +08:00
caishi 3b69c01ead merge 2021-04-23 16:30:45 +08:00
caishi 1e0608aa14 合并请求-提出申请者头像显示问题 2021-04-23 16:30:07 +08:00
caishi 9b6816e346 团队项目-团队项目管理-显示的name和跳转的login 2021-04-23 16:29:57 +08:00
caishi 6ee257231d 切换左侧目录,选择不同的文件时,文件详情没有更新 2021-04-23 16:29:46 +08:00
caishi 70edb73f6c all-默认头像(首字母加背景颜色) 2021-04-23 16:29:35 +08:00
caishi 5c7553d4aa merge 2021-04-23 16:29:16 +08:00
caishi 278701f24b 上线后的getImageURL也不用在前面加/ + 一些小样式修改 2021-04-23 16:27:56 +08:00
caishi 97ab819bf9 merge 2021-04-23 16:27:37 +08:00
caishi d870f17b85 readme-文件增加一个目录下拉icon 2021-04-23 16:26:02 +08:00
caishi 91ac6c2357 组织团队-新增一个团队标识 2021-04-23 16:25:47 +08:00
caishi 3702d1c1a5 merge 2021-04-23 16:25:35 +08:00
caishi 93d48c359e merge 2021-04-23 16:25:03 +08:00
caishi 80dace18e9 资源库不需要按引用次数排序 2021-04-23 16:24:23 +08:00
caishi 375cbb37df merge 2021-04-23 16:24:02 +08:00
caishi 10d933e037 merge develop 2021-04-23 16:23:29 +08:00
caishi 4fdd3f6f80 组织-团队列表的头像login为undefined 2021-04-23 16:22:36 +08:00
caishi 458b56e33b 去掉悬浮手册按钮 2021-04-23 16:22:22 +08:00
caishi c256887132 注册成功后跳转到首页 2021-03-31 15:13:32 +08:00
caishi 6a588db7f6 清理代码 2021-03-31 15:03:16 +08:00
caishi 6c4e1c6665 Merge branch 'standalone' into dev_local 2021-03-31 14:42:24 +08:00
caishi c554d2c00d 重置settings为undefined 2021-03-31 14:35:23 +08:00
caishi b69bf5974a remove 2021-03-31 14:28:22 +08:00
caishi ecb1691b4d Trustie 2021-03-31 14:17:48 +08:00
caishi 6a9f2b31a6 注册页面logo和底部信息 2021-03-31 14:04:09 +08:00
caishi 4947cd8456 浏览器ico要用trustie的logo 2021-03-31 12:07:11 +08:00
caishi 8429effe16 没logo时会将setting重置为空 2021-03-31 12:02:38 +08:00
caishi 49ebe450be 合并测试版分支 2021-03-31 11:21:07 +08:00
caishi e3c926da77 注册 2021-03-29 17:37:16 +08:00
caishi af48da2eb3 href 2021-03-29 17:14:56 +08:00
caishi 6630309466 Merge branch 'develop' into dev_local 2021-03-29 16:58:48 +08:00
qyzh d35da06e5b fix bugs 2020-12-27 21:55:20 +08:00
qyzh c27b64eecc fix bugs 2020-12-14 22:05:53 +08:00
qyzh f4fca18228 merge dev_bei to sponsor, fix conflict 2020-12-01 19:10:26 +08:00
qyzh 2cc888a972 fix bugs 2020-12-01 14:52:23 +08:00
caishi a7c3dee7e3 2020-11-26 10:55:03 +08:00
qyzh ccace2a879 新增:修改赞助关系 2020-11-09 21:00:40 +08:00
qyzh fc55df4d30 添加部分布局 2020-10-20 19:59:18 +08:00
qyzh 236a8f127a sponsor tiers增删改查 2020-09-19 10:00:30 +08:00
qyzh c696924523 赞助管理页面修改 2020-09-10 15:55:52 +08:00
qyzh 381ad7135b 开发赞助管理页面 2020-09-10 10:12:49 +08:00
qyzh 016c0bee00 编辑资助页面 2020-09-08 10:05:27 +08:00
qyzh 0f5712eb0e fix conflicts 2020-07-23 09:06:24 +08:00
qyzh df9d6aa8a2 ignore sublime workspace file 2020-07-22 17:34:43 +08:00
qyzh 622715919e before merge 2020-07-22 17:33:05 +08:00
733 changed files with 84110 additions and 9020 deletions

View File

@ -1,6 +1,6 @@
{
"presets": [
"es2015",
"env",
"react",
"stage-2"
],
@ -12,5 +12,5 @@
"regenerator": true,
"moduleName": "babel-runtime"
}
]]
],["transform-decorators-legacy"]]
}

6
.gitignore vendored
View File

@ -1,3 +1,4 @@
.idea/
# Logs
logs
*.log
@ -5,6 +6,7 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
yarn.lock
package-lock.json
# Runtime data
pids
@ -37,7 +39,7 @@ bower_components
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/
src/.umi/
# Dependency directories
node_modules/
jspm_packages/
@ -86,3 +88,5 @@ typings/
.DS_Store
.idea/*
.forgeplus-react.sublime-workspace

1179
.idea/workspace.xml Normal file

File diff suppressed because it is too large Load Diff

15
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,15 @@
{
// 使 IntelliSense
//
// 访: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "pwa-chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
}
]
}

BIN
build.tar.gz Normal file

Binary file not shown.

View File

@ -60,7 +60,7 @@ process.env.NODE_PATH = (process.env.NODE_PATH || '')
// injected into the application via DefinePlugin in Webpack configuration.
const REACT_APP = /^REACT_APP_/i;
function getClientEnvironment(publicUrl) {
function getClientEnvironment(publicUrl,reactUrl) {
const raw = Object.keys(process.env)
.filter(key => REACT_APP.test(key))
.reduce(
@ -77,6 +77,7 @@ function getClientEnvironment(publicUrl) {
// This should only be used as an escape hatch. Normally you would put
// images into the `src` and `import` them in code to get their paths.
PUBLIC_URL: publicUrl,
REACT_URL: reactUrl,
}
);
// Stringify all values so we can feed into Webpack DefinePlugin

View File

@ -15,7 +15,7 @@ const getClientEnvironment = require("./env");
const paths = require("./paths");
const publicPath = "/";
const env = getClientEnvironment("/");
const env = getClientEnvironment("/","development");
module.exports = {
optimization: {
@ -83,6 +83,11 @@ module.exports = {
devtoolModuleFilenameTemplate: (info) =>
path.resolve(info.absoluteResourcePath).replace(/\\/g, "/"),
},
externals: {
"react": "React",
"react-dom": "ReactDOM",
"alex": "Alex",
},
resolve: {
// This allows you to set a fallback for where Webpack should look for modules.
// We placed these paths second because we want `node_modules` to "win"
@ -150,7 +155,7 @@ module.exports = {
{
libraryName: "antd",
libraryDirectory: "es",
style: "css",
style: true,
},
],
],
@ -206,8 +211,34 @@ module.exports = {
{
loader: require.resolve("sass-loader"),
},
{
loader: 'sass-resources-loader',
options: {
resources: ['src/global.scss']
}
}
],
},
{
test: /\.less$/,
use: [{
loader: 'style-loader',
}, {
loader: 'css-loader', // translates CSS into CommonJS
}, {
loader: 'less-loader', // compiles Less to CSS
options: {
modifyVars: {
'primary-color': '#466aff',
'primary-color-hover': '#6684FE',
'primary-color-active': '#1A47FF',
'link-color': '#466aff',
},
javascriptEnabled: true,
},
}]
},
// "file" loader makes sure those assets get served by WebpackDevServer.
// When you `import` an asset, you get its (virtual) filename.
// In production, they would get copied to the `build` folder.
@ -239,6 +270,7 @@ module.exports = {
new HtmlWebpackPlugin({
inject: false,
template: paths.appHtml,
reactPath:'react.production.min.js',
}),
new InterpolateHtmlPlugin(HtmlWebpackPlugin, env.raw),
@ -266,7 +298,7 @@ module.exports = {
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
new MonacoWebpackPlugin({
features: ["coreCommands", "find"],
languages: ['plaintext','apex', 'azcli', 'bat', 'clojure', 'coffee', 'cpp', 'csharp', 'csp', 'css', 'dockerfile', 'fsharp', 'go', 'handlebars', 'html', 'ini', 'java', 'javascript', 'json', 'less', 'lua', 'markdown', 'msdax', 'mysql', 'objective', 'perl', 'pgsql', 'php', 'postiats', 'powerquery', 'powershell', 'pug', 'python', 'r', 'razor', 'redis', 'redshift', 'ruby', 'rust', 'sb', 'scheme', 'scss', 'shell', 'solidity', 'sql', 'st', 'swift', 'typescript', 'vb', 'xml', 'yaml']
languages: ['plaintext', 'apex', 'azcli', 'bat', 'clojure', 'coffee', 'cpp', 'csharp', 'csp', 'css', 'dockerfile', 'fsharp', 'go', 'handlebars', 'html', 'ini', 'java', 'javascript', 'json', 'less', 'lua', 'markdown', 'msdax', 'mysql', 'objective', 'perl', 'pgsql', 'php', 'postiats', 'powerquery', 'powershell', 'pug', 'python', 'r', 'razor', 'redis', 'redshift', 'ruby', 'rust', 'sb', 'scheme', 'scss', 'shell', 'solidity', 'sql', 'st', 'swift', 'typescript', 'vb', 'xml', 'yaml']
}),
],
// Some libraries import Node modules but don't use them in the browser.

View File

@ -10,10 +10,9 @@ const SWPrecacheWebpackPlugin = require("sw-precache-webpack-plugin");
const eslintFormatter = require("react-dev-utils/eslintFormatter");
const ModuleScopePlugin = require("react-dev-utils/ModuleScopePlugin");
const MonacoWebpackPlugin = require("monaco-editor-webpack-plugin");
const TerserJSPlugin = require("terser-webpack-plugin");
const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
const TerserWebpackPlugin = require('terser-webpack-plugin');
const paths = require("./paths");
const getClientEnvironment = require("./env");
@ -21,15 +20,27 @@ let publicPath = "/react/build/";
const publicUrl = publicPath.slice(0, -1);
// const shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== "false";
const shouldUseSourceMap = process.env.NODE_ENV !== "production";
const env = getClientEnvironment(publicPath);
const env = getClientEnvironment(publicPath,'production.min');
const terserPlugin = new TerserWebpackPlugin({
parallel: 4,
extractComments: true,
terserOptions: {
compress: {
warnings: false,
drop_console: true,
drop_debugger: true,
pure_funcs: ['console.log'] //移除console
}
}
});
// This is the production configuration.
// It compiles slowly and is focused on producing a fast and minimal bundle.
// The development configuration is different and lives in a separate file.
// 上线用的
module.exports = {
optimization: {
minimizer: [new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({})],
minimizer: [new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({}),terserPlugin],
splitChunks: {
chunks: "async",
// 大于30KB才单独分离成chunk
@ -71,6 +82,11 @@ module.exports = {
.relative(paths.appSrc, info.absoluteResourcePath)
.replace(/\\/g, "/"),
},
externals: {
'alex': 'Alex',
"react": "React",
"react-dom": "ReactDOM",
},
resolve: {
// This allows you to set a fallback for where Webpack should look for modules.
// We placed these paths second because we want `node_modules` to "win"
@ -100,6 +116,7 @@ module.exports = {
// please link the files into your node_modules/ and let module-resolution kick in.
// Make sure your source files are compiled, as they will not be processed in any way.
new ModuleScopePlugin(paths.appSrc, [paths.appPackageJson]),
// ["transform-remove-console"]
],
},
module: {
@ -147,7 +164,7 @@ module.exports = {
{
libraryName: "antd",
libraryDirectory: "es",
style: "css",
style: true,
},
],
],
@ -208,8 +225,31 @@ module.exports = {
{
loader: require.resolve("sass-loader"),
},
{
loader: 'sass-resources-loader',
options: {
resources: ['src/global.scss']
}
}
],
},
{
test: /\.less$/,
use: [{
loader: 'style-loader',
}, {
loader: 'css-loader', // translates CSS into CommonJS
}, {
loader: 'less-loader', // compiles Less to CSS
options: {
modifyVars: {
'primary-color': '#466aff',
'link-color': '#466aff',
},
javascriptEnabled: true,
},
}]
},
// "file" loader makes sure assets end up in the `build` folder.
// When you `import` an asset, you get its filename.
// This loader doesn't use a "test" so it will catch all modules
@ -298,7 +338,7 @@ module.exports = {
// Ignores URLs starting from /__ (useful for Firebase):
// https://github.com/facebookincubator/create-react-app/issues/2237#issuecomment-302693219
navigateFallbackWhitelist: [/^(?!\/__).*/],
// Don't precache sourcemaps (they're large) and build asset manifest:
// Don't precache sourcemaps (they're large) and build asset manifest:f
staticFileGlobsIgnorePatterns: [/\.map$/, /asset-manifest\.json$/],
}),
// Moment.js is an extremely popular library that bundles large locale files

View File

@ -0,0 +1,317 @@
{
"auto_complete":
{
"selected_items":
[
[
"samp",
"samp2_method"
],
[
"modu",
"module_method"
],
[
"cu",
"currentTerm"
],
[
"req",
"requestVote"
],
[
"reque",
"RequestVote"
],
[
"App",
"AppendEntries"
],
[
"hea",
"heartBeatInterval"
],
[
"time",
"timeOut"
],
[
"ele",
"electionTimeout"
],
[
"R",
"Raft"
],
[
"vote",
"votedFor"
],
[
"Ra",
"RaftState"
],
[
"is",
"isleader"
]
]
},
"buffers":
[
{
"file": "src/redux/actions/actionTypes.js",
"settings":
{
"buffer_size": 5688,
"encoding": "UTF-8",
"line_ending": "Unix"
}
}
],
"build_system": "",
"build_system_choices":
[
],
"build_varint": "",
"command_palette":
{
"height": 0.0,
"last_filter": "",
"selected_items":
[
],
"width": 0.0
},
"console":
{
"height": 171.0,
"history":
[
"ls"
]
},
"distraction_free":
{
"menu_visible": true,
"show_minimap": false,
"show_open_files": false,
"show_tabs": false,
"side_bar_visible": false,
"status_bar_visible": false
},
"expanded_folders":
[
"/home/qyzh/new_trustie/forgeplus-react"
],
"file_history":
[
"/home/qyzh/OSS/forgeplus/app/models/user.rb",
"/home/qyzh/OSS/forgeplus/db/structure.sql",
"/home/qyzh/OSS/forgeplus/app/controllers/settings_controller.rb",
"/home/qyzh/OSS/forgeplus/app/controllers/application_controller.rb",
"/home/qyzh/OSS/Trustie/app/controllers/projects_controller.rb",
"/home/qyzh/temp.sh",
"/home/qyzh/OSS/Trustie/Gemfile",
"/home/qyzh/.npm/_logs/2020-06-07T02_42_06_886Z-debug.log",
"/home/qyzh/OSS/forgeplus/app/controllers/users_controller.rb",
"/home/qyzh/OSS/forgeplus/app/controllers/accounts_controller.rb",
"/home/qyzh/custom/conf/app.ini",
"/home/qyzh/OSS/Trustie_old/Gemfile.lock",
"/home/qyzh/OSS/Trustie/Gemfile.lock",
"/home/qyzh/ruby_study/test.rb",
"/home/qyzh/RubymineProjects/myblog/app/controller/users_controller.rb",
"/home/qyzh/OSS/forgeplus/app/libs/limit_forbid_control.rb",
"/home/qyzh/OSS/forgeplus/log/development.log",
"/home/qyzh/NJU-DisSys-2017/src/raft/raft.go",
"/home/qyzh/OSS/forgeplus/config/application.rb",
"/home/qyzh/RubymineProjects/demo/app/helpers/welcome_helper.rb",
"/home/qyzh/RubymineProjects/demo/app/controllers/welcome_controller.rb",
"/home/qyzh/RubymineProjects/demo/config/routes.rb",
"/home/qyzh/RubymineProjects/demo/app/views/welcome/index.html.erb",
"/home/qyzh/trustie/Gemfile",
"/home/qyzh/trustie/Gemfile.lock",
"/home/qyzh/ruby_study/test",
"/home/qyzh/NJU-DisSys-2017/src/labrpc/test_test.go",
"/home/qyzh/NJU-DisSys-2017/src/labrpc/labrpc.go",
"/home/qyzh/NJU-DisSys-2017/src/raft/test_test.go",
"/home/qyzh/NJU-DisSys-2017/src/raft/persister.go",
"/home/qyzh/NJU-DisSys-2017/src/raft/util.go",
"/home/qyzh/NJU-DisSys-2017/src/raft/config.go"
],
"find":
{
"height": 29.0
},
"find_in_files":
{
"height": 0.0,
"where_history":
[
]
},
"find_state":
{
"case_sensitive": true,
"find_history":
[
"current_user",
"user_set",
"login",
"platform",
"Platform不包含于列表中",
"find_by_",
"find_by",
"3.2.22",
"bug",
"persister",
"currentTerm",
"currentTern",
"term",
"your",
"electionInterval",
"your",
"if",
"your",
"Persister",
"make",
"Your code here",
"Call",
"labrpc",
"main"
],
"highlight": true,
"in_selection": false,
"preserve_case": false,
"regex": false,
"replace_history":
[
],
"reverse": false,
"show_context": true,
"use_buffer2": true,
"whole_word": false,
"wrap": true
},
"groups":
[
{
"selected": 0,
"sheets":
[
{
"buffer": 0,
"file": "src/redux/actions/actionTypes.js",
"semi_transient": false,
"settings":
{
"buffer_size": 5688,
"regions":
{
},
"selection":
[
[
0,
0
]
],
"settings":
{
"syntax": "Packages/JavaScript/JavaScript.sublime-syntax",
"tab_size": 2,
"translate_tabs_to_spaces": true
},
"translation.x": 0.0,
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 0,
"type": "text"
}
]
}
],
"incremental_find":
{
"height": 29.0
},
"input":
{
"height": 0.0
},
"layout":
{
"cells":
[
[
0,
0,
1,
1
]
],
"cols":
[
0.0,
1.0
],
"rows":
[
0.0,
1.0
]
},
"menu_visible": true,
"output.find_results":
{
"height": 0.0
},
"pinned_build_system": "",
"project": "forgeplus-react.sublime-project",
"replace":
{
"height": 54.0
},
"save_all_on_build": true,
"select_file":
{
"height": 0.0,
"last_filter": "",
"selected_items":
[
],
"width": 0.0
},
"select_project":
{
"height": 0.0,
"last_filter": "",
"selected_items":
[
],
"width": 0.0
},
"select_symbol":
{
"height": 0.0,
"last_filter": "",
"selected_items":
[
],
"width": 0.0
},
"selected_group": 0,
"settings":
{
},
"show_minimap": true,
"show_open_files": false,
"show_tabs": true,
"side_bar_visible": true,
"side_bar_width": 288.0,
"status_bar_visible": true,
"template_settings":
{
}
}

11407
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,57 +1,41 @@
{
"name": "forge",
"version": "3.0.0",
"version": "3.1.0",
"private": true,
"dependencies": {
"@monaco-editor/react": "^2.3.0",
"@novnc/novnc": "^1.1.0",
"actioncable": "^5.2.4-3",
"ahooks": "^2.10.14",
"antd": "^3.26.15",
"array-flatten": "^2.1.2",
"autoprefixer": "7.1.6",
"axios": "^0.18.1",
"babel-eslint": "7.2.3",
"babel-jest": "20.0.3",
"babel-loader": "7.1.2",
"babel-plugin-syntax-dynamic-import": "^6.18.0",
"babel-polyfill": "^6.26.0",
"babel-preset-react-app": "^3.1.1",
"babel-runtime": "6.26.0",
"axios": "^0.24.0",
"bizcharts": "^3.5.8",
"bundle-loader": "^0.5.6",
"case-sensitive-paths-webpack-plugin": "2.1.1",
"chalk": "1.1.3",
"classnames": "^2.2.5",
"clipboard": "^2.0.8",
"code-prettify": "^0.1.0",
"codemirror": "^5.53.0",
"codemirror": "^5.64.0",
"connected-react-router": "4.4.1",
"cross-env": "^7.0.3",
"css-loader": "^3.5.2",
"dompurify": "^2.0.15",
"dompurify": "^2.3.3",
"dotenv": "4.0.0",
"dotenv-expand": "4.2.0",
"echarts": "^4.9.0",
"echarts-wordcloud": "^2.0.0",
"editor.md": "^1.5.0",
"eslint": "4.10.0",
"eslint-config-react-app": "^2.1.0",
"eslint-loader": "^4.0.0",
"eslint-plugin-flowtype": "2.39.1",
"eslint-plugin-import": "2.8.0",
"eslint-plugin-jsx-a11y": "5.1.1",
"eslint-plugin-react": "7.4.0",
"file-loader": "^6.0.0",
"flv.js": "^1.5.0",
"fs-extra": "3.0.1",
"html-webpack-plugin": "^4.0.4",
"immutability-helper": "^2.6.6",
"install": "^0.12.2",
"jest": "20.0.4",
"js-base64": "^2.5.2",
"js2wordcloud": "^1.1.12",
"katex": "^0.11.1",
"lodash": "^4.17.15",
"less": "^3.13.1",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"loglevel": "^1.6.8",
"marked": "^1.0.0",
"material-ui": "^1.0.0-beta.40",
@ -61,9 +45,9 @@
"monaco-editor": "^0.20.0",
"monaco-editor-webpack-plugin": "^1.9.0",
"numeral": "^2.0.6",
"nvm": "0.0.4",
"object-assign": "4.1.1",
"postcss-flexbugs-fixes": "3.2.0",
"postcss-loader": "2.0.8",
"promise": "8.0.1",
"prop-types": "^15.6.1",
"qrcode.react": "^1.0.1",
@ -79,11 +63,14 @@
"rc-upload": "^2.9.4",
"react": "^16.13.1",
"react-beautiful-dnd": "^10.0.4",
"react-charts": "^2.0.0-beta.7",
"react-codemirror": "^1.0.0",
"react-codemirror2": "^6.0.1",
"react-color": "^2.18.0",
"react-content-loader": "^3.1.1",
"react-cookies": "^0.1.1",
"react-countup": "^6.1.0",
"react-cropper": "^2.1.8",
"react-datepicker": "^2.14.1",
"react-dev-utils": "^9.2.0-next.80",
"react-dom": "^16.13.1",
@ -99,23 +86,22 @@
"react-slick": "^0.28.1",
"react-split-pane": "^0.1.91",
"react-url-query": "^1.5.0",
"react-vis": "^1.11.7",
"react-zmage": "^0.8.5-beta.31",
"redux": "^4.0.5",
"redux-thunk": "2.3.0",
"rsuite": "^4.3.4",
"sass-loader": "7.3.1",
"save-dev": "0.0.1-security",
"scroll-into-view": "^1.14.2",
"sha1": "^1.1.1",
"showdown": "^1.9.1",
"showdown-katex": "^0.8.0",
"slick-carousel": "^1.8.1",
"store": "^2.0.12",
"style-loader": "0.19.0",
"styled-components": "^4.4.1",
"sw-precache-webpack-plugin": "0.11.4",
"url-loader": "0.6.2",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.10.3",
"webpack-dev-server": "^3.11.0",
"webpack-manifest-plugin": "^2.2.0",
"whatwg-fetch": "2.0.3",
"wrap-md-editor": "^0.2.20",
@ -125,6 +111,7 @@
"scripts": {
"start": "node --max_old_space_size=15360 scripts/start.js",
"build": "cross-env NODE_ENV=production node --max_old_space_size=15360 scripts/build.js",
"build:dll": "webpack --config=./config/webpack.dll.config.js",
"test-build": "cross-env NODE_ENV=testBuild node --max_old_space_size=15360 scripts/build.js",
"pre-build": "NODE_ENV=preBuild node --max_old_space_size=15360 scripts/build.js",
"gen_stats": "NODE_ENV=production webpack --profile --config=./config/webpack.config.prod.js --json > stats.json",
@ -187,31 +174,63 @@
"eslintConfig": {
"extends": "react-app"
},
"proxy": "http://localhost:3000",
"port": "3007",
"proxy": "http://8.130.51.51:3021",
"port": "3022",
"devDependencies": {
"@babel/runtime": "7.0.0-beta.51",
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-eslint": "7.2.3",
"babel-jest": "20.0.3",
"babel-loader": "7.1.2",
"babel-plugin-import": "^1.13.0",
"babel-plugin-syntax-dynamic-import": "^6.18.0",
"babel-plugin-transform-decorators-legacy": "^1.3.5",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-polyfill": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"babel-preset-react-app": "^3.1.1",
"babel-preset-stage-2": "^6.24.1",
"babel-runtime": "6.26.0",
"case-sensitive-paths-webpack-plugin": "2.1.1",
"compression-webpack-plugin": "^1.1.12",
"concat": "^1.0.3",
"cross-env": "^7.0.3",
"css-loader": "^3.5.2",
"eslint": "4.10.0",
"eslint-config-react-app": "^2.1.0",
"eslint-loader": "^4.0.0",
"eslint-plugin-flowtype": "2.39.1",
"eslint-plugin-import": "2.8.0",
"eslint-plugin-jsx-a11y": "5.1.1",
"eslint-plugin-react": "7.4.0",
"file-loader": "^6.0.0",
"happypack": "^5.0.1",
"html-webpack-plugin": "^4.0.4",
"less-loader": "^4.1.0",
"mockjs": "^1.1.0",
"node-sass": "^4.12.0",
"node-sass": "^4.14.1",
"optimize-css-assets-webpack-plugin": "^5.0.3",
"postcss-loader": "2.0.8",
"purgecss": "^2.1.2",
"react-json-view": "^1.21.3",
"reqwest": "^2.0.5",
"resize-observer-polyfill": "^1.5.1",
"terser-webpack-plugin": "^2.3.5",
"sass-loader": "7.3.1",
"sass-resources-loader": "^2.2.5",
"style-loader": "0.19.0",
"sw-precache-webpack-plugin": "0.11.4",
"terser-webpack-plugin": "^2.3.8",
"uglifyjs-webpack-plugin": "^2.2.0",
"url-loader": "0.6.2",
"webpack": "^4.42.1",
"webpack-bundle-analyzer": "^3.7.0"
"webpack-bundle-analyzer": "^3.7.0",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.10.3",
"webpack-manifest-plugin": "^2.2.0"
},
"volta": {
"node": "8.12.0"
}
}

View File

@ -1080,7 +1080,20 @@ a.shixun-task-btn {
word-wrap: break-word;
word-break: break-word;
}
.markdown_anchors{
position: relative;
}
.markdown_anchors:hover .anchors{
display: inline-block;
}
.markdown_anchors .anchors:hover{
text-decoration: none;
}
.markdown_anchors .anchors {
color: inherit;
margin-left: -14px;
display: none;
}
.markdown code {
padding: 0;
line-height: 23px;
@ -1268,11 +1281,17 @@ a.shixun-task-btn {
/*-----------实训配置、评测脚本-------------*/
@font-face {
font-family: "iconfont";
src: url('iconfont.woff2?t=1631773579834') format('woff2'),
url('iconfont.woff?t=1631773579834') format('woff'),
url('iconfont.ttf?t=1631773579834') format('truetype');
}
html body {
font-size: 14px;
line-height: 2.0;
background: #fafafa;
font-family: "Microsoft YaHei", "SimSun";
font-family: "iconfont";
color: #05101a;
height: 100%;
position: relative;
@ -1359,12 +1378,12 @@ table {
border: 0;
}
a:link,
a:visited {
a:link,a:visited{
text-decoration: none;
color: #05101a;
}
ol,
ul,
li {
@ -2460,7 +2479,7 @@ a.hoverLine:hover{
}
a:hover{
color: #466AFF !important;
color: #6684FE;
}
.color-grey-98 {
@ -3939,9 +3958,13 @@ html>body #ajax-indicator {
margin-left: 10px;
color: #2FC25B;
}
.privateTag.red{
color: #FF6832;
border:1px solid #FF6832;
}
.head-nav {
text-align: center;
height: 70px;
height: 58px;
box-sizing: border-box;
overflow: hidden;
text-overflow: ellipsis;
@ -3949,84 +3972,29 @@ html>body #ajax-indicator {
flex: 1;
}
.head-nav ul#header-nav {
position: absolute;
top: 0px;
z-index: 3;
height: 70px;
box-sizing: border-box;
.head-nav ul#header-nav{
overflow: hidden;
white-space: nowrap;
overflow-x: auto;
display: flex;
}
.head-nav ul#header-nav li {
float: left;
height: 70px;
line-height: 70px;
.head-nav ul#header-nav li{
height: 58px;
line-height: 58px;
cursor: pointer;
position: relative;
font-size: 16px;
padding-right:40px;
}
.head-nav ul#header-nav li a {
display: block;
height: 100%;
width: 100%;
color: #333;
font-size: 16px;
.head-nav ul#header-nav a {
color: #fff;
}
.head-nav ul#header-nav li a:hover,.head-nav ul#header-nav li.active a {
color: #5091FF;
}
.head-nav ul#header-nav li:last-child {
margin-right: 0px
}
.head-nav ul#header-nav li.active{
/* background-color: #3B3B3B; */
}
.head-nav ul#header-nav li p:hover {
color: #cccccc;
}
.head-nav ul#header-nav li p {
display: block;
height: 100%;
width: 100%;
color: #fff
}
/* .head-nav ul#header-nav li.active div ul li a {
color: #000 !important;
} */
/* .head-nav ul#header-nav li.active div ul li a:hover {
color: #FFF !important;
}
.head-nav ul#header-nav li.active ul li a {
color: #000 !important;
} */
/* .head-nav ul#header-nav li.active ul li a:hover {
color: #FFF !important;
} */
/* .head-nav ul#header-nav li.active:after {
content: '';
position: absolute;
left: 0px;
top: auto;
bottom: 10px;
right: auto;
height: 2px;
width: 32px;
background-color: #459be5;
} */
.head-right {
box-sizing: border-box;
height: 60px;

1
public/css/gitlink.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 2340181 */
src: url('iconfont.woff2?t=1634881729644') format('woff2'),
url('iconfont.woff?t=1634881729644') format('woff'),
url('iconfont.ttf?t=1634881729644') format('truetype');
src: url('iconfont.woff2?t=1653550272457') format('woff2'),
url('iconfont.woff?t=1653550272457') format('woff'),
url('iconfont.ttf?t=1653550272457') format('truetype');
}
.iconfont {
@ -13,6 +13,338 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-tuichuicon:before {
content: "\e936";
}
.icon-bangzhuzhongxinicon1:before {
content: "\e935";
}
.icon-ketixiangqingicon:before {
content: "\e92b";
}
.icon-bianjiicon:before {
content: "\e92c";
}
.icon-baomingxiangqingicon:before {
content: "\e92d";
}
.icon-sousuo4:before {
content: "\e92e";
}
.icon-quxiaoshenqingicon:before {
content: "\e92f";
}
.icon-xiala3:before {
content: "\e930";
}
.icon-tianjia_tianchong:before {
content: "\e931";
}
.icon-a-shanchu2:before {
content: "\e932";
}
.icon-shanchuicon3:before {
content: "\e933";
}
.icon-shenqingketiicon:before {
content: "\e934";
}
.icon-weixin:before {
content: "\e92a";
}
.icon-zanwushuju:before {
content: "\e928";
}
.icon-fuwuicon:before {
content: "\e929";
}
.icon-personal-center:before {
content: "\e927";
}
.icon-bangzhuzhongxinicon:before {
content: "\e926";
}
.icon-kaiyuanxiangmu:before {
content: "\e91d";
}
.icon-luntanjiaoliu:before {
content: "\e91e";
}
.icon-wangzhanpeizhi:before {
content: "\e91f";
}
.icon-weixuanze-chuangkekongjian:before {
content: "\e920";
}
.icon-tubiao:before {
content: "\e921";
}
.icon-gonggaofabu:before {
content: "\e922";
}
.icon-jingsaihuodong:before {
content: "\e923";
}
.icon-yonghuguanli:before {
content: "\e924";
}
.icon-shenpi:before {
content: "\e925";
}
.icon-zhuanli1:before {
content: "\e918";
}
.icon-daimaicon:before {
content: "\e91c";
}
.icon-jiangxiangicon:before {
content: "\e916";
}
.icon-shuju:before {
content: "\e917";
}
.icon-wendang:before {
content: "\e919";
}
.icon-lunwen:before {
content: "\e91a";
}
.icon-zhuanli:before {
content: "\e91b";
}
.icon-gailan1:before {
content: "\e914";
}
.icon-tuandui:before {
content: "\e915";
}
.icon-icon2:before {
content: "\e912";
}
.icon-a-21:before {
content: "\e913";
}
.icon-a-2:before {
content: "\e90f";
}
.icon-a-3:before {
content: "\e910";
}
.icon-icon1:before {
content: "\e911";
}
.icon-ioon:before {
content: "\e90e";
}
.icon-shanchu_tc_icon1:before {
content: "\e90c";
}
.icon-zhuanjiaicon:before {
content: "\e90d";
}
.icon-shengming:before {
content: "\e90b";
}
.icon-chenggong1:before {
content: "\e907";
}
.icon-a-bitian2x1:before {
content: "\e908";
}
.icon-xiala1:before {
content: "\e909";
}
.icon-xiala2:before {
content: "\e90a";
}
.icon-jiantou1:before {
content: "\e905";
}
.icon-zhangjieicon:before {
content: "\e8fe";
}
.icon-chengyuan1:before {
content: "\e903";
}
.icon-a-shangchuan2x:before {
content: "\e8f9";
}
.icon-shanchu7:before {
content: "\e8fa";
}
.icon-zuohuabeifen:before {
content: "\e8fb";
}
.icon-a-bianji11:before {
content: "\e8f4";
}
.icon-a-bitian2x:before {
content: "\e8f5";
}
.icon-a-zuohua2x:before {
content: "\e8f7";
}
.icon-lianjie3:before {
content: "\e8f8";
}
.icon-zhishitupu:before {
content: "\e8fc";
}
.icon-jisuanji1:before {
content: "\e8fd";
}
.icon-dianzi1:before {
content: "\e8ff";
}
.icon-junshililun1:before {
content: "\e900";
}
.icon-ruanjiangongcheng1:before {
content: "\e901";
}
.icon-yixue1:before {
content: "\e902";
}
.icon-tongxin1:before {
content: "\e904";
}
.icon-zhengcefagui1:before {
content: "\e906";
}
.icon-dashuju:before {
content: "\e8f3";
}
.icon-rengongzhineng:before {
content: "\e8f6";
}
.icon-a-shuangyinhao12x:before {
content: "\e8f2";
}
.icon-dingbu:before {
content: "\e8ee";
}
.icon-bangzhu1:before {
content: "\e8ef";
}
.icon-yijianfankui2:before {
content: "\e8f0";
}
.icon-fenxiang:before {
content: "\e8f1";
}
.icon-dizhi:before {
content: "\e8eb";
}
.icon-youxiang1:before {
content: "\e8ec";
}
.icon-dianhuaicon:before {
content: "\e8ed";
}
.icon-tianjiaicon:before {
content: "\e8e8";
}
.icon-lingshengicon:before {
content: "\e8ea";
}
.icon-gengduoicon:before {
content: "\e8e5";
}
.icon-shijianicon:before {
content: "\e8e7";
}
.icon-mimaicon:before {
content: "\e8e1";
}
.icon-gouicon:before {
content: "\e8e2";
}
.icon-zhankaiicon:before {
content: "\e8e3";
}
.icon-wenjian7:before {
content: "\e8e0";
}

File diff suppressed because one or more lines are too long

View File

@ -5,6 +5,587 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "29934961",
"name": "退出icon",
"font_class": "tuichuicon",
"unicode": "e936",
"unicode_decimal": 59702
},
{
"icon_id": "29811507",
"name": "帮助中心icon",
"font_class": "bangzhuzhongxinicon1",
"unicode": "e935",
"unicode_decimal": 59701
},
{
"icon_id": "29701613",
"name": "课题详情icon",
"font_class": "ketixiangqingicon",
"unicode": "e92b",
"unicode_decimal": 59691
},
{
"icon_id": "29701614",
"name": "编辑icon",
"font_class": "bianjiicon",
"unicode": "e92c",
"unicode_decimal": 59692
},
{
"icon_id": "29701615",
"name": "报名详情icon",
"font_class": "baomingxiangqingicon",
"unicode": "e92d",
"unicode_decimal": 59693
},
{
"icon_id": "29701616",
"name": "搜索",
"font_class": "sousuo4",
"unicode": "e92e",
"unicode_decimal": 59694
},
{
"icon_id": "29701617",
"name": "取消申请icon",
"font_class": "quxiaoshenqingicon",
"unicode": "e92f",
"unicode_decimal": 59695
},
{
"icon_id": "29701618",
"name": "下拉",
"font_class": "xiala3",
"unicode": "e930",
"unicode_decimal": 59696
},
{
"icon_id": "29701619",
"name": "添加_填充",
"font_class": "tianjia_tianchong",
"unicode": "e931",
"unicode_decimal": 59697
},
{
"icon_id": "29701620",
"name": "删除 (2)",
"font_class": "a-shanchu2",
"unicode": "e932",
"unicode_decimal": 59698
},
{
"icon_id": "29701621",
"name": "删除icon",
"font_class": "shanchuicon3",
"unicode": "e933",
"unicode_decimal": 59699
},
{
"icon_id": "29701622",
"name": "申请课题icon",
"font_class": "shenqingketiicon",
"unicode": "e934",
"unicode_decimal": 59700
},
{
"icon_id": "29665762",
"name": "微信",
"font_class": "weixin",
"unicode": "e92a",
"unicode_decimal": 59690
},
{
"icon_id": "29467269",
"name": "暂无数据",
"font_class": "zanwushuju",
"unicode": "e928",
"unicode_decimal": 59688
},
{
"icon_id": "29467272",
"name": "服务icon",
"font_class": "fuwuicon",
"unicode": "e929",
"unicode_decimal": 59689
},
{
"icon_id": "29206429",
"name": "personal-center",
"font_class": "personal-center",
"unicode": "e927",
"unicode_decimal": 59687
},
{
"icon_id": "28888753",
"name": "帮助中心icon",
"font_class": "bangzhuzhongxinicon",
"unicode": "e926",
"unicode_decimal": 59686
},
{
"icon_id": "28163416",
"name": "开源项目",
"font_class": "kaiyuanxiangmu",
"unicode": "e91d",
"unicode_decimal": 59677
},
{
"icon_id": "28163417",
"name": "论坛交流",
"font_class": "luntanjiaoliu",
"unicode": "e91e",
"unicode_decimal": 59678
},
{
"icon_id": "28163418",
"name": "网站配置",
"font_class": "wangzhanpeizhi",
"unicode": "e91f",
"unicode_decimal": 59679
},
{
"icon_id": "28163419",
"name": "未选择-创客空间",
"font_class": "weixuanze-chuangkekongjian",
"unicode": "e920",
"unicode_decimal": 59680
},
{
"icon_id": "28163420",
"name": "图标",
"font_class": "tubiao",
"unicode": "e921",
"unicode_decimal": 59681
},
{
"icon_id": "28163421",
"name": "公告发布",
"font_class": "gonggaofabu",
"unicode": "e922",
"unicode_decimal": 59682
},
{
"icon_id": "28163422",
"name": "竞赛活动",
"font_class": "jingsaihuodong",
"unicode": "e923",
"unicode_decimal": 59683
},
{
"icon_id": "28163423",
"name": "用户管理",
"font_class": "yonghuguanli",
"unicode": "e924",
"unicode_decimal": 59684
},
{
"icon_id": "28163424",
"name": "审批",
"font_class": "shenpi",
"unicode": "e925",
"unicode_decimal": 59685
},
{
"icon_id": "22773568",
"name": "专利",
"font_class": "zhuanli1",
"unicode": "e918",
"unicode_decimal": 59672
},
{
"icon_id": "27680124",
"name": "代码icon",
"font_class": "daimaicon",
"unicode": "e91c",
"unicode_decimal": 59676
},
{
"icon_id": "27664463",
"name": "奖项icon",
"font_class": "jiangxiangicon",
"unicode": "e916",
"unicode_decimal": 59670
},
{
"icon_id": "27664464",
"name": "数据",
"font_class": "shuju",
"unicode": "e917",
"unicode_decimal": 59671
},
{
"icon_id": "27664466",
"name": "文档",
"font_class": "wendang",
"unicode": "e919",
"unicode_decimal": 59673
},
{
"icon_id": "27664467",
"name": "论文",
"font_class": "lunwen",
"unicode": "e91a",
"unicode_decimal": 59674
},
{
"icon_id": "27664468",
"name": "专利",
"font_class": "zhuanli",
"unicode": "e91b",
"unicode_decimal": 59675
},
{
"icon_id": "27664392",
"name": "概览",
"font_class": "gailan1",
"unicode": "e914",
"unicode_decimal": 59668
},
{
"icon_id": "27664393",
"name": "团队",
"font_class": "tuandui",
"unicode": "e915",
"unicode_decimal": 59669
},
{
"icon_id": "27299393",
"name": "icon",
"font_class": "icon2",
"unicode": "e912",
"unicode_decimal": 59666
},
{
"icon_id": "27299394",
"name": "2",
"font_class": "a-21",
"unicode": "e913",
"unicode_decimal": 59667
},
{
"icon_id": "27200759",
"name": "2",
"font_class": "a-2",
"unicode": "e90f",
"unicode_decimal": 59663
},
{
"icon_id": "27200760",
"name": "3",
"font_class": "a-3",
"unicode": "e910",
"unicode_decimal": 59664
},
{
"icon_id": "27200761",
"name": "icon",
"font_class": "icon1",
"unicode": "e911",
"unicode_decimal": 59665
},
{
"icon_id": "27041503",
"name": "ioon",
"font_class": "ioon",
"unicode": "e90e",
"unicode_decimal": 59662
},
{
"icon_id": "26470602",
"name": "shanchu_tc_icon",
"font_class": "shanchu_tc_icon1",
"unicode": "e90c",
"unicode_decimal": 59660
},
{
"icon_id": "26470603",
"name": "专家icon",
"font_class": "zhuanjiaicon",
"unicode": "e90d",
"unicode_decimal": 59661
},
{
"icon_id": "12505154",
"name": "声明",
"font_class": "shengming",
"unicode": "e90b",
"unicode_decimal": 59659
},
{
"icon_id": "26470597",
"name": "成功",
"font_class": "chenggong1",
"unicode": "e907",
"unicode_decimal": 59655
},
{
"icon_id": "26470599",
"name": "必填@2x",
"font_class": "a-bitian2x1",
"unicode": "e908",
"unicode_decimal": 59656
},
{
"icon_id": "26470600",
"name": "下拉",
"font_class": "xiala1",
"unicode": "e909",
"unicode_decimal": 59657
},
{
"icon_id": "26470601",
"name": "下拉2",
"font_class": "xiala2",
"unicode": "e90a",
"unicode_decimal": 59658
},
{
"icon_id": "26363219",
"name": "箭头",
"font_class": "jiantou1",
"unicode": "e905",
"unicode_decimal": 59653
},
{
"icon_id": "26359564",
"name": "章节icon ",
"font_class": "zhangjieicon",
"unicode": "e8fe",
"unicode_decimal": 59646
},
{
"icon_id": "26359565",
"name": "成员",
"font_class": "chengyuan1",
"unicode": "e903",
"unicode_decimal": 59651
},
{
"icon_id": "26325702",
"name": "上传@2x",
"font_class": "a-shangchuan2x",
"unicode": "e8f9",
"unicode_decimal": 59641
},
{
"icon_id": "26325703",
"name": "删除 ",
"font_class": "shanchu7",
"unicode": "e8fa",
"unicode_decimal": 59642
},
{
"icon_id": "26325704",
"name": "左滑备份",
"font_class": "zuohuabeifen",
"unicode": "e8fb",
"unicode_decimal": 59643
},
{
"icon_id": "26325698",
"name": "编辑 (1)",
"font_class": "a-bianji11",
"unicode": "e8f4",
"unicode_decimal": 59636
},
{
"icon_id": "26325699",
"name": "必填@2x",
"font_class": "a-bitian2x",
"unicode": "e8f5",
"unicode_decimal": 59637
},
{
"icon_id": "26325700",
"name": "左滑@2x",
"font_class": "a-zuohua2x",
"unicode": "e8f7",
"unicode_decimal": 59639
},
{
"icon_id": "26325701",
"name": "链接",
"font_class": "lianjie3",
"unicode": "e8f8",
"unicode_decimal": 59640
},
{
"icon_id": "25748537",
"name": "知识图谱",
"font_class": "zhishitupu",
"unicode": "e8fc",
"unicode_decimal": 59644
},
{
"icon_id": "25748551",
"name": "计算机",
"font_class": "jisuanji1",
"unicode": "e8fd",
"unicode_decimal": 59645
},
{
"icon_id": "25748553",
"name": "电子",
"font_class": "dianzi1",
"unicode": "e8ff",
"unicode_decimal": 59647
},
{
"icon_id": "25748554",
"name": "军事理论",
"font_class": "junshililun1",
"unicode": "e900",
"unicode_decimal": 59648
},
{
"icon_id": "25748555",
"name": "软件工程",
"font_class": "ruanjiangongcheng1",
"unicode": "e901",
"unicode_decimal": 59649
},
{
"icon_id": "25748556",
"name": "医学",
"font_class": "yixue1",
"unicode": "e902",
"unicode_decimal": 59650
},
{
"icon_id": "25748558",
"name": "通信",
"font_class": "tongxin1",
"unicode": "e904",
"unicode_decimal": 59652
},
{
"icon_id": "25748560",
"name": "政策法规",
"font_class": "zhengcefagui1",
"unicode": "e906",
"unicode_decimal": 59654
},
{
"icon_id": "25748528",
"name": "大数据",
"font_class": "dashuju",
"unicode": "e8f3",
"unicode_decimal": 59635
},
{
"icon_id": "25748531",
"name": "人工智能",
"font_class": "rengongzhineng",
"unicode": "e8f6",
"unicode_decimal": 59638
},
{
"icon_id": "25733167",
"name": "双引号(1)@2x",
"font_class": "a-shuangyinhao12x",
"unicode": "e8f2",
"unicode_decimal": 59634
},
{
"icon_id": "25701947",
"name": "顶部",
"font_class": "dingbu",
"unicode": "e8ee",
"unicode_decimal": 59630
},
{
"icon_id": "25701948",
"name": "帮助",
"font_class": "bangzhu1",
"unicode": "e8ef",
"unicode_decimal": 59631
},
{
"icon_id": "25701949",
"name": "意见反馈",
"font_class": "yijianfankui2",
"unicode": "e8f0",
"unicode_decimal": 59632
},
{
"icon_id": "25701950",
"name": "分享",
"font_class": "fenxiang",
"unicode": "e8f1",
"unicode_decimal": 59633
},
{
"icon_id": "25580217",
"name": "地址",
"font_class": "dizhi",
"unicode": "e8eb",
"unicode_decimal": 59627
},
{
"icon_id": "25580218",
"name": "邮箱",
"font_class": "youxiang1",
"unicode": "e8ec",
"unicode_decimal": 59628
},
{
"icon_id": "25580219",
"name": "电话icon",
"font_class": "dianhuaicon",
"unicode": "e8ed",
"unicode_decimal": 59629
},
{
"icon_id": "25284174",
"name": "添加icon",
"font_class": "tianjiaicon",
"unicode": "e8e8",
"unicode_decimal": 59624
},
{
"icon_id": "25284175",
"name": "铃声icon",
"font_class": "lingshengicon",
"unicode": "e8ea",
"unicode_decimal": 59626
},
{
"icon_id": "25204490",
"name": "更多icon",
"font_class": "gengduoicon",
"unicode": "e8e5",
"unicode_decimal": 59621
},
{
"icon_id": "25204491",
"name": "时间icon",
"font_class": "shijianicon",
"unicode": "e8e7",
"unicode_decimal": 59623
},
{
"icon_id": "25188228",
"name": "密码icon",
"font_class": "mimaicon",
"unicode": "e8e1",
"unicode_decimal": 59617
},
{
"icon_id": "25188229",
"name": "钩icon",
"font_class": "gouicon",
"unicode": "e8e2",
"unicode_decimal": 59618
},
{
"icon_id": "25188230",
"name": "展开icon",
"font_class": "zhankaiicon",
"unicode": "e8e3",
"unicode_decimal": 59619
},
{
"icon_id": "24656750",
"name": "文件",

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
public/favicon-.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@ -1,30 +1,52 @@
<!DOCTYPE html>
<html lang="zh-CN" class="notranslate translated-ltr" translate="no">
<head>
<meta charset="utf-8">
<meta name=”Keywords” Content=”trustie,trustieforge,forge,确实让创建更美好,协同开发平台″>
<meta name=”Keywords” Content=”TrustieOpenSourceProject″>
<meta name=”Keywords” Content=”issue,bug,tracker,软件工程,课程实践″>
<meta name=”Description” Content=”持续构建协同、共享、可信的软件创建生态开源创作与软件生产相结合,支持大规模群体开展软件协同创新活动”>
<meta name="Keywords" Content="gitLink,GitLink,gitlink,trustie,trustieforge,forge,开源,确实开源,代码托管,Git,开源,内源,项目管理,版本控制,开源代码,代码分享,项目协作,开源项目托管,免费代码托管,Git代码托管,Git托管服务,确实让创建更美好,协同开发平台">
<meta name=”Description” Content=”GitLink,新一代开源创新服务平台 分布式协作开发 一站式过程管理 高效流水线运维 多层次代码分析 多维度用户画像 分布式协作开发 基于Git打造分布式代码托管环境>
<meta property="og:title" content="GitLink | 确实开源" />
<meta property="og:type" content="Object" />
<meta property="og:url" content="https://gitlink.org.cn/" />
<meta property="og:image" content="https://www.gitlink.org.cn/images/logo.png" />
<meta property="og:site_name" content="GitLink" />
<meta property="og:description" content="GitLink,新一代开源创新服务平台 分布式协作开发 一站式过程管理 高效流水线运维 多层次代码分析 多维度用户画像 分布式协作开发 基于Git打造分布式代码托管环境" />
<meta name="theme-color" content="#000000">
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
<link href="https://gw.alipayobjects.com/os/lib/alipay/alex/2.0.19/bundle/alex.all.global.min.css" rel="stylesheet"/>
<link rel="stylesheet" type="text/css" href="%PUBLIC_URL%css/iconfont.css">
<link rel="stylesheet" type="text/css" href="%PUBLIC_URL%css/edu-purge.css">
<!-- <link rel="stylesheet" type="text/css" href="%PUBLIC_URL%css/edu-purge.css"> -->
<link rel="stylesheet" type="text/css" href="%PUBLIC_URL%css/editormd.min.css">
<link rel="stylesheet" type="text/css" href="%PUBLIC_URL%css/merge.css">
<!-- <link rel="stylesheet" type="text/css" href="%PUBLIC_URL%css/merge.css"> -->
<link rel="stylesheet" type="text/css" href="%PUBLIC_URL%css/gitlink.min.css">
<%= htmlWebpackPlugin.tags.headTags %>
</head>
<body>
<!--用于markdown转html -->
<div id="md_div" style="display: none;"></div>
<div id="root" class="page -layout-v -fit widthunit"></div>
<div id="picture_display" style="display: none;"></div>
<script src="https://gw.alipayobjects.com/os/lib/react/16.14.0/umd/react.%REACT_URL%.js"></script>
<script src="https://gw.alipayobjects.com/os/lib/react-dom/16.14.0/umd/react-dom.%REACT_URL%.js"></script>
<script src="%PUBLIC_URL%js/jquery-1.8.3.min.js"></script>
<script src="%PUBLIC_URL%js/js_min_all.js"></script>
<script src="%PUBLIC_URL%js/codemirror/codemirror.js"></script>
<script src="%PUBLIC_URL%js/editormd/editormd.min.js"></script>
<script src="%PUBLIC_URL%js/codemirror/merge/merge.js"></script>
<script src="https://gw.alipayobjects.com/os/lib/moment/2.29.4/moment.js"></script>
<script src="https://gw.alipayobjects.com/os/lib/alipay/alex/2.0.19/bundle/alex.all.global.min.js"></script>
<%= htmlWebpackPlugin.tags.bodyTags %>
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?7e2def1fe918f15f9f1c5c061f69b256";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</body>
</html>

View File

@ -558,20 +558,20 @@
_this.setToolbar();
// editormd.loadScript(loadPath + "marked.min", function () {
// });
// 此处影响公式加载
editormd.loadScript(loadPath + "marked.min", function () {
editormd.$marked = marked;
editormd.$marked = marked;
if (settings.previewCodeHighlight) {
editormd.loadScript(loadPath + "prettify.min", function () {
if (settings.previewCodeHighlight) {
editormd.loadScript(loadPath + "prettify.min", function () {
loadFlowChartOrSequenceDiagram();
});
}
else {
loadFlowChartOrSequenceDiagram();
});
}
else {
loadFlowChartOrSequenceDiagram();
}
}
});
});
@ -1434,7 +1434,7 @@
var tex = $(this);
editormd.$katex.render(tex.text(), tex[0]);
tex.find(".katex").css("font-size", "1.0em");
tex.find(".katex").css("font-size", "1.6em");
});
return this;
@ -3810,7 +3810,7 @@
div.find("." + editormd.classNames.tex).each(function () {
var tex = $(this);
katex.render(tex.text(), tex[0]);
tex.find(".katex").css("font-size", "1.0em");
tex.find(".katex").css("font-size", "1.6em");
});
};

File diff suppressed because it is too large Load Diff

239
public/js/react-dom.production.min.js vendored Normal file
View File

@ -0,0 +1,239 @@
/** @license React v16.14.0
* react-dom.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/*
Modernizr 3.0.0pre (Custom Build) | MIT
*/
'use strict';(function(I,ea){"object"===typeof exports&&"undefined"!==typeof module?ea(exports,require("react")):"function"===typeof define&&define.amd?define(["exports","react"],ea):(I=I||self,ea(I.ReactDOM={},I.React))})(this,function(I,ea){function k(a){for(var b="https://reactjs.org/docs/error-decoder.html?invariant="+a,c=1;c<arguments.length;c++)b+="&args[]="+encodeURIComponent(arguments[c]);return"Minified React error #"+a+"; visit "+b+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}
function ji(a,b,c,d,e,f,g,h,m){yb=!1;gc=null;ki.apply(li,arguments)}function mi(a,b,c,d,e,f,g,h,m){ji.apply(this,arguments);if(yb){if(yb){var n=gc;yb=!1;gc=null}else throw Error(k(198));hc||(hc=!0,pd=n)}}function lf(a,b,c){var d=a.type||"unknown-event";a.currentTarget=mf(c);mi(d,b,void 0,a);a.currentTarget=null}function nf(){if(ic)for(var a in cb){var b=cb[a],c=ic.indexOf(a);if(!(-1<c))throw Error(k(96,a));if(!jc[c]){if(!b.extractEvents)throw Error(k(97,a));jc[c]=b;c=b.eventTypes;for(var d in c){var e=
void 0;var f=c[d],g=b,h=d;if(qd.hasOwnProperty(h))throw Error(k(99,h));qd[h]=f;var m=f.phasedRegistrationNames;if(m){for(e in m)m.hasOwnProperty(e)&&of(m[e],g,h);e=!0}else f.registrationName?(of(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(k(98,d,a));}}}}function of(a,b,c){if(db[a])throw Error(k(100,a));db[a]=b;rd[a]=b.eventTypes[c].dependencies}function pf(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!cb.hasOwnProperty(c)||cb[c]!==d){if(cb[c])throw Error(k(102,c));cb[c]=
d;b=!0}}b&&nf()}function qf(a){if(a=rf(a)){if("function"!==typeof sd)throw Error(k(280));var b=a.stateNode;b&&(b=td(b),sd(a.stateNode,a.type,b))}}function sf(a){eb?fb?fb.push(a):fb=[a]:eb=a}function tf(){if(eb){var a=eb,b=fb;fb=eb=null;qf(a);if(b)for(a=0;a<b.length;a++)qf(b[a])}}function ud(){if(null!==eb||null!==fb)vd(),tf()}function uf(a,b,c){if(wd)return a(b,c);wd=!0;try{return vf(a,b,c)}finally{wd=!1,ud()}}function ni(a){if(wf.call(xf,a))return!0;if(wf.call(yf,a))return!1;if(oi.test(a))return xf[a]=
!0;yf[a]=!0;return!1}function pi(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case "function":case "symbol":return!0;case "boolean":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return"data-"!==a&&"aria-"!==a;default:return!1}}function qi(a,b,c,d){if(null===b||"undefined"===typeof b||pi(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function L(a,
b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}function xd(a,b,c,d){var e=E.hasOwnProperty(b)?E[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||"o"!==b[0]&&"O"!==b[0]||"n"!==b[1]&&"N"!==b[1]?!1:!0;f||(qi(b,c,e,d)&&(c=null),d||null===e?ni(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,""+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:"":c:(b=e.attributeName,
d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?"":""+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}function zb(a){if(null===a||"object"!==typeof a)return null;a=zf&&a[zf]||a["@@iterator"];return"function"===typeof a?a:null}function ri(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}function na(a){if(null==a)return null;
if("function"===typeof a)return a.displayName||a.name||null;if("string"===typeof a)return a;switch(a){case Ma:return"Fragment";case gb:return"Portal";case kc:return"Profiler";case Af:return"StrictMode";case lc:return"Suspense";case yd:return"SuspenseList"}if("object"===typeof a)switch(a.$$typeof){case Bf:return"Context.Consumer";case Cf:return"Context.Provider";case zd:var b=a.render;b=b.displayName||b.name||"";return a.displayName||(""!==b?"ForwardRef("+b+")":"ForwardRef");case Ad:return na(a.type);
case Df:return na(a.render);case Ef:if(a=1===a._status?a._result:null)return na(a)}return null}function Bd(a){var b="";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c="";break a;default:var d=a._debugOwner,e=a._debugSource,f=na(a.type);c=null;d&&(c=na(d.type));d=f;f="";e?f=" (at "+e.fileName.replace(si,"")+":"+e.lineNumber+")":c&&(f=" (created by "+c+")");c="\n in "+(d||"Unknown")+f}b+=c;a=a.return}while(a);return b}function va(a){switch(typeof a){case "boolean":case "number":case "object":case "string":case "undefined":return a;
default:return""}}function Ff(a){var b=a.type;return(a=a.nodeName)&&"input"===a.toLowerCase()&&("checkbox"===b||"radio"===b)}function ti(a){var b=Ff(a)?"checked":"value",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=""+a[b];if(!a.hasOwnProperty(b)&&"undefined"!==typeof c&&"function"===typeof c.get&&"function"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=""+a;f.call(this,a)}});Object.defineProperty(a,
b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=""+a},stopTracking:function(){a._valueTracker=null;delete a[b]}}}}function mc(a){a._valueTracker||(a._valueTracker=ti(a))}function Gf(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d="";a&&(d=Ff(a)?a.checked?"true":"false":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Cd(a,b){var c=b.checked;return M({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=
c?c:a._wrapperState.initialChecked})}function Hf(a,b){var c=null==b.defaultValue?"":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=va(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:"checkbox"===b.type||"radio"===b.type?null!=b.checked:null!=b.value}}function If(a,b){b=b.checked;null!=b&&xd(a,"checked",b,!1)}function Dd(a,b){If(a,b);var c=va(b.value),d=b.type;if(null!=c)if("number"===d){if(0===c&&""===a.value||a.value!=c)a.value=""+c}else a.value!==
""+c&&(a.value=""+c);else if("submit"===d||"reset"===d){a.removeAttribute("value");return}b.hasOwnProperty("value")?Ed(a,b.type,c):b.hasOwnProperty("defaultValue")&&Ed(a,b.type,va(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}function Jf(a,b,c){if(b.hasOwnProperty("value")||b.hasOwnProperty("defaultValue")){var d=b.type;if(!("submit"!==d&&"reset"!==d||void 0!==b.value&&null!==b.value))return;b=""+a._wrapperState.initialValue;c||b===a.value||(a.value=
b);a.defaultValue=b}c=a.name;""!==c&&(a.name="");a.defaultChecked=!!a._wrapperState.initialChecked;""!==c&&(a.name=c)}function Ed(a,b,c){if("number"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=""+a._wrapperState.initialValue:a.defaultValue!==""+c&&(a.defaultValue=""+c)}function ui(a){var b="";ea.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Fd(a,b){a=M({children:void 0},b);if(b=ui(b.children))a.children=b;return a}function hb(a,b,c,d){a=a.options;if(b){b={};
for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+va(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}function Gd(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(k(91));return M({},b,{value:void 0,defaultValue:void 0,children:""+a._wrapperState.initialValue})}
function Kf(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(k(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(k(93));c=c[0]}b=c}null==b&&(b="");c=b}a._wrapperState={initialValue:va(c)}}function Lf(a,b){var c=va(b.value),d=va(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function Mf(a,b){b=a.textContent;b===a._wrapperState.initialValue&&""!==
b&&null!==b&&(a.value=b)}function Nf(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";case "math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Hd(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?Nf(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}function nc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c["Webkit"+a]="webkit"+b;c["Moz"+a]="moz"+b;return c}function oc(a){if(Id[a])return Id[a];
if(!ib[a])return a;var b=ib[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Of)return Id[a]=b[c];return a}function Jd(a){var b=Pf.get(a);void 0===b&&(b=new Map,Pf.set(a,b));return b}function Na(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Qf(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Rf(a){if(Na(a)!==
a)throw Error(k(188));}function vi(a){var b=a.alternate;if(!b){b=Na(a);if(null===b)throw Error(k(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Rf(e),a;if(f===d)return Rf(e),b;f=f.sibling}throw Error(k(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=
f.child;h;){if(h===c){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(k(189));}}if(c.alternate!==d)throw Error(k(190));}if(3!==c.tag)throw Error(k(188));return c.stateNode.current===c?a:b}function Sf(a){a=vi(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}function jb(a,b){if(null==
b)throw Error(k(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function Kd(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}function pc(a){null!==a&&(Ab=jb(Ab,a));a=Ab;Ab=null;if(a){Kd(a,wi);if(Ab)throw Error(k(95));if(hc)throw a=pd,hc=!1,pd=null,a;}}function Ld(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:
a}function Tf(a){if(!wa)return!1;a="on"+a;var b=a in document;b||(b=document.createElement("div"),b.setAttribute(a,"return;"),b="function"===typeof b[a]);return b}function Uf(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>qc.length&&qc.push(a)}function Vf(a,b,c,d){if(qc.length){var e=qc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}function Wf(a){var b=
a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=Bb(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=Ld(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,m=0;m<jc.length;m++){var n=jc[m];n&&(n=n.extractEvents(d,b,f,e,g))&&(h=jb(h,n))}pc(h)}}function Md(a,
b,c){if(!c.has(a)){switch(a){case "scroll":Cb(b,"scroll",!0);break;case "focus":case "blur":Cb(b,"focus",!0);Cb(b,"blur",!0);c.set("blur",null);c.set("focus",null);break;case "cancel":case "close":Tf(a)&&Cb(b,a,!0);break;case "invalid":case "submit":case "reset":break;default:-1===Db.indexOf(a)&&w(a,b)}c.set(a,null)}}function xi(a,b){var c=Jd(b);Nd.forEach(function(a){Md(a,b,c)});yi.forEach(function(a){Md(a,b,c)})}function Od(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,
container:d}}function Xf(a,b){switch(a){case "focus":case "blur":xa=null;break;case "dragenter":case "dragleave":ya=null;break;case "mouseover":case "mouseout":za=null;break;case "pointerover":case "pointerout":Eb.delete(b.pointerId);break;case "gotpointercapture":case "lostpointercapture":Fb.delete(b.pointerId)}}function Gb(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Od(b,c,d,e,f),null!==b&&(b=Hb(b),null!==b&&Yf(b)),a;a.eventSystemFlags|=d;return a}function zi(a,b,c,d,e){switch(b){case "focus":return xa=
Gb(xa,a,b,c,d,e),!0;case "dragenter":return ya=Gb(ya,a,b,c,d,e),!0;case "mouseover":return za=Gb(za,a,b,c,d,e),!0;case "pointerover":var f=e.pointerId;Eb.set(f,Gb(Eb.get(f)||null,a,b,c,d,e));return!0;case "gotpointercapture":return f=e.pointerId,Fb.set(f,Gb(Fb.get(f)||null,a,b,c,d,e)),!0}return!1}function Ai(a){var b=Bb(a.target);if(null!==b){var c=Na(b);if(null!==c)if(b=c.tag,13===b){if(b=Qf(c),null!==b){a.blockedOn=b;Pd(a.priority,function(){Bi(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=
3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function rc(a){if(null!==a.blockedOn)return!1;var b=Qd(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Hb(b);null!==c&&Yf(c);a.blockedOn=b;return!1}return!0}function Zf(a,b,c){rc(a)&&c.delete(b)}function Ci(){for(Rd=!1;0<fa.length;){var a=fa[0];if(null!==a.blockedOn){a=Hb(a.blockedOn);null!==a&&Di(a);break}var b=Qd(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:fa.shift()}null!==
xa&&rc(xa)&&(xa=null);null!==ya&&rc(ya)&&(ya=null);null!==za&&rc(za)&&(za=null);Eb.forEach(Zf);Fb.forEach(Zf)}function Ib(a,b){a.blockedOn===b&&(a.blockedOn=null,Rd||(Rd=!0,$f(ag,Ci)))}function bg(a){if(0<fa.length){Ib(fa[0],a);for(var b=1;b<fa.length;b++){var c=fa[b];c.blockedOn===a&&(c.blockedOn=null)}}null!==xa&&Ib(xa,a);null!==ya&&Ib(ya,a);null!==za&&Ib(za,a);b=function(b){return Ib(b,a)};Eb.forEach(b);Fb.forEach(b);for(b=0;b<Jb.length;b++)c=Jb[b],c.blockedOn===a&&(c.blockedOn=null);for(;0<Jb.length&&
(b=Jb[0],null===b.blockedOn);)Ai(b),null===b.blockedOn&&Jb.shift()}function Sd(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f="on"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+"Capture"},dependencies:[d],eventPriority:b};Td.set(d,b);cg.set(d,f);dg[e]=f}}function w(a,b){Cb(b,a,!1)}function Cb(a,b,c){var d=Td.get(b);switch(void 0===d?2:d){case 0:d=Ei.bind(null,b,1,a);break;case 1:d=Fi.bind(null,b,1,a);break;default:d=sc.bind(null,b,1,a)}c?a.addEventListener(b,
d,!0):a.addEventListener(b,d,!1)}function Ei(a,b,c,d){Oa||vd();var e=sc,f=Oa;Oa=!0;try{eg(e,a,b,c,d)}finally{(Oa=f)||ud()}}function Fi(a,b,c,d){Gi(Hi,sc.bind(null,a,b,c,d))}function sc(a,b,c,d){if(tc)if(0<fa.length&&-1<Nd.indexOf(a))a=Od(null,a,b,c,d),fa.push(a);else{var e=Qd(a,b,c,d);if(null===e)Xf(a,d);else if(-1<Nd.indexOf(a))a=Od(e,a,b,c,d),fa.push(a);else if(!zi(e,a,b,c,d)){Xf(a,d);a=Vf(a,d,null,b);try{uf(Wf,a)}finally{Uf(a)}}}}function Qd(a,b,c,d){c=Ld(d);c=Bb(c);if(null!==c){var e=Na(c);if(null===
e)c=null;else{var f=e.tag;if(13===f){c=Qf(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=Vf(a,d,c,b);try{uf(Wf,a)}finally{Uf(a)}return null}function fg(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||Kb.hasOwnProperty(a)&&Kb[a]?(""+b).trim():b+"px"}function gg(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),e=fg(c,b[c],d);"float"===
c&&(c="cssFloat");d?a.setProperty(c,e):a[c]=e}}function Ud(a,b){if(b){if(Ii[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(k(137,a,""));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(k(60));if(!("object"===typeof b.dangerouslySetInnerHTML&&"__html"in b.dangerouslySetInnerHTML))throw Error(k(61));}if(null!=b.style&&"object"!==typeof b.style)throw Error(k(62,""));}}function Vd(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;
default:return!0}}function oa(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Jd(a);b=rd[b];for(var d=0;d<b.length;d++)Md(b[d],a,c)}function uc(){}function Wd(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function hg(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function ig(a,b){var c=hg(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,
offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=hg(c)}}function jg(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?jg(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function kg(){for(var a=window,b=Wd();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Wd(a.document)}return b}
function Xd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}function lg(a,b){switch(a){case "button":case "input":case "select":case "textarea":return!!b.autoFocus}return!1}function Yd(a,b){return"textarea"===a||"option"===a||"noscript"===a||"string"===typeof b.children||"number"===typeof b.children||"object"===typeof b.dangerouslySetInnerHTML&&
null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}function kb(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function mg(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===ng||c===Zd||c===$d){if(0===b)return a;b--}else c===og&&b++}a=a.previousSibling}return null}function Bb(a){var b=a[Aa];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Lb]||c[Aa]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=mg(a);null!==
a;){if(c=a[Aa])return c;a=mg(a)}return b}a=c;c=a.parentNode}return null}function Hb(a){a=a[Aa]||a[Lb];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pa(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(k(33));}function ae(a){return a[vc]||null}function pa(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}function pg(a,b){var c=a.stateNode;if(!c)return null;var d=td(c);if(!d)return null;c=d[b];a:switch(b){case "onClick":case "onClickCapture":case "onDoubleClick":case "onDoubleClickCapture":case "onMouseDown":case "onMouseDownCapture":case "onMouseMove":case "onMouseMoveCapture":case "onMouseUp":case "onMouseUpCapture":case "onMouseEnter":(d=
!d.disabled)||(a=a.type,d=!("button"===a||"input"===a||"select"===a||"textarea"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&"function"!==typeof c)throw Error(k(231,b,typeof c));return c}function qg(a,b,c){if(b=pg(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=jb(c._dispatchListeners,b),c._dispatchInstances=jb(c._dispatchInstances,a)}function Ji(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=pa(b);for(b=c.length;0<b--;)qg(c[b],
"captured",a);for(b=0;b<c.length;b++)qg(c[b],"bubbled",a)}}function be(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=pg(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=jb(c._dispatchListeners,b),c._dispatchInstances=jb(c._dispatchInstances,a))}function Ki(a){a&&a.dispatchConfig.registrationName&&be(a._targetInst,null,a)}function lb(a){Kd(a,Ji)}function rg(){if(wc)return wc;var a,b=ce,c=b.length,d,e="value"in Ba?Ba.value:Ba.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=
c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return wc=e.slice(a,1<d?1-d:void 0)}function xc(){return!0}function yc(){return!1}function R(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):"target"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?xc:yc;this.isPropagationStopped=yc;return this}function Li(a,b,c,d){if(this.eventPool.length){var e=
this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}function Mi(a){if(!(a instanceof this))throw Error(k(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function sg(a){a.eventPool=[];a.getPooled=Li;a.release=Mi}function tg(a,b){switch(a){case "keyup":return-1!==Ni.indexOf(b.keyCode);case "keydown":return 229!==b.keyCode;case "keypress":case "mousedown":case "blur":return!0;default:return!1}}function ug(a){a=a.detail;return"object"===typeof a&&"data"in
a?a.data:null}function Oi(a,b){switch(a){case "compositionend":return ug(b);case "keypress":if(32!==b.which)return null;vg=!0;return wg;case "textInput":return a=b.data,a===wg&&vg?null:a;default:return null}}function Pi(a,b){if(mb)return"compositionend"===a||!de&&tg(a,b)?(a=rg(),wc=ce=Ba=null,mb=!1,a):null;switch(a){case "paste":return null;case "keypress":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;
case "compositionend":return xg&&"ko"!==b.locale?null:b.data;default:return null}}function yg(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return"input"===b?!!Qi[a.type]:"textarea"===b?!0:!1}function zg(a,b,c){a=R.getPooled(Ag.change,a,b,c);a.type="change";sf(c);lb(a);return a}function Ri(a){pc(a)}function zc(a){var b=Pa(a);if(Gf(b))return a}function Si(a,b){if("change"===a)return b}function Bg(){Mb&&(Mb.detachEvent("onpropertychange",Cg),Nb=Mb=null)}function Cg(a){if("value"===a.propertyName&&
zc(Nb))if(a=zg(Nb,a,Ld(a)),Oa)pc(a);else{Oa=!0;try{ee(Ri,a)}finally{Oa=!1,ud()}}}function Ti(a,b,c){"focus"===a?(Bg(),Mb=b,Nb=c,Mb.attachEvent("onpropertychange",Cg)):"blur"===a&&Bg()}function Ui(a,b){if("selectionchange"===a||"keyup"===a||"keydown"===a)return zc(Nb)}function Vi(a,b){if("click"===a)return zc(b)}function Wi(a,b){if("input"===a||"change"===a)return zc(b)}function Xi(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Yi[a])?!!b[a]:!1}function fe(a){return Xi}
function Zi(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}function Ob(a,b){if(Qa(a,b))return!0;if("object"!==typeof a||null===a||"object"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!$i.call(b,c[d])||!Qa(a[c[d]],b[c[d]]))return!1;return!0}function Dg(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(ge||null==nb||nb!==Wd(c))return null;c=nb;"selectionStart"in c&&Xd(c)?c={start:c.selectionStart,
end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Pb&&Ob(Pb,c)?null:(Pb=c,a=R.getPooled(Eg.select,he,a,b),a.type="select",a.target=nb,lb(a),a)}function Ac(a){var b=a.keyCode;"charCode"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function q(a,b){0>ob||(a.current=ie[ob],ie[ob]=null,ob--)}function y(a,b,c){ob++;
ie[ob]=a.current;a.current=b}function pb(a,b){var c=a.type.contextTypes;if(!c)return Ca;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function N(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Fg(a,b,c){if(B.current!==Ca)throw Error(k(168));y(B,b);y(G,c)}
function Gg(a,b,c){var d=a.stateNode;a=b.childContextTypes;if("function"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(k(108,na(b)||"Unknown",e));return M({},c,{},d)}function Bc(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Ca;Ra=B.current;y(B,a);y(G,G.current);return!0}function Hg(a,b,c){var d=a.stateNode;if(!d)throw Error(k(169));c?(a=Gg(a,b,Ra),d.__reactInternalMemoizedMergedChildContext=a,q(G),q(B),y(B,a)):q(G);y(G,c)}function Cc(){switch(aj()){case Dc:return 99;
case Ig:return 98;case Jg:return 97;case Kg:return 96;case Lg:return 95;default:throw Error(k(332));}}function Mg(a){switch(a){case 99:return Dc;case 98:return Ig;case 97:return Jg;case 96:return Kg;case 95:return Lg;default:throw Error(k(332));}}function Da(a,b){a=Mg(a);return bj(a,b)}function Ng(a,b,c){a=Mg(a);return je(a,b,c)}function Og(a){null===qa?(qa=[a],Ec=je(Dc,Pg)):qa.push(a);return Qg}function ha(){if(null!==Ec){var a=Ec;Ec=null;Rg(a)}Pg()}function Pg(){if(!ke&&null!==qa){ke=!0;var a=0;
try{var b=qa;Da(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});qa=null}catch(c){throw null!==qa&&(qa=qa.slice(a+1)),je(Dc,ha),c;}finally{ke=!1}}}function Fc(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function aa(a,b){if(a&&a.defaultProps){b=M({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}function le(){Gc=qb=Hc=null}function me(a){var b=Ic.current;q(Ic);a.type._context._currentValue=b}function Sg(a,b){for(;null!==a;){var c=
a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function rb(a,b){Hc=a;Gc=qb=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(ia=!0),a.firstContext=null)}function W(a,b){if(Gc!==a&&!1!==b&&0!==b){if("number"!==typeof b||1073741823===b)Gc=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===qb){if(null===
Hc)throw Error(k(308));qb=b;Hc.dependencies={expirationTime:0,firstContext:b,responders:null}}else qb=qb.next=b}return a._currentValue}function ne(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}function oe(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function Ea(a,b){a={expirationTime:a,suspenseConfig:b,tag:Tg,payload:null,callback:null,next:null};return a.next=
a}function Fa(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}function Ug(a,b){var c=a.alternate;null!==c&&oe(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}function Qb(a,b,c,d){var e=a.updateQueue;Ga=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&
(h.baseQueue=g))}if(null!==f){h=f.next;var m=e.baseState,n=0,k=null,ba=null,l=null;if(null!==h){var p=h;do{g=p.expirationTime;if(g<d){var t={expirationTime:p.expirationTime,suspenseConfig:p.suspenseConfig,tag:p.tag,payload:p.payload,callback:p.callback,next:null};null===l?(ba=l=t,k=m):l=l.next=t;g>n&&(n=g)}else{null!==l&&(l=l.next={expirationTime:1073741823,suspenseConfig:p.suspenseConfig,tag:p.tag,payload:p.payload,callback:p.callback,next:null});Vg(g,p.suspenseConfig);a:{var q=a,r=p;g=b;t=c;switch(r.tag){case 1:q=
r.payload;if("function"===typeof q){m=q.call(t,m,g);break a}m=q;break a;case 3:q.effectTag=q.effectTag&-4097|64;case Tg:q=r.payload;g="function"===typeof q?q.call(t,m,g):q;if(null===g||void 0===g)break a;m=M({},m,g);break a;case Jc:Ga=!0}}null!==p.callback&&(a.effectTag|=32,g=e.effects,null===g?e.effects=[p]:g.push(p))}p=p.next;if(null===p||p===h)if(g=e.shared.pending,null===g)break;else p=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===l?k=m:l.next=ba;e.baseState=k;e.baseQueue=
l;Kc(n);a.expirationTime=n;a.memoizedState=m}}function Wg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if("function"!==typeof d)throw Error(k(191,d));d.call(e)}}}function Lc(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:M({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}function Xg(a,b,c,d,e,f,g){a=a.stateNode;return"function"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,
f,g):b.prototype&&b.prototype.isPureReactComponent?!Ob(c,d)||!Ob(e,f):!0}function Yg(a,b,c){var d=!1,e=Ca;var f=b.contextType;"object"===typeof f&&null!==f?f=W(f):(e=N(b)?Ra:B.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?pb(a,e):Ca);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Mc;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}function Zg(a,
b,c,d){a=b.state;"function"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);"function"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Mc.enqueueReplaceState(b,b.state,null)}function pe(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=$g;ne(a);var f=b.contextType;"object"===typeof f&&null!==f?e.context=W(f):(f=N(b)?Ra:B.current,e.context=pb(a,f));Qb(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;
"function"===typeof f&&(Lc(a,b,f,c),e.state=a.memoizedState);"function"===typeof b.getDerivedStateFromProps||"function"===typeof e.getSnapshotBeforeUpdate||"function"!==typeof e.UNSAFE_componentWillMount&&"function"!==typeof e.componentWillMount||(b=e.state,"function"===typeof e.componentWillMount&&e.componentWillMount(),"function"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Mc.enqueueReplaceState(e,e.state,null),Qb(a,c,e,d),e.state=a.memoizedState);"function"===
typeof e.componentDidMount&&(a.effectTag|=4)}function Rb(a,b,c){a=c.ref;if(null!==a&&"function"!==typeof a&&"object"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(k(309));var d=c.stateNode}if(!d)throw Error(k(147,a));var e=""+a;if(null!==b&&null!==b.ref&&"function"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===$g&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if("string"!==typeof a)throw Error(k(284));if(!c._owner)throw Error(k(290,
a));}return a}function Nc(a,b){if("textarea"!==a.type)throw Error(k(31,"[object Object]"===Object.prototype.toString.call(b)?"object with keys {"+Object.keys(b).join(", ")+"}":b,""));}function ah(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,
b),b=b.sibling;return a}function e(a,b){a=Sa(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=qe(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function m(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Rb(a,b,c),d.return=a,d;d=Oc(c.type,
c.key,c.props,null,a.mode,d);d.ref=Rb(a,b,c);d.return=a;return d}function n(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=re(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function l(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ha(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function ba(a,b,c){if("string"===typeof b||"number"===typeof b)return b=qe(""+b,a.mode,c),b.return=a,b;if("object"===
typeof b&&null!==b){switch(b.$$typeof){case Pc:return c=Oc(b.type,b.key,b.props,null,a.mode,c),c.ref=Rb(a,null,b),c.return=a,c;case gb:return b=re(b,a.mode,c),b.return=a,b}if(Qc(b)||zb(b))return b=Ha(b,a.mode,c,null),b.return=a,b;Nc(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if("string"===typeof c||"number"===typeof c)return null!==e?null:h(a,b,""+c,d);if("object"===typeof c&&null!==c){switch(c.$$typeof){case Pc:return c.key===e?c.type===Ma?l(a,b,c.props.children,d,e):m(a,b,c,
d):null;case gb:return c.key===e?n(a,b,c,d):null}if(Qc(c)||zb(c))return null!==e?null:l(a,b,c,d,null);Nc(a,c)}return null}function t(a,b,c,d,e){if("string"===typeof d||"number"===typeof d)return a=a.get(c)||null,h(b,a,""+d,e);if("object"===typeof d&&null!==d){switch(d.$$typeof){case Pc:return a=a.get(null===d.key?c:d.key)||null,d.type===Ma?l(b,a,d.props.children,e,d.key):m(b,a,d,e);case gb:return a=a.get(null===d.key?c:d.key)||null,n(b,a,d,e)}if(Qc(d)||zb(d))return a=a.get(c)||null,l(b,a,d,e,null);
Nc(b,d)}return null}function q(e,g,h,m){for(var n=null,k=null,l=g,r=g=0,C=null;null!==l&&r<h.length;r++){l.index>r?(C=l,l=null):C=l.sibling;var O=p(e,l,h[r],m);if(null===O){null===l&&(l=C);break}a&&l&&null===O.alternate&&b(e,l);g=f(O,g,r);null===k?n=O:k.sibling=O;k=O;l=C}if(r===h.length)return c(e,l),n;if(null===l){for(;r<h.length;r++)l=ba(e,h[r],m),null!==l&&(g=f(l,g,r),null===k?n=l:k.sibling=l,k=l);return n}for(l=d(e,l);r<h.length;r++)C=t(l,e,r,h[r],m),null!==C&&(a&&null!==C.alternate&&l.delete(null===
C.key?r:C.key),g=f(C,g,r),null===k?n=C:k.sibling=C,k=C);a&&l.forEach(function(a){return b(e,a)});return n}function w(e,g,h,n){var m=zb(h);if("function"!==typeof m)throw Error(k(150));h=m.call(h);if(null==h)throw Error(k(151));for(var l=m=null,r=g,C=g=0,O=null,v=h.next();null!==r&&!v.done;C++,v=h.next()){r.index>C?(O=r,r=null):O=r.sibling;var q=p(e,r,v.value,n);if(null===q){null===r&&(r=O);break}a&&r&&null===q.alternate&&b(e,r);g=f(q,g,C);null===l?m=q:l.sibling=q;l=q;r=O}if(v.done)return c(e,r),m;
if(null===r){for(;!v.done;C++,v=h.next())v=ba(e,v.value,n),null!==v&&(g=f(v,g,C),null===l?m=v:l.sibling=v,l=v);return m}for(r=d(e,r);!v.done;C++,v=h.next())v=t(r,e,C,v.value,n),null!==v&&(a&&null!==v.alternate&&r.delete(null===v.key?C:v.key),g=f(v,g,C),null===l?m=v:l.sibling=v,l=v);a&&r.forEach(function(a){return b(e,a)});return m}return function(a,d,f,h){var m="object"===typeof f&&null!==f&&f.type===Ma&&null===f.key;m&&(f=f.props.children);var n="object"===typeof f&&null!==f;if(n)switch(f.$$typeof){case Pc:a:{n=
f.key;for(m=d;null!==m;){if(m.key===n){switch(m.tag){case 7:if(f.type===Ma){c(a,m.sibling);d=e(m,f.props.children);d.return=a;a=d;break a}break;default:if(m.elementType===f.type){c(a,m.sibling);d=e(m,f.props);d.ref=Rb(a,m,f);d.return=a;a=d;break a}}c(a,m);break}else b(a,m);m=m.sibling}f.type===Ma?(d=Ha(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Oc(f.type,f.key,f.props,null,a.mode,h),h.ref=Rb(a,d,f),h.return=a,a=h)}return g(a);case gb:a:{for(m=f.key;null!==d;){if(d.key===m)if(4===d.tag&&d.stateNode.containerInfo===
f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=re(f,a.mode,h);d.return=a;a=d}return g(a)}if("string"===typeof f||"number"===typeof f)return f=""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=qe(f,a.mode,h),d.return=a,a=d),g(a);if(Qc(f))return q(a,d,f,h);if(zb(f))return w(a,d,f,h);n&&Nc(a,f);if("undefined"===typeof f&&!m)switch(a.tag){case 1:case 0:throw a=
a.type,Error(k(152,a.displayName||a.name||"Component"));}return c(a,d)}}function Ta(a){if(a===Sb)throw Error(k(174));return a}function se(a,b){y(Tb,b);y(Ub,a);y(ja,Sb);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Hd(null,"");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Hd(b,a)}q(ja);y(ja,b)}function tb(a){q(ja);q(Ub);q(Tb)}function bh(a){Ta(Tb.current);var b=Ta(ja.current);var c=Hd(b,a.type);b!==c&&(y(Ub,a),y(ja,c))}function te(a){Ub.current===
a&&(q(ja),q(Ub))}function Rc(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===$d||c.data===Zd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ue(a,b){return{responder:a,props:b}}
function S(){throw Error(k(321));}function ve(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!Qa(a[c],b[c]))return!1;return!0}function we(a,b,c,d,e,f){Ia=f;z=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;Sc.current=null===a||null===a.memoizedState?dj:ej;a=c(d,e);if(b.expirationTime===Ia){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(k(301));f+=1;J=K=null;b.updateQueue=null;Sc.current=fj;a=c(d,e)}while(b.expirationTime===Ia)}Sc.current=Tc;b=null!==K&&null!==K.next;
Ia=0;J=K=z=null;Uc=!1;if(b)throw Error(k(300));return a}function ub(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===J?z.memoizedState=J=a:J=J.next=a;return J}function vb(){if(null===K){var a=z.alternate;a=null!==a?a.memoizedState:null}else a=K.next;var b=null===J?z.memoizedState:J.next;if(null!==b)J=b,K=a;else{if(null===a)throw Error(k(310));K=a;a={memoizedState:K.memoizedState,baseState:K.baseState,baseQueue:K.baseQueue,queue:K.queue,next:null};null===J?z.memoizedState=
J=a:J=J.next=a}return J}function Ua(a,b){return"function"===typeof b?b(a):b}function Vc(a,b,c){b=vb();c=b.queue;if(null===c)throw Error(k(311));c.lastRenderedReducer=a;var d=K,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,m=e;do{var n=m.expirationTime;if(n<Ia){var l={expirationTime:m.expirationTime,suspenseConfig:m.suspenseConfig,action:m.action,eagerReducer:m.eagerReducer,eagerState:m.eagerState,
next:null};null===h?(g=h=l,f=d):h=h.next=l;n>z.expirationTime&&(z.expirationTime=n,Kc(n))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:m.suspenseConfig,action:m.action,eagerReducer:m.eagerReducer,eagerState:m.eagerState,next:null}),Vg(n,m.suspenseConfig),d=m.eagerReducer===a?m.eagerState:a(d,m.action);m=m.next}while(null!==m&&m!==e);null===h?f=d:h.next=g;Qa(d,b.memoizedState)||(ia=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,
c.dispatch]}function Wc(a,b,c){b=vb();c=b.queue;if(null===c)throw Error(k(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);Qa(f,b.memoizedState)||(ia=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function xe(a){var b=ub();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Ua,
lastRenderedState:a};a=a.dispatch=ch.bind(null,z,a);return[b.memoizedState,a]}function ye(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=z.updateQueue;null===b?(b={lastEffect:null},z.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function dh(a){return vb().memoizedState}function ze(a,b,c,d){var e=ub();z.effectTag|=a;e.memoizedState=ye(1|b,c,void 0,void 0===d?null:d)}function Ae(a,b,c,d){var e=vb();
d=void 0===d?null:d;var f=void 0;if(null!==K){var g=K.memoizedState;f=g.destroy;if(null!==d&&ve(d,g.deps)){ye(b,c,f,d);return}}z.effectTag|=a;e.memoizedState=ye(1|b,c,f,d)}function eh(a,b){return ze(516,4,a,b)}function Xc(a,b){return Ae(516,4,a,b)}function fh(a,b){return Ae(4,2,a,b)}function gh(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function hh(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;
return Ae(4,2,gh.bind(null,b,a),c)}function Be(a,b){}function ih(a,b){ub().memoizedState=[a,void 0===b?null:b];return a}function Yc(a,b){var c=vb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&ve(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function jh(a,b){var c=vb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&ve(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Ce(a,b,c){var d=Cc();Da(98>d?98:d,function(){a(!0)});Da(97<d?97:d,function(){var d=
X.suspense;X.suspense=void 0===b?null:b;try{a(!1),c()}finally{X.suspense=d}})}function ch(a,b,c){var d=ka(),e=Vb.suspense;d=Va(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===z||null!==f&&f===z)Uc=!0,e.expirationTime=Ia,z.expirationTime=Ia;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,
h=f(g,c);e.eagerReducer=f;e.eagerState=h;if(Qa(h,g))return}catch(m){}finally{}Ja(a,d)}}function kh(a,b){var c=la(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function lh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?
null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function De(a){if(Wa){var b=Ka;if(b){var c=b;if(!lh(a,b)){b=kb(c.nextSibling);if(!b||!lh(a,b)){a.effectTag=a.effectTag&-1025|2;Wa=!1;ra=a;return}kh(ra,c)}ra=a;Ka=kb(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Wa=!1,ra=a}}function mh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;ra=a}function Zc(a){if(a!==ra)return!1;if(!Wa)return mh(a),Wa=!0,!1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==
b&&!Yd(b,a.memoizedProps))for(b=Ka;b;)kh(a,b),b=kb(b.nextSibling);mh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(k(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===og){if(0===b){Ka=kb(a.nextSibling);break a}b--}else c!==ng&&c!==Zd&&c!==$d||b++}a=a.nextSibling}Ka=null}}else Ka=ra?kb(a.stateNode.nextSibling):null;return!0}function Ee(){Ka=ra=null;Wa=!1}function T(a,b,c,d){b.child=null===a?Fe(b,null,c,d):wb(b,a.child,c,d)}function nh(a,
b,c,d,e){c=c.render;var f=b.ref;rb(b,e);d=we(a,b,c,d,f,e);if(null!==a&&!ia)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),sa(a,b,e);b.effectTag|=1;T(a,b,d,e);return b.child}function oh(a,b,c,d,e,f){if(null===a){var g=c.type;if("function"===typeof g&&!Ge(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ph(a,b,g,d,e,f);a=Oc(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<
f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Ob,c(e,d)&&a.ref===b.ref))return sa(a,b,f);b.effectTag|=1;a=Sa(g,d);a.ref=b.ref;a.return=b;return b.child=a}function ph(a,b,c,d,e,f){return null!==a&&Ob(a.memoizedProps,d)&&a.ref===b.ref&&(ia=!1,e<f)?(b.expirationTime=a.expirationTime,sa(a,b,f)):He(a,b,c,d,f)}function qh(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function He(a,b,c,d,e){var f=N(c)?Ra:B.current;f=pb(b,f);rb(b,e);c=we(a,b,c,d,f,e);if(null!==a&&!ia)return b.updateQueue=
a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),sa(a,b,e);b.effectTag|=1;T(a,b,c,e);return b.child}function rh(a,b,c,d,e){if(N(c)){var f=!0;Bc(b)}else f=!1;rb(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Yg(b,c,d),pe(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var m=g.context,n=c.contextType;"object"===typeof n&&null!==n?n=W(n):(n=N(c)?Ra:B.current,n=pb(b,n));var l=c.getDerivedStateFromProps,k="function"===
typeof l||"function"===typeof g.getSnapshotBeforeUpdate;k||"function"!==typeof g.UNSAFE_componentWillReceiveProps&&"function"!==typeof g.componentWillReceiveProps||(h!==d||m!==n)&&Zg(b,g,d,n);Ga=!1;var p=b.memoizedState;g.state=p;Qb(b,d,g,e);m=b.memoizedState;h!==d||p!==m||G.current||Ga?("function"===typeof l&&(Lc(b,c,l,d),m=b.memoizedState),(h=Ga||Xg(b,c,h,d,p,m,n))?(k||"function"!==typeof g.UNSAFE_componentWillMount&&"function"!==typeof g.componentWillMount||("function"===typeof g.componentWillMount&&
g.componentWillMount(),"function"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),"function"===typeof g.componentDidMount&&(b.effectTag|=4)):("function"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=m),g.props=d,g.state=m,g.context=n,d=h):("function"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,oe(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:aa(b.type,h),m=g.context,n=c.contextType,"object"===typeof n&&null!==
n?n=W(n):(n=N(c)?Ra:B.current,n=pb(b,n)),l=c.getDerivedStateFromProps,(k="function"===typeof l||"function"===typeof g.getSnapshotBeforeUpdate)||"function"!==typeof g.UNSAFE_componentWillReceiveProps&&"function"!==typeof g.componentWillReceiveProps||(h!==d||m!==n)&&Zg(b,g,d,n),Ga=!1,m=b.memoizedState,g.state=m,Qb(b,d,g,e),p=b.memoizedState,h!==d||m!==p||G.current||Ga?("function"===typeof l&&(Lc(b,c,l,d),p=b.memoizedState),(l=Ga||Xg(b,c,h,d,m,p,n))?(k||"function"!==typeof g.UNSAFE_componentWillUpdate&&
"function"!==typeof g.componentWillUpdate||("function"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,p,n),"function"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,p,n)),"function"===typeof g.componentDidUpdate&&(b.effectTag|=4),"function"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):("function"!==typeof g.componentDidUpdate||h===a.memoizedProps&&m===a.memoizedState||(b.effectTag|=4),"function"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&m===
a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=p),g.props=d,g.state=p,g.context=n,d=l):("function"!==typeof g.componentDidUpdate||h===a.memoizedProps&&m===a.memoizedState||(b.effectTag|=4),"function"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&m===a.memoizedState||(b.effectTag|=256),d=!1);return Ie(a,b,c,d,f,e)}function Ie(a,b,c,d,e,f){qh(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hg(b,c,!1),sa(a,b,f);d=b.stateNode;gj.current=b;var h=g&&"function"!==typeof c.getDerivedStateFromError?
null:d.render();b.effectTag|=1;null!==a&&g?(b.child=wb(b,a.child,null,f),b.child=wb(b,null,h,f)):T(a,b,h,f);b.memoizedState=d.state;e&&Hg(b,c,!0);return b.child}function sh(a){var b=a.stateNode;b.pendingContext?Fg(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Fg(a,b.context,!1);se(a,b.containerInfo)}function th(a,b,c){var d=b.mode,e=b.pendingProps,f=D.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===
a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);y(D,f&1);if(null===a){void 0!==e.fallback&&De(b);if(g){g=e.fallback;e=Ha(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Ha(g,d,c,null);c.return=b;e.sibling=c;b.memoizedState=Je;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Fe(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;
c=Sa(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sa(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=Je;b.child=c;return d}c=wb(b,a.child,e.children,c);b.memoizedState=null;return b.child=c}a=a.child;if(g){g=e.fallback;e=Ha(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==
a;)a.return=e,a=a.sibling;c=Ha(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=Je;b.child=e;return c}b.memoizedState=null;return b.child=wb(b,a,e.children,c)}function uh(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);Sg(a.return,b)}function Ke(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,
lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}function vh(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;T(a,b,d.children,c);d=D.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&uh(a,c);else if(19===a.tag)uh(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===
a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}y(D,d);if(0===(b.mode&2))b.memoizedState=null;else switch(e){case "forwards":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Rc(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);Ke(b,!1,e,c,f,b.lastEffect);break;case "backwards":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Rc(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}Ke(b,
!0,c,null,f,b.lastEffect);break;case "together":Ke(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}function sa(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Kc(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(k(153));if(null!==b.child){a=b.child;c=Sa(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sa(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}
function $c(a,b){switch(a.tailMode){case "hidden":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case "collapsed":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}function hj(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return N(b.type)&&(q(G),q(B)),
null;case 3:return tb(),q(G),q(B),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Zc(b)||(b.effectTag|=4),wh(b),null;case 5:te(b);c=Ta(Tb.current);var e=b.type;if(null!==a&&null!=b.stateNode)ij(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(k(166));return null}a=Ta(ja.current);if(Zc(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Aa]=b;d[vc]=f;switch(e){case "iframe":case "object":case "embed":w("load",
d);break;case "video":case "audio":for(a=0;a<Db.length;a++)w(Db[a],d);break;case "source":w("error",d);break;case "img":case "image":case "link":w("error",d);w("load",d);break;case "form":w("reset",d);w("submit",d);break;case "details":w("toggle",d);break;case "input":Hf(d,f);w("invalid",d);oa(c,"onChange");break;case "select":d._wrapperState={wasMultiple:!!f.multiple};w("invalid",d);oa(c,"onChange");break;case "textarea":Kf(d,f),w("invalid",d),oa(c,"onChange")}Ud(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=
f[g];"children"===g?"string"===typeof h?d.textContent!==h&&(a=["children",h]):"number"===typeof h&&d.textContent!==""+h&&(a=["children",""+h]):db.hasOwnProperty(g)&&null!=h&&oa(c,g)}switch(e){case "input":mc(d);Jf(d,f,!0);break;case "textarea":mc(d);Mf(d);break;case "select":case "option":break;default:"function"===typeof f.onClick&&(d.onclick=uc)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;"http://www.w3.org/1999/xhtml"===a&&(a=Nf(e));"http://www.w3.org/1999/xhtml"===
a?"script"===e?(a=g.createElement("div"),a.innerHTML="<script>\x3c/script>",a=a.removeChild(a.firstChild)):"string"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),"select"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Aa]=b;a[vc]=d;jj(a,b,!1,!1);b.stateNode=a;g=Vd(e,d);switch(e){case "iframe":case "object":case "embed":w("load",a);h=d;break;case "video":case "audio":for(h=0;h<Db.length;h++)w(Db[h],a);h=d;break;case "source":w("error",a);
h=d;break;case "img":case "image":case "link":w("error",a);w("load",a);h=d;break;case "form":w("reset",a);w("submit",a);h=d;break;case "details":w("toggle",a);h=d;break;case "input":Hf(a,d);h=Cd(a,d);w("invalid",a);oa(c,"onChange");break;case "option":h=Fd(a,d);break;case "select":a._wrapperState={wasMultiple:!!d.multiple};h=M({},d,{value:void 0});w("invalid",a);oa(c,"onChange");break;case "textarea":Kf(a,d);h=Gd(a,d);w("invalid",a);oa(c,"onChange");break;default:h=d}Ud(e,h);var m=h;for(f in m)if(m.hasOwnProperty(f)){var n=
m[f];"style"===f?gg(a,n):"dangerouslySetInnerHTML"===f?(n=n?n.__html:void 0,null!=n&&xh(a,n)):"children"===f?"string"===typeof n?("textarea"!==e||""!==n)&&Wb(a,n):"number"===typeof n&&Wb(a,""+n):"suppressContentEditableWarning"!==f&&"suppressHydrationWarning"!==f&&"autoFocus"!==f&&(db.hasOwnProperty(f)?null!=n&&oa(c,f):null!=n&&xd(a,f,n,g))}switch(e){case "input":mc(a);Jf(a,d,!1);break;case "textarea":mc(a);Mf(a);break;case "option":null!=d.value&&a.setAttribute("value",""+va(d.value));break;case "select":a.multiple=
!!d.multiple;c=d.value;null!=c?hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&hb(a,!!d.multiple,d.defaultValue,!0);break;default:"function"===typeof h.onClick&&(a.onclick=uc)}lg(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)kj(a,b,a.memoizedProps,d);else{if("string"!==typeof d&&null===b.stateNode)throw Error(k(166));c=Ta(Tb.current);Ta(ja.current);Zc(b)?(c=b.stateNode,d=b.memoizedProps,c[Aa]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?
c:c.ownerDocument).createTextNode(d),c[Aa]=b,b.stateNode=c)}return null;case 13:q(D);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Zc(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=e,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||
0!==(D.current&1))F===Xa&&(F=ad);else{if(F===Xa||F===ad)F=bd;0!==Xb&&null!==U&&(Ya(U,P),yh(U,Xb))}if(c||d)b.effectTag|=4;return null;case 4:return tb(),wh(b),null;case 10:return me(b),null;case 17:return N(b.type)&&(q(G),q(B)),null;case 19:q(D);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)$c(d,!1);else{if(F!==Xa||null!==a&&0!==(a.effectTag&64))for(f=b.child;null!==f;){a=Rc(f);if(null!==a){b.effectTag|=64;$c(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=
e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,e.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,
e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;y(D,D.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=Rc(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),$c(d,!0),null===d.tail&&"hidden"===d.tailMode&&!f.alternate)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*Y()-d.renderingStartTime>d.tailExpiration&&
1<c&&(b.effectTag|=64,e=!0,$c(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=Y()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=Y(),c.sibling=null,b=D.current,y(D,e?b&1|2:b&1),c):null}throw Error(k(156,b.tag));}function lj(a,b){switch(a.tag){case 1:return N(a.type)&&(q(G),q(B)),b=a.effectTag,b&4096?
(a.effectTag=b&-4097|64,a):null;case 3:tb();q(G);q(B);b=a.effectTag;if(0!==(b&64))throw Error(k(285));a.effectTag=b&-4097|64;return a;case 5:return te(a),null;case 13:return q(D),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return q(D),null;case 4:return tb(),null;case 10:return me(a),null;default:return null}}function Le(a,b){return{value:a,source:b,stack:Bd(b)}}function Me(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=Bd(c));null!==c&&na(c.type);b=b.value;null!==a&&1===a.tag&&
na(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function mj(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Za(a,c)}}function zh(a){var b=a.ref;if(null!==b)if("function"===typeof b)try{b(null)}catch(c){Za(a,c)}else b.current=null}function nj(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===
b.type?c:aa(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(k(163));}function Ah(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Bh(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function oj(a,b,c,d){switch(c.tag){case 0:case 11:case 15:case 22:Bh(3,
c);return;case 1:a=c.stateNode;c.effectTag&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:aa(c.type,b.memoizedProps),a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Wg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Wg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.effectTag&4&&lg(c.type,c.memoizedProps)&&
a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&bg(c))));return;case 19:case 17:case 20:case 21:return}throw Error(k(163));}function Ch(a,b,c){"function"===typeof Ne&&Ne(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;Da(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Za(g,
h)}}a=a.next}while(a!==d)})}break;case 1:zh(b);c=b.stateNode;"function"===typeof c.componentWillUnmount&&mj(b,c);break;case 5:zh(b);break;case 4:Dh(a,b,c)}}function Eh(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Eh(b)}function Fh(a){return 5===a.tag||3===a.tag||4===a.tag}function Gh(a){a:{for(var b=a.return;null!==
b;){if(Fh(b)){var c=b;break a}b=b.return}throw Error(k(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(k(161));}c.effectTag&16&&(Wb(b,""),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Fh(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;if(null===c.child||4===c.tag)continue b;
else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Oe(a,c,b):Pe(a,c,b)}function Oe(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=uc));else if(4!==d&&(a=a.child,null!==a))for(Oe(a,b,c),a=a.sibling;null!==a;)Oe(a,b,c),a=a.sibling}
function Pe(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Pe(a,b,c),a=a.sibling;null!==a;)Pe(a,b,c),a=a.sibling}function Dh(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(k(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=
a,m=d,n=c,l=m;;)if(Ch(h,l,n),null!==l.child&&4!==l.tag)l.child.return=l,l=l.child;else{if(l===m)break a;for(;null===l.sibling;){if(null===l.return||l.return===m)break a;l=l.return}l.sibling.return=l.return;l=l.sibling}g?(h=f,m=d.stateNode,8===h.nodeType?h.parentNode.removeChild(m):h.removeChild(m)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ch(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===
b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}function Qe(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Ah(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[vc]=d;"input"===a&&"radio"===d.type&&null!=d.name&&If(c,d);Vd(a,e);b=Vd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],
h=f[e+1];"style"===g?gg(c,h):"dangerouslySetInnerHTML"===g?xh(c,h):"children"===g?Wb(c,h):xd(c,g,h,b)}switch(a){case "input":Dd(c,d);break;case "textarea":Lf(c,d);break;case "select":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?hb(c,!!d.multiple,d.defaultValue,!0):hb(c,!!d.multiple,d.multiple?[]:"",!1))}}}return;case 6:if(null===b.stateNode)throw Error(k(162));b.stateNode.nodeValue=b.memoizedProps;
return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,bg(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?d=!1:(d=!0,c=b.child,Re=Y());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,"function"===typeof f.setProperty?f.setProperty("display","none","important"):f.display="none"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty("display")?e.display:null,f.style.display=fg("display",e));else if(6===a.tag)a.stateNode.nodeValue=d?
"":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=f;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Hh(b);return;case 19:Hh(b);return;case 17:return}throw Error(k(163));}function Hh(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=
new pj);b.forEach(function(b){var d=qj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}function Ih(a,b,c){c=Ea(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){cd||(cd=!0,Se=d);Me(a,b)};return c}function Jh(a,b,c){c=Ea(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if("function"===typeof d){var e=b.value;c.payload=function(){Me(a,b);return d(e)}}var f=a.stateNode;null!==f&&"function"===typeof f.componentDidCatch&&(c.callback=function(){"function"!==typeof d&&
(null===La?La=new Set([this]):La.add(this),Me(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:""})});return c}function ka(){return(p&(ca|ma))!==H?1073741821-(Y()/10|0):0!==dd?dd:dd=1073741821-(Y()/10|0)}function Va(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=Cc();if(0===(b&4))return 99===d?1073741823:1073741822;if((p&ca)!==H)return P;if(null!==c)a=Fc(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=Fc(a,150,100);break;case 97:case 96:a=
Fc(a,5E3,250);break;case 95:a=2;break;default:throw Error(k(326));}null!==U&&a===P&&--a;return a}function ed(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&
(U===e&&(Kc(b),F===bd&&Ya(e,P)),yh(e,b));return e}function fd(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Kh(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}function V(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=Og(Te.bind(null,a));else{var b=fd(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=ka();
1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Qg&&Rg(c)}a.callbackExpirationTime=b;a.callbackPriority=d;b=1073741823===b?Og(Te.bind(null,a)):Ng(d,Lh.bind(null,a),{timeout:10*(1073741821-b)-Y()});a.callbackNode=b}}}function Lh(a,b){dd=0;if(b)return b=ka(),Ue(a,b),V(a),null;var c=fd(a);if(0!==c){b=a.callbackNode;if((p&(ca|ma))!==H)throw Error(k(327));
xb();a===U&&c===P||$a(a,c);if(null!==t){var d=p;p|=ca;var e=Mh();do try{rj();break}catch(h){Nh(a,h)}while(1);le();p=d;gd.current=e;if(F===hd)throw b=id,$a(a,c),Ya(a,c),V(a),b;if(null===t)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=F,U=null,d){case Xa:case hd:throw Error(k(345));case Oh:Ue(a,2<c?2:c);break;case ad:Ya(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ve(e));if(1073741823===ta&&(e=Re+Ph-Y(),10<e)){if(jd){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=
c;$a(a,c);break}}f=fd(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=We(ab.bind(null,a),e);break}ab(a);break;case bd:Ya(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ve(e));if(jd&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;$a(a,c);break}e=fd(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}1073741823!==Yb?d=10*(1073741821-Yb)-Y():1073741823===ta?d=0:(d=10*(1073741821-ta)-5E3,e=Y(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=
(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*sj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=We(ab.bind(null,a),d);break}ab(a);break;case Xe:if(1073741823!==ta&&null!==kd){f=ta;var g=kd;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=Y()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){Ya(a,c);a.timeoutHandle=We(ab.bind(null,a),d);break}}ab(a);break;default:throw Error(k(329));}V(a);if(a.callbackNode===b)return Lh.bind(null,a)}}return null}function Te(a){var b=
a.lastExpiredTime;b=0!==b?b:1073741823;if((p&(ca|ma))!==H)throw Error(k(327));xb();a===U&&b===P||$a(a,b);if(null!==t){var c=p;p|=ca;var d=Mh();do try{tj();break}catch(e){Nh(a,e)}while(1);le();p=c;gd.current=d;if(F===hd)throw c=id,$a(a,b),Ya(a,b),V(a),c;if(null!==t)throw Error(k(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;U=null;ab(a);V(a)}return null}function uj(){if(null!==bb){var a=bb;bb=null;a.forEach(function(a,c){Ue(c,a);V(c)});ha()}}function Qh(a,b){var c=p;p|=1;try{return a(b)}finally{p=
c,p===H&&ha()}}function Rh(a,b){var c=p;p&=-2;p|=Ye;try{return a(b)}finally{p=c,p===H&&ha()}}function $a(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,vj(c));if(null!==t)for(c=t.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&(q(G),q(B));break;case 3:tb();q(G);q(B);break;case 5:te(d);break;case 4:tb();break;case 13:q(D);break;case 19:q(D);break;case 10:me(d)}c=c.return}U=a;t=Sa(a.current,null);
P=b;F=Xa;id=null;Yb=ta=1073741823;kd=null;Xb=0;jd=!1}function Nh(a,b){do{try{le();Sc.current=Tc;if(Uc)for(var c=z.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}Ia=0;J=K=z=null;Uc=!1;if(null===t||null===t.return)return F=hd,id=b,t=null;a:{var e=a,f=t.return,g=t,h=b;b=P;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&"object"===typeof h&&"function"===typeof h.then){var m=h;if(0===(g.mode&2)){var n=g.alternate;n?(g.updateQueue=n.updateQueue,g.memoizedState=
n.memoizedState,g.expirationTime=n.expirationTime):(g.updateQueue=null,g.memoizedState=null)}var l=0!==(D.current&1),k=f;do{var p;if(p=13===k.tag){var q=k.memoizedState;if(null!==q)p=null!==q.dehydrated?!0:!1;else{var w=k.memoizedProps;p=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:l?!1:!0}}if(p){var y=k.updateQueue;if(null===y){var r=new Set;r.add(m);k.updateQueue=r}else y.add(m);if(0===(k.mode&2)){k.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var O=
Ea(1073741823,null);O.tag=Jc;Fa(g,O)}g.expirationTime=1073741823;break a}h=void 0;g=b;var v=e.pingCache;null===v?(v=e.pingCache=new wj,h=new Set,v.set(m,h)):(h=v.get(m),void 0===h&&(h=new Set,v.set(m,h)));if(!h.has(g)){h.add(g);var x=xj.bind(null,e,m,g);m.then(x,x)}k.effectTag|=4096;k.expirationTime=b;break a}k=k.return}while(null!==k);h=Error((na(g.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+
Bd(g))}F!==Xe&&(F=Oh);h=Le(h,g);k=f;do{switch(k.tag){case 3:m=h;k.effectTag|=4096;k.expirationTime=b;var A=Ih(k,m,b);Ug(k,A);break a;case 1:m=h;var u=k.type,B=k.stateNode;if(0===(k.effectTag&64)&&("function"===typeof u.getDerivedStateFromError||null!==B&&"function"===typeof B.componentDidCatch&&(null===La||!La.has(B)))){k.effectTag|=4096;k.expirationTime=b;var H=Jh(k,m,b);Ug(k,H);break a}}k=k.return}while(null!==k)}t=Sh(t)}catch(cj){b=cj;continue}break}while(1)}function Mh(a){a=gd.current;gd.current=
Tc;return null===a?Tc:a}function Vg(a,b){a<ta&&2<a&&(ta=a);null!==b&&a<Yb&&2<a&&(Yb=a,kd=b)}function Kc(a){a>Xb&&(Xb=a)}function tj(){for(;null!==t;)t=Th(t)}function rj(){for(;null!==t&&!yj();)t=Th(t)}function Th(a){var b=zj(a.alternate,a,P);a.memoizedProps=a.pendingProps;null===b&&(b=Sh(a));Uh.current=null;return b}function Sh(a){t=a;do{var b=t.alternate;a=t.return;if(0===(t.effectTag&2048)){b=hj(b,t,P);if(1===P||1!==t.childExpirationTime){for(var c=0,d=t.child;null!==d;){var e=d.expirationTime,
f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}t.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=t.firstEffect),a.lastEffect=t.lastEffect),1<t.effectTag&&(null!==a.lastEffect?a.lastEffect.nextEffect=t:a.firstEffect=t,a.lastEffect=t))}else{b=lj(t);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=
2048)}b=t.sibling;if(null!==b)return b;t=a}while(null!==t);F===Xa&&(F=Xe);return null}function Ve(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function ab(a){var b=Cc();Da(99,Aj.bind(null,a,b));return null}function Aj(a,b){do xb();while(null!==Zb);if((p&(ca|ma))!==H)throw Error(k(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(k(177));a.callbackNode=null;a.callbackExpirationTime=
0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ve(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=d-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===U&&(t=U=null,P=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=p;p|=ma;Uh.current=null;Ze=tc;var g=kg();if(Xd(g)){if("selectionStart"in
g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var m=h.getSelection&&h.getSelection();if(m&&0!==m.rangeCount){h=m.anchorNode;var n=m.anchorOffset,q=m.focusNode;m=m.focusOffset;try{h.nodeType,q.nodeType}catch(sb){h=null;break a}var ba=0,w=-1,y=-1,B=0,D=0,r=g,z=null;b:for(;;){for(var v;;){r!==h||0!==n&&3!==r.nodeType||(w=ba+n);r!==q||0!==m&&3!==r.nodeType||(y=ba+m);3===r.nodeType&&(ba+=r.nodeValue.length);if(null===(v=r.firstChild))break;z=r;
r=v}for(;;){if(r===g)break b;z===h&&++B===n&&(w=ba);z===q&&++D===m&&(y=ba);if(null!==(v=r.nextSibling))break;r=z;z=r.parentNode}r=v}h=-1===w||-1===y?null:{start:w,end:y}}else h=null}h=h||{start:0,end:0}}else h=null;$e={activeElementDetached:null,focusedElem:g,selectionRange:h};tc=!1;l=e;do try{Bj()}catch(sb){if(null===l)throw Error(k(330));Za(l,sb);l=l.nextEffect}while(null!==l);l=e;do try{for(g=a,h=b;null!==l;){var x=l.effectTag;x&16&&Wb(l.stateNode,"");if(x&128){var A=l.alternate;if(null!==A){var u=
A.ref;null!==u&&("function"===typeof u?u(null):u.current=null)}}switch(x&1038){case 2:Gh(l);l.effectTag&=-3;break;case 6:Gh(l);l.effectTag&=-3;Qe(l.alternate,l);break;case 1024:l.effectTag&=-1025;break;case 1028:l.effectTag&=-1025;Qe(l.alternate,l);break;case 4:Qe(l.alternate,l);break;case 8:n=l,Dh(g,n,h),Eh(n)}l=l.nextEffect}}catch(sb){if(null===l)throw Error(k(330));Za(l,sb);l=l.nextEffect}while(null!==l);u=$e;A=kg();x=u.focusedElem;h=u.selectionRange;if(A!==x&&x&&x.ownerDocument&&jg(x.ownerDocument.documentElement,
x)){null!==h&&Xd(x)&&(A=h.start,u=h.end,void 0===u&&(u=A),"selectionStart"in x?(x.selectionStart=A,x.selectionEnd=Math.min(u,x.value.length)):(u=(A=x.ownerDocument||document)&&A.defaultView||window,u.getSelection&&(u=u.getSelection(),n=x.textContent.length,g=Math.min(h.start,n),h=void 0===h.end?g:Math.min(h.end,n),!u.extend&&g>h&&(n=h,h=g,g=n),n=ig(x,g),q=ig(x,h),n&&q&&(1!==u.rangeCount||u.anchorNode!==n.node||u.anchorOffset!==n.offset||u.focusNode!==q.node||u.focusOffset!==q.offset)&&(A=A.createRange(),
A.setStart(n.node,n.offset),u.removeAllRanges(),g>h?(u.addRange(A),u.extend(q.node,q.offset)):(A.setEnd(q.node,q.offset),u.addRange(A))))));A=[];for(u=x;u=u.parentNode;)1===u.nodeType&&A.push({element:u,left:u.scrollLeft,top:u.scrollTop});"function"===typeof x.focus&&x.focus();for(x=0;x<A.length;x++)u=A[x],u.element.scrollLeft=u.left,u.element.scrollTop=u.top}tc=!!Ze;$e=Ze=null;a.current=c;l=e;do try{for(x=a;null!==l;){var F=l.effectTag;F&36&&oj(x,l.alternate,l);if(F&128){A=void 0;var E=l.ref;if(null!==
E){var G=l.stateNode;switch(l.tag){case 5:A=G;break;default:A=G}"function"===typeof E?E(A):E.current=A}}l=l.nextEffect}}catch(sb){if(null===l)throw Error(k(330));Za(l,sb);l=l.nextEffect}while(null!==l);l=null;Cj();p=f}else a.current=c;if(ld)ld=!1,Zb=a,$b=b;else for(l=e;null!==l;)b=l.nextEffect,l.nextEffect=null,l=b;b=a.firstPendingTime;0===b&&(La=null);1073741823===b?a===af?ac++:(ac=0,af=a):ac=0;"function"===typeof bf&&bf(c.stateNode,d);V(a);if(cd)throw cd=!1,a=Se,Se=null,a;if((p&Ye)!==H)return null;
ha();return null}function Bj(){for(;null!==l;){var a=l.effectTag;0!==(a&256)&&nj(l.alternate,l);0===(a&512)||ld||(ld=!0,Ng(97,function(){xb();return null}));l=l.nextEffect}}function xb(){if(90!==$b){var a=97<$b?97:$b;$b=90;return Da(a,Dj)}}function Dj(){if(null===Zb)return!1;var a=Zb;Zb=null;if((p&(ca|ma))!==H)throw Error(k(331));var b=p;p|=ma;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Ah(5,c),Bh(5,c)}}catch(d){if(null===
a)throw Error(k(330));Za(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}p=b;ha();return!0}function Vh(a,b,c){b=Le(c,b);b=Ih(a,b,1073741823);Fa(a,b);a=ed(a,1073741823);null!==a&&V(a)}function Za(a,b){if(3===a.tag)Vh(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Vh(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if("function"===typeof c.type.getDerivedStateFromError||"function"===typeof d.componentDidCatch&&(null===La||!La.has(d))){a=Le(b,a);a=Jh(c,a,1073741823);Fa(c,a);c=ed(c,1073741823);null!==
c&&V(c);break}}c=c.return}}function xj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);U===a&&P===c?F===bd||F===ad&&1073741823===ta&&Y()-Re<Ph?$a(a,P):jd=!0:Kh(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,V(a)))}function qj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=ka(),b=Va(b,a,null));a=ed(a,b);null!==a&&V(a)}function Ej(a){if("undefined"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=
b.inject(a);bf=function(a,e){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(f){}};Ne=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}function Fj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=
null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Ge(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Gj(a){if("function"===typeof a)return Ge(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===zd)return 11;if(a===Ad)return 14}return 2}function Sa(a,b){var c=a.alternate;null===c?(c=la(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=
null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,firstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}function Oc(a,b,c,d,e,f){var g=2;d=a;if("function"===typeof a)Ge(a)&&(g=1);else if("string"===typeof a)g=
5;else a:switch(a){case Ma:return Ha(c.children,e,f,b);case Hj:g=8;e|=7;break;case Af:g=8;e|=1;break;case kc:return a=la(12,c,b,e|8),a.elementType=kc,a.type=kc,a.expirationTime=f,a;case lc:return a=la(13,c,b,e),a.type=lc,a.elementType=lc,a.expirationTime=f,a;case yd:return a=la(19,c,b,e),a.elementType=yd,a.expirationTime=f,a;default:if("object"===typeof a&&null!==a)switch(a.$$typeof){case Cf:g=10;break a;case Bf:g=9;break a;case zd:g=11;break a;case Ad:g=14;break a;case Ef:g=16;d=null;break a;case Df:g=
22;break a}throw Error(k(130,null==a?a:typeof a,""));}b=la(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Ha(a,b,c,d){a=la(7,a,d,b);a.expirationTime=c;return a}function qe(a,b,c){a=la(6,a,null,b);a.expirationTime=c;return a}function re(a,b,c){b=la(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function Ij(a,b,c){this.tag=b;this.current=null;this.containerInfo=
a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Kh(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function Ya(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;
c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}function yh(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Ue(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}
function md(a,b,c,d){var e=b.current,f=ka(),g=Vb.suspense;f=Va(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(Na(c)!==c||1!==c.tag)throw Error(k(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(N(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(k(171));}if(1===c.tag){var m=c.type;if(N(m)){c=Gg(c,m,h);break a}}c=h}else c=Ca;null===b.context?b.context=c:b.pendingContext=c;b=Ea(f,g);b.payload={element:a};d=void 0===
d?null:d;null!==d&&(b.callback=d);Fa(e,b);Ja(e,f);return f}function cf(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function Wh(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function df(a,b){Wh(a,b);(a=a.alternate)&&Wh(a,b)}function ef(a,b,c){c=null!=c&&!0===c.hydrate;var d=new Ij(a,b,c),e=la(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ne(e);a[Lb]=d.current;c&&0!==b&&
xi(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}function bc(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||" react-mount-point-unstable "!==a.nodeValue))}function Jj(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute("data-reactroot")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new ef(a,0,b?{hydrate:!0}:void 0)}function nd(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;
if("function"===typeof e){var h=e;e=function(){var a=cf(g);h.call(a)}}md(b,g,a,e)}else{f=c._reactRootContainer=Jj(c,d);g=f._internalRoot;if("function"===typeof e){var m=e;e=function(){var a=cf(g);m.call(a)}}Rh(function(){md(b,g,a,e)})}return cf(g)}function Kj(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:gb,key:null==d?null:""+d,children:a,containerInfo:b,implementation:c}}function Xh(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;
if(!bc(b))throw Error(k(200));return Kj(a,b,null,c)}if(!ea)throw Error(k(227));var ki=function(a,b,c,d,e,f,g,h,m){var n=Array.prototype.slice.call(arguments,3);try{b.apply(c,n)}catch(C){this.onError(C)}},yb=!1,gc=null,hc=!1,pd=null,li={onError:function(a){yb=!0;gc=a}},td=null,rf=null,mf=null,ic=null,cb={},jc=[],qd={},db={},rd={},wa=!("undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement),M=ea.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.assign,
sd=null,eb=null,fb=null,ee=function(a,b){return a(b)},eg=function(a,b,c,d,e){return a(b,c,d,e)},vd=function(){},vf=ee,Oa=!1,wd=!1,Z=ea.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler,Lj=Z.unstable_cancelCallback,ff=Z.unstable_now,$f=Z.unstable_scheduleCallback,Mj=Z.unstable_shouldYield,Yh=Z.unstable_requestPaint,Pd=Z.unstable_runWithPriority,Nj=Z.unstable_getCurrentPriorityLevel,Oj=Z.unstable_ImmediatePriority,Zh=Z.unstable_UserBlockingPriority,ag=Z.unstable_NormalPriority,Pj=Z.unstable_LowPriority,
Qj=Z.unstable_IdlePriority,oi=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,wf=Object.prototype.hasOwnProperty,yf={},xf={},E={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a){E[a]=
new L(a,0,!1,a,null,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(a){var b=a[0];E[b]=new L(b,1,!1,a[1],null,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(a){E[a]=new L(a,2,!1,a.toLowerCase(),null,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(a){E[a]=new L(a,2,!1,a,null,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a){E[a]=
new L(a,3,!1,a.toLowerCase(),null,!1)});["checked","multiple","muted","selected"].forEach(function(a){E[a]=new L(a,3,!0,a,null,!1)});["capture","download"].forEach(function(a){E[a]=new L(a,4,!1,a,null,!1)});["cols","rows","size","span"].forEach(function(a){E[a]=new L(a,6,!1,a,null,!1)});["rowSpan","start"].forEach(function(a){E[a]=new L(a,5,!1,a.toLowerCase(),null,!1)});var gf=/[\-:]([a-z])/g,hf=function(a){return a[1].toUpperCase()};"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var b=
a.replace(gf,hf);E[b]=new L(b,1,!1,a,null,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var b=a.replace(gf,hf);E[b]=new L(b,1,!1,a,"http://www.w3.org/1999/xlink",!1)});["xml:base","xml:lang","xml:space"].forEach(function(a){var b=a.replace(gf,hf);E[b]=new L(b,1,!1,a,"http://www.w3.org/XML/1998/namespace",!1)});["tabIndex","crossOrigin"].forEach(function(a){E[a]=new L(a,1,!1,a.toLowerCase(),null,!1)});E.xlinkHref=new L("xlinkHref",1,
!1,"xlink:href","http://www.w3.org/1999/xlink",!0);["src","href","action","formAction"].forEach(function(a){E[a]=new L(a,1,!1,a.toLowerCase(),null,!0)});var da=ea.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;da.hasOwnProperty("ReactCurrentDispatcher")||(da.ReactCurrentDispatcher={current:null});da.hasOwnProperty("ReactCurrentBatchConfig")||(da.ReactCurrentBatchConfig={suspense:null});var si=/^(.*)[\\\/]/,Q="function"===typeof Symbol&&Symbol.for,Pc=Q?Symbol.for("react.element"):60103,gb=Q?Symbol.for("react.portal"):
60106,Ma=Q?Symbol.for("react.fragment"):60107,Af=Q?Symbol.for("react.strict_mode"):60108,kc=Q?Symbol.for("react.profiler"):60114,Cf=Q?Symbol.for("react.provider"):60109,Bf=Q?Symbol.for("react.context"):60110,Hj=Q?Symbol.for("react.concurrent_mode"):60111,zd=Q?Symbol.for("react.forward_ref"):60112,lc=Q?Symbol.for("react.suspense"):60113,yd=Q?Symbol.for("react.suspense_list"):60120,Ad=Q?Symbol.for("react.memo"):60115,Ef=Q?Symbol.for("react.lazy"):60116,Df=Q?Symbol.for("react.block"):60121,zf="function"===
typeof Symbol&&Symbol.iterator,od,xh=function(a){return"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if("http://www.w3.org/2000/svg"!==a.namespaceURI||"innerHTML"in a)a.innerHTML=b;else{od=od||document.createElement("div");od.innerHTML="<svg>"+b.valueOf().toString()+"</svg>";for(b=od.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}}),Wb=function(a,
b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b},ib={animationend:nc("Animation","AnimationEnd"),animationiteration:nc("Animation","AnimationIteration"),animationstart:nc("Animation","AnimationStart"),transitionend:nc("Transition","TransitionEnd")},Id={},Of={};wa&&(Of=document.createElement("div").style,"AnimationEvent"in window||(delete ib.animationend.animation,delete ib.animationiteration.animation,delete ib.animationstart.animation),"TransitionEvent"in
window||delete ib.transitionend.transition);var $h=oc("animationend"),ai=oc("animationiteration"),bi=oc("animationstart"),ci=oc("transitionend"),Db="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Pf=new ("function"===typeof WeakMap?WeakMap:Map),Ab=null,wi=function(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;
if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)lf(a,b[d],c[d]);else b&&lf(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}},qc=[],Rd=!1,fa=[],xa=null,ya=null,za=null,Eb=new Map,Fb=new Map,Jb=[],Nd="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit".split(" "),
yi="focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture".split(" "),dg={},cg=new Map,Td=new Map,Rj=["abort","abort",$h,"animationEnd",ai,"animationIteration",bi,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata",
"loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",ci,"transitionEnd","waiting","waiting"];Sd("blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),
0);Sd("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1);Sd(Rj,2);(function(a,b){for(var c=0;c<a.length;c++)Td.set(a[c],b)})("change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),0);var Hi=Zh,Gi=Pd,tc=!0,Kb={animationIterationCount:!0,
borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,
strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Sj=["Webkit","ms","Moz","O"];Object.keys(Kb).forEach(function(a){Sj.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);Kb[b]=Kb[a]})});var Ii=M({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}),ng="$",og="/$",$d="$?",Zd="$!",Ze=null,$e=null,We="function"===typeof setTimeout?setTimeout:void 0,vj="function"===
typeof clearTimeout?clearTimeout:void 0,jf=Math.random().toString(36).slice(2),Aa="__reactInternalInstance$"+jf,vc="__reactEventHandlers$"+jf,Lb="__reactContainere$"+jf,Ba=null,ce=null,wc=null;M(R.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():"unknown"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=xc)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():"unknown"!==
typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=xc)},persist:function(){this.isPersistent=xc},isPersistent:yc,destructor:function(){var a=this.constructor.Interface,b;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=yc;this._dispatchInstances=this._dispatchListeners=null}});R.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||
Date.now()},defaultPrevented:null,isTrusted:null};R.extend=function(a){function b(){return c.apply(this,arguments)}var c=this,d=function(){};d.prototype=c.prototype;d=new d;M(d,b.prototype);b.prototype=d;b.prototype.constructor=b;b.Interface=M({},c.Interface,a);b.extend=c.extend;sg(b);return b};sg(R);var Tj=R.extend({data:null}),Uj=R.extend({data:null}),Ni=[9,13,27,32],de=wa&&"CompositionEvent"in window,cc=null;wa&&"documentMode"in document&&(cc=document.documentMode);var Vj=wa&&"TextEvent"in window&&
!cc,xg=wa&&(!de||cc&&8<cc&&11>=cc),wg=String.fromCharCode(32),ua={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},
dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},vg=!1,mb=!1,Wj={eventTypes:ua,extractEvents:function(a,b,c,d,e){var f;if(de)b:{switch(a){case "compositionstart":var g=ua.compositionStart;break b;case "compositionend":g=ua.compositionEnd;break b;case "compositionupdate":g=
ua.compositionUpdate;break b}g=void 0}else mb?tg(a,c)&&(g=ua.compositionEnd):"keydown"===a&&229===c.keyCode&&(g=ua.compositionStart);g?(xg&&"ko"!==c.locale&&(mb||g!==ua.compositionStart?g===ua.compositionEnd&&mb&&(f=rg()):(Ba=d,ce="value"in Ba?Ba.value:Ba.textContent,mb=!0)),e=Tj.getPooled(g,b,c,d),f?e.data=f:(f=ug(c),null!==f&&(e.data=f)),lb(e),f=e):f=null;(a=Vj?Oi(a,c):Pi(a,c))?(b=Uj.getPooled(ua.beforeInput,b,c,d),b.data=a,lb(b)):b=null;return null===f?b:null===b?f:[f,b]}},Qi={color:!0,date:!0,
datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0},Ag={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}},Mb=null,Nb=null,kf=!1;wa&&(kf=Tf("input")&&(!document.documentMode||9<document.documentMode));var Xj={eventTypes:Ag,_isInputEventSupported:kf,extractEvents:function(a,b,c,d,e){e=b?Pa(b):window;var f=
e.nodeName&&e.nodeName.toLowerCase();if("select"===f||"input"===f&&"file"===e.type)var g=Si;else if(yg(e))if(kf)g=Wi;else{g=Ui;var h=Ti}else(f=e.nodeName)&&"input"===f.toLowerCase()&&("checkbox"===e.type||"radio"===e.type)&&(g=Vi);if(g&&(g=g(a,b)))return zg(g,c,d);h&&h(a,e,b);"blur"===a&&(a=e._wrapperState)&&a.controlled&&"number"===e.type&&Ed(e,"number",e.value)}},dc=R.extend({view:null,detail:null}),Yi={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"},di=0,ei=0,fi=!1,gi=!1,ec=dc.extend({screenX:null,
screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:fe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if("movementX"in a)return a.movementX;var b=di;di=a.screenX;return fi?"mousemove"===a.type?a.screenX-b:0:(fi=!0,0)},movementY:function(a){if("movementY"in a)return a.movementY;var b=ei;ei=a.screenY;return gi?"mousemove"===
a.type?a.screenY-b:0:(gi=!0,0)}}),hi=ec.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),fc={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout",
"pointerover"]}},Yj={eventTypes:fc,extractEvents:function(a,b,c,d,e){var f="mouseover"===a||"pointerover"===a,g="mouseout"===a||"pointerout"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?Bb(b):null,null!==b){var h=Na(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if("mouseout"===a||"mouseover"===a){var m=ec;var n=fc.mouseLeave;
var l=fc.mouseEnter;var k="mouse"}else if("pointerout"===a||"pointerover"===a)m=hi,n=fc.pointerLeave,l=fc.pointerEnter,k="pointer";a=null==g?f:Pa(g);f=null==b?f:Pa(b);n=m.getPooled(n,g,c,d);n.type=k+"leave";n.target=a;n.relatedTarget=f;c=m.getPooled(l,b,c,d);c.type=k+"enter";c.target=f;c.relatedTarget=a;d=g;k=b;if(d&&k)a:{m=d;l=k;g=0;for(a=m;a;a=pa(a))g++;a=0;for(b=l;b;b=pa(b))a++;for(;0<g-a;)m=pa(m),g--;for(;0<a-g;)l=pa(l),a--;for(;g--;){if(m===l||m===l.alternate)break a;m=pa(m);l=pa(l)}m=null}else m=
null;l=m;for(m=[];d&&d!==l;){g=d.alternate;if(null!==g&&g===l)break;m.push(d);d=pa(d)}for(d=[];k&&k!==l;){g=k.alternate;if(null!==g&&g===l)break;d.push(k);k=pa(k)}for(k=0;k<m.length;k++)be(m[k],"bubbled",n);for(k=d.length;0<k--;)be(d[k],"captured",c);return 0===(e&64)?[n]:[n,c]}},Qa="function"===typeof Object.is?Object.is:Zi,$i=Object.prototype.hasOwnProperty,Zj=wa&&"documentMode"in document&&11>=document.documentMode,Eg={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},
dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},nb=null,he=null,Pb=null,ge=!1,ak={eventTypes:Eg,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=Jd(e);f=rd.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pa(b):window;switch(a){case "focus":if(yg(e)||"true"===e.contentEditable)nb=e,he=b,Pb=null;break;case "blur":Pb=he=nb=null;
break;case "mousedown":ge=!0;break;case "contextmenu":case "mouseup":case "dragend":return ge=!1,Dg(c,d);case "selectionchange":if(Zj)break;case "keydown":case "keyup":return Dg(c,d)}return null}},bk=R.extend({animationName:null,elapsedTime:null,pseudoElement:null}),ck=R.extend({clipboardData:function(a){return"clipboardData"in a?a.clipboardData:window.clipboardData}}),dk=dc.extend({relatedTarget:null}),ek={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",
Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},fk={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",
224:"Meta"},gk=dc.extend({key:function(a){if(a.key){var b=ek[a.key]||a.key;if("Unidentified"!==b)return b}return"keypress"===a.type?(a=Ac(a),13===a?"Enter":String.fromCharCode(a)):"keydown"===a.type||"keyup"===a.type?fk[a.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:fe,charCode:function(a){return"keypress"===a.type?Ac(a):0},keyCode:function(a){return"keydown"===a.type||"keyup"===a.type?a.keyCode:0},which:function(a){return"keypress"===
a.type?Ac(a):"keydown"===a.type||"keyup"===a.type?a.keyCode:0}}),hk=ec.extend({dataTransfer:null}),ik=dc.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:fe}),jk=R.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),kk=ec.extend({deltaX:function(a){return"deltaX"in a?a.deltaX:"wheelDeltaX"in a?-a.wheelDeltaX:0},deltaY:function(a){return"deltaY"in a?a.deltaY:"wheelDeltaY"in a?-a.wheelDeltaY:"wheelDelta"in a?
-a.wheelDelta:0},deltaZ:null,deltaMode:null}),lk={eventTypes:dg,extractEvents:function(a,b,c,d,e){e=cg.get(a);if(!e)return null;switch(a){case "keypress":if(0===Ac(c))return null;case "keydown":case "keyup":a=gk;break;case "blur":case "focus":a=dk;break;case "click":if(2===c.button)return null;case "auxclick":case "dblclick":case "mousedown":case "mousemove":case "mouseup":case "mouseout":case "mouseover":case "contextmenu":a=ec;break;case "drag":case "dragend":case "dragenter":case "dragexit":case "dragleave":case "dragover":case "dragstart":case "drop":a=
hk;break;case "touchcancel":case "touchend":case "touchmove":case "touchstart":a=ik;break;case $h:case ai:case bi:a=bk;break;case ci:a=jk;break;case "scroll":a=dc;break;case "wheel":a=kk;break;case "copy":case "cut":case "paste":a=ck;break;case "gotpointercapture":case "lostpointercapture":case "pointercancel":case "pointerdown":case "pointermove":case "pointerout":case "pointerover":case "pointerup":a=hi;break;default:a=R}b=a.getPooled(e,b,c,d);lb(b);return b}};(function(a){if(ic)throw Error(k(101));
ic=Array.prototype.slice.call(a);nf()})("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" "));(function(a,b,c){td=a;rf=b;mf=c})(ae,Hb,Pa);pf({SimpleEventPlugin:lk,EnterLeaveEventPlugin:Yj,ChangeEventPlugin:Xj,SelectEventPlugin:ak,BeforeInputEventPlugin:Wj});var ie=[],ob=-1,Ca={},B={current:Ca},G={current:!1},Ra=Ca,bj=Pd,je=$f,Rg=Lj,aj=Nj,Dc=Oj,Ig=Zh,Jg=ag,Kg=Pj,Lg=Qj,Qg={},yj=Mj,Cj=void 0!==Yh?Yh:function(){},qa=null,
Ec=null,ke=!1,ii=ff(),Y=1E4>ii?ff:function(){return ff()-ii},Ic={current:null},Hc=null,qb=null,Gc=null,Tg=0,Jc=2,Ga=!1,Vb=da.ReactCurrentBatchConfig,$g=(new ea.Component).refs,Mc={isMounted:function(a){return(a=a._reactInternalFiber)?Na(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=ka(),e=Vb.suspense;d=Va(d,a,e);e=Ea(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);Fa(a,e);Ja(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=ka(),e=Vb.suspense;
d=Va(d,a,e);e=Ea(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);Fa(a,e);Ja(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=ka(),d=Vb.suspense;c=Va(c,a,d);d=Ea(c,d);d.tag=Jc;void 0!==b&&null!==b&&(d.callback=b);Fa(a,d);Ja(a,c)}},Qc=Array.isArray,wb=ah(!0),Fe=ah(!1),Sb={},ja={current:Sb},Ub={current:Sb},Tb={current:Sb},D={current:0},Sc=da.ReactCurrentDispatcher,X=da.ReactCurrentBatchConfig,Ia=0,z=null,K=null,J=null,Uc=!1,Tc={readContext:W,useCallback:S,useContext:S,
useEffect:S,useImperativeHandle:S,useLayoutEffect:S,useMemo:S,useReducer:S,useRef:S,useState:S,useDebugValue:S,useResponder:S,useDeferredValue:S,useTransition:S},dj={readContext:W,useCallback:ih,useContext:W,useEffect:eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ze(4,2,gh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ze(4,2,a,b)},useMemo:function(a,b){var c=ub();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=
ub();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=ch.bind(null,z,a);return[d.memoizedState,a]},useRef:function(a){var b=ub();a={current:a};return b.memoizedState=a},useState:xe,useDebugValue:Be,useResponder:ue,useDeferredValue:function(a,b){var c=xe(a),d=c[0],e=c[1];eh(function(){var c=X.suspense;X.suspense=void 0===b?null:b;try{e(a)}finally{X.suspense=c}},[a,b]);return d},useTransition:function(a){var b=
xe(!1),c=b[0];b=b[1];return[ih(Ce.bind(null,b,a),[b,a]),c]}},ej={readContext:W,useCallback:Yc,useContext:W,useEffect:Xc,useImperativeHandle:hh,useLayoutEffect:fh,useMemo:jh,useReducer:Vc,useRef:dh,useState:function(a){return Vc(Ua)},useDebugValue:Be,useResponder:ue,useDeferredValue:function(a,b){var c=Vc(Ua),d=c[0],e=c[1];Xc(function(){var c=X.suspense;X.suspense=void 0===b?null:b;try{e(a)}finally{X.suspense=c}},[a,b]);return d},useTransition:function(a){var b=Vc(Ua),c=b[0];b=b[1];return[Yc(Ce.bind(null,
b,a),[b,a]),c]}},fj={readContext:W,useCallback:Yc,useContext:W,useEffect:Xc,useImperativeHandle:hh,useLayoutEffect:fh,useMemo:jh,useReducer:Wc,useRef:dh,useState:function(a){return Wc(Ua)},useDebugValue:Be,useResponder:ue,useDeferredValue:function(a,b){var c=Wc(Ua),d=c[0],e=c[1];Xc(function(){var c=X.suspense;X.suspense=void 0===b?null:b;try{e(a)}finally{X.suspense=c}},[a,b]);return d},useTransition:function(a){var b=Wc(Ua),c=b[0];b=b[1];return[Yc(Ce.bind(null,b,a),[b,a]),c]}},ra=null,Ka=null,Wa=
!1,gj=da.ReactCurrentOwner,ia=!1,Je={dehydrated:null,retryTime:0};var jj=function(a,b,c,d){for(c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};var wh=function(a){};var ij=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;Ta(ja.current);a=null;switch(c){case "input":f=
Cd(g,f);d=Cd(g,d);a=[];break;case "option":f=Fd(g,f);d=Fd(g,d);a=[];break;case "select":f=M({},f,{value:void 0});d=M({},d,{value:void 0});a=[];break;case "textarea":f=Gd(g,f);d=Gd(g,d);a=[];break;default:"function"!==typeof f.onClick&&"function"===typeof d.onClick&&(g.onclick=uc)}Ud(c,d);var h,m;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if("style"===h)for(m in g=f[h],g)g.hasOwnProperty(m)&&(c||(c={}),c[m]="");else"dangerouslySetInnerHTML"!==h&&"children"!==h&&"suppressContentEditableWarning"!==
h&&"suppressHydrationWarning"!==h&&"autoFocus"!==h&&(db.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var k=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&k!==g&&(null!=k||null!=g))if("style"===h)if(g){for(m in g)!g.hasOwnProperty(m)||k&&k.hasOwnProperty(m)||(c||(c={}),c[m]="");for(m in k)k.hasOwnProperty(m)&&g[m]!==k[m]&&(c||(c={}),c[m]=k[m])}else c||(a||(a=[]),a.push(h,c)),c=k;else"dangerouslySetInnerHTML"===h?(k=k?k.__html:void 0,g=g?g.__html:void 0,null!=k&&g!==k&&(a=a||
[]).push(h,k)):"children"===h?g===k||"string"!==typeof k&&"number"!==typeof k||(a=a||[]).push(h,""+k):"suppressContentEditableWarning"!==h&&"suppressHydrationWarning"!==h&&(db.hasOwnProperty(h)?(null!=k&&oa(e,h),a||g===k||(a=[])):(a=a||[]).push(h,k))}c&&(a=a||[]).push("style",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};var kj=function(a,b,c,d){c!==d&&(b.effectTag|=4)};var pj="function"===typeof WeakSet?WeakSet:Set,wj="function"===typeof WeakMap?WeakMap:Map,sj=Math.ceil,gd=da.ReactCurrentDispatcher,
Uh=da.ReactCurrentOwner,H=0,Ye=8,ca=16,ma=32,Xa=0,hd=1,Oh=2,ad=3,bd=4,Xe=5,p=H,U=null,t=null,P=0,F=Xa,id=null,ta=1073741823,Yb=1073741823,kd=null,Xb=0,jd=!1,Re=0,Ph=500,l=null,cd=!1,Se=null,La=null,ld=!1,Zb=null,$b=90,bb=null,ac=0,af=null,dd=0,Ja=function(a,b){if(50<ac)throw ac=0,af=null,Error(k(185));a=ed(a,b);if(null!==a){var c=Cc();1073741823===b?(p&Ye)!==H&&(p&(ca|ma))===H?Te(a):(V(a),p===H&&ha()):V(a);(p&4)===H||98!==c&&99!==c||(null===bb?bb=new Map([[a,b]]):(c=bb.get(a),(void 0===c||c>b)&&bb.set(a,
b)))}};var zj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||G.current)ia=!0;else{if(d<c){ia=!1;switch(b.tag){case 3:sh(b);Ee();break;case 5:bh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:N(b.type)&&Bc(b);break;case 4:se(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;y(Ic,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;
if(0!==d&&d>=c)return th(a,b,c);y(D,D.current&1);b=sa(a,b,c);return null!==b?b.sibling:null}y(D,D.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return vh(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);y(D,D.current);if(!d)return null}return sa(a,b,c)}ia=!1}}else ia=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=pb(b,B.current);rb(b,c);e=we(null,
b,d,a,e,c);b.effectTag|=1;if("object"===typeof e&&null!==e&&"function"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(N(d)){var f=!0;Bc(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ne(b);var g=d.getDerivedStateFromProps;"function"===typeof g&&Lc(b,d,g,a);e.updater=Mc;b.stateNode=e;e._reactInternalFiber=b;pe(b,d,a,c);b=Ie(null,b,d,!0,f,c)}else b.tag=0,T(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=
null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ri(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Gj(e);a=aa(e,a);switch(f){case 0:b=He(null,b,e,a,c);break a;case 1:b=rh(null,b,e,a,c);break a;case 11:b=nh(null,b,e,a,c);break a;case 14:b=oh(null,b,e,aa(e.type,a),d,c);break a}throw Error(k(306,e,""));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:aa(d,e),He(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:aa(d,e),rh(a,b,d,e,c);
case 3:sh(b);d=b.updateQueue;if(null===a||null===d)throw Error(k(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;oe(a,b);Qb(b,d,null,c);d=b.memoizedState.element;if(d===e)Ee(),b=sa(a,b,c);else{if(e=b.stateNode.hydrate)Ka=kb(b.stateNode.containerInfo.firstChild),ra=b,e=Wa=!0;if(e)for(c=Fe(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else T(a,b,d,c),Ee();b=b.child}return b;case 5:return bh(b),null===a&&De(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:
null,g=e.children,Yd(d,e)?g=null:null!==f&&Yd(d,f)&&(b.effectTag|=16),qh(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(T(a,b,g,c),b=b.child),b;case 6:return null===a&&De(b),null;case 13:return th(a,b,c);case 4:return se(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=wb(b,null,d,c):T(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:aa(d,e),nh(a,b,d,e,c);case 7:return T(a,b,b.pendingProps,c),b.child;case 8:return T(a,
b,b.pendingProps.children,c),b.child;case 12:return T(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;y(Ic,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=Qa(h,f)?0:("function"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!G.current){b=sa(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var m=h.dependencies;if(null!==
m){g=h.child;for(var l=m.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=Ea(c,null),l.tag=Jc,Fa(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);Sg(h.return,c);m.expirationTime<c&&(m.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=
g}T(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,rb(b,c),e=W(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,T(a,b,d,c),b.child;case 14:return e=b.type,f=aa(e,b.pendingProps),f=aa(e.type,f),oh(a,b,e,f,d,c);case 15:return ph(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:aa(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,N(d)?(a=!0,Bc(b)):a=!1,rb(b,c),Yg(b,d,e),pe(b,d,e,c),Ie(null,
b,d,!0,a,c);case 19:return vh(a,b,c)}throw Error(k(156,b.tag));};var bf=null,Ne=null,la=function(a,b,c,d){return new Fj(a,b,c,d)};ef.prototype.render=function(a){md(a,this._internalRoot,null,null)};ef.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;md(null,a,null,function(){b[Lb]=null})};var Di=function(a){if(13===a.tag){var b=Fc(ka(),150,100);Ja(a,b);df(a,b)}};var Yf=function(a){13===a.tag&&(Ja(a,3),df(a,3))};var Bi=function(a){if(13===a.tag){var b=ka();b=Va(b,a,null);Ja(a,
b);df(a,b)}};sd=function(a,b,c){switch(b){case "input":Dd(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+'][type="radio"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=ae(d);if(!e)throw Error(k(90));Gf(d);Dd(d,e)}}}break;case "textarea":Lf(a,c);break;case "select":b=c.value,null!=b&&hb(a,!!c.multiple,b,!1)}};(function(a,b,c,d){ee=a;eg=b;vd=c;vf=d})(Qh,function(a,b,c,d,e){var f=p;p|=4;
try{return Da(98,a.bind(null,b,c,d,e))}finally{p=f,p===H&&ha()}},function(){(p&(1|ca|ma))===H&&(uj(),xb())},function(a,b){var c=p;p|=2;try{return a(b)}finally{p=c,p===H&&ha()}});var mk={Events:[Hb,Pa,ae,pf,qd,lb,function(a){Kd(a,Ki)},sf,tf,sc,pc,xb,{current:!1}]};(function(a){var b=a.findFiberByHostInstance;return Ej(M({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:da.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Sf(a);
return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:Bb,bundleType:0,version:"16.14.0",rendererPackageName:"react-dom"});I.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=mk;I.createPortal=Xh;I.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===
b){if("function"===typeof a.render)throw Error(k(188));throw Error(k(268,Object.keys(a)));}a=Sf(b);a=null===a?null:a.stateNode;return a};I.flushSync=function(a,b){if((p&(ca|ma))!==H)throw Error(k(187));var c=p;p|=1;try{return Da(99,a.bind(null,b))}finally{p=c,ha()}};I.hydrate=function(a,b,c){if(!bc(b))throw Error(k(200));return nd(null,a,b,!0,c)};I.render=function(a,b,c){if(!bc(b))throw Error(k(200));return nd(null,a,b,!1,c)};I.unmountComponentAtNode=function(a){if(!bc(a))throw Error(k(40));return a._reactRootContainer?
(Rh(function(){nd(null,null,a,!1,function(){a._reactRootContainer=null;a[Lb]=null})}),!0):!1};I.unstable_batchedUpdates=Qh;I.unstable_createPortal=function(a,b){return Xh(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};I.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!bc(c))throw Error(k(200));if(null==a||void 0===a._reactInternalFiber)throw Error(k(38));return nd(a,b,c,!1,d)};I.version="16.14.0"});

File diff suppressed because it is too large Load Diff

32
public/js/react.production.min.js vendored Normal file
View File

@ -0,0 +1,32 @@
/** @license React v16.14.0
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
'use strict';(function(d,r){"object"===typeof exports&&"undefined"!==typeof module?r(exports):"function"===typeof define&&define.amd?define(["exports"],r):(d=d||self,r(d.React={}))})(this,function(d){function r(a){for(var b="https://reactjs.org/docs/error-decoder.html?invariant="+a,c=1;c<arguments.length;c++)b+="&args[]="+encodeURIComponent(arguments[c]);return"Minified React error #"+a+"; visit "+b+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}
function w(a,b,c){this.props=a;this.context=b;this.refs=ba;this.updater=c||ca}function da(){}function L(a,b,c){this.props=a;this.context=b;this.refs=ba;this.updater=c||ca}function ea(a,b,c){var g,e={},fa=null,d=null;if(null!=b)for(g in void 0!==b.ref&&(d=b.ref),void 0!==b.key&&(fa=""+b.key),b)ha.call(b,g)&&!ia.hasOwnProperty(g)&&(e[g]=b[g]);var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){for(var k=Array(h),f=0;f<h;f++)k[f]=arguments[f+2];e.children=k}if(a&&a.defaultProps)for(g in h=a.defaultProps,
h)void 0===e[g]&&(e[g]=h[g]);return{$$typeof:x,type:a,key:fa,ref:d,props:e,_owner:M.current}}function va(a,b){return{$$typeof:x,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function N(a){return"object"===typeof a&&null!==a&&a.$$typeof===x}function wa(a){var b={"=":"=0",":":"=2"};return"$"+(""+a).replace(/[=:]/g,function(a){return b[a]})}function ja(a,b,c,g){if(C.length){var e=C.pop();e.result=a;e.keyPrefix=b;e.func=c;e.context=g;e.count=0;return e}return{result:a,keyPrefix:b,func:c,
context:g,count:0}}function ka(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>C.length&&C.push(a)}function O(a,b,c,g){var e=typeof a;if("undefined"===e||"boolean"===e)a=null;var d=!1;if(null===a)d=!0;else switch(e){case "string":case "number":d=!0;break;case "object":switch(a.$$typeof){case x:case xa:d=!0}}if(d)return c(g,a,""===b?"."+P(a,0):b),1;d=0;b=""===b?".":b+":";if(Array.isArray(a))for(var f=0;f<a.length;f++){e=a[f];var h=b+P(e,f);d+=O(e,h,c,g)}else if(null===a||
"object"!==typeof a?h=null:(h=la&&a[la]||a["@@iterator"],h="function"===typeof h?h:null),"function"===typeof h)for(a=h.call(a),f=0;!(e=a.next()).done;)e=e.value,h=b+P(e,f++),d+=O(e,h,c,g);else if("object"===e)throw c=""+a,Error(r(31,"[object Object]"===c?"object with keys {"+Object.keys(a).join(", ")+"}":c,""));return d}function Q(a,b,c){return null==a?0:O(a,"",b,c)}function P(a,b){return"object"===typeof a&&null!==a&&null!=a.key?wa(a.key):b.toString(36)}function ya(a,b,c){a.func.call(a.context,b,
a.count++)}function za(a,b,c){var g=a.result,e=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?R(a,g,c,function(a){return a}):null!=a&&(N(a)&&(a=va(a,e+(!a.key||b&&b.key===a.key?"":(""+a.key).replace(ma,"$&/")+"/")+c)),g.push(a))}function R(a,b,c,g,e){var d="";null!=c&&(d=(""+c).replace(ma,"$&/")+"/");b=ja(b,d,g,e);Q(a,za,b);ka(b)}function t(){var a=na.current;if(null===a)throw Error(r(321));return a}function S(a,b){var c=a.length;a.push(b);a:for(;;){var g=c-1>>>1,e=a[g];if(void 0!==
e&&0<D(e,b))a[g]=b,a[c]=e,c=g;else break a}}function n(a){a=a[0];return void 0===a?null:a}function E(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var g=0,e=a.length;g<e;){var d=2*(g+1)-1,f=a[d],h=d+1,k=a[h];if(void 0!==f&&0>D(f,c))void 0!==k&&0>D(k,f)?(a[g]=k,a[h]=c,g=h):(a[g]=f,a[d]=c,g=d);else if(void 0!==k&&0>D(k,c))a[g]=k,a[h]=c,g=h;else break a}}return b}return null}function D(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}function F(a){for(var b=n(u);null!==
b;){if(null===b.callback)E(u);else if(b.startTime<=a)E(u),b.sortIndex=b.expirationTime,S(p,b);else break;b=n(u)}}function T(a){y=!1;F(a);if(!v)if(null!==n(p))v=!0,z(U);else{var b=n(u);null!==b&&G(T,b.startTime-a)}}function U(a,b){v=!1;y&&(y=!1,V());H=!0;var c=m;try{F(b);for(l=n(p);null!==l&&(!(l.expirationTime>b)||a&&!W());){var g=l.callback;if(null!==g){l.callback=null;m=l.priorityLevel;var e=g(l.expirationTime<=b);b=q();"function"===typeof e?l.callback=e:l===n(p)&&E(p);F(b)}else E(p);l=n(p)}if(null!==
l)var d=!0;else{var f=n(u);null!==f&&G(T,f.startTime-b);d=!1}return d}finally{l=null,m=c,H=!1}}function oa(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var f="function"===typeof Symbol&&Symbol.for,x=f?Symbol.for("react.element"):60103,xa=f?Symbol.for("react.portal"):60106,Aa=f?Symbol.for("react.fragment"):60107,Ba=f?Symbol.for("react.strict_mode"):60108,Ca=f?Symbol.for("react.profiler"):60114,Da=f?Symbol.for("react.provider"):60109,
Ea=f?Symbol.for("react.context"):60110,Fa=f?Symbol.for("react.forward_ref"):60112,Ga=f?Symbol.for("react.suspense"):60113,Ha=f?Symbol.for("react.memo"):60115,Ia=f?Symbol.for("react.lazy"):60116,la="function"===typeof Symbol&&Symbol.iterator,pa=Object.getOwnPropertySymbols,Ja=Object.prototype.hasOwnProperty,Ka=Object.prototype.propertyIsEnumerable,I=function(){try{if(!Object.assign)return!1;var a=new String("abc");a[5]="de";if("5"===Object.getOwnPropertyNames(a)[0])return!1;var b={};for(a=0;10>a;a++)b["_"+
String.fromCharCode(a)]=a;if("0123456789"!==Object.getOwnPropertyNames(b).map(function(a){return b[a]}).join(""))return!1;var c={};"abcdefghijklmnopqrst".split("").forEach(function(a){c[a]=a});return"abcdefghijklmnopqrst"!==Object.keys(Object.assign({},c)).join("")?!1:!0}catch(g){return!1}}()?Object.assign:function(a,b){if(null===a||void 0===a)throw new TypeError("Object.assign cannot be called with null or undefined");var c=Object(a);for(var g,e=1;e<arguments.length;e++){var d=Object(arguments[e]);
for(var f in d)Ja.call(d,f)&&(c[f]=d[f]);if(pa){g=pa(d);for(var h=0;h<g.length;h++)Ka.call(d,g[h])&&(c[g[h]]=d[g[h]])}}return c},ca={isMounted:function(a){return!1},enqueueForceUpdate:function(a,b,c){},enqueueReplaceState:function(a,b,c,d){},enqueueSetState:function(a,b,c,d){}},ba={};w.prototype.isReactComponent={};w.prototype.setState=function(a,b){if("object"!==typeof a&&"function"!==typeof a&&null!=a)throw Error(r(85));this.updater.enqueueSetState(this,a,b,"setState")};w.prototype.forceUpdate=
function(a){this.updater.enqueueForceUpdate(this,a,"forceUpdate")};da.prototype=w.prototype;f=L.prototype=new da;f.constructor=L;I(f,w.prototype);f.isPureReactComponent=!0;var M={current:null},ha=Object.prototype.hasOwnProperty,ia={key:!0,ref:!0,__self:!0,__source:!0},ma=/\/+/g,C=[],na={current:null},X;if("undefined"===typeof window||"function"!==typeof MessageChannel){var A=null,qa=null,ra=function(){if(null!==A)try{var a=q();A(!0,a);A=null}catch(b){throw setTimeout(ra,0),b;}},La=Date.now();var q=
function(){return Date.now()-La};var z=function(a){null!==A?setTimeout(z,0,a):(A=a,setTimeout(ra,0))};var G=function(a,b){qa=setTimeout(a,b)};var V=function(){clearTimeout(qa)};var W=function(){return!1};f=X=function(){}}else{var Y=window.performance,sa=window.Date,Ma=window.setTimeout,Na=window.clearTimeout;"undefined"!==typeof console&&(f=window.cancelAnimationFrame,"function"!==typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),
"function"!==typeof f&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));if("object"===typeof Y&&"function"===typeof Y.now)q=function(){return Y.now()};else{var Oa=sa.now();q=function(){return sa.now()-Oa}}var J=!1,K=null,Z=-1,ta=5,ua=0;W=function(){return q()>=ua};f=function(){};X=function(a){0>a||125<a?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):
ta=0<a?Math.floor(1E3/a):5};var B=new MessageChannel,aa=B.port2;B.port1.onmessage=function(){if(null!==K){var a=q();ua=a+ta;try{K(!0,a)?aa.postMessage(null):(J=!1,K=null)}catch(b){throw aa.postMessage(null),b;}}else J=!1};z=function(a){K=a;J||(J=!0,aa.postMessage(null))};G=function(a,b){Z=Ma(function(){a(q())},b)};V=function(){Na(Z);Z=-1}}var p=[],u=[],Pa=1,l=null,m=3,H=!1,v=!1,y=!1,Qa=0;B={ReactCurrentDispatcher:na,ReactCurrentOwner:M,IsSomeRendererActing:{current:!1},assign:I};I(B,{Scheduler:{__proto__:null,
unstable_ImmediatePriority:1,unstable_UserBlockingPriority:2,unstable_NormalPriority:3,unstable_IdlePriority:5,unstable_LowPriority:4,unstable_runWithPriority:function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=m;m=a;try{return b()}finally{m=c}},unstable_next:function(a){switch(m){case 1:case 2:case 3:var b=3;break;default:b=m}var c=m;m=b;try{return a()}finally{m=c}},unstable_scheduleCallback:function(a,b,c){var d=q();if("object"===typeof c&&null!==c){var e=c.delay;
e="number"===typeof e&&0<e?d+e:d;c="number"===typeof c.timeout?c.timeout:oa(a)}else c=oa(a),e=d;c=e+c;a={id:Pa++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,S(u,a),null===n(p)&&a===n(u)&&(y?V():y=!0,G(T,e-d))):(a.sortIndex=c,S(p,a),v||H||(v=!0,z(U)));return a},unstable_cancelCallback:function(a){a.callback=null},unstable_wrapCallback:function(a){var b=m;return function(){var c=m;m=b;try{return a.apply(this,arguments)}finally{m=c}}},unstable_getCurrentPriorityLevel:function(){return m},
unstable_shouldYield:function(){var a=q();F(a);var b=n(p);return b!==l&&null!==l&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<l.expirationTime||W()},unstable_requestPaint:f,unstable_continueExecution:function(){v||H||(v=!0,z(U))},unstable_pauseExecution:function(){},unstable_getFirstCallbackNode:function(){return n(p)},get unstable_now(){return q},get unstable_forceFrameRate(){return X},unstable_Profiling:null},SchedulerTracing:{__proto__:null,__interactionsRef:null,__subscriberRef:null,
unstable_clear:function(a){return a()},unstable_getCurrent:function(){return null},unstable_getThreadID:function(){return++Qa},unstable_trace:function(a,b,c){return c()},unstable_wrap:function(a){return a},unstable_subscribe:function(a){},unstable_unsubscribe:function(a){}}});d.Children={map:function(a,b,c){if(null==a)return a;var d=[];R(a,d,null,b,c);return d},forEach:function(a,b,c){if(null==a)return a;b=ja(null,null,b,c);Q(a,ya,b);ka(b)},count:function(a){return Q(a,function(){return null},null)},
toArray:function(a){var b=[];R(a,b,null,function(a){return a});return b},only:function(a){if(!N(a))throw Error(r(143));return a}};d.Component=w;d.Fragment=Aa;d.Profiler=Ca;d.PureComponent=L;d.StrictMode=Ba;d.Suspense=Ga;d.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=B;d.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(r(267,a));var d=I({},a.props),e=a.key,f=a.ref,m=a._owner;if(null!=b){void 0!==b.ref&&(f=b.ref,m=M.current);void 0!==b.key&&(e=""+b.key);if(a.type&&a.type.defaultProps)var h=
a.type.defaultProps;for(k in b)ha.call(b,k)&&!ia.hasOwnProperty(k)&&(d[k]=void 0===b[k]&&void 0!==h?h[k]:b[k])}var k=arguments.length-2;if(1===k)d.children=c;else if(1<k){h=Array(k);for(var l=0;l<k;l++)h[l]=arguments[l+2];d.children=h}return{$$typeof:x,type:a.type,key:e,ref:f,props:d,_owner:m}};d.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:Ea,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:Da,_context:a};return a.Consumer=
a};d.createElement=ea;d.createFactory=function(a){var b=ea.bind(null,a);b.type=a;return b};d.createRef=function(){return{current:null}};d.forwardRef=function(a){return{$$typeof:Fa,render:a}};d.isValidElement=N;d.lazy=function(a){return{$$typeof:Ia,_ctor:a,_status:-1,_result:null}};d.memo=function(a,b){return{$$typeof:Ha,type:a,compare:void 0===b?null:b}};d.useCallback=function(a,b){return t().useCallback(a,b)};d.useContext=function(a,b){return t().useContext(a,b)};d.useDebugValue=function(a,b){};
d.useEffect=function(a,b){return t().useEffect(a,b)};d.useImperativeHandle=function(a,b,c){return t().useImperativeHandle(a,b,c)};d.useLayoutEffect=function(a,b){return t().useLayoutEffect(a,b)};d.useMemo=function(a,b){return t().useMemo(a,b)};d.useReducer=function(a,b,c){return t().useReducer(a,b,c)};d.useRef=function(a){return t().useRef(a)};d.useState=function(a){return t().useState(a)};d.version="16.14.0"});

3
public/katex/katex.min.css vendored Executable file → Normal file

File diff suppressed because one or more lines are too long

7
public/katex/katex.min.js vendored Executable file → Normal file

File diff suppressed because one or more lines are too long

View File

@ -33,7 +33,13 @@
}
/* md样式 */
.editormd-fullscreen{
z-index: 9999;
}
.editormd-menu>li:last-child{
float: right;
}
/* 控制md编辑器列行的宽度
codermirror maybeUpdateLineNumberWidth方法
*/
@ -60,8 +66,13 @@ body {
.ant-progress-textno {
color: #f5222d;
}
.CodeMirror pre.CodeMirror-line{
font-size: 16px!important;
.CodeMirror .CodeMirror-lines pre.CodeMirror-line{
font-size: 16px;
line-height: 20px;
font-family:"PingFang SC", "Segoe UI", Helvetica, Arial, "Apple Color Emoji", SimHei, SimSun, sans-serif, "Microsoft YaHei";
}
.react-codemirror2 .CodeMirror .CodeMirror-lines pre.CodeMirror-line{
font-size: 12px;
}
/* md多空格 */
.markdown-body p {
@ -88,11 +99,14 @@ body {
border-left: 1px solid rgb(221, 221, 221);
/* 某些情况下被cm盖住了 */
z-index: 99;
padding:8px 8px 50px;
padding: 0 8px;
}
.editormd-preview .markdown-body{
padding:0px !important;
}
.editormd-preview{
width: 50%!important;
}
/* 图片点击放大的场景,隐藏图片链接 */
.editormd-image-click-expand .editormd-image-dialog {
@ -109,7 +123,6 @@ body {
padding: 0 12px;
}
/* antd扩展 */
.formItemInline.ant-form-item {
display: flex;

File diff suppressed because it is too large Load Diff

View File

@ -32,11 +32,12 @@ export function initAxiosInterceptors(props) {
// 判断网络是否连接
initOnlineOfflineListener();
var proxy = "https://testforgeplus.trustie.net";
// var proxy = "https://testforgeplus.trustie.net";
var proxy = "http://localhost:3001";
//响应前的设置
axios.interceptors.request.use(
config => {
if(config.url.indexOf("http") !== -1) {
if(config.url.substr(0, 4) === "http") {
return config
}
requestProxy(config);
@ -68,6 +69,8 @@ export function initAxiosInterceptors(props) {
if (response.data.status === -1) {
if (window.location.pathname.startsWith('/tasks/')) {
props.showSnackbar(response.data.message || '服务器异常,请联系管理员。')
} else if(window.location.pathname.startsWith('/login') || window.location.pathname.startsWith('/register') || window.location.pathname.startsWith('/resetPassword')) {
return response;
} else {
notification.open({
message: "提示",
@ -81,13 +84,23 @@ export function initAxiosInterceptors(props) {
}
if (response.data.status === 403 || response.data.status === "403") {
locationurl('/403');
// locationurl('/403');
let responseURL = response.request ? response.request.responseURL:'';
if( window.location.pathname.includes('/invite') && (responseURL.includes('/simple.json')||responseURL.includes('/detail.json')||responseURL.includes('/menu_list.json'))){
}else{
locationurl('/403');
}
}
if (response.data.status === 404) {
let responseURL = response.request ? response.request.responseURL:'';
// 组织和个人的拥有情况404不跳转
if (responseURL.indexOf('/api/users/') === -1 && responseURL.indexOf('/api/organizations/') === -1 ) {
locationurl('/nopage');
// 邀请页面不进行404跳转
if( window.location.pathname.includes('/invite') && (responseURL.includes('/simple.json')||responseURL.includes('/detail.json')||responseURL.includes('/menu_list.json'))){
}else{
locationurl('/nopage');
}
}
}

View File

@ -118,7 +118,7 @@ export function timeAgo(backDate) {
var days = Math.floor(time / (1000 * 60 * 60 * 24));
var hours = Math.floor((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((time % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((time % (1000 * 60 * 60)) / 1000);
// var seconds = Math.floor((time % (1000 * 60 * 60)) / 1000);
if (time <= 0) {
return "刚刚";
}
@ -129,10 +129,10 @@ export function timeAgo(backDate) {
return hours + "小时前";
}
if (minutes) {
return minutes + "分前";
}
if (seconds) {
return seconds + "秒前";
return minutes + "分钟前";
}
// if (seconds) {
// return seconds + "秒前";
// }
return "刚刚";
}

View File

@ -26,3 +26,17 @@ export function IEVersion(){
return -1;//不是ie浏览器
}
}
export function windowsOrMac(){
let agent = navigator.userAgent.toLowerCase();
let isMac = /macintosh|mac os x/i.test(navigator.userAgent);
if(agent.indexOf("win32") >= 0 || agent.indexOf("wow32") >= 0){
return 'win32';
}
if(agent.indexOf("win64") >= 0 || agent.indexOf("wow64") >= 0){
return 'win64';
}
if(isMac){
return 'mac';
}
}

View File

@ -11,13 +11,28 @@ export function getImageUrl(path) {
// https://www.educoder.net
// https://testbdweb.trustie.net
// const local = 'http://localhost:3000'
path && !path.startsWith('/') && !path.startsWith('http') && (path = '/'.concat(path));
const local = 'https://testforgeplus.trustie.net';
if (isDev) {
return `${local}/${path}`
return `${local}${path}`
}
return `${path}`;
}
export function getImageUrlAbsolute(path) {
// https://www.educoder.net
// https://testbdweb.trustie.net
// const local = 'http://localhost:3000'
path && !path.startsWith('/') && !path.startsWith('http') && (path = '/'.concat(path));
const local = 'https://testforgeplus.trustie.net';
const prod = window.location.origin;
if (isDev) {
return `${local}${path}`
}else{
return `${prod}${path}`;
}
}
export function numFormat(num, digits){
let d = digits || 1;
var si = [
@ -250,3 +265,36 @@ export function publicSearchs(Placeholder,onSearch,onInputs,onChanges,loadings)
allowClear={true}
></Search>)
}
export function turnbar(str){
let s = str;
if(s && s.length>0){
if(s.indexOf("%")>-1){
s = s.replaceAll('%','_25');
}
if(s.indexOf("#")>-1){
s = s.replaceAll('#','%23');
}
if(s.indexOf("/")>-1){
s = s.replaceAll('/','%2F');
}
}
return s;
}
export function returnbar(str){
let s = str;
if(s && s.length>0){
if(str.indexOf("_25")>-1){
s = s.replaceAll('_25','%');
}
if(s.indexOf("%23")>-1){
s = s.replaceAll('%23','#');
}
if(s.indexOf("%2F")>-1){
s = s.replaceAll('%2F','/');
}
}
return s;
}

View File

@ -4,9 +4,10 @@
export {
getUploadLogoActionUrl as getUploadLogoActionUrl,numFormat as numFormat,
getImageUrl as getImageUrl,getImage as getImage, getmyUrl as getmyUrl, getRandomNumber as getRandomNumber, getUrl as getUrl, publicSearchs as publicSearchs, getRandomcode as getRandomcode, getUrlmys as getUrlmys, getUrl2 as getUrl2, setImagesUrl as setImagesUrl
getImageUrl as getImageUrl,getImageUrlAbsolute as getImageUrlAbsolute,getImage as getImage, getmyUrl as getmyUrl, getRandomNumber as getRandomNumber, getUrl as getUrl, publicSearchs as publicSearchs, getRandomcode as getRandomcode, getUrlmys as getUrlmys, getUrl2 as getUrl2, setImagesUrl as setImagesUrl
, getUploadActionUrl as getUploadActionUrl, getUploadActionUrltwo as getUploadActionUrltwo, getUploadActionUrlthree as getUploadActionUrlthree, getUploadActionUrlOfAuth as getUploadActionUrlOfAuth
, getTaskUrlById as getTaskUrlById, TEST_HOST, htmlEncode as htmlEncode, getupload_git_file as getupload_git_file, getcdnImageUrl as getcdnImageUrl
, getTaskUrlById as getTaskUrlById, TEST_HOST, htmlEncode as htmlEncode, getupload_git_file as getupload_git_file, getcdnImageUrl as getcdnImageUrl,
turnbar,returnbar
} from './UrlTool';
export { setmiyah as setmiyah } from './Component';
@ -77,3 +78,5 @@ export { default as ImageLayer2 } from './hooks/ImageLayer2'
// 外部
export { CNotificationHOC as CNotificationHOC } from '../modules/courses/common/CNotificationHOC'
export { IEVersion as IEVersion , windowsOrMac as windowsOrMac} from './IEVersion'

View File

@ -155,7 +155,7 @@ renderer.heading = function (text, level, raw) {
level: level,
text: text
})
return '<h' + level + ' id="' + anchor + '">' + text + '</h' + level + '>'
return '<h' + level + ' id="' + anchor + '" class="markdown_anchors"><a href="#'+anchor+'" class="anchors"><i class="iconfont icon-lianjieicon font-14"></i></a>' + text + '</h' + level + '>'
}
marked.setOptions({
silent: true,

View File

@ -0,0 +1,117 @@
/* eslint-disable react/jsx-no-duplicate-props */
import React, { useState } from 'react';
import * as ReactDOM from 'react-dom';
import { Modal, Button } from 'antd';
import './index.scss';
InitModal.defaultProps = {
okText: '确认', //
cancelText: '取消', //
className: '', //
inputId: 'copyText', //ID
};
// 使
export default function DelModal(props) {
renderModal({ ...props, type: 'delete' })
}
// 使
export function Confirm(props) {
renderModal({ ...props, type: 'confirm' })
}
function renderModal(props) {
const { type, afterClose } = props;
const div = document.createElement('div');
document.body.appendChild(div);
function destroy() {
afterClose && afterClose();
const unmountResult = ReactDOM.unmountComponentAtNode(div);
if (unmountResult && div.parentNode) {
div.parentNode.removeChild(div);
}
}
function modalType(type) {
if (type === 'delete') {
return <InitModal
title="删除"
contentTitle="确定要删除吗?"
okText="确认删除"
{...props}
afterClose={destroy}
contentTitle={<React.Fragment>
<i className="red-circle iconfont icon-shanchu_tc_icon mr3"></i>
{props.contentTitle}
</React.Fragment>}
/>
} else if (type === 'confirm') {
return <InitModal title="选择" afterClose={destroy} {...props} />
} else {
return <InitModal title="选择" afterClose={destroy} {...props} />
}
}
function render() {
setTimeout(() => {
ReactDOM.render(
modalType(type),
div,
);
});
}
render();
}
//
function InitModal({
onCancel,
onOk,
title,
contentTitle,
content,
okText,
cancelText,
afterClose,
className,
}) {
const [visible, setVisible] = useState(true);
function onCancelModal() {
setVisible(false);
onCancel && onCancel()
}
function onSuccess() {
setVisible(false);
onOk && onOk();
}
return (
<Modal
visible={visible}
onCancel={onCancelModal}
afterClose={afterClose}
title={title}
className={`myself-modal ${className}`}
centered
footer={[
<Button type="default" key="back" onClick={onCancelModal}>
{cancelText}
</Button>,
<Button className="foot-submit" key="submit" onClick={onSuccess}>
{okText}
</Button>,
]}
>
<div>
{contentTitle && <p className="content-title">{contentTitle}</p>}
<p className="content-descibe">{content}</p>
</div>
</Modal>
)
}

View File

@ -0,0 +1,63 @@
.myself-modal {
.ant-modal-header {
padding: 9px 24px;
background: #f8f8f8;
border-bottom: 1px solid #eee;
}
.ant-modal-title {
text-align: left;
}
.ant-modal-close {
top: 0px !important;
}
.ant-modal-close-x {
font-size: 24px;
}
.ant-modal-body {
text-align: center;
}
.content-title {
display: flex;
justify-content: center;
align-items: center;
margin: 2rem 0 1rem !important;
font-size: 16px;
color: #333;
letter-spacing: 0;
line-height: 29px;
font-weight: 400;
}
.red-circle {
align-self: flex-start;
color: #ca0002;
font-size: 1.5rem !important;
}
.content-descibe {
font-size: 14px;
color: #666;
line-height: 33px;
font-weight: 400;
}
.ant-modal-footer {
padding: 2rem 0;
text-align: center;
border: 0;
.ant-btn {
width: 6rem;
}
}
.foot-submit {
margin-left: 3rem;
color: #df0002;
&:hover {
border-color: #df0002;
}
}
.ant-btn-default:hover,
.ant-btn-default:active,
.ant-btn-default:focus {
background: #f3f4f6;
color: #333;
border-color: #d0d0d0;
}
}

View File

@ -3,10 +3,12 @@ import 'katex/dist/katex.min.css'
import marked, { getTocContent, cleanToc, getMathExpressions, resetMathExpressions } from '../common/marked';
import 'code-prettify'
import dompurify from 'dompurify';
import { getEmoji } from '../forge/Main/emoji';
import { renderToString } from 'katex'
const preRegex = /<pre[^>]*>/g
const preRegex = /<pre[^>]*>/g;
const strRegexSub = /:([a-zA-Z_]+):/g;
function _unescape(str) {
let div = document.createElement('div')
div.innerHTML = str
@ -29,8 +31,16 @@ export default ({
rs = rs.replace("<p>[TOC]</p>", getTocContent())
cleanToc()
}
// emoji
let matchStr = str.match(strRegexSub);
if(matchStr && matchStr.length>0){
for(var i=0;i < matchStr.length;i++){
rs = rs.replace(matchStr[i],getEmoji(matchStr[i]));
}
}
rs = rs.replace(/(__special_katext_id_\d+__)/g, (_match, capture) => {
const { type, expression } = math_expressions[capture]
const { type, expression } = math_expressions[capture];
return renderToString(_unescape(expression) || '', { displayMode: type === 'block', throwOnError: false, output: 'html' })
})
rs = rs.replace(/▁/g, "▁▁▁")

View File

@ -16,14 +16,14 @@ function Index(props){
const [ fileList , setFileList ] = useState(undefined);
const [ editOpration , setEditOpration ] = useState(false);
const { owner , projectsId } = props.match.params;
const { isManager , isDeveloper , current_user } = props;
const { isManager , isDeveloper , current_user, projectDetail } = props;
useEffect(()=>{
if(owner && projectsId){
if(owner && projectsId && projectDetail){
Init();
document.title = `主页-${projectDetail.author.name}/${projectDetail.name}`;
}
},[owner,projectsId])
},[owner,projectsId, projectDetail])
useEffect(()=>{
if( (current_user && current_user.login) && (isManager === true || isDeveloper === true)){

View File

@ -0,0 +1,281 @@
import React , { useEffect , useState } from 'react';
import { TPMIndexHOC} from '../../modules/tpm/TPMIndexHOC';
import { Timeline, Carousel } from 'antd';
import { getImageUrl } from 'educoder';
import CountUp from 'react-countup';
import axios from 'axios';
import './AboutUs.scss';
import subititle from './image/subtitle.png';
import achievements from './image/achievements.png';
import earth from './image/earth.png';
import computer from './image/computer.png';
import position from './image/position.png';
import quan1 from './image/quan1.png';
import quan2 from './image/quan2.png';
import fun1 from './image/fun1.png';
import fun2 from './image/fun2.png';
import fun3 from './image/fun3.png';
import fun4 from './image/fun4.png';
import fun5 from './image/fun5.png';
function AboutUs(){
const countUpProps = {
redraw: true,
start: 0,
duration: 2,
suffix: "+"
};
const [selectTitle, setSelectTitle] = useState(1);
//
const [flush, setFlush] = useState(false);
//
const [units, setUnits] = useState([]);
useEffect(()=>{
document.title="关于我们";
//
window.addEventListener('scroll', scrollListener);
//topics.json
axios.get(`/topics.json`, { params: { topic_type: "cooperator", limit: 30, group_size: 5}}).then(response=>{
response && setUnits(response.data.topics);
});
return ()=>window.removeEventListener('scroll', scrollListener);
},[])
function scrollListener(e){
const top = e.srcElement.scrollingElement.scrollTop;
//
top < 555 && setSelectTitle(1);
if (top > 2800 && top< 4000){
setFlush(true);
}else{
setFlush(false);
}
}
return(
<div className="aboutUs_body">
<div className="aboutUs_head df">
<p className="head_title">GitLink 确实开源</p>
<p className="head_cont font-20 mt36">新一代开源创新服务平台让您的创意在这里释放</p>
</div>
<div className="aboutUs_title df">
<a className={selectTitle === 1 ? "active" : ""} href="#value1" onClick={() => setSelectTitle(1)}>关于我们</a>
<a className={selectTitle === 2 ? "active" : ""} href="#value2" onClick={() => setSelectTitle(2)}>平台统计</a>
<a className={selectTitle === 3 ? "active" : ""} href="#value3" onClick={() => setSelectTitle(3)}>加入我们</a>
<a className={selectTitle === 4 ? "active" : ""} href="#value4" onClick={() => setSelectTitle(4)}>合作单位</a>
</div>
<div className="aboutUs">
<a id="value1" className="mao"></a>
{/* 关于我们 */}
<div className="about_us">
<div className="au_bg">
<div className="au_title">关于我们</div>
{/* 简介 */}
<div className="au_cont subt df">
<div className="cont1_introduction">
<p className="subtitle">简介</p>
<div className="font-16">GitLink确实开源是CCF官方指定的开源创新服务平台旨在以为开源创新服务为使命成为开源创新的汇聚地为愿景秉承创新开放协作共享的价值观致力于为大规模开源开放协同创新助力赋能打造创新成果孵化和新工科人才培养的开源创新生态</div>
</div>
<img src={subititle} className="subtitleImg"></img>
</div>
</div>
{/* 确实开源 一脉传承 */}
<div className="au_cont inherit pl30">
<p className="subtitle">确实开源&nbsp;&nbsp;一脉传承</p>
<div>本世纪以来随着软件创新需求和应用规模的飞速增长软件开发队伍开发资源可信评估呈现出规模化开放化持续化的新特点软件开发活动面临协同难复用难评估难的制约经典的工程化软件开发方法面临严峻挑战严重影响了软件开发效率和质量的提升在此背景下国防科技大学联合国内多所知名高校科研机构和软件企业围绕开源创新开展了持续性探索构建形成了以Trustie确实为代表的一系列开源创新服务基础设施自2006年以来Trustie经过三个阶段的演化发展于2021年迎来全面升级在中国计算机学会CCF的带领指导下共同推进产学研用深度融合共筑新一代开源创新服务平台GitLink</div>
<div className="inherit_items">
<img src={quan1} className="quan1Img"/>
<img src={quan2} className="quan2Img"/>
<Timeline>
<Timeline.Item dot={<i className="iconfont icon-a-yuanquan2x font-20"></i>}>
<div className="timeline_cont">
<p>Trustie 1.0阶段2006-2014</p>
<div>国防科技大学北京大学北京航空航天大学中国科学院软件研究所等单位合作开展了基于网络的软件开发群体化方法与技术研究揭示了以大众化协同开发开放式资源共享持续性可信评估为核心的互联网大规模协同机理与软件开发工程化方法相结合系统地提出了基于网络的软件开发群体化方法并于2008年发布了可信的国家软件资源共享与协同生产环境简称Trustie v1.0中文简称确实重点解决大规模软件协同开发可信评估运行监控和持续演化等问题</div>
</div>
</Timeline.Item>
<Timeline.Item dot={<i className="iconfont icon-a-yuanquan2x"></i>}>
<div className="timeline_cont">
<p>Trustie 2.0阶段2014-2020</p>
<div>在科技部项目的持续资助下国防科技大学联合国内多所知名高校科研机构和软件企业致力于系统研究新型软件开发方法为开源生态建设提供方法指导和实践指南支撑科教领域原始创新成果的开源孵化和开源人才培养并于2014年发布了面向软件创新和教育的开源社区Trustie v2.0重点探索协作开发社区知识分享社区应用服务社区等大外围软件涉众的联接以及基于开源大数据的智能化开发等技术</div>
</div>
</Timeline.Item>
<Timeline.Item dot={<i className="iconfont icon-a-yuanquan2x"></i>}>
<div className="timeline_cont">
<p>Trustie 3.0阶段 (2020年至今)</p>
<div>Trustie在已有的技术积累基础上进一步联合国内高等院校科研机构产业企业和开源组织等在中国计算机学会CCF的带领指导下共同推进产学研用深度融合致力于联接互联网海量群智资源探索开源创新成果开放与共享开源生态协作与共建的新模式和新方法升级形成了新一代开源创新服务平台GitLink力图破解软件开发群智范式背后的本质机理建立面向大外围开放创新的群智激发与汇聚关键机制实现面向大规模软件涉众的稳态群智激发与汇聚</div>
</div>
</Timeline.Item>
</Timeline>
</div>
</div>
{/* 特色功能 确实给力 */}
<div className="feature_function_bg">
<div className="au_cont">
<p className="au_title">特色功能&nbsp;&nbsp;确实给力</p>
<table><tr>
<td>
<div className="feat_func_cont">
<div className="feat_fun_img"><img src={fun1} /></div>
<div>
<p>分布式协作开发</p>
<div>支持在线文件编辑&nbsp;&nbsp;<br />分支管理贡献统计<br />仓库复刻合并请求&nbsp;&nbsp;&nbsp;</div>
</div>
</div>
</td>
<td>
<div className="feat_func_cont">
<div className="feat_fun_img"><img src={fun2} /></div>
<div>
<p>一站式过程管理</p>
<div>支持疑修里程碑&nbsp;&nbsp;&nbsp;<br />通知提醒标签归档Wiki文档组织管理&nbsp;&nbsp;&nbsp;</div>
</div>
</div>
</td>
<td>
<div className="feat_func_cont">
<div className="feat_fun_img"><img src={fun3} /></div>
<div>
<p>高效流水线运维</p>
<div>提供轻量级工作流引擎<br />并支持自定义配置&nbsp;&nbsp;&nbsp;<br/>静态扫描制品构建&nbsp;&nbsp;&nbsp;</div>
</div>
</div>
</td>
<td>
<div className="feat_func_cont">
<div className="feat_fun_img"><img src={fun4} /></div>
<div>
<p>多层次代码分析</p>
<div>支持代码溯源分析&nbsp;&nbsp;&nbsp;<br />许可证风险分析开源漏洞检测和加固建议&nbsp;&nbsp;&nbsp;</div>
</div>
</div>
</td>
<td>
<div className="feat_func_cont">
<div className="feat_fun_img"><img src={fun5} /></div>
<div>
<p>多维度用户画像</p>
<div>支持开发活动统计&nbsp;&nbsp;&nbsp;<br />贡献日历能力建模<br />角色与专业定位分析&nbsp;&nbsp;&nbsp;</div>
</div>
</div>
</td>
</tr></table>
</div>
</div>
{/* 成果作用,确实有效 */}
<div className="au_cont df pl30">
<img src={achievements} className="achievementsImg"></img>
<div className="cont1_achievements">
<p className="subtitle ml0">成果作用&nbsp;&nbsp;确实有效</p>
<div>GitLink确实开源为我国创新型软件产业发展提供了关键技术支撑和实践指南为各类开源创新活动以及我国军地开源社区建设提供了有效支撑为推动开源创新发展和创新人才培养发挥了重要作用<br/>通过10多年的发展GitLink平台显著提升了大型软件企业软件生产能力支持了我国航空航天国防等多个关键领域的可信软件生产为包括新一代人工智能启智社区ARM绿色计算社区科技部云计算与大数据木兰社区科技委可控开源创造行动红山社区等的建设提供关键技术支撑为我国关键领域开源社区生态建设发挥了重要作用</div>
</div>
</div>
</div>
{/* 平台统计 */}
<div className="about_us statistics">
<a id="value2" className="mao"></a>
<div className="au_title">平台统计</div>
<p>联接海量群智资源汇聚优秀开源组织孵化优质创新成果</p>
<img src={earth} className="earthImg"/>
<div className="statistics_cont df">
<div>
<CountUp {...countUpProps} start={0} end={50000} />
<p>开发者</p>
</div>
<div>
<CountUp {...countUpProps} end={1000} />
<p>组织</p>
</div>
<div>
<CountUp {...countUpProps} end={1400000} />
<p>仓库</p>
</div>
</div>
</div>
{/* 加入我们 */}
<div className="join_us_bg">
<a id="value3" className="mao"></a>
<div className="au_cont">
<div className="au_title">加入我们</div>
<p className="subtitle">探索你的未来</p>
<p>GitLink团队在寻找新的小伙伴期待着您的加入让我们一起为开源创新贡献力量</p>
<img src={computer} className="joinUsImg"/>
{/* 轮播图 */}
<Carousel autoplay easing="none">
<div className="df">
<div className="position">
<p className="df"><img src={position} /><span className="ml10">前端开发工程师</span></p>
<div>
1全日制本科及以上学历5年以上Web前端开发经验熟练使用GulpWebpack等构建工具<br />
2熟练掌握VUE或React编程有前端模块化组件化自动化开发经验者优先<br />
3精通jQueryAjaxJson等技术对VUENodeJs等技术有所涉及<br />
4熟悉前端开发技术(HTML5JSJSONXHTMLCSS3ES6)了解各项技术的相关标准并严格按照标准进行开发<br />
</div>
</div>
<div className="position right">
<p className="df"><img src={position} /><span className="ml10">后端开发工程师</span></p>
<div>
1全日制本科及以上学历计算机软件工程相关专业者优先<br />
23年以上Java开发相关经验扎实的Java编程基础参与过1个以上大/中型高并发高性能系统架构设计开发和调优<br />
3熟练掌握SpringSpringBootSpring MVCMyBatis等开源框架掌握MVC框架模式及BS架构<br />
4精通SQL熟练使用MySQLOracle等数据库并具有一定的SQL优化能力熟悉RedisMongoDB等常用NoSQL解决方案了解各自的优缺点以及使用场景者优先<br />
</div>
</div>
</div>
<div className="df">
<div className="position">
<p className="df"><img src={position} /><span className="ml10">软件测试工程师</span></p>
<div>
1熟悉主流开发技术框架具备软件工程的基本知识<br />
2熟练掌握各种测试理论和测试技术精通测试过程设计和用例设计方法<br />
3熟悉性能测试自动化测试安全测试其中一种或多种测试工具LoadRunnerJmeterSeleniumQTPRobotFirebugAppScanPyCharm等熟练运用工具从事过相关测试工作<br />
4熟悉掌握一种编程语言Java/Python/C++<br />
5熟悉Oracle/MySQL数据库并能熟练编写SQL语句熟练常用Linux命令<br />
6有整体质量意识测试管理经验<br />
</div>
</div>
<div className="position right">
<p className="df"><img src={position} /><span className="ml10">产品经理</span></p>
<div>
1计算机或相关专业本科以上学历3年以上工作经验<br />
2熟悉开源软件项目的管理流程了解软件需求的调研方法具备需求分析能力<br />
3能以专业的方式向客户提供技术咨询良好的方案设计能力和文字功底<br />
4具备良好的交流沟通和表达能力良好的方案演示和介绍技巧<br />
5了解互联网产品的基本思路及基础方法论能够基于数据提出产品优化策略<br />
6承受较强的工作压力强烈的团队合作意识与工作责任心<br />
7有良好人际交往能力工作积极主动自信心强有较强的学习能力<br />
</div>
</div>
</div>
</Carousel>
<p className="delivery">简历投递邮箱zengyt#csxjy.com.cn 曾先生 (@符号替换#)</p>
</div>
</div>
{/* 合作单位 */}
<div className="unit">
<a id="value4" className="mao"></a>
<div className="au_title">合作单位</div>
<table>
{units && units.map(group =>{
return (
<tr>
{group.map(item =>{
return(
<td><a href={item.url} target="_blank"><img src={getImageUrl(item.image)} className='unitImg' alt='合作单位'></img></a></td>
)
})}
</tr>
)
})}
</table>
</div>
</div>
</div>
)
}
export default TPMIndexHOC(AboutUs);

View File

@ -0,0 +1,342 @@
.aboutUs_body{
font-size: 16px;
color: #182332;
font-family: PingFangSC-Regular, PingFang SC;
& table{
text-align: center;
margin: 0 auto;
}
& .df{
display: flex;
justify-content: space-around;
align-items: center;
}
& .join_us_bg, .feature_function_bg, .feat_fun_img, .aboutUs_head{
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
& .mao{
position: relative;
top: -70px;
}
}
.aboutUs_head.df{
flex-direction: column;
justify-content: center;
height: 500px;
line-height: 500px;
background-image: url('./image/banner.png');
& p{
text-align: center;
}
& .head_title{
line-height: 50px;
font-size: 48px;
font-weight: 600;
background-image: -webkit-linear-gradient(bottom,#4CDBF5,#5AACFF);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
& .head_cont{
line-height: 39px;
color: #FFFFFF;
opacity: 0.9;
}
}
.aboutUs_title{
width: 800px;
height: 62px;
margin: 0 auto;
&>table{
width: 800px;
font-weight: 400;
}
& a.active{
color: #466AFF;
height: 62px;
line-height: 62px;
border-bottom: 2px solid;
}
}
.aboutUs{
& .au_title{
font-size: 38px;
font-weight: 500;
color: #1E1E1E;
text-align: center;
padding-top: 50px;
// line-height: 53px;
}
& .subtitle{
font-size: 20px;
font-weight: bold;
color: #000000;
margin-bottom: 23px !important;
}
}
.about_us{
// 关于我们
& .au_cont.df{
justify-content: space-between;
}
& .au_bg{ background: linear-gradient(180deg, #F3F9FF 0%, rgba(255, 255, 255, 0) 100%);}
& .cont1_introduction{
width: 472px;
&>div{
line-height: 34px;
}
}
& .cont1_achievements{
width: 581px;
& .subtitle.ml0{margin-left: 0;}
&>div{
font-size: 15px;
line-height: 36px;
}
}
& .subtitleImg{
width: 650px;
height: 330px;
}
& .achievementsImg{
width: 507px;
height: 384px;
}
//时间轴
& .inherit_items{
position: relative;
& .quan1Img{
width: 140px;
height: 167px;
position: absolute;
left: -290px;
top: 90px;
}
& .quan2Img{
width: 100px;
height: 120px;
position: absolute;
right: -170px;
bottom: 80px;
}
}
.inherit{
& .icon-a-yuanquan2x{
color: #466aff;
}
& .ant-timeline-item-tail{
border-left: 2px solid rgba(108, 134, 172, 0.42);
height: calc(100% - -30px);
}
& .ant-timeline-item:last-child .ant-timeline-item-tail{
display: block;
height: calc(100% - 18px);
}
& .ant-timeline-item-content{
margin: 0 0 -15px 18px;
}
}
.timeline_cont{
margin-left: 35px;
&>p{
font-size: 20px;
font-weight: 500;
color: #466AFF;
margin: 45px 0 30px !important;
}
&>div{
width: 980px;
padding: 20px 35px;
background: #F5F7FA;
font-size: 15px;
font-weight: 400;
color: #182332;
line-height: 33px;
&:after,&:before{
content: "";
position: absolute;
left: 21px;
top: 100px;
border-top: 10px solid transparent;
border-bottom: 10px solid transparent;
border-right: 14px solid #F5F7FA;
}
}
}
//特色功能 确实给力
& .feature_function_bg{
position: relative;
height: 630px;
background-image: url(./image/funBg.png);
& .au_cont p.au_title{
font-size: 30px;
padding: 50px 0 70px;
color: #FFFFFF;
opacity: 0.9;
}
& table{
position: relative;
background: none;
width: 1200px;}
& .funBg2 {
width: 1600px;
left: 50%;
margin-left: -800px;
position: absolute;
bottom: -15px;
}
}
& .feat_func_cont{
width: 200px;
& .feat_fun_img{
height: 205px;
line-height: 205px;
background-image: url('./image/funBg3.png');
&:hover{background-image: url('./image/funBg4.png');}
}
& img{ width: 175px;}
& p{
font-size: 18px;
font-weight: 500;
color: #FFFFFF;
line-height: 28px;
background-image: -webkit-linear-gradient(bottom,#4FFDFF,#0183FF);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
& div>div{
margin: 10px auto;
width: 142px;
font-size: 14px;
line-height: 28px;
color: #FFFFFF;
opacity: 0.76;
}
}
// 平台统计
&.statistics{
text-align: center;
background: linear-gradient(180deg, #ECF3FF 0%, #FFFFFF 100%);
height: 640px;
overflow: hidden;
position: relative;
& .statistics_cont{
width: 1014px;
height: 203px;
background: #FFFFFF;
opacity: 0.83;
position: absolute;
top: 230px;
left: 50%;
margin-left: -500px;
& span{
font-size: 48px;
font-weight: bold;
color: #1338D1;
}
& p{
width: 111px;
height: 38px;
line-height: 38px;
border: 1px solid #182332;
margin: 0 auto;
font-size: 22px;
color: #1E1E1E;
}
}
& .earthImg{
width: 1500px;
margin-top: -120px;
animation: moving 60s linear infinite;
}
@keyframes moving {
0% { transform: rotate(0deg);}
50% { transform: rotate(180deg);}
100% { transform: rotate(360deg);}
}
}
}
// 加入我们
.join_us_bg{
height: 710px;
margin-top: 40px;
background-image: url(./image/joinUs.png);
& .au_cont{position: relative;}
& .joinUsImg{
width: 260px;
height: 265px;
position: absolute;
top: 27px;
right: 10px;
}
& .df{
display: flex !important;
margin-top: 30px;
}
& .position{
width: 540px;
&.right{ margin-right: -30px;}
& p{
justify-content: flex-start;
height: 60px;
background: #253DA0;
line-height: 60px;
padding-left: 20px;
& img{width: 30px;}
& span{
font-weight: 500;
color: #FFFFFF;
line-height: 22px;
}
}
& div{
min-height: 306px;
font-size: 14px;
line-height: 34px;
padding: 20px;
background: #FFFFFF;}
}
& .ant-carousel .slick-dots-bottom{bottom: -30px;}
& .ant-carousel .slick-dots li button{
width: 12px;
height: 12px;
border-radius: 10px;
background: #466AFF;
}
& .delivery{
height: 60px;
line-height: 60px;
margin-left: 35px;
}
}
//合作单位
.unit{
margin-bottom: 60px;
& table{
width: 1200px;
height: 550px;
margin-top: 15px;
border-collapse: separate;
border-spacing: 10px 10px;
& td{
width: 224px;
height: 122px;
box-shadow: 0px 1px 8px 1px rgba(0, 0, 0, 0.06);
border-radius: 6px;
border: 2px solid #FFFFFF;
&:hover{ border: 1px solid #466AFF;}
}
.unitImg{
max-width: 90%;
max-height: 100%;
}
}
}
.au_cont{
width: 1200px;
margin: 50px auto;
&.pl30 .subtitle{ margin-left: -30px;}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 859 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

View File

@ -0,0 +1,38 @@
import React , { useState } from 'react';
import './index.scss';
import logo from './image/logo.png';
import { Menu } from 'antd';
import Bind from './bind';
import UnBind from './unbind';
function Index(props){
const [ key , setKey ] = useState("0");
// menu
function chooseMenuFunc(e){
setKey(e.key)
}
return(
<div className={"bodies"}>
<div className="logo">
<img src={logo} alt="" height="48px" />
</div>
<div className={"content"}>
<p>关联账号</p>
<div className="panels">
<Menu selectedKeys={[key]} mode={`horizontal`} className="panelsMenu" onClick={chooseMenuFunc}>
<Menu.Item key="0">已有账号进行绑定</Menu.Item>
<Menu.Item key="1">无账号注册并绑定</Menu.Item>
</Menu>
{
key === "0" ?
<Bind {...props}/>
:
<UnBind {...props}/>
}
</div>
</div>
</div>
)
}
export default Index;

103
src/forge/Account/bind.jsx Normal file
View File

@ -0,0 +1,103 @@
import React ,{ useState } from 'react';
import { Form , Input , Button } from 'antd';
import phone from './image/phone.svg';
import lock from "./image/lock.png";
import axios from 'axios';
import cookie from 'react-cookies';
const phonereg = /^([1][3456789])\d{9}$/
const emailreg = /^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/
function Bind(props){
const { form } = props;
const { getFieldDecorator , getFieldsValue } = form;
const [ bindFlag , setBindFlag] = useState(true);
const type = props.match.params.type;
//
function bindloginFunc(){
const {username, password } = getFieldsValue();
if(username && password){
var url = '/bind_user.json';
axios.post(url,{
username,password,type
}).then(result=>{
if(result && result.data.status === 0){
cookie.save("supplyphone",true);
cookie.save("login",result.data.login);
window.location.href = "/"+result.data.login;
}else{
props.showNotification(result.data.message);
}
})
}
}
function accountConfirm(r,v,c){
if(v){
const {password } = getFieldsValue();
if(!(phonereg.test(v) || emailreg.test(v))){
setBindFlag(true);
c(`请输入正确的手机号或邮箱地址`);
}else if(password){
setBindFlag(false);
}
}else{
c();
setBindFlag(true);
}
}
function psdConfirm(r,v,c){
if(v){
const { username } = getFieldsValue();
if(phonereg.test(username) || emailreg.test(username)){
setBindFlag(false);
}else{
setBindFlag(true);
}
}else{
c();
setBindFlag(true);
}
}
return(
<div>
<Form className="bind_form">
<Form.Item>
{getFieldDecorator('username',{
rules:[
{
required:true,
message:"请输入手机号或邮箱地址"
},
{
validator: (rule, value, callback) => { accountConfirm(rule, value, callback) }
}
],
validateTrigger:"onInput",
})(<Input className="account" addonBefore={<img src={phone} alt="" width="13px" />} size="large" placeholder="请输入手机号或邮箱地址"/>)}
</Form.Item>
<Form.Item>
{getFieldDecorator('password', {
rules: [
{
required:true,
message:"请输入登录密码"
},
{
validator: (rule, value, callback) => { psdConfirm(rule, value, callback) }
}
],
validateTrigger:"onInput",
})(
<Input.Password autoComplete="new-password" addonBefore={<img src={lock} alt="" width="13px" />} className="psd" size="large" placeholder="请输入登录密码" />,
)}
</Form.Item>
<Button type="primary" disabled={bindFlag} size="large" style={{width:"100%",marginTop:"40px"}} onClick={bindloginFunc}>
绑定并登录
</Button>
</Form>
</div>
)
}
export default Form.create({ name: 'Bind' })(Bind);

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="10.845" height="14.46" viewBox="0 0 10.845 14.46">
<path id="手机号" d="M129.807.994a.818.818,0,0,0-.813.813V12.652a.818.818,0,0,0,.813.813h7.23a.818.818,0,0,0,.813-.813V1.807a.818.818,0,0,0-.813-.813Zm0-.994h7.23a1.807,1.807,0,0,1,1.807,1.807V12.652a1.807,1.807,0,0,1-1.807,1.807h-7.23A1.807,1.807,0,0,1,128,12.652V1.807A1.807,1.807,0,0,1,129.807,0Zm2.35,10.845h2.53a.542.542,0,0,1,0,1.084h-2.53a.542.542,0,0,1,0-1.084Zm0,0" transform="translate(-128)" fill="#b6becc"/>
</svg>

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 B

View File

@ -0,0 +1,85 @@
.bodies{
height: 100vh;
width: 100%;
background-color: rgba(245, 248, 255, 1);
.logo{
width: 100%;
background-color: #fff;
padding:7px 26px;
}
.content{
padding-top: 50px;
margin:0px auto;
width: 570px;
&>p{
height:42px;
line-height:42px;
font-weight:400;
color:#000000;
font-size:30px;
margin-bottom: 32px!important;
text-align: center;
}
.panels{
background-color: #fff;
border-radius:6.6px;
padding:32px 42px;
.panelsMenu{
border-bottom: none!important;
margin-bottom: 36px!important;
.ant-menu-item{
padding: 0px;
margin-right: 60px!important;
}
}
.bind_form{
padding-bottom: 48px;
.has-error .ant-input:focus,.has-error .ant-input, .has-error .ant-input:hover{
border-color: #ff4d4f!important;
}
.ant-btn-primary[disabled]{
background-color:rgba(70, 106, 255,0.55);
color: #fff;
border:none
}
.ant-input-group-addon{
background-color: transparent;
}
.ant-input{
border-left: none;
background-color: #fff!important;
}
.ant-input:focus,.ant-input:hover{
border-right: 1px solid #ddd!important;
border-color: #ddd!important;
border-left: none!important;
}
.codeBut{
border:1px solid rgba(70, 106, 255, 1)!important;
span{
color: rgba(70, 106, 255, 1);
}
}
.codeBut.disable{
border:1px solid #ddd!important;
span{
color: #ddd;
}
}
.login_register_head{
display: flex;
justify-content: space-between;
align-items: center;
&>span:first-child{
font-size: 1.5em;
font-weight: 600;
color: #000000;
line-height: 1.5;
}
//注册页面的获取验证码输入框
.ant-btn{margin-left: 15px; }
}
}
}
}
}

View File

@ -0,0 +1,320 @@
import React ,{ useState , useRef } from 'react';
import { Form , Input , Button , message } from 'antd';
import user from "./image/user.png";
import lock from "./image/lock.png";
import shield from './image/shield.png';
import phone from './image/phone.svg';
import axios from 'axios';
import cookie from 'react-cookies';
import { setmiyah } from 'educoder';
const phonereg = /^([1][3456789])\d{9}$/
const emailreg = /^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/
function Bind(props){
const { form } = props;
const seconds = useRef();
let interval = undefined;
const { getFieldDecorator , getFieldsValue } = form;
const [ bindFlag , setBindFlag] = useState(true);
const [ captchaFlag , setCaptchaFlag ] = useState(true);
const [secondsStr, setSecondsStr] = useState(60);
const [ getCaptchaBut , setGetCaptchaBut ] = useState(true);
const type = props.match.params.type;
//username
function usernameConfirm(rule, value, callback){
value ? axios.post(`/accounts/check.json`, {
value: value,
type: 1
}).then(response => {
if(response){
if (response.data.status === -1) {
callback('该名称已经被使用');
} else {
const { captcha , password , confirm_password,username} = getFieldsValue();
if( captcha && password && confirm_password && (password === confirm_password) &&(phonereg.test(username) || emailreg.test(username)) ){
setBindFlag(false);
}
}
}
callback();
}):callback();
}
function accountConfirm(rule, value, callback){
if(value){
const { captcha , password , confirm_password,register_username} = getFieldsValue();
if(!(phonereg.test(value) || emailreg.test(value))){
setCaptchaFlag(true);
callback(`请输入正确的手机号或邮箱地址`);
}else{
axios.get(`/accounts/valid_email_and_phone.json`, {
params: {
login: value,
type: 1
}
}).then(response => {
if(response){
if (response.data.status === -2) {
callback(response.data.message);
} else {
setCaptchaFlag(false);
if(captcha && password && confirm_password && (password === confirm_password) && register_username){
setBindFlag(false);
}
}
callback();
}
})
}
}else{
setBindFlag(true);
callback();
}
}
function psdConfirm(r,v,c){
if(!v){
setBindFlag(true);
c('请输入登录密码');
}else if(/(?!.*\s)(?!^[\u4e00-\u9fa5]+$)^.{8,16}$/.test(v)){
const { username , captcha , confirm_password , register_username } = getFieldsValue();
if(register_username && (phonereg.test(username) || emailreg.test(username)) && captcha && confirm_password && (v=== confirm_password) ){
setBindFlag(false);
}else{
setBindFlag(true);
}
c()
}else{
if(v.length<8 || v.length>16){
setBindFlag(true);
c('密码长度为8-16个字符');
}else{
setBindFlag(true);
c('密码不能使用空格');
}
}
}
function captchaConfirm(r,v,c){
if(v){
const { username , password , confirm_password , register_username } = getFieldsValue();
if(register_username && (phonereg.test(username) || emailreg.test(username)) && password && confirm_password && (password ===confirm_password) ){
setBindFlag(false);
}else{
setBindFlag(true);
}
c();
}else{
c();
setBindFlag(true);
}
}
function repsdConfirm(r,v,c){
if(!v){
setBindFlag(true);
c("请重复输入登录密码");
}else if(/(?!.*\s)(?!^[\u4e00-\u9fa5]+$)^.{8,16}$/.test(v)){
const { username , password , register_username , captcha} = getFieldsValue();
if(v !== password){
c("两次输入的密码不一样");
}else if((phonereg.test(username) || emailreg.test(username)) && password && register_username && captcha){
setBindFlag(false);
}else{
setBindFlag(true);
}
c();
}else{
if(v.length<8 || v.length>16){
setBindFlag(true);
c('密码长度为8-16个字符');
}else{
setBindFlag(true);
c('密码不能使用空格');
}
}
if(v){
const { username , password , register_username , captcha} = getFieldsValue();
if(v !== password){
c("两次输入的密码不一样");
}else{
c();
}
if((phonereg.test(username) || emailreg.test(username)) && password && register_username && captcha){
setBindFlag(false);
}else{
setBindFlag(true);
}
c();
}else{
c();
}
}
//
function getCaptcha() {
const { username }= getFieldsValue();
if (username) {
//
setCaptchaFlag(true);
setGetCaptchaBut(false);
seconds.current = 60;
setSecondsStr(60);
!interval && clearInterval(interval);
interval = setInterval(() => {
if (seconds.current > 1) {
let oldSeconds = seconds.current;
seconds.current = oldSeconds - 1;
setSecondsStr(oldSeconds - 1);
} else {
clearInterval(interval);
//->
setCaptchaFlag(false);
setGetCaptchaBut(true);
}
}, 1000)
//
axios.get(`/accounts/get_verification_code.json`, {
params: {
login: username,
type: 1,
smscode: setmiyah(username),
}
}).then(response => {
if (response.data && response.data.status === 0) {
//
setGetCaptchaBut(false);
}
})
}
}
//
function bindRegFunc(){
form.validateFields((err, values) => {
if (!err) {
var url = '/accounts/register.json';
axios.post(url,{
namespace: values.register_username,
login: values.username,
password: values.password,
password_confirmation: values.confirm_password,
code: values.captcha,
type
}).then(response=>{
if(response.data && response.data.status === -6){
//
form.setFields({captcha: {value:values.captcha,errors:[new Error('验证码错误,请重新输入')]}});
}else if(response.data && response.data.status === 0){
//forge
cookie.save("supplyphone",true);
cookie.save("login",response.data.login);
window.location.href = "/"+values.register_username;
}
})
}
})
}
return(
<div>
<Form className="bind_form">
<Form.Item>
{getFieldDecorator('register_username',{
rules:[
{
required:true,
message:"请输入用户名"
},
{
pattern: /^[a-zA-Z]/,
message: "用户名必须以字母开头"
},
{
pattern: /[a-zA-Z0-9]$/,
message: "用户名只能使用英文字母和数字"
},
{
min: 4,
max: 15,
message: "用户名长度为4到15个字符"
},
{
validator: (rule, value, callback) => { usernameConfirm(rule, value, callback) }
}
],
validateTrigger:"onBlur",
validateFirst: true,
})(<Input placeholder="请输入4-15位用户名以字母开头只能使用字母和数字" addonBefore={<img src={user} alt="" width="13px" />} size="large" autoComplete="off"/>)}
</Form.Item>
<Form.Item>
{getFieldDecorator('username',{
rules:[
{
required:true,
message:"请输入手机号或邮箱地址"
},
{
validator: (rule, value, callback) => { accountConfirm(rule, value, callback) }
}
],
validateTrigger:"onBlur",
validateFirst: true,
})(<Input className="account" addonBefore={<img src={phone} alt="" width="13px" />} size="large" placeholder="请输入手机号或邮箱地址"/>)}
</Form.Item>
<Form.Item>
<div className="login_register_head">
{getFieldDecorator('captcha', {
rules: [{
required: true,
message: "请输入验证码"
},
{
validator: (rule, value, callback) => { captchaConfirm(rule, value, callback) }
}],
validateTrigger: "onInput",
})(
<Input className="captcha" size="large" addonBefore={<img src={shield} alt="" width="13px" />} placeholder="请输入验证码" autoComplete="off"/>
)}
<Button type="primary" ghost size="large" className={captchaFlag ? 'codeBut disable':'codeBut'} disabled={captchaFlag} onClick={getCaptcha}>{getCaptchaBut ? "获取验证码":`重发(${secondsStr}s)`}</Button>
</div>
</Form.Item>
<Form.Item>
{getFieldDecorator('password', {
rules: [
{
required:true,
message:"请输入登录密码"
},
{
validator: (rule, value, callback) => { psdConfirm(rule, value, callback) }
}
],
validateTrigger:"onInput",
})(
<Input.Password autoComplete="new-password" addonBefore={<img src={lock} alt="" width="13px" />} className="psd" size="large" placeholder="请输入登录密码" />,
)}
</Form.Item>
<Form.Item>
{getFieldDecorator('confirm_password', {
rules: [
{
required:true,
message:"请再次输入登录密码"
},
{
validator: (rule, value, callback) => { repsdConfirm(rule, value, callback) }
}
],
validateTrigger:"onInput",
})(
<Input.Password autoComplete="new-password" addonBefore={<img src={lock} alt="" width="13px" />} className="psd" size="large" placeholder="请确认登录密码" />,
)}
</Form.Item>
<Button type="primary" disabled={bindFlag} size="large" style={{width:"100%",marginTop:"40px"}} onClick={bindRegFunc}>
注册并登录
</Button>
</Form>
</div>
)
}
export default Form.create({ name: 'Bind' })(Bind);

View File

@ -1,5 +1,6 @@
import React , { Component } from 'react';
import { Dropdown , Menu , Icon , Pagination , Spin } from 'antd';
import { Dropdown , Menu , Icon , Pagination , Spin , Tooltip } from 'antd';
import { getImageUrl } from 'educoder';
import '../css/index.scss';
import '../Branch/branch.scss';
import './activity.css';
@ -49,15 +50,44 @@ class Activity extends Component{
data:undefined,
project_trends:undefined,
codeStatus:undefined,
isSpin:false
}
}
componentDidMount=()=>{
this.updateDocumentTitle();
const { time,type,status,page } = this.state;
this.setState({
isSpin:true
})
this.getInfo(time,type,status,page);
this.getCodeInfo();
}
getCodeInfo(){
const { projectsId , owner } = this.props.match.params;
const url = `/v1/${owner}/${projectsId}/code_stats.json`;
axios.get(url).then(result=>{
if(result){
this.setState({
codeStatus:result.data
})
}
}).catch(error=>{})
}
componentDidUpdate(){
this.updateDocumentTitle();
}
// 更新网页标题
updateDocumentTitle(){
const {projectDetail} = this.props;
if(projectDetail && document.title.indexOf('动态-') === -1){
const { author, name} = projectDetail;
document.title = `动态-${author.name}/${name}`;
}
}
getInfo =(time,type,status,page)=>{
@ -124,7 +154,9 @@ class Activity extends Component{
</Menu>
)
render(){
const { time , data , page , project_trends , isSpin , pr_count , new_pr_count , close_issues_count , open_issues_count , pr_all_count ,issues_count } = this.state;
const { time , data , page , project_trends , isSpin ,
pr_count , new_pr_count , close_issues_count , open_issues_count , pr_all_count ,issues_count,
type,status , codeStatus } = this.state;
let name = time ? ARRAY.filter(item=>item.id === parseInt(time)) :[{name:"全部"}];
const first_per = pr_all_count > 0 ? `${parseFloat(pr_count/pr_all_count).toFixed(2)*100}%` :"50%";
@ -132,8 +164,9 @@ class Activity extends Component{
const third_per =issues_count > 0 ?`${parseFloat(close_issues_count/issues_count).toFixed(2)*100}%` :"50%";
const fourth_per =issues_count > 0 ?`${parseFloat(open_issues_count/issues_count).toFixed(2)*100}%` :"50%";
const {projectDetail} = this.props;
return(
<div className="main">
<div className="main mt20">
<div className="normalBox">
<div class="normalBox-title">概览</div>
@ -150,27 +183,54 @@ class Activity extends Component{
<p className="percent_red" style={{width:`${third_per}`}}></p>
<p className="percent_green" style={{width:`${fourth_per}`}}></p>
</div>
<span>{data && data.issues_count}</span>
<span>{data && data.issues_count}</span>
</div>
</div>
<ul className="percentBox">
<li>
<span className="purple">{data && data.pr_count}</span>
<span className="change" onClick={()=>this.changeTrends("PullRequest","delay")}>已处理的合并请求</span>
<span className={type==="PullRequest" && status==="delay" ?`change active`:"change"} onClick={()=>this.changeTrends("PullRequest","delay")}>已处理的合并请求</span>
</li>
<li>
<span className="green">{data && data.new_pr_count}</span>
<span className="change" onClick={()=>this.changeTrends("PullRequest","not_delay")}>未处理的合并请求</span>
<span className={type==="PullRequest"&& status==="not_delay" ?`change active`:"change"} onClick={()=>this.changeTrends("PullRequest","not_delay")}>未处理的合并请求</span>
</li>
<li>
<span className="red">{data && data.close_issues_count}</span>
<span className="change" onClick={()=>this.changeTrends("Issue","delay")}>已关闭的</span>
<span className={type==="Issue"&& status==="delay" ?`change active`:"change"} onClick={()=>this.changeTrends("Issue","delay")}>已关闭的</span>
</li>
<li>
<span className="green">{data && data.open_issues_count}</span>
<span className="change" onClick={()=>this.changeTrends("Issue","not_delay")}>未处理的</span>
<span className={type==="Issue"&& status==="not_delay" ?`change active`:"change"} onClick={()=>this.changeTrends("Issue","not_delay")}>未处理的</span>
</li>
</ul>
{
codeStatus &&
<div className="prMsg">
<div>排除合并
<span className="fontbold">{codeStatus.author_count} 作者</span> <span className="fontbold">{codeStatus.commit_count} </span>
{codeStatus.commit_count_in_all_branches && codeStatus.commit_count_in_all_branches>0?<span> {projectDetail && projectDetail.default_branch} <span>{codeStatus.commit_count_in_all_branches} 提交</span> </span>:""} {projectDetail && projectDetail.default_branch}
{codeStatus.change_files && codeStatus.change_files >0 ? <span><span className="fontbold">{codeStatus.change_files} 文件</span> </span>:""}
{codeStatus.additions && codeStatus.additions >0 ?<span><span className="fontbold greencount">新增 {codeStatus.additions} </span></span>:""}
{(codeStatus.additions && codeStatus.additions >0) &&(codeStatus.deletions && codeStatus.deletions >0) ?<span></span>:""}
{codeStatus.deletions && codeStatus.deletions >0 ?<span><span className="fontbold redcount">删除 {codeStatus.deletions} </span></span>:""}.</div>
{
codeStatus.authors && codeStatus.authors.length > 0 &&
<ul className="prAuthor">
{
codeStatus.authors.map((i,v)=>{
return(
<a href={`/${i.author && i.author.login}`}>
<img src={getImageUrl(i.author && i.author.image_url)} width="38px" alt=""/>
<Tooltip title={i.author && i.author.name} placement="bottom"><span>{i.author && i.author.name}</span></Tooltip>
</a>
)
})
}
</ul>
}
</div>
}
</div>
<div className="df trendsTop mt20">
<div className="branchDropdown f-wrap-alignCenter">

View File

@ -14,20 +14,20 @@ class ActivityItem extends Component {
{/* 如果是版本发布 */}
{item.trend_type === "VersionRelease" ?
<p className="itemLine">
<Link to={`/${owner}/${projectsId}/releases`} className="color-blue font-16">{item.name}</Link>
<Link to={`/${owner}/${projectsId}/releases`} className="font-16">{item.name}</Link>
<span className="activity_type">{item.trend_type}</span>
</p >
:
// 如果是任务
item.trend_type === "Issue" ?
<p className="itemLine">
<Link to={`/${owner}/${projectsId}/issues/${item.trend_id}`} className="color-blue font-16">{item.name}</Link>
<Link to={`/${owner}/${projectsId}/issues/${item.trend_id}`} className="font-16">{item.name}</Link>
<span className="activity_type">{item.trend_type}</span>
</p >
:
// 如果是合并请求
<p className="itemLine">
<Link to={`/${owner}/${projectsId}/pulls/${item.trend_id}`} className="color-blue font-16">{item.name}</Link>
<Link to={`/${owner}/${projectsId}/pulls/${item.trend_id}`} className="font-16">{item.name}</Link>
<span className="activity_type">{item.trend_type}</span>
</p >
}

View File

@ -60,6 +60,48 @@
.percentBox > li:last-child{
border-right: none;
}
.prMsg{
padding:0px 20px;
border-top: 1px solid #f4f4f4;
}
.prMsg > div{
padding:20px 20px 20px 0px;
line-height: 22px;
border-right:1px solid #f4f4f4;
width: 50%;
}
.prMsg > div span.fontbold{
font-weight: 500;
}
.prMsg > div span.fontbold.greencount{
color: green;
}
.prMsg > div span.fontbold.redcount{
color: red;
}
.prAuthor{
padding-bottom: 20px;
display: flex;
border-right:1px solid #f4f4f4;
width: 50%;
flex-wrap: wrap;
}
.prAuthor a{
display: flex;
flex-direction: column;
align-items: center;
width: 78px;
}
.prAuthor a img{
border-radius: 50%;
}
.prAuthor a span{
display: block;
max-width: 78px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.activity_list .activity_item{
border-bottom: 1px solid #f4f4f4;
padding:15px 0px;
@ -107,6 +149,10 @@
color: black;
cursor: pointer;
}
.change:hover{
color: #4183c4;
.change.active{
color: #466AFF !important;
}
.change:hover{
color: #466AFF;
}

View File

@ -0,0 +1,119 @@
import React , { useState , useEffect } from 'react';
import { Spin } from 'antd';
import { Blueback } from '../Component/layout';
import Editor from "react-monaco-editor";
import Modals from './DisposeModal';
import FileLanguage from '../Component/OpsFileLanguage';
import axios from 'axios';
function Dispose(props){
const [ spining , setSpining ] = useState(true);
const [ info , setInfo ] = useState('.trustie-pipeline.yml');
const [ visible , setVisible ] = useState(false);
const [ ymlValue , setYmlValue ] = useState("");
const [ sha , setSha ] = useState(undefined);
const [ fileLanguage , setFileLanguage ] = useState(undefined);
const [ first , setFirst ] = useState(false);
let projectsId = props.match.params.projectsId;
let owner = props.match.params.owner;
useEffect(()=>{
if(projectsId){
const url = `/${owner}/${projectsId}/get_trustie_pipeline.json`;
axios.get(url,{
params:{
project_id:projectsId
}
}).then(result=>{
if(result && result.data.content){
setInfo(result.data.name);
setYmlValue(result.data.content);
setFirst(true);
setSha(result.data.sha);
}else{
setFirst(false);
}
setSpining(false);
}).catch(error=>{
console.log(error);
})
}
},[projectsId])
//
function changeEditor(value){
setYmlValue(value);
}
//
function select_language(value,array){
setFileLanguage(value);
setYmlValue( array && array.content);
}
//
function submit(){
let url = '';
const { defaultBranch } = props;
let params = {
branch: defaultBranch,
content:ymlValue,
filepath:info,
message:''
}
if(first){
// true
url = `/${owner}/${projectsId}/update_trustie_pipeline.json`;
axios.put(url,{
...params,
sha
}).then(result=>{
if(result){
setVisible(true);
}
}).catch(error=>{
console.log(error);
})
}else{
url = `/${owner}/${projectsId}/create_file.json`;
axios.post(url,params).then(result=>{
if(result){
setVisible(true);
}
}).catch(error=>{
console.log(error);
})
}
}
function suresubmit(){
setVisible(false);
props.history.push(`/projects/${owner}/${projectsId}/devops/list`);
}
return(
<Spin spinning={spining}>
<Modals visible={visible} closeFunc={(flag)=>setVisible(flag)} sureFunc={suresubmit}></Modals>
<p>编程语言</p>
<div className="mt20 mb20">
<FileLanguage language={fileLanguage} select_language={select_language}/>
</div>
<p>配置脚本</p>
<div className="editorBody">
<p className="editorHead">{info}</p>
<Editor
height="300px"
language={"yml"}
theme={"vs-grey"}
defaultValue="请输入内容"
value={ymlValue}
options={"editor_options"}
onChange={changeEditor}
></Editor>
</div>
<Blueback onClick={submit}>确定提交</Blueback>
</Spin>
)
}
export default Dispose;

View File

@ -7,10 +7,10 @@ function CloneAddress({http_url , ssh_url , zip_url , tar_url}) {
const [ key , setKey ] = useState("HTTP");
return (
<div className="downMenu">
<div style={{borderBottom:"1px solid #eee"}}>
<div>
<Menu className="urlMenu" selectedKeys={[key]} mode={"horizontal"}>
<Menu.Item key="HTTP" onClick={(e)=>{setKey(e.key)}}>HTTP</Menu.Item>
<Menu.Item key="SSH" onClick={(e)=>{setKey(e.key)}}>SSH</Menu.Item>
{ssh_url && <Menu.Item key="SSH" onClick={(e)=>{setKey(e.key)}}>SSH</Menu.Item>}
</Menu>
<div className="gitAddressClone">
<input type="text" id="copy_rep_content" value={key==="HTTP" ? http_url:ssh_url} />
@ -18,8 +18,8 @@ function CloneAddress({http_url , ssh_url , zip_url , tar_url}) {
</div>
</div>
<Menu className="edu-txt-center">
<Menu.Item><a href={zip_url}>下载 ZIP</a></Menu.Item>
<Menu.Item><a href={tar_url}>下载 TAR.GZ</a></Menu.Item>
{zip_url && <Menu.Item style={{borderTop:"1px solid #eee"}}><a href={zip_url}>下载 ZIP</a></Menu.Item>}
{tar_url && <Menu.Item><a href={tar_url}>下载 TAR.GZ</a></Menu.Item>}
</Menu>
</div>
)

View File

@ -3,6 +3,7 @@ import { Dropdown} from 'antd';
import './branch.scss';
import SelectOverlay from './SelectOverlay';
import { findDOMNode } from 'react-dom';
import { turnbar } from 'educoder';
export default (({ projectsId , branch , owner , changeBranch , branchList , tagflag = true })=>{
const [ showValue , setShowValue ] = useState(branch);
@ -35,7 +36,8 @@ export default (({ projectsId , branch , owner , changeBranch , branchList , tag
function ChangeB(params) {
setVisible(false);
changeBranch(params);
let en = turnbar(params);
changeBranch(en);
}
const menu = (
@ -55,7 +57,7 @@ export default (({ projectsId , branch , owner , changeBranch , branchList , tag
<div className="branch-tagBox" ref={refBox} onClick={()=>setVisible(visible ? false : true)}>
{/* {nav === 0 ?"分支":"标签"} */}
<span className="color-grey-9 mr3 ml8"><i className="iconfont icon-fenzhi2 font-18"></i></span>
<span className="ant-dropdown-link task-hide" style={{fontWeight:"500",minWidth:"45px",maxWidth:"270px"}}>
<span className="ant-dropdown-link task-hide" style={{fontWeight:"500",minWidth:"45px",maxWidth:"180px"}}>
{showValue}
</span>
<i className="showtag iconfont icon-sanjiaoxing-down font-15 color-grey-9 mr5 ml5 mt1" />

View File

@ -66,9 +66,10 @@ function AddMember({getID,login,showNotification}){
};
function addCollaborator(){
if(source && source.length>0){
if(source && source.length>0&&searchKey){
getID && getID(id);
setSearchKey(undefined);
setID(undefined)
}else{
showNotification("请选择存在的用户!");
}
@ -79,7 +80,7 @@ function AddMember({getID,login,showNotification}){
<AutoComplete
dataSource={source}
value={searchKey}
style={{ width: 300 }}
style={{ width: 250 }}
onChange={changeInputUser}
onSelect={selectInputUser}
placeholder="搜索需要添加的用户..."
@ -91,7 +92,8 @@ function AddMember({getID,login,showNotification}){
onClick={addCollaborator}
className="ml15"
>
<Icon type="plus" size="16"></Icon>
{/* <Icon type="plus" size="16"></Icon> */}
<i className="iconfont icon-tianjiafangda mr3"></i>
添加成员
</Button>
</div>

View File

@ -276,36 +276,36 @@ li.ant-menu-item{
.-task-sidebar {
position: fixed;
width: 40px;
right: 0;
right: 30px;
bottom: 80px;
z-index: 10;
}
@media screen and (max-width: 1920px){
.-task-sidebar{
right:220px;
}
}
@media screen and (max-width: 1750px){
.-task-sidebar{
right:160px;
}
}
@media screen and (max-width: 1650px){
.-task-sidebar{
right:115px;
}
}
@media screen and (max-width: 1550px){
.-task-sidebar{
right:90px;
}
}
@media screen and (max-width: 1450px){
.-task-sidebar{
right:45px;
}
}
// @media screen and (max-width: 1920px){
// .-task-sidebar{
// right:220px;
// }
// }
// @media screen and (max-width: 1750px){
// .-task-sidebar{
// right:160px;
// }
// }
// @media screen and (max-width: 1650px){
// .-task-sidebar{
// right:115px;
// }
// }
// @media screen and (max-width: 1550px){
// .-task-sidebar{
// right:90px;
// }
// }
// @media screen and (max-width: 1450px){
// .-task-sidebar{
// right:45px;
// }
// }
@media screen and (max-width: 1200px){
.-task-sidebar{
right:0px;
@ -313,17 +313,17 @@ li.ant-menu-item{
}
}
.-task-sidebar>div {
height: 40px;
line-height: 40px;
height: 48px;
line-height: 48px;
box-sizing: border-box;
width: 40px;
width: 48px;
color: #999;
font-size: 20px;
text-align: center;
margin-bottom: 20px;
border-radius: 50%;
background: #FFFFFF;
box-shadow: 0px 0px 10px 1px #F1F1F1;
box-shadow: 0px 0px 12px 5px rgba(208, 208, 208, 0.2);
}
.-task-sidebar>div i {
@ -334,36 +334,40 @@ li.ant-menu-item{
color: #fff !important;
}
.-task-sidebar>div:hover{
background: #1890FF;
background: #466AFF;
box-shadow: 0px 0px 10px 2px #B6D0FC;
}
.helpBox{
width: 260px;
z-index: 103;
&.shareContent{
width: 200px;
width: 160px;
}
.ant-popover-title{
font-size: 16px;
}
.ant-popover-inner-content{
padding:0px;
}
p.titlecontent{
font-size: 18px;
font-size: 16px;
color: #333;
line-height: 20px;
padding:15px 20px;
}
.faqUl{
padding:0px 20px 10px;
padding:10px 15px;
max-height: 230px;
overflow-y: auto;
font-size: 13px;
li{
background: #F5F5F5;
border-radius: 20px;
padding:0px 20px;
padding:0px 15px;
color: #333;
height: 34px;
line-height: 34px;
margin-bottom: 10px;
height: 30px;
line-height: 30px;
margin-bottom: 3px !important;
a{
display: block;
overflow: hidden;
@ -379,19 +383,18 @@ li.ant-menu-item{
}
}
.shareUl{
padding:10px 0px;
display: flex;
align-items: center;
.titlecontent{
margin-right: 20px;
}
li > i{
font-size: 32px!important;
}
}
}
// tooltip样式
.tooltipBox .ant-tooltip-inner{
padding: 8px 12px;
font-size: 15px;
}
.-task-desc {
background: #494949;
@ -439,3 +442,76 @@ li.ant-menu-item{
border-left: 5px solid #494949;
border-bottom: 6px solid transparent
}
//头部输入框样式
.headSerach{
background: rgba(255, 255, 255, 0.1);
border-radius: 4px;
padding-left: 20px;
//修改antd输入框默认样式
.ant-input,.ant-input:focus{
border: none !important;
background-color: rgba(255, 255, 255, 0) !important;
}
&:hover{
padding: 2px 20px 2px 20px;
background: #FFF;
& i{
color: #333;
}
}
}
.feedBackModal .ant-modal-header{
border-bottom: none;
background: none;
padding: 16px 24px 0;
}
.feedBackModal .ant-modal-title{
font-weight:500 !important;
color:#151d40;
font-size:18px;
}
.feedBackModal .anticon-close{
font-size: 22px;
}
.feedBackModal .ant-modal-footer{
border-top: none;
text-align: center;
padding-bottom: 40px;
}
.feedBackModal .ant-modal-content{
background-image:linear-gradient(359.37deg,#ebf3ff 0%,#f8fbff 55.01%,#cbdbff 100%);
border:1.5px solid #ffffff;
}
.feedBackModal .feedBackText{
padding: 20px;
font-size:15px;
color:#202d40;
}
.feedBackModal .feedBackText::placeholder{
color:#afb7c2;
}
.feedBackModal .gotoIssueFeedBack{
color: rgba(70, 106, 255, 1);
}
.feedBackBox{
position: relative;
background-color: white;
}
.feedBackText.errorInput{
border: 1px solid #f60011;
}
.errorInput{
background-color:rgba(255, 0, 0, 0.04) !important;
}
.ant-input.errorInput:hover{
background-color: white !important;
}
.countNumBox{
position: absolute;
bottom: 2px;
right: 10px;
}

View File

@ -4,10 +4,10 @@ import { Link } from 'react-router-dom';
import { Popover , Spin , Button } from 'antd';
import { getImageUrl } from 'educoder';
import './Component.scss';
import { getUser } from '../GetData/getData';
import { getUser4Proj } from '../GetData/getData';
import axios from 'axios';
function Contributors({contributors,owner,projectsId,currentLogin}){
function Contributors({owner,projectsId,currentLogin}){
const [ menuList ,setMenuList ]= useState([]);
const [ list , setList ]= useState(undefined);
const [ total , setTotal ]= useState(0);
@ -16,11 +16,18 @@ function Contributors({contributors,owner,projectsId,currentLogin}){
const [ isSpin , setIsSpin ] = useState(false);
useEffect(()=>{
if(contributors && contributors.total_count>0){
setTotal(contributors.total_count);
setList(contributors.list);
}
},[contributors])
getData();
},[])
function getData(){
const url = `/${owner}/${projectsId}/contributors.json`;
axios.get(url).then(result=>{
if(result){
setTotal(result.data.total_count);
setList(result.data.list);
}
}).catch(error=>{})
}
useEffect(()=>{
if(login){
@ -34,7 +41,7 @@ function Contributors({contributors,owner,projectsId,currentLogin}){
setIsSpin(true);
let a = menuList && menuList.filter(i=>i.login === login);
if(a.length === 0){
let result = await getUser(login);
let result = await getUser4Proj(login, projectsId);
let arr = menuList;
arr.push({...result});
setMenuList(arr);
@ -87,6 +94,10 @@ function Contributors({contributors,owner,projectsId,currentLogin}){
<span>{data.following_count}</span>
<span>关注数</span>
</Link>
<Link to={`#`}>
<span>{data.contribution_perc}</span>
<span>贡献度</span>
</Link>
</AlignCenter>
<div className={"pb20"} style={{display:"flex",justifyContent:'center'}}>
{
@ -148,15 +159,15 @@ function Contributors({contributors,owner,projectsId,currentLogin}){
}
return(
total > 0 ?
<div className="halfs">
<Link to={`/${owner}/${projectsId}/contribute`} className="font-16 color-ooo hoverA">
<span>贡献者</span>
{ contributors && contributors.total_count > 0 && <span className="infoCount">{contributors.total_count}</span>}
{ total > 0 && <span className="infoCount">{total}</span>}
</Link>
<div className="attrPerson" onMouseLeave={()=>setVisibleFunc(false)}>
{
total > 0 ?
list.map((item,key)=>{
list && list.length>0 && list.map((item,key)=>{
return(
<Popover content={menu} visible={item.visible} overlayClassName="menuPanels" placement="top">
<Link key={key} to={`/${item.login}`}>
@ -165,10 +176,9 @@ function Contributors({contributors,owner,projectsId,currentLogin}){
</Popover>
)
})
:""
}
</div>
</div>
</div>:""
)
}
export default Contributors;

View File

@ -3,14 +3,7 @@ import { AlignCenter } from '../layout';
import { Button } from 'antd';
import Modals from '../PublicModal/Index';
function DeleteBox({
visible ,
onCancel ,
onSuccess ,
title ,
subTitle,
content
}) {
function DeleteBox({visible, onCancel, onSuccess, title, subTitle, content}) {
return(
<Modals
title={title}
@ -24,8 +17,8 @@ function DeleteBox({
visible={visible}
>
<div className="desc">
<AlignCenter className="descMain"><i className="iconfont icon-shanchu_tc_icon mr10"></i>{content}</AlignCenter>
<p>{subTitle}</p>
<AlignCenter className="descMain"><i className="iconfont icon-shanchu_tc_icon mr10 font-36" style={{color: '#ca0002'}}></i>{content}</AlignCenter>
<p className="task-hide-2" style={{WebkitLineClamp:5}}><span title={subTitle}>{subTitle}</span></p>
</div>
</Modals>
)

View File

@ -1,15 +1,10 @@
import React, { useEffect, useState } from 'react';
import { Drawer , Tree , Spin } from 'antd';
import { turnbar} from 'educoder';
import './Component.scss';
import axios from 'axios';
const { TreeNode , DirectoryTree } = Tree;
function turnbar(str){
if(str && str.length>0 && str.indexOf("/")>-1){
return str.replaceAll('/','%2F');
}
return str;
}
function DrawerPanel({visible,onClose,branch,owner,projectsId,history, name , list}){
const [ treeData , setTreeData ] = useState(undefined);
const [ isSpin , setIsSpin ] = useState(true);

View File

@ -32,7 +32,7 @@ export default ({history}) => {
/>
</div>
:
<i className="iconfont icon-sousuo font-18 color-grey-6 ml30" onClick={() => {
<i className="iconfont icon-sousuo font-18 ml30" style={{color:"#a5a5a5"}} onClick={() => {
setOpenSearch(true)
}} />
}

View File

@ -1,18 +1,41 @@
import React, { useEffect, useState } from 'react';
import { FlexAJ } from '../Component/layout';
import { Divider } from 'antd';
import axios from 'axios';
function LanguagePower({languages}){
function LanguagePower({owner,projectsId}){
const [ array , setArray ] = useState(undefined);
useEffect(()=>{
if(languages){
let arr = [];
Object.keys(languages).map((item,key)=>{
arr.push({name:item,percent:languages[item],color:getColor()});
})
setArray(arr);
}
},[languages])
getData();
},[])
function getData(){
const url = `/${owner}/${projectsId}/languages.json`;
axios.get(url).then(result=>{
if(result){
let languages = result.data;
if(languages){
let arr = [];
Object.keys(languages).map((item,key)=>{
arr.push({name:item,percent:languages[item],color:getColor()});
})
setArray(arr);
}
}
}).catch(error=>{})
}
// useEffect(()=>{
// if(languages){
// let arr = [];
// Object.keys(languages).map((item,key)=>{
// arr.push({name:item,percent:languages[item],color:getColor()});
// })
// setArray(arr);
// }
// },[languages])
 function getColor(){
let str = "#";
@ -24,13 +47,15 @@ function LanguagePower({languages}){
return str;
}
return(
(array && array.length > 0) ?
<div>
<Divider />
<p className="font-16 color-ooo aboutSubTitle">开发语言</p>
<div className="progress">
{
array && array.map((item,key)=>{
return(
<span style={{width:item.percent,backgroundColor:item.color}}></span>
<span key={item.id||key} style={{width:item.percent,backgroundColor:item.color}}></span>
)
})
}
@ -41,14 +66,13 @@ function LanguagePower({languages}){
{
array.map((item,key)=>{
return(
<span><i className="zero" style={{backgroundColor:`${item.color}`}}></i><span>{item.name}</span><span>{item.percent}</span></span>
<span key={item.id||key}><i className="zero" style={{backgroundColor:`${item.color}`}}></i><span>{item.name}</span><span>{item.percent}</span></span>
)
})
}
</FlexAJ>
}
</div>
</div>:""
)
}
export default LanguagePower;

View File

@ -29,12 +29,12 @@
font-weight: 500;
color: #FFFFFF;
margin-top: 60px;
padding-left: 20px;
}
.markdown-body{
box-shadow: 0px 0px 17px rgba(0,0,0,0.2);
border-radius: 4px;
margin-top: 17px!important;
color: white;
}
.nContent{
padding:20px 34px;

View File

@ -3,25 +3,42 @@ import { Modal , Button } from 'antd';
import './Index.scss';
import '../../css/index.scss';
import RenderHtml from '../../../components/render-html';
import cookie from 'react-cookies';
// import cookie from 'react-cookies';
import axios from 'axios';
function SystemNotice({system_notification,history}){
function SystemNotice({showNotice,system_notification,history,login,hideSystemNotice}){
const [ visible , setVisible ] = useState(false);
useEffect(()=>{
if(system_notification && !cookie.load('notice_stage')){
if((system_notification && !system_notification.is_read) && showNotice && login){
setVisible(true);
}
},[system_notification,history.location])
},[system_notification,login])
function sureContinue() {
cookie.remove('notice_stage');
if(login && ( system_notification && system_notification.id )){
const url = `/users/${login}/system_notification_histories.json`;
axios.post(url,{
system_notification_id:system_notification.id
}).then(result=>{
setVisible(false);
hideSystemNotice();
}).catch(error=>{
setVisible(false);
hideSystemNotice();
})
}else{
setVisible(false);
hideSystemNotice();
}
// cookie.remove('notice_stage');
let inFifteenMinutes = new Date(new Date().getTime() + 24 * 3600 * 1000);//
// let inFifteenMinutes = new Date(new Date().getTime() + 60 * 1000);//
cookie.save('notice_stage', true,{ expires: inFifteenMinutes,path:"/" });
// let inFifteenMinutes = new Date(new Date().getTime() + 24 * 3600 * 1000);//
// // let inFifteenMinutes = new Date(new Date().getTime() + 60 * 1000);//
// cookie.save('notice_stage', true,{ expires: inFifteenMinutes,path:"/" });
setVisible(false);
// setVisible(false);
}
return (

View File

@ -61,9 +61,9 @@ function ProfileModal({visible,onCancel,history}) {
<img src={ProfileImg} alt=""/>
{
addMemberCheck ?
<p>目标用户个人资料不完整需提醒目标用户补充资料后以进行后续操作</p>
<p>目标用户个人资料邮箱昵称不完整需提醒目标用户在个人设置页面补充资料后以进行后续操作</p>
:
<p>您目前的个人资料不完整补充资料以进行后续操作是否前往补充个人信息</p>
<p>您目前的个人资料不完整在个人设置页补充资料以进行后续操作是否前往补充个人信息</p>
}
</div>
</Modals>

View File

@ -0,0 +1,48 @@
import React , { useEffect , useState } from 'react';
import Modals from '../PublicModal/Index';
import { Button } from 'antd';
import cookie from 'react-cookies';
import ProfileImg from './images/profile.png';
import './Index.scss';
function SupplyPhoneModal({visible}) {
const [ modalVis , setModalVis ] = useState(visible);
useEffect(()=>{
setModalVis(visible);
if(visible){
cookie.remove('supplyphone');
}
},[visible])
function onOk(){
setModalVis(false);
setTimeout(function(){
window.open(`/settings/phone`,"_blank");
},200)
}
function onNo() {
setModalVis(false);
}
return(
<Modals
title="您的账号尚未绑定手机号码"
onCancel={onNo}
visible={modalVis}
btn={
<div>
<Button size={"large"} onClick={onNo}>再想想</Button>
<Button type={'primary'} size={"large"} onClick={onOk}>马上绑定</Button>
</div>
}
>
<div className="contents">
<img src={ProfileImg} alt=""/>
<p>请绑定手机号以获取平台更多短信服务及找回密码服务</p>
</div>
</Modals>
)
}
export default SupplyPhoneModal;

View File

@ -1,5 +1,5 @@
import React, { useEffect, useState } from 'react';
import { Popover , Tooltip } from 'antd';
import { Button, Input, message, Modal, Popover , Tooltip } from 'antd';
import './Component.scss';
import axios from 'axios';
import ShareModal from './SiderBarShareModal';
@ -20,12 +20,26 @@ $(window).scroll(function () {
}
});
function SiderBar() {
function SiderBar(props) {
const {location, history} = props;
const {search, pathname} = location;
const [ data , setData ] = useState([]);
const [ visible , setVisible ] = useState(false);
const [ login , setLogin ]= useState(false);
const [ feedBackModal, setFeedBackModal] = useState(false);
const [ feedBackValue, setFeedBackValue] = useState(undefined);
const [ failApply, setFailApply] = useState(undefined);
useEffect(()=>{
getFAQ();
getCurrentUser();
//页面加载完成之后隐藏回到顶点
$(".-task-sidebar .gotop").hide();
// 意见反馈弹窗
if(search && search.indexOf('feedback') !== -1 && search.indexOf('type=feedback') === -1){
// 用户已经在issue中反馈刷新页面不弹出意见反馈
setFeedBackModal(true)
}
},[])
function getFAQ(){
@ -36,9 +50,19 @@ function SiderBar() {
}
}).catch(error=>{})
}
//获取当前登录账号信息->用于建议反馈
function getCurrentUser(){
let url = `/users/get_user_info.json`;
axios.get(url).then((response) => {
if (response && response.data && response.data.login) {
setLogin(response.data.login);
}
}).catch(error=>{})
}
function content(list){
return <div>
<p className="titlecontent">帮助</p>
<ul className="faqUl">
{
list && list.map((i,k)=>{
@ -59,31 +83,86 @@ function SiderBar() {
</ul>
</div>
}
// 意见反馈按钮点击事件
function feedBackClick(){
if(login){
setFeedBackModal(true);
}else{
history.push(`/login?go_page=${pathname}?feedback`);
}
}
function applyFeedBack(){
if(feedBackValue){
setFailApply(undefined);
setFeedBackModal(false);
setFeedBackValue(undefined);
axios.post(`/v1/${login}/feedbacks`,{content: feedBackValue}).then(res=>{
if(res && res.data && !res.data.status){
message.success('反馈成功');
}
})
}else{
setFailApply('请填写您的反馈建议');
}
}
return (
<div className={"-task-sidebar"} >
<ShareModal visible={visible} urlValue={window.location.href} onCancel={()=>setVisible(false)}/>
{/* 平台反馈 */}
<Tooltip title="意见反馈" placement={"left"} overlayClassName="tooltipBox">
<div className="consult" onClick={feedBackClick} style={{cursor: 'pointer'}}>
{/* <a href={login ? `/Gitlink/forgeplus/issues/new?type=feedback`:`/login?go_page=/Gitlink/forgeplus/issues/new?type=feedback`}> */}
<i className="iconfont icon-yijianfankui2"></i>
{/* </a> */}
</div>
</Tooltip>
{/* 帮助 */}
{
data && data.length > 0 && (data[0] && data[0].question) ?
<Popover content={content(data)} overlayClassName="helpBox" placement={"left"}>
<Popover title="帮助" content={content(data)} overlayClassName="helpBox" placement={"left"}>
<div className="feedback">
<i className="iconfont icon-bangzhu font-22"></i>
<i className="iconfont icon-bangzhu1 font-22"></i>
</div>
</Popover>
:""
}
{/* 分享 */}
{/* <div className="scan pr" title="">
<span className="inline erweima"><i className="iconfont icon-erweima color-white font-22 fl"></i></span>
</div>*/}
<ShareModal visible={visible} urlValue={window.location.href} onCancel={()=>setVisible(false)}/>
<Popover content={shareContent()} overlayClassName="helpBox shareContent" placement={"left"}>
<div className="consult">
<i className="iconfont icon-fenxiang1"></i>
<i className="iconfont icon-fenxiang"></i>
</div>
</Popover>
<div className="gotop">
<Tooltip title="返回顶部" placement={"right"}>
{/* 返回顶部 */}
<Tooltip title="返回顶部" placement={"left"} overlayClassName="tooltipBox">
<div className="gotop">
<a><i className="iconfont icon-huidaodingbu1"></i></a>
</Tooltip>
</div>
</div>
</Tooltip>
<Modal
width={610}
className='feedBackModal'
visible={feedBackModal}
onCancel={()=>{setFeedBackModal(false); history.push(pathname)}}
title={'意见反馈'}
footer={<Button type='primary' style={{width: '300px', height: '36px'}} onClick={applyFeedBack}>提交</Button>}>
<div className='feedBackBox'>
<Input.TextArea autoSize={{minRows: 9}} placeholder='请在此处填写您的宝贵意见,若经采纳,我们将通过邮件与您沟通' className={`feedBackText ${failApply ? 'errorInput' : ''}`} maxLength={500} value={feedBackValue} onChange={(e)=>{setFeedBackValue(e.target.value); e.target.value && e.target.value.length && setFailApply(undefined);}}/>
<span className='countNumBox'>{(feedBackValue && feedBackValue.length) || 0}/500</span>
</div>
{/* /Gitlink/forgeplus */}
{failApply && <div className='mt10' style={{color: '#f60011'}}>{failApply}</div>}
<div className='mt15 font-15 pln'>若需上传截图<a onClick={()=>{setFeedBackModal(false); history.push('/Gitlink/forgeplus/issues/new?type=feedback')}} className='gotoIssueFeedBack'>点击此处</a></div>
</Modal>
</div>
)
}

View File

@ -17,9 +17,9 @@ function SiderBarShareModal({visible,urlValue,onCancel}) {
value={urlValue}
size={200}
fgColor="#000000"
style={{margin:"20px"}}
style={{margin:"0 20px 20px"}}
/>}
<p>打开微信扫一扫,点击右上角菜单即可将网页分享至朋友圈</p>
<p>打开微信扫一扫点击右上角菜单即可将网页分享至朋友圈</p>
</div>
</Modal>
)

View File

@ -5,7 +5,7 @@ const Nav = styled.div`{
background-color:#fff;
padding:20px 30px;
border-bottom:1px solid #eee;
font-size:16px;
font-size:18px;
color:#333;
display:flex;
justify-content: space-between;

View File

@ -7,6 +7,8 @@ export const Banner = styled.div`{
border-bottom:1px solid #eee;
background-color:#fff;
border-radius:5px 5px 0px 0px;
justify-content: space-between;
display: flex;
}`
export const AlignCenterBetween = styled.div`{
display:flex;
@ -71,8 +73,8 @@ export const Blueline = styled.a`{
height:30px;
line-height:28px;
border-radius:2px;
border:1px solid rgba(80,145,255,1);
color:rgba(80,145,255,1);
border:1px solid #466AFF;
color:#466AFF;
padding:0px 12px;
display:inline-block;
}`
@ -115,7 +117,8 @@ export const Blueback = styled.a`{
height:30px;
line-height:30px;
border-radius:2px;
background-color:rgba(80,145,255,1);
// background-color:rgba(80,145,255,1);
background-color:#466AFF;
color:#fff!important;
padding:0px 12px;
display:inline-block;
@ -127,7 +130,7 @@ export const Redback = styled.a`{
line-height:30px;
border-radius:2px;
background-color:#F73030;
color:#fff;
color:#fff!important;
padding:0px 12px;
display:inline-block;
min-width:80px;

View File

@ -36,15 +36,15 @@ function About(props, ref) {
const [ disabled, setDisabled ] = useState(false);
const [ typeFlag, setTypeFlag] = useState(false);
const AuthorLogin = props.projectDetail && props.projectDetail.author && props.projectDetail.author.login;
const isPermission = props.projectDetail && props.projectDetail.permission && props.projectDetail.permission!=="Reporter";
const CurrentLogin = props.current_user && props.current_user.login;
useEffect(()=>{
if(CurrentLogin === AuthorLogin){
if(isPermission){
auth('get');
}else{
setIsSpining(false);
}
},[AuthorLogin,CurrentLogin])
},[isPermission,CurrentLogin])
function auth(type){
const url = `/${owner}/${projectsId}/ci_authorize.json`;
@ -136,7 +136,7 @@ function About(props, ref) {
params:{password:authorityVal}
}).then(result=>{
setIsSpining(false);
if(result){
if(result && result.data.status === 0){
setStep(result.data.step);
}
}).catch(error=>{setIsSpining(false)});
@ -149,7 +149,10 @@ function About(props, ref) {
axios.post(url).then(result=>{
setIsSpining(false);
if(result && result.data.status === 0){
props.history.push(`/${owner}/${projectsId}/devops`);
props.history.push({
pathname: `/${owner}/${projectsId}/devops`,
state:{open_devops:true}
});
// open_devops
let { changeOpenDevops } = props;
changeOpenDevops && changeOpenDevops(true);
@ -167,17 +170,17 @@ function About(props, ref) {
<img src={activate} alt="" width="250px" />
<P>定义DevOps工作流帮助您检测bug发布代码</P>
{
CurrentLogin !== AuthorLogin ?
!isPermission ?
<div className="noOperation">DevOps开启功能暂未对项目创建者以外的角色开放可以联系项目创建者进行开启开启后便可查看构建信息</div>:""
}
<a href={"https://forum.trustie.net/forums/3110/detail"} target="_blank" style={{ color: "#5091FF"}}>
了解什么是DevOps
</a>
<a href={"https://forum.trustie.net/forums/3080/detail"} target="_blank" style={{ color: "#5091FF"}}>
如何使用DevOps
如何使用引擎Engine功能
</a>
{
AuthorLogin === CurrentLogin ?
isPermission ?
<React.Fragment>
{
step === 0 && !typeFlag ?

View File

@ -1,6 +1,7 @@
import React from 'react';
import { Table , Popconfirm } from 'antd';
import { Link } from 'react-router-dom';
import { turnbar } from "educoder";
// const STATUS = {
// running:"",
@ -10,12 +11,6 @@ import { Link } from 'react-router-dom';
// killed:"",
// pending:""
// }
function turnbar(str){
if(str && str.length>0 && str.indexOf("/")>-1){
return str.replaceAll('/','%2F');
}
return str;
}
function renderTableStatus(status) {
switch (status) {
case "running":

View File

@ -17,7 +17,7 @@ function Sure({datas , name , saveFunc , sureSubmit , loading}){
return(
<div>
<div style={{padding:"0px 15px 15px 15px"}}>
工作流名称{name}
水线名称{name}
</div>
<div className="editorBody" style={{marginTop:"0px"}}>
<Editors value={value} theme={"vs-grey"} height={"600px"} visible/>

View File

@ -5,7 +5,7 @@ import { AlignCenterBetween , Blueline , FlexAJ } from '../../Component/layout';
function head({manager , parameter}){
return(
<AlignCenterBetween>
<span className="font-20">工作流配置</span>
<span className="font-20">引擎配置</span>
<FlexAJ>
{
parameter && <Blueline onClick={parameter}>参数管理</Blueline>

View File

@ -1,13 +1,14 @@
import React , { useEffect } from 'react';
import React, {useEffect, useState} from 'react';
import { WhiteBack } from '../Component/layout';
import './ops.scss';
import devops from '../Images/devops.png';
import { Route, Switch } from 'react-router-dom';
import Loadable from 'react-loadable';
import Loading from '../../Loading';
import axios from 'axios';
const About = Loadable({
loader: () => import('./About'),
loader: () => import('./subIndex'),
loading: Loading,
})
const New = Loadable({
@ -32,11 +33,68 @@ const Params = Loadable({
})
export default ((props)=>{
const {isManager, project, projectDetail} = props;
const { projectsId, owner } = props.match.params;
const [jianmu_devops, setJianmu_devops] = useState(undefined);
useEffect(()=>{
if(projectDetail){
const { author, name} = projectDetail;
document.title = `引擎-${author.name}/${name}`;
}
}, [projectDetail])
useEffect(()=>{
// simplejianmu_devops
const url = `/${owner}/${projectsId}/simple.json`;
axios.get(url).then((result) => {
if (result && result.data) {
result.data.jianmu_devops && setJianmu_devops(encodeURIComponent(result.data.jianmu_devops));
}
})
}, [])
useEffect(() => {
window.addEventListener("message", iframeHeight, false);
return () => {
window.removeEventListener("message", iframeHeight, false);
}
})
function iframeHeight(e){
if (e && e.data && typeof(e.data) === "string") {
let myHeight = JSON.parse(e.data);
if (document.querySelector("#devopsIframe")) {
document.querySelector("#devopsIframe").height = myHeight.height;
}
}
}
function iframeLoad() {
try {
let myIframe = document.getElementById("devopsIframe");
if (myIframe.contentDocument) {
myIframe.height = myIframe.contentDocument.querySelector('.el-main').clientHeight + 260;
}
} catch (err) {
console.error(err);
}
}
return(
<WhiteBack className="opsPanel">
<Switch {...props}>
<WhiteBack className={`opsPanel ${isManager ? 'main' : ''}`}>
{/* 嵌入devops */}
{jianmu_devops && project && isManager && <iframe title={`devopsIframe`} src={`${project.jianmu_devops_url}/oauth2/authorize?code=${jianmu_devops}`} id={`devopsIframe`} frameBorder="0" name={`devopsIframe`} width="100%" onLoad={iframeLoad} height={'auto'}></iframe>}
{!isManager && <div className='nullJurisdictionBox'>
<div className='jurTil font-16'>引擎配置</div>
<div className='jurCont mt25'>
<img src={devops} alt="" width={110}/>
<div className='font-18 mt30'>暂无权限仅仓库管理员可访问</div>
</div>
</div>}
{/* 旧引擎页面 */}
{/* <Switch {...props}>
<Route path="/:owner/:projectsId/devops/params"
render={
(p) => (<Params {...props} {...p}/>)
@ -52,7 +110,6 @@ export default ((props)=>{
(p) => (<New {...props} {...p}/>)
}
></Route>
<Route path="/:owner/:projectsId/devops/list/:branch"
render={
(p) => (<Stucture {...props} {...p}/>)
@ -63,13 +120,14 @@ export default ((props)=>{
(p) => (<New {...props} {...p}/>)
}
></Route>
{/* 原本的两种合为一个 */}
//
<Route path="/:owner/:projectsId/devops"
render={
(p) =>{return( p.location.state.open_devops?<Dispose {...props} {...p}/>:<About {...props} {...p}/>)}
// (p) =>{return( p.location && p.location.state && p.location.state.open_devops?<Dispose {...props} {...p}/>:<About {...props} {...p}/>)}
(p) =>{return(<About {...props} {...p}/>)}
}
></Route>
</Switch>
</Switch> */}
</WhiteBack>
)
})

View File

@ -103,8 +103,8 @@ function Params(props){
<New visble={visible} successFunc={successFunc} CancelFunc={CancelFunc} editList={editList}/>
<Banner>
<FlexAJ>
<span className="font-18">工作流 - 参数管理</span>
<Link to={`/${owner}/${projectsId}/devops`} className="font-14 color-grey-9 ml20">返回</Link>
<span className="font-18">引擎 - 参数管理</span>
<Link to={{pathname:`/${owner}/${projectsId}/devops`,state:{open_devops:true}}} className="font-14 color-grey-9 ml20">返回</Link>
</FlexAJ>
</Banner>
<Div className="disposeList">

View File

@ -126,7 +126,7 @@ function Mould(props){
<div>
<New wrappedComponentRef={(f) => childRef.current = f} ref={childRef} visible={visible} onCancel={()=>setVisible(false)} onOk={onOk}></New>
<Banner>
<FlexAJ><span>工作流 - 模板管理</span><Link to={`/${owner}/${projectsId}/devops`} className="font-14 color-grey-9">返回</Link></FlexAJ>
<FlexAJ><span>引擎 - 模板管理</span><Link to={`/${owner}/${projectsId}/devops`} className="font-14 color-grey-9">返回</Link></FlexAJ>
</Banner>
<Div className="disposeList">
<FlexAJ>

View File

@ -5,7 +5,7 @@ import { Menu, Popconfirm } from "antd";
import { TagsLine } from "../Component/OpsStatus";
import { Time } from "../Utils/Time";
import { truncateCommitId } from "../common/util";
import { getUrl } from 'educoder';
import { getImageUrl } from 'educoder';
const SubMenu = Menu.SubMenu;
const Img = styled.img`
@ -70,7 +70,7 @@ export default ({ data, repeatSet , chooseSteps }) => {
<div>
<FlexAJ className="leftheader">
<AlignCenter>
<Img src={getUrl(`/images/${data && data.author && data.author.image_url}`)} />
<Img src={getImageUrl(`/${data && data.author && data.author.image_url}`)} />
{data && data.started &&
<span className="nest">
开始时间<span> {data.started}</span>

View File

@ -12,7 +12,7 @@ function ServiceModal({sureModal}){
<div className="mt30" style={{textAlign:"center"}}>
<Radio.Group value={type} onChange={changeType}>
<Radio value={1}>自有服务器</Radio>
<Radio value={2}>Trustie服务器</Radio>
<Radio value={2}>GitLink服务器</Radio>
</Radio.Group>
<p className="mt30"><Button type="primary" onClick={()=>sureModal(type)}>下一步</Button></p>
</div>

View File

@ -290,7 +290,7 @@ function Structure(props,ref){
<Banner>
<FlexAJ>
<span>构建列表</span>
<Link to={`/${owner}/${projectsId}/devops`} className="font-15 color-grey-9">返回</Link>
<Link to={{pathname:`/${owner}/${projectsId}/devops`,state:{open_devops:true}}} className="font-15 color-grey-9">返回</Link>
</FlexAJ>
</Banner>
<Div>

Some files were not shown because too many files have changed in this diff Show More