[{"C:\\GitHub\\pro-blocks\\_scripts\\getPrettierFiles.js":"1","C:\\GitHub\\pro-blocks\\_scripts\\lint-prettier.js":"2","C:\\GitHub\\pro-blocks\\_scripts\\prettier.js":"3","C:\\GitHub\\pro-blocks\\_scripts\\screenshot.js":"4","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\_mock.ts":"5","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\components\\Applications\\index.tsx":"6","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\components\\ArticleListContent\\index.tsx":"7","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\components\\Articles\\index.tsx":"8","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\components\\AvatarList\\index.tsx":"9","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\components\\Projects\\index.tsx":"10","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\data.d.ts":"11","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\index.tsx":"12","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\model.ts":"13","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\service.ts":"14","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\_mock.ts":"15","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\components\\base.tsx":"16","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\components\\binding.tsx":"17","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\components\\GeographicView.tsx":"18","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\components\\notification.tsx":"19","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\components\\PhoneView.tsx":"20","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\components\\security.tsx":"21","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\data.d.ts":"22","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\index.tsx":"23","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\locales\\en-US.ts":"24","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\locales\\zh-CN.ts":"25","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\locales\\zh-TW.ts":"26","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\model.ts":"27","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\service.ts":"28","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\_mock.ts":"29","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\autoHeight.tsx":"30","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\Bar\\index.tsx":"31","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\bizcharts.d.ts":"32","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\bizcharts.tsx":"33","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\ChartCard\\index.tsx":"34","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\Field\\index.tsx":"35","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\Gauge\\index.tsx":"36","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\index.tsx":"37","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\MiniArea\\index.tsx":"38","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\MiniBar\\index.tsx":"39","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\MiniProgress\\index.tsx":"40","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\Pie\\index.tsx":"41","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\TagCloud\\index.tsx":"42","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\TimelineChart\\index.tsx":"43","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\WaterWave\\index.tsx":"44","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\IntroduceRow.tsx":"45","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\NumberInfo\\index.tsx":"46","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\OfflineData.tsx":"47","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\PageLoading\\index.tsx":"48","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\ProportionSales.tsx":"49","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\SalesCard.tsx":"50","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\TopSearch.tsx":"51","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Trend\\index.tsx":"52","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\data.d.ts":"53","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\index.tsx":"54","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\locales\\en-US.ts":"55","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\locales\\pt-BR.ts":"56","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\locales\\zh-CN.ts":"57","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\locales\\zh-TW.ts":"58","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\model.tsx":"59","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\service.tsx":"60","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\utils\\utils.ts":"61","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\utils\\Yuan.tsx":"62","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\_mock.ts":"63","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\ActiveChart\\index.tsx":"64","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\autoHeight.tsx":"65","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\Gauge\\index.tsx":"66","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\index.tsx":"67","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\MiniArea\\index.tsx":"68","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\Pie\\index.tsx":"69","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\TagCloud\\index.tsx":"70","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\WaterWave\\index.tsx":"71","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\data.d.ts":"72","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\index.tsx":"73","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\locales\\en-US.ts":"74","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\locales\\pt-BR.ts":"75","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\locales\\zh-CN.ts":"76","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\locales\\zh-TW.ts":"77","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\model.ts":"78","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\service.ts":"79","C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\_mock.ts":"80","C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\components\\EditableLinkGroup\\index.tsx":"81","C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\components\\Radar\\autoHeight.tsx":"82","C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\components\\Radar\\index.tsx":"83","C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\data.d.ts":"84","C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\index.tsx":"85","C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\model.ts":"86","C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\service.ts":"87","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\common\\IconFont\\index.ts":"88","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorContextMenu\\FlowContextMenu.tsx":"89","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorContextMenu\\index.tsx":"90","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorContextMenu\\KoniContextMenu.tsx":"91","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorContextMenu\\MenuItem.tsx":"92","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorContextMenu\\MindContextMenu.tsx":"93","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorDetailPanel\\DetailForm.tsx":"94","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorDetailPanel\\FlowDetailPanel.tsx":"95","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorDetailPanel\\index.tsx":"96","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorDetailPanel\\KoniDetailPanel.tsx":"97","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorDetailPanel\\MindDetailPanel.tsx":"98","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorItemPanel\\FlowItemPanel.tsx":"99","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorItemPanel\\index.tsx":"100","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorItemPanel\\KoniItemPanel.tsx":"101","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorMinimap\\index.tsx":"102","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorToolbar\\FlowToolbar.tsx":"103","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorToolbar\\index.tsx":"104","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorToolbar\\KoniToolbar.tsx":"105","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorToolbar\\MindToolbar.tsx":"106","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorToolbar\\ToolbarButton.tsx":"107","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\index.tsx":"108","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\locales\\en-US.ts":"109","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\locales\\zh-CN.ts":"110","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\common\\IconFont\\index.ts":"111","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorContextMenu\\FlowContextMenu.tsx":"112","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorContextMenu\\index.tsx":"113","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorContextMenu\\KoniContextMenu.tsx":"114","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorContextMenu\\MenuItem.tsx":"115","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorContextMenu\\MindContextMenu.tsx":"116","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorDetailPanel\\DetailForm.tsx":"117","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorDetailPanel\\FlowDetailPanel.tsx":"118","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorDetailPanel\\index.tsx":"119","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorDetailPanel\\KoniDetailPanel.tsx":"120","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorDetailPanel\\MindDetailPanel.tsx":"121","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorItemPanel\\FlowItemPanel.tsx":"122","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorItemPanel\\index.tsx":"123","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorItemPanel\\KoniItemPanel.tsx":"124","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorMinimap\\index.tsx":"125","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorToolbar\\FlowToolbar.tsx":"126","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorToolbar\\index.tsx":"127","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorToolbar\\KoniToolbar.tsx":"128","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorToolbar\\MindToolbar.tsx":"129","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorToolbar\\ToolbarButton.tsx":"130","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\index.tsx":"131","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\locales\\en-US.ts":"132","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\locales\\zh-CN.ts":"133","C:\\GitHub\\pro-blocks\\EditorMind\\src\\common\\IconFont\\index.ts":"134","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorContextMenu\\FlowContextMenu.tsx":"135","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorContextMenu\\index.tsx":"136","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorContextMenu\\KoniContextMenu.tsx":"137","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorContextMenu\\MenuItem.tsx":"138","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorContextMenu\\MindContextMenu.tsx":"139","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorDetailPanel\\DetailForm.tsx":"140","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorDetailPanel\\FlowDetailPanel.tsx":"141","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorDetailPanel\\index.tsx":"142","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorDetailPanel\\KoniDetailPanel.tsx":"143","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorDetailPanel\\MindDetailPanel.tsx":"144","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorItemPanel\\FlowItemPanel.tsx":"145","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorItemPanel\\index.tsx":"146","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorItemPanel\\KoniItemPanel.tsx":"147","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorMinimap\\index.tsx":"148","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorToolbar\\FlowToolbar.tsx":"149","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorToolbar\\index.tsx":"150","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorToolbar\\KoniToolbar.tsx":"151","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorToolbar\\MindToolbar.tsx":"152","C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorToolbar\\ToolbarButton.tsx":"153","C:\\GitHub\\pro-blocks\\EditorMind\\src\\index.tsx":"154","C:\\GitHub\\pro-blocks\\EditorMind\\src\\locales\\en-US.ts":"155","C:\\GitHub\\pro-blocks\\EditorMind\\src\\locales\\zh-CN.ts":"156","C:\\GitHub\\pro-blocks\\Exception403\\src\\components\\Exception\\index.tsx":"157","C:\\GitHub\\pro-blocks\\Exception403\\src\\components\\Exception\\typeConfig.ts":"158","C:\\GitHub\\pro-blocks\\Exception403\\src\\index.tsx":"159","C:\\GitHub\\pro-blocks\\Exception403\\src\\locales\\en-US.ts":"160","C:\\GitHub\\pro-blocks\\Exception403\\src\\locales\\pt-BR.ts":"161","C:\\GitHub\\pro-blocks\\Exception403\\src\\locales\\zh-CN.ts":"162","C:\\GitHub\\pro-blocks\\Exception403\\src\\locales\\zh-TW.ts":"163","C:\\GitHub\\pro-blocks\\Exception404\\src\\components\\Exception\\index.tsx":"164","C:\\GitHub\\pro-blocks\\Exception404\\src\\components\\Exception\\typeConfig.ts":"165","C:\\GitHub\\pro-blocks\\Exception404\\src\\index.tsx":"166","C:\\GitHub\\pro-blocks\\Exception404\\src\\locales\\en-US.ts":"167","C:\\GitHub\\pro-blocks\\Exception404\\src\\locales\\pt-BR.ts":"168","C:\\GitHub\\pro-blocks\\Exception404\\src\\locales\\zh-CN.ts":"169","C:\\GitHub\\pro-blocks\\Exception404\\src\\locales\\zh-TW.ts":"170","C:\\GitHub\\pro-blocks\\Exception500\\src\\components\\Exception\\index.tsx":"171","C:\\GitHub\\pro-blocks\\Exception500\\src\\components\\Exception\\typeConfig.ts":"172","C:\\GitHub\\pro-blocks\\Exception500\\src\\index.tsx":"173","C:\\GitHub\\pro-blocks\\Exception500\\src\\locales\\en-US.ts":"174","C:\\GitHub\\pro-blocks\\Exception500\\src\\locales\\pt-BR.ts":"175","C:\\GitHub\\pro-blocks\\Exception500\\src\\locales\\zh-CN.ts":"176","C:\\GitHub\\pro-blocks\\Exception500\\src\\locales\\zh-TW.ts":"177","C:\\GitHub\\pro-blocks\\FormAdvancedForm\\src\\_mock.ts":"178","C:\\GitHub\\pro-blocks\\FormAdvancedForm\\src\\components\\FooterToolbar\\index.tsx":"179","C:\\GitHub\\pro-blocks\\FormAdvancedForm\\src\\components\\TableForm.tsx":"180","C:\\GitHub\\pro-blocks\\FormAdvancedForm\\src\\index.tsx":"181","C:\\GitHub\\pro-blocks\\FormAdvancedForm\\src\\model.ts":"182","C:\\GitHub\\pro-blocks\\FormAdvancedForm\\src\\service.ts":"183","C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\_mock.ts":"184","C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\index.tsx":"185","C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\locales\\en-US.ts":"186","C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\locales\\pt-BR.ts":"187","C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\locales\\zh-CN.ts":"188","C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\locales\\zh-TW.ts":"189","C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\model.ts":"190","C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\service.ts":"191","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\_mock.ts":"192","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\components\\Result\\index.tsx":"193","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\components\\Step1\\index.tsx":"194","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\components\\Step2\\index.tsx":"195","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\components\\Step3\\index.tsx":"196","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\index.tsx":"197","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\locales\\en-US.ts":"198","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\locales\\pt-BR.ts":"199","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\locales\\zh-CN.ts":"200","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\locales\\zh-TW.ts":"201","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\model.ts":"202","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\service.ts":"203","C:\\GitHub\\pro-blocks\\ListBasicList\\src\\_mock.ts":"204","C:\\GitHub\\pro-blocks\\ListBasicList\\src\\data.d.ts":"205","C:\\GitHub\\pro-blocks\\ListBasicList\\src\\index.tsx":"206","C:\\GitHub\\pro-blocks\\ListBasicList\\src\\model.ts":"207","C:\\GitHub\\pro-blocks\\ListBasicList\\src\\Result\\index.tsx":"208","C:\\GitHub\\pro-blocks\\ListBasicList\\src\\service.ts":"209","C:\\GitHub\\pro-blocks\\ListCardList\\src\\_mock.ts":"210","C:\\GitHub\\pro-blocks\\ListCardList\\src\\data.d.ts":"211","C:\\GitHub\\pro-blocks\\ListCardList\\src\\index.tsx":"212","C:\\GitHub\\pro-blocks\\ListCardList\\src\\model.ts":"213","C:\\GitHub\\pro-blocks\\ListCardList\\src\\service.ts":"214","C:\\GitHub\\pro-blocks\\ListSearch\\src\\index.tsx":"215","C:\\GitHub\\pro-blocks\\ListSearchApplications\\src\\_mock.ts":"216","C:\\GitHub\\pro-blocks\\ListSearchApplications\\src\\components\\StandardFormRow\\index.tsx":"217","C:\\GitHub\\pro-blocks\\ListSearchApplications\\src\\components\\TagSelect\\index.tsx":"218","C:\\GitHub\\pro-blocks\\ListSearchApplications\\src\\data.d.ts":"219","C:\\GitHub\\pro-blocks\\ListSearchApplications\\src\\index.tsx":"220","C:\\GitHub\\pro-blocks\\ListSearchApplications\\src\\model.ts":"221","C:\\GitHub\\pro-blocks\\ListSearchApplications\\src\\service.ts":"222","C:\\GitHub\\pro-blocks\\ListSearchArticles\\src\\_mock.ts":"223","C:\\GitHub\\pro-blocks\\ListSearchArticles\\src\\components\\ArticleListContent\\index.tsx":"224","C:\\GitHub\\pro-blocks\\ListSearchArticles\\src\\components\\StandardFormRow\\index.tsx":"225","C:\\GitHub\\pro-blocks\\ListSearchArticles\\src\\components\\TagSelect\\index.tsx":"226","C:\\GitHub\\pro-blocks\\ListSearchArticles\\src\\data.d.ts":"227","C:\\GitHub\\pro-blocks\\ListSearchArticles\\src\\index.tsx":"228","C:\\GitHub\\pro-blocks\\ListSearchArticles\\src\\model.ts":"229","C:\\GitHub\\pro-blocks\\ListSearchArticles\\src\\service.ts":"230","C:\\GitHub\\pro-blocks\\ListSearchProjects\\src\\_mock.ts":"231","C:\\GitHub\\pro-blocks\\ListSearchProjects\\src\\components\\AvatarList\\index.tsx":"232","C:\\GitHub\\pro-blocks\\ListSearchProjects\\src\\components\\StandardFormRow\\index.tsx":"233","C:\\GitHub\\pro-blocks\\ListSearchProjects\\src\\components\\TagSelect\\index.tsx":"234","C:\\GitHub\\pro-blocks\\ListSearchProjects\\src\\data.d.ts":"235","C:\\GitHub\\pro-blocks\\ListSearchProjects\\src\\index.tsx":"236","C:\\GitHub\\pro-blocks\\ListSearchProjects\\src\\model.ts":"237","C:\\GitHub\\pro-blocks\\ListSearchProjects\\src\\service.ts":"238","C:\\GitHub\\pro-blocks\\ListTableList\\src\\_mock.ts":"239","C:\\GitHub\\pro-blocks\\ListTableList\\src\\components\\CreateForm.tsx":"240","C:\\GitHub\\pro-blocks\\ListTableList\\src\\components\\StandardTable\\index.tsx":"241","C:\\GitHub\\pro-blocks\\ListTableList\\src\\components\\UpdateForm.tsx":"242","C:\\GitHub\\pro-blocks\\ListTableList\\src\\data.d.ts":"243","C:\\GitHub\\pro-blocks\\ListTableList\\src\\index.tsx":"244","C:\\GitHub\\pro-blocks\\ListTableList\\src\\model.ts":"245","C:\\GitHub\\pro-blocks\\ListTableList\\src\\service.ts":"246","C:\\GitHub\\pro-blocks\\ProfileAdvanced\\src\\_mock.ts":"247","C:\\GitHub\\pro-blocks\\ProfileAdvanced\\src\\data.d.ts":"248","C:\\GitHub\\pro-blocks\\ProfileAdvanced\\src\\index.tsx":"249","C:\\GitHub\\pro-blocks\\ProfileAdvanced\\src\\model.ts":"250","C:\\GitHub\\pro-blocks\\ProfileAdvanced\\src\\service.ts":"251","C:\\GitHub\\pro-blocks\\ProfileBasic\\src\\_mock.ts":"252","C:\\GitHub\\pro-blocks\\ProfileBasic\\src\\data.d.ts":"253","C:\\GitHub\\pro-blocks\\ProfileBasic\\src\\index.tsx":"254","C:\\GitHub\\pro-blocks\\ProfileBasic\\src\\model.ts":"255","C:\\GitHub\\pro-blocks\\ProfileBasic\\src\\service.ts":"256","C:\\GitHub\\pro-blocks\\ResultFail\\src\\index.tsx":"257","C:\\GitHub\\pro-blocks\\ResultFail\\src\\locales\\en-US.ts":"258","C:\\GitHub\\pro-blocks\\ResultFail\\src\\locales\\zh-CN.ts":"259","C:\\GitHub\\pro-blocks\\ResultFail\\src\\locales\\zh-TW.ts":"260","C:\\GitHub\\pro-blocks\\ResultFail\\src\\Result\\index.tsx":"261","C:\\GitHub\\pro-blocks\\ResultSuccess\\src\\index.tsx":"262","C:\\GitHub\\pro-blocks\\ResultSuccess\\src\\locales\\en-US.ts":"263","C:\\GitHub\\pro-blocks\\ResultSuccess\\src\\locales\\zh-CN.ts":"264","C:\\GitHub\\pro-blocks\\ResultSuccess\\src\\locales\\zh-TW.ts":"265","C:\\GitHub\\pro-blocks\\ResultSuccess\\src\\Result\\index.tsx":"266","C:\\GitHub\\pro-blocks\\typings.d.ts":"267","C:\\GitHub\\pro-blocks\\UserLogin\\src\\_mock.ts":"268","C:\\GitHub\\pro-blocks\\UserLogin\\src\\components\\Login\\index.tsx":"269","C:\\GitHub\\pro-blocks\\UserLogin\\src\\components\\Login\\LoginContext.tsx":"270","C:\\GitHub\\pro-blocks\\UserLogin\\src\\components\\Login\\LoginItem.tsx":"271","C:\\GitHub\\pro-blocks\\UserLogin\\src\\components\\Login\\LoginSubmit.tsx":"272","C:\\GitHub\\pro-blocks\\UserLogin\\src\\components\\Login\\LoginTab.tsx":"273","C:\\GitHub\\pro-blocks\\UserLogin\\src\\components\\Login\\map.tsx":"274","C:\\GitHub\\pro-blocks\\UserLogin\\src\\index.tsx":"275","C:\\GitHub\\pro-blocks\\UserLogin\\src\\locales\\en-US.ts":"276","C:\\GitHub\\pro-blocks\\UserLogin\\src\\locales\\zh-CN.ts":"277","C:\\GitHub\\pro-blocks\\UserLogin\\src\\locales\\zh-TW.ts":"278","C:\\GitHub\\pro-blocks\\UserLogin\\src\\model.ts":"279","C:\\GitHub\\pro-blocks\\UserLogin\\src\\service.ts":"280","C:\\GitHub\\pro-blocks\\UserLogin\\src\\utils\\utils.ts":"281","C:\\GitHub\\pro-blocks\\UserRegister\\src\\_mock.ts":"282","C:\\GitHub\\pro-blocks\\UserRegister\\src\\index.tsx":"283","C:\\GitHub\\pro-blocks\\UserRegister\\src\\locales\\en-US.ts":"284","C:\\GitHub\\pro-blocks\\UserRegister\\src\\locales\\zh-CN.ts":"285","C:\\GitHub\\pro-blocks\\UserRegister\\src\\locales\\zh-TW.ts":"286","C:\\GitHub\\pro-blocks\\UserRegister\\src\\model.ts":"287","C:\\GitHub\\pro-blocks\\UserRegister\\src\\service.ts":"288","C:\\GitHub\\pro-blocks\\UserRegisterResult\\src\\index.tsx":"289","C:\\GitHub\\pro-blocks\\UserRegisterResult\\src\\locales\\en-US.ts":"290","C:\\GitHub\\pro-blocks\\UserRegisterResult\\src\\locales\\zh-CN.ts":"291","C:\\GitHub\\pro-blocks\\UserRegisterResult\\src\\locales\\zh-TW.ts":"292","C:\\GitHub\\pro-blocks\\UserRegisterResult\\src\\Result\\index.tsx":"293"},{"size":896,"mtime":1557141143109,"results":"294","hashOfConfig":"295"},{"size":1302,"mtime":1557141143109,"results":"296","hashOfConfig":"295"},{"size":1237,"mtime":1557141143109,"results":"297","hashOfConfig":"295"},{"size":3666,"mtime":1560687484879,"results":"298","hashOfConfig":"295"},{"size":8589,"mtime":1560687484457,"results":"299","hashOfConfig":"295"},{"size":3312,"mtime":1558551873064,"results":"300","hashOfConfig":"295"},{"size":764,"mtime":1558550739899,"results":"301","hashOfConfig":"295"},{"size":1809,"mtime":1558551998519,"results":"302","hashOfConfig":"295"},{"size":2264,"mtime":1558550195073,"results":"303","hashOfConfig":"295"},{"size":1710,"mtime":1558552019991,"results":"304","hashOfConfig":"295"},{"size":1298,"mtime":1558550982374,"results":"305","hashOfConfig":"295"},{"size":7560,"mtime":1560687484475,"results":"306","hashOfConfig":"295"},{"size":1522,"mtime":1558551261686,"results":"307","hashOfConfig":"295"},{"size":238,"mtime":1559475888038,"results":"308","hashOfConfig":"295"},{"size":1686,"mtime":1559475888039,"results":"309","hashOfConfig":"295"},{"size":6953,"mtime":1560687484488,"results":"310","hashOfConfig":"295"},{"size":1831,"mtime":1557141142474,"results":"311","hashOfConfig":"295"},{"size":3727,"mtime":1557141142456,"results":"312","hashOfConfig":"295"},{"size":1613,"mtime":1557141142475,"results":"313","hashOfConfig":"295"},{"size":1025,"mtime":1557141142456,"results":"314","hashOfConfig":"295"},{"size":2965,"mtime":1557141142476,"results":"315","hashOfConfig":"295"},{"size":754,"mtime":1558533623964,"results":"316","hashOfConfig":"295"},{"size":4388,"mtime":1560687484491,"results":"317","hashOfConfig":"295"},{"size":3354,"mtime":1557795842826,"results":"318","hashOfConfig":"295"},{"size":3099,"mtime":1557795842827,"results":"319","hashOfConfig":"295"},{"size":3099,"mtime":1557795842829,"results":"320","hashOfConfig":"295"},{"size":2681,"mtime":1557141142488,"results":"321","hashOfConfig":"295"},{"size":380,"mtime":1559475888039,"results":"322","hashOfConfig":"295"},{"size":3325,"mtime":1559475888041,"results":"323","hashOfConfig":"295"},{"size":1959,"mtime":1557141142569,"results":"324","hashOfConfig":"295"},{"size":3039,"mtime":1557141142537,"results":"325","hashOfConfig":"295"},{"size":59,"mtime":1557141142584,"results":"326","hashOfConfig":"295"},{"size":65,"mtime":1557141142584,"results":"327","hashOfConfig":"295"},{"size":2520,"mtime":1560687484506,"results":"328","hashOfConfig":"295"},{"size":431,"mtime":1557141142553,"results":"329","hashOfConfig":"295"},{"size":4180,"mtime":1557141142553,"results":"330","hashOfConfig":"295"},{"size":803,"mtime":1557141142584,"results":"331","hashOfConfig":"295"},{"size":3061,"mtime":1557141142553,"results":"332","hashOfConfig":"295"},{"size":1467,"mtime":1557141142553,"results":"333","hashOfConfig":"295"},{"size":1114,"mtime":1557141142553,"results":"334","hashOfConfig":"295"},{"size":8110,"mtime":1557141142569,"results":"335","hashOfConfig":"295"},{"size":5098,"mtime":1557141142569,"results":"336","hashOfConfig":"295"},{"size":3384,"mtime":1557141142569,"results":"337","hashOfConfig":"295"},{"size":6124,"mtime":1557141142569,"results":"338","hashOfConfig":"295"},{"size":5244,"mtime":1557141142584,"results":"339","hashOfConfig":"295"},{"size":1427,"mtime":1557141142584,"results":"340","hashOfConfig":"295"},{"size":2241,"mtime":1557141142584,"results":"341","hashOfConfig":"295"},{"size":277,"mtime":1557141142584,"results":"342","hashOfConfig":"295"},{"size":2412,"mtime":1560687484524,"results":"343","hashOfConfig":"295"},{"size":5901,"mtime":1560687484526,"results":"344","hashOfConfig":"295"},{"size":3744,"mtime":1557141142600,"results":"345","hashOfConfig":"295"},{"size":911,"mtime":1557141142600,"results":"346","hashOfConfig":"295"},{"size":1106,"mtime":1558533623968,"results":"347","hashOfConfig":"295"},{"size":6065,"mtime":1560687484531,"results":"348","hashOfConfig":"295"},{"size":1620,"mtime":1557141142600,"results":"349","hashOfConfig":"295"},{"size":1678,"mtime":1557141142600,"results":"350","hashOfConfig":"295"},{"size":1656,"mtime":1557141142600,"results":"351","hashOfConfig":"295"},{"size":1656,"mtime":1557141142615,"results":"352","hashOfConfig":"295"},{"size":1734,"mtime":1557141142615,"results":"353","hashOfConfig":"295"},{"size":120,"mtime":1559475888043,"results":"354","hashOfConfig":"295"},{"size":1315,"mtime":1560687484537,"results":"355","hashOfConfig":"295"},{"size":617,"mtime":1557141142615,"results":"356","hashOfConfig":"295"},{"size":162,"mtime":1559475888045,"results":"357","hashOfConfig":"295"},{"size":2653,"mtime":1557141142772,"results":"358","hashOfConfig":"295"},{"size":1921,"mtime":1557141142787,"results":"359","hashOfConfig":"295"},{"size":4181,"mtime":1557141142772,"results":"360","hashOfConfig":"295"},{"size":308,"mtime":1557141142803,"results":"361","hashOfConfig":"295"},{"size":3086,"mtime":1557141142787,"results":"362","hashOfConfig":"295"},{"size":8110,"mtime":1557141142787,"results":"363","hashOfConfig":"295"},{"size":5097,"mtime":1557141142787,"results":"364","hashOfConfig":"295"},{"size":6124,"mtime":1557141142787,"results":"365","hashOfConfig":"295"},{"size":75,"mtime":1558460006547,"results":"366","hashOfConfig":"295"},{"size":9145,"mtime":1558460111310,"results":"367","hashOfConfig":"295"},{"size":1012,"mtime":1557141142803,"results":"368","hashOfConfig":"295"},{"size":1059,"mtime":1557141142803,"results":"369","hashOfConfig":"295"},{"size":971,"mtime":1557141142803,"results":"370","hashOfConfig":"295"},{"size":971,"mtime":1557141142803,"results":"371","hashOfConfig":"295"},{"size":983,"mtime":1558460010845,"results":"372","hashOfConfig":"295"},{"size":105,"mtime":1559475888045,"results":"373","hashOfConfig":"295"},{"size":7112,"mtime":1559475888047,"results":"374","hashOfConfig":"295"},{"size":1097,"mtime":1558857205792,"results":"375","hashOfConfig":"295"},{"size":1959,"mtime":1557141143093,"results":"376","hashOfConfig":"295"},{"size":5096,"mtime":1557141143093,"results":"377","hashOfConfig":"295"},{"size":1164,"mtime":1558533623975,"results":"378","hashOfConfig":"295"},{"size":7754,"mtime":1560690030305,"results":"379","hashOfConfig":"295"},{"size":2450,"mtime":1557141143109,"results":"380","hashOfConfig":"295"},{"size":371,"mtime":1559475888052,"results":"381","hashOfConfig":"295"},{"size":174,"mtime":1558533623984,"results":"382","hashOfConfig":"295"},{"size":1108,"mtime":1558533623986,"results":"383","hashOfConfig":"295"},{"size":210,"mtime":1558533623994,"results":"384","hashOfConfig":"295"},{"size":82,"mtime":1558533623988,"results":"385","hashOfConfig":"295"},{"size":691,"mtime":1558533623989,"results":"386","hashOfConfig":"295"},{"size":731,"mtime":1558533623991,"results":"387","hashOfConfig":"295"},{"size":3365,"mtime":1560687484579,"results":"388","hashOfConfig":"295"},{"size":838,"mtime":1558533623996,"results":"389","hashOfConfig":"295"},{"size":210,"mtime":1558533624003,"results":"390","hashOfConfig":"295"},{"size":82,"mtime":1558533623999,"results":"391","hashOfConfig":"295"},{"size":536,"mtime":1558533624001,"results":"392","hashOfConfig":"295"},{"size":7035,"mtime":1558533624006,"results":"393","hashOfConfig":"295"},{"size":132,"mtime":1558533624012,"results":"394","hashOfConfig":"295"},{"size":26914,"mtime":1558533624008,"results":"395","hashOfConfig":"295"},{"size":287,"mtime":1558533624014,"results":"396","hashOfConfig":"295"},{"size":1319,"mtime":1558533624015,"results":"397","hashOfConfig":"295"},{"size":174,"mtime":1558533624022,"results":"398","hashOfConfig":"295"},{"size":70,"mtime":1558533624016,"results":"399","hashOfConfig":"295"},{"size":1035,"mtime":1558533624018,"results":"400","hashOfConfig":"295"},{"size":796,"mtime":1558533624020,"results":"401","hashOfConfig":"295"},{"size":1471,"mtime":1559475888057,"results":"402","hashOfConfig":"295"},{"size":129,"mtime":1558847381174,"results":"403","hashOfConfig":"295"},{"size":124,"mtime":1558847381174,"results":"404","hashOfConfig":"295"},{"size":174,"mtime":1558533624040,"results":"405","hashOfConfig":"295"},{"size":1108,"mtime":1558533624042,"results":"406","hashOfConfig":"295"},{"size":210,"mtime":1558533624048,"results":"407","hashOfConfig":"295"},{"size":82,"mtime":1558533624043,"results":"408","hashOfConfig":"295"},{"size":691,"mtime":1558533624044,"results":"409","hashOfConfig":"295"},{"size":731,"mtime":1558533624046,"results":"410","hashOfConfig":"295"},{"size":3365,"mtime":1560687484587,"results":"411","hashOfConfig":"295"},{"size":838,"mtime":1558533624050,"results":"412","hashOfConfig":"295"},{"size":210,"mtime":1558533624054,"results":"413","hashOfConfig":"295"},{"size":82,"mtime":1558533624051,"results":"414","hashOfConfig":"295"},{"size":536,"mtime":1558533624052,"results":"415","hashOfConfig":"295"},{"size":7035,"mtime":1558533624056,"results":"416","hashOfConfig":"295"},{"size":132,"mtime":1558533624059,"results":"417","hashOfConfig":"295"},{"size":26914,"mtime":1558533624057,"results":"418","hashOfConfig":"295"},{"size":287,"mtime":1558533624060,"results":"419","hashOfConfig":"295"},{"size":1319,"mtime":1558533624062,"results":"420","hashOfConfig":"295"},{"size":174,"mtime":1558533624069,"results":"421","hashOfConfig":"295"},{"size":70,"mtime":1558533624064,"results":"422","hashOfConfig":"295"},{"size":1035,"mtime":1558533624066,"results":"423","hashOfConfig":"295"},{"size":796,"mtime":1558533624067,"results":"424","hashOfConfig":"295"},{"size":1471,"mtime":1559475888061,"results":"425","hashOfConfig":"295"},{"size":173,"mtime":1558847381174,"results":"426","hashOfConfig":"295"},{"size":133,"mtime":1558847381174,"results":"427","hashOfConfig":"295"},{"size":174,"mtime":1558533624080,"results":"428","hashOfConfig":"295"},{"size":1108,"mtime":1558533624082,"results":"429","hashOfConfig":"295"},{"size":210,"mtime":1558533624086,"results":"430","hashOfConfig":"295"},{"size":82,"mtime":1558533624083,"results":"431","hashOfConfig":"295"},{"size":691,"mtime":1558533624084,"results":"432","hashOfConfig":"295"},{"size":731,"mtime":1558533624085,"results":"433","hashOfConfig":"295"},{"size":3365,"mtime":1560687484598,"results":"434","hashOfConfig":"295"},{"size":838,"mtime":1558533624089,"results":"435","hashOfConfig":"295"},{"size":210,"mtime":1558533624094,"results":"436","hashOfConfig":"295"},{"size":82,"mtime":1558533624090,"results":"437","hashOfConfig":"295"},{"size":536,"mtime":1558533624091,"results":"438","hashOfConfig":"295"},{"size":7035,"mtime":1558533624097,"results":"439","hashOfConfig":"295"},{"size":132,"mtime":1558533624100,"results":"440","hashOfConfig":"295"},{"size":26914,"mtime":1558533624098,"results":"441","hashOfConfig":"295"},{"size":287,"mtime":1558533624101,"results":"442","hashOfConfig":"295"},{"size":1319,"mtime":1558533624103,"results":"443","hashOfConfig":"295"},{"size":174,"mtime":1558533624109,"results":"444","hashOfConfig":"295"},{"size":70,"mtime":1558533624104,"results":"445","hashOfConfig":"295"},{"size":1035,"mtime":1558533624106,"results":"446","hashOfConfig":"295"},{"size":796,"mtime":1558533624106,"results":"447","hashOfConfig":"295"},{"size":1356,"mtime":1559475888066,"results":"448","hashOfConfig":"295"},{"size":204,"mtime":1558847381871,"results":"449","hashOfConfig":"295"},{"size":177,"mtime":1558847381174,"results":"450","hashOfConfig":"295"},{"size":2109,"mtime":1557141142725,"results":"451","hashOfConfig":"295"},{"size":751,"mtime":1557141142725,"results":"452","hashOfConfig":"295"},{"size":373,"mtime":1558457244816,"results":"453","hashOfConfig":"295"},{"size":144,"mtime":1557141142725,"results":"454","hashOfConfig":"295"},{"size":156,"mtime":1557141142725,"results":"455","hashOfConfig":"295"},{"size":136,"mtime":1557141142725,"results":"456","hashOfConfig":"295"},{"size":136,"mtime":1557141142725,"results":"457","hashOfConfig":"295"},{"size":2109,"mtime":1557141142740,"results":"458","hashOfConfig":"295"},{"size":751,"mtime":1557141142740,"results":"459","hashOfConfig":"295"},{"size":373,"mtime":1558457312873,"results":"460","hashOfConfig":"295"},{"size":145,"mtime":1557141142740,"results":"461","hashOfConfig":"295"},{"size":159,"mtime":1557141142740,"results":"462","hashOfConfig":"295"},{"size":139,"mtime":1557141142740,"results":"463","hashOfConfig":"295"},{"size":139,"mtime":1557141142756,"results":"464","hashOfConfig":"295"},{"size":2109,"mtime":1557141142756,"results":"465","hashOfConfig":"295"},{"size":751,"mtime":1557141142756,"results":"466","hashOfConfig":"295"},{"size":373,"mtime":1558457325676,"results":"467","hashOfConfig":"295"},{"size":142,"mtime":1557141142756,"results":"468","hashOfConfig":"295"},{"size":155,"mtime":1557141142756,"results":"469","hashOfConfig":"295"},{"size":130,"mtime":1557141142756,"results":"470","hashOfConfig":"295"},{"size":130,"mtime":1557141142772,"results":"471","hashOfConfig":"295"},{"size":106,"mtime":1559475888067,"results":"472","hashOfConfig":"295"},{"size":1423,"mtime":1557141142502,"results":"473","hashOfConfig":"295"},{"size":6732,"mtime":1557141142503,"results":"474","hashOfConfig":"295"},{"size":12149,"mtime":1560687484624,"results":"475","hashOfConfig":"295"},{"size":712,"mtime":1557141142512,"results":"476","hashOfConfig":"295"},{"size":167,"mtime":1559475888073,"results":"477","hashOfConfig":"295"},{"size":106,"mtime":1559475888074,"results":"478","hashOfConfig":"295"},{"size":8863,"mtime":1560687484633,"results":"479","hashOfConfig":"295"},{"size":3271,"mtime":1557141142631,"results":"480","hashOfConfig":"295"},{"size":2994,"mtime":1557141142631,"results":"481","hashOfConfig":"295"},{"size":3046,"mtime":1557141142631,"results":"482","hashOfConfig":"295"},{"size":3043,"mtime":1557141142631,"results":"483","hashOfConfig":"295"},{"size":709,"mtime":1557141142631,"results":"484","hashOfConfig":"295"},{"size":167,"mtime":1559475888078,"results":"485","hashOfConfig":"295"},{"size":148,"mtime":1559475888079,"results":"486","hashOfConfig":"295"},{"size":1155,"mtime":1557141142953,"results":"487","hashOfConfig":"295"},{"size":4629,"mtime":1560687484649,"results":"488","hashOfConfig":"295"},{"size":3588,"mtime":1560687484654,"results":"489","hashOfConfig":"295"},{"size":2300,"mtime":1557141142968,"results":"490","hashOfConfig":"295"},{"size":1768,"mtime":1559475888083,"results":"491","hashOfConfig":"295"},{"size":3271,"mtime":1557141142968,"results":"492","hashOfConfig":"295"},{"size":2994,"mtime":1557141142968,"results":"493","hashOfConfig":"295"},{"size":3046,"mtime":1557141142968,"results":"494","hashOfConfig":"295"},{"size":3043,"mtime":1557141142968,"results":"495","hashOfConfig":"295"},{"size":1561,"mtime":1557141142984,"results":"496","hashOfConfig":"295"},{"size":167,"mtime":1559475888084,"results":"497","hashOfConfig":"295"},{"size":5091,"mtime":1560687484675,"results":"498","hashOfConfig":"295"},{"size":548,"mtime":1559475888089,"results":"499","hashOfConfig":"295"},{"size":10976,"mtime":1560687484677,"results":"500","hashOfConfig":"295"},{"size":1944,"mtime":1557141142662,"results":"501","hashOfConfig":"295"},{"size":1155,"mtime":1557141142647,"results":"502","hashOfConfig":"295"},{"size":1087,"mtime":1559475888094,"results":"503","hashOfConfig":"295"},{"size":4187,"mtime":1559475888095,"results":"504","hashOfConfig":"295"},{"size":547,"mtime":1558550969166,"results":"505","hashOfConfig":"295"},{"size":3884,"mtime":1559475888095,"results":"506","hashOfConfig":"295"},{"size":1063,"mtime":1557141142709,"results":"507","hashOfConfig":"295"},{"size":158,"mtime":1559475888096,"results":"508","hashOfConfig":"295"},{"size":2122,"mtime":1559475888101,"results":"509","hashOfConfig":"295"},{"size":4161,"mtime":1559475888102,"results":"510","hashOfConfig":"295"},{"size":810,"mtime":1558533624142,"results":"511","hashOfConfig":"295"},{"size":4872,"mtime":1558533624148,"results":"512","hashOfConfig":"295"},{"size":543,"mtime":1559475888105,"results":"513","hashOfConfig":"295"},{"size":7258,"mtime":1560687484706,"results":"514","hashOfConfig":"295"},{"size":1055,"mtime":1558533624155,"results":"515","hashOfConfig":"295"},{"size":199,"mtime":1559475888106,"results":"516","hashOfConfig":"295"},{"size":4161,"mtime":1559475888108,"results":"517","hashOfConfig":"295"},{"size":777,"mtime":1558533624181,"results":"518","hashOfConfig":"295"},{"size":810,"mtime":1558533624189,"results":"519","hashOfConfig":"295"},{"size":4872,"mtime":1558533624195,"results":"520","hashOfConfig":"295"},{"size":543,"mtime":1558533624197,"results":"521","hashOfConfig":"295"},{"size":8146,"mtime":1560687484724,"results":"522","hashOfConfig":"295"},{"size":1475,"mtime":1558533624202,"results":"523","hashOfConfig":"295"},{"size":200,"mtime":1559475888108,"results":"524","hashOfConfig":"295"},{"size":4161,"mtime":1559475888109,"results":"525","hashOfConfig":"295"},{"size":2264,"mtime":1558533624223,"results":"526","hashOfConfig":"295"},{"size":810,"mtime":1558533624227,"results":"527","hashOfConfig":"295"},{"size":4872,"mtime":1558533624231,"results":"528","hashOfConfig":"295"},{"size":543,"mtime":1558533624233,"results":"529","hashOfConfig":"295"},{"size":5912,"mtime":1560687484744,"results":"530","hashOfConfig":"295"},{"size":1055,"mtime":1558533624237,"results":"531","hashOfConfig":"295"},{"size":158,"mtime":1559475888110,"results":"532","hashOfConfig":"295"},{"size":4253,"mtime":1560687484755,"results":"533","hashOfConfig":"295"},{"size":1150,"mtime":1560687484760,"results":"534","hashOfConfig":"295"},{"size":4397,"mtime":1560687484766,"results":"535","hashOfConfig":"295"},{"size":7135,"mtime":1560687484771,"results":"536","hashOfConfig":"295"},{"size":602,"mtime":1558533624246,"results":"537","hashOfConfig":"295"},{"size":13046,"mtime":1560687484774,"results":"538","hashOfConfig":"295"},{"size":1792,"mtime":1557141142999,"results":"539","hashOfConfig":"295"},{"size":727,"mtime":1560687484779,"results":"540","hashOfConfig":"295"},{"size":1353,"mtime":1559475888117,"results":"541","hashOfConfig":"295"},{"size":602,"mtime":1558533624255,"results":"542","hashOfConfig":"295"},{"size":11092,"mtime":1560687484790,"results":"543","hashOfConfig":"295"},{"size":1055,"mtime":1557141142537,"results":"544","hashOfConfig":"295"},{"size":128,"mtime":1559475888117,"results":"545","hashOfConfig":"295"},{"size":1539,"mtime":1559475888118,"results":"546","hashOfConfig":"295"},{"size":389,"mtime":1558533624259,"results":"547","hashOfConfig":"295"},{"size":5890,"mtime":1560687484803,"results":"548","hashOfConfig":"295"},{"size":1001,"mtime":1557141142694,"results":"549","hashOfConfig":"295"},{"size":122,"mtime":1559475888126,"results":"550","hashOfConfig":"295"},{"size":1933,"mtime":1560687484823,"results":"551","hashOfConfig":"295"},{"size":569,"mtime":1557141142834,"results":"552","hashOfConfig":"295"},{"size":506,"mtime":1557141142834,"results":"553","hashOfConfig":"295"},{"size":506,"mtime":1557141142834,"results":"554","hashOfConfig":"295"},{"size":1155,"mtime":1557141142818,"results":"555","hashOfConfig":"295"},{"size":3999,"mtime":1560687484838,"results":"556","hashOfConfig":"295"},{"size":1202,"mtime":1557141142850,"results":"557","hashOfConfig":"295"},{"size":1117,"mtime":1557141142850,"results":"558","hashOfConfig":"295"},{"size":1117,"mtime":1557141142850,"results":"559","hashOfConfig":"295"},{"size":1155,"mtime":1557141142834,"results":"560","hashOfConfig":"295"},{"size":391,"mtime":1557141143124,"results":"561","hashOfConfig":"295"},{"size":836,"mtime":1559475888129,"results":"562","hashOfConfig":"295"},{"size":4235,"mtime":1560687484854,"results":"563","hashOfConfig":"295"},{"size":341,"mtime":1557141143015,"results":"564","hashOfConfig":"295"},{"size":4918,"mtime":1560687484844,"results":"565","hashOfConfig":"295"},{"size":596,"mtime":1560687484846,"results":"566","hashOfConfig":"295"},{"size":1148,"mtime":1560687484848,"results":"567","hashOfConfig":"295"},{"size":1321,"mtime":1557141143031,"results":"568","hashOfConfig":"295"},{"size":6867,"mtime":1560687484857,"results":"569","hashOfConfig":"295"},{"size":4315,"mtime":1557141143031,"results":"570","hashOfConfig":"295"},{"size":4075,"mtime":1557141143031,"results":"571","hashOfConfig":"295"},{"size":4069,"mtime":1557141143031,"results":"572","hashOfConfig":"295"},{"size":2126,"mtime":1558629983379,"results":"573","hashOfConfig":"295"},{"size":341,"mtime":1559475888130,"results":"574","hashOfConfig":"295"},{"size":343,"mtime":1558629997147,"results":"575","hashOfConfig":"295"},{"size":214,"mtime":1559475888131,"results":"576","hashOfConfig":"295"},{"size":10619,"mtime":1560687484866,"results":"577","hashOfConfig":"295"},{"size":4315,"mtime":1557141143046,"results":"578","hashOfConfig":"295"},{"size":4075,"mtime":1557141143046,"results":"579","hashOfConfig":"295"},{"size":4069,"mtime":1557141143046,"results":"580","hashOfConfig":"295"},{"size":1060,"mtime":1557141143046,"results":"581","hashOfConfig":"295"},{"size":231,"mtime":1559475888135,"results":"582","hashOfConfig":"295"},{"size":1240,"mtime":1557141143062,"results":"583","hashOfConfig":"295"},{"size":1286,"mtime":1557141143078,"results":"584","hashOfConfig":"295"},{"size":1239,"mtime":1557141143078,"results":"585","hashOfConfig":"295"},{"size":1236,"mtime":1557141143078,"results":"586","hashOfConfig":"295"},{"size":1155,"mtime":1560690097590,"results":"587","hashOfConfig":"295"},{"filePath":"588","messages":"589","errorCount":3,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"ew1o2c",{"filePath":"590","messages":"591","errorCount":8,"warningCount":3,"fixableErrorCount":1,"fixableWarningCount":0,"source":"592"},{"filePath":"593","messages":"594","errorCount":8,"warningCount":3,"fixableErrorCount":1,"fixableWarningCount":0,"source":"595"},{"filePath":"596","messages":"597","errorCount":19,"warningCount":8,"fixableErrorCount":10,"fixableWarningCount":0,"source":"598"},{"filePath":"599","messages":"600","errorCount":2,"warningCount":2,"fixableErrorCount":1,"fixableWarningCount":0,"source":"601"},{"filePath":"602","messages":"603","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"604","messages":"605","errorCount":1,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"606","messages":"607","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"608","messages":"609","errorCount":3,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":"610"},{"filePath":"611","messages":"612","errorCount":2,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"613","messages":"614","errorCount":5,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"615","messages":"616","errorCount":17,"warningCount":2,"fixableErrorCount":3,"fixableWarningCount":0,"source":"617"},{"filePath":"618","messages":"619","errorCount":12,"warningCount":0,"fixableErrorCount":6,"fixableWarningCount":0,"source":"620"},{"filePath":"621","messages":"622","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"623"},{"filePath":"624","messages":"625","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"626","messages":"627","errorCount":4,"warningCount":3,"fixableErrorCount":2,"fixableWarningCount":0,"source":"628"},{"filePath":"629","messages":"630","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"631","messages":"632","errorCount":4,"warningCount":2,"fixableErrorCount":2,"fixableWarningCount":0,"source":"633"},{"filePath":"634","messages":"635","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"636","messages":"637","errorCount":2,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"638","messages":"639","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"640","messages":"641","errorCount":5,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"642","messages":"643","errorCount":17,"warningCount":1,"fixableErrorCount":1,"fixableWarningCount":0,"source":"644"},{"filePath":"645","messages":"646","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"647","messages":"648","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"649","messages":"650","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"651","messages":"652","errorCount":6,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":"653"},{"filePath":"654","messages":"655","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"656","messages":"657","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"658","messages":"659","errorCount":11,"warningCount":2,"fixableErrorCount":8,"fixableWarningCount":0,"source":"660"},{"filePath":"661","messages":"662","errorCount":9,"warningCount":1,"fixableErrorCount":5,"fixableWarningCount":0,"source":"663"},{"filePath":"664","messages":"665","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"666","messages":"667","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"668","messages":"669","errorCount":3,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"670","messages":"671","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"672","messages":"673","errorCount":7,"warningCount":4,"fixableErrorCount":1,"fixableWarningCount":0,"source":"674"},{"filePath":"675","messages":"676","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"677","messages":"678","errorCount":7,"warningCount":9,"fixableErrorCount":1,"fixableWarningCount":0,"source":"679"},{"filePath":"680","messages":"681","errorCount":4,"warningCount":1,"fixableErrorCount":1,"fixableWarningCount":0,"source":"682"},{"filePath":"683","messages":"684","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"685"},{"filePath":"686","messages":"687","errorCount":18,"warningCount":6,"fixableErrorCount":9,"fixableWarningCount":0,"source":"688"},{"filePath":"689","messages":"690","errorCount":17,"warningCount":11,"fixableErrorCount":7,"fixableWarningCount":0,"source":"691"},{"filePath":"692","messages":"693","errorCount":6,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"694"},{"filePath":"695","messages":"696","errorCount":6,"warningCount":0,"fixableErrorCount":5,"fixableWarningCount":0,"source":"697"},{"filePath":"698","messages":"699","errorCount":9,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"700"},{"filePath":"701","messages":"702","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"703"},{"filePath":"704","messages":"705","errorCount":6,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":"706"},{"filePath":"707","messages":"708","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"709","messages":"710","errorCount":6,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"711"},{"filePath":"712","messages":"713","errorCount":4,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"714"},{"filePath":"715","messages":"716","errorCount":4,"warningCount":1,"fixableErrorCount":1,"fixableWarningCount":0,"source":"717"},{"filePath":"718","messages":"719","errorCount":2,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"720","messages":"721","errorCount":11,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"722","messages":"723","errorCount":16,"warningCount":2,"fixableErrorCount":6,"fixableWarningCount":0,"source":"724"},{"filePath":"725","messages":"726","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"727","messages":"728","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"729","messages":"730","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"731","messages":"732","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"733","messages":"734","errorCount":7,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"735"},{"filePath":"736","messages":"737","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"738","messages":"739","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"740","messages":"741","errorCount":2,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":"742"},{"filePath":"743","messages":"744","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"745","messages":"746","errorCount":5,"warningCount":0,"fixableErrorCount":4,"fixableWarningCount":0,"source":"747"},{"filePath":"748","messages":"749","errorCount":10,"warningCount":2,"fixableErrorCount":8,"fixableWarningCount":0,"source":"750"},{"filePath":"751","messages":"752","errorCount":7,"warningCount":4,"fixableErrorCount":1,"fixableWarningCount":0,"source":"753"},{"filePath":"754","messages":"755","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"756"},{"filePath":"757","messages":"758","errorCount":7,"warningCount":10,"fixableErrorCount":1,"fixableWarningCount":0,"source":"759"},{"filePath":"760","messages":"761","errorCount":18,"warningCount":6,"fixableErrorCount":9,"fixableWarningCount":0,"source":"688"},{"filePath":"762","messages":"763","errorCount":17,"warningCount":11,"fixableErrorCount":7,"fixableWarningCount":0,"source":"764"},{"filePath":"765","messages":"766","errorCount":6,"warningCount":0,"fixableErrorCount":5,"fixableWarningCount":0,"source":"697"},{"filePath":"767","messages":"768","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"769","messages":"770","errorCount":11,"warningCount":1,"fixableErrorCount":1,"fixableWarningCount":0,"source":"771"},{"filePath":"772","messages":"773","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"774","messages":"775","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"776","messages":"777","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"778","messages":"779","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"780","messages":"781","errorCount":8,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"782"},{"filePath":"783","messages":"784","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"785","messages":"786","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"787","messages":"788","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"789","messages":"790","errorCount":11,"warningCount":2,"fixableErrorCount":8,"fixableWarningCount":0,"source":"660"},{"filePath":"791","messages":"792","errorCount":9,"warningCount":2,"fixableErrorCount":5,"fixableWarningCount":0,"source":"793"},{"filePath":"794","messages":"795","errorCount":9,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"796","messages":"797","errorCount":10,"warningCount":2,"fixableErrorCount":2,"fixableWarningCount":0,"source":"798"},{"filePath":"799","messages":"800","errorCount":2,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"801","messages":"802","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"803","messages":"804","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"805","messages":"806","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"807"},{"filePath":"808","messages":"809","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"810","messages":"811","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"812","messages":"813","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"814"},{"filePath":"815","messages":"816","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"817"},{"filePath":"818","messages":"819","errorCount":2,"warningCount":2,"fixableErrorCount":2,"fixableWarningCount":0,"source":"820"},{"filePath":"821","messages":"822","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"823"},{"filePath":"824","messages":"825","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"826","messages":"827","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"828","messages":"829","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"830"},{"filePath":"831","messages":"832","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"833"},{"filePath":"834","messages":"835","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"836","messages":"837","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"838"},{"filePath":"839","messages":"840","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"841"},{"filePath":"842","messages":"843","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"844"},{"filePath":"845","messages":"846","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"847","messages":"848","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"849","messages":"850","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"851"},{"filePath":"852","messages":"853","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"854"},{"filePath":"855","messages":"856","errorCount":5,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"857"},{"filePath":"858","messages":"859","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"860","messages":"861","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"862","messages":"863","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"864","messages":"865","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"807"},{"filePath":"866","messages":"867","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"868","messages":"869","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"870","messages":"871","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"814"},{"filePath":"872","messages":"873","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"817"},{"filePath":"874","messages":"875","errorCount":3,"warningCount":2,"fixableErrorCount":2,"fixableWarningCount":0,"source":"820"},{"filePath":"876","messages":"877","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"823"},{"filePath":"878","messages":"879","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"880","messages":"881","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"882","messages":"883","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"830"},{"filePath":"884","messages":"885","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"833"},{"filePath":"886","messages":"887","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"888","messages":"889","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"838"},{"filePath":"890","messages":"891","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"841"},{"filePath":"892","messages":"893","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"844"},{"filePath":"894","messages":"895","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"896","messages":"897","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"898","messages":"899","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"851"},{"filePath":"900","messages":"901","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"854"},{"filePath":"902","messages":"903","errorCount":6,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"904"},{"filePath":"905","messages":"906","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"907","messages":"908","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"909","messages":"910","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"911","messages":"912","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"807"},{"filePath":"913","messages":"914","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"915","messages":"916","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"917","messages":"918","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"814"},{"filePath":"919","messages":"920","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"817"},{"filePath":"921","messages":"922","errorCount":3,"warningCount":2,"fixableErrorCount":2,"fixableWarningCount":0,"source":"820"},{"filePath":"923","messages":"924","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"823"},{"filePath":"925","messages":"926","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"927","messages":"928","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"929","messages":"930","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"830"},{"filePath":"931","messages":"932","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"833"},{"filePath":"933","messages":"934","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"935","messages":"936","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"838"},{"filePath":"937","messages":"938","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"841"},{"filePath":"939","messages":"940","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"844"},{"filePath":"941","messages":"942","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"943","messages":"944","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"945","messages":"946","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"851"},{"filePath":"947","messages":"948","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"854"},{"filePath":"949","messages":"950","errorCount":6,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"951"},{"filePath":"952","messages":"953","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"954","messages":"955","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"956","messages":"957","errorCount":3,"warningCount":2,"fixableErrorCount":1,"fixableWarningCount":0,"source":"958"},{"filePath":"959","messages":"960","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"961","messages":"962","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"963","messages":"964","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"965","messages":"966","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"967","messages":"968","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"969","messages":"970","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"971","messages":"972","errorCount":4,"warningCount":2,"fixableErrorCount":1,"fixableWarningCount":0,"source":"958"},{"filePath":"973","messages":"974","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"975","messages":"976","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"977","messages":"978","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"979","messages":"980","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"981","messages":"982","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"983","messages":"984","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"985","messages":"986","errorCount":4,"warningCount":2,"fixableErrorCount":1,"fixableWarningCount":0,"source":"958"},{"filePath":"987","messages":"988","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"989","messages":"990","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"991","messages":"992","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"993","messages":"994","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"995","messages":"996","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"997","messages":"998","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"999","messages":"1000","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1001","messages":"1002","errorCount":2,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1003","messages":"1004","errorCount":4,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1005"},{"filePath":"1006","messages":"1007","errorCount":10,"warningCount":1,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1008"},{"filePath":"1009","messages":"1010","errorCount":3,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1011"},{"filePath":"1012","messages":"1013","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1014","messages":"1015","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1016","messages":"1017","errorCount":8,"warningCount":1,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1018"},{"filePath":"1019","messages":"1020","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1021","messages":"1022","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1023","messages":"1024","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1025","messages":"1026","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1027","messages":"1028","errorCount":3,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1029"},{"filePath":"1030","messages":"1031","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1032","messages":"1033","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1034","messages":"1035","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1036","messages":"1037","errorCount":4,"warningCount":1,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1038"},{"filePath":"1039","messages":"1040","errorCount":4,"warningCount":2,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1041"},{"filePath":"1042","messages":"1043","errorCount":3,"warningCount":1,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1044"},{"filePath":"1045","messages":"1046","errorCount":5,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1047","messages":"1048","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1049","messages":"1050","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1051","messages":"1052","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1053","messages":"1054","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1055","messages":"1056","errorCount":7,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1057"},{"filePath":"1058","messages":"1059","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1060","messages":"1061","errorCount":4,"warningCount":2,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1062"},{"filePath":"1063","messages":"1064","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1065","messages":"1066","errorCount":16,"warningCount":1,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1067"},{"filePath":"1068","messages":"1069","errorCount":8,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1070"},{"filePath":"1071","messages":"1072","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1073","messages":"1074","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1075","messages":"1076","errorCount":2,"warningCount":1,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1077"},{"filePath":"1078","messages":"1079","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1080","messages":"1081","errorCount":15,"warningCount":1,"fixableErrorCount":4,"fixableWarningCount":0,"source":"1082"},{"filePath":"1083","messages":"1084","errorCount":8,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1085"},{"filePath":"1086","messages":"1087","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1088"},{"filePath":"1089","messages":"1090","errorCount":5,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1091","messages":"1092","errorCount":2,"warningCount":2,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1093"},{"filePath":"1094","messages":"1095","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1096","messages":"1097","errorCount":3,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1098"},{"filePath":"1099","messages":"1100","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1101","messages":"1102","errorCount":11,"warningCount":3,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1103"},{"filePath":"1104","messages":"1105","errorCount":8,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1106"},{"filePath":"1107","messages":"1108","errorCount":3,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1109"},{"filePath":"1110","messages":"1111","errorCount":2,"warningCount":2,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1093"},{"filePath":"1112","messages":"1113","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1114","messages":"1115","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1116","messages":"1117","errorCount":3,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1098"},{"filePath":"1118","messages":"1119","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1120","messages":"1121","errorCount":10,"warningCount":3,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1122"},{"filePath":"1123","messages":"1124","errorCount":9,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1125"},{"filePath":"1126","messages":"1127","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1128"},{"filePath":"1129","messages":"1130","errorCount":2,"warningCount":2,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1093"},{"filePath":"1131","messages":"1132","errorCount":2,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":"610"},{"filePath":"1133","messages":"1134","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1135","messages":"1136","errorCount":3,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1098"},{"filePath":"1137","messages":"1138","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1139","messages":"1140","errorCount":12,"warningCount":3,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1141"},{"filePath":"1142","messages":"1143","errorCount":8,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1106"},{"filePath":"1144","messages":"1145","errorCount":1,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1088"},{"filePath":"1146","messages":"1147","errorCount":7,"warningCount":6,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1148"},{"filePath":"1149","messages":"1150","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1151","messages":"1152","errorCount":3,"warningCount":1,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1153"},{"filePath":"1154","messages":"1155","errorCount":4,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1156"},{"filePath":"1157","messages":"1158","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1159","messages":"1160","errorCount":6,"warningCount":2,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1161"},{"filePath":"1162","messages":"1163","errorCount":8,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1164"},{"filePath":"1165","messages":"1166","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1167"},{"filePath":"1168","messages":"1169","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1170","messages":"1171","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1172","messages":"1173","errorCount":6,"warningCount":1,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1174"},{"filePath":"1175","messages":"1176","errorCount":6,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1177"},{"filePath":"1178","messages":"1179","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1180","messages":"1181","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1182","messages":"1183","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1184","messages":"1185","errorCount":14,"warningCount":7,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1186"},{"filePath":"1187","messages":"1188","errorCount":8,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1189"},{"filePath":"1190","messages":"1191","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1192","messages":"1193","errorCount":2,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1194","messages":"1195","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1196","messages":"1197","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1198","messages":"1199","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1200","messages":"1201","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1202","messages":"1203","errorCount":3,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1204"},{"filePath":"1205","messages":"1206","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1207","messages":"1208","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1209","messages":"1210","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1211","messages":"1212","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1213","messages":"1214","errorCount":2,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1215"},{"filePath":"1216","messages":"1217","errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1218","messages":"1219","errorCount":10,"warningCount":5,"fixableErrorCount":9,"fixableWarningCount":0,"source":"1220"},{"filePath":"1221","messages":"1222","errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1223","messages":"1224","errorCount":7,"warningCount":7,"fixableErrorCount":5,"fixableWarningCount":0,"source":"1225"},{"filePath":"1226","messages":"1227","errorCount":3,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1228"},{"filePath":"1229","messages":"1230","errorCount":2,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1231"},{"filePath":"1232","messages":"1233","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1234","messages":"1235","errorCount":15,"warningCount":7,"fixableErrorCount":5,"fixableWarningCount":0,"source":"1236"},{"filePath":"1237","messages":"1238","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1239","messages":"1240","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1241","messages":"1242","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1243","messages":"1244","errorCount":7,"warningCount":0,"fixableErrorCount":3,"fixableWarningCount":0,"source":"1245"},{"filePath":"1246","messages":"1247","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1248","messages":"1249","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1250","messages":"1251","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"1252","messages":"1253","errorCount":17,"warningCount":3,"fixableErrorCount":5,"fixableWarningCount":0,"source":"1254"},{"filePath":"1255","messages":"1256","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1257","messages":"1258","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1259","messages":"1260","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1261","messages":"1262","errorCount":6,"warningCount":0,"fixableErrorCount":2,"fixableWarningCount":0,"source":"1263"},{"filePath":"1264","messages":"1265","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1266","messages":"1267","errorCount":3,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":"1268"},{"filePath":"1269","messages":"1270","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1271","messages":"1272","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1273","messages":"1274","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"1275","messages":"1276","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"C:\\GitHub\\pro-blocks\\_scripts\\getPrettierFiles.js",["1277","1278","1279"],"C:\\GitHub\\pro-blocks\\_scripts\\lint-prettier.js",["1280","1281","1282","1283","1284","1285","1286","1287","1288","1289","1290"],"/**\n * copy to https://github.com/facebook/react/blob/master/scripts/prettier/index.js\n * prettier api doc https://prettier.io/docs/en/api.html\n *----------*****--------------\n * lint file is prettier\n *----------*****--------------\n */\n\nconst prettier = require('prettier');\nconst fs = require('fs');\nconst chalk = require('chalk');\nconst prettierConfigPath = require.resolve('../.prettierrc');\n\nconst files = process.argv.slice(2);\n\nlet didError = false;\n\nfiles.forEach(file => {\n Promise.all([\n prettier.resolveConfig(file, {\n config: prettierConfigPath,\n }),\n prettier.getFileInfo(file),\n ])\n .then(resolves => {\n const [options, fileInfo] = resolves;\n if (fileInfo.ignored) {\n return;\n }\n const input = fs.readFileSync(file, 'utf8');\n const withParserOptions = {\n ...options,\n parser: fileInfo.inferredParser,\n };\n const output = prettier.format(input, withParserOptions);\n if (output !== input) {\n fs.writeFileSync(file, output, 'utf8');\n console.log(chalk.green(`${file} is prettier`));\n }\n })\n .catch(e => {\n didError = true;\n })\n .finally(() => {\n if (didError) {\n process.exit(1);\n }\n console.log(chalk.hex('#1890FF')('prettier success!'));\n });\n});\n","C:\\GitHub\\pro-blocks\\_scripts\\prettier.js",["1291","1292","1293","1294","1295","1296","1297","1298","1299","1300","1301"],"/**\n * copy to https://github.com/facebook/react/blob/master/scripts/prettier/index.js\n * prettier api doc https://prettier.io/docs/en/api.html\n *----------*****--------------\n * prettier all js and all ts.\n *----------*****--------------\n */\n\nconst prettier = require('prettier');\nconst fs = require('fs');\nconst getPrettierFiles = require('./getPrettierFiles');\nconst prettierConfigPath = require.resolve('../.prettierrc');\nconst chalk = require('chalk');\n\nlet didError = false;\n\nconst files = getPrettierFiles();\n\nfiles.forEach(file => {\n const options = prettier.resolveConfig.sync(file, {\n config: prettierConfigPath,\n });\n const fileInfo = prettier.getFileInfo.sync(file);\n if (fileInfo.ignored) {\n return;\n }\n try {\n const input = fs.readFileSync(file, 'utf8');\n const withParserOptions = {\n ...options,\n parser: fileInfo.inferredParser,\n };\n const output = prettier.format(input, withParserOptions);\n if (output !== input) {\n fs.writeFileSync(file, output, 'utf8');\n console.log(chalk.green(`${file} is prettier`));\n }\n } catch (e) {\n console.log(e);\n didError = true;\n }\n});\n\nif (didError) {\n process.exit(1);\n}\nconsole.log(chalk.hex('#1890FF')('prettier success!'));\n","C:\\GitHub\\pro-blocks\\_scripts\\screenshot.js",["1302","1303","1304","1305","1306","1307","1308","1309","1310","1311","1312","1313","1314","1315","1316","1317","1318","1319","1320","1321","1322","1323","1324","1325","1326","1327","1328"],"/* eslint-disable eslint-comments/disable-enable-pair */\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable eslint-comments/no-unlimited-disable */\nconst { spawn } = require('child_process');\nconst puppeteer = require('puppeteer');\nconst { join, dirname } = require('path');\nconst fs = require('fs');\nconst getNpmRegistry = require('getnpmregistry');\nconst execa = require('execa');\nconst { kill } = require('cross-port-killer');\n\nconst env = Object.create(process.env);\nenv.BROWSER = 'none';\nenv.PORT = process.env.PORT || '2144';\nenv.TEST = true;\nenv.COMPRESS = 'none';\nenv.PROGRESS = 'none';\nenv.BLOCK_PAGES_LAYOUT = 'blankLayout';\n\nlet browser;\n\nconst startServer = async path => {\n let once = false;\n return new Promise(resolve => {\n env.PAGES_PATH = path + '/src';\n console.log(path);\n const startServer = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['run', 'start'], {\n env,\n });\n\n console.log('Starting development server');\n startServer.stdout.on('data', data => {\n console.log(data.toString());\n // hack code , wait umi\n if (!once && data.toString().indexOf('Compiled successfully') >= 0) {\n // eslint-disable-next-line\n once = true;\n return resolve(startServer);\n }\n });\n startServer.on('exit', () => {\n kill(env.PORT || 8000);\n });\n });\n};\n\nconst autoScroll = page => {\n return page.evaluate(() => {\n return new Promise((resolve, reject) => {\n var totalHeight = 0;\n var distance = 100;\n var timer = setInterval(() => {\n var scrollHeight = document.body.scrollHeight;\n window.scrollBy(0, distance);\n totalHeight += distance;\n if (totalHeight >= scrollHeight) {\n clearInterval(timer);\n resolve();\n }\n }, 100);\n });\n });\n};\n\nconst getImage = async (page, path) => {\n kill(env.PORT || 8000);\n const server = await startServer(path);\n\n await page.reload(`http://127.0.0.1:${env.PORT}`);\n\n await page.setViewport({\n width: 1440,\n height: 800,\n });\n\n await autoScroll(page);\n\n await page.screenshot({\n path: join(path, 'snapshot.png'),\n fullPage: true,\n });\n server.kill();\n};\n\nconst openBrowser = async () => {\n browser = await puppeteer.launch({\n headless: true,\n args: [\n '--disable-gpu',\n '--disable-dev-shm-usage',\n '--no-first-run',\n '--no-zygote',\n '--no-sandbox',\n ],\n });\n const page = await browser.newPage();\n page.goto(`http://127.0.0.1:${env.PORT}`);\n return page;\n};\n\nconst getAllFile = async () => {\n const cwd = join(__dirname, '../');\n const files = fs.readdirSync(cwd);\n return files.filter(path => {\n const itemPath = join(cwd, path);\n const stat = fs.statSync(itemPath);\n if (path.includes('.') || path.includes('_') || path.includes('node_modules')) {\n return false;\n }\n if (stat.isDirectory()) {\n return true;\n }\n return false;\n });\n};\n\ngetAllFile().then(async dirList => {\n const registry = await getNpmRegistry();\n const page = await openBrowser();\n const loopGetImage = async index => {\n try {\n console.log('install ' + dirList[index] + ' dependencies');\n await execa('yarn', ['install', `--registry=${registry}`], {\n cwd: join(__dirname, '../' + dirList[index]),\n });\n await getImage(page, dirList[index]);\n\n if (dirList.length > index && dirList[index + 1]) {\n console.log('Screenshot ' + dirList[index]);\n\n return loopGetImage(index + 1);\n }\n } catch (error) {\n console.log(error);\n }\n return Promise.resolve(true);\n };\n await loopGetImage(0);\n browser.close();\n});\n","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\_mock.ts",["1329","1330","1331","1332"],"import { ListItemDataType } from './data';\n\nconst titles = [\n 'Alipay',\n 'Angular',\n 'Ant Design',\n 'Ant Design Pro',\n 'Bootstrap',\n 'React',\n 'Vue',\n 'Webpack',\n];\nconst avatars = [\n 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay\n 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular\n 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design\n 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro\n 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap\n 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React\n 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue\n 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack\n];\n\nconst getNotice = [\n {\n id: 'xxx1',\n title: titles[0],\n logo: avatars[0],\n description: '那是一种内在的东西,他们到达不了,也无法触及的',\n updatedAt: new Date(),\n member: '科学搬砖组',\n href: '',\n memberLink: '',\n },\n {\n id: 'xxx2',\n title: titles[1],\n logo: avatars[1],\n description: '希望是一个好东西,也许是最好的,好东西是不会消亡的',\n updatedAt: new Date('2017-07-24'),\n member: '全组都是吴彦祖',\n href: '',\n memberLink: '',\n },\n {\n id: 'xxx3',\n title: titles[2],\n logo: avatars[2],\n description: '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆',\n updatedAt: new Date(),\n member: '中二少女团',\n href: '',\n memberLink: '',\n },\n {\n id: 'xxx4',\n title: titles[3],\n logo: avatars[3],\n description: '那时候我只会想自己想要什么,从不想自己拥有什么',\n updatedAt: new Date('2017-07-23'),\n member: '程序员日常',\n href: '',\n memberLink: '',\n },\n {\n id: 'xxx5',\n title: titles[4],\n logo: avatars[4],\n description: '凛冬将至',\n updatedAt: new Date('2017-07-23'),\n member: '高逼格设计天团',\n href: '',\n memberLink: '',\n },\n {\n id: 'xxx6',\n title: titles[5],\n logo: avatars[5],\n description: '生命就像一盒巧克力,结果往往出人意料',\n updatedAt: new Date('2017-07-23'),\n member: '骗你来学计算机',\n href: '',\n memberLink: '',\n },\n];\n\nconst covers = [\n 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png',\n 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png',\n 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png',\n 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png',\n];\nconst desc = [\n '那是一种内在的东西, 他们到达不了,也无法触及的',\n '希望是一个好东西,也许是最好的,好东西是不会消亡的',\n '生命就像一盒巧克力,结果往往出人意料',\n '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆',\n '那时候我只会想自己想要什么,从不想自己拥有什么',\n];\n\nconst user = [\n '付小小',\n '曲丽丽',\n '林东东',\n '周星星',\n '吴加好',\n '朱偏右',\n '鱼酱',\n '乐哥',\n '谭小仪',\n '仲尼',\n];\n\nfunction fakeList(count: number): ListItemDataType[] {\n const list = [];\n for (let i = 0; i < count; i += 1) {\n list.push({\n id: `fake-list-${i}`,\n owner: user[i % 10],\n title: titles[i % 8],\n avatar: avatars[i % 8],\n cover: parseInt(i / 4 + '', 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)],\n status: ['active', 'exception', 'normal'][i % 3] as\n | 'normal'\n | 'exception'\n | 'active'\n | 'success',\n percent: Math.ceil(Math.random() * 50) + 50,\n logo: avatars[i % 8],\n href: 'https://ant.design',\n updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(),\n createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(),\n subDescription: desc[i % 5],\n description:\n '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。',\n activeUser: Math.ceil(Math.random() * 100000) + 100000,\n newUser: Math.ceil(Math.random() * 1000) + 1000,\n star: Math.ceil(Math.random() * 100) + 100,\n like: Math.ceil(Math.random() * 100) + 100,\n message: Math.ceil(Math.random() * 10) + 10,\n content:\n '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。',\n members: [\n {\n avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',\n name: '曲丽丽',\n id: 'member1',\n },\n {\n avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',\n name: '王昭君',\n id: 'member2',\n },\n {\n avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',\n name: '董娜娜',\n id: 'member3',\n },\n ],\n });\n }\n\n return list;\n}\n\nfunction getFakeList(req: { query: any }, res: { json: (arg0: ListItemDataType[]) => void }) {\n const params = req.query;\n\n const count = params.count * 1 || 5;\n\n const result = fakeList(count);\n return res.json(result);\n}\n\nexport default {\n 'GET /api/fake_list': getFakeList,\n // 支持值为 Object 和 Array\n 'GET /api/currentUser': {\n name: 'Serati Ma',\n avatar: 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png',\n userid: '00000001',\n email: 'antdesign@alipay.com',\n signature: '海纳百川,有容乃大',\n title: '交互专家',\n group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED',\n tags: [\n {\n key: '0',\n label: '很有想法的',\n },\n {\n key: '1',\n label: '专注设计',\n },\n {\n key: '2',\n label: '辣~',\n },\n {\n key: '3',\n label: '大长腿',\n },\n {\n key: '4',\n label: '川妹子',\n },\n {\n key: '5',\n label: '海纳百川',\n },\n ],\n notice: [\n {\n id: 'xxx1',\n title: titles[0],\n logo: avatars[0],\n description: '那是一种内在的东西,他们到达不了,也无法触及的',\n updatedAt: new Date(),\n member: '科学搬砖组',\n href: '',\n memberLink: '',\n },\n {\n id: 'xxx2',\n title: titles[1],\n logo: avatars[1],\n description: '希望是一个好东西,也许是最好的,好东西是不会消亡的',\n updatedAt: new Date('2017-07-24'),\n member: '全组都是吴彦祖',\n href: '',\n memberLink: '',\n },\n {\n id: 'xxx3',\n title: titles[2],\n logo: avatars[2],\n description: '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆',\n updatedAt: new Date(),\n member: '中二少女团',\n href: '',\n memberLink: '',\n },\n {\n id: 'xxx4',\n title: titles[3],\n logo: avatars[3],\n description: '那时候我只会想自己想要什么,从不想自己拥有什么',\n updatedAt: new Date('2017-07-23'),\n member: '程序员日常',\n href: '',\n memberLink: '',\n },\n {\n id: 'xxx5',\n title: titles[4],\n logo: avatars[4],\n description: '凛冬将至',\n updatedAt: new Date('2017-07-23'),\n member: '高逼格设计天团',\n href: '',\n memberLink: '',\n },\n {\n id: 'xxx6',\n title: titles[5],\n logo: avatars[5],\n description: '生命就像一盒巧克力,结果往往出人意料',\n updatedAt: new Date('2017-07-23'),\n member: '骗你来学计算机',\n href: '',\n memberLink: '',\n },\n ],\n notifyCount: 12,\n unreadCount: 11,\n country: 'China',\n geographic: {\n province: {\n label: '浙江省',\n key: '330000',\n },\n city: {\n label: '杭州市',\n key: '330100',\n },\n },\n address: '西湖区工专路 77 号',\n phone: '0752-268888888',\n },\n};\n","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\components\\Applications\\index.tsx",["1333"],"C:\\GitHub\\pro-blocks\\AccountCenter\\src\\components\\ArticleListContent\\index.tsx",["1334","1335"],"C:\\GitHub\\pro-blocks\\AccountCenter\\src\\components\\Articles\\index.tsx",["1336"],"C:\\GitHub\\pro-blocks\\AccountCenter\\src\\components\\AvatarList\\index.tsx",["1337","1338","1339"],"import React from 'react';\nimport { Tooltip, Avatar } from 'antd';\nimport classNames from 'classnames';\nimport styles from './index.less';\n\nexport declare type SizeType = number | 'small' | 'default' | 'large';\n\nexport interface AvatarItemProps {\n tips: React.ReactNode;\n src: string;\n size?: SizeType;\n style?: React.CSSProperties;\n onClick?: () => void;\n}\n\nexport interface AvatarListProps {\n Item?: React.ReactElement;\n size?: SizeType;\n maxLength?: number;\n excessItemsStyle?: React.CSSProperties;\n style?: React.CSSProperties;\n children: React.ReactElement | Array>;\n}\n\nconst avatarSizeToClassName = (size?: SizeType) =>\n classNames(styles.avatarItem, {\n [styles.avatarItemLarge]: size === 'large',\n [styles.avatarItemSmall]: size === 'small',\n [styles.avatarItemMini]: size === 'mini',\n });\n\nconst Item: React.SFC = ({ src, size, tips, onClick = () => {} }) => {\n const cls = avatarSizeToClassName(size);\n\n return (\n
  • \n {tips ? (\n \n \n \n ) : (\n \n )}\n
  • \n );\n};\n\nconst AvatarList: React.SFC & { Item: typeof Item } = ({\n children,\n size,\n maxLength = 5,\n excessItemsStyle,\n ...other\n}) => {\n const numOfChildren = React.Children.count(children);\n const numToShow = maxLength >= numOfChildren ? numOfChildren : maxLength;\n const childrenArray = React.Children.toArray(children) as Array<\n React.ReactElement\n >;\n const childrenWithProps = childrenArray.slice(0, numToShow).map(child =>\n React.cloneElement(child, {\n size,\n }),\n );\n\n if (numToShow < numOfChildren) {\n const cls = avatarSizeToClassName(size);\n\n childrenWithProps.push(\n
  • \n {`+${numOfChildren - maxLength}`}\n
  • ,\n );\n }\n\n return (\n
    \n
      {childrenWithProps}
    \n
    \n );\n};\n\nAvatarList.Item = Item;\n\nexport default AvatarList;\n","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\components\\Projects\\index.tsx",["1340","1341"],"C:\\GitHub\\pro-blocks\\AccountCenter\\src\\data.d.ts",["1342","1343","1344","1345","1346","1347"],"C:\\GitHub\\pro-blocks\\AccountCenter\\src\\index.tsx",["1348","1349","1350","1351","1352","1353","1354","1355","1356","1357","1358","1359","1360","1361","1362","1363","1364","1365","1366"],"import React, { PureComponent } from 'react';\nimport { connect } from 'dva';\nimport { Dispatch } from 'redux';\nimport Link from 'umi/link';\nimport { GridContent } from '@ant-design/pro-layout';\nimport { RouteChildrenProps } from 'react-router';\nimport { Card, Row, Col, Icon, Avatar, Tag, Divider, Input } from 'antd';\nimport styles from './Center.less';\nimport { ITag, CurrentUser } from './data';\nimport { ModalState } from './model';\nimport Articles from './components/Articles';\nimport Applications from './components/Applications';\nimport Projects from './components/Projects';\n\nconst operationTabList = [\n {\n key: 'articles',\n tab: (\n \n 文章 (8)\n \n ),\n },\n {\n key: 'applications',\n tab: (\n \n 应用 (8)\n \n ),\n },\n {\n key: 'projects',\n tab: (\n \n 项目 (8)\n \n ),\n },\n];\n\ninterface BLOCK_NAME_CAMEL_CASEProps extends RouteChildrenProps {\n dispatch: Dispatch;\n currentUser: CurrentUser;\n currentUserLoading: boolean;\n}\ninterface BLOCK_NAME_CAMEL_CASEState {\n newTags: ITag[];\n tabKey: 'articles' | 'applications' | 'projects';\n inputVisible: boolean;\n inputValue: string;\n}\n\n@connect(\n ({\n loading,\n BLOCK_NAME_CAMEL_CASE,\n }: {\n loading: { effects: any };\n BLOCK_NAME_CAMEL_CASE: ModalState;\n }) => ({\n currentUser: BLOCK_NAME_CAMEL_CASE.currentUser,\n currentUserLoading: loading.effects['BLOCK_NAME_CAMEL_CASE/fetchCurrent'],\n }),\n)\nclass PAGE_NAME_UPPER_CAMEL_CASE extends PureComponent<\n BLOCK_NAME_CAMEL_CASEProps,\n BLOCK_NAME_CAMEL_CASEState\n> {\n // static getDerivedStateFromProps(\n // props: BLOCK_NAME_CAMEL_CASEProps,\n // state: BLOCK_NAME_CAMEL_CASEState,\n // ) {\n // const { match, location } = props;\n // const { tabKey } = state;\n // const path = match && match.path;\n\n // const urlTabKey = location.pathname.replace(`${path}/`, '');\n // if (urlTabKey && urlTabKey !== '/' && tabKey !== urlTabKey) {\n // return {\n // tabKey: urlTabKey,\n // };\n // }\n\n // return null;\n // }\n\n state: BLOCK_NAME_CAMEL_CASEState = {\n newTags: [],\n inputVisible: false,\n inputValue: '',\n tabKey: 'articles',\n };\n\n input: Input | null | undefined;\n\n componentDidMount() {\n const { dispatch } = this.props;\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/fetchCurrent',\n });\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/fetch',\n });\n }\n\n onTabChange = (key: string) => {\n // If you need to sync state to url\n // const { match } = this.props;\n // router.push(`${match.url}/${key}`);\n this.setState({\n tabKey: key as BLOCK_NAME_CAMEL_CASEState['tabKey'],\n });\n };\n\n showInput = () => {\n this.setState({ inputVisible: true }, () => this.input && this.input.focus());\n };\n\n saveInputRef = (input: Input | null) => {\n this.input = input;\n };\n\n handleInputChange = (e: React.ChangeEvent) => {\n this.setState({ inputValue: e.target.value });\n };\n\n handleInputConfirm = () => {\n const { state } = this;\n const { inputValue } = state;\n let { newTags } = state;\n if (inputValue && newTags.filter(tag => tag.label === inputValue).length === 0) {\n newTags = [...newTags, { key: `new-${newTags.length}`, label: inputValue }];\n }\n this.setState({\n newTags,\n inputVisible: false,\n inputValue: '',\n });\n };\n renderChildrenByTabKey = (tabKey: BLOCK_NAME_CAMEL_CASEState['tabKey']) => {\n if (tabKey === 'projects') {\n return ;\n }\n if (tabKey === 'applications') {\n return ;\n }\n if (tabKey === 'articles') {\n return ;\n }\n return null;\n };\n render() {\n const { newTags, inputVisible, inputValue, tabKey } = this.state;\n const { currentUser, currentUserLoading } = this.props;\n const dataLoading = currentUserLoading || !(currentUser && Object.keys(currentUser).length);\n return (\n \n \n \n \n {!dataLoading ? (\n
    \n
    \n \"\"\n
    {currentUser.name}
    \n
    {currentUser.signature}
    \n
    \n
    \n

    \n \n {currentUser.title}\n

    \n

    \n \n {currentUser.group}\n

    \n

    \n \n {currentUser.geographic.province.label}\n {currentUser.geographic.city.label}\n

    \n
    \n \n
    \n
    标签
    \n {currentUser.tags.concat(newTags).map(item => {\n return {item.label};\n })}\n {inputVisible && (\n this.saveInputRef(ref)}\n type=\"text\"\n size=\"small\"\n style={{ width: 78 }}\n value={inputValue}\n onChange={this.handleInputChange}\n onBlur={this.handleInputConfirm}\n onPressEnter={this.handleInputConfirm}\n />\n )}\n {!inputVisible && (\n \n \n \n )}\n
    \n \n
    \n
    团队
    \n \n {currentUser.notice &&\n currentUser.notice.map(item => (\n \n \n \n {item.member}\n \n \n ))}\n \n
    \n
    \n ) : null}\n
    \n \n \n \n {this.renderChildrenByTabKey(tabKey)}\n \n \n
    \n
    \n );\n }\n}\n\nexport default PAGE_NAME_UPPER_CAMEL_CASE;\n","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\model.ts",["1367","1368","1369","1370","1371","1372","1373","1374","1375","1376","1377","1378"],"import { queryCurrent, queryFakeList } from './service';\nimport { CurrentUser, ListItemDataType } from './data';\n\nexport interface ModalState {\n currentUser: Partial;\n list: ListItemDataType[];\n}\n\nimport { Reducer } from 'redux';\nimport { EffectsCommandMap } from 'dva';\nimport { AnyAction } from 'redux';\n\nexport type Effect = (\n action: AnyAction,\n effects: EffectsCommandMap & { select: (func: (state: ModalState) => T) => T },\n) => void;\n\nexport interface ModelType {\n namespace: string;\n state: ModalState;\n effects: {\n fetchCurrent: Effect;\n fetch: Effect;\n };\n reducers: {\n saveCurrentUser: Reducer;\n queryList: Reducer;\n };\n}\n\nconst Model: ModelType = {\n namespace: 'BLOCK_NAME_CAMEL_CASE',\n\n state: {\n currentUser: {},\n list: [],\n },\n\n effects: {\n *fetchCurrent(_, { call, put }) {\n const response = yield call(queryCurrent);\n yield put({\n type: 'saveCurrentUser',\n payload: response,\n });\n },\n *fetch({ payload }, { call, put }) {\n const response = yield call(queryFakeList, payload);\n yield put({\n type: 'queryList',\n payload: Array.isArray(response) ? response : [],\n });\n },\n },\n\n reducers: {\n saveCurrentUser(state, action) {\n return {\n ...state!,\n currentUser: action.payload || {},\n };\n },\n queryList(state, action) {\n return {\n ...state!,\n list: action.payload,\n };\n },\n },\n};\n\nexport default Model;\n","C:\\GitHub\\pro-blocks\\AccountCenter\\src\\service.ts",["1379"],"import request from 'umi-request';\n\nexport async function queryCurrent() {\n return request('/api/currentUser');\n}\n\nexport async function queryFakeList(params: { count: number }) {\n return request(`/api/fake_list`, {\n params,\n });\n}\n","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\_mock.ts",["1380","1381"],"C:\\GitHub\\pro-blocks\\AccountSettings\\src\\components\\base.tsx",["1382","1383","1384","1385","1386","1387","1388"],"import React, { Component, Fragment } from 'react';\nimport { formatMessage, FormattedMessage } from 'umi-plugin-react/locale';\nimport { Form, Input, Upload, Select, Button, message } from 'antd';\nimport { FormComponentProps } from 'antd/es/form';\nimport { connect } from 'dva';\nimport styles from './BaseView.less';\nimport GeographicView from './GeographicView';\nimport PhoneView from './PhoneView';\nimport { CurrentUser } from '../data';\nconst FormItem = Form.Item;\nconst { Option } = Select;\n\n// 头像组件 方便以后独立,增加裁剪之类的功能\nconst AvatarView = ({ avatar }: { avatar: string }) => (\n \n
    \n \n
    \n
    \n \"avatar\"\n
    \n \n
    \n \n
    \n
    \n
    \n);\ninterface SelectItem {\n label: string;\n key: string;\n}\n\nconst validatorGeographic = (\n _: any,\n value: {\n province: SelectItem;\n city: SelectItem;\n },\n callback: (message?: string) => void,\n) => {\n const { province, city } = value;\n if (!province.key) {\n callback('Please input your province!');\n }\n if (!city.key) {\n callback('Please input your city!');\n }\n callback();\n};\n\nconst validatorPhone = (rule: any, value: string, callback: (message?: string) => void) => {\n const values = value.split('-');\n if (!values[0]) {\n callback('Please input your area code!');\n }\n if (!values[1]) {\n callback('Please input your phone number!');\n }\n callback();\n};\n\ninterface BaseViewProps extends FormComponentProps {\n currentUser?: CurrentUser;\n}\n\n@connect(({ BLOCK_NAME_CAMEL_CASE }: { BLOCK_NAME_CAMEL_CASE: { currentUser: CurrentUser } }) => ({\n currentUser: BLOCK_NAME_CAMEL_CASE.currentUser,\n}))\nclass BaseView extends Component {\n view: HTMLDivElement | undefined;\n componentDidMount() {\n this.setBaseInfo();\n }\n\n setBaseInfo = () => {\n const { currentUser, form } = this.props;\n if (currentUser) {\n Object.keys(form.getFieldsValue()).forEach(key => {\n const obj = {};\n obj[key] = currentUser[key] || null;\n form.setFieldsValue(obj);\n });\n }\n };\n\n getAvatarURL() {\n const { currentUser } = this.props;\n if (currentUser) {\n if (currentUser.avatar) {\n return currentUser.avatar;\n }\n const url = 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png';\n return url;\n }\n return '';\n }\n\n getViewDom = (ref: HTMLDivElement) => {\n this.view = ref;\n };\n\n handlerSubmit = (event: Event) => {\n event.preventDefault();\n const { form } = this.props;\n form.validateFields((err, values) => {\n if (!err) {\n message.success(formatMessage({ id: 'BLOCK_NAME.basic.update.success' }));\n }\n });\n };\n\n render() {\n const {\n form: { getFieldDecorator },\n } = this.props;\n return (\n
    \n
    \n
    \n \n {getFieldDecorator('email', {\n rules: [\n {\n required: true,\n message: formatMessage({ id: 'BLOCK_NAME.basic.email-message' }, {}),\n },\n ],\n })()}\n \n \n {getFieldDecorator('name', {\n rules: [\n {\n required: true,\n message: formatMessage({ id: 'BLOCK_NAME.basic.nickname-message' }, {}),\n },\n ],\n })()}\n \n \n {getFieldDecorator('profile', {\n rules: [\n {\n required: true,\n message: formatMessage({ id: 'BLOCK_NAME.basic.profile-message' }, {}),\n },\n ],\n })(\n ,\n )}\n \n \n {getFieldDecorator('country', {\n rules: [\n {\n required: true,\n message: formatMessage({ id: 'BLOCK_NAME.basic.country-message' }, {}),\n },\n ],\n })(\n ,\n )}\n \n \n {getFieldDecorator('geographic', {\n rules: [\n {\n required: true,\n message: formatMessage({ id: 'BLOCK_NAME.basic.geographic-message' }, {}),\n },\n {\n validator: validatorGeographic,\n },\n ],\n })()}\n \n \n {getFieldDecorator('address', {\n rules: [\n {\n required: true,\n message: formatMessage({ id: 'BLOCK_NAME.basic.address-message' }, {}),\n },\n ],\n })()}\n \n \n {getFieldDecorator('phone', {\n rules: [\n {\n required: true,\n message: formatMessage({ id: 'BLOCK_NAME.basic.phone-message' }, {}),\n },\n { validator: validatorPhone },\n ],\n })()}\n \n \n
    \n
    \n
    \n \n
    \n
    \n );\n }\n}\n\nexport default Form.create()(BaseView);\n","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\components\\binding.tsx",["1389"],"C:\\GitHub\\pro-blocks\\AccountSettings\\src\\components\\GeographicView.tsx",["1390","1391","1392","1393","1394","1395"],"import React, { Component } from 'react';\nimport { Select, Spin } from 'antd';\nimport { connect } from 'dva';\nimport styles from './GeographicView.less';\nimport { Dispatch } from 'redux';\nimport { ProvinceData, CityData } from '../data';\nconst { Option } = Select;\n\ninterface SelectItem {\n label: string;\n key: string;\n}\nconst nullSlectItem: SelectItem = {\n label: '',\n key: '',\n};\n\ninterface GeographicViewProps {\n dispatch?: Dispatch;\n province?: ProvinceData[];\n city?: CityData[];\n value?: {\n province: SelectItem;\n city: SelectItem;\n };\n loading?: boolean;\n onChange?: (value: { province: SelectItem; city: SelectItem }) => void;\n}\n\n@connect(\n ({\n BLOCK_NAME_CAMEL_CASE,\n loading,\n }: {\n BLOCK_NAME_CAMEL_CASE: {\n province: ProvinceData[];\n city: CityData[];\n };\n loading: any;\n }) => {\n const { province, city } = BLOCK_NAME_CAMEL_CASE;\n return {\n province,\n city,\n loading: loading.models.BLOCK_NAME_CAMEL_CASE,\n };\n },\n)\nclass GeographicView extends Component {\n componentDidMount = () => {\n const { dispatch } = this.props;\n if (dispatch) {\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/fetchProvince',\n });\n }\n };\n\n componentDidUpdate(props: GeographicViewProps) {\n const { dispatch, value } = this.props;\n\n if (!props.value && !!value && !!value.province) {\n if (dispatch) {\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/fetchCity',\n payload: value.province.key,\n });\n }\n }\n }\n\n getProvinceOption() {\n const { province } = this.props;\n if (province) {\n return this.getOption(province);\n }\n return [];\n }\n\n getCityOption = () => {\n const { city } = this.props;\n if (city) {\n return this.getOption(city);\n }\n return [];\n };\n\n getOption = (list: CityData[] | ProvinceData[]) => {\n if (!list || list.length < 1) {\n return (\n \n );\n }\n return (list as CityData[]).map(item => (\n \n ));\n };\n\n selectProvinceItem = (item: SelectItem) => {\n const { dispatch, onChange } = this.props;\n\n if (dispatch) {\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/fetchCity',\n payload: item.key,\n });\n }\n if (onChange) {\n onChange({\n province: item,\n city: nullSlectItem,\n });\n }\n };\n\n selectCityItem = (item: SelectItem) => {\n const { value, onChange } = this.props;\n if (value && onChange) {\n onChange({\n province: value.province,\n city: item,\n });\n }\n };\n\n conversionObject() {\n const { value } = this.props;\n if (!value) {\n return {\n province: nullSlectItem,\n city: nullSlectItem,\n };\n }\n const { province, city } = value;\n return {\n province: province || nullSlectItem,\n city: city || nullSlectItem,\n };\n }\n\n render() {\n const { province, city } = this.conversionObject();\n const { loading } = this.props;\n return (\n \n \n {this.getProvinceOption()}\n \n \n {this.getCityOption()}\n \n \n );\n }\n}\n\nexport default GeographicView;\n","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\components\\notification.tsx",["1396"],"C:\\GitHub\\pro-blocks\\AccountSettings\\src\\components\\PhoneView.tsx",["1397","1398"],"C:\\GitHub\\pro-blocks\\AccountSettings\\src\\components\\security.tsx",["1399"],"C:\\GitHub\\pro-blocks\\AccountSettings\\src\\data.d.ts",["1400","1401","1402","1403","1404"],"C:\\GitHub\\pro-blocks\\AccountSettings\\src\\index.tsx",["1405","1406","1407","1408","1409","1410","1411","1412","1413","1414","1415","1416","1417","1418","1419","1420","1421","1422"],"import React, { Component } from 'react';\nimport { connect } from 'dva';\nimport { Dispatch } from 'redux';\nimport { FormattedMessage } from 'umi-plugin-react/locale';\nimport { GridContent } from '@ant-design/pro-layout';\nimport { Menu } from 'antd';\nimport styles from './style.less';\nimport BaseView from './components/base';\nimport SecurityView from './components/security';\nimport BindingView from './components/binding';\nimport NotificationView from './components/notification';\nimport { CurrentUser } from './data';\n\nconst { Item } = Menu;\n\ninterface PAGE_NAME_UPPER_CAMEL_CASEProps {\n dispatch: Dispatch;\n currentUser: CurrentUser;\n}\n\ntype PAGE_NAME_UPPER_CAMEL_CASEStateKeys = 'base' | 'security' | 'binding' | 'notification';\ninterface PAGE_NAME_UPPER_CAMEL_CASEState {\n mode: 'inline' | 'horizontal';\n menuMap: {\n [key: string]: React.ReactNode;\n };\n selectKey: PAGE_NAME_UPPER_CAMEL_CASEStateKeys;\n}\n@connect(({ BLOCK_NAME_CAMEL_CASE }: { BLOCK_NAME_CAMEL_CASE: { currentUser: CurrentUser } }) => ({\n currentUser: BLOCK_NAME_CAMEL_CASE.currentUser,\n}))\nclass PAGE_NAME_UPPER_CAMEL_CASE extends Component<\n PAGE_NAME_UPPER_CAMEL_CASEProps,\n PAGE_NAME_UPPER_CAMEL_CASEState\n> {\n main: HTMLDivElement | undefined;\n constructor(props: PAGE_NAME_UPPER_CAMEL_CASEProps) {\n super(props);\n const menuMap = {\n base: ,\n security: (\n \n ),\n binding: (\n \n ),\n notification: (\n \n ),\n };\n this.state = {\n mode: 'inline',\n menuMap,\n selectKey: 'base',\n };\n }\n\n componentDidMount() {\n const { dispatch } = this.props;\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/fetchCurrent',\n });\n window.addEventListener('resize', this.resize);\n this.resize();\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.resize);\n }\n\n getMenu = () => {\n const { menuMap } = this.state;\n return Object.keys(menuMap).map(item => {menuMap[item]});\n };\n\n getRightTitle = () => {\n const { selectKey, menuMap } = this.state;\n return menuMap[selectKey];\n };\n\n selectKey = (key: PAGE_NAME_UPPER_CAMEL_CASEStateKeys) => {\n this.setState({\n selectKey: key,\n });\n };\n\n resize = () => {\n if (!this.main) {\n return;\n }\n requestAnimationFrame(() => {\n if (!this.main) {\n return;\n }\n let mode: 'inline' | 'horizontal' = 'inline';\n const { offsetWidth } = this.main;\n if (this.main.offsetWidth < 641 && offsetWidth > 400) {\n mode = 'horizontal';\n }\n if (window.innerWidth < 768 && offsetWidth > 400) {\n mode = 'horizontal';\n }\n this.setState({\n mode,\n });\n });\n };\n\n renderChildren = () => {\n const { selectKey } = this.state;\n switch (selectKey) {\n case 'base':\n return ;\n case 'security':\n return ;\n case 'binding':\n return ;\n case 'notification':\n return ;\n default:\n break;\n }\n\n return null;\n };\n\n render() {\n const { currentUser } = this.props;\n if (!currentUser.userid) {\n return '';\n }\n const { mode, selectKey } = this.state;\n return (\n \n {\n if (ref) {\n this.main = ref;\n }\n }}\n >\n
    \n this.selectKey(key as PAGE_NAME_UPPER_CAMEL_CASEStateKeys)}\n >\n {this.getMenu()}\n \n
    \n
    \n
    {this.getRightTitle()}
    \n {this.renderChildren()}\n
    \n \n
    \n );\n }\n}\n\nexport default PAGE_NAME_UPPER_CAMEL_CASE;\n","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\locales\\en-US.ts",[],"C:\\GitHub\\pro-blocks\\AccountSettings\\src\\locales\\zh-CN.ts",[],"C:\\GitHub\\pro-blocks\\AccountSettings\\src\\locales\\zh-TW.ts",[],"C:\\GitHub\\pro-blocks\\AccountSettings\\src\\model.ts",["1423","1424","1425","1426","1427","1428"],"import { query as queryUsers, queryCurrent, queryProvince, queryCity } from './service';\nimport { Reducer } from 'redux';\nimport { EffectsCommandMap } from 'dva';\nimport { AnyAction } from 'redux';\nimport { CurrentUser, City, Province } from './data';\n\nexport interface ModalState {\n currentUser?: Partial;\n province?: Province[];\n city?: City[];\n isLoading?: boolean;\n}\n\nexport type Effect = (\n action: AnyAction,\n effects: EffectsCommandMap & { select: (func: (state: ModalState) => T) => T },\n) => void;\n\nexport interface ModelType {\n namespace: string;\n state: ModalState;\n effects: {\n fetchCurrent: Effect;\n fetch: Effect;\n fetchProvince: Effect;\n fetchCity: Effect;\n };\n reducers: {\n saveCurrentUser: Reducer;\n changeNotifyCount: Reducer;\n setProvince: Reducer;\n setCity: Reducer;\n changeLoading: Reducer;\n };\n}\n\nconst Model: ModelType = {\n namespace: 'BLOCK_NAME_CAMEL_CASE',\n\n state: {\n currentUser: {},\n province: [],\n city: [],\n isLoading: false,\n },\n\n effects: {\n *fetch(_, { call, put }) {\n const response = yield call(queryUsers);\n yield put({\n type: 'save',\n payload: response,\n });\n },\n *fetchCurrent(_, { call, put }) {\n const response = yield call(queryCurrent);\n yield put({\n type: 'saveCurrentUser',\n payload: response,\n });\n },\n *fetchProvince(_, { call, put }) {\n yield put({\n type: 'changeLoading',\n payload: true,\n });\n const response = yield call(queryProvince);\n yield put({\n type: 'setProvince',\n payload: response,\n });\n },\n *fetchCity({ payload }, { call, put }) {\n const response = yield call(queryCity, payload);\n yield put({\n type: 'setCity',\n payload: response,\n });\n },\n },\n\n reducers: {\n saveCurrentUser(state, action) {\n return {\n ...state,\n currentUser: action.payload || {},\n };\n },\n changeNotifyCount(state = {}, action) {\n return {\n ...state,\n currentUser: {\n ...state.currentUser,\n notifyCount: action.payload.totalCount,\n unreadCount: action.payload.unreadCount,\n },\n };\n },\n setProvince(state, action) {\n return {\n ...state,\n province: action.payload,\n };\n },\n setCity(state, action) {\n return {\n ...state,\n city: action.payload,\n };\n },\n changeLoading(state, action) {\n return {\n ...state,\n isLoading: action.payload,\n };\n },\n },\n};\n\nexport default Model;\n","C:\\GitHub\\pro-blocks\\AccountSettings\\src\\service.ts",[],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\_mock.ts",["1429"],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\autoHeight.tsx",["1430","1431","1432","1433","1434","1435","1436","1437","1438","1439","1440","1441","1442"],"import React from 'react';\n\nexport type IReactComponent

    =\n | React.StatelessComponent

    \n | React.ComponentClass

    \n | React.ClassicComponentClass

    ;\n\nfunction computeHeight(node: HTMLDivElement) {\n node.style.height = '100%';\n const totalHeight = parseInt(getComputedStyle(node).height + '', 10);\n const padding =\n parseInt(getComputedStyle(node).paddingTop + '', 10) +\n parseInt(getComputedStyle(node).paddingBottom + '', 10);\n return totalHeight - padding;\n}\n\nfunction getAutoHeight(n: HTMLDivElement) {\n if (!n) {\n return 0;\n }\n\n const node = n;\n\n let height = computeHeight(node);\n const parentNode = node.parentNode as HTMLDivElement;\n if (parentNode) {\n height = computeHeight(parentNode);\n }\n\n return height;\n}\n\ninterface IAutoHeightProps {\n height?: number;\n}\n\nfunction autoHeight() {\n return function

    (\n WrappedComponent: React.ComponentClass

    | React.SFC

    ,\n ): React.ComponentClass

    {\n class AutoHeightComponent extends React.Component

    {\n state = {\n computedHeight: 0,\n };\n root!: HTMLDivElement;\n componentDidMount() {\n const { height } = this.props;\n if (!height) {\n let h = getAutoHeight(this.root);\n // eslint-disable-next-line\n this.setState({ computedHeight: h });\n if (h < 1) {\n h = getAutoHeight(this.root);\n this.setState({ computedHeight: h });\n }\n }\n }\n handleRoot = (node: HTMLDivElement) => {\n this.root = node;\n };\n render() {\n const { height } = this.props;\n const { computedHeight } = this.state;\n const h = height || computedHeight;\n return (\n

    \n {h > 0 && }\n
    \n );\n }\n }\n return AutoHeightComponent;\n };\n}\nexport default autoHeight;\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\Bar\\index.tsx",["1443","1444","1445","1446","1447","1448","1449","1450","1451","1452"],"import React, { Component } from 'react';\nimport { Chart, Axis, Tooltip, Geom } from 'bizcharts';\nimport Debounce from 'lodash-decorators/debounce';\nimport Bind from 'lodash-decorators/bind';\nimport autoHeight from '../autoHeight';\nimport styles from '../index.less';\n\nexport interface IBarProps {\n title: React.ReactNode;\n color?: string;\n padding?: [number, number, number, number];\n height?: number;\n data: Array<{\n x: string;\n y: number;\n }>;\n forceFit?: boolean;\n autoLabel?: boolean;\n style?: React.CSSProperties;\n}\n\nclass Bar extends Component<\n IBarProps,\n {\n autoHideXLabels: boolean;\n }\n> {\n state = {\n autoHideXLabels: false,\n };\n root: HTMLDivElement | undefined;\n node: HTMLDivElement | undefined;\n\n componentDidMount() {\n window.addEventListener('resize', this.resize, { passive: true });\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.resize);\n }\n handleRoot = (n: HTMLDivElement) => {\n this.root = n;\n };\n handleRef = (n: HTMLDivElement) => {\n this.node = n;\n };\n\n @Bind()\n @Debounce(400)\n resize() {\n if (!this.node || !this.node.parentNode) {\n return;\n }\n const canvasWidth = (this.node.parentNode as HTMLDivElement).clientWidth;\n const { data = [], autoLabel = true } = this.props;\n if (!autoLabel) {\n return;\n }\n const minWidth = data.length * 30;\n const { autoHideXLabels } = this.state;\n\n if (canvasWidth <= minWidth) {\n if (!autoHideXLabels) {\n this.setState({\n autoHideXLabels: true,\n });\n }\n } else if (autoHideXLabels) {\n this.setState({\n autoHideXLabels: false,\n });\n }\n }\n\n render() {\n const {\n height = 1,\n title,\n forceFit = true,\n data,\n color = 'rgba(24, 144, 255, 0.85)',\n padding,\n } = this.props;\n\n const { autoHideXLabels } = this.state;\n\n const scale = {\n x: {\n type: 'cat',\n },\n y: {\n min: 0,\n },\n };\n\n const tooltip: [string, (...args: any[]) => { name?: string; value: string }] = [\n 'x*y',\n (x: string, y: string) => ({\n name: x,\n value: y,\n }),\n ];\n\n return (\n
    \n
    \n {title &&

    {title}

    }\n \n \n \n \n \n \n
    \n
    \n );\n }\n}\n\nexport default autoHeight()(Bar);\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\bizcharts.d.ts",["1453"],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\bizcharts.tsx",["1454"],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\ChartCard\\index.tsx",["1455","1456","1457"],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\Field\\index.tsx",["1458"],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\Gauge\\index.tsx",["1459","1460","1461","1462","1463","1464","1465","1466","1467","1468","1469"],"import React from 'react';\nimport { Chart, Geom, Axis, Coord, Guide, Shape } from 'bizcharts';\nimport autoHeight from '../autoHeight';\n\nconst { Arc, Html, Line } = Guide;\n\nexport interface IGaugeProps {\n title: React.ReactNode;\n color?: string;\n height?: number;\n bgColor?: number;\n percent: number;\n forceFit?: boolean;\n style?: React.CSSProperties;\n formatter: (value: string) => string;\n}\n\nconst defaultFormatter = (val: string): string => {\n switch (val) {\n case '2':\n return '差';\n case '4':\n return '中';\n case '6':\n return '良';\n case '8':\n return '优';\n default:\n return '';\n }\n};\n\nShape.registerShape!('point', 'pointer', {\n drawShape(cfg: any, group: any) {\n let point = cfg.points[0];\n point = (this as any).parsePoint(point);\n const center = (this as any).parsePoint({\n x: 0,\n y: 0,\n });\n group.addShape('line', {\n attrs: {\n x1: center.x,\n y1: center.y,\n x2: point.x,\n y2: point.y,\n stroke: cfg.color,\n lineWidth: 2,\n lineCap: 'round',\n },\n });\n return group.addShape('circle', {\n attrs: {\n x: center.x,\n y: center.y,\n r: 6,\n stroke: cfg.color,\n lineWidth: 3,\n fill: '#fff',\n },\n });\n },\n});\n\nclass Gauge extends React.Component {\n render() {\n const {\n title,\n height = 1,\n percent,\n forceFit = true,\n formatter = defaultFormatter,\n color = '#2F9CFF',\n bgColor = '#F0F2F5',\n } = this.props;\n const cols = {\n value: {\n type: 'linear',\n min: 0,\n max: 10,\n tickCount: 6,\n nice: true,\n },\n };\n const renderHtml = () => `\n
    \n

    ${title}

    \n

    \n ${(data[0].value * 10).toFixed(2)}%\n

    \n
    `;\n const data = [{ value: percent / 10 }];\n const textStyle: {\n fontSize: number;\n fill: string;\n textAlign: 'center';\n } = {\n fontSize: 12,\n fill: 'rgba(0, 0, 0, 0.65)',\n textAlign: 'center',\n };\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default autoHeight()(Gauge);\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\index.tsx",[],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\MiniArea\\index.tsx",["1470","1471","1472","1473","1474","1475","1476","1477","1478","1479","1480","1481","1482","1483","1484","1485"],"import React from 'react';\nimport { Chart, Axis, Tooltip, Geom } from 'bizcharts';\nimport autoHeight from '../autoHeight';\nimport styles from '../index.less';\n\nexport interface IAxis {\n title: any;\n line: any;\n gridAlign: any;\n labels: any;\n tickLine: any;\n grid: any;\n}\n\nexport interface IMiniAreaProps {\n color?: string;\n height?: number;\n borderColor?: string;\n line?: boolean;\n animate?: boolean;\n xAxis?: IAxis;\n forceFit?: boolean;\n scale?: { x: any; y: any };\n yAxis?: IAxis;\n borderWidth?: number;\n data: Array<{\n x: number | string;\n y: number;\n }>;\n}\n\nclass MiniArea extends React.Component {\n render() {\n const {\n height = 1,\n data = [],\n forceFit = true,\n color = 'rgba(24, 144, 255, 0.2)',\n borderColor = '#1089ff',\n scale = { x: {}, y: {} },\n borderWidth = 2,\n line,\n xAxis,\n yAxis,\n animate = true,\n } = this.props;\n\n const padding: [number, number, number, number] = [36, 5, 30, 5];\n\n const scaleProps = {\n x: {\n type: 'cat',\n range: [0, 1],\n ...scale!.x,\n },\n y: {\n min: 0,\n ...scale!.y,\n },\n };\n\n const tooltip: [string, (...args: any[]) => { name?: string; value: string }] = [\n 'x*y',\n (x: string, y: string) => ({\n name: x,\n value: y,\n }),\n ];\n\n const chartHeight = height + 54;\n\n return (\n
    \n
    \n {height > 0 && (\n \n \n \n \n \n {line ? (\n \n ) : (\n \n )}\n \n )}\n
    \n
    \n );\n }\n}\n\nexport default autoHeight()(MiniArea);\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\MiniBar\\index.tsx",["1486","1487","1488","1489","1490"],"import React from 'react';\nimport { Chart, Tooltip, Geom } from 'bizcharts';\nimport autoHeight from '../autoHeight';\nimport styles from '../index.less';\n\nexport interface IMiniBarProps {\n color?: string;\n height?: number;\n data: Array<{\n x: number | string;\n y: number;\n }>;\n forceFit?: boolean;\n style?: React.CSSProperties;\n}\n\nclass MiniBar extends React.Component {\n render() {\n const { height = 0, forceFit = true, color = '#1890FF', data = [] } = this.props;\n\n const scale = {\n x: {\n type: 'cat',\n },\n y: {\n min: 0,\n },\n };\n\n const padding: [number, number, number, number] = [36, 5, 30, 5];\n\n const tooltip: [string, (...args: any[]) => { name?: string; value: string }] = [\n 'x*y',\n (x: string, y: string) => ({\n name: x,\n value: y,\n }),\n ];\n\n // for tooltip not to be hide\n const chartHeight = height + 54;\n\n return (\n
    \n
    \n \n \n \n \n
    \n
    \n );\n }\n}\nexport default autoHeight()(MiniBar);\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\MiniProgress\\index.tsx",["1491","1492"],"import React from 'react';\nimport { Tooltip } from 'antd';\nimport styles from './index.less';\n\nexport interface IMiniProgressProps {\n target: number;\n targetLabel?: string;\n color?: string;\n strokeWidth?: number;\n percent?: number;\n style?: React.CSSProperties;\n}\n\nconst MiniProgress: React.SFC = ({\n targetLabel,\n target,\n color = 'rgb(19, 194, 194)',\n strokeWidth,\n percent,\n}) => {\n return (\n
    \n \n
    \n \n \n
    \n
    \n
    \n \n
    \n
    \n );\n};\n\nexport default MiniProgress;\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\Pie\\index.tsx",["1493","1494","1495","1496","1497","1498","1499","1500","1501","1502","1503","1504","1505","1506","1507","1508","1509","1510","1511","1512","1513","1514","1515","1516"],"import React, { Component } from 'react';\nimport { Chart, Tooltip, Geom, Coord } from 'bizcharts';\nimport { DataView } from '@antv/data-set';\nimport { Divider } from 'antd';\nimport classNames from 'classnames';\nimport ReactFitText from 'react-fittext';\nimport Debounce from 'lodash-decorators/debounce';\nimport Bind from 'lodash-decorators/bind';\nimport autoHeight from '../autoHeight';\n\nimport styles from './index.less';\nexport interface IPieProps {\n animate?: boolean;\n color?: string;\n colors?: string[];\n selected?: boolean;\n height?: number;\n margin?: [number, number, number, number];\n hasLegend?: boolean;\n padding?: [number, number, number, number];\n percent?: number;\n data?: Array<{\n x: string | string;\n y: number;\n }>;\n inner?: number;\n lineWidth?: number;\n forceFit?: boolean;\n style?: React.CSSProperties;\n className?: string;\n total?: React.ReactNode | number | (() => React.ReactNode | number);\n title?: React.ReactNode;\n tooltip?: boolean;\n valueFormat?: (value: string) => string | React.ReactNode;\n subTitle?: React.ReactNode;\n}\ninterface IPieState {\n legendData: Array<{ checked: boolean; x: string; color: string; percent: number; y: string }>;\n legendBlock: boolean;\n}\nclass Pie extends Component {\n state: IPieState = {\n legendData: [],\n legendBlock: false,\n };\n\n requestRef: number | undefined;\n root!: HTMLDivElement;\n chart: G2.Chart | undefined;\n\n componentDidMount() {\n window.addEventListener(\n 'resize',\n () => {\n this.requestRef = requestAnimationFrame(() => this.resize());\n },\n { passive: true },\n );\n }\n\n componentDidUpdate(preProps: IPieProps) {\n const { data } = this.props;\n if (data !== preProps.data) {\n // because of charts data create when rendered\n // so there is a trick for get rendered time\n this.getLegendData();\n }\n }\n\n componentWillUnmount() {\n if (this.requestRef) {\n window.cancelAnimationFrame(this.requestRef);\n }\n window.removeEventListener('resize', this.resize);\n if (this.resize) {\n (this.resize as any).cancel();\n }\n }\n\n getG2Instance = (chart: G2.Chart) => {\n this.chart = chart;\n requestAnimationFrame(() => {\n this.getLegendData();\n this.resize();\n });\n };\n\n // for custom lengend view\n getLegendData = () => {\n if (!this.chart) return;\n const geom = this.chart.getAllGeoms()[0]; // 获取所有的图形\n if (!geom) return;\n const items = geom.get('dataArray') || []; // 获取图形对应的\n\n const legendData = items.map((item: { color: any; _origin: any }[]) => {\n /* eslint no-underscore-dangle:0 */\n const origin = item[0]._origin;\n origin.color = item[0].color;\n origin.checked = true;\n return origin;\n });\n\n this.setState({\n legendData,\n });\n };\n handleRoot = (n: HTMLDivElement) => {\n this.root = n;\n };\n\n handleLegendClick = (item: any, i: string | number) => {\n const newItem = item;\n newItem.checked = !newItem.checked;\n\n const { legendData } = this.state;\n legendData[i] = newItem;\n\n const filteredLegendData = legendData.filter(l => l.checked).map(l => l.x);\n\n if (this.chart) {\n this.chart.filter('x', val => filteredLegendData.indexOf(val + '') > -1);\n }\n\n this.setState({\n legendData,\n });\n };\n\n // for window resize auto responsive legend\n @Bind()\n @Debounce(300)\n resize() {\n const { hasLegend } = this.props;\n const { legendBlock } = this.state;\n if (!hasLegend || !this.root) {\n window.removeEventListener('resize', this.resize);\n return;\n }\n if (\n this.root &&\n this.root.parentNode &&\n (this.root.parentNode as HTMLElement).clientWidth <= 380\n ) {\n if (!legendBlock) {\n this.setState({\n legendBlock: true,\n });\n }\n } else if (legendBlock) {\n this.setState({\n legendBlock: false,\n });\n }\n }\n\n render() {\n const {\n valueFormat,\n subTitle,\n total,\n hasLegend = false,\n className,\n style,\n height = 0,\n forceFit = true,\n percent,\n color,\n inner = 0.75,\n animate = true,\n colors,\n lineWidth = 1,\n } = this.props;\n\n const { legendData, legendBlock } = this.state;\n const pieClassName = classNames(styles.pie, className, {\n [styles.hasLegend]: !!hasLegend,\n [styles.legendBlock]: legendBlock,\n });\n\n const {\n data: propsData,\n selected: propsSelected = true,\n tooltip: propsTooltip = true,\n } = this.props;\n\n let data = propsData || [];\n let selected = propsSelected;\n let tooltip = propsTooltip;\n\n const defaultColors = colors;\n data = data || [];\n selected = selected || true;\n tooltip = tooltip || true;\n let formatColor;\n\n const scale = {\n x: {\n type: 'cat',\n range: [0, 1],\n },\n y: {\n min: 0,\n },\n };\n\n if (percent || percent === 0) {\n selected = false;\n tooltip = false;\n formatColor = (value: string) => {\n if (value === '占比') {\n return color || 'rgba(24, 144, 255, 0.85)';\n }\n return '#F0F2F5';\n };\n\n data = [\n {\n x: '占比',\n y: parseFloat(percent + ''),\n },\n {\n x: '反比',\n y: 100 - parseFloat(percent + ''),\n },\n ];\n }\n\n const tooltipFormat: [string, (...args: any[]) => { name?: string; value: string }] = [\n 'x*percent',\n (x: string, p: number) => ({\n name: x,\n value: `${(p * 100).toFixed(2)}%`,\n }),\n ];\n\n const padding = [12, 0, 12, 0] as [number, number, number, number];\n\n const dv = new DataView();\n dv.source(data).transform({\n type: 'percent',\n field: 'y',\n dimension: 'x',\n as: 'percent',\n });\n\n return (\n
    \n \n
    \n \n {!!tooltip && }\n \n \n \n\n {(subTitle || total) && (\n
    \n {subTitle &&

    {subTitle}

    }\n {/* eslint-disable-next-line */}\n {total && (\n
    {typeof total === 'function' ? total() : total}
    \n )}\n
    \n )}\n
    \n
    \n\n {hasLegend && (\n
      \n {legendData.map((item, i) => (\n
    • this.handleLegendClick(item, i)}>\n \n {item.x}\n \n \n {`${(Number.isNaN(item.percent) ? 0 : item.percent * 100).toFixed(2)}%`}\n \n {valueFormat ? valueFormat(item.y) : item.y}\n
    • \n ))}\n
    \n )}\n
    \n );\n }\n}\n\nexport default autoHeight()(Pie);\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\TagCloud\\index.tsx",["1517","1518","1519","1520","1521","1522","1523","1524","1525","1526","1527","1528","1529","1530","1531","1532","1533","1534","1535","1536","1537","1538","1539","1540","1541","1542","1543","1544"],"import React, { Component } from 'react';\nimport { Chart, Geom, Coord, Shape, Tooltip } from 'bizcharts';\nimport DataSet from '@antv/data-set';\nimport Debounce from 'lodash-decorators/debounce';\nimport Bind from 'lodash-decorators/bind';\nimport classNames from 'classnames';\nimport autoHeight from '../autoHeight';\nimport styles from './index.less';\n\n/* eslint no-underscore-dangle: 0 */\n/* eslint no-param-reassign: 0 */\n\nconst imgUrl = 'https://gw.alipayobjects.com/zos/rmsportal/gWyeGLCdFFRavBGIDzWk.png';\n\nexport interface ITagCloudProps {\n data: Array<{\n name: string;\n value: number;\n }>;\n height?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\ninterface ITagCloudState {\n dv: any;\n height?: number;\n width: number;\n}\n\nclass TagCloud extends Component {\n state = {\n dv: null,\n height: 0,\n width: 0,\n };\n isUnmount!: boolean;\n requestRef!: number;\n\n root: HTMLDivElement | undefined;\n imageMask: HTMLImageElement | undefined;\n\n componentDidMount() {\n requestAnimationFrame(() => {\n this.initTagCloud();\n this.renderChart(this.props);\n });\n window.addEventListener('resize', this.resize, { passive: true });\n }\n\n componentDidUpdate(preProps?: ITagCloudProps) {\n const { data } = this.props;\n if (preProps && JSON.stringify(preProps.data) !== JSON.stringify(data)) {\n this.renderChart(this.props);\n }\n }\n componentWillUnmount() {\n this.isUnmount = true;\n window.cancelAnimationFrame(this.requestRef);\n window.removeEventListener('resize', this.resize);\n }\n resize = () => {\n this.requestRef = requestAnimationFrame(() => {\n this.renderChart(this.props);\n });\n };\n saveRootRef = (node: HTMLDivElement) => {\n this.root = node;\n };\n\n initTagCloud = () => {\n function getTextAttrs(cfg: {\n x?: any;\n y?: any;\n style?: any;\n opacity?: any;\n origin?: any;\n color?: any;\n }) {\n return Object.assign({}, cfg.style, {\n fillOpacity: cfg.opacity,\n fontSize: cfg.origin._origin.size,\n rotate: cfg.origin._origin.rotate,\n text: cfg.origin._origin.text,\n textAlign: 'center',\n fontFamily: cfg.origin._origin.font,\n fill: cfg.color,\n textBaseline: 'Alphabetic',\n });\n }\n\n (Shape as any).registerShape('point', 'cloud', {\n drawShape(\n cfg: { x: any; y: any },\n container: { addShape: (arg0: string, arg1: { attrs: any }) => void },\n ) {\n const attrs = getTextAttrs(cfg);\n return container.addShape('text', {\n attrs: Object.assign(attrs, {\n x: cfg.x,\n y: cfg.y,\n }),\n });\n },\n });\n };\n\n @Bind()\n @Debounce(500)\n renderChart(nextProps: ITagCloudProps) {\n // const colors = ['#1890FF', '#41D9C7', '#2FC25B', '#FACC14', '#9AE65C'];\n const { data, height } = nextProps || this.props;\n\n if (data.length < 1 || !this.root) {\n return;\n }\n\n const h = height;\n const w = this.root.offsetWidth;\n\n const onload = () => {\n const dv = new DataSet.View().source(data);\n const range = dv.range('value');\n const [min, max] = range;\n dv.transform({\n type: 'tag-cloud',\n fields: ['name', 'value'],\n imageMask: this.imageMask,\n font: 'Verdana',\n size: [w, h], // 宽高设置最好根据 imageMask 做调整\n padding: 0,\n timeInterval: 5000, // max execute time\n rotate() {\n return 0;\n },\n fontSize(d: { value: number }) {\n // eslint-disable-next-line\n return Math.pow((d.value - min) / (max - min), 2) * (17.5 - 5) + 5;\n },\n });\n\n if (this.isUnmount) {\n return;\n }\n\n this.setState({\n dv,\n width: w,\n height: h,\n });\n };\n\n if (!this.imageMask) {\n this.imageMask = new Image();\n this.imageMask.crossOrigin = '';\n this.imageMask.src = imgUrl;\n\n this.imageMask.onload = onload;\n } else {\n onload();\n }\n }\n\n render() {\n const { className, height } = this.props;\n const { dv, width, height: stateHeight } = this.state;\n\n return (\n \n {dv && (\n \n \n \n \n \n )}\n \n );\n }\n}\n\nexport default autoHeight()(TagCloud);\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\TimelineChart\\index.tsx",["1545","1546","1547","1548","1549","1550"],"import React from 'react';\nimport { Chart, Tooltip, Geom, Legend, Axis } from 'bizcharts';\nimport DataSet from '@antv/data-set';\nimport Slider from 'bizcharts-plugin-slider';\nimport autoHeight from '../autoHeight';\nimport styles from './index.less';\n\nexport interface ITimelineChartProps {\n data: Array<{\n x: number;\n y1: number;\n y2: number;\n }>;\n title?: string;\n titleMap: { y1: string; y2: string };\n padding?: [number, number, number, number];\n height?: number;\n style?: React.CSSProperties;\n borderWidth?: number;\n}\n\nclass TimelineChart extends React.Component {\n render() {\n const {\n title,\n height = 400,\n padding = [60, 20, 40, 40] as [number, number, number, number],\n titleMap = {\n y1: 'y1',\n y2: 'y2',\n },\n borderWidth = 2,\n data: sourceData,\n } = this.props;\n\n const data = Array.isArray(sourceData) ? sourceData : [{ x: 0, y1: 0, y2: 0 }];\n\n data.sort((a, b) => a.x - b.x);\n\n let max;\n if (data[0] && data[0].y1 && data[0].y2) {\n max = Math.max(\n [...data].sort((a, b) => b.y1 - a.y1)[0].y1,\n [...data].sort((a, b) => b.y2 - a.y2)[0].y2,\n );\n }\n\n const ds = new DataSet({\n state: {\n start: data[0].x,\n end: data[data.length - 1].x,\n },\n });\n\n const dv = ds.createView();\n dv.source(data)\n .transform({\n type: 'filter',\n callback: (obj: { x: string }) => {\n const date = obj.x;\n return date <= ds.state.end && date >= ds.state.start;\n },\n })\n .transform({\n type: 'map',\n callback(row: { y1: string; y2: string }) {\n const newRow = { ...row };\n newRow[titleMap.y1] = row.y1;\n newRow[titleMap.y2] = row.y2;\n return newRow;\n },\n })\n .transform({\n type: 'fold',\n fields: [titleMap.y1, titleMap.y2], // 展开字段集\n key: 'key', // key字段\n value: 'value', // value字段\n });\n\n const timeScale = {\n type: 'time',\n tickInterval: 60 * 60 * 1000,\n mask: 'HH:mm',\n range: [0, 1],\n };\n\n const cols = {\n x: timeScale,\n value: {\n max,\n min: 0,\n },\n };\n\n const SliderGen = () => (\n {\n ds.setState('start', startValue);\n ds.setState('end', endValue);\n }}\n />\n );\n\n return (\n
    \n
    \n {title &&

    {title}

    }\n \n \n \n \n \n \n
    \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default autoHeight()(TimelineChart);\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Charts\\WaterWave\\index.tsx",["1551","1552","1553","1554","1555","1556"],"import React, { Component } from 'react';\nimport autoHeight from '../autoHeight';\nimport styles from './index.less';\n\n/* eslint no-return-assign: 0 */\n/* eslint no-mixed-operators: 0 */\n// riddle: https://riddle.alibaba-inc.com/riddles/2d9a4b90\n\nexport interface IWaterWaveProps {\n title: React.ReactNode;\n color?: string;\n height?: number;\n percent: number;\n style?: React.CSSProperties;\n}\n\nclass WaterWave extends Component {\n state = {\n radio: 1,\n };\n timer: number = 0;\n root: HTMLDivElement | undefined | null;\n node: HTMLCanvasElement | undefined | null;\n\n componentDidMount() {\n this.renderChart();\n this.resize();\n window.addEventListener(\n 'resize',\n () => {\n requestAnimationFrame(() => this.resize());\n },\n { passive: true },\n );\n }\n\n componentDidUpdate(props: IWaterWaveProps) {\n const { percent } = this.props;\n if (props.percent !== percent) {\n // 不加这个会造成绘制缓慢\n this.renderChart('update');\n }\n }\n\n componentWillUnmount() {\n cancelAnimationFrame(this.timer);\n if (this.node) {\n this.node.innerHTML = '';\n }\n window.removeEventListener('resize', this.resize);\n }\n\n resize = () => {\n if (this.root) {\n const { height = 1 } = this.props;\n const { offsetWidth } = this.root.parentNode as HTMLElement;\n this.setState({\n radio: offsetWidth < height ? offsetWidth / height : 1,\n });\n }\n };\n renderChart(type?: string) {\n const { percent, color = '#1890FF' } = this.props;\n const data = percent / 100;\n const self = this;\n cancelAnimationFrame(this.timer);\n\n if (!this.node || (data !== 0 && !data)) {\n return;\n }\n\n const canvas = this.node;\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return;\n }\n const canvasWidth = canvas.width;\n const canvasHeight = canvas.height;\n const radius = canvasWidth / 2;\n const lineWidth = 2;\n const cR = radius - lineWidth;\n\n ctx.beginPath();\n ctx.lineWidth = lineWidth * 2;\n\n const axisLength = canvasWidth - lineWidth;\n const unit = axisLength / 8;\n const range = 0.2; // 振幅\n let currRange = range;\n const xOffset = lineWidth;\n let sp = 0; // 周期偏移量\n let currData = 0;\n const waveupsp = 0.005; // 水波上涨速度\n\n let arcStack: number[][] = [];\n const bR = radius - lineWidth;\n const circleOffset = -(Math.PI / 2);\n let circleLock = true;\n\n for (let i = circleOffset; i < circleOffset + 2 * Math.PI; i += 1 / (8 * Math.PI)) {\n arcStack.push([radius + bR * Math.cos(i), radius + bR * Math.sin(i)]);\n }\n\n const cStartPoint = arcStack.shift() as number[];\n ctx.strokeStyle = color;\n ctx.moveTo(cStartPoint[0], cStartPoint[1]);\n\n function drawSin() {\n if (!ctx) {\n return;\n }\n ctx.beginPath();\n ctx.save();\n\n const sinStack = [];\n for (let i = xOffset; i <= xOffset + axisLength; i += 20 / axisLength) {\n const x = sp + (xOffset + i) / unit;\n const y = Math.sin(x) * currRange;\n const dx = i;\n const dy = 2 * cR * (1 - currData) + (radius - cR) - unit * y;\n\n ctx.lineTo(dx, dy);\n sinStack.push([dx, dy]);\n }\n\n const startPoint = sinStack.shift() as number[];\n\n ctx.lineTo(xOffset + axisLength, canvasHeight);\n ctx.lineTo(xOffset, canvasHeight);\n ctx.lineTo(startPoint[0], startPoint[1]);\n\n const gradient = ctx.createLinearGradient(0, 0, 0, canvasHeight);\n gradient.addColorStop(0, '#ffffff');\n gradient.addColorStop(1, color);\n ctx.fillStyle = gradient;\n ctx.fill();\n ctx.restore();\n }\n\n function render() {\n if (!ctx) {\n return;\n }\n ctx.clearRect(0, 0, canvasWidth, canvasHeight);\n if (circleLock && type !== 'update') {\n if (arcStack.length) {\n const temp = arcStack.shift() as number[];\n ctx.lineTo(temp[0], temp[1]);\n ctx.stroke();\n } else {\n circleLock = false;\n ctx.lineTo(cStartPoint[0], cStartPoint[1]);\n ctx.stroke();\n arcStack = [];\n\n ctx.globalCompositeOperation = 'destination-over';\n ctx.beginPath();\n ctx.lineWidth = lineWidth;\n ctx.arc(radius, radius, bR, 0, 2 * Math.PI, true);\n\n ctx.beginPath();\n ctx.save();\n ctx.arc(radius, radius, radius - 3 * lineWidth, 0, 2 * Math.PI, true);\n\n ctx.restore();\n ctx.clip();\n ctx.fillStyle = color;\n }\n } else {\n if (data >= 0.85) {\n if (currRange > range / 4) {\n const t = range * 0.01;\n currRange -= t;\n }\n } else if (data <= 0.1) {\n if (currRange < range * 1.5) {\n const t = range * 0.01;\n currRange += t;\n }\n } else {\n if (currRange <= range) {\n const t = range * 0.01;\n currRange += t;\n }\n if (currRange >= range) {\n const t = range * 0.01;\n currRange -= t;\n }\n }\n if (data - currData > 0) {\n currData += waveupsp;\n }\n if (data - currData < 0) {\n currData -= waveupsp;\n }\n\n sp += 0.07;\n drawSin();\n }\n self.timer = requestAnimationFrame(render);\n }\n render();\n }\n render() {\n const { radio } = this.state;\n const { percent, title, height = 1 } = this.props;\n return (\n (this.root = n)}\n style={{ transform: `scale(${radio})` }}\n >\n
    \n (this.node = n)}\n width={height * 2}\n height={height * 2}\n />\n
    \n
    \n {title && {title}}\n

    {percent}%

    \n
    \n \n );\n }\n}\n\nexport default autoHeight()(WaterWave);\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\IntroduceRow.tsx",["1557","1558","1559","1560","1561","1562","1563","1564","1565"],"import React from 'react';\nimport { Row, Col, Icon, Tooltip } from 'antd';\nimport { FormattedMessage } from 'umi-plugin-react/locale';\nimport Charts from './Charts';\nimport numeral from 'numeral';\nimport styles from '../style.less';\nimport Yuan from '../utils/Yuan';\nimport Trend from './Trend';\nimport { IVisitData } from '../data.d';\nconst { ChartCard, MiniArea, MiniBar, MiniProgress, Field } = Charts;\n\nconst topColResponsiveProps = {\n xs: 24,\n sm: 12,\n md: 12,\n lg: 12,\n xl: 6,\n style: { marginBottom: 24 },\n};\n\nconst IntroduceRow = ({ loading, visitData }: { loading: boolean; visitData: IVisitData[] }) => {\n return (\n \n \n \n }\n action={\n \n }\n >\n \n
    \n }\n loading={loading}\n total={() => 126560}\n footer={\n \n }\n value={`¥${numeral(12423).format('0,0')}`}\n />\n }\n contentHeight={46}\n >\n \n \n 12%\n \n \n \n 11%\n \n \n \n\n \n }\n action={\n \n }\n >\n \n \n }\n total={numeral(8846).format('0,0')}\n footer={\n \n }\n value={numeral(1234).format('0,0')}\n />\n }\n contentHeight={46}\n >\n \n \n \n \n }\n action={\n \n }\n >\n \n \n }\n total={numeral(6560).format('0,0')}\n footer={\n \n }\n value=\"60%\"\n />\n }\n contentHeight={46}\n >\n \n \n \n \n \n }\n action={\n \n }\n >\n \n \n }\n total=\"78%\"\n footer={\n
    \n \n \n 12%\n \n \n \n 11%\n \n
    \n }\n contentHeight={46}\n >\n \n \n \n \n );\n};\n\nexport default IntroduceRow;\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\NumberInfo\\index.tsx",["1566","1567"],"import React from 'react';\nimport { Icon } from 'antd';\nimport classNames from 'classnames';\nimport styles from './index.less';\nexport interface NumberInfoProps {\n title?: React.ReactNode | string;\n subTitle?: React.ReactNode | string;\n total?: React.ReactNode | string;\n status?: 'up' | 'down';\n theme?: string;\n gap?: number;\n subTotal?: number;\n suffix?: string;\n style?: React.CSSProperties;\n}\nconst NumberInfo: React.SFC = ({\n theme,\n title,\n subTitle,\n total,\n subTotal,\n status,\n suffix,\n gap,\n ...rest\n}) => (\n \n {title && (\n
    \n {title}\n
    \n )}\n {subTitle && (\n \n {subTitle}\n \n )}\n
    \n \n {total}\n {suffix && {suffix}}\n \n {(status || subTotal) && (\n \n {subTotal}\n {status && }\n \n )}\n
    \n \n);\n\nexport default NumberInfo;\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\OfflineData.tsx",["1568","1569","1570","1571","1572","1573"],"import React from 'react';\nimport { Card, Tabs, Row, Col } from 'antd';\nimport { formatMessage, FormattedMessage } from 'umi-plugin-react/locale';\nimport Charts from './Charts';\nimport styles from '../style.less';\nimport NumberInfo from './NumberInfo';\nimport { IOfflineData, IOfflineChartData } from '../data';\nconst { TimelineChart, Pie } = Charts;\n\nconst CustomTab = ({\n data,\n currentTabKey: currentKey,\n}: {\n data: IOfflineData;\n currentTabKey: string;\n}) => {\n return (\n \n \n \n }\n gap={2}\n total={`${data.cvr * 100}%`}\n theme={currentKey !== data.name ? 'light' : undefined}\n />\n \n \n \n \n \n );\n};\n\nconst { TabPane } = Tabs;\n\nconst OfflineData = ({\n activeKey,\n loading,\n offlineData,\n offlineChartData,\n handleTabChange,\n}: {\n activeKey: string;\n loading: boolean;\n offlineData: IOfflineData[];\n offlineChartData: IOfflineChartData[];\n handleTabChange: (activeKey: string) => void;\n}) => (\n \n \n {offlineData.map(shop => (\n } key={shop.name}>\n
    \n \n
    \n
    \n ))}\n
    \n
    \n);\n\nexport default OfflineData;\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\PageLoading\\index.tsx",[],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\ProportionSales.tsx",["1574","1575","1576","1577","1578","1579"],"import React from 'react';\nimport { Card, Radio } from 'antd';\nimport Charts from './Charts';\nimport { FormattedMessage } from 'umi-plugin-react/locale';\nimport styles from '../style.less';\nimport Yuan from '../utils/Yuan';\nimport { RadioChangeEvent } from 'antd/es/radio';\nimport { ISalesData } from '../data';\n\nconst { Pie } = Charts;\n\nconst ProportionSales = ({\n dropdownGroup,\n salesType,\n loading,\n salesPieData,\n handleChangeSalesType,\n}: {\n loading: boolean;\n dropdownGroup: React.ReactNode;\n salesType: 'all' | 'online' | 'stores';\n salesPieData: ISalesData[];\n handleChangeSalesType?: (e: RadioChangeEvent) => void;\n}) => {\n return (\n \n }\n bodyStyle={{ padding: 24 }}\n extra={\n
    \n {dropdownGroup}\n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n }\n style={{ marginTop: 24 }}\n >\n \n

    \n \n

    \n }\n total={() => {salesPieData.reduce((pre, now) => now.y + pre, 0)}}\n data={salesPieData}\n valueFormat={value => {value}}\n height={248}\n lineWidth={4}\n />\n \n \n );\n};\n\nexport default ProportionSales;\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\SalesCard.tsx",["1580","1581","1582","1583"],"import React from 'react';\nimport { Row, Col, Card, Tabs, DatePicker } from 'antd';\nimport { FormattedMessage, formatMessage } from 'umi-plugin-react/locale';\nimport numeral from 'numeral';\nimport Charts from './Charts';\nimport { RangePickerValue } from 'antd/es/date-picker/interface';\nimport { ISalesData } from '../data';\nimport styles from '../style.less';\n\nconst { Bar } = Charts;\n\nconst { RangePicker } = DatePicker;\nconst { TabPane } = Tabs;\n\nconst rankingListData: { title: string; total: number }[] = [];\nfor (let i = 0; i < 7; i += 1) {\n rankingListData.push({\n title: formatMessage({ id: 'BLOCK_NAME.analysis.test' }, { no: i }),\n total: 323234,\n });\n}\n\nconst SalesCard = ({\n rangePickerValue,\n salesData,\n isActive,\n handleRangePickerChange,\n loading,\n selectDate,\n}: {\n rangePickerValue: RangePickerValue;\n isActive: (key: 'today' | 'week' | 'month' | 'year') => string;\n salesData: ISalesData[];\n loading: boolean;\n handleRangePickerChange: (dates: RangePickerValue, dateStrings: [string, string]) => void;\n selectDate: (key: 'today' | 'week' | 'month' | 'year') => void;\n}) => (\n \n \n }\n size=\"large\"\n tabBarStyle={{ marginBottom: 24 }}\n >\n }\n key=\"sales\"\n >\n \n \n
    \n \n }\n data={salesData}\n />\n
    \n \n \n
    \n

    \n \n

    \n
      \n {rankingListData.map((item, i) => (\n
    • \n \n {i + 1}\n \n \n {item.title}\n \n \n {numeral(item.total).format('0,0')}\n \n
    • \n ))}\n
    \n
    \n \n
    \n \n }\n key=\"views\"\n >\n \n \n
    \n \n }\n data={salesData}\n />\n
    \n \n \n
    \n

    \n \n

    \n
      \n {rankingListData.map((item, i) => (\n
    • \n \n {i + 1}\n \n \n {item.title}\n \n {numeral(item.total).format('0,0')}\n
    • \n ))}\n
    \n
    \n \n
    \n \n \n \n
    \n);\n\nexport default SalesCard;\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\TopSearch.tsx",["1584","1585","1586","1587","1588"],"import React from 'react';\nimport { Row, Col, Table, Tooltip, Card, Icon } from 'antd';\nimport { FormattedMessage } from 'umi-plugin-react/locale';\nimport Charts from './Charts';\nimport Trend from './Trend';\nimport NumberInfo from './NumberInfo';\nimport numeral from 'numeral';\nimport styles from '../style.less';\nimport { ISearchData, IVisitData2 } from '../data';\n\nconst { MiniArea } = Charts;\n\nconst columns = [\n {\n title: ,\n dataIndex: 'index',\n key: 'index',\n },\n {\n title: (\n \n ),\n dataIndex: 'keyword',\n key: 'keyword',\n render: (text: React.ReactNode) => {text},\n },\n {\n title: ,\n dataIndex: 'count',\n key: 'count',\n sorter: (a: { count: number }, b: { count: number }) => a.count - b.count,\n className: styles.alignRight,\n },\n {\n title: ,\n dataIndex: 'range',\n key: 'range',\n sorter: (a: { range: number }, b: { range: number }) => a.range - b.range,\n render: (text: React.ReactNode, record: { status: number }) => (\n \n {text}%\n \n ),\n },\n];\n\nconst TopSearch = ({\n loading,\n visitData2,\n searchData,\n dropdownGroup,\n}: {\n loading: boolean;\n visitData2: IVisitData2[];\n dropdownGroup: React.ReactNode;\n searchData: ISearchData[];\n}) => (\n \n }\n extra={dropdownGroup}\n style={{ marginTop: 24 }}\n >\n \n \n \n \n \n }\n >\n \n \n \n }\n gap={8}\n total={numeral(12321).format('0,0')}\n status=\"up\"\n subTotal={17.1}\n />\n \n \n \n \n \n \n }\n >\n \n \n \n }\n total={2.7}\n status=\"down\"\n subTotal={26.2}\n gap={8}\n />\n \n \n \n \n rowKey={record => record.index}\n size=\"small\"\n columns={columns}\n dataSource={searchData}\n pagination={{\n style: { marginBottom: 0 },\n pageSize: 5,\n }}\n />\n \n);\n\nexport default TopSearch;\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\components\\Trend\\index.tsx",["1589","1590"],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\data.d.ts",["1591","1592","1593","1594","1595","1596","1597","1598","1599","1600","1601","1602"],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\index.tsx",["1603","1604","1605","1606","1607","1608","1609","1610","1611","1612","1613","1614","1615","1616","1617","1618","1619","1620"],"import React, { Component, Suspense } from 'react';\nimport { connect } from 'dva';\nimport { Row, Col, Icon, Menu, Dropdown } from 'antd';\nimport { RangePickerValue } from 'antd/es/date-picker/interface';\nimport { getTimeDistance } from './utils/utils';\nimport styles from './style.less';\nimport PageLoading from './components/PageLoading';\nimport { Dispatch } from 'redux';\nimport { IAnalysisData } from './data.d';\nimport { RadioChangeEvent } from 'antd/es/radio';\nimport { GridContent } from '@ant-design/pro-layout';\n\nconst IntroduceRow = React.lazy(() => import('./components/IntroduceRow'));\nconst SalesCard = React.lazy(() => import('./components/SalesCard'));\nconst TopSearch = React.lazy(() => import('./components/TopSearch'));\nconst ProportionSales = React.lazy(() => import('./components/ProportionSales'));\nconst OfflineData = React.lazy(() => import('./components/OfflineData'));\n\ninterface BLOCK_NAME_CAMEL_CASEProps {\n BLOCK_NAME_CAMEL_CASE: IAnalysisData;\n dispatch: Dispatch;\n loading: boolean;\n}\n\ninterface BLOCK_NAME_CAMEL_CASEState {\n salesType: 'all' | 'online' | 'stores';\n currentTabKey: string;\n rangePickerValue: RangePickerValue;\n}\n\n@connect(\n ({\n BLOCK_NAME_CAMEL_CASE,\n loading,\n }: {\n BLOCK_NAME_CAMEL_CASE: any;\n loading: {\n effects: { [key: string]: boolean };\n };\n }) => ({\n BLOCK_NAME_CAMEL_CASE,\n loading: loading.effects['BLOCK_NAME_CAMEL_CASE/fetch'],\n }),\n)\nclass PAGE_NAME_UPPER_CAMEL_CASE extends Component<\n BLOCK_NAME_CAMEL_CASEProps,\n BLOCK_NAME_CAMEL_CASEState\n> {\n state: BLOCK_NAME_CAMEL_CASEState = {\n salesType: 'all',\n currentTabKey: '',\n rangePickerValue: getTimeDistance('year'),\n };\n reqRef!: number;\n timeoutId!: number;\n componentDidMount() {\n const { dispatch } = this.props;\n this.reqRef = requestAnimationFrame(() => {\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/fetch',\n });\n });\n }\n\n componentWillUnmount() {\n const { dispatch } = this.props;\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/clear',\n });\n cancelAnimationFrame(this.reqRef);\n clearTimeout(this.timeoutId);\n }\n\n handleChangeSalesType = (e: RadioChangeEvent) => {\n this.setState({\n salesType: e.target.value,\n });\n };\n\n handleTabChange = (key: string) => {\n this.setState({\n currentTabKey: key,\n });\n };\n\n handleRangePickerChange = (rangePickerValue: RangePickerValue) => {\n const { dispatch } = this.props;\n this.setState({\n rangePickerValue,\n });\n\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/fetchSalesData',\n });\n };\n\n selectDate = (type: 'today' | 'week' | 'month' | 'year') => {\n const { dispatch } = this.props;\n this.setState({\n rangePickerValue: getTimeDistance(type),\n });\n\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/fetchSalesData',\n });\n };\n\n isActive = (type: 'today' | 'week' | 'month' | 'year') => {\n const { rangePickerValue } = this.state;\n const value = getTimeDistance(type);\n if (!rangePickerValue[0] || !rangePickerValue[1]) {\n return '';\n }\n if (\n rangePickerValue[0].isSame(value[0], 'day') &&\n rangePickerValue[1].isSame(value[1], 'day')\n ) {\n return styles.currentDate;\n }\n return '';\n };\n\n render() {\n const { rangePickerValue, salesType, currentTabKey } = this.state;\n const { BLOCK_NAME_CAMEL_CASE, loading } = this.props;\n const {\n visitData,\n visitData2,\n salesData,\n searchData,\n offlineData,\n offlineChartData,\n salesTypeData,\n salesTypeDataOnline,\n salesTypeDataOffline,\n } = BLOCK_NAME_CAMEL_CASE;\n let salesPieData;\n if (salesType === 'all') {\n salesPieData = salesTypeData;\n } else {\n salesPieData = salesType === 'online' ? salesTypeDataOnline : salesTypeDataOffline;\n }\n const menu = (\n \n 操作一\n 操作二\n \n );\n\n const dropdownGroup = (\n \n \n \n \n \n );\n\n const activeKey = currentTabKey || (offlineData[0] && offlineData[0].name);\n return (\n \n \n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default PAGE_NAME_UPPER_CAMEL_CASE;\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\locales\\en-US.ts",[],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\locales\\pt-BR.ts",[],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\locales\\zh-CN.ts",[],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\locales\\zh-TW.ts",[],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\model.tsx",["1621","1622","1623","1624","1625","1626","1627"],"import { fakeChartData } from './service';\nimport { IAnalysisData } from './data';\nimport { Reducer } from 'redux';\nimport { EffectsCommandMap } from 'dva';\nimport { AnyAction } from 'redux';\n\nexport type Effect = (\n action: AnyAction,\n effects: EffectsCommandMap & { select: (func: (state: IAnalysisData) => T) => T },\n) => void;\n\nexport interface ModelType {\n namespace: string;\n state: IAnalysisData;\n effects: {\n fetch: Effect;\n fetchSalesData: Effect;\n };\n reducers: {\n save: Reducer;\n clear: Reducer;\n };\n}\n\nconst Model: ModelType = {\n namespace: 'BLOCK_NAME_CAMEL_CASE',\n\n state: {\n visitData: [],\n visitData2: [],\n salesData: [],\n searchData: [],\n offlineData: [],\n offlineChartData: [],\n salesTypeData: [],\n salesTypeDataOnline: [],\n salesTypeDataOffline: [],\n radarData: [],\n },\n\n effects: {\n *fetch(_, { call, put }) {\n const response = yield call(fakeChartData);\n yield put({\n type: 'save',\n payload: response,\n });\n },\n *fetchSalesData(_, { call, put }) {\n const response = yield call(fakeChartData);\n yield put({\n type: 'save',\n payload: {\n salesData: response.salesData,\n },\n });\n },\n },\n\n reducers: {\n save(state, { payload }) {\n return {\n ...state,\n ...payload,\n };\n },\n clear() {\n return {\n visitData: [],\n visitData2: [],\n salesData: [],\n searchData: [],\n offlineData: [],\n offlineChartData: [],\n salesTypeData: [],\n salesTypeDataOnline: [],\n salesTypeDataOffline: [],\n radarData: [],\n };\n },\n },\n};\n\nexport default Model;\n","C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\service.tsx",[],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\utils\\utils.ts",[],"C:\\GitHub\\pro-blocks\\DashboardAnalysis\\src\\utils\\Yuan.tsx",["1628","1629"],"import React from 'react';\nimport { yuan } from '../components/Charts';\n/**\n * 减少使用 dangerouslySetInnerHTML\n */\nexport default class Yuan extends React.Component<{\n children: React.ReactText;\n}> {\n main: HTMLSpanElement | undefined | null;\n componentDidMount() {\n this.renderToHtml();\n }\n\n componentDidUpdate() {\n this.renderToHtml();\n }\n renderToHtml = () => {\n const { children } = this.props;\n if (this.main) {\n this.main.innerHTML = yuan(children);\n }\n };\n\n render() {\n return (\n {\n this.main = ref;\n }}\n />\n );\n }\n}\n","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\_mock.ts",["1630"],"C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\ActiveChart\\index.tsx",["1631","1632","1633","1634","1635"],"import React, { Component } from 'react';\nimport Charts from '../Charts';\nimport { Statistic } from 'antd';\nimport styles from './index.less';\n\nconst { MiniArea } = Charts;\n\nfunction fixedZero(val: number) {\n return val * 1 < 10 ? `0${val}` : val;\n}\n\nfunction getActiveData() {\n const activeData = [];\n for (let i = 0; i < 24; i += 1) {\n activeData.push({\n x: `${fixedZero(i)}:00`,\n y: Math.floor(Math.random() * 200) + i * 50,\n });\n }\n return activeData;\n}\n\nexport default class ActiveChart extends Component {\n state = {\n activeData: getActiveData(),\n };\n timer: number | undefined;\n requestRef: number | undefined;\n\n componentDidMount() {\n this.loopData();\n }\n componentWillUnmount() {\n clearTimeout(this.timer);\n if (this.requestRef) {\n cancelAnimationFrame(this.requestRef);\n }\n }\n\n loopData = () => {\n this.requestRef = requestAnimationFrame(() => {\n this.timer = window.setTimeout(() => {\n this.setState(\n {\n activeData: getActiveData(),\n },\n () => {\n this.loopData();\n },\n );\n }, 1000);\n });\n };\n\n render() {\n const { activeData = [] } = this.state;\n\n return (\n
    \n \n
    \n \n
    \n {activeData && (\n
    \n
    \n

    {[...activeData].sort()[activeData.length - 1].y + 200} 亿元

    \n

    {[...activeData].sort()[Math.floor(activeData.length / 2)].y} 亿元

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n )}\n {activeData && (\n
    \n 00:00\n {activeData[Math.floor(activeData.length / 2)].x}\n {activeData[activeData.length - 1].x}\n
    \n )}\n
    \n );\n }\n}\n","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\autoHeight.tsx",["1636","1637","1638","1639","1640","1641","1642","1643","1644","1645","1646","1647"],"import React from 'react';\n\nexport type IReactComponent

    =\n | React.StatelessComponent

    \n | React.ComponentClass

    \n | React.ClassicComponentClass

    ;\n\nfunction computeHeight(node: HTMLDivElement) {\n node.style.height = '100%';\n const totalHeight = parseInt(getComputedStyle(node).height + '', 10);\n const padding =\n parseInt(getComputedStyle(node).paddingTop + '', 10) +\n parseInt(getComputedStyle(node).paddingBottom + '', 10);\n return totalHeight - padding;\n}\n\nfunction getAutoHeight(n: HTMLDivElement) {\n if (!n) {\n return 0;\n }\n\n const node = n;\n\n let height = computeHeight(node);\n const parentNode = node.parentNode as HTMLDivElement;\n if (parentNode) {\n height = computeHeight(parentNode);\n }\n\n return height;\n}\n\ninterface IAutoHeightProps {\n height?: number;\n}\n\nfunction autoHeight() {\n return function

    (\n WrappedComponent: React.ComponentClass

    | React.SFC

    ,\n ): React.ComponentClass

    {\n class AutoHeightComponent extends React.Component

    {\n state = {\n computedHeight: 0,\n };\n root!: HTMLDivElement;\n componentDidMount() {\n const { height } = this.props;\n if (!height) {\n let h = getAutoHeight(this.root);\n this.setState({ computedHeight: h });\n if (h < 1) {\n h = getAutoHeight(this.root);\n this.setState({ computedHeight: h });\n }\n }\n }\n handleRoot = (node: HTMLDivElement) => {\n this.root = node;\n };\n render() {\n const { height } = this.props;\n const { computedHeight } = this.state;\n const h = height || computedHeight;\n return (\n

    \n {h > 0 && }\n
    \n );\n }\n }\n return AutoHeightComponent;\n };\n}\nexport default autoHeight;\n","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\Gauge\\index.tsx",["1648","1649","1650","1651","1652","1653","1654","1655","1656","1657","1658"],"import React from 'react';\nimport { Chart, Geom, Axis, Coord, Guide, Shape } from 'bizcharts';\nimport autoHeight from '../autoHeight';\n\nconst { Arc, Html, Line } = Guide;\n\nexport interface IGaugeProps {\n title: React.ReactNode;\n color?: string;\n height?: number;\n bgColor?: number;\n percent: number;\n forceFit?: boolean;\n style?: React.CSSProperties;\n formatter?: (value: string) => string;\n}\n\nconst defaultFormatter = (val: string): string => {\n switch (val) {\n case '2':\n return '差';\n case '4':\n return '中';\n case '6':\n return '良';\n case '8':\n return '优';\n default:\n return '';\n }\n};\n\nShape.registerShape!('point', 'pointer', {\n drawShape(cfg: any, group: any) {\n let point = cfg.points[0];\n point = (this as any).parsePoint(point);\n const center = (this as any).parsePoint({\n x: 0,\n y: 0,\n });\n group.addShape('line', {\n attrs: {\n x1: center.x,\n y1: center.y,\n x2: point.x,\n y2: point.y,\n stroke: cfg.color,\n lineWidth: 2,\n lineCap: 'round',\n },\n });\n return group.addShape('circle', {\n attrs: {\n x: center.x,\n y: center.y,\n r: 6,\n stroke: cfg.color,\n lineWidth: 3,\n fill: '#fff',\n },\n });\n },\n});\n\nclass Gauge extends React.Component {\n render() {\n const {\n title,\n height = 1,\n percent,\n forceFit = true,\n formatter = defaultFormatter,\n color = '#2F9CFF',\n bgColor = '#F0F2F5',\n } = this.props;\n const cols = {\n value: {\n type: 'linear',\n min: 0,\n max: 10,\n tickCount: 6,\n nice: true,\n },\n };\n const renderHtml = () => `\n
    \n

    ${title}

    \n

    \n ${(data[0].value * 10).toFixed(2)}%\n

    \n
    `;\n const data = [{ value: percent / 10 }];\n const textStyle: {\n fontSize: number;\n fill: string;\n textAlign: 'center';\n } = {\n fontSize: 12,\n fill: 'rgba(0, 0, 0, 0.65)',\n textAlign: 'center',\n };\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default autoHeight()(Gauge);\n","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\index.tsx",["1659"],"import Pie from './Pie';\nimport Gauge from './Gauge';\nimport WaterWave from './WaterWave';\nimport TagCloud from './TagCloud';\nimport MiniArea from './MiniArea';\nconst Charts = {\n Pie,\n WaterWave,\n Gauge,\n MiniArea,\n TagCloud,\n};\n\nexport { Charts as default, Pie, WaterWave, Gauge, TagCloud, MiniArea };\n","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\MiniArea\\index.tsx",["1660","1661","1662","1663","1664","1665","1666","1667","1668","1669","1670","1671","1672","1673","1674","1675","1676"],"import React from 'react';\nimport { Chart, Axis, Tooltip, Geom } from 'bizcharts';\nimport autoHeight from '../autoHeight';\nimport styles from '../index.less';\n\nexport interface IAxis {\n title: any;\n line: any;\n gridAlign: any;\n labels: any;\n tickLine: any;\n grid: any;\n label: any;\n}\n\nexport interface IMiniAreaProps {\n color?: string;\n height?: number;\n borderColor?: string;\n line?: boolean;\n animate?: boolean;\n xAxis?: IAxis;\n forceFit?: boolean;\n scale?: { x?: any; y?: any };\n yAxis?: Partial;\n borderWidth?: number;\n data: Array<{\n x: number | string;\n y: number;\n }>;\n}\n\nclass MiniArea extends React.Component {\n render() {\n const {\n height = 1,\n data = [],\n forceFit = true,\n color = 'rgba(24, 144, 255, 0.2)',\n borderColor = '#1089ff',\n scale = { x: {}, y: {} },\n borderWidth = 2,\n line,\n xAxis,\n yAxis,\n animate = true,\n } = this.props;\n\n const padding: [number, number, number, number] = [36, 5, 30, 5];\n\n const scaleProps = {\n x: {\n type: 'cat',\n range: [0, 1],\n ...scale!.x,\n },\n y: {\n min: 0,\n ...scale!.y,\n },\n };\n\n const tooltip: [string, (...args: any[]) => { name?: string; value: string }] = [\n 'x*y',\n (x: string, y: string) => ({\n name: x,\n value: y,\n }),\n ];\n\n const chartHeight = height + 54;\n\n return (\n
    \n
    \n {height > 0 && (\n \n \n \n \n \n {line ? (\n \n ) : (\n \n )}\n \n )}\n
    \n
    \n );\n }\n}\n\nexport default autoHeight()(MiniArea);\n","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\Pie\\index.tsx",["1677","1678","1679","1680","1681","1682","1683","1684","1685","1686","1687","1688","1689","1690","1691","1692","1693","1694","1695","1696","1697","1698","1699","1700"],"C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\TagCloud\\index.tsx",["1701","1702","1703","1704","1705","1706","1707","1708","1709","1710","1711","1712","1713","1714","1715","1716","1717","1718","1719","1720","1721","1722","1723","1724","1725","1726","1727","1728"],"import React, { Component } from 'react';\nimport { Chart, Geom, Coord, Shape, Tooltip } from 'bizcharts';\nimport DataSet from '@antv/data-set';\nimport Debounce from 'lodash-decorators/debounce';\nimport Bind from 'lodash-decorators/bind';\nimport classNames from 'classnames';\nimport autoHeight from '../autoHeight';\nimport styles from './index.less';\n\n/* eslint no-underscore-dangle: 0 */\n/* eslint no-param-reassign: 0 */\n\nconst imgUrl = 'https://gw.alipayobjects.com/zos/rmsportal/gWyeGLCdFFRavBGIDzWk.png';\n\nexport interface ITagCloudProps {\n data: Array<{\n name: string;\n value: string;\n }>;\n height?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\ninterface ITagCloudState {\n dv: any;\n height?: number;\n width: number;\n}\n\nclass TagCloud extends Component {\n state = {\n dv: null,\n height: 0,\n width: 0,\n };\n isUnmount!: boolean;\n requestRef!: number;\n\n root: HTMLDivElement | undefined;\n imageMask: HTMLImageElement | undefined;\n\n componentDidMount() {\n requestAnimationFrame(() => {\n this.initTagCloud();\n this.renderChart(this.props);\n });\n window.addEventListener('resize', this.resize, { passive: true });\n }\n\n componentDidUpdate(preProps?: ITagCloudProps) {\n const { data } = this.props;\n if (preProps && JSON.stringify(preProps.data) !== JSON.stringify(data)) {\n this.renderChart(this.props);\n }\n }\n componentWillUnmount() {\n this.isUnmount = true;\n window.cancelAnimationFrame(this.requestRef);\n window.removeEventListener('resize', this.resize);\n }\n resize = () => {\n this.requestRef = requestAnimationFrame(() => {\n this.renderChart(this.props);\n });\n };\n saveRootRef = (node: HTMLDivElement) => {\n this.root = node;\n };\n\n initTagCloud = () => {\n function getTextAttrs(cfg: {\n x?: any;\n y?: any;\n style?: any;\n opacity?: any;\n origin?: any;\n color?: any;\n }) {\n return Object.assign({}, cfg.style, {\n fillOpacity: cfg.opacity,\n fontSize: cfg.origin._origin.size,\n rotate: cfg.origin._origin.rotate,\n text: cfg.origin._origin.text,\n textAlign: 'center',\n fontFamily: cfg.origin._origin.font,\n fill: cfg.color,\n textBaseline: 'Alphabetic',\n });\n }\n\n (Shape as any).registerShape('point', 'cloud', {\n drawShape(\n cfg: { x: any; y: any },\n container: { addShape: (arg0: string, arg1: { attrs: any }) => void },\n ) {\n const attrs = getTextAttrs(cfg);\n return container.addShape('text', {\n attrs: Object.assign(attrs, {\n x: cfg.x,\n y: cfg.y,\n }),\n });\n },\n });\n };\n\n @Bind()\n @Debounce(500)\n renderChart(nextProps: ITagCloudProps) {\n // const colors = ['#1890FF', '#41D9C7', '#2FC25B', '#FACC14', '#9AE65C'];\n const { data, height } = nextProps || this.props;\n if (data.length < 1 || !this.root) {\n return;\n }\n\n const h = height;\n const w = this.root.offsetWidth;\n\n const onload = () => {\n const dv = new DataSet.View().source(data);\n const range = dv.range('value');\n const [min, max] = range;\n dv.transform({\n type: 'tag-cloud',\n fields: ['name', 'value'],\n imageMask: this.imageMask,\n font: 'Verdana',\n size: [w, h], // 宽高设置最好根据 imageMask 做调整\n padding: 0,\n timeInterval: 5000, // max execute time\n rotate() {\n return 0;\n },\n fontSize(d: { value: number }) {\n // eslint-disable-next-line\n return Math.pow((d.value - min) / (max - min), 2) * (17.5 - 5) + 5;\n },\n });\n\n if (this.isUnmount) {\n return;\n }\n\n this.setState({\n dv,\n width: w,\n height: h,\n });\n };\n\n if (!this.imageMask) {\n this.imageMask = new Image();\n this.imageMask.crossOrigin = '';\n this.imageMask.src = imgUrl;\n\n this.imageMask.onload = onload;\n } else {\n onload();\n }\n }\n\n render() {\n const { className, height } = this.props;\n const { dv, width, height: stateHeight } = this.state;\n\n return (\n \n {dv && (\n \n \n \n \n \n )}\n
    \n );\n }\n}\n\nexport default autoHeight()(TagCloud);\n","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\components\\Charts\\WaterWave\\index.tsx",["1729","1730","1731","1732","1733","1734"],"C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\data.d.ts",["1735"],"C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\index.tsx",["1736","1737","1738","1739","1740","1741","1742","1743","1744","1745","1746","1747"],"import React, { Component } from 'react';\nimport { connect } from 'dva';\nimport { formatMessage, FormattedMessage } from 'umi-plugin-react/locale';\nimport { Row, Col, Card, Statistic, Tooltip } from 'antd';\nimport numeral from 'numeral';\nimport { Dispatch } from 'redux';\nimport { IStateType } from './model';\nimport ActiveChart from './components/ActiveChart';\nimport styles from './style.less';\nimport Charts from './components/Charts';\nimport { GridContent } from '@ant-design/pro-layout';\n\nconst { Countdown } = Statistic;\n\nconst { Pie, WaterWave, Gauge, TagCloud } = Charts;\n\nconst targetTime = new Date().getTime() + 3900000;\n\ninterface PAGE_NAME_UPPER_CAMEL_CASEProps {\n BLOCK_NAME_CAMEL_CASE: IStateType;\n dispatch: Dispatch;\n loading: boolean;\n}\n\n@connect(\n ({\n BLOCK_NAME_CAMEL_CASE,\n loading,\n }: {\n BLOCK_NAME_CAMEL_CASE: IStateType;\n loading: {\n models: { [key: string]: boolean };\n };\n }) => ({\n BLOCK_NAME_CAMEL_CASE,\n loading: loading.models.monitor,\n }),\n)\nclass PAGE_NAME_UPPER_CAMEL_CASE extends Component {\n componentDidMount() {\n const { dispatch } = this.props;\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/fetchTags',\n });\n }\n\n render() {\n const { BLOCK_NAME_CAMEL_CASE, loading } = this.props;\n const { tags } = BLOCK_NAME_CAMEL_CASE;\n return (\n \n \n \n \n \n }\n bordered={false}\n >\n \n \n \n }\n suffix=\"元\"\n value={numeral(124543233).format('0,0')}\n />\n \n \n \n }\n value=\"92%\"\n />\n \n \n \n }\n >\n \n
    \n \n \n \n }\n suffix=\"元\"\n value={numeral(234).format('0,0')}\n />\n \n \n
    \n \n }\n >\n \n \n
    \n \n \n \n \n }\n style={{ marginBottom: 24 }}\n bordered={false}\n >\n \n \n \n }\n style={{ marginBottom: 24 }}\n bodyStyle={{ textAlign: 'center' }}\n bordered={false}\n >\n \n \n \n \n \n \n \n }\n bordered={false}\n className={styles.pieCard}\n >\n \n \n \n }\n total=\"28%\"\n height={128}\n lineWidth={2}\n />\n \n \n \n }\n total=\"22%\"\n height={128}\n lineWidth={2}\n />\n \n \n \n }\n total=\"32%\"\n height={128}\n lineWidth={2}\n />\n \n \n \n \n \n \n }\n loading={loading}\n bordered={false}\n bodyStyle={{ overflow: 'hidden' }}\n >\n \n \n \n \n \n }\n bodyStyle={{ textAlign: 'center', fontSize: 0 }}\n bordered={false}\n >\n \n }\n percent={34}\n />\n \n \n \n \n \n );\n }\n}\n\nexport default PAGE_NAME_UPPER_CAMEL_CASE;\n","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\locales\\en-US.ts",[],"C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\locales\\pt-BR.ts",[],"C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\locales\\zh-CN.ts",[],"C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\locales\\zh-TW.ts",[],"C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\model.ts",["1748","1749","1750","1751","1752","1753","1754","1755"],"import { queryTags } from './service';\nimport { ITag } from './data';\nimport { Reducer } from 'redux';\nimport { EffectsCommandMap } from 'dva';\nimport { AnyAction } from 'redux';\n\nexport interface IStateType {\n tags: ITag[];\n}\n\nexport type Effect = (\n action: AnyAction,\n effects: EffectsCommandMap & { select: (func: (state: IStateType) => T) => T },\n) => void;\n\nexport interface ModelType {\n namespace: string;\n state: IStateType;\n effects: {\n fetchTags: Effect;\n };\n reducers: {\n saveTags: Reducer;\n };\n}\n\nconst Model: ModelType = {\n namespace: 'BLOCK_NAME_CAMEL_CASE',\n\n state: {\n tags: [],\n },\n\n effects: {\n *fetchTags(_, { call, put }) {\n const response = yield call(queryTags);\n yield put({\n type: 'saveTags',\n payload: response.list,\n });\n },\n },\n\n reducers: {\n saveTags(state, action) {\n return {\n ...state,\n tags: action.payload,\n };\n },\n },\n};\n\nexport default Model;\n","C:\\GitHub\\pro-blocks\\DashboardMonitor\\src\\service.ts",[],"C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\_mock.ts",["1756"],"C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\components\\EditableLinkGroup\\index.tsx",["1757"],"C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\components\\Radar\\autoHeight.tsx",["1758","1759","1760","1761","1762","1763","1764","1765","1766","1767","1768","1769","1770"],"C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\components\\Radar\\index.tsx",["1771","1772","1773","1774","1775","1776","1777","1778","1779","1780","1781"],"import React, { Component } from 'react';\nimport { Chart, Tooltip, Geom, Coord, Axis } from 'bizcharts';\nimport { Row, Col } from 'antd';\nimport autoHeight from './autoHeight';\nimport styles from './index.less';\n\nexport interface IRadarProps {\n title?: React.ReactNode;\n height?: number;\n padding?: [number, number, number, number];\n hasLegend?: boolean;\n data: Array<{\n name: string;\n label: string;\n value: string | number;\n }>;\n colors?: string[];\n animate?: boolean;\n forceFit?: boolean;\n tickCount?: number;\n style?: React.CSSProperties;\n}\ninterface IRadarState {\n legendData: Array<{\n checked: boolean;\n name: string;\n color: string;\n percent: number;\n value: string;\n }>;\n}\n/* eslint react/no-danger:0 */\nclass Radar extends Component {\n state: IRadarState = {\n legendData: [],\n };\n chart: G2.Chart | undefined;\n node: HTMLDivElement | undefined;\n\n componentDidMount() {\n this.getLegendData();\n }\n\n componentDidUpdate(preProps: IRadarProps) {\n const { data } = this.props;\n if (data !== preProps.data) {\n this.getLegendData();\n }\n }\n\n getG2Instance = (chart: G2.Chart) => {\n this.chart = chart;\n };\n\n // for custom lengend view\n getLegendData = () => {\n if (!this.chart) return;\n const geom = this.chart.getAllGeoms()[0]; // 获取所有的图形\n if (!geom) return;\n const items = geom.get('dataArray') || []; // 获取图形对应的\n\n const legendData = items.map((item: { color: any; _origin: any }[]) => {\n // eslint-disable-next-line\n const origins = item.map(t => t._origin);\n const result = {\n name: origins[0].name,\n color: item[0].color,\n checked: true,\n value: origins.reduce((p, n) => p + n.value, 0),\n };\n\n return result;\n });\n\n this.setState({\n legendData,\n });\n };\n\n handleRef = (n: HTMLDivElement) => {\n this.node = n;\n };\n\n handleLegendClick = (\n item: {\n checked: boolean;\n name: string;\n },\n i: string | number,\n ) => {\n const newItem = item;\n newItem.checked = !newItem.checked;\n\n const { legendData } = this.state;\n legendData[i] = newItem;\n\n const filteredLegendData = legendData.filter(l => l.checked).map(l => l.name);\n\n if (this.chart) {\n this.chart.filter('name', val => filteredLegendData.indexOf(val + '') > -1);\n this.chart.repaint();\n }\n\n this.setState({\n legendData,\n });\n };\n\n render() {\n const defaultColors = [\n '#1890FF',\n '#FACC14',\n '#2FC25B',\n '#8543E0',\n '#F04864',\n '#13C2C2',\n '#fa8c16',\n '#a0d911',\n ];\n\n const {\n data = [],\n height = 0,\n title,\n hasLegend = false,\n forceFit = true,\n tickCount = 5,\n padding = [35, 30, 16, 30] as [number, number, number, number],\n animate = true,\n colors = defaultColors,\n } = this.props;\n\n const { legendData } = this.state;\n\n const scale = {\n value: {\n min: 0,\n tickCount,\n },\n };\n\n const chartHeight = height - (hasLegend ? 80 : 22);\n\n return (\n
    \n {title &&

    {title}

    }\n \n \n \n \n \n \n \n \n {hasLegend && (\n \n {legendData.map((item, i) => (\n this.handleLegendClick(item, i)}\n >\n
    \n

    \n \n {item.name}\n

    \n
    {item.value}
    \n
    \n \n ))}\n
    \n )}\n
    \n );\n }\n}\n\nexport default autoHeight()(Radar);\n","C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\data.d.ts",["1782","1783","1784","1785","1786","1787","1788","1789","1790"],"C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\index.tsx",["1791","1792","1793","1794","1795","1796","1797","1798","1799","1800","1801","1802"],"import React, { PureComponent } from 'react';\nimport moment from 'moment';\nimport { connect } from 'dva';\nimport Link from 'umi/link';\nimport { Row, Col, Card, List, Avatar } from 'antd';\nimport { Dispatch } from 'redux';\n\nimport EditableLinkGroup from './components/EditableLinkGroup';\nimport Radar from './components/Radar';\nimport { ModalState } from './model';\nimport { ICurrentUser, IActivities, IRadarData, INotice } from './data';\nimport { PageHeaderWrapper } from '@ant-design/pro-layout';\n\nimport styles from './style.less';\n\nconst links = [\n {\n title: '操作一',\n href: '',\n },\n {\n title: '操作二',\n href: '',\n },\n {\n title: '操作三',\n href: '',\n },\n {\n title: '操作四',\n href: '',\n },\n {\n title: '操作五',\n href: '',\n },\n {\n title: '操作六',\n href: '',\n },\n];\n\ninterface BLOCK_NAME_CAMEL_CASEProps {\n currentUser: ICurrentUser;\n projectNotice: INotice[];\n activities: IActivities[];\n radarData: IRadarData[];\n dispatch: Dispatch;\n currentUserLoading: boolean;\n projectLoading: boolean;\n activitiesLoading: boolean;\n}\n\n@connect(\n ({\n BLOCK_NAME_CAMEL_CASE: { currentUser, projectNotice, activities, radarData },\n loading,\n }: {\n BLOCK_NAME_CAMEL_CASE: ModalState;\n loading: { effects: any };\n }) => ({\n currentUser,\n projectNotice,\n activities,\n radarData,\n currentUserLoading: loading.effects['BLOCK_NAME_CAMEL_CASE/fetchUserCurrent'],\n projectLoading: loading.effects['BLOCK_NAME_CAMEL_CASE/fetchProjectNotice'],\n activitiesLoading: loading.effects['BLOCK_NAME_CAMEL_CASE/fetchActivitiesList'],\n }),\n)\nclass PAGE_NAME_UPPER_CAMEL_CASE extends PureComponent {\n componentDidMount() {\n const { dispatch } = this.props;\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/init',\n });\n }\n\n componentWillUnmount() {\n const { dispatch } = this.props;\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/clear',\n });\n }\n\n renderActivities(item: IActivities) {\n const events = item.template.split(/@\\{([^{}]*)\\}/gi).map(key => {\n if (item[key]) {\n return (\n \n {item[key].name}\n \n );\n }\n return key;\n });\n return (\n \n }\n title={\n \n {item.user.name}\n  \n {events}\n \n }\n description={\n \n {moment(item.updatedAt).fromNow()}\n \n }\n />\n \n );\n }\n\n render() {\n const {\n currentUser,\n activities,\n projectNotice,\n projectLoading,\n activitiesLoading,\n radarData,\n } = this.props;\n\n const pageHeaderContent =\n currentUser && Object.keys(currentUser).length ? (\n
    \n
    \n \n
    \n
    \n
    \n 早安,\n {currentUser.name}\n ,祝你开心每一天!\n
    \n
    \n {currentUser.title} |{currentUser.group}\n
    \n
    \n
    \n ) : null;\n\n const extraContent = (\n
    \n
    \n

    项目数

    \n

    56

    \n
    \n
    \n

    团队内排名

    \n

    \n 8 / 24\n

    \n
    \n
    \n

    项目访问

    \n

    2,223

    \n
    \n
    \n );\n\n return (\n \n \n \n 全部项目}\n loading={projectLoading}\n bodyStyle={{ padding: 0 }}\n >\n {projectNotice.map(item => (\n \n \n \n \n {item.title}\n
    \n }\n description={item.description}\n />\n
    \n {item.member || ''}\n {item.updatedAt && (\n \n {moment(item.updatedAt).fromNow()}\n \n )}\n
    \n \n \n ))}\n \n \n \n loading={activitiesLoading}\n renderItem={item => {\n return this.renderActivities(item);\n }}\n dataSource={activities}\n className={styles.activitiesList}\n size=\"large\"\n />\n \n \n \n \n {}} links={links} linkElement={Link} />\n \n \n
    \n \n
    \n \n \n
    \n \n {projectNotice.map(item => (\n \n \n \n {item.member}\n \n \n ))}\n \n
    \n \n \n \n \n );\n }\n}\n\nexport default PAGE_NAME_UPPER_CAMEL_CASE;\n","C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\model.ts",["1803","1804"],"C:\\GitHub\\pro-blocks\\DashboardWorkplace\\src\\service.ts",[],"C:\\GitHub\\pro-blocks\\EditorFlow\\src\\common\\IconFont\\index.ts",[],"C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorContextMenu\\FlowContextMenu.tsx",["1805"],"import React from 'react';\nimport { NodeMenu, EdgeMenu, GroupMenu, MultiMenu, CanvasMenu, ContextMenu } from 'gg-editor';\nimport MenuItem from './MenuItem';\nimport styles from './index.less';\n\nconst FlowContextMenu = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlowContextMenu;\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorContextMenu\\index.tsx",[],"C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorContextMenu\\KoniContextMenu.tsx",[],"C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorContextMenu\\MenuItem.tsx",["1806"],"import React from 'react';\nimport { Command } from 'gg-editor';\nimport IconFont from '../../common/IconFont';\nimport styles from './index.less';\n\nconst upperFirst = (str: string) => {\n return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());\n};\n\ninterface MenuItemProps {\n command: string;\n icon?: string;\n text?: string;\n}\nconst MenuItem: React.SFC = props => {\n const { command, icon, text } = props;\n\n return (\n \n
    \n \n {text || upperFirst(command)}\n
    \n
    \n );\n};\n\nexport default MenuItem;\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorContextMenu\\MindContextMenu.tsx",["1807"],"import React from 'react';\nimport { NodeMenu, CanvasMenu, ContextMenu } from 'gg-editor';\nimport MenuItem from './MenuItem';\nimport styles from './index.less';\n\nconst MindContextMenu = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default MindContextMenu;\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorDetailPanel\\DetailForm.tsx",["1808","1809","1810","1811"],"import React, { Fragment } from 'react';\nimport { Card, Form, Input, Select } from 'antd';\nimport { withPropsAPI } from 'gg-editor';\nimport { FormComponentProps } from 'antd/es/form';\n\nconst upperFirst = (str: string) => {\n return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());\n};\n\nconst { Item } = Form;\nconst { Option } = Select;\n\nconst inlineFormItemLayout = {\n labelCol: {\n sm: { span: 8 },\n },\n wrapperCol: {\n sm: { span: 16 },\n },\n};\n\ninterface DetailFormProps extends FormComponentProps {\n type: string;\n propsAPI?: any;\n}\n\nclass DetailForm extends React.Component {\n get item() {\n const { propsAPI } = this.props;\n\n return propsAPI.getSelected()[0];\n }\n\n handleSubmit = (e: React.FormEvent) => {\n if (e && e.preventDefault) {\n e.preventDefault();\n }\n\n const { form, propsAPI } = this.props;\n const { getSelected, executeCommand, update } = propsAPI;\n\n setTimeout(() => {\n form.validateFieldsAndScroll((err, values) => {\n if (err) {\n return;\n }\n\n const item = getSelected()[0];\n\n if (!item) {\n return;\n }\n\n executeCommand(() => {\n update(item, {\n ...values,\n });\n });\n });\n }, 0);\n };\n\n renderEdgeShapeSelect = () => {\n return (\n \n );\n };\n\n renderNodeDetail = () => {\n const { form } = this.props;\n const { label } = this.item.getModel();\n\n return (\n \n {form.getFieldDecorator('label', {\n initialValue: label,\n })()}\n \n );\n };\n\n renderEdgeDetail = () => {\n const { form } = this.props;\n const { label = '', shape = 'flow-smooth' } = this.item.getModel();\n\n return (\n \n \n {form.getFieldDecorator('label', {\n initialValue: label,\n })()}\n \n \n {form.getFieldDecorator('shape', {\n initialValue: shape,\n })(this.renderEdgeShapeSelect())}\n \n \n );\n };\n\n renderGroupDetail = () => {\n const { form } = this.props;\n const { label = '新建分组' } = this.item.getModel();\n\n return (\n \n {form.getFieldDecorator('label', {\n initialValue: label,\n })()}\n \n );\n };\n\n render() {\n const { type } = this.props;\n\n if (!this.item) {\n return null;\n }\n\n return (\n \n
    \n {type === 'node' && this.renderNodeDetail()}\n {type === 'edge' && this.renderEdgeDetail()}\n {type === 'group' && this.renderGroupDetail()}\n
    \n
    \n );\n }\n}\n\nexport default Form.create()(withPropsAPI(DetailForm as any));\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorDetailPanel\\FlowDetailPanel.tsx",["1812"],"import React from 'react';\nimport { Card } from 'antd';\nimport { NodePanel, EdgePanel, GroupPanel, MultiPanel, CanvasPanel, DetailPanel } from 'gg-editor';\nimport DetailForm from './DetailForm';\nimport styles from './index.less';\n\nconst FlowDetailPanel = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlowDetailPanel;\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorDetailPanel\\index.tsx",[],"C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorDetailPanel\\KoniDetailPanel.tsx",[],"C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorDetailPanel\\MindDetailPanel.tsx",["1813"],"import React from 'react';\nimport { Card } from 'antd';\nimport { NodePanel, CanvasPanel, DetailPanel } from 'gg-editor';\nimport DetailForm from './DetailForm';\nimport styles from './index.less';\n\nconst MindDetailPanel = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default MindDetailPanel;\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorItemPanel\\FlowItemPanel.tsx",["1814"],"import React from 'react';\nimport { Card } from 'antd';\nimport { ItemPanel, Item } from 'gg-editor';\nimport styles from './index.less';\n\nconst FlowItemPanel = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlowItemPanel;\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorItemPanel\\index.tsx",[],"C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorItemPanel\\KoniItemPanel.tsx",["1815"],"import React from 'react';\nimport { Card } from 'antd';\nimport { ItemPanel, Item } from 'gg-editor';\nimport styles from './index.less';\n\nconst KoniItemPanel = () => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default KoniItemPanel;\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorMinimap\\index.tsx",["1816"],"import React from 'react';\nimport { Card } from 'antd';\nimport { Minimap } from 'gg-editor';\n\nconst EditorMinimap = () => {\n return (\n \n \n \n );\n};\n\nexport default EditorMinimap;\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorToolbar\\FlowToolbar.tsx",["1817"],"import React from 'react';\nimport { Divider } from 'antd';\nimport { Toolbar } from 'gg-editor';\nimport ToolbarButton from './ToolbarButton';\nimport styles from './index.less';\n\nconst FlowToolbar = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlowToolbar;\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorToolbar\\index.tsx",[],"C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorToolbar\\KoniToolbar.tsx",[],"C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorToolbar\\MindToolbar.tsx",["1818"],"import React from 'react';\nimport { Divider } from 'antd';\nimport { Toolbar } from 'gg-editor';\nimport ToolbarButton from './ToolbarButton';\nimport styles from './index.less';\n\nconst FlowToolbar = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FlowToolbar;\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\components\\EditorToolbar\\ToolbarButton.tsx",["1819"],"import React from 'react';\nimport { Tooltip } from 'antd';\nimport { Command } from 'gg-editor';\nimport IconFont from '../../common/IconFont';\nimport styles from './index.less';\n\nconst upperFirst = (str: string) => {\n return str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase());\n};\n\ninterface ToolbarButtonProps {\n command: string;\n icon?: string;\n text?: string;\n}\nconst ToolbarButton: React.SFC = props => {\n const { command, icon, text } = props;\n\n return (\n \n \n \n \n \n );\n};\n\nexport default ToolbarButton;\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\index.tsx",["1820","1821","1822","1823","1824"],"import React from 'react';\nimport { Row, Col } from 'antd';\nimport GGEditor, { Flow } from 'gg-editor';\nimport EditorMinimap from './components/EditorMinimap';\nimport { FlowContextMenu } from './components/EditorContextMenu';\nimport { FlowToolbar } from './components/EditorToolbar';\nimport { FlowItemPanel } from './components/EditorItemPanel';\nimport { FlowDetailPanel } from './components/EditorDetailPanel';\nimport styles from './index.less';\nimport { PageHeaderWrapper } from '@ant-design/pro-layout';\nimport { formatMessage } from 'umi-plugin-react/locale';\n\nGGEditor.setTrackable(false);\n\nexport default () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","C:\\GitHub\\pro-blocks\\EditorFlow\\src\\locales\\en-US.ts",[],"C:\\GitHub\\pro-blocks\\EditorFlow\\src\\locales\\zh-CN.ts",[],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\common\\IconFont\\index.ts",[],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorContextMenu\\FlowContextMenu.tsx",["1825","1826"],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorContextMenu\\index.tsx",[],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorContextMenu\\KoniContextMenu.tsx",[],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorContextMenu\\MenuItem.tsx",["1827","1828"],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorContextMenu\\MindContextMenu.tsx",["1829","1830"],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorDetailPanel\\DetailForm.tsx",["1831","1832","1833","1834","1835"],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorDetailPanel\\FlowDetailPanel.tsx",["1836","1837"],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorDetailPanel\\index.tsx",[],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorDetailPanel\\KoniDetailPanel.tsx",[],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorDetailPanel\\MindDetailPanel.tsx",["1838","1839"],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorItemPanel\\FlowItemPanel.tsx",["1840","1841"],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorItemPanel\\index.tsx",[],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorItemPanel\\KoniItemPanel.tsx",["1842","1843"],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorMinimap\\index.tsx",["1844","1845"],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorToolbar\\FlowToolbar.tsx",["1846","1847"],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorToolbar\\index.tsx",[],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorToolbar\\KoniToolbar.tsx",[],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorToolbar\\MindToolbar.tsx",["1848","1849"],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\components\\EditorToolbar\\ToolbarButton.tsx",["1850","1851"],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\index.tsx",["1852","1853","1854","1855","1856","1857"],"import React from 'react';\nimport { Row, Col } from 'antd';\nimport GGEditor, { Koni } from 'gg-editor';\nimport EditorMinimap from './components/EditorMinimap';\nimport { KoniContextMenu } from './components/EditorContextMenu';\nimport { KoniToolbar } from './components/EditorToolbar';\nimport { KoniItemPanel } from './components/EditorItemPanel';\nimport { KoniDetailPanel } from './components/EditorDetailPanel';\nimport styles from './index.less';\nimport { PageHeaderWrapper } from '@ant-design/pro-layout';\nimport { formatMessage } from 'umi-plugin-react/locale';\n\nGGEditor.setTrackable(false);\n\nexport default () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","C:\\GitHub\\pro-blocks\\EditorKoni\\src\\locales\\en-US.ts",[],"C:\\GitHub\\pro-blocks\\EditorKoni\\src\\locales\\zh-CN.ts",[],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\common\\IconFont\\index.ts",[],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorContextMenu\\FlowContextMenu.tsx",["1858","1859"],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorContextMenu\\index.tsx",[],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorContextMenu\\KoniContextMenu.tsx",[],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorContextMenu\\MenuItem.tsx",["1860","1861"],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorContextMenu\\MindContextMenu.tsx",["1862","1863"],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorDetailPanel\\DetailForm.tsx",["1864","1865","1866","1867","1868"],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorDetailPanel\\FlowDetailPanel.tsx",["1869","1870"],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorDetailPanel\\index.tsx",[],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorDetailPanel\\KoniDetailPanel.tsx",[],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorDetailPanel\\MindDetailPanel.tsx",["1871","1872"],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorItemPanel\\FlowItemPanel.tsx",["1873","1874"],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorItemPanel\\index.tsx",[],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorItemPanel\\KoniItemPanel.tsx",["1875","1876"],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorMinimap\\index.tsx",["1877","1878"],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorToolbar\\FlowToolbar.tsx",["1879","1880"],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorToolbar\\index.tsx",[],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorToolbar\\KoniToolbar.tsx",[],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorToolbar\\MindToolbar.tsx",["1881","1882"],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\components\\EditorToolbar\\ToolbarButton.tsx",["1883","1884"],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\index.tsx",["1885","1886","1887","1888","1889","1890"],"import React from 'react';\nimport { Row, Col } from 'antd';\nimport GGEditor, { Mind } from 'gg-editor';\nimport EditorMinimap from './components/EditorMinimap';\nimport { MindContextMenu } from './components/EditorContextMenu';\nimport { MindToolbar } from './components/EditorToolbar';\nimport { MindDetailPanel } from './components/EditorDetailPanel';\nimport data from './worldCup2018.json';\nimport styles from './index.less';\nimport { PageHeaderWrapper } from '@ant-design/pro-layout';\nimport { formatMessage } from 'umi-plugin-react/locale';\n\nGGEditor.setTrackable(false);\n\nexport default () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","C:\\GitHub\\pro-blocks\\EditorMind\\src\\locales\\en-US.ts",[],"C:\\GitHub\\pro-blocks\\EditorMind\\src\\locales\\zh-CN.ts",[],"C:\\GitHub\\pro-blocks\\Exception403\\src\\components\\Exception\\index.tsx",["1891","1892","1893","1894","1895"],"import { Button } from 'antd';\nimport classNames from 'classnames';\nimport * as H from 'history';\nimport React, { createElement } from 'react';\nimport styles from './index.less';\nimport config from './typeConfig';\nimport Link from 'umi/link';\n\nexport interface ExceptionProps<\n L = {\n to: H.LocationDescriptor;\n href?: H.LocationDescriptor;\n replace?: boolean;\n innerRef?: (node: HTMLAnchorElement | null) => void;\n }\n> {\n type?: '403' | '404' | '500';\n title?: React.ReactNode;\n desc?: React.ReactNode;\n img?: string;\n actions?: React.ReactNode;\n linkElement?: string | React.ComponentType | typeof Link;\n style?: React.CSSProperties;\n className?: string;\n backText?: React.ReactNode;\n redirect?: string;\n}\n\nclass Exception extends React.Component {\n static defaultProps = {\n backText: 'back to home',\n redirect: '/',\n };\n\n constructor(props: ExceptionProps) {\n super(props);\n this.state = {};\n }\n\n render() {\n const {\n className,\n backText,\n linkElement = 'a',\n type = '404',\n title,\n desc,\n img,\n actions,\n redirect,\n ...rest\n } = this.props;\n const pageType = type in config ? type : '404';\n const clsString = classNames(styles.exception, className);\n return (\n
    \n
    \n \n
    \n
    \n

    {title || config[pageType].title}

    \n
    {desc || config[pageType].desc}
    \n
    \n {actions ||\n createElement(\n linkElement as any,\n {\n to: redirect,\n href: redirect,\n },\n ,\n )}\n
    \n
    \n
    \n );\n }\n}\n\nexport default Exception;\n","C:\\GitHub\\pro-blocks\\Exception403\\src\\components\\Exception\\typeConfig.ts",[],"C:\\GitHub\\pro-blocks\\Exception403\\src\\index.tsx",[],"C:\\GitHub\\pro-blocks\\Exception403\\src\\locales\\en-US.ts",[],"C:\\GitHub\\pro-blocks\\Exception403\\src\\locales\\pt-BR.ts",[],"C:\\GitHub\\pro-blocks\\Exception403\\src\\locales\\zh-CN.ts",[],"C:\\GitHub\\pro-blocks\\Exception403\\src\\locales\\zh-TW.ts",[],"C:\\GitHub\\pro-blocks\\Exception404\\src\\components\\Exception\\index.tsx",["1896","1897","1898","1899","1900","1901"],"C:\\GitHub\\pro-blocks\\Exception404\\src\\components\\Exception\\typeConfig.ts",[],"C:\\GitHub\\pro-blocks\\Exception404\\src\\index.tsx",["1902"],"C:\\GitHub\\pro-blocks\\Exception404\\src\\locales\\en-US.ts",[],"C:\\GitHub\\pro-blocks\\Exception404\\src\\locales\\pt-BR.ts",[],"C:\\GitHub\\pro-blocks\\Exception404\\src\\locales\\zh-CN.ts",[],"C:\\GitHub\\pro-blocks\\Exception404\\src\\locales\\zh-TW.ts",[],"C:\\GitHub\\pro-blocks\\Exception500\\src\\components\\Exception\\index.tsx",["1903","1904","1905","1906","1907","1908"],"C:\\GitHub\\pro-blocks\\Exception500\\src\\components\\Exception\\typeConfig.ts",[],"C:\\GitHub\\pro-blocks\\Exception500\\src\\index.tsx",["1909"],"C:\\GitHub\\pro-blocks\\Exception500\\src\\locales\\en-US.ts",[],"C:\\GitHub\\pro-blocks\\Exception500\\src\\locales\\pt-BR.ts",[],"C:\\GitHub\\pro-blocks\\Exception500\\src\\locales\\zh-CN.ts",[],"C:\\GitHub\\pro-blocks\\Exception500\\src\\locales\\zh-TW.ts",[],"C:\\GitHub\\pro-blocks\\FormAdvancedForm\\src\\_mock.ts",["1910","1911"],"C:\\GitHub\\pro-blocks\\FormAdvancedForm\\src\\components\\FooterToolbar\\index.tsx",["1912","1913"],"C:\\GitHub\\pro-blocks\\FormAdvancedForm\\src\\components\\TableForm.tsx",["1914","1915","1916","1917"],"import React, { PureComponent, Fragment } from 'react';\nimport { Table, Button, Input, message, Popconfirm, Divider } from 'antd';\nimport { isEqual } from 'lodash';\nimport styles from '../style.less';\n\nclass TableForm extends PureComponent {\n static getDerivedStateFromProps(nextProps, preState) {\n if (isEqual(nextProps.value, preState.value)) {\n return null;\n }\n return {\n data: nextProps.value,\n value: nextProps.value,\n };\n }\n index = 0;\n\n cacheOriginData = {};\n columns = [\n {\n title: '成员姓名',\n dataIndex: 'name',\n key: 'name',\n width: '20%',\n render: (text, record) => {\n if (record.editable) {\n return (\n this.handleFieldChange(e, 'name', record.key)}\n onKeyPress={e => this.handleKeyPress(e, record.key)}\n placeholder=\"成员姓名\"\n />\n );\n }\n return text;\n },\n },\n {\n title: '工号',\n dataIndex: 'workId',\n key: 'workId',\n width: '20%',\n render: (text, record) => {\n if (record.editable) {\n return (\n this.handleFieldChange(e, 'workId', record.key)}\n onKeyPress={e => this.handleKeyPress(e, record.key)}\n placeholder=\"工号\"\n />\n );\n }\n return text;\n },\n },\n {\n title: '所属部门',\n dataIndex: 'department',\n key: 'department',\n width: '40%',\n render: (text, record) => {\n if (record.editable) {\n return (\n this.handleFieldChange(e, 'department', record.key)}\n onKeyPress={e => this.handleKeyPress(e, record.key)}\n placeholder=\"所属部门\"\n />\n );\n }\n return text;\n },\n },\n {\n title: '操作',\n key: 'action',\n render: (text, record) => {\n const { loading } = this.state;\n if (!!record.editable && loading) {\n return null;\n }\n if (record.editable) {\n if (record.isNew) {\n return (\n \n this.saveRow(e, record.key)}>添加\n \n this.remove(record.key)}>\n 删除\n \n \n );\n }\n return (\n \n this.saveRow(e, record.key)}>保存\n \n this.cancel(e, record.key)}>取消\n \n );\n }\n return (\n \n this.toggleEditable(e, record.key)}>编辑\n \n this.remove(record.key)}>\n 删除\n \n \n );\n },\n },\n ];\n\n constructor(props) {\n super(props);\n\n this.state = {\n data: props.value,\n loading: false,\n /* eslint-disable-next-line react/no-unused-state */\n value: props.value,\n };\n }\n\n getRowByKey(key, newData) {\n const { data } = this.state;\n return (newData || data).filter(item => item.key === key)[0];\n }\n\n toggleEditable = (e, key) => {\n e.preventDefault();\n const { data } = this.state;\n const newData = data.map(item => ({ ...item }));\n const target = this.getRowByKey(key, newData);\n if (target) {\n // 进入编辑状态时保存原始数据\n if (!target.editable) {\n this.cacheOriginData[key] = { ...target };\n }\n target.editable = !target.editable;\n this.setState({ data: newData });\n }\n };\n\n newMember = () => {\n const { data } = this.state;\n const newData = data.map(item => ({ ...item }));\n newData.push({\n key: `NEW_TEMP_ID_${this.index}`,\n workId: '',\n name: '',\n department: '',\n editable: true,\n isNew: true,\n });\n this.index += 1;\n this.setState({ data: newData });\n };\n\n remove(key) {\n const { data } = this.state;\n const { onChange } = this.props;\n const newData = data.filter(item => item.key !== key);\n this.setState({ data: newData });\n onChange(newData);\n }\n\n handleKeyPress(e, key) {\n if (e.key === 'Enter') {\n this.saveRow(e, key);\n }\n }\n\n handleFieldChange(e, fieldName, key) {\n const { data } = this.state;\n const newData = data.map(item => ({ ...item }));\n const target = this.getRowByKey(key, newData);\n if (target) {\n target[fieldName] = e.target.value;\n this.setState({ data: newData });\n }\n }\n\n saveRow(e, key) {\n e.persist();\n this.setState({\n loading: true,\n });\n setTimeout(() => {\n if (this.clickedCancel) {\n this.clickedCancel = false;\n return;\n }\n const target = this.getRowByKey(key) || {};\n if (!target.workId || !target.name || !target.department) {\n message.error('请填写完整成员信息。');\n e.target.focus();\n this.setState({\n loading: false,\n });\n return;\n }\n delete target.isNew;\n this.toggleEditable(e, key);\n const { data } = this.state;\n const { onChange } = this.props;\n onChange(data);\n this.setState({\n loading: false,\n });\n }, 500);\n }\n\n cancel(e, key) {\n this.clickedCancel = true;\n e.preventDefault();\n const { data } = this.state;\n const newData = data.map(item => ({ ...item }));\n const target = this.getRowByKey(key, newData);\n if (this.cacheOriginData[key]) {\n Object.assign(target, this.cacheOriginData[key]);\n delete this.cacheOriginData[key];\n }\n target.editable = false;\n this.setState({ data: newData });\n this.clickedCancel = false;\n }\n render() {\n const { loading, data } = this.state;\n\n return (\n \n (record.editable ? styles.editable : '')}\n />\n \n 新增成员\n \n \n );\n }\n}\n\nexport default TableForm;\n","C:\\GitHub\\pro-blocks\\FormAdvancedForm\\src\\index.tsx",["1918","1919","1920","1921","1922","1923","1924","1925","1926","1927","1928"],"import React, { Component } from 'react';\nimport {\n Card,\n Form,\n Icon,\n Button,\n Col,\n Row,\n DatePicker,\n TimePicker,\n Input,\n Select,\n Popover,\n} from 'antd';\nimport { connect } from 'dva';\nimport TableForm from './components/TableForm';\nimport styles from './style.less';\nimport { FormComponentProps } from 'antd/es/form';\nimport { Dispatch } from 'redux';\nimport FooterToolbar from './components/FooterToolbar';\nimport { PageHeaderWrapper } from '@ant-design/pro-layout';\n\nconst { Option } = Select;\nconst { RangePicker } = DatePicker;\n\nconst fieldLabels = {\n name: '仓库名',\n url: '仓库域名',\n owner: '仓库管理员',\n approver: '审批人',\n dateRange: '生效日期',\n type: '仓库类型',\n name2: '任务名',\n url2: '任务描述',\n owner2: '执行人',\n approver2: '责任人',\n dateRange2: '生效日期',\n type2: '任务类型',\n};\n\nconst tableData = [\n {\n key: '1',\n workId: '00001',\n name: 'John Brown',\n department: 'New York No. 1 Lake Park',\n },\n {\n key: '2',\n workId: '00002',\n name: 'Jim Green',\n department: 'London No. 1 Lake Park',\n },\n {\n key: '3',\n workId: '00003',\n name: 'Joe Black',\n department: 'Sidney No. 1 Lake Park',\n },\n];\n\ninterface PAGE_NAME_UPPER_CAMEL_CASEProps extends FormComponentProps {\n dispatch: Dispatch;\n submitting: boolean;\n}\n\n@connect(({ loading }: { loading: { effects: { [key: string]: boolean } } }) => ({\n submitting: loading.effects['BLOCK_NAME_CAMEL_CASE/submitAdvancedForm'],\n}))\nclass PAGE_NAME_UPPER_CAMEL_CASE extends Component {\n state = {\n width: '100%',\n };\n\n componentDidMount() {\n window.addEventListener('resize', this.resizeFooterToolbar, { passive: true });\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.resizeFooterToolbar);\n }\n\n getErrorInfo = () => {\n const {\n form: { getFieldsError },\n } = this.props;\n const errors = getFieldsError();\n const errorCount = Object.keys(errors).filter(key => errors[key]).length;\n if (!errors || errorCount === 0) {\n return null;\n }\n const scrollToField = (fieldKey: string) => {\n const labelNode = document.querySelector(`label[for=\"${fieldKey}\"]`);\n if (labelNode) {\n labelNode.scrollIntoView(true);\n }\n };\n const errorList = Object.keys(errors).map(key => {\n if (!errors[key]) {\n return null;\n }\n const errorMessage = errors[key] || [];\n return (\n
  • scrollToField(key)}>\n \n
    {errorMessage[0]}
    \n
    {fieldLabels[key]}
    \n
  • \n );\n });\n return (\n \n {\n if (trigger && trigger.parentNode) {\n return trigger.parentNode as HTMLElement;\n }\n return trigger;\n }}\n >\n \n \n {errorCount}\n \n );\n };\n\n resizeFooterToolbar = () => {\n requestAnimationFrame(() => {\n const sider = document.querySelectorAll('.ant-layout-sider')[0] as HTMLDivElement;\n if (sider) {\n const width = `calc(100% - ${sider.style.width})`;\n const { width: stateWidth } = this.state;\n if (stateWidth !== width) {\n this.setState({ width });\n }\n }\n });\n };\n\n validate = () => {\n const {\n form: { validateFieldsAndScroll },\n dispatch,\n } = this.props;\n validateFieldsAndScroll((error, values) => {\n if (!error) {\n // submit the values\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/submitAdvancedForm',\n payload: values,\n });\n }\n });\n };\n\n render() {\n const {\n form: { getFieldDecorator },\n submitting,\n } = this.props;\n const { width } = this.state;\n return (\n <>\n \n \n
    \n \n \n \n {getFieldDecorator('name', {\n rules: [{ required: true, message: '请输入仓库名称' }],\n })()}\n \n \n \n \n {getFieldDecorator('url', {\n rules: [{ required: true, message: '请选择' }],\n })(\n ,\n )}\n \n \n \n \n {getFieldDecorator('owner', {\n rules: [{ required: true, message: '请选择管理员' }],\n })(\n ,\n )}\n \n \n \n \n \n \n {getFieldDecorator('approver', {\n rules: [{ required: true, message: '请选择审批员' }],\n })(\n ,\n )}\n \n \n \n \n {getFieldDecorator('dateRange', {\n rules: [{ required: true, message: '请选择生效日期' }],\n })(\n ,\n )}\n \n \n \n \n {getFieldDecorator('type', {\n rules: [{ required: true, message: '请选择仓库类型' }],\n })(\n ,\n )}\n \n \n \n
    \n
    \n \n
    \n \n \n \n {getFieldDecorator('name2', {\n rules: [{ required: true, message: '请输入' }],\n })()}\n \n \n \n \n {getFieldDecorator('url2', {\n rules: [{ required: true, message: '请选择' }],\n })()}\n \n \n \n \n {getFieldDecorator('owner2', {\n rules: [{ required: true, message: '请选择管理员' }],\n })(\n ,\n )}\n \n \n \n \n \n \n {getFieldDecorator('approver2', {\n rules: [{ required: true, message: '请选择审批员' }],\n })(\n ,\n )}\n \n \n \n \n {getFieldDecorator('dateRange2', {\n rules: [{ required: true, message: '请输入' }],\n })(\n {\n if (trigger && trigger.parentNode) {\n return trigger.parentNode as HTMLElement;\n }\n return trigger;\n }}\n />,\n )}\n \n \n \n \n {getFieldDecorator('type2', {\n rules: [{ required: true, message: '请选择仓库类型' }],\n })(\n ,\n )}\n \n \n \n
    \n
    \n \n {getFieldDecorator('members', {\n initialValue: tableData,\n })()}\n \n
    \n \n {this.getErrorInfo()}\n \n \n \n );\n }\n}\n\nexport default Form.create()(PAGE_NAME_UPPER_CAMEL_CASE);\n","C:\\GitHub\\pro-blocks\\FormAdvancedForm\\src\\model.ts",["1929","1930","1931"],"import { message } from 'antd';\nimport { fakeSubmitForm } from './service';\nimport { EffectsCommandMap } from 'dva';\nimport { AnyAction } from 'redux';\n\nexport interface ModalState {}\n\nexport type Effect = (\n action: AnyAction,\n effects: EffectsCommandMap & { select: (func: (state: ModalState) => T) => T },\n) => void;\n\nexport interface ModelType {\n namespace: string;\n state: ModalState;\n effects: {\n submitAdvancedForm: Effect;\n };\n}\n\nconst Model: ModelType = {\n namespace: 'BLOCK_NAME_CAMEL_CASE',\n\n state: {},\n\n effects: {\n *submitAdvancedForm({ payload }, { call }) {\n yield call(fakeSubmitForm, payload);\n message.success('提交成功');\n },\n },\n};\n\nexport default Model;\n","C:\\GitHub\\pro-blocks\\FormAdvancedForm\\src\\service.ts",["1932"],"C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\_mock.ts",["1933","1934"],"C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\index.tsx",["1935","1936","1937","1938","1939","1940","1941","1942","1943"],"import React, { Component } from 'react';\nimport { connect } from 'dva';\nimport { formatMessage, FormattedMessage } from 'umi-plugin-react/locale';\nimport {\n Form,\n Input,\n DatePicker,\n Select,\n Button,\n Card,\n InputNumber,\n Radio,\n Icon,\n Tooltip,\n} from 'antd';\nimport { PageHeaderWrapper } from '@ant-design/pro-layout';\nimport styles from './style.less';\nimport { FormComponentProps } from 'antd/es/form';\nimport { Dispatch } from 'redux';\n\nconst FormItem = Form.Item;\nconst { Option } = Select;\nconst { RangePicker } = DatePicker;\nconst { TextArea } = Input;\n\ninterface PAGE_NAME_UPPER_CAMEL_CASEProps extends FormComponentProps {\n submitting: boolean;\n dispatch: Dispatch;\n}\nclass PAGE_NAME_UPPER_CAMEL_CASE extends Component {\n handleSubmit = (e: React.FormEvent) => {\n const { dispatch, form } = this.props;\n e.preventDefault();\n form.validateFieldsAndScroll((err, values) => {\n if (!err) {\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/submitRegularForm',\n payload: values,\n });\n }\n });\n };\n\n render() {\n const { submitting } = this.props;\n const {\n form: { getFieldDecorator, getFieldValue },\n } = this.props;\n\n const formItemLayout = {\n labelCol: {\n xs: { span: 24 },\n sm: { span: 7 },\n },\n wrapperCol: {\n xs: { span: 24 },\n sm: { span: 12 },\n md: { span: 10 },\n },\n };\n\n const submitFormLayout = {\n wrapperCol: {\n xs: { span: 24, offset: 0 },\n sm: { span: 10, offset: 7 },\n },\n };\n\n return (\n }>\n \n
    \n }>\n {getFieldDecorator('title', {\n rules: [\n {\n required: true,\n message: formatMessage({ id: 'BLOCK_NAME.title.required' }),\n },\n ],\n })()}\n \n }>\n {getFieldDecorator('date', {\n rules: [\n {\n required: true,\n message: formatMessage({ id: 'BLOCK_NAME.date.required' }),\n },\n ],\n })(\n ,\n )}\n \n }>\n {getFieldDecorator('goal', {\n rules: [\n {\n required: true,\n message: formatMessage({ id: 'BLOCK_NAME.goal.required' }),\n },\n ],\n })(\n ,\n )}\n \n }\n >\n {getFieldDecorator('standard', {\n rules: [\n {\n required: true,\n message: formatMessage({ id: 'BLOCK_NAME.standard.required' }),\n },\n ],\n })(\n ,\n )}\n \n \n \n \n \n }>\n \n \n \n \n }\n >\n {getFieldDecorator('client')(\n ,\n )}\n \n \n \n \n \n \n \n }\n >\n {getFieldDecorator('invites')(\n ,\n )}\n \n \n \n \n \n \n \n }\n >\n {getFieldDecorator('weight')(\n ,\n )}\n %\n \n }\n help={}\n >\n
    \n {getFieldDecorator('public', {\n initialValue: '1',\n })(\n \n \n \n \n \n \n \n \n \n \n ,\n )}\n \n {getFieldDecorator('publicUsers')(\n \n \n \n \n ,\n )}\n \n
    \n \n \n \n \n \n \n
    \n
    \n );\n }\n}\n\nexport default Form.create(\n connect(({ loading }: { loading: { effects: { [key: string]: boolean } } }) => ({\n submitting: loading.effects['BLOCK_NAME_CAMEL_CASE/submitRegularForm'],\n }))(PAGE_NAME_UPPER_CAMEL_CASE),\n);\n","C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\locales\\en-US.ts",[],"C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\locales\\pt-BR.ts",[],"C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\locales\\zh-CN.ts",[],"C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\locales\\zh-TW.ts",[],"C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\model.ts",["1944","1945","1946"],"import { message } from 'antd';\nimport { fakeSubmitForm } from './service';\nimport { EffectsCommandMap } from 'dva';\nimport { AnyAction } from 'redux';\n\nexport interface ModalState {}\n\nexport type Effect = (\n action: AnyAction,\n effects: EffectsCommandMap & { select: (func: (state: ModalState) => T) => T },\n) => void;\n\nexport interface ModelType {\n namespace: string;\n state: ModalState;\n effects: {\n submitRegularForm: Effect;\n };\n}\nconst Model: ModelType = {\n namespace: 'BLOCK_NAME_CAMEL_CASE',\n\n state: {},\n\n effects: {\n *submitRegularForm({ payload }, { call }) {\n yield call(fakeSubmitForm, payload);\n message.success('提交成功');\n },\n },\n};\n\nexport default Model;\n","C:\\GitHub\\pro-blocks\\FormBasicForm\\src\\service.ts",["1947"],"C:\\GitHub\\pro-blocks\\FormStepForm\\src\\_mock.ts",["1948"],"C:\\GitHub\\pro-blocks\\FormStepForm\\src\\components\\Result\\index.tsx",["1949"],"C:\\GitHub\\pro-blocks\\FormStepForm\\src\\components\\Step1\\index.tsx",["1950","1951","1952","1953","1954"],"import React, { Fragment } from 'react';\nimport { connect } from 'dva';\nimport { Form, Input, Button, Select, Divider } from 'antd';\nimport styles from './index.less';\nimport { FormComponentProps } from 'antd/es/form';\nimport { IStateType } from '../../model';\nimport { Dispatch } from 'redux';\n\nconst { Option } = Select;\n\nconst formItemLayout = {\n labelCol: {\n span: 5,\n },\n wrapperCol: {\n span: 19,\n },\n};\ninterface Step1Props extends FormComponentProps {\n data?: IStateType['step'];\n dispatch?: Dispatch;\n}\n\nclass Step1 extends React.PureComponent {\n render() {\n const { form, dispatch, data } = this.props;\n if (!data) {\n return;\n }\n const { getFieldDecorator, validateFields } = form;\n const onValidateForm = () => {\n validateFields((err, values) => {\n if (!err && dispatch) {\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/saveStepFormData',\n payload: values,\n });\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/saveCurrentStep',\n payload: 'confirm',\n });\n }\n });\n };\n return (\n \n
    \n \n {getFieldDecorator('payAccount', {\n initialValue: data.payAccount,\n rules: [{ required: true, message: '请选择付款账户' }],\n })(\n ,\n )}\n \n \n \n \n {getFieldDecorator('receiverAccount', {\n initialValue: data.receiverAccount,\n rules: [\n { required: true, message: '请输入收款人账户' },\n { type: 'email', message: '账户名应为邮箱格式' },\n ],\n })()}\n \n \n \n {getFieldDecorator('receiverName', {\n initialValue: data.receiverName,\n rules: [{ required: true, message: '请输入收款人姓名' }],\n })()}\n \n \n {getFieldDecorator('amount', {\n initialValue: data.amount,\n rules: [\n { required: true, message: '请输入转账金额' },\n {\n pattern: /^(\\d+)((?:\\.\\d+)?)$/,\n message: '请输入合法金额数字',\n },\n ],\n })()}\n \n \n \n \n \n \n
    \n

    说明

    \n

    转账到支付宝账户

    \n

    \n 如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。\n

    \n

    转账到银行卡

    \n

    \n 如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。\n

    \n
    \n
    \n );\n }\n}\n\nexport default connect(({ BLOCK_NAME_CAMEL_CASE }: { BLOCK_NAME_CAMEL_CASE: IStateType }) => ({\n data: BLOCK_NAME_CAMEL_CASE.step,\n}))(Form.create()(Step1));\n","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\components\\Step2\\index.tsx",["1955","1956","1957","1958","1959","1960"],"import React from 'react';\nimport { connect } from 'dva';\nimport { Form, Input, Button, Alert, Divider, Statistic } from 'antd';\nimport styles from './index.less';\nimport { FormComponentProps } from 'antd/es/form';\nimport { IStateType } from '../../model';\nimport { Dispatch } from 'redux';\n\nconst formItemLayout = {\n labelCol: {\n span: 5,\n },\n wrapperCol: {\n span: 19,\n },\n};\ninterface Step2Props extends FormComponentProps {\n data?: IStateType['step'];\n dispatch?: Dispatch;\n submitting?: boolean;\n}\n\nclass Step2 extends React.Component {\n render() {\n const { form, data, dispatch, submitting } = this.props;\n if (!data) {\n return;\n }\n const { getFieldDecorator, validateFields } = form;\n const onPrev = () => {\n if (dispatch) {\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/saveCurrentStep',\n payload: 'info',\n });\n }\n };\n const onValidateForm = (e: React.FormEvent) => {\n e.preventDefault();\n validateFields((err, values) => {\n if (!err) {\n if (dispatch) {\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/submitStepForm',\n payload: {\n ...data,\n ...values,\n },\n });\n }\n }\n });\n };\n return (\n
    \n \n \n {data.payAccount}\n \n \n {data.receiverAccount}\n \n \n {data.receiverName}\n \n \n {data.amount}\n \n \n \n {getFieldDecorator('password', {\n initialValue: '123456',\n rules: [\n {\n required: true,\n message: '需要支付密码才能进行支付',\n },\n ],\n })()}\n \n \n \n \n \n \n );\n }\n}\nexport default connect(\n ({\n BLOCK_NAME_CAMEL_CASE,\n loading,\n }: {\n BLOCK_NAME_CAMEL_CASE: IStateType;\n loading: {\n effects: { [key: string]: boolean };\n };\n }) => ({\n submitting: loading.effects['BLOCK_NAME_CAMEL_CASE/submitStepForm'],\n data: BLOCK_NAME_CAMEL_CASE.step,\n }),\n)(Form.create()(Step2));\n","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\components\\Step3\\index.tsx",["1961","1962","1963","1964"],"import React, { Fragment } from 'react';\nimport { connect } from 'dva';\nimport { Button, Row, Col } from 'antd';\nimport Result from '../Result';\nimport styles from './index.less';\nimport { IStateType } from '../../model';\nimport { Dispatch } from 'redux';\n\ninterface Step3Props {\n data?: IStateType['step'];\n dispatch?: Dispatch;\n}\n\n@connect(\n ({\n BLOCK_NAME_CAMEL_CASE,\n }: {\n BLOCK_NAME_CAMEL_CASE: IStateType;\n loading: {\n effects: { [key: string]: boolean };\n };\n }) => ({\n data: BLOCK_NAME_CAMEL_CASE.step,\n }),\n)\nclass Step3 extends React.Component {\n render() {\n const { data, dispatch } = this.props;\n if (!data) {\n return;\n }\n const onFinish = () => {\n if (dispatch) {\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/saveCurrentStep',\n payload: 'info',\n });\n }\n };\n const information = (\n
    \n \n \n 付款账户:\n \n \n {data.payAccount}\n \n \n \n \n 收款账户:\n \n \n {data.receiverAccount}\n \n \n \n \n 收款人姓名:\n \n \n {data.receiverName}\n \n \n \n \n 转账金额:\n \n \n {data.amount} 元\n \n \n
    \n );\n const actions = (\n \n \n \n \n );\n return (\n \n );\n }\n}\n\nexport default Step3;\n","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\index.tsx",["1965","1966","1967","1968","1969"],"C:\\GitHub\\pro-blocks\\FormStepForm\\src\\locales\\en-US.ts",[],"C:\\GitHub\\pro-blocks\\FormStepForm\\src\\locales\\pt-BR.ts",[],"C:\\GitHub\\pro-blocks\\FormStepForm\\src\\locales\\zh-CN.ts",[],"C:\\GitHub\\pro-blocks\\FormStepForm\\src\\locales\\zh-TW.ts",[],"C:\\GitHub\\pro-blocks\\FormStepForm\\src\\model.ts",["1970","1971","1972","1973","1974","1975","1976"],"import { fakeSubmitForm } from './service';\nimport { Reducer } from 'redux';\nimport { EffectsCommandMap } from 'dva';\nimport { AnyAction } from 'redux';\n\nexport interface IStateType {\n current?: string;\n step?: {\n payAccount: string;\n receiverAccount: string;\n receiverName: string;\n amount: string;\n };\n}\n\nexport type Effect = (\n action: AnyAction,\n effects: EffectsCommandMap & { select: (func: (state: IStateType) => T) => T },\n) => void;\n\nexport interface ModelType {\n namespace: string;\n state: IStateType;\n effects: {\n submitStepForm: Effect;\n };\n reducers: {\n saveStepFormData: Reducer;\n saveCurrentStep: Reducer;\n };\n}\n\nconst Model: ModelType = {\n namespace: 'BLOCK_NAME_CAMEL_CASE',\n\n state: {\n current: 'info',\n step: {\n payAccount: 'ant-design@alipay.com',\n receiverAccount: 'test@example.com',\n receiverName: 'Alex',\n amount: '500',\n },\n },\n\n effects: {\n *submitStepForm({ payload }, { call, put }) {\n yield call(fakeSubmitForm, payload);\n yield put({\n type: 'saveStepFormData',\n payload,\n });\n yield put({\n type: 'saveCurrentStep',\n payload: 'result',\n });\n },\n },\n\n reducers: {\n saveCurrentStep(state, { payload }) {\n return {\n ...state,\n current: payload,\n };\n },\n\n saveStepFormData(state, { payload }) {\n return {\n ...state,\n step: {\n ...state!.step,\n ...payload,\n },\n };\n },\n },\n};\n\nexport default Model;\n","C:\\GitHub\\pro-blocks\\FormStepForm\\src\\service.ts",["1977"],"C:\\GitHub\\pro-blocks\\ListBasicList\\src\\_mock.ts",["1978","1979","1980","1981","1982","1983"],"import { BasicListItemDataType } from './data';\n\nconst titles = [\n 'Alipay',\n 'Angular',\n 'Ant Design',\n 'Ant Design Pro',\n 'Bootstrap',\n 'React',\n 'Vue',\n 'Webpack',\n];\nconst avatars = [\n 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay\n 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular\n 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design\n 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro\n 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap\n 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React\n 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue\n 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack\n];\n\nconst covers = [\n 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png',\n 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png',\n 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png',\n 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png',\n];\nconst desc = [\n '那是一种内在的东西, 他们到达不了,也无法触及的',\n '希望是一个好东西,也许是最好的,好东西是不会消亡的',\n '生命就像一盒巧克力,结果往往出人意料',\n '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆',\n '那时候我只会想自己想要什么,从不想自己拥有什么',\n];\n\nconst user = [\n '付小小',\n '曲丽丽',\n '林东东',\n '周星星',\n '吴加好',\n '朱偏右',\n '鱼酱',\n '乐哥',\n '谭小仪',\n '仲尼',\n];\n\nfunction fakeList(count: number): BasicListItemDataType[] {\n const list = [];\n for (let i = 0; i < count; i += 1) {\n list.push({\n id: `fake-list-${i}`,\n owner: user[i % 10],\n title: titles[i % 8],\n avatar: avatars[i % 8],\n cover: parseInt(i / 4 + '', 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)],\n status: ['active', 'exception', 'normal'][i % 3] as\n | 'normal'\n | 'exception'\n | 'active'\n | 'success',\n percent: Math.ceil(Math.random() * 50) + 50,\n logo: avatars[i % 8],\n href: 'https://ant.design',\n updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(),\n createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(),\n subDescription: desc[i % 5],\n description:\n '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。',\n activeUser: Math.ceil(Math.random() * 100000) + 100000,\n newUser: Math.ceil(Math.random() * 1000) + 1000,\n star: Math.ceil(Math.random() * 100) + 100,\n like: Math.ceil(Math.random() * 100) + 100,\n message: Math.ceil(Math.random() * 10) + 10,\n content:\n '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。',\n members: [\n {\n avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',\n name: '曲丽丽',\n id: 'member1',\n },\n {\n avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',\n name: '王昭君',\n id: 'member2',\n },\n {\n avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',\n name: '董娜娜',\n id: 'member3',\n },\n ],\n });\n }\n\n return list;\n}\n\nlet sourceData: Array = [];\n\nfunction getFakeList(req: { query: any }, res: { json: (arg0: BasicListItemDataType[]) => void }) {\n const params = req.query;\n\n const count = params.count * 1 || 20;\n\n const result = fakeList(count);\n sourceData = result;\n return res.json(result);\n}\n\nfunction postFakeList(req: { body: any }, res: { json: (arg0: BasicListItemDataType[]) => void }) {\n const { /* url = '', */ body } = req;\n // const params = getUrlParams(url);\n const { method, id } = body;\n // const count = (params.count * 1) || 20;\n let result = sourceData || [];\n\n switch (method) {\n case 'delete':\n result = result.filter(item => item.id !== id);\n break;\n case 'update':\n result.forEach((item, i) => {\n if (item.id === id) {\n result[i] = Object.assign(item, body);\n }\n });\n break;\n case 'post':\n result.unshift({\n ...body,\n id: `fake-list-${result.length}`,\n createdAt: new Date().getTime(),\n });\n break;\n default:\n break;\n }\n\n return res.json(result);\n}\n\nexport default {\n 'GET /api/fake_list': getFakeList,\n 'POST /api/fake_list': postFakeList,\n};\n","C:\\GitHub\\pro-blocks\\ListBasicList\\src\\data.d.ts",["1984"],"C:\\GitHub\\pro-blocks\\ListBasicList\\src\\index.tsx",["1985","1986","1987","1988","1989","1990","1991","1992","1993","1994","1995","1996","1997","1998","1999","2000","2001"],"import React, { Component } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport moment from 'moment';\nimport { connect } from 'dva';\nimport {\n List,\n Card,\n Row,\n Col,\n Radio,\n Input,\n Progress,\n Button,\n Icon,\n Dropdown,\n Menu,\n Avatar,\n Modal,\n Form,\n DatePicker,\n Select,\n} from 'antd';\nimport { FormComponentProps } from 'antd/es/form';\nimport { IStateType } from './model';\nimport { Dispatch } from 'redux';\nimport { BasicListItemDataType } from './data';\nimport Result from './Result';\nimport { PageHeaderWrapper } from '@ant-design/pro-layout';\n\nimport styles from './style.less';\n\nconst FormItem = Form.Item;\nconst RadioButton = Radio.Button;\nconst RadioGroup = Radio.Group;\nconst SelectOption = Select.Option;\nconst { Search, TextArea } = Input;\n\ninterface PAGE_NAME_UPPER_CAMEL_CASEProps extends FormComponentProps {\n BLOCK_NAME_CAMEL_CASE: IStateType;\n dispatch: Dispatch;\n loading: boolean;\n}\ninterface PAGE_NAME_UPPER_CAMEL_CASEState {\n visible: boolean;\n done: boolean;\n current?: Partial;\n}\n@connect(\n ({\n BLOCK_NAME_CAMEL_CASE,\n loading,\n }: {\n BLOCK_NAME_CAMEL_CASE: IStateType;\n loading: {\n models: { [key: string]: boolean };\n };\n }) => ({\n BLOCK_NAME_CAMEL_CASE,\n loading: loading.models.BLOCK_NAME_CAMEL_CASE,\n }),\n)\nclass PAGE_NAME_UPPER_CAMEL_CASE extends Component<\n PAGE_NAME_UPPER_CAMEL_CASEProps,\n PAGE_NAME_UPPER_CAMEL_CASEState\n> {\n state: PAGE_NAME_UPPER_CAMEL_CASEState = { visible: false, done: false, current: undefined };\n\n formLayout = {\n labelCol: { span: 7 },\n wrapperCol: { span: 13 },\n };\n addBtn: HTMLButtonElement | undefined | null;\n\n componentDidMount() {\n const { dispatch } = this.props;\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/fetch',\n payload: {\n count: 5,\n },\n });\n }\n\n showModal = () => {\n this.setState({\n visible: true,\n current: undefined,\n });\n };\n\n showEditModal = (item: BasicListItemDataType) => {\n this.setState({\n visible: true,\n current: item,\n });\n };\n\n handleDone = () => {\n setTimeout(() => this.addBtn && this.addBtn.blur(), 0);\n this.setState({\n done: false,\n visible: false,\n });\n };\n\n handleCancel = () => {\n setTimeout(() => this.addBtn && this.addBtn.blur(), 0);\n this.setState({\n visible: false,\n });\n };\n\n handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n const { dispatch, form } = this.props;\n const { current } = this.state;\n const id = current ? current.id : '';\n\n setTimeout(() => this.addBtn && this.addBtn.blur(), 0);\n form.validateFields((err: string | undefined, fieldsValue: BasicListItemDataType) => {\n if (err) return;\n this.setState({\n done: true,\n });\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/submit',\n payload: { id, ...fieldsValue },\n });\n });\n };\n\n deleteItem = (id: string) => {\n const { dispatch } = this.props;\n dispatch({\n type: 'BLOCK_NAME_CAMEL_CASE/submit',\n payload: { id },\n });\n };\n\n render() {\n const {\n BLOCK_NAME_CAMEL_CASE: { list },\n loading,\n } = this.props;\n const {\n form: { getFieldDecorator },\n } = this.props;\n\n const { visible, done, current = {} } = this.state;\n\n const editAndDelete = (key: string, currentItem: BasicListItemDataType) => {\n if (key === 'edit') this.showEditModal(currentItem);\n else if (key === 'delete') {\n Modal.confirm({\n title: '删除任务',\n content: '确定删除该任务吗?',\n okText: '确认',\n cancelText: '取消',\n onOk: () => this.deleteItem(currentItem.id),\n });\n }\n };\n\n const modalFooter = done\n ? { footer: null, onCancel: this.handleDone }\n : { okText: '保存', onOk: this.handleSubmit, onCancel: this.handleCancel };\n\n const Info: React.SFC<{\n title: React.ReactNode;\n value: React.ReactNode;\n bordered?: boolean;\n }> = ({ title, value, bordered }) => (\n
    \n {title}\n

    {value}

    \n {bordered && }\n
    \n );\n\n const extraContent = (\n
    \n \n 全部\n 进行中\n 等待中\n \n ({})} />\n
    \n );\n\n const paginationProps = {\n showSizeChanger: true,\n showQuickJumper: true,\n pageSize: 5,\n total: 50,\n };\n\n const ListContent = ({\n data: { owner, createdAt, percent, status },\n }: {\n data: BasicListItemDataType;\n }) => (\n
    \n
    \n Owner\n

    {owner}

    \n
    \n
    \n 开始时间\n

    {moment(createdAt).format('YYYY-MM-DD HH:mm')}

    \n
    \n
    \n \n
    \n
    \n );\n\n const MoreBtn: React.SFC<{\n item: BasicListItemDataType;\n }> = ({ item }) => (\n editAndDelete(key, item)}>\n 编辑\n 删除\n \n }\n >\n \n 更多 \n \n \n );\n\n const getModalContent = () => {\n if (done) {\n return (\n \n 知道了\n \n }\n className={styles.formResult}\n />\n );\n }\n return (\n
    \n \n {getFieldDecorator('title', {\n rules: [{ required: true, message: '请输入任务名称' }],\n initialValue: current.title,\n })()}\n \n \n {getFieldDecorator('createdAt', {\n rules: [{ required: true, message: '请选择开始时间' }],\n initialValue: current.createdAt ? moment(current.createdAt) : null,\n })(\n ,\n )}\n \n \n {getFieldDecorator('owner', {\n rules: [{ required: true, message: '请选择任务负责人' }],\n initialValue: current.owner,\n })(\n ,\n )}\n \n \n {getFieldDecorator('subDescription', {\n rules: [{ message: '请输入至少五个字符的产品描述!', min: 5 }],\n initialValue: current.subDescription,\n })(