@next-bricks/basic-bricks 1.143.0 → 1.146.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/dist/assets/browser-too-old.f0f7cb7b.svg +66 -0
- package/dist/assets/no-data.c35c9d1a.svg +153 -0
- package/dist/assets/no-history-version.9ddb7812.svg +74 -0
- package/dist/assets/no-visit-record.063d8cc2.svg +72 -0
- package/dist/assets/search-empty.f6d9443a.svg +96 -0
- package/dist/assets/welcome-to-create.986dc87a.svg +105 -0
- package/dist/bricks.json +1 -1
- package/dist/editors/assets/browser-too-old.f0f7cb7b.svg +66 -0
- package/dist/editors/assets/no-data.c35c9d1a.svg +153 -0
- package/dist/editors/assets/no-history-version.9ddb7812.svg +74 -0
- package/dist/editors/assets/no-visit-record.063d8cc2.svg +72 -0
- package/dist/editors/assets/search-empty.f6d9443a.svg +96 -0
- package/dist/editors/assets/welcome-to-create.986dc87a.svg +105 -0
- package/dist/editors/editors.63fbfee6.js +2 -0
- package/dist/editors/editors.63fbfee6.js.map +1 -0
- package/dist/index.650b7021.js +11 -0
- package/dist/index.650b7021.js.map +1 -0
- package/package.json +4 -4
- package/dist/editors/editors.f98c8328.js +0 -8
- package/dist/editors/editors.f98c8328.js.map +0 -1
- package/dist/index.da0c5db6.js +0 -17
- package/dist/index.da0c5db6.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./bricks/basic-bricks/src/fold-brick/style.module.css","webpack:///./bricks/basic-bricks/src/general-title/GeneralTitle.module.css","webpack:///./bricks/basic-bricks/src/multiple-columns-card/index.shadow.less?e022","webpack:///delegated ./node_modules/@ant-design/compatible/es/index.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/header-bar/index.headerBar.less","webpack:///./bricks/basic-bricks/src/general-drawer/index.shadow.less","webpack:///./bricks/basic-bricks/src/images/dashboard-title-decorator-center.svg","webpack:///./bricks/basic-bricks/src/app-bar/License-notification/LicenseInfo.module.css","webpack:///./bricks/basic-bricks/src/app-bar/DesktopDir/DesktopDir.module.css","webpack:///./bricks/basic-bricks/src/images/card-bg-top-left.svg","webpack:///delegated ./node_modules/@babel/runtime/helpers/objectSpread2.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/fold-brick-v2/style.shadow.less","webpack:///./bricks/basic-bricks/src/images/card-bg-bottom-right.svg","webpack:///./bricks/basic-bricks/src/general-card/index.shadow.less","webpack:///./bricks/basic-bricks/src/general-modal/index.shadow.less?4d7b","webpack:///delegated ./node_modules/process/browser.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/list-container/ListContainer.module.css","webpack:///./bricks/basic-bricks/src/app-bar/FavoriteDesktopCell/FavoriteDesktopCell.module.css","webpack:///./bricks/basic-bricks/src/menu-bar/CollapseBar/CollapseBar.module.css","webpack:///./bricks/basic-bricks/src/menu-bar/AppMenu/AppMenu.module.css","webpack:///delegated ./node_modules/react-i18next/dist/es/index.js from dll-reference dll","webpack:///delegated ./node_modules/@next-core/brick-kit/dist/index.esm.js from dll-reference dll","webpack:///delegated ./node_modules/@babel/runtime/helpers/decorate.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/images/developing.png","webpack:///./bricks/basic-bricks/src/advance-list-container/style.module.css","webpack:///./bricks/basic-bricks/src/easy-view/EasyView.shadow.css","webpack:///./bricks/basic-bricks/src/app-bar/AppDocumentLink/AppDocumentLink.module.css","webpack:///./bricks/basic-bricks/src/app-bar/DesktopSlider/DesktopSlider.module.css","webpack:///./bricks/basic-bricks/src/index-card/IndexCard.shadow.css?d405","webpack:///./bricks/basic-bricks/src/general-card/index.shadow.less?72a9","webpack:///./bricks/basic-bricks/src/easy-view/EasyView.shadow.css?5717","webpack:///./bricks/basic-bricks/src/index-card/IndexCard.shadow.css","webpack:///./bricks/basic-bricks/src/multiple-columns-card/index.shadow.less","webpack:///./node_modules/css-loader/dist/runtime/getUrl.js","webpack:///delegated ./node_modules/@fortawesome/react-fontawesome/index.es.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/images/logo-278w.png","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./bricks/basic-bricks/src/i18n/constants.ts","webpack:///./bricks/basic-bricks/src/i18n/locales/en.ts","webpack:///./bricks/basic-bricks/src/i18n/locales/zh.ts","webpack:///./bricks/basic-bricks/src/i18n/index.ts","webpack:///./bricks/basic-bricks/src/page-title/PageTitle.tsx","webpack:///./bricks/basic-bricks/src/images/logo-3.1.svg","webpack:///./bricks/basic-bricks/src/micro-app/BtnExitDashboardMode.tsx","webpack:///./bricks/basic-bricks/src/micro-app/MicroApp.tsx","webpack:///./bricks/basic-bricks/src/micro-app/index.tsx","webpack:///./node_modules/@next-libs/basic-components/dist/esm/Link.js","webpack:///./node_modules/@next-libs/basic-components/dist/esm/utils/getColor.js","webpack:///./node_modules/@next-libs/basic-components/dist/esm/GeneralIcon.module.css?6b72","webpack:///./node_modules/@next-libs/basic-components/dist/esm/GeneralIcon.js","webpack:///./node_modules/@next-libs/basic-components/dist/esm/Sidebar.module.css?62a4","webpack:///./node_modules/@next-libs/basic-components/dist/esm/Sidebar.js","webpack:///./bricks/basic-bricks/src/menu-bar/AppMenu/AppMenu.module.css?aa40","webpack:///./bricks/basic-bricks/src/menu-bar/AppMenu/MenuTooltip/MenuTooltip.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/AppMenu/OtherAppMenu/OtherAppMenu.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/AppMenu/AppMenu.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/LogoBar/LogoBar.module.css?60ce","webpack:///./bricks/basic-bricks/src/menu-bar/LogoBar/LogoBar.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/CollapseBar/CollapseBar.module.css?690c","webpack:///./bricks/basic-bricks/src/images/collapse.svg","webpack:///./bricks/basic-bricks/src/menu-bar/CollapseBar/CollapseBar.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/AppSubMenu/AppSubMenu.module.css?c0ba","webpack:///./bricks/basic-bricks/src/menu-bar/AppSubMenu/AppSubMenu.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/MenuBar/MenuBar.module.css?826d","webpack:///./bricks/basic-bricks/src/menu-bar/MenuBar/MenuBar.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/index.tsx","webpack:///./node_modules/@next-sdk/user-service-sdk/src/api/user_service/launchpad/createCollection.ts","webpack:///./node_modules/@next-sdk/user-service-sdk/src/api/user_service/launchpad/listCollection.ts","webpack:///./node_modules/@next-sdk/user-service-sdk/src/api/user_service/user_admin/getUserInfoV2.ts","webpack:///./node_modules/@next-sdk/air-admin-service-sdk/src/api/air_admin_service/customer/getExpiration.ts","webpack:///./bricks/basic-bricks/src/images/launchpad.svg","webpack:///./bricks/basic-bricks/src/app-bar/LaunchpadButton/LaunchpadButton.module.css?9774","webpack:///./bricks/basic-bricks/src/app-bar/SearchBar/SearchBar.module.css?2b1f","webpack:///./bricks/basic-bricks/src/app-bar/SearchBar/SearchBar.tsx","webpack:///./bricks/basic-bricks/src/app-bar/DesktopCell/DesktopCell.module.css?4fc6","webpack:///./bricks/basic-bricks/src/app-bar/DesktopApp/DesktopApp.module.css?0cf2","webpack:///./bricks/basic-bricks/src/app-bar/DesktopApp/DesktopApp.tsx","webpack:///./bricks/basic-bricks/src/app-bar/DesktopDirContext.ts","webpack:///./bricks/basic-bricks/src/app-bar/DesktopDir/DesktopDir.module.css?01a6","webpack:///./bricks/basic-bricks/src/app-bar/DesktopDir/DesktopDir.tsx","webpack:///./bricks/basic-bricks/src/app-bar/DesktopCustom/DesktopCustom.module.css?657b","webpack:///./bricks/basic-bricks/src/app-bar/DesktopCustom/DesktopCustom.tsx","webpack:///./node_modules/@next-libs/storage/dist/esm/JsonStorage.js","webpack:///./bricks/basic-bricks/src/app-bar/LaunchpadService.ts","webpack:///./node_modules/@next-sdk/user-service-sdk/src/api/user_service/launchpad/deleteCollection.ts","webpack:///./bricks/basic-bricks/src/app-bar/DesktopCell/DesktopCell.tsx","webpack:///./bricks/basic-bricks/src/app-bar/LaunchpadSettingsContext.ts","webpack:///./bricks/basic-bricks/src/app-bar/Desktop/Desktop.module.css?34b9","webpack:///./bricks/basic-bricks/src/app-bar/Desktop/Desktop.tsx","webpack:///./bricks/basic-bricks/src/app-bar/DesktopSlider/DesktopSlider.module.css?486e","webpack:///./bricks/basic-bricks/src/app-bar/MyDesktop/MyDesktop.module.css?c13e","webpack:///./bricks/basic-bricks/src/app-bar/FavoriteDesktopCell/FavoriteDesktopCell.module.css?2c0a","webpack:///./bricks/basic-bricks/src/app-bar/FavoriteDesktopCell/FavoriteDesktopCell.tsx","webpack:///./bricks/basic-bricks/src/app-bar/site-map/SiteMap.module.css?c3d1","webpack:///./bricks/basic-bricks/src/app-bar/site-map/SiteMap.tsx","webpack:///./bricks/basic-bricks/src/app-bar/MyDesktop/MyDesktop.tsx","webpack:///./bricks/basic-bricks/src/app-bar/DesktopSlider/desktopCursor.ts","webpack:///./bricks/basic-bricks/src/app-bar/DesktopSlider/DesktopSlider.tsx","webpack:///./bricks/basic-bricks/src/app-bar/DesktopDirContent/DesktopDirContent.module.css?cd05","webpack:///./bricks/basic-bricks/src/app-bar/DesktopDirContent/DesktopDirContent.tsx","webpack:///./bricks/basic-bricks/src/app-bar/Launchpad/Launchpad.module.css?1bca","webpack:///./bricks/basic-bricks/src/app-bar/Launchpad/Launchpad.tsx","webpack:///./bricks/basic-bricks/src/app-bar/LaunchpadWrapper/LaunchpadWrapper.module.css?90bc","webpack:///./bricks/basic-bricks/src/app-bar/LaunchpadWrapper/LaunchpadWrapper.tsx","webpack:///./bricks/basic-bricks/src/app-bar/LaunchpadPortal/LaunchpadPortal.tsx","webpack:///./node_modules/hotkeys-js/dist/hotkeys.esm.js","webpack:///./bricks/basic-bricks/src/app-bar/LaunchpadButton/LaunchpadButton.tsx","webpack:///./bricks/basic-bricks/src/app-bar/AppBarBreadcrumb/AppBarBreadcrumb.module.css?61d6","webpack:///./bricks/basic-bricks/src/app-bar/AppBarBreadcrumb/AppBarBreadcrumb.tsx","webpack:///./bricks/basic-bricks/src/app-bar/AppDocumentLink/AppDocumentLink.module.css?2c32","webpack:///./bricks/basic-bricks/src/app-bar/AppDocumentLink/AppDocumentLink.tsx","webpack:///./bricks/basic-bricks/src/app-bar/AppBar/AppBar.module.css?fd72","webpack:///./bricks/basic-bricks/src/app-bar/License-notification/LicenseInfo.module.css?2879","webpack:///./bricks/basic-bricks/src/app-bar/License-notification/LicenseNotification.tsx","webpack:///./node_modules/@next-sdk/air-admin-service-sdk/src/api/air_admin_service/customer/setOrgUpdating.ts","webpack:///./bricks/basic-bricks/src/app-bar/AppBar/AppBar.tsx","webpack:///./bricks/basic-bricks/src/app-bar/index.tsx","webpack:///./bricks/basic-bricks/src/general-button/GeneralButton.module.css?4b63","webpack:///./bricks/basic-bricks/src/general-button/GeneralButton.tsx","webpack:///./bricks/basic-bricks/src/general-button/index.tsx","webpack:///./bricks/basic-bricks/src/redirect-to/index.ts","webpack:///./bricks/basic-bricks/src/page-not-found/PageNotFound.tsx","webpack:///./bricks/basic-bricks/src/page-not-found/index.tsx","webpack:///./bricks/basic-bricks/src/page-error/PageError.tsx","webpack:///./bricks/basic-bricks/src/page-error/index.tsx","webpack:///./bricks/basic-bricks/src/loading-bar/LoadingBar.tsx","webpack:///./bricks/basic-bricks/src/loading-bar/index.tsx","webpack:///./bricks/basic-bricks/src/page-title/index.tsx","webpack:///./bricks/basic-bricks/src/index-card/IndexCard.tsx","webpack:///./bricks/basic-bricks/src/index-card/index.tsx","webpack:///./bricks/basic-bricks/src/home-redirect/index.ts","webpack:///./bricks/basic-bricks/src/print-button/PrintButton.module.css?d663","webpack:///./bricks/basic-bricks/src/print-button/PrintButton.tsx","webpack:///./bricks/basic-bricks/src/print-button/index.tsx","webpack:///./bricks/basic-bricks/src/general-card/GeneralCard.tsx","webpack:///./bricks/basic-bricks/src/general-card/index.tsx","webpack:///./bricks/basic-bricks/src/sub-menu/index.module.css?48ff","webpack:///./bricks/basic-bricks/src/sub-menu/SubMenu.tsx","webpack:///./bricks/basic-bricks/src/sub-menu/index.tsx","webpack:///./bricks/basic-bricks/src/general-modal/GeneralModal.tsx","webpack:///./bricks/basic-bricks/src/general-modal/index.tsx","webpack:///./bricks/basic-bricks/src/general-drawer/GeneralDrawer.tsx","webpack:///./bricks/basic-bricks/src/general-drawer/index.tsx","webpack:///./bricks/basic-bricks/src/general-custom-buttons/index.module.css?78cf","webpack:///./bricks/basic-bricks/src/general-custom-buttons/GeneralCustomButtons.tsx","webpack:///./bricks/basic-bricks/src/general-custom-buttons/index.tsx","webpack:///./bricks/basic-bricks/src/delete-confirm-modal/DeleteConfirmModal.tsx","webpack:///./bricks/basic-bricks/src/delete-confirm-modal/index.tsx","webpack:///./bricks/basic-bricks/src/grid-layout/index.ts","webpack:///./bricks/basic-bricks/src/multiple-columns-card/MultipleColumnsCard.tsx","webpack:///./bricks/basic-bricks/src/multiple-columns-card/index.tsx","webpack:///./bricks/basic-bricks/src/list-container/ListContainer.module.css?26c6","webpack:///./bricks/basic-bricks/src/list-container/ListContainer.tsx","webpack:///./bricks/basic-bricks/src/list-container/index.tsx","webpack:///./bricks/basic-bricks/src/transform-agent/index.ts","webpack:///./bricks/basic-bricks/src/script-brick/index.tsx","webpack:///./bricks/basic-bricks/src/magic-brick/MagicBrick.tsx","webpack:///./bricks/basic-bricks/src/magic-brick/index.tsx","webpack:///./bricks/basic-bricks/src/popover-container/PopoverContainer.module.css?d45c","webpack:///./bricks/basic-bricks/src/popover-container/PopoverContainer.tsx","webpack:///./bricks/basic-bricks/src/popover-container/index.tsx","webpack:///./bricks/basic-bricks/src/fold-brick/style.module.css?f759","webpack:///./bricks/basic-bricks/src/fold-brick/FoldBrick.tsx","webpack:///./bricks/basic-bricks/src/fold-brick/index.tsx","webpack:///./bricks/basic-bricks/src/advance-list-container/style.module.css?e650","webpack:///./bricks/basic-bricks/src/advance-list-container/AdvanceListContainer.tsx","webpack:///./bricks/basic-bricks/src/advance-list-container/index.tsx","webpack:///./bricks/basic-bricks/src/fold-brick-v2/FoldBrickV2.tsx","webpack:///./bricks/basic-bricks/src/fold-brick-v2/index.tsx","webpack:///./bricks/basic-bricks/src/sub-menu-filter/index.module.css?be64","webpack:///./bricks/basic-bricks/src/sub-menu-filter/SubMenuFilter.tsx","webpack:///./bricks/basic-bricks/src/sub-menu-filter/index.tsx","webpack:///./bricks/basic-bricks/src/general-notification/index.tsx","webpack:///./bricks/basic-bricks/src/general-hotkeys/index.tsx","webpack:///./bricks/basic-bricks/src/general-timer/index.tsx","webpack:///./bricks/basic-bricks/src/export-json-file/index.tsx","webpack:///./bricks/basic-bricks/src/brick-error/BrickError.tsx","webpack:///./bricks/basic-bricks/src/brick-error/index.tsx","webpack:///./bricks/basic-bricks/src/easy-view/EasyView.tsx","webpack:///./bricks/basic-bricks/src/easy-view/index.tsx","webpack:///./bricks/basic-bricks/src/header-bar/HeaderBar.tsx","webpack:///./bricks/basic-bricks/src/header-bar/index.tsx","webpack:///./bricks/basic-bricks/src/general-anchor/GeneralAnchor.module.css?7eff","webpack:///./bricks/basic-bricks/src/general-anchor/GeneralAnchor.tsx","webpack:///./bricks/basic-bricks/src/general-anchor/index.tsx","webpack:///./bricks/basic-bricks/src/general-title/GeneralTitle.module.css?d3a8","webpack:///./bricks/basic-bricks/src/general-title/GeneralTitle.tsx","webpack:///./bricks/basic-bricks/src/general-title/index.tsx","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///delegated ./node_modules/history/esm/history.js from dll-reference dll","webpack:///delegated ./node_modules/lodash/lodash.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/general-modal/index.shadow.less","webpack:///./bricks/basic-bricks/src/images/logo-139w.png","webpack:///delegated ./node_modules/@next-core/brick-icons/dist/index.esm.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/images/default-app-icon.png","webpack:///./bricks/basic-bricks/src/menu-bar/MenuBar/MenuBar.module.css","webpack:///./bricks/basic-bricks/src/images/dashboard-title-decorator-right.svg","webpack:///delegated ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js from dll-reference dll","webpack:///delegated ./node_modules/@next-core/brick-utils/dist/index.esm.js from dll-reference dll","webpack:///delegated ./node_modules/@ant-design/icons/es/index.js from dll-reference dll","webpack:///./node_modules/immutability-helper/index.js","webpack:///./bricks/basic-bricks/src/images/dashboard-title-decorator-left.svg","webpack:///delegated ./node_modules/classnames/index.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/fold-brick-v2/style.shadow.less?2c27","webpack:///./bricks/basic-bricks/src/app-bar/DesktopCell/DesktopCell.module.css","webpack:///./bricks/basic-bricks/src/images/card-bg-bottom-left.svg","webpack:///./bricks/basic-bricks/src/app-bar/AppBar/AppBar.module.css","webpack:///./bricks/basic-bricks/src/app-bar/SearchBar/SearchBar.module.css","webpack:///external \"dll\"","webpack:///delegated ./node_modules/i18next/dist/esm/i18next.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/header-bar/index.headerBar.less?0e2a","webpack:///./bricks/basic-bricks/src/menu-bar/AppSubMenu/AppSubMenu.module.css","webpack:///delegated ./node_modules/js-yaml/index.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/app-bar/Desktop/Desktop.module.css","webpack:///./bricks/basic-bricks/src/general-anchor/GeneralAnchor.module.css","webpack:///./bricks/basic-bricks/src/sub-menu-filter/index.module.css","webpack:///delegated ./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/app-bar/Launchpad/Launchpad.module.css","webpack:///delegated ./node_modules/@next-core/brick-http/dist/index.esm.js from dll-reference dll","webpack:///./node_modules/@fortawesome/fontawesome-svg-core/styles.css","webpack:///./bricks/basic-bricks/src/app-bar/LaunchpadWrapper/LaunchpadWrapper.module.css","webpack:///delegated ./node_modules/antd/es/index.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/app-bar/DesktopDirContent/DesktopDirContent.module.css","webpack:///./bricks/basic-bricks/src/app-bar/site-map/SiteMap.module.css","webpack:///delegated ./node_modules/react-dom/index.js from dll-reference dll","webpack:///delegated ./node_modules/react-transition-group/esm/index.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/sub-menu/index.module.css","webpack:///./bricks/basic-bricks/src/app-bar/DesktopApp/DesktopApp.module.css","webpack:///./bricks/basic-bricks/src/print-button/PrintButton.module.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/defineProperty.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/app-bar/DesktopCustom/DesktopCustom.module.css","webpack:///./bricks/basic-bricks/src/popover-container/PopoverContainer.module.css","webpack:///./bricks/basic-bricks/src/general-custom-buttons/index.module.css","webpack:///./node_modules/@next-core/brick-icons/dist/styles/index.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/extends.js from dll-reference dll","webpack:///delegated ./node_modules/react/index.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/menu-bar/LogoBar/LogoBar.module.css","webpack:///./bricks/basic-bricks/src/images/card-bg-top-right.svg","webpack:///./bricks/basic-bricks/src/app-bar/LaunchpadButton/LaunchpadButton.module.css","webpack:///./bricks/basic-bricks/src/general-drawer/index.shadow.less?04ba","webpack:///./bricks/basic-bricks/src/micro-app/MicroApp.shadow.css?4a04","webpack:///./node_modules/@next-libs/basic-components/dist/esm/GeneralIcon.module.css","webpack:///./bricks/basic-bricks/src/images/print-helper.png","webpack:///delegated ./node_modules/moment/moment.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/micro-app/MicroApp.shadow.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/asyncToGenerator.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/general-button/GeneralButton.module.css","webpack:///./node_modules/@next-libs/basic-components/dist/esm/Sidebar.module.css","webpack:///./bricks/basic-bricks/src/app-bar/MyDesktop/MyDesktop.module.css","webpack:///./bricks/basic-bricks/src/app-bar/AppBarBreadcrumb/AppBarBreadcrumb.module.css"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","___CSS_LOADER_EXPORT___","push","locals","result","toString","___CSS_LOADER_API_IMPORT___","___CSS_LOADER_GET_URL_IMPORT___","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","url","options","default","test","slice","hash","needQuotes","concat","replace","useSourceMap","list","this","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","length","id","_i","K","locale","BASIC_BRICKS","LOGOUT","LOGIN","ACCOUNT_MANAGEMENT","PAGE_NOT_FOUND_TITLE","PAGE_NOT_FOUND_DESC","PAGE_ERROR_TITLE","BRICK_ERROR","LEGACY_TEMPLATE_ERROR","HELP","CANCEL","OK","COVERT_TO_LANGUAGE","i18next","addResourceBundle","en","zh","PageTitle","pageTitle","dashboardMode","useApplyPageTitle","className","style","display","overflow","textOverflow","whiteSpace","fontSize","height","lineHeight","SvgLogo31","props","xmlns","xmlnsXlink","width","fill","fillRule","transform","xlinkHref","mask","BtnExitDashboardMode","role","viewBox","focusable","data-icon","aria-hidden","MicroApp","dashboard_mode_logo_url","getRuntime","getBrandSettings","bannerStyle","bannerPageTitle","src","classNames","noGap","MicroViewElement","constructor","super","shadowRoot","attachShadow","styleElement","document","createElement","textContent","styles","appendChild","_mountPoint","type","Boolean","attribute","event","_initInternalListeners","_render","ReactDOM","unmountComponentAtNode","isConnected","render","subMenuSlot","_getSlotBySelector","hasSubMenu","_checkSlotBySelector","addEventListener","titleBarSlot","hasTitleBar","toolbarSlot","hasToolbar","bannerSlot","hasBanner","bannerTitleBarSlot","hasBannerTitleBar","bannerToolbarSlot","hasBannerToolbar","e","paths","composedPath","dom","tagName","includes","_modeDashboardExitEmitter","emit","selector","querySelector","slot","assignedNodes","some","node","hidden","UpdatingElement","customElements","define","_excluded","innerRef","to","rest","history","href","location","createHref","onClick","defaultPrevented","button","target","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","preventDefault","handleClick","ref","Colors","COLORS_MAP","green","color","background","borderColor","red","blue","orange","cyan","purple","geekblue","gray","getColor","_COLORS_MAP","isGradientColor","undefined","startColor","endColor","GeneralIcon","icon","bg","size","shape","reverseBgColor","showEmptyIcon","getStyle","mergedStyle","backgroundColor","getDefaultIcon","iconNode","_ref","component","category","roundSquareBg","_icon$color","Fragment","imgSrc","imgStyle","_icon","_icon2","assign","_ref2","generalIconId","iconType","lib","theme","faIcon","prefix","verticalAlign","gradientIconDirection","direction","x1","y1","x2","y2","position","offset","stopColor","isGroup","isSubMenu","initMenuItemAndMatchCurrentPathKeys","menuItems","pathname","search","parentCursor","selectedKeys","openedKeys","cursor","forEach","tmp","items","defaultExpanded","escapedPath","match","path","exact","Array","isArray","activeIncludes","include","activeExcludes","_include","activeMatchSearch","toSearch","URLSearchParams","currentSearch","entries","matchMenuItem","String","Component","state","unlisten","listen","setState","ignoreTitle","Item","title","text","menuItemIcon","menuItemText","ItemGroup","innerItem","renderMenuItem","SubMenu","renderSubMenu","renderGroupMenu","renderSimpleMenuItem","collapsed","inlineIndent","defaultOpenKeys","defaultSelectedKeys","borderRight","menuContainer","inlineCollapsed","MenuTooltip","tooltipProps","visible","placement","overlayClassName","children","OtherAppMenu","realApp","getMicroApps","excludeInstalling","includeInternal","find","app","microAppId","menuGroup","menuTitle","localeName","replaceParams","subPath","matchResult","menuTitleLink","menuTitleIcon","menuIcon","menuTitleText","params","AppMenu","useLocation","useCurrentApp","prependApps","setPrependApps","React","useState","appendApps","setAppendApps","setMatchResult","menu","showRelatedApps","useEffect","matchPath","homepage","relatedApps","getRelatedAppsAsync","matchedAppIndex","findIndex","getRelatedAppsByPath","appMenu","link","empty","LogoBar","brand","logoBar","logoLink","menu_bar_logo_url","SvgCollapse","stroke","strokeLinecap","strokeLinejoin","cx","cy","CollapseBar","collapseBar","menuBar","collapse","isCollapsed","AppSubMenu","subMenu","body","classList","add","remove","appSubMenu","data-testid","appSubMenuTitle","MenuBar","toggle","developing","status","MenuBarElement","LaunchpadApi_createCollection","http","post","LaunchpadApi_listCollection","UserAdminApi_getUserInfoV2","username","CustomerApi_getExpiration","SvgLaunchpad","SearchBar","focus","setFocus","searchInputRef","useCallback","element","Promise","resolve","then","searchBar","inputContainer","stopPropagation","placeholder","onChange","onKeyDown","keyCode","which","onFocus","onBlur","DesktopApp","onAddClick","isFavorite","showAddIcon","installing","installStatus","appLink","iconBackground","circle","square","resetWorkspaceStack","appIcon","icons","large","defaultAppIcon","addIcon","circleIcon","squareIcon","appName","spin","paddingRight","DesktopDirContext","createContext","useDesktopDirContext","useContext","DesktopDir","setDesktopDir","dirLink","dir","coordinates","x","clientX","y","clientY","activeIndex","dirName","DesktopCustom","responsive","JsonStorage","storage","setItem","parse","getItem","removeItem","clear","launchpadService","getAuth","org","localStorage","runtime","desktops","getDesktops","customList","desktop","filter","flat","microApps","setMicroApps","setMaxVisitorLength","maxVisitorLength","fetchFavoriteList","page","pageSize","setFavorites","getFavoritesLength","favoriteList","typeAdaptor","filteredFavoriteList","v","launchpadCollection","syncValidRecentlyVisitor","getAllVisitors","f","setAllVisitors","setAsFavorite","interceptorParams","ignoreLoadingBar","deleteFavorite","instanceId","delete","customItemId","storageKey","getItemIndex","hasItem","visitors","index","splice","unshift","pop","pushVisitor","getVisitor","getRealDesktopItem","custom","setFavoriteAsVisitor","getSitemapList","curMicroApps","siteMapList","getLaunchpadSiteMap","apps","row","pick","DesktopCell","addItemToFavorite","Modal","warning","zIndex","onSetAsFavorite","cellWrapper","positionLeft","cellItem","active","LaunchpadSettingsContext","columns","rows","useLaunchpadSettingsContext","Desktop","padding","arrowWidthPercent","desktopCount","gridTemplateColumns","gridTemplateRows","FavoriteDesktopCell","onDelete","disabled","useMemo","realLink","baseUrl","baseURI","startsWith","window","open","LeacySiteMap","onLoad","scrollContainer","containerStyle","onWheel","siteMapContainer","categoryList","groupWrapper","group","ModeType","SiteMap","forwardRef","remberMode","Sitemap","MyDesktop","recentlyVisitedList","setFavoriteList","isLoading","setIsLoading","firstRendered","setFirstRendered","setMode","siteMapRef","createRef","deskContainerRef","useRef","siteMapHeight","setSiteMapHeight","getFavoriteList","handleMode","handleOnSetAsFavorite","handleSiteMapLoad","siteMapDom","current","getBoundingClientRect","bottom","top","renderRecentlyVisited","visited","antIcon","renderMyFavorites","section","favorites","indicator","spinning","delay","isEmpty","emptyTips","marginLeft","favoriteContainer","renderSiteMap","test-id","flex","modeWrapper","header","Favorities","modeIcon","settingsContainer","settings","rememberedDesktopCursor","DesktopSlider","enableMyDesktop","getFeatureFlags","desktopCursor","setDesktopCursor","appCursor","setAppCursor","filteredDesktop","mapAppsToDesktop","validApps","id2app","reduce","acc","set","Map","has","chunk","q","lowerQ","toLowerCase","lockRef","throttledSetDesktopCursor","setTimeout","slideLeft","slideRight","onKeydown","currentDesktop","cell","getHistory","Math","floor","innerWidth","innerHeight","next","removeEventListener","deltaXRef","deltaYRef","responsibleRef","resetDeltaTimeoutRef","sliderChildrenLength","deltaX","deltaY","axisRef","abs","threshold","tryToSlideByWheel","clearTimeout","desktopSlider","filtered","desktopSelector","selectorSeparator","desktopName","handleSlideTo","desktopList","transition","filteredList","arrowLeft","available","arrowButton","arrowRight","DesktopDirContent","entering","setEntering","translateX","documentElement","clientWidth","translateY","clientHeight","rowsInDir","ceil","in","timeout","appear","onEntering","dirContainer","dirContent","Launchpad","getLaunchpadSettings","getFilterMicroApps","setQ","desktopDir","timer","pollingRunningAppStatus","reloadMicroApps","error","onWillClose","handleHttpError","Provider","launchpad","enter","fadeEnter","enterActive","fadeEnterActive","exit","fadeExit","exitActive","fadeExitActive","exitDone","fadeExitDone","launchpadContainer","LaunchpadWrapper","fadeIn","setFadeIn","onExited","onClose","LaunchpadPortal","elem","removeChild","createPortal","isff","navigator","userAgent","indexOf","addEvent","method","attachEvent","getMods","modifier","mods","getKeys","keys","split","lastIndexOf","_keyMap","backspace","tab","return","esc","escape","space","left","up","right","down","del","ins","insert","home","end","pageup","pagedown","capslock","num_0","num_1","num_2","num_3","num_4","num_5","num_6","num_7","num_8","num_9","num_multiply","num_add","num_enter","num_subtract","num_decimal","num_divide","'","_modifier","shift","alt","option","ctrl","control","cmd","command","modifierMap","16","18","17","91","_mods","_handlers","k","_downKeys","_scope","elementHasBindEvent","toUpperCase","charCodeAt","setScope","scope","getScope","eachUnbind","_ref$splitKey","splitKey","originKey","unbindKeys","len","lastKey","record","a1","a2","arr1","arr2","isIndex","compareArray","eventHandler","handler","modifiersMatch","shortcut","returnValue","cancelBubble","dispatch","asterisk","charCode","hotkeys","keyName","keyNum","getModifierState","keydown","keyup","keyShortcut","_downKeysCurrent","a","sort","isElementBind","clearModifier","_api","deleteScope","newScope","handlers","getPressedKeyCodes","isPressed","srcElement","flag","isContentEditable","readOnly","unbind","keysInfo","info","_len","arguments","args","_key","_hotkeys","noConflict","deep","LaunchpadButton","setVisible","openLaunchpad","handleLaunchpadWillClose","toggleLaunchpadEffect","preVisble","curVisble","launchpadLink","launchpadIcon","AppBarBreadcrumb","currentApp","previousWorkspace","useRecentApps","breadcrumbContainer","workspaceButton","popWorkspaceStack","appLocaleName","separator","breadcrumb","internal","AppDocumentLink","documentId","useTranslation","showAppDocumentLink","docLink","docId","redirectToDocHomeIfNotFound","docLinkContainer","getUnionKey","notificationFactory","expires","handleClose","moment","unix","notification","close","handleDelay","orgId","put","message","success","err","duration","description","marginTop","highlight","format","btn","closeBtn","AppBar","avatarSrc","setAvatarSrc","accountEntryEnabled","setAccountEntry","hideLaunchpadButton","ssoEnabled","licenseInfoEnabled","switchLanguageEnabled","currentLang","language","favicon","isEnable","baseTitle","base_title","userInfo","user_icon","updating","notificationTime","now","expiringDismissed","expiringDismissedUntil","processLiscenseExpires","avatarProps","marginRight","handleSwitchLanguage","changeLanguage","reload","appBar","titleContainer","margin","actionsContainer","overlay","dropdownMenuItem","Divider","trigger","substr","AppBarElement","_breadcrumb","GeneralButton","buttonName","buttonType","buttonDanger","buttonIcon","buttonShape","buttonSize","buttonProps","buttonUrl","buttonHref","loading","disabledTooltip","tooltip","tooltipConfig","fadedText","arrowPointAtCenter","getButtonNode","iconButton","danger","GeneralButtonElement","cancelable","detail","console","warn","buttonClick","dataSource","disableAfterClick","_handleClick","RedirectToElement","currentLocation","toHref","useHref2","href2","toLocation","createLocation","locationsAreEqual","PageNotFound","textAlign","PageNotFoundElement","PageError","PageErrorElement","LoadingBar","requestsCount","setRequestsCount","count","requestStart","requestEnd","LoadingBarElement","HTMLElement","connectedCallback","disconnectedCallback","PageTitleElement","IndexCard","gridGap","contentGridGap","IndexCardElement","__unstable_doNotDecorate","_contentGridGap","_title","HomeRedirectElement","appId","PrintButton","printModalBody","maskClosable","pngWidth","okText","overflowY","printHelperUrl","onVisibleChange","isVisible","border","originTitle","parent","prefixTitle","Date","toISOString","print","PrintButtonElement","GeneralCard","configProps","operationButtons","hasExtraSlot","cardTitle","fillVertical","verticalCenter","isFixedFooter","paddingBottom","setPaddingBottom","fixedStyle","setFixedStyle","footerRef","handleFooter","rootNodeRef","getRootNode","host","rootNodeRect","resizeObserver","ResizeObserver","observe","disconnect","buttons","renderButtons","extra","gridTemplate","bordered","justifyContent","alignItems","GeneralCardElement","_shadowRoot","footerSlot","_getFooterSlot","hasFooter","listenOnClick","nodeName","idEventNameMap","emitEvent","eventDetailMap","_operationBtns","eventName","needData","_checkFooterSlot","dispatchEvent","CustomEvent","subMenuContainer","headerTitle","SubMenuElement","titleAlignPropertyMap","start","center","GeneralModal","enableFooterSlot","hideCancelButton","modalTitle","titleAlign","titleIcon","fullscreen","okDisabled","confirmLoading","modalHeaderRef","modalFooterRef","contentSlotRef","setBodyHeightHandlerRef","bodyHeight","setBodyHeight","modalContent","closest","footer","defaultFooter","cancelText","okButtonProps","okType","classnames","wrapper","bodyStyle","wrapClassName","cancelButtonProps","GeneralModalElement","listenOnClose","clickNode","buttonNode","modalProps","isInFooterContainer","generalModalConfirm","closeWhenOk","generalModalCancel","touchAction","mutableProps","pickFields","fields","fieldKey","field","getContainer","initData","noEvent","openModal","closeModal","GeneralDrawer","maxContentHeight","setMaxContentHeight","closable","drawerStyle","headerStyle","tip","maxHeight","GeneralDrawerElement","Number","maybeMaskDom","customTitle","drawerOpen","drawerClose","removeProperty","GeneralCustomButtons","handleMenuClick","dropdown","buttonConfigs","dropdownPlacement","isMoreButton","moreButtonShape","moreBtnIcon","moreButtonType","dropdownBtnIcon","dropdownBtnText","alignment","dropdownBtnType","propsButtons","hide","isDropdown","urlTarget","tooltipPlacement","testId","restProps","buttonComponent","child","dropdownButtons","idx","isDivider","wrapIcon","dropdownBtnIconContainer","dropdownBtn","dropdownBtnNormal","disabledMenuItem","data-button","moreButton","noShapeButton","circleShapeButton","moreIconButton","dropdownBtnContainer","customButtonsContainer","GeneralCustomButtonsElement","customButtons","update","$set","customButton","isEqual","DeleteConfirmModal","confirm","onOk","handleConfirm","onCancel","handleCancel","DeleteConfirmModalElement","_data","_message","_eventDetail","_eventName","mediaSizeList","mediaQueryMap","medium","small","xSmall","GridLayoutElement","gap","append","_clearMediaMatchListeners","matchMedia","media","query","mediaMatch","_sizeMatch","matches","_mediaMatchListeners","addListener","removeListener","fn","layout","columnSpan","rowSpan","templateColumns","gridColumn","gridRow","transformCss","gridColumns","str","MultipleColumnsCard","cardBorder","MultipleColumnsCardElement","ListContainer","extraContainerStyle","listContainerAsGrid","useBrick","ListContainerElement","TransformAgentElement","targetElements","multiple","from","querySelectorAll","found","sourceElements","isObject","transformElementProperties","ScriptBrickElement","fun","AsyncFunction","getPrototypeOf","newData","scriptExecute","dataTrue","dataFalse","execute","MagicBrick","useBrickConf","setUseBrickConf","magicBrickConfigMap","getMagicBrickConfigMapAsync","showType","$$parsedProperties","properties","safeLoad","schema","JSON_SCHEMA","json","parsedTransform","parsedEvents","events","brick","developHelper","loadDynamicBricksInBrickConf","fetchData","MagicBrickElement","PopoverContainer","customElementRef","popoverBrickNode","popoverBrick","popoverContentStyle","parentRefForUseBrickInPortal","parentNode","MouseEvent","handleMouseover","bubbles","triggerByIcon","processedUseBrickOfDisplayBrick","displayBrick","transferGraphAttrs","graphAttrs","related","faded","highlighted","merge","displayBrickNode","displayBrickContainer","showPopoverBg","customOverlay","cursorPointer","showIcon","editIcon","editIconVisible","popoverIcon","PopoverContainerElement","visibleChange","_handleVisibleChange","FoldBrick","show","handleShow","defaultShow","foldStyle","foldContainer","foldName","rotate","foldActive","foldInactive","FoldBrickElement","AdvanceListContainer","setActiveIndex","defaultActiveIndex","itemClick","renderItem","itemContainer","activeItem","selectable","clickItemEvent","itemContainerInner","titleBrick","suffixBrick","renderItemExtra","AdvancedListContainerElement","clickEvent","_handleItemClick","showCard","renderAdvanceListContainer","FoldBrickV2","fold","foldPrimaryActive","isShowFoldIcon","showDivider","dashed","dividerDashed","orientation","dividerOrientation","FoldBrickV2Element","listenToClick","SubMenuFilter","rowMenuItem","unsearchable","onSelect","onSearch","transparentBackground","accordion","setMenuItems","setSelectedKeys","openKeys","setOpenKeys","subMenuKeys","setSubMenuKeys","cloneDeep","getSubMenuKeys","renderIcon","menuItemMainPart","renderGroupTitle","renderMenuTitle","getMenuItemByKey","menuItem","getSelectedMenuItemByKeys","Search","searchMenu","uniq","newSelectedKeys","Set","onDeselect","onOpenChange","latestOpenKey","SubMenuFilterElement","menuSelect","menuSearch","handleSelect","handleSearch","GeneralNotificationElement","closeEvent","iconStyle","mtd","GeneralHotkeysElement","hotkeysConfig","GeneralTimerElement","_intervalId","clearInterval","stopTimer","startTimeout","defaultEventName","interval","defaultInterval","ExportJsonFileElement","fileName","dataString","blob","Blob","download","URL","createObjectURL","click","failed","BrickError","errorType","errorMessage","brickName","isLegacyTemplate","marginBottom","BrickErrorElement","EasyView","gridAreas","gridTemplateAreas","styleByAreas","areas","area","gridArea","EasyViewElement","HeaderBar","logoUrl","headerBackgroundColor","logo278w","srcSet","logo139w","sizes","HeaderBarElement","logoClickEvent","GeneralAnchor","anchorList","extraBrick","Link","Anchor","renderAnchorList","offsetTop","anchorWrapper","anchorContainer","anchorLinkContainer","extraContainer","GeneralAnchorElement","GeneralTitle","mainTitle","titleSuffixBrick","descPrefixBrick","subTitle","descSuffixBrick","titleWrapper","titleContentUrl","titleContent","subTitleWrapper","subTitleContent","descriptionWrapper","descriptionContent","GeneralTitleElement","memo","isOldIE","all","atob","getTarget","styleTarget","HTMLIFrameElement","contentDocument","head","stylesInDom","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","base","obj","css","references","updater","addStyle","insertStyleElement","attributes","nonce","setAttribute","Error","textStore","replaceText","replacement","applyToSingletonTag","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","applyToTag","removeAttribute","firstChild","singleton","singletonCounter","styleIndex","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","___CSS_LOADER_AT_RULE_IMPORT_0___","___CSS_LOADER_AT_RULE_IMPORT_1___","stringifiable","isProduction","process","invariant","condition","getAllKeys","getOwnPropertySymbols","copy","Context","commands","defaultCommands","extend","isEquals","newContext","configurable","directive","$spec","_this","spec","$apply","nextObject","objectWasNextObject","nextValueForKey","nextObjectValue","$push","invariantPushAndUnshift","$unshift","$splice","originalObject","invariantSplice","invariantSplices","apply","_nextObject","invariantSet","$toggle","targets","invariantSpecArray","nextObjectCopy","$unset","_spec","$add","values","invariantMapOrSet","_a","$remove","$merge","specValue","original","defaultContext","typeOfTarget","dll"],"mappings":"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","file":"index.650b7021.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"bricks/basic-bricks/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"bricks/basic-bricks:KEXQ\");\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".foldActive--UXkJiIR7 {\\n display: block;\\n}\\n.foldInactive--1BLXvLbd {\\n display: none;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"foldActive\": \"foldActive--UXkJiIR7\",\n\t\"foldInactive\": \"foldInactive--1BLXvLbd\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".titleWrapper--28bPvrgh {\\n font-size: 14px;\\n font-weight: 500;\\n display: flex;\\n align-items: center;\\n}\\n.titleWrapper--28bPvrgh .titleContent--q7I3rVuE,\\n.titleWrapper--28bPvrgh .titleContentUrl--uTrCc8Vz {\\n margin: 0 5px 2px 0;\\n color: #262626;\\n}\\n.titleWrapper--28bPvrgh .titleContentUrl--uTrCc8Vz:hover {\\n color: #0071eb;\\n cursor: pointer;\\n}\\n.titleWrapper--28bPvrgh .titleContent--q7I3rVuE,\\n.subTitleWrapper--3S00UpIS .subTitleContent--38ynLdKf {\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n}\\n.subTitleWrapper--3S00UpIS {\\n margin-bottom: 5px;\\n}\\n.descriptionWrapper--3z-RRpfq {\\n display: flex;\\n font-size: 12px;\\n align-items: center;\\n}\\n\\n.descriptionWrapper--3z-RRpfq .descriptionContent--1uvaxzdV {\\n margin-top: 2px;\\n color: #8c8c8c;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"titleWrapper\": \"titleWrapper--28bPvrgh\",\n\t\"titleContent\": \"titleContent--q7I3rVuE\",\n\t\"titleContentUrl\": \"titleContentUrl--uTrCc8Vz\",\n\t\"subTitleWrapper\": \"subTitleWrapper--3S00UpIS\",\n\t\"subTitleContent\": \"subTitleContent--38ynLdKf\",\n\t\"descriptionWrapper\": \"descriptionWrapper--3z-RRpfq\",\n\t\"descriptionContent\": \"descriptionContent--1uvaxzdV\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../node_modules/less-loader/dist/cjs.js??ref--15-2!./index.shadow.less\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"0Cfi\");","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".headerBar {\\n display: flex;\\n align-items: center;\\n}\\n.headerBar .logo {\\n cursor: pointer;\\n}\\n.headerBar .logo img {\\n width: 139px;\\n height: 35px;\\n display: inline-block;\\n}\\n.headerBar .content {\\n flex: 1;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n padding: 0 15px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.ant-drawer {\\n position: fixed;\\n z-index: 1000;\\n width: 0%;\\n height: 100%;\\n transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), height 0s ease 0.3s, width 0s ease 0.3s;\\n}\\n.ant-drawer > * {\\n transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), box-shadow 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);\\n}\\n.ant-drawer-content-wrapper {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n}\\n.ant-drawer .ant-drawer-content {\\n width: 100%;\\n height: 100%;\\n}\\n.ant-drawer-left,\\n.ant-drawer-right {\\n top: 0;\\n width: 0%;\\n height: 100%;\\n}\\n.ant-drawer-left .ant-drawer-content-wrapper,\\n.ant-drawer-right .ant-drawer-content-wrapper {\\n height: 100%;\\n}\\n.ant-drawer-left.ant-drawer-open,\\n.ant-drawer-right.ant-drawer-open {\\n width: 100%;\\n transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);\\n}\\n.ant-drawer-left {\\n left: 0;\\n}\\n.ant-drawer-left .ant-drawer-content-wrapper {\\n left: 0;\\n}\\n.ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper {\\n box-shadow: 6px 0 16px -8px rgba(0, 0, 0, 0.08), 9px 0 28px 0 rgba(0, 0, 0, 0.05), 12px 0 48px 16px rgba(0, 0, 0, 0.03);\\n}\\n.ant-drawer-right {\\n right: 0;\\n}\\n.ant-drawer-right .ant-drawer-content-wrapper {\\n right: 0;\\n}\\n.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper {\\n box-shadow: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), -12px 0 48px 16px rgba(0, 0, 0, 0.03);\\n}\\n.ant-drawer-right.ant-drawer-open.no-mask {\\n right: 1px;\\n transform: translateX(1px);\\n}\\n.ant-drawer-top,\\n.ant-drawer-bottom {\\n left: 0;\\n width: 100%;\\n height: 0%;\\n}\\n.ant-drawer-top .ant-drawer-content-wrapper,\\n.ant-drawer-bottom .ant-drawer-content-wrapper {\\n width: 100%;\\n}\\n.ant-drawer-top.ant-drawer-open,\\n.ant-drawer-bottom.ant-drawer-open {\\n height: 100%;\\n transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);\\n}\\n.ant-drawer-top {\\n top: 0;\\n}\\n.ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper {\\n box-shadow: 0 6px 16px -8px rgba(0, 0, 0, 0.08), 0 9px 28px 0 rgba(0, 0, 0, 0.05), 0 12px 48px 16px rgba(0, 0, 0, 0.03);\\n}\\n.ant-drawer-bottom {\\n bottom: 0;\\n}\\n.ant-drawer-bottom .ant-drawer-content-wrapper {\\n bottom: 0;\\n}\\n.ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper {\\n box-shadow: 0 -6px 16px -8px rgba(0, 0, 0, 0.08), 0 -9px 28px 0 rgba(0, 0, 0, 0.05), 0 -12px 48px 16px rgba(0, 0, 0, 0.03);\\n}\\n.ant-drawer-bottom.ant-drawer-open.no-mask {\\n bottom: 1px;\\n transform: translateY(1px);\\n}\\n.ant-drawer.ant-drawer-open .ant-drawer-mask {\\n height: 100%;\\n opacity: 1;\\n transition: none;\\n animation: antdDrawerFadeIn 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);\\n pointer-events: auto;\\n}\\n.ant-drawer-title {\\n margin: 0;\\n color: var(--antd-heading-color);\\n font-weight: 500;\\n font-size: 16px;\\n line-height: 22px;\\n}\\n.ant-drawer-content {\\n position: relative;\\n z-index: 1;\\n overflow: auto;\\n background-color: var(--antd-component-background);\\n background-clip: padding-box;\\n border: 0;\\n}\\n.ant-drawer-close {\\n position: absolute;\\n top: 0;\\n right: 0;\\n z-index: 10;\\n display: block;\\n padding: 20px;\\n color: var(--antd-text-color-secondary);\\n font-weight: 700;\\n font-size: 16px;\\n font-style: normal;\\n line-height: 1;\\n text-align: center;\\n text-transform: none;\\n text-decoration: none;\\n background: transparent;\\n border: 0;\\n outline: 0;\\n cursor: pointer;\\n transition: color 0.3s;\\n text-rendering: auto;\\n}\\n.ant-drawer-close:focus,\\n.ant-drawer-close:hover {\\n color: rgba(0, 0, 0, 0.75);\\n text-decoration: none;\\n}\\n.ant-drawer-header-no-title .ant-drawer-close {\\n margin-right: var(--scroll-bar);\\n /* stylelint-disable-next-line function-calc-no-invalid */\\n padding-right: calc(20px - var(--scroll-bar));\\n}\\n.ant-drawer-header {\\n position: relative;\\n padding: 16px 24px;\\n color: var(--antd-text-color);\\n background: var(--antd-component-background);\\n border-bottom: 1px solid var(--antd-border-color-split);\\n border-radius: 6px 6px 0 0;\\n}\\n.ant-drawer-header-no-title {\\n color: var(--antd-text-color);\\n background: var(--antd-component-background);\\n}\\n.ant-drawer-wrapper-body {\\n display: flex;\\n flex-direction: column;\\n flex-wrap: nowrap;\\n width: 100%;\\n height: 100%;\\n}\\n.ant-drawer-body {\\n flex-grow: 1;\\n padding: 24px;\\n overflow: auto;\\n font-size: 14px;\\n line-height: 1.5715;\\n word-wrap: break-word;\\n}\\n.ant-drawer-footer {\\n flex-shrink: 0;\\n padding: 10px 24px;\\n border-top: 1px solid var(--antd-border-color-split);\\n}\\n.ant-drawer-mask {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 0;\\n background-color: rgba(11, 26, 47, 0.45);\\n opacity: 0;\\n filter: alpha(opacity=45);\\n transition: opacity 0.3s linear, height 0s ease 0.3s;\\n pointer-events: none;\\n}\\n.ant-drawer-open-content {\\n box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\\n}\\n.ant-drawer .ant-picker-clear {\\n background: var(--antd-component-background);\\n}\\n@keyframes antdDrawerFadeIn {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n.ant-drawer-rtl {\\n direction: rtl;\\n}\\n.ant-drawer-rtl .ant-drawer-close {\\n right: auto;\\n left: 0;\\n}\\n.ant-spin {\\n box-sizing: border-box;\\n margin: 0;\\n padding: 0;\\n color: var(--antd-text-color);\\n font-size: 14px;\\n font-variant: tabular-nums;\\n line-height: 1.5715;\\n list-style: none;\\n font-feature-settings: 'tnum';\\n position: absolute;\\n display: none;\\n color: #0071eb;\\n text-align: center;\\n vertical-align: middle;\\n opacity: 0;\\n transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.ant-spin-spinning {\\n position: static;\\n display: inline-block;\\n opacity: 1;\\n}\\n.ant-spin-nested-loading {\\n position: relative;\\n}\\n.ant-spin-nested-loading > div > .ant-spin {\\n position: absolute;\\n top: 0;\\n left: 0;\\n z-index: 4;\\n display: block;\\n width: 100%;\\n height: 100%;\\n max-height: 400px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin .ant-spin-dot {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n margin: -10px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin .ant-spin-text {\\n position: absolute;\\n top: 50%;\\n width: 100%;\\n padding-top: 5px;\\n text-shadow: 0 1px 2px var(--antd-component-background);\\n}\\n.ant-spin-nested-loading > div > .ant-spin.ant-spin-show-text .ant-spin-dot {\\n margin-top: -20px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-dot {\\n margin: -7px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-text {\\n padding-top: 2px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin-sm.ant-spin-show-text .ant-spin-dot {\\n margin-top: -17px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-dot {\\n margin: -16px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-text {\\n padding-top: 11px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin-lg.ant-spin-show-text .ant-spin-dot {\\n margin-top: -26px;\\n}\\n.ant-spin-container {\\n position: relative;\\n transition: opacity 0.3s;\\n}\\n.ant-spin-container::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 10;\\n display: none \\\\9;\\n width: 100%;\\n height: 100%;\\n background: var(--antd-component-background);\\n opacity: 0;\\n transition: all 0.3s;\\n content: '';\\n pointer-events: none;\\n}\\n.ant-spin-blur {\\n clear: both;\\n overflow: hidden;\\n opacity: 0.5;\\n user-select: none;\\n pointer-events: none;\\n}\\n.ant-spin-blur::after {\\n opacity: 0.4;\\n pointer-events: auto;\\n}\\n.ant-spin-tip {\\n color: var(--antd-text-color-secondary);\\n}\\n.ant-spin-dot {\\n position: relative;\\n display: inline-block;\\n font-size: 20px;\\n width: 1em;\\n height: 1em;\\n}\\n.ant-spin-dot-item {\\n position: absolute;\\n display: block;\\n width: 9px;\\n height: 9px;\\n background-color: #0071eb;\\n border-radius: 100%;\\n transform: scale(0.75);\\n transform-origin: 50% 50%;\\n opacity: 0.3;\\n animation: antSpinMove 1s infinite linear alternate;\\n}\\n.ant-spin-dot-item:nth-child(1) {\\n top: 0;\\n left: 0;\\n}\\n.ant-spin-dot-item:nth-child(2) {\\n top: 0;\\n right: 0;\\n animation-delay: 0.4s;\\n}\\n.ant-spin-dot-item:nth-child(3) {\\n right: 0;\\n bottom: 0;\\n animation-delay: 0.8s;\\n}\\n.ant-spin-dot-item:nth-child(4) {\\n bottom: 0;\\n left: 0;\\n animation-delay: 1.2s;\\n}\\n.ant-spin-dot-spin {\\n transform: rotate(45deg);\\n animation: antRotate 1.2s infinite linear;\\n}\\n.ant-spin-sm .ant-spin-dot {\\n font-size: 14px;\\n}\\n.ant-spin-sm .ant-spin-dot i {\\n width: 6px;\\n height: 6px;\\n}\\n.ant-spin-lg .ant-spin-dot {\\n font-size: 32px;\\n}\\n.ant-spin-lg .ant-spin-dot i {\\n width: 14px;\\n height: 14px;\\n}\\n.ant-spin.ant-spin-show-text .ant-spin-text {\\n display: block;\\n}\\n@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\\n /* IE10+ */\\n .ant-spin-blur {\\n background: var(--antd-component-background);\\n opacity: 0.5;\\n }\\n}\\n@keyframes antSpinMove {\\n to {\\n opacity: 1;\\n }\\n}\\n@keyframes antRotate {\\n to {\\n transform: rotate(405deg);\\n }\\n}\\n.ant-spin-rtl {\\n direction: rtl;\\n}\\n.ant-spin-rtl .ant-spin-dot-spin {\\n transform: rotate(-45deg);\\n animation-name: antRotateRtl;\\n}\\n@keyframes antRotateRtl {\\n to {\\n transform: rotate(-405deg);\\n }\\n}\\n.header {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n}\\n.content {\\n overflow: auto;\\n height: 100%;\\n}\\n.footer {\\n display: flex;\\n align-items: center;\\n position: absolute;\\n bottom: 0;\\n right: 0;\\n width: 100%;\\n height: 56px;\\n background: var(--body-background);\\n}\\n.footer .footer-inner {\\n flex: 1;\\n}\\n.flexContainer {\\n display: flex;\\n}\\n.ant-drawer-body {\\n padding: 20px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDc3cHgiIGhlaWdodD0iNDVweCIgdmlld0JveD0iMCAwIDQ3NyA0NSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4KICAgIDx0aXRsZT7kuK08L3RpdGxlPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDEuMDEzMDQzJSIgeTE9IjAlIiB4Mj0iLTAuNzYzNzYwMzc3JSIgeTI9IjAlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwNTE0MkQiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzQxODhFMiIgb2Zmc2V0PSI1MC4yMzEzMjYlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwNTE0MkQiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i6aG16Z2iLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSLmoIfpopjoo4XppbAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MTcuMjczNDExLCAxLjAwMDAwMCkiPgogICAgICAgICAgICA8cG9seWdvbiBpZD0i55+p5b2iIiBmaWxsPSIjNDE4OEUyIiBwb2ludHM9IjQ5OS43NjQzNCAzMiAxMDEyLjI3MzQxIDMyIDEwMDguMjAwNCAzNiA1MDMuMjczNDExIDM2Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDxwb2x5bGluZSBpZD0i6Lev5b6ELTE5IiBzdHJva2U9InVybCgjbGluZWFyR3JhZGllbnQtMSkiIHN0cm9rZS13aWR0aD0iMiIgcG9pbnRzPSI5IDEuMzAwOTUxNzllLTEzIDQ0MC4xNTQ5NjIgMCA0NjguMDgyNTIzIDM1LjY1MTgzMTEgNDg2LjY4MzczNCAzNS42NTE4MzExIDQ5Mi45OTg5OTIgNDIuNDE3ODUzNCAxMDE2LjAwNDQ2IDQyLjQxNzg1MzQgMTAyMi43Nzg1IDM1LjY1MTgzMTEgMTA0My4xNjY2MSAzNS42NTE4MzExIDEwNzQuOTk5MjUgMCAxNTExLjI3MzQxIDQuNTIwOTU0NjRlLTEzIj48L3BvbHlsaW5lPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==\"","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".highlight--13bzhGzX {\\n color: #c7254e;\\n background-color: #f9f2f4;\\n border-radius: 4px;\\n padding: 2px 4px;\\n}\\n\\n.closeBtn--21OzQEBo {\\n color: var(--text-color-default);\\n}\\n\\n.closeBtn--21OzQEBo:hover,\\n .closeBtn--21OzQEBo:focus,\\n .closeBtn--21OzQEBo:active {\\n color: var(--text-color-default);\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"highlight\": \"highlight--13bzhGzX\",\n\t\"closeBtn\": \"closeBtn--21OzQEBo\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".dirLink--2edGXMdL {\\n display: grid;\\n grid-template-columns: repeat(2, 1fr);\\n grid-template-rows: repeat(2, 1fr);\\n width: 80px;\\n height: 80px;\\n color: #fff;\\n justify-content: center;\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.15);\\n border-radius: 10px;\\n font-size: 21px;\\n padding: 7px;\\n}\\n /* overflow: hidden; */\\n .dirLink--2edGXMdL.small--1EVF8one {\\n width: 56px;\\n height: 56px;\\n }\\n .dirLink--2edGXMdL .appIcon--312Jxxqj,\\n .dirLink--2edGXMdL .anticon {\\n width: 33px;\\n height: 33px;\\n }\\n .dirLink--2edGXMdL .anticon {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n overflow: hidden;\\n }\\n .dirLink--2edGXMdL:hover {\\n color: #fff;\\n }\\n\\n.dirName--3oayZtma {\\n display: block;\\n font-size: 16px;\\n line-height: 1.5;\\n height: 24px;\\n text-align: center;\\n}\\n\\n@media (max-height: 860px), (max-width: 1280px) {\\n .dirLink--2edGXMdL {\\n transform: scale(0.75);\\n }\\n .dirName--3oayZtma {\\n font-size: 14px;\\n height: 21px;\\n }\\n}\\n\\n@media (max-height: 700px), (max-width: 1024px) {\\n .dirLink--2edGXMdL {\\n transform: scale(0.6);\\n }\\n .dirName--3oayZtma {\\n font-size: 12px;\\n height: 18px;\\n }\\n}\\n\\n@media (max-height: 640px), (max-width: 900px) {\\n .dirLink--2edGXMdL {\\n transform: scale(0.5);\\n }\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"dirLink\": \"dirLink--2edGXMdL\",\n\t\"small\": \"small--1EVF8one\",\n\t\"appIcon\": \"appIcon--312Jxxqj\",\n\t\"dirName\": \"dirName--3oayZtma\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjZweCIgaGVpZ2h0PSIyNnB4IiB2aWV3Qm94PSIwIDAgMjYgMjYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+5Y2h54mH6L656KeS57uT5p6EL+W3puS4ijwvdGl0bGU+CiAgICA8ZyBpZD0i6aG16Z2iLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CiAgICAgICAgPGcgaWQ9IuaWh+WtlyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE1Mi4wMDAwMDAsIC0xMjMyLjAwMDAwMCkiIHN0cm9rZT0iIzIxM0E3OSIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgPGcgaWQ9IuivleWbvuWxleekui0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzQuMDAwMDAwLCAxMTAyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPGcgaWQ9Iue7n+iuoeWNoeeJhyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTguMDAwMDAwLCAxMzAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMjUgTDEsNiBDMSwzLjIzODU3NjI1IDMuMjM4NTc2MjUsMSA2LDEgTDI1LDEgTDI1LDEiIGlkPSLljaHniYfovrnop5Lnu5PmnoQv5bem5LiKIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"3tO9\");","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.ant-divider {\\n box-sizing: border-box;\\n margin: 0;\\n padding: 0;\\n color: rgba(0, 0, 0, 0.85);\\n font-size: 14px;\\n font-variant: tabular-nums;\\n line-height: 1.5715;\\n list-style: none;\\n font-feature-settings: 'tnum';\\n border-top: 1px solid rgba(0, 0, 0, 0.06);\\n}\\n.ant-divider-vertical {\\n position: relative;\\n top: -0.06em;\\n display: inline-block;\\n height: 0.9em;\\n margin: 0 8px;\\n vertical-align: middle;\\n border-top: 0;\\n border-left: 1px solid rgba(0, 0, 0, 0.06);\\n}\\n.ant-divider-horizontal {\\n display: flex;\\n clear: both;\\n width: 100%;\\n min-width: 100%;\\n margin: 24px 0;\\n}\\n.ant-divider-horizontal.ant-divider-with-text {\\n display: flex;\\n margin: 16px 0;\\n color: rgba(0, 0, 0, 0.85);\\n font-weight: 500;\\n font-size: 16px;\\n white-space: nowrap;\\n text-align: center;\\n border-top: 0;\\n border-top-color: rgba(0, 0, 0, 0.06);\\n}\\n.ant-divider-horizontal.ant-divider-with-text::before,\\n.ant-divider-horizontal.ant-divider-with-text::after {\\n position: relative;\\n top: 50%;\\n width: 50%;\\n border-top: 1px solid transparent;\\n border-top-color: inherit;\\n border-bottom: 0;\\n transform: translateY(50%);\\n content: '';\\n}\\n.ant-divider-horizontal.ant-divider-with-text-left::before {\\n top: 50%;\\n width: 5%;\\n}\\n.ant-divider-horizontal.ant-divider-with-text-left::after {\\n top: 50%;\\n width: 95%;\\n}\\n.ant-divider-horizontal.ant-divider-with-text-right::before {\\n top: 50%;\\n width: 95%;\\n}\\n.ant-divider-horizontal.ant-divider-with-text-right::after {\\n top: 50%;\\n width: 5%;\\n}\\n.ant-divider-inner-text {\\n display: inline-block;\\n padding: 0 1em;\\n}\\n.ant-divider-dashed {\\n background: none;\\n border-color: rgba(0, 0, 0, 0.06);\\n border-style: dashed;\\n border-width: 1px 0 0;\\n}\\n.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed {\\n border-top: 0;\\n}\\n.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::before,\\n.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::after {\\n border-style: dashed none none;\\n}\\n.ant-divider-vertical.ant-divider-dashed {\\n border-width: 0 0 0 1px;\\n}\\n.ant-divider-plain.ant-divider-with-text {\\n color: rgba(0, 0, 0, 0.85);\\n font-weight: normal;\\n font-size: 14px;\\n}\\n.ant-divider-rtl {\\n direction: rtl;\\n}\\n.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-left::before {\\n width: 95%;\\n}\\n.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-left::after {\\n width: 5%;\\n}\\n.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-right::before {\\n width: 5%;\\n}\\n.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-right::after {\\n width: 95%;\\n}\\n.foldActive {\\n display: block;\\n}\\n.foldInactive {\\n display: none;\\n}\\n.foldContainer {\\n display: flex;\\n cursor: pointer;\\n align-items: center;\\n color: rgba(0, 0, 0, 0.65);\\n font-size: 14px;\\n}\\n.foldPrimaryActive {\\n color: var(--bg-color-button-link);\\n}\\n.foldPrimaryActive:hover,\\n.foldPrimaryActive:focus {\\n color: var(--bg-color-button-link-hover);\\n}\\n.foldPrimaryActive.active,\\n.foldPrimaryActive:active {\\n color: var(--bg-color-button-link-pressed);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjZweCIgaGVpZ2h0PSIyNnB4IiB2aWV3Qm94PSIwIDAgMjYgMjYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+5Y2h54mH6L656KeS57uT5p6EL+WPs+S4izwvdGl0bGU+CiAgICA8ZyBpZD0i6aG16Z2iLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CiAgICAgICAgPGcgaWQ9IuaWh+WtlyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIwMDguMDAwMDAwLCAtMTM2Ni4wMDAwMDApIiBzdHJva2U9IiMyMTNBNzkiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgIDxnIGlkPSLor5Xlm77lsZXnpLotMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM0LjAwMDAwMCwgMTEwMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSLnu5/orqHljaHniYciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4LjAwMDAwMCwgMTMwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xODU3LDE1OSBMMTg1NywxNDAgQzE4NTcsMTM3LjIzODU3NiAxODU5LjIzODU4LDEzNSAxODYyLDEzNSBMMTg4MSwxMzUgTDE4ODEsMTM1IiBpZD0i5Y2h54mH6L656KeS57uT5p6EL+WPs+S4iyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTg2OS4wMDAwMDAsIDE0Ny4wMDAwMDApIHNjYWxlKC0xLCAtMSkgdHJhbnNsYXRlKC0xODY5LjAwMDAwMCwgLTE0Ny4wMDAwMDApICI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../images/card-bg-top-left.svg\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = require(\"../images/card-bg-top-right.svg\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = require(\"../images/card-bg-bottom-right.svg\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = require(\"../images/card-bg-bottom-left.svg\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.ant-card {\\n box-sizing: border-box;\\n margin: 0;\\n padding: 0;\\n color: var(--antd-text-color);\\n font-size: 14px;\\n font-variant: tabular-nums;\\n line-height: 1.5715;\\n list-style: none;\\n font-feature-settings: 'tnum';\\n position: relative;\\n background: var(--antd-card-background);\\n border-radius: 6px;\\n}\\n.ant-card-rtl {\\n direction: rtl;\\n}\\n.ant-card-hoverable {\\n cursor: pointer;\\n transition: box-shadow 0.3s, border-color 0.3s;\\n}\\n.ant-card-hoverable:hover {\\n border-color: transparent;\\n box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.15);\\n}\\n.ant-card-bordered {\\n border: 1px solid var(--antd-border-color-split);\\n}\\n.ant-card-head {\\n min-height: 48px;\\n margin-bottom: -1px;\\n padding: 0 20px;\\n color: var(--antd-heading-color);\\n font-weight: 500;\\n font-size: 16px;\\n background: transparent;\\n border-bottom: 1px solid var(--antd-border-color-split);\\n border-radius: 6px 6px 0 0;\\n}\\n.ant-card-head::before {\\n display: table;\\n content: '';\\n}\\n.ant-card-head::after {\\n display: table;\\n clear: both;\\n content: '';\\n}\\n.ant-card-head-wrapper {\\n display: flex;\\n align-items: center;\\n}\\n.ant-card-head-title {\\n display: inline-block;\\n flex: 1;\\n padding: 12px 0;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.ant-card-head-title > .ant-typography,\\n.ant-card-head-title > .ant-typography-edit-content {\\n left: 0;\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.ant-card-head .ant-tabs {\\n clear: both;\\n margin-bottom: -17px;\\n color: var(--antd-text-color);\\n font-weight: normal;\\n font-size: 14px;\\n}\\n.ant-card-head .ant-tabs-bar {\\n border-bottom: 1px solid var(--antd-border-color-split);\\n}\\n.ant-card-extra {\\n float: right;\\n margin-left: auto;\\n padding: 12px 0;\\n color: var(--antd-text-color);\\n font-weight: normal;\\n font-size: 14px;\\n}\\n.ant-card-rtl .ant-card-extra {\\n margin-right: auto;\\n margin-left: 0;\\n}\\n.ant-card-body {\\n padding: 20px;\\n}\\n.ant-card-body::before {\\n display: table;\\n content: '';\\n}\\n.ant-card-body::after {\\n display: table;\\n clear: both;\\n content: '';\\n}\\n.ant-card-contain-grid:not(.ant-card-loading) .ant-card-body {\\n margin: -1px 0 0 -1px;\\n padding: 0;\\n}\\n.ant-card-grid {\\n float: left;\\n width: 33.33%;\\n padding: 20px;\\n border: 0;\\n border-radius: 0;\\n box-shadow: 1px 0 0 0 var(--antd-border-color-split), 0 1px 0 0 var(--antd-border-color-split), 1px 1px 0 0 var(--antd-border-color-split), 1px 0 0 0 var(--antd-border-color-split) inset, 0 1px 0 0 var(--antd-border-color-split) inset;\\n transition: all 0.3s;\\n}\\n.ant-card-rtl .ant-card-grid {\\n float: right;\\n}\\n.ant-card-grid-hoverable:hover {\\n position: relative;\\n z-index: 1;\\n box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.15);\\n}\\n.ant-card-contain-tabs > .ant-card-head .ant-card-head-title {\\n min-height: 36px;\\n padding-bottom: 0;\\n}\\n.ant-card-contain-tabs > .ant-card-head .ant-card-extra {\\n padding-bottom: 0;\\n}\\n.ant-card-bordered .ant-card-cover {\\n margin-top: -1px;\\n margin-right: -1px;\\n margin-left: -1px;\\n}\\n.ant-card-cover > * {\\n display: block;\\n width: 100%;\\n}\\n.ant-card-cover img {\\n border-radius: 6px 6px 0 0;\\n}\\n.ant-card-actions {\\n margin: 0;\\n padding: 0;\\n list-style: none;\\n background: var(--antd-component-background);\\n border-top: 1px solid var(--antd-border-color-split);\\n}\\n.ant-card-actions::before {\\n display: table;\\n content: '';\\n}\\n.ant-card-actions::after {\\n display: table;\\n clear: both;\\n content: '';\\n}\\n.ant-card-actions > li {\\n float: left;\\n margin: 12px 0;\\n color: var(--antd-text-color-secondary);\\n text-align: center;\\n}\\n.ant-card-rtl .ant-card-actions > li {\\n float: right;\\n}\\n.ant-card-actions > li > span {\\n position: relative;\\n display: block;\\n min-width: 32px;\\n font-size: 14px;\\n line-height: 1.5715;\\n cursor: pointer;\\n}\\n.ant-card-actions > li > span:hover {\\n color: #0071eb;\\n transition: color 0.3s;\\n}\\n.ant-card-actions > li > span a:not(.ant-btn),\\n.ant-card-actions > li > span > .anticon {\\n display: inline-block;\\n width: 100%;\\n color: var(--antd-text-color-secondary);\\n line-height: 22px;\\n transition: color 0.3s;\\n}\\n.ant-card-actions > li > span a:not(.ant-btn):hover,\\n.ant-card-actions > li > span > .anticon:hover {\\n color: #0071eb;\\n}\\n.ant-card-actions > li > span > .anticon {\\n font-size: 16px;\\n line-height: 22px;\\n}\\n.ant-card-actions > li:not(:last-child) {\\n border-right: 1px solid var(--antd-border-color-split);\\n}\\n.ant-card-rtl .ant-card-actions > li:not(:last-child) {\\n border-right: none;\\n border-left: 1px solid var(--antd-border-color-split);\\n}\\n.ant-card-type-inner .ant-card-head {\\n padding: 0 20px;\\n background: var(--antd-background-color-light);\\n}\\n.ant-card-type-inner .ant-card-head-title {\\n padding: 12px 0;\\n font-size: 14px;\\n}\\n.ant-card-type-inner .ant-card-body {\\n padding: 16px 20px;\\n}\\n.ant-card-type-inner .ant-card-extra {\\n padding: 13.5px 0;\\n}\\n.ant-card-meta {\\n margin: -4px 0;\\n}\\n.ant-card-meta::before {\\n display: table;\\n content: '';\\n}\\n.ant-card-meta::after {\\n display: table;\\n clear: both;\\n content: '';\\n}\\n.ant-card-meta-avatar {\\n float: left;\\n padding-right: 16px;\\n}\\n.ant-card-rtl .ant-card-meta-avatar {\\n float: right;\\n padding-right: 0;\\n padding-left: 16px;\\n}\\n.ant-card-meta-detail {\\n overflow: hidden;\\n}\\n.ant-card-meta-detail > div:not(:last-child) {\\n margin-bottom: 8px;\\n}\\n.ant-card-meta-title {\\n overflow: hidden;\\n color: var(--antd-heading-color);\\n font-weight: 500;\\n font-size: 16px;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.ant-card-meta-description {\\n color: var(--antd-text-color-secondary);\\n}\\n.ant-card-loading {\\n overflow: hidden;\\n}\\n.ant-card-loading .ant-card-body {\\n user-select: none;\\n}\\n.ant-card-loading-content p {\\n margin: 0;\\n}\\n.ant-card-loading-block {\\n height: 14px;\\n margin: 4px 0;\\n background: linear-gradient(90deg, rgba(207, 216, 220, 0.2), rgba(207, 216, 220, 0.4), rgba(207, 216, 220, 0.2));\\n background-size: 600% 600%;\\n border-radius: 6px;\\n animation: card-loading 1.4s ease infinite;\\n}\\n@keyframes card-loading {\\n 0%,\\n 100% {\\n background-position: 0 50%;\\n }\\n 50% {\\n background-position: 100% 50%;\\n }\\n}\\n.ant-card-small > .ant-card-head {\\n min-height: 36px;\\n padding: 0 10px;\\n font-size: 14px;\\n}\\n.ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-head-title {\\n padding: 6px 0;\\n}\\n.ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-extra {\\n padding: 6px 0;\\n font-size: 14px;\\n}\\n.ant-card-small > .ant-card-body {\\n padding: 10px;\\n}\\n.ant-btn {\\n line-height: 1.5715;\\n position: relative;\\n display: inline-block;\\n font-weight: 400;\\n white-space: nowrap;\\n text-align: center;\\n background-image: none;\\n border: 1px solid transparent;\\n box-shadow: none;\\n cursor: pointer;\\n transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n user-select: none;\\n touch-action: manipulation;\\n height: 32px;\\n padding: 4px 15px;\\n font-size: 14px;\\n border-radius: 6px;\\n color: var(--antd-btn-default-color);\\n background: var(--antd-btn-default-bg);\\n border-color: var(--antd-border-color-base);\\n}\\n.ant-btn > .anticon {\\n line-height: 1;\\n}\\n.ant-btn,\\n.ant-btn:active,\\n.ant-btn:focus {\\n outline: 0;\\n}\\n.ant-btn:not([disabled]):hover {\\n text-decoration: none;\\n}\\n.ant-btn:not([disabled]):active {\\n outline: 0;\\n box-shadow: none;\\n}\\n.ant-btn[disabled] {\\n cursor: not-allowed;\\n}\\n.ant-btn[disabled] > * {\\n pointer-events: none;\\n}\\n.ant-btn-lg {\\n height: 40px;\\n padding: 6.4px 15px;\\n font-size: 16px;\\n border-radius: 6px;\\n}\\n.ant-btn-sm {\\n height: 28px;\\n padding: 2px 7px;\\n font-size: 14px;\\n border-radius: 6px;\\n}\\n.ant-btn > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn:hover,\\n.ant-btn:focus {\\n color: #2893f7;\\n background: var(--antd-btn-default-bg);\\n border-color: #2893f7;\\n}\\n.ant-btn:hover > a:only-child,\\n.ant-btn:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn:hover > a:only-child::after,\\n.ant-btn:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn:active {\\n color: #0058c4;\\n background: var(--antd-btn-default-bg);\\n border-color: #0058c4;\\n}\\n.ant-btn:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn[disabled],\\n.ant-btn[disabled]:hover,\\n.ant-btn[disabled]:focus,\\n.ant-btn[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn[disabled] > a:only-child,\\n.ant-btn[disabled]:hover > a:only-child,\\n.ant-btn[disabled]:focus > a:only-child,\\n.ant-btn[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn[disabled] > a:only-child::after,\\n.ant-btn[disabled]:hover > a:only-child::after,\\n.ant-btn[disabled]:focus > a:only-child::after,\\n.ant-btn[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn:hover,\\n.ant-btn:focus,\\n.ant-btn:active {\\n text-decoration: none;\\n background: var(--antd-btn-default-bg);\\n}\\n.ant-btn > span {\\n display: inline-block;\\n}\\n.ant-btn-primary {\\n color: #fff;\\n background: #0071eb;\\n border-color: #0071eb;\\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\\n}\\n.ant-btn-primary > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-primary > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-primary:hover,\\n.ant-btn-primary:focus {\\n color: #fff;\\n background: #2893f7;\\n border-color: #2893f7;\\n}\\n.ant-btn-primary:hover > a:only-child,\\n.ant-btn-primary:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-primary:hover > a:only-child::after,\\n.ant-btn-primary:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-primary:active {\\n color: #fff;\\n background: #0058c4;\\n border-color: #0058c4;\\n}\\n.ant-btn-primary:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-primary:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-primary[disabled],\\n.ant-btn-primary[disabled]:hover,\\n.ant-btn-primary[disabled]:focus,\\n.ant-btn-primary[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-primary[disabled] > a:only-child,\\n.ant-btn-primary[disabled]:hover > a:only-child,\\n.ant-btn-primary[disabled]:focus > a:only-child,\\n.ant-btn-primary[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-primary[disabled] > a:only-child::after,\\n.ant-btn-primary[disabled]:hover > a:only-child::after,\\n.ant-btn-primary[disabled]:focus > a:only-child::after,\\n.ant-btn-primary[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) {\\n border-right-color: #2893f7;\\n border-left-color: #2893f7;\\n}\\n.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled {\\n border-color: var(--antd-border-color-base);\\n}\\n.ant-btn-group .ant-btn-primary:first-child:not(:last-child) {\\n border-right-color: #2893f7;\\n}\\n.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] {\\n border-right-color: var(--antd-border-color-base);\\n}\\n.ant-btn-group .ant-btn-primary:last-child:not(:first-child),\\n.ant-btn-group .ant-btn-primary + .ant-btn-primary {\\n border-left-color: #2893f7;\\n}\\n.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],\\n.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {\\n border-left-color: var(--antd-border-color-base);\\n}\\n.ant-btn-ghost {\\n color: var(--antd-text-color);\\n background: transparent;\\n border-color: var(--antd-border-color-base);\\n}\\n.ant-btn-ghost > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-ghost > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-ghost:hover,\\n.ant-btn-ghost:focus {\\n color: #2893f7;\\n background: transparent;\\n border-color: #2893f7;\\n}\\n.ant-btn-ghost:hover > a:only-child,\\n.ant-btn-ghost:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-ghost:hover > a:only-child::after,\\n.ant-btn-ghost:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-ghost:active {\\n color: #0058c4;\\n background: transparent;\\n border-color: #0058c4;\\n}\\n.ant-btn-ghost:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-ghost:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-ghost[disabled],\\n.ant-btn-ghost[disabled]:hover,\\n.ant-btn-ghost[disabled]:focus,\\n.ant-btn-ghost[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-ghost[disabled] > a:only-child,\\n.ant-btn-ghost[disabled]:hover > a:only-child,\\n.ant-btn-ghost[disabled]:focus > a:only-child,\\n.ant-btn-ghost[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-ghost[disabled] > a:only-child::after,\\n.ant-btn-ghost[disabled]:hover > a:only-child::after,\\n.ant-btn-ghost[disabled]:focus > a:only-child::after,\\n.ant-btn-ghost[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dashed {\\n color: var(--antd-btn-default-color);\\n background: var(--antd-btn-default-bg);\\n border-color: var(--antd-border-color-base);\\n border-style: dashed;\\n}\\n.ant-btn-dashed > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dashed > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dashed:hover,\\n.ant-btn-dashed:focus {\\n color: #2893f7;\\n background: var(--antd-btn-default-bg);\\n border-color: #2893f7;\\n}\\n.ant-btn-dashed:hover > a:only-child,\\n.ant-btn-dashed:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dashed:hover > a:only-child::after,\\n.ant-btn-dashed:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dashed:active {\\n color: #0058c4;\\n background: var(--antd-btn-default-bg);\\n border-color: #0058c4;\\n}\\n.ant-btn-dashed:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dashed:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dashed[disabled],\\n.ant-btn-dashed[disabled]:hover,\\n.ant-btn-dashed[disabled]:focus,\\n.ant-btn-dashed[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dashed[disabled] > a:only-child,\\n.ant-btn-dashed[disabled]:hover > a:only-child,\\n.ant-btn-dashed[disabled]:focus > a:only-child,\\n.ant-btn-dashed[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dashed[disabled] > a:only-child::after,\\n.ant-btn-dashed[disabled]:hover > a:only-child::after,\\n.ant-btn-dashed[disabled]:focus > a:only-child::after,\\n.ant-btn-dashed[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-danger {\\n color: #fff;\\n background: #f0493c;\\n border-color: #f0493c;\\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\\n}\\n.ant-btn-danger > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-danger > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-danger:hover,\\n.ant-btn-danger:focus {\\n color: #fff;\\n background: #fc7668;\\n border-color: #fc7668;\\n}\\n.ant-btn-danger:hover > a:only-child,\\n.ant-btn-danger:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-danger:hover > a:only-child::after,\\n.ant-btn-danger:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-danger:active {\\n color: #fff;\\n background: #c92e28;\\n border-color: #c92e28;\\n}\\n.ant-btn-danger:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-danger:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-danger[disabled],\\n.ant-btn-danger[disabled]:hover,\\n.ant-btn-danger[disabled]:focus,\\n.ant-btn-danger[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-danger[disabled] > a:only-child,\\n.ant-btn-danger[disabled]:hover > a:only-child,\\n.ant-btn-danger[disabled]:focus > a:only-child,\\n.ant-btn-danger[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-danger[disabled] > a:only-child::after,\\n.ant-btn-danger[disabled]:hover > a:only-child::after,\\n.ant-btn-danger[disabled]:focus > a:only-child::after,\\n.ant-btn-danger[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-link {\\n color: var(--antd-link-color);\\n background: transparent;\\n border-color: transparent;\\n box-shadow: none;\\n}\\n.ant-btn-link > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-link > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-link:hover,\\n.ant-btn-link:focus {\\n color: #2893f7;\\n background: transparent;\\n border-color: #2893f7;\\n}\\n.ant-btn-link:hover > a:only-child,\\n.ant-btn-link:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-link:hover > a:only-child::after,\\n.ant-btn-link:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-link:active {\\n color: #0058c4;\\n background: transparent;\\n border-color: #0058c4;\\n}\\n.ant-btn-link:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-link:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-link[disabled],\\n.ant-btn-link[disabled]:hover,\\n.ant-btn-link[disabled]:focus,\\n.ant-btn-link[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-link[disabled] > a:only-child,\\n.ant-btn-link[disabled]:hover > a:only-child,\\n.ant-btn-link[disabled]:focus > a:only-child,\\n.ant-btn-link[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-link[disabled] > a:only-child::after,\\n.ant-btn-link[disabled]:hover > a:only-child::after,\\n.ant-btn-link[disabled]:focus > a:only-child::after,\\n.ant-btn-link[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-link:hover {\\n background: transparent;\\n}\\n.ant-btn-link:hover,\\n.ant-btn-link:focus,\\n.ant-btn-link:active {\\n border-color: transparent;\\n}\\n.ant-btn-link[disabled],\\n.ant-btn-link[disabled]:hover,\\n.ant-btn-link[disabled]:focus,\\n.ant-btn-link[disabled]:active {\\n color: var(--text-color-disabled);\\n background: transparent;\\n border-color: transparent;\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-link[disabled] > a:only-child,\\n.ant-btn-link[disabled]:hover > a:only-child,\\n.ant-btn-link[disabled]:focus > a:only-child,\\n.ant-btn-link[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-link[disabled] > a:only-child::after,\\n.ant-btn-link[disabled]:hover > a:only-child::after,\\n.ant-btn-link[disabled]:focus > a:only-child::after,\\n.ant-btn-link[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-text {\\n color: var(--antd-text-color);\\n background: transparent;\\n border-color: transparent;\\n box-shadow: none;\\n}\\n.ant-btn-text > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-text > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-text:hover,\\n.ant-btn-text:focus {\\n color: #2893f7;\\n background: transparent;\\n border-color: #2893f7;\\n}\\n.ant-btn-text:hover > a:only-child,\\n.ant-btn-text:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-text:hover > a:only-child::after,\\n.ant-btn-text:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-text:active {\\n color: #0058c4;\\n background: transparent;\\n border-color: #0058c4;\\n}\\n.ant-btn-text:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-text:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-text[disabled],\\n.ant-btn-text[disabled]:hover,\\n.ant-btn-text[disabled]:focus,\\n.ant-btn-text[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-text[disabled] > a:only-child,\\n.ant-btn-text[disabled]:hover > a:only-child,\\n.ant-btn-text[disabled]:focus > a:only-child,\\n.ant-btn-text[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-text[disabled] > a:only-child::after,\\n.ant-btn-text[disabled]:hover > a:only-child::after,\\n.ant-btn-text[disabled]:focus > a:only-child::after,\\n.ant-btn-text[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-text:hover,\\n.ant-btn-text:focus {\\n color: var(--antd-text-color);\\n background: rgba(0, 0, 0, 0.018);\\n border-color: transparent;\\n}\\n.ant-btn-text:active {\\n color: var(--antd-text-color);\\n background: rgba(0, 0, 0, 0.028);\\n border-color: transparent;\\n}\\n.ant-btn-text[disabled],\\n.ant-btn-text[disabled]:hover,\\n.ant-btn-text[disabled]:focus,\\n.ant-btn-text[disabled]:active {\\n color: var(--text-color-disabled);\\n background: transparent;\\n border-color: transparent;\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-text[disabled] > a:only-child,\\n.ant-btn-text[disabled]:hover > a:only-child,\\n.ant-btn-text[disabled]:focus > a:only-child,\\n.ant-btn-text[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-text[disabled] > a:only-child::after,\\n.ant-btn-text[disabled]:hover > a:only-child::after,\\n.ant-btn-text[disabled]:focus > a:only-child::after,\\n.ant-btn-text[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous {\\n color: #ff4d4f;\\n background: var(--antd-btn-default-bg);\\n border-color: #ff4d4f;\\n}\\n.ant-btn-dangerous > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous:hover,\\n.ant-btn-dangerous:focus {\\n color: #ff7875;\\n background: var(--antd-btn-default-bg);\\n border-color: #ff7875;\\n}\\n.ant-btn-dangerous:hover > a:only-child,\\n.ant-btn-dangerous:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous:hover > a:only-child::after,\\n.ant-btn-dangerous:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous:active {\\n color: #d9363e;\\n background: var(--antd-btn-default-bg);\\n border-color: #d9363e;\\n}\\n.ant-btn-dangerous:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous[disabled],\\n.ant-btn-dangerous[disabled]:hover,\\n.ant-btn-dangerous[disabled]:focus,\\n.ant-btn-dangerous[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous[disabled] > a:only-child,\\n.ant-btn-dangerous[disabled]:hover > a:only-child,\\n.ant-btn-dangerous[disabled]:focus > a:only-child,\\n.ant-btn-dangerous[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous[disabled] > a:only-child::after,\\n.ant-btn-dangerous[disabled]:hover > a:only-child::after,\\n.ant-btn-dangerous[disabled]:focus > a:only-child::after,\\n.ant-btn-dangerous[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-primary {\\n color: #fff;\\n background: #f0493c;\\n border-color: #f0493c;\\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\\n}\\n.ant-btn-dangerous.ant-btn-primary > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-primary > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-primary:hover,\\n.ant-btn-dangerous.ant-btn-primary:focus {\\n color: #fff;\\n background: #fc7668;\\n border-color: #fc7668;\\n}\\n.ant-btn-dangerous.ant-btn-primary:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-primary:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-primary:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-primary:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-primary:active {\\n color: #fff;\\n background: #c92e28;\\n border-color: #c92e28;\\n}\\n.ant-btn-dangerous.ant-btn-primary:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-primary:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-primary[disabled],\\n.ant-btn-dangerous.ant-btn-primary[disabled]:hover,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:focus,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-primary[disabled] > a:only-child,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:focus > a:only-child,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-primary[disabled] > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:focus > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link {\\n color: #ff4d4f;\\n background: transparent;\\n border-color: transparent;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-link > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link:hover,\\n.ant-btn-dangerous.ant-btn-link:focus {\\n color: #2893f7;\\n background: transparent;\\n border-color: #2893f7;\\n}\\n.ant-btn-dangerous.ant-btn-link:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-link:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link:active {\\n color: #0058c4;\\n background: transparent;\\n border-color: #0058c4;\\n}\\n.ant-btn-dangerous.ant-btn-link:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link[disabled],\\n.ant-btn-dangerous.ant-btn-link[disabled]:hover,\\n.ant-btn-dangerous.ant-btn-link[disabled]:focus,\\n.ant-btn-dangerous.ant-btn-link[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child,\\n.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child,\\n.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link:hover,\\n.ant-btn-dangerous.ant-btn-link:focus {\\n color: #ff7875;\\n background: transparent;\\n border-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-link:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-link:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link:active {\\n color: #d9363e;\\n background: transparent;\\n border-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-link:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link[disabled],\\n.ant-btn-dangerous.ant-btn-link[disabled]:hover,\\n.ant-btn-dangerous.ant-btn-link[disabled]:focus,\\n.ant-btn-dangerous.ant-btn-link[disabled]:active {\\n color: var(--text-color-disabled);\\n background: transparent;\\n border-color: transparent;\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child,\\n.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child,\\n.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text {\\n color: #ff4d4f;\\n background: transparent;\\n border-color: transparent;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-text > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text:hover,\\n.ant-btn-dangerous.ant-btn-text:focus {\\n color: #2893f7;\\n background: transparent;\\n border-color: #2893f7;\\n}\\n.ant-btn-dangerous.ant-btn-text:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-text:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text:active {\\n color: #0058c4;\\n background: transparent;\\n border-color: #0058c4;\\n}\\n.ant-btn-dangerous.ant-btn-text:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text[disabled],\\n.ant-btn-dangerous.ant-btn-text[disabled]:hover,\\n.ant-btn-dangerous.ant-btn-text[disabled]:focus,\\n.ant-btn-dangerous.ant-btn-text[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child,\\n.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child,\\n.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text:hover,\\n.ant-btn-dangerous.ant-btn-text:focus {\\n color: #ff7875;\\n background: rgba(0, 0, 0, 0.018);\\n border-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-text:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-text:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text:active {\\n color: #d9363e;\\n background: rgba(0, 0, 0, 0.028);\\n border-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-text:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text[disabled],\\n.ant-btn-dangerous.ant-btn-text[disabled]:hover,\\n.ant-btn-dangerous.ant-btn-text[disabled]:focus,\\n.ant-btn-dangerous.ant-btn-text[disabled]:active {\\n color: var(--text-color-disabled);\\n background: transparent;\\n border-color: transparent;\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child,\\n.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child,\\n.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-icon-only {\\n width: 32px;\\n height: 32px;\\n padding: 2.4px 0;\\n font-size: 16px;\\n border-radius: 6px;\\n vertical-align: -1px;\\n}\\n.ant-btn-icon-only > * {\\n font-size: 16px;\\n}\\n.ant-btn-icon-only.ant-btn-lg {\\n width: 40px;\\n height: 40px;\\n padding: 4.9px 0;\\n font-size: 18px;\\n border-radius: 6px;\\n}\\n.ant-btn-icon-only.ant-btn-lg > * {\\n font-size: 18px;\\n}\\n.ant-btn-icon-only.ant-btn-sm {\\n width: 28px;\\n height: 28px;\\n padding: 2px 0;\\n font-size: 14px;\\n border-radius: 6px;\\n}\\n.ant-btn-icon-only.ant-btn-sm > * {\\n font-size: 14px;\\n}\\n.ant-btn-round {\\n height: 32px;\\n padding: 4px 16px;\\n font-size: 14px;\\n border-radius: 32px;\\n}\\n.ant-btn-round.ant-btn-lg {\\n height: 40px;\\n padding: 6.4px 20px;\\n font-size: 16px;\\n border-radius: 40px;\\n}\\n.ant-btn-round.ant-btn-sm {\\n height: 28px;\\n padding: 2px 14px;\\n font-size: 14px;\\n border-radius: 28px;\\n}\\n.ant-btn-round.ant-btn-icon-only {\\n width: auto;\\n}\\n.ant-btn-circle {\\n min-width: 32px;\\n padding-right: 0;\\n padding-left: 0;\\n text-align: center;\\n border-radius: 50%;\\n}\\n.ant-btn-circle.ant-btn-lg {\\n min-width: 40px;\\n border-radius: 50%;\\n}\\n.ant-btn-circle.ant-btn-sm {\\n min-width: 28px;\\n border-radius: 50%;\\n}\\n.ant-btn::before {\\n position: absolute;\\n top: -1px;\\n right: -1px;\\n bottom: -1px;\\n left: -1px;\\n z-index: 1;\\n display: none;\\n background: var(--antd-component-background);\\n border-radius: inherit;\\n opacity: 0.35;\\n transition: opacity 0.2s;\\n content: '';\\n pointer-events: none;\\n}\\n.ant-btn .anticon {\\n transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-btn .anticon.anticon-plus > svg,\\n.ant-btn .anticon.anticon-minus > svg {\\n shape-rendering: optimizeSpeed;\\n}\\n.ant-btn.ant-btn-loading {\\n position: relative;\\n}\\n.ant-btn.ant-btn-loading:not([disabled]) {\\n pointer-events: none;\\n}\\n.ant-btn.ant-btn-loading::before {\\n display: block;\\n}\\n.ant-btn > .ant-btn-loading-icon {\\n transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-btn > .ant-btn-loading-icon .anticon {\\n padding-right: 8px;\\n animation: none;\\n}\\n.ant-btn > .ant-btn-loading-icon .anticon svg {\\n animation: loadingCircle 1s infinite linear;\\n}\\n.ant-btn > .ant-btn-loading-icon:only-child .anticon {\\n padding-right: 0;\\n}\\n.ant-btn-group {\\n position: relative;\\n display: inline-flex;\\n}\\n.ant-btn-group > .ant-btn,\\n.ant-btn-group > span > .ant-btn {\\n position: relative;\\n}\\n.ant-btn-group > .ant-btn:hover,\\n.ant-btn-group > span > .ant-btn:hover,\\n.ant-btn-group > .ant-btn:focus,\\n.ant-btn-group > span > .ant-btn:focus,\\n.ant-btn-group > .ant-btn:active,\\n.ant-btn-group > span > .ant-btn:active {\\n z-index: 2;\\n}\\n.ant-btn-group > .ant-btn[disabled],\\n.ant-btn-group > span > .ant-btn[disabled] {\\n z-index: 0;\\n}\\n.ant-btn-group .ant-btn-icon-only {\\n font-size: 14px;\\n}\\n.ant-btn-group-lg > .ant-btn,\\n.ant-btn-group-lg > span > .ant-btn {\\n height: 40px;\\n padding: 6.4px 15px;\\n font-size: 16px;\\n border-radius: 0;\\n}\\n.ant-btn-group-lg .ant-btn.ant-btn-icon-only {\\n width: 40px;\\n height: 40px;\\n padding-right: 0;\\n padding-left: 0;\\n}\\n.ant-btn-group-sm > .ant-btn,\\n.ant-btn-group-sm > span > .ant-btn {\\n height: 28px;\\n padding: 2px 7px;\\n font-size: 14px;\\n border-radius: 0;\\n}\\n.ant-btn-group-sm > .ant-btn > .anticon,\\n.ant-btn-group-sm > span > .ant-btn > .anticon {\\n font-size: 14px;\\n}\\n.ant-btn-group-sm .ant-btn.ant-btn-icon-only {\\n width: 28px;\\n height: 28px;\\n padding-right: 0;\\n padding-left: 0;\\n}\\n.ant-btn-group .ant-btn + .ant-btn,\\n.ant-btn + .ant-btn-group,\\n.ant-btn-group span + .ant-btn,\\n.ant-btn-group .ant-btn + span,\\n.ant-btn-group > span + span,\\n.ant-btn-group + .ant-btn,\\n.ant-btn-group + .ant-btn-group {\\n margin-left: -1px;\\n}\\n.ant-btn-group .ant-btn-primary + .ant-btn:not(.ant-btn-primary):not([disabled]) {\\n border-left-color: transparent;\\n}\\n.ant-btn-group .ant-btn {\\n border-radius: 0;\\n}\\n.ant-btn-group > .ant-btn:first-child,\\n.ant-btn-group > span:first-child > .ant-btn {\\n margin-left: 0;\\n}\\n.ant-btn-group > .ant-btn:only-child {\\n border-radius: 6px;\\n}\\n.ant-btn-group > span:only-child > .ant-btn {\\n border-radius: 6px;\\n}\\n.ant-btn-group > .ant-btn:first-child:not(:last-child),\\n.ant-btn-group > span:first-child:not(:last-child) > .ant-btn {\\n border-top-left-radius: 6px;\\n border-bottom-left-radius: 6px;\\n}\\n.ant-btn-group > .ant-btn:last-child:not(:first-child),\\n.ant-btn-group > span:last-child:not(:first-child) > .ant-btn {\\n border-top-right-radius: 6px;\\n border-bottom-right-radius: 6px;\\n}\\n.ant-btn-group-sm > .ant-btn:only-child {\\n border-radius: 6px;\\n}\\n.ant-btn-group-sm > span:only-child > .ant-btn {\\n border-radius: 6px;\\n}\\n.ant-btn-group-sm > .ant-btn:first-child:not(:last-child),\\n.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {\\n border-top-left-radius: 6px;\\n border-bottom-left-radius: 6px;\\n}\\n.ant-btn-group-sm > .ant-btn:last-child:not(:first-child),\\n.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {\\n border-top-right-radius: 6px;\\n border-bottom-right-radius: 6px;\\n}\\n.ant-btn-group > .ant-btn-group {\\n float: left;\\n}\\n.ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn {\\n border-radius: 0;\\n}\\n.ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child {\\n padding-right: 8px;\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n.ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child {\\n padding-left: 8px;\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n.ant-btn-rtl.ant-btn-group .ant-btn + .ant-btn,\\n.ant-btn-rtl.ant-btn + .ant-btn-group,\\n.ant-btn-rtl.ant-btn-group span + .ant-btn,\\n.ant-btn-rtl.ant-btn-group .ant-btn + span,\\n.ant-btn-rtl.ant-btn-group > span + span,\\n.ant-btn-rtl.ant-btn-group + .ant-btn,\\n.ant-btn-rtl.ant-btn-group + .ant-btn-group,\\n.ant-btn-group-rtl.ant-btn-group .ant-btn + .ant-btn,\\n.ant-btn-group-rtl.ant-btn + .ant-btn-group,\\n.ant-btn-group-rtl.ant-btn-group span + .ant-btn,\\n.ant-btn-group-rtl.ant-btn-group .ant-btn + span,\\n.ant-btn-group-rtl.ant-btn-group > span + span,\\n.ant-btn-group-rtl.ant-btn-group + .ant-btn,\\n.ant-btn-group-rtl.ant-btn-group + .ant-btn-group {\\n margin-right: -1px;\\n margin-left: auto;\\n}\\n.ant-btn-group.ant-btn-group-rtl {\\n direction: rtl;\\n}\\n.ant-btn-group-rtl.ant-btn-group > .ant-btn:first-child:not(:last-child),\\n.ant-btn-group-rtl.ant-btn-group > span:first-child:not(:last-child) > .ant-btn {\\n border-top-left-radius: 0;\\n border-top-right-radius: 6px;\\n border-bottom-right-radius: 6px;\\n border-bottom-left-radius: 0;\\n}\\n.ant-btn-group-rtl.ant-btn-group > .ant-btn:last-child:not(:first-child),\\n.ant-btn-group-rtl.ant-btn-group > span:last-child:not(:first-child) > .ant-btn {\\n border-top-left-radius: 6px;\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 6px;\\n}\\n.ant-btn-group-rtl.ant-btn-group-sm > .ant-btn:first-child:not(:last-child),\\n.ant-btn-group-rtl.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {\\n border-top-left-radius: 0;\\n border-top-right-radius: 6px;\\n border-bottom-right-radius: 6px;\\n border-bottom-left-radius: 0;\\n}\\n.ant-btn-group-rtl.ant-btn-group-sm > .ant-btn:last-child:not(:first-child),\\n.ant-btn-group-rtl.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {\\n border-top-left-radius: 6px;\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 6px;\\n}\\n.ant-btn:focus > span,\\n.ant-btn:active > span {\\n position: relative;\\n}\\n.ant-btn > .anticon + span,\\n.ant-btn > span + .anticon {\\n margin-left: 8px;\\n}\\n.ant-btn-background-ghost {\\n color: var(--antd-component-background);\\n background: transparent !important;\\n border-color: var(--antd-component-background);\\n}\\n.ant-btn-background-ghost.ant-btn-primary {\\n color: #0071eb;\\n background: transparent;\\n border-color: #0071eb;\\n text-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-primary > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-primary > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-primary:hover,\\n.ant-btn-background-ghost.ant-btn-primary:focus {\\n color: #2893f7;\\n background: transparent;\\n border-color: #2893f7;\\n}\\n.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-primary:active {\\n color: #0058c4;\\n background: transparent;\\n border-color: #0058c4;\\n}\\n.ant-btn-background-ghost.ant-btn-primary:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-primary:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-primary[disabled],\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:hover,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:focus,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-danger {\\n color: #f0493c;\\n background: transparent;\\n border-color: #f0493c;\\n text-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-danger > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-danger > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-danger:hover,\\n.ant-btn-background-ghost.ant-btn-danger:focus {\\n color: #fc7668;\\n background: transparent;\\n border-color: #fc7668;\\n}\\n.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-danger:active {\\n color: #c92e28;\\n background: transparent;\\n border-color: #c92e28;\\n}\\n.ant-btn-background-ghost.ant-btn-danger:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-danger:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-danger[disabled],\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:hover,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:focus,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous {\\n color: #f0493c;\\n background: transparent;\\n border-color: #f0493c;\\n text-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous:hover,\\n.ant-btn-background-ghost.ant-btn-dangerous:focus {\\n color: #fc7668;\\n background: transparent;\\n border-color: #fc7668;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous:active {\\n color: #c92e28;\\n background: transparent;\\n border-color: #c92e28;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled],\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled] > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled] > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link {\\n color: #f0493c;\\n background: transparent;\\n border-color: transparent;\\n text-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus {\\n color: #fc7668;\\n background: transparent;\\n border-color: transparent;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active {\\n color: #c92e28;\\n background: transparent;\\n border-color: transparent;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled],\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-two-chinese-chars::first-letter {\\n letter-spacing: 0.34em;\\n}\\n.ant-btn-two-chinese-chars > *:not(.anticon) {\\n margin-right: -0.34em;\\n letter-spacing: 0.34em;\\n}\\n.ant-btn-block {\\n width: 100%;\\n}\\n.ant-btn:empty {\\n display: inline-block;\\n width: 0;\\n visibility: hidden;\\n content: '\\\\a0';\\n}\\na.ant-btn {\\n padding-top: 0.1px;\\n line-height: 30px;\\n}\\na.ant-btn-lg {\\n line-height: 38px;\\n}\\na.ant-btn-sm {\\n line-height: 26px;\\n}\\n.ant-btn-rtl {\\n direction: rtl;\\n}\\n.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child),\\n.ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary {\\n border-right-color: #2893f7;\\n border-left-color: var(--antd-border-color-base);\\n}\\n.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],\\n.ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {\\n border-right-color: var(--antd-border-color-base);\\n border-left-color: #2893f7;\\n}\\n.ant-btn-rtl.ant-btn > .ant-btn-loading-icon .anticon {\\n padding-right: 0;\\n padding-left: 8px;\\n}\\n.ant-btn > .ant-btn-loading-icon:only-child .anticon {\\n padding-right: 0;\\n padding-left: 0;\\n}\\n.ant-btn-rtl.ant-btn > .anticon + span,\\n.ant-btn-rtl.ant-btn > span + .anticon {\\n margin-right: 8px;\\n margin-left: 0;\\n}\\n.ant-tooltip {\\n box-sizing: border-box;\\n margin: 0;\\n padding: 0;\\n color: var(--antd-text-color);\\n font-size: 14px;\\n font-variant: tabular-nums;\\n line-height: 1.5715;\\n list-style: none;\\n font-feature-settings: 'tnum';\\n position: absolute;\\n z-index: 1070;\\n display: block;\\n max-width: 250px;\\n visibility: visible;\\n}\\n.ant-tooltip-hidden {\\n display: none;\\n}\\n.ant-tooltip-placement-top,\\n.ant-tooltip-placement-topLeft,\\n.ant-tooltip-placement-topRight {\\n padding-bottom: 8px;\\n}\\n.ant-tooltip-placement-right,\\n.ant-tooltip-placement-rightTop,\\n.ant-tooltip-placement-rightBottom {\\n padding-left: 8px;\\n}\\n.ant-tooltip-placement-bottom,\\n.ant-tooltip-placement-bottomLeft,\\n.ant-tooltip-placement-bottomRight {\\n padding-top: 8px;\\n}\\n.ant-tooltip-placement-left,\\n.ant-tooltip-placement-leftTop,\\n.ant-tooltip-placement-leftBottom {\\n padding-right: 8px;\\n}\\n.ant-tooltip-inner {\\n min-width: 30px;\\n min-height: 32px;\\n padding: 6px 8px;\\n color: #fff;\\n text-align: left;\\n text-decoration: none;\\n word-wrap: break-word;\\n background-color: rgba(0, 0, 0, 0.75);\\n border-radius: 6px;\\n box-shadow: var(--antd-box-shadow-base);\\n}\\n.ant-tooltip-arrow {\\n position: absolute;\\n display: block;\\n width: 13.07106781px;\\n height: 13.07106781px;\\n overflow: hidden;\\n background: transparent;\\n pointer-events: none;\\n}\\n.ant-tooltip-arrow-content {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n display: block;\\n width: 5px;\\n height: 5px;\\n margin: auto;\\n background-color: rgba(0, 0, 0, 0.75);\\n content: '';\\n pointer-events: auto;\\n}\\n.ant-tooltip-placement-top .ant-tooltip-arrow,\\n.ant-tooltip-placement-topLeft .ant-tooltip-arrow,\\n.ant-tooltip-placement-topRight .ant-tooltip-arrow {\\n bottom: -5.07106781px;\\n}\\n.ant-tooltip-placement-top .ant-tooltip-arrow-content,\\n.ant-tooltip-placement-topLeft .ant-tooltip-arrow-content,\\n.ant-tooltip-placement-topRight .ant-tooltip-arrow-content {\\n box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);\\n transform: translateY(-6.53553391px) rotate(45deg);\\n}\\n.ant-tooltip-placement-top .ant-tooltip-arrow {\\n left: 50%;\\n transform: translateX(-50%);\\n}\\n.ant-tooltip-placement-topLeft .ant-tooltip-arrow {\\n left: 13px;\\n}\\n.ant-tooltip-placement-topRight .ant-tooltip-arrow {\\n right: 13px;\\n}\\n.ant-tooltip-placement-right .ant-tooltip-arrow,\\n.ant-tooltip-placement-rightTop .ant-tooltip-arrow,\\n.ant-tooltip-placement-rightBottom .ant-tooltip-arrow {\\n left: -5.07106781px;\\n}\\n.ant-tooltip-placement-right .ant-tooltip-arrow-content,\\n.ant-tooltip-placement-rightTop .ant-tooltip-arrow-content,\\n.ant-tooltip-placement-rightBottom .ant-tooltip-arrow-content {\\n box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);\\n transform: translateX(6.53553391px) rotate(45deg);\\n}\\n.ant-tooltip-placement-right .ant-tooltip-arrow {\\n top: 50%;\\n transform: translateY(-50%);\\n}\\n.ant-tooltip-placement-rightTop .ant-tooltip-arrow {\\n top: 5px;\\n}\\n.ant-tooltip-placement-rightBottom .ant-tooltip-arrow {\\n bottom: 5px;\\n}\\n.ant-tooltip-placement-left .ant-tooltip-arrow,\\n.ant-tooltip-placement-leftTop .ant-tooltip-arrow,\\n.ant-tooltip-placement-leftBottom .ant-tooltip-arrow {\\n right: -5.07106781px;\\n}\\n.ant-tooltip-placement-left .ant-tooltip-arrow-content,\\n.ant-tooltip-placement-leftTop .ant-tooltip-arrow-content,\\n.ant-tooltip-placement-leftBottom .ant-tooltip-arrow-content {\\n box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07);\\n transform: translateX(-6.53553391px) rotate(45deg);\\n}\\n.ant-tooltip-placement-left .ant-tooltip-arrow {\\n top: 50%;\\n transform: translateY(-50%);\\n}\\n.ant-tooltip-placement-leftTop .ant-tooltip-arrow {\\n top: 5px;\\n}\\n.ant-tooltip-placement-leftBottom .ant-tooltip-arrow {\\n bottom: 5px;\\n}\\n.ant-tooltip-placement-bottom .ant-tooltip-arrow,\\n.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow,\\n.ant-tooltip-placement-bottomRight .ant-tooltip-arrow {\\n top: -5.07106781px;\\n}\\n.ant-tooltip-placement-bottom .ant-tooltip-arrow-content,\\n.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow-content,\\n.ant-tooltip-placement-bottomRight .ant-tooltip-arrow-content {\\n box-shadow: -3px -3px 7px rgba(0, 0, 0, 0.07);\\n transform: translateY(6.53553391px) rotate(45deg);\\n}\\n.ant-tooltip-placement-bottom .ant-tooltip-arrow {\\n left: 50%;\\n transform: translateX(-50%);\\n}\\n.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow {\\n left: 13px;\\n}\\n.ant-tooltip-placement-bottomRight .ant-tooltip-arrow {\\n right: 13px;\\n}\\n.ant-tooltip-pink .ant-tooltip-inner {\\n background-color: #eb2f96;\\n}\\n.ant-tooltip-pink .ant-tooltip-arrow-content {\\n background-color: #eb2f96;\\n}\\n.ant-tooltip-magenta .ant-tooltip-inner {\\n background-color: #eb2f96;\\n}\\n.ant-tooltip-magenta .ant-tooltip-arrow-content {\\n background-color: #eb2f96;\\n}\\n.ant-tooltip-red .ant-tooltip-inner {\\n background-color: #f5222d;\\n}\\n.ant-tooltip-red .ant-tooltip-arrow-content {\\n background-color: #f5222d;\\n}\\n.ant-tooltip-volcano .ant-tooltip-inner {\\n background-color: #fa541c;\\n}\\n.ant-tooltip-volcano .ant-tooltip-arrow-content {\\n background-color: #fa541c;\\n}\\n.ant-tooltip-orange .ant-tooltip-inner {\\n background-color: #fa8c16;\\n}\\n.ant-tooltip-orange .ant-tooltip-arrow-content {\\n background-color: #fa8c16;\\n}\\n.ant-tooltip-yellow .ant-tooltip-inner {\\n background-color: #fadb14;\\n}\\n.ant-tooltip-yellow .ant-tooltip-arrow-content {\\n background-color: #fadb14;\\n}\\n.ant-tooltip-gold .ant-tooltip-inner {\\n background-color: #faad14;\\n}\\n.ant-tooltip-gold .ant-tooltip-arrow-content {\\n background-color: #faad14;\\n}\\n.ant-tooltip-cyan .ant-tooltip-inner {\\n background-color: #13c2c2;\\n}\\n.ant-tooltip-cyan .ant-tooltip-arrow-content {\\n background-color: #13c2c2;\\n}\\n.ant-tooltip-lime .ant-tooltip-inner {\\n background-color: #a0d911;\\n}\\n.ant-tooltip-lime .ant-tooltip-arrow-content {\\n background-color: #a0d911;\\n}\\n.ant-tooltip-green .ant-tooltip-inner {\\n background-color: #52c41a;\\n}\\n.ant-tooltip-green .ant-tooltip-arrow-content {\\n background-color: #52c41a;\\n}\\n.ant-tooltip-blue .ant-tooltip-inner {\\n background-color: #0071eb;\\n}\\n.ant-tooltip-blue .ant-tooltip-arrow-content {\\n background-color: #0071eb;\\n}\\n.ant-tooltip-geekblue .ant-tooltip-inner {\\n background-color: #2f54eb;\\n}\\n.ant-tooltip-geekblue .ant-tooltip-arrow-content {\\n background-color: #2f54eb;\\n}\\n.ant-tooltip-purple .ant-tooltip-inner {\\n background-color: #722ed1;\\n}\\n.ant-tooltip-purple .ant-tooltip-arrow-content {\\n background-color: #722ed1;\\n}\\n.ant-tooltip-rtl {\\n direction: rtl;\\n}\\n.ant-tooltip-rtl .ant-tooltip-inner {\\n text-align: right;\\n}\\n.ant-btn {\\n transition: initial;\\n}\\n.ant-btn-primary {\\n background-image: linear-gradient(45deg, #0071eb 0%, #65b2ff 100%);\\n background-origin: border-box;\\n border-color: transparent;\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-primary[disabled] {\\n background-image: none;\\n}\\n.ant-btn-primary:hover,\\n.ant-btn-primary:focus {\\n background-color: var(--bg-color-button-primary-hover);\\n border-color: var(--bg-color-button-primary-hover);\\n}\\n.ant-btn-primary.active,\\n.ant-btn-primary:active {\\n background-color: var(--bg-color-button-primary-pressed);\\n border-color: var(--bg-color-button-primary-pressed);\\n}\\n.ant-btn-danger {\\n background-image: linear-gradient(45deg, #f0493c 0%, #fc796f 100%);\\n background-origin: border-box;\\n border-color: transparent;\\n}\\n.ant-btn-danger[disabled] {\\n background-image: none;\\n}\\n.ant-btn-danger:hover,\\n.ant-btn-danger:focus {\\n background-color: var(--bg-color-button-danger-hover);\\n border-color: var(--bg-color-button-danger-hover);\\n}\\n.ant-btn-danger.active,\\n.ant-btn-danger:active {\\n background-color: var(--bg-color-button-danger-pressed);\\n border-color: var(--bg-color-button-danger-pressed);\\n}\\n.ant-btn-default:hover,\\n.ant-btn-default:focus {\\n color: var(--antd-btn-default-hover-color);\\n border-color: var(--antd-btn-default-hover-border-color);\\n}\\n.ant-btn-default.active,\\n.ant-btn-default:active {\\n color: var(--antd-btn-default-active-color);\\n border-color: var(--antd-btn-default-active-border-color);\\n}\\n.ant-btn-link:hover,\\n.ant-btn-link:focus {\\n color: var(--bg-color-button-link-hover);\\n}\\n.ant-btn-link.active,\\n.ant-btn-link:active {\\n color: var(--bg-color-button-link-pressed);\\n}\\n.ant-btn-text {\\n color: var(--antd-btn-default-color);\\n}\\n.ant-btn-text:hover,\\n.ant-btn-text:focus {\\n color: var(--bg-color-button-link-hover);\\n background-color: transparent;\\n}\\n.ant-btn-text.active,\\n.ant-btn-text:active {\\n color: var(--bg-color-button-link-pressed);\\n background-color: transparent;\\n}\\n.ant-btn-circle.ant-btn-sm {\\n min-width: 28px;\\n}\\nhtml[data-theme=\\\"dark\\\"] .ant-btn-primary {\\n background-image: none;\\n}\\n.ant-card {\\n box-shadow: var(--card-default-box-shadow);\\n transition: var(--card-transition);\\n}\\n.ant-card-bordered {\\n border: var(--card-inner-border);\\n border-radius: var(--card-inner-border-radius);\\n}\\n.ant-card-head {\\n border-bottom-color: var(--antd-card-head-border-bottom-color);\\n}\\n:host {\\n display: block;\\n}\\n:host([hidden]) {\\n display: none;\\n}\\n.generalCardContainer .ant-card-head-wrapper {\\n min-height: 48px;\\n}\\n.generalCardContainer .generalCardExtra {\\n display: grid;\\n grid-auto-flow: column;\\n grid-gap: 10px;\\n align-items: center;\\n}\\n.generalCardContainer .ant-card-extra {\\n padding: 0;\\n}\\n.generalCardContainer.generalCardWithoutExtra .ant-card-extra {\\n display: none;\\n}\\n:host-context(html[data-theme=\\\"dark\\\"]) .ant-card {\\n background: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") top left no-repeat, url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") top right no-repeat, url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") bottom right no-repeat, url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") bottom left no-repeat, var(--antd-card-background);\\n}\\n.generalCardFooter {\\n width: 100%;\\n box-shadow: 0px -2px 8px 0px rgba(0, 0, 0, 0.08);\\n border-radius: 0 0 6px 6px;\\n position: absolute;\\n padding: 8px 20px;\\n left: 0;\\n bottom: 0;\\n box-sizing: border-box;\\n background: #fff;\\n z-index: 999;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../node_modules/less-loader/dist/cjs.js??ref--15-2!./index.shadow.less\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"8oxB\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".listContainerAsGrid--2Jv30Vyw > * {\\n min-width: 0;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"listContainerAsGrid\": \"listContainerAsGrid--2Jv30Vyw\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".cellWrapper--1ECQFuWn {\\n display: flex;\\n align-items: center;\\n position: relative;\\n transform-origin: 0 0;\\n}\\n .cellWrapper--1ECQFuWn:hover {\\n background-color: rgba(255, 255, 255, 0.1);\\n border-radius: 10px;\\n cursor: pointer;\\n }\\n .cellWrapper--1ECQFuWn:hover .closeIcon--1XNb0xlW {\\n display: block;\\n }\\n .cellWrapper--1ECQFuWn.disabled--2mb1G8hz {\\n color: #d8d8d8;\\n opacity: 0.5;\\n cursor: no-drop;\\n }\\n .cellWrapper--1ECQFuWn.disabled--2mb1G8hz .appLink--1VhlZSng,\\n .cellWrapper--1ECQFuWn.disabled--2mb1G8hz .name--2JAkBQZa {\\n cursor: no-drop;\\n }\\n .cellWrapper--1ECQFuWn.disabled--2mb1G8hz:hover {\\n background: none;\\n border-radius: 0;\\n }\\n .cellWrapper--1ECQFuWn.disabled--2mb1G8hz:hover .closeIcon--1XNb0xlW {\\n display: none;\\n }\\n\\n.cellItem--AEHKTP9J {\\n height: 144px;\\n padding: 10px;\\n min-width: 120px;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n flex-direction: column;\\n}\\n\\n.appLink--1VhlZSng {\\n display: flex;\\n width: 46px;\\n height: 46px;\\n color: #fff;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n}\\n\\n.appLink--1VhlZSng.circle--2p-txYyT,\\n .appLink--1VhlZSng.square--3kKUlGSs {\\n background-color: rgba(255, 255, 255, 0.1);\\n }\\n\\n.appLink--1VhlZSng.circle--2p-txYyT {\\n border-radius: 40px;\\n }\\n\\n.appLink--1VhlZSng.square--3kKUlGSs {\\n border-radius: 10px;\\n }\\n\\n.appLink--1VhlZSng.installing--1xm4GER9 {\\n opacity: 0.5;\\n }\\n\\n.addIcon--21J06aSt {\\n position: absolute;\\n\\n font-size: 25px;\\n color: white;\\n}\\n\\n.circleIcon--jhVNydKP {\\n right: -6px;\\n bottom: 5px;\\n}\\n\\n.squareIcon--3Wb-9U_r {\\n right: -6px;\\n bottom: 5px;\\n}\\n\\n.appLink--1VhlZSng:hover {\\n color: #fff;\\n}\\n\\n.appIcon--2_tYo53x {\\n width: 95%;\\n}\\n\\n.appName--1ThiRCJU {\\n display: block;\\n font-size: 16px;\\n line-height: 1.5;\\n height: 24px;\\n text-align: center;\\n}\\n\\n.link--3JdA5r0e {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n.name--2JAkBQZa {\\n flex: 1;\\n padding-left: 20px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 1;\\n -webkit-box-orient: vertical;\\n color: white;\\n}\\n\\n.closeIcon--1XNb0xlW {\\n font-size: 12px;\\n position: absolute;\\n top: -5px;\\n right: -3px;\\n color: rgba(255, 255, 255, 0.7);\\n display: none;\\n}\\n\\n@media (max-height: 860px), (max-width: 1280px) {\\n .cellWrapper--1ECQFuWn {\\n transform: scale(0.8);\\n }\\n}\\n\\n@media (max-height: 700px), (max-width: 1024px) {\\n .cellWrapper--1ECQFuWn {\\n transform: scale(0.7);\\n }\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"cellWrapper\": \"cellWrapper--1ECQFuWn\",\n\t\"closeIcon\": \"closeIcon--1XNb0xlW\",\n\t\"disabled\": \"disabled--2mb1G8hz\",\n\t\"appLink\": \"appLink--1VhlZSng\",\n\t\"name\": \"name--2JAkBQZa\",\n\t\"cellItem\": \"cellItem--AEHKTP9J\",\n\t\"circle\": \"circle--2p-txYyT\",\n\t\"square\": \"square--3kKUlGSs\",\n\t\"installing\": \"installing--1xm4GER9\",\n\t\"addIcon\": \"addIcon--21J06aSt\",\n\t\"circleIcon\": \"circleIcon--jhVNydKP\",\n\t\"squareIcon\": \"squareIcon--3Wb-9U_r\",\n\t\"appIcon\": \"appIcon--2_tYo53x\",\n\t\"appName\": \"appName--1ThiRCJU\",\n\t\"link\": \"link--3JdA5r0e\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".collapseBar--3vokZtEQ {\\n height: 51px;\\n border-top: 1px solid rgba(194, 225, 255, 0.15);\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n}\\n\\n .collapseBar--3vokZtEQ.collapsed--3ZDatDDg > svg {\\n transform: rotate(180deg);\\n }\\n\\n .collapseBar--3vokZtEQ:hover {\\n background-color: rgba(194, 225, 255, 0.1);\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"collapseBar\": \"collapseBar--3vokZtEQ\",\n\t\"collapsed\": \"collapsed--3ZDatDDg\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".appMenu--14qqCN6E {\\n flex: 1;\\n overflow-y: auto;\\n padding: 10px 12px;\\n transition: padding var(--menu-bar-collapse-transition-duration)\\n var(--menu-bar-collapse-transition-timing-function);\\n scrollbar-width: none;\\n} /* Firefox */ .appMenu--14qqCN6E::-webkit-scrollbar {\\n width: 0;\\n background: transparent;\\n }\\n\\n.menuContainer--3yy8OvhC {\\n padding: 12px 0 8px;\\n}\\n\\n.menuContainer--3yy8OvhC.empty--FKVIiFij {\\n padding: 0;\\n }\\n\\n.menuGroup--3RuDVKwW + .menuGroup--3RuDVKwW {\\n margin-top: 12px;\\n}\\n\\n.menuGroup--3RuDVKwW:last-child .menuContainer--3yy8OvhC {\\n padding-bottom: 0;\\n }\\n\\n.menuTitleLink--2-9--bhs {\\n display: flex;\\n align-items: center;\\n height: 50px;\\n border-radius: 6px;\\n padding: 0 10px 0 24px;\\n background-color: rgba(255, 255, 255, 0.1);\\n color: #fff;\\n font-size: 16px;\\n overflow: hidden;\\n transition: none;\\n}\\n\\n.menuTitleLink--2-9--bhs:hover {\\n color: #fff;\\n background-color: #3e86e6;\\n }\\n\\n.menuTitleIcon--2wtfFnGo {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 20px;\\n height: 20px;\\n font-size: 20px;\\n}\\n\\n.menuTitleText--1NLfH-w5 {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.menuTitleText--1NLfH-w5 {\\n margin-left: 14px;\\n}\\n\\n.appMenu--14qqCN6E .ant-menu {\\n background-color: transparent;\\n}\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-item {\\n margin: 0;\\n border-radius: 6px;\\n }\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-item:not(.ant-menu-item-selected):hover {\\n background-color: #3e86e6;\\n }\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-item > a {\\n color: #fff;\\n }\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-item > a .anticon svg {\\n vertical-align: -0.125em;\\n }\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-item-selected {\\n background-color: #0071eb;\\n }\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-item-selected > a {\\n color: #fff;\\n }\\n\\n.appMenu--14qqCN6E .ant-menu.ant-menu-sub {\\n background-color: transparent;\\n box-shadow: none;\\n }\\n\\n.appMenu--14qqCN6E .ant-menu.ant-menu-sub .ant-menu-item {\\n transform: translate(-2px, 0);\\n }\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-submenu-title {\\n margin: 0;\\n color: #fff;\\n }\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\\n .appMenu--14qqCN6E .ant-menu .ant-menu-submenu-title .ant-menu-submenu-arrow::after {\\n background: #fff;\\n }\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-submenu-selected {\\n margin-left: -12px;\\n margin-right: -12px;\\n padding-left: 12px;\\n padding-right: 12px;\\n background-color: rgba(0, 99, 206, 0.2);\\n }\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-item-group-title {\\n color: rgba(255, 255, 255, 0.65);\\n transition: none;\\n }\\n\\n.appMenu--14qqCN6E.collapsed--25vBLnpw {\\n padding: 10px 6px;\\n}\\n\\n.appMenu--14qqCN6E.collapsed--25vBLnpw .menuTitleLink--2-9--bhs {\\n padding: 0 14px;\\n }\\n\\n.appMenu--14qqCN6E.collapsed--25vBLnpw .menuTitleText--1NLfH-w5 {\\n width: 0;\\n margin-left: 0;\\n opacity: 0;\\n }\\n\\n.appMenu--14qqCN6E.collapsed--25vBLnpw .ant-menu .ant-menu-submenu-selected {\\n margin-left: -6px;\\n margin-right: -6px;\\n padding-left: 6px;\\n padding-right: 6px;\\n }\\n\\n.appMenu--14qqCN6E.collapsed--25vBLnpw .ant-menu-item-group-title {\\n visibility: hidden;\\n position: relative;\\n }\\n\\n.appMenu--14qqCN6E.collapsed--25vBLnpw .ant-menu-item-group-title::before {\\n content: \\\"·\\\";\\n visibility: visible;\\n position: absolute;\\n left: 0;\\n right: 0;\\n text-align: center;\\n font-weight: 700;\\n }\\n\\n.menuTitleLink--2-9--bhs,\\n.appMenu--14qqCN6E .ant-menu .ant-menu-item {\\n transition: padding var(--menu-bar-collapse-transition-duration)\\n var(--menu-bar-collapse-transition-timing-function);\\n}\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-submenu-selected,\\n.menuTitleText--1NLfH-w5 {\\n transition: all var(--menu-bar-collapse-transition-duration)\\n var(--menu-bar-collapse-transition-timing-function);\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"appMenu\": \"appMenu--14qqCN6E\",\n\t\"menuContainer\": \"menuContainer--3yy8OvhC\",\n\t\"empty\": \"empty--FKVIiFij\",\n\t\"menuGroup\": \"menuGroup--3RuDVKwW\",\n\t\"menuTitleLink\": \"menuTitleLink--2-9--bhs\",\n\t\"menuTitleIcon\": \"menuTitleIcon--2wtfFnGo\",\n\t\"menuTitleText\": \"menuTitleText--1NLfH-w5\",\n\t\"collapsed\": \"collapsed--25vBLnpw\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"9kay\");","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"tYg3\");","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"ACCw\");","module.exports = __webpack_public_path__ + \"assets/developing.603249ef.png\";","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".activeItem--3WNd0Z3_ {\\n color: var(--theme-blue-color);\\n background: rgba(235, 243, 253, 1);\\n}\\n\\n.activeItem--3WNd0Z3_:before {\\n border-radius: 0px 4px 4px 0px;\\n content: \\\"\\\";\\n width: 4px;\\n float: left;\\n height: 100%;\\n background-color: var(--theme-blue-color);\\n}\\n\\n.itemContainer--3mWMR5bw {\\n cursor: pointer;\\n height: 45px;\\n}\\n\\n.itemContainerInner--2YCfgTlM {\\n padding: 8px;\\n margin-left: 4px;\\n height: 100%;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"activeItem\": \"activeItem--3WNd0Z3_\",\n\t\"itemContainer\": \"itemContainer--3mWMR5bw\",\n\t\"itemContainerInner\": \"itemContainerInner--2YCfgTlM\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host {\\n display: block;\\n}\\n\\n:host([hidden]) {\\n display: none;\\n}\\n\\n*,\\n*::before,\\n*::after {\\n box-sizing: border-box;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".docLinkContainer--M1AQfHhc {\\n padding: 0 16px;\\n}\\n\\n.docLinkContainer--M1AQfHhc a {\\n font-size: 18px;\\n display: flex;\\n align-items: center;\\n color: var(--antd-btn-default-color);\\n}\\n\\n.docLinkContainer--M1AQfHhc a:hover {\\n color: var(--antd-link-hover-color);\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"docLinkContainer\": \"docLinkContainer--M1AQfHhc\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".desktopSlider--3N-ObR_T {\\n flex: 1;\\n position: relative;\\n padding-top: 110px;\\n padding-bottom: 50px;\\n}\\n\\n.filtered--3AJ0DARH .desktopList--1Dcgv-ft,\\n .filtered--3AJ0DARH .arrowLeft--3_tuuEKK,\\n .filtered--3AJ0DARH .arrowRight--1MU4aciI,\\n .filtered--3AJ0DARH .desktopSelector--3Lrj4Qje {\\n display: none;\\n }\\n\\n.scrollContainer--333-Gv2p {\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n}\\n\\n.desktopList--1Dcgv-ft {\\n display: flex;\\n height: 100%;\\n}\\n\\n.filteredList--F2vOwMNp {\\n display: flex;\\n height: 100%;\\n}\\n\\n.arrowLeft--3_tuuEKK,\\n.arrowRight--1MU4aciI {\\n position: absolute;\\n top: 110px;\\n bottom: 50px;\\n justify-content: center;\\n align-items: center;\\n display: none;\\n}\\n\\n.arrowLeft--3_tuuEKK.available--34h3KtHW, .arrowRight--1MU4aciI.available--34h3KtHW {\\n display: flex;\\n }\\n\\n.arrowLeft--3_tuuEKK {\\n left: 0;\\n}\\n\\n.arrowRight--1MU4aciI {\\n right: 0;\\n}\\n\\n.arrowButton--3YwhSfFS {\\n width: 70px;\\n height: 70px;\\n font-size: 36px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n color: #e6e6e6;\\n background-color: rgba(255, 255, 255, 0.1);\\n border-radius: 6px;\\n visibility: hidden;\\n}\\n\\n.arrowLeft--3_tuuEKK:hover .arrowButton--3YwhSfFS,\\n.arrowRight--1MU4aciI:hover .arrowButton--3YwhSfFS {\\n visibility: visible;\\n}\\n\\n.desktopSelector--3Lrj4Qje {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n height: 110px;\\n padding: 36px 0;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n.desktopName--2VwBc5Ea {\\n display: block;\\n color: rgba(255, 255, 255, 0.65);\\n border-radius: 6px;\\n font-size: 12px;\\n line-height: 38px;\\n padding: 0 16px;\\n}\\n\\n.desktopName--2VwBc5Ea:hover {\\n color: #fff;\\n }\\n\\n.desktopName--2VwBc5Ea.active--2HOwVUaP {\\n color: #fff;\\n background-color: rgba(0, 0, 0, 0.06);\\n }\\n\\n.selectorSeparator--1McBP62D {\\n display: block;\\n margin: 0 8px;\\n width: 1px;\\n height: 16px;\\n border-left: 1px dashed rgba(255, 255, 255, 0.15);\\n}\\n\\n@media (max-height: 860px), (max-width: 1280px) {\\n .arrowButton--3YwhSfFS {\\n width: 60px;\\n height: 60px;\\n font-size: 30px;\\n }\\n\\n .desktopSlider--3N-ObR_T {\\n padding-top: 98px;\\n }\\n\\n .desktopSelector--3Lrj4Qje {\\n padding: 30px 0;\\n height: 98px;\\n }\\n}\\n\\n@media (max-height: 700px), (max-width: 1024px) {\\n .arrowButton--3YwhSfFS {\\n width: 50px;\\n height: 50px;\\n font-size: 25px;\\n }\\n\\n .desktopSlider--3N-ObR_T {\\n padding-top: 86px;\\n }\\n\\n .desktopSelector--3Lrj4Qje {\\n padding: 24px 0;\\n height: 86px;\\n }\\n}\\n\\n@media (max-height: 640px), (max-width: 900px) {\\n .arrowButton--3YwhSfFS {\\n width: 40px;\\n height: 40px;\\n font-size: 20px;\\n }\\n\\n .desktopSlider--3N-ObR_T {\\n padding-top: 74px;\\n }\\n\\n .desktopSelector--3Lrj4Qje {\\n padding: 18px 0;\\n height: 74px;\\n }\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"desktopSlider\": \"desktopSlider--3N-ObR_T\",\n\t\"filtered\": \"filtered--3AJ0DARH\",\n\t\"desktopList\": \"desktopList--1Dcgv-ft\",\n\t\"arrowLeft\": \"arrowLeft--3_tuuEKK\",\n\t\"arrowRight\": \"arrowRight--1MU4aciI\",\n\t\"desktopSelector\": \"desktopSelector--3Lrj4Qje\",\n\t\"scrollContainer\": \"scrollContainer--333-Gv2p\",\n\t\"filteredList\": \"filteredList--F2vOwMNp\",\n\t\"available\": \"available--34h3KtHW\",\n\t\"arrowButton\": \"arrowButton--3YwhSfFS\",\n\t\"desktopName\": \"desktopName--2VwBc5Ea\",\n\t\"active\": \"active--2HOwVUaP\",\n\t\"selectorSeparator\": \"selectorSeparator--1McBP62D\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--13-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./IndexCard.shadow.css\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../node_modules/less-loader/dist/cjs.js??ref--15-2!./index.shadow.less\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--13-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./EasyView.shadow.css\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".indexCardHeader {\\n display: flex;\\n margin-bottom: 24px;\\n}\\n\\n.indexCardTitle {\\n font-size: 18px;\\n color: rgba(0, 0, 0, 0.85);\\n}\\n\\n.indexCardToolbar {\\n display: flex;\\n margin-left: auto;\\n}\\n\\n::slotted([slot=\\\"toolbar\\\"]) {\\n margin-left: 10px;\\n}\\n\\n::slotted([slot=\\\"content\\\"]) {\\n grid-column: span 12;\\n}\\n\\n.indexCardBody {\\n display: grid;\\n grid-template-columns: repeat(12, 1fr);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.ant-card {\\n box-sizing: border-box;\\n margin: 0;\\n padding: 0;\\n color: var(--antd-text-color);\\n font-size: 14px;\\n font-variant: tabular-nums;\\n line-height: 1.5715;\\n list-style: none;\\n font-feature-settings: 'tnum';\\n position: relative;\\n background: var(--antd-card-background);\\n border-radius: 6px;\\n}\\n.ant-card-rtl {\\n direction: rtl;\\n}\\n.ant-card-hoverable {\\n cursor: pointer;\\n transition: box-shadow 0.3s, border-color 0.3s;\\n}\\n.ant-card-hoverable:hover {\\n border-color: transparent;\\n box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.15);\\n}\\n.ant-card-bordered {\\n border: 1px solid var(--antd-border-color-split);\\n}\\n.ant-card-head {\\n min-height: 48px;\\n margin-bottom: -1px;\\n padding: 0 20px;\\n color: var(--antd-heading-color);\\n font-weight: 500;\\n font-size: 16px;\\n background: transparent;\\n border-bottom: 1px solid var(--antd-border-color-split);\\n border-radius: 6px 6px 0 0;\\n}\\n.ant-card-head::before {\\n display: table;\\n content: '';\\n}\\n.ant-card-head::after {\\n display: table;\\n clear: both;\\n content: '';\\n}\\n.ant-card-head-wrapper {\\n display: flex;\\n align-items: center;\\n}\\n.ant-card-head-title {\\n display: inline-block;\\n flex: 1;\\n padding: 12px 0;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.ant-card-head-title > .ant-typography,\\n.ant-card-head-title > .ant-typography-edit-content {\\n left: 0;\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.ant-card-head .ant-tabs {\\n clear: both;\\n margin-bottom: -17px;\\n color: var(--antd-text-color);\\n font-weight: normal;\\n font-size: 14px;\\n}\\n.ant-card-head .ant-tabs-bar {\\n border-bottom: 1px solid var(--antd-border-color-split);\\n}\\n.ant-card-extra {\\n float: right;\\n margin-left: auto;\\n padding: 12px 0;\\n color: var(--antd-text-color);\\n font-weight: normal;\\n font-size: 14px;\\n}\\n.ant-card-rtl .ant-card-extra {\\n margin-right: auto;\\n margin-left: 0;\\n}\\n.ant-card-body {\\n padding: 20px;\\n}\\n.ant-card-body::before {\\n display: table;\\n content: '';\\n}\\n.ant-card-body::after {\\n display: table;\\n clear: both;\\n content: '';\\n}\\n.ant-card-contain-grid:not(.ant-card-loading) .ant-card-body {\\n margin: -1px 0 0 -1px;\\n padding: 0;\\n}\\n.ant-card-grid {\\n float: left;\\n width: 33.33%;\\n padding: 20px;\\n border: 0;\\n border-radius: 0;\\n box-shadow: 1px 0 0 0 var(--antd-border-color-split), 0 1px 0 0 var(--antd-border-color-split), 1px 1px 0 0 var(--antd-border-color-split), 1px 0 0 0 var(--antd-border-color-split) inset, 0 1px 0 0 var(--antd-border-color-split) inset;\\n transition: all 0.3s;\\n}\\n.ant-card-rtl .ant-card-grid {\\n float: right;\\n}\\n.ant-card-grid-hoverable:hover {\\n position: relative;\\n z-index: 1;\\n box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.15);\\n}\\n.ant-card-contain-tabs > .ant-card-head .ant-card-head-title {\\n min-height: 36px;\\n padding-bottom: 0;\\n}\\n.ant-card-contain-tabs > .ant-card-head .ant-card-extra {\\n padding-bottom: 0;\\n}\\n.ant-card-bordered .ant-card-cover {\\n margin-top: -1px;\\n margin-right: -1px;\\n margin-left: -1px;\\n}\\n.ant-card-cover > * {\\n display: block;\\n width: 100%;\\n}\\n.ant-card-cover img {\\n border-radius: 6px 6px 0 0;\\n}\\n.ant-card-actions {\\n margin: 0;\\n padding: 0;\\n list-style: none;\\n background: var(--antd-component-background);\\n border-top: 1px solid var(--antd-border-color-split);\\n}\\n.ant-card-actions::before {\\n display: table;\\n content: '';\\n}\\n.ant-card-actions::after {\\n display: table;\\n clear: both;\\n content: '';\\n}\\n.ant-card-actions > li {\\n float: left;\\n margin: 12px 0;\\n color: var(--antd-text-color-secondary);\\n text-align: center;\\n}\\n.ant-card-rtl .ant-card-actions > li {\\n float: right;\\n}\\n.ant-card-actions > li > span {\\n position: relative;\\n display: block;\\n min-width: 32px;\\n font-size: 14px;\\n line-height: 1.5715;\\n cursor: pointer;\\n}\\n.ant-card-actions > li > span:hover {\\n color: #0071eb;\\n transition: color 0.3s;\\n}\\n.ant-card-actions > li > span a:not(.ant-btn),\\n.ant-card-actions > li > span > .anticon {\\n display: inline-block;\\n width: 100%;\\n color: var(--antd-text-color-secondary);\\n line-height: 22px;\\n transition: color 0.3s;\\n}\\n.ant-card-actions > li > span a:not(.ant-btn):hover,\\n.ant-card-actions > li > span > .anticon:hover {\\n color: #0071eb;\\n}\\n.ant-card-actions > li > span > .anticon {\\n font-size: 16px;\\n line-height: 22px;\\n}\\n.ant-card-actions > li:not(:last-child) {\\n border-right: 1px solid var(--antd-border-color-split);\\n}\\n.ant-card-rtl .ant-card-actions > li:not(:last-child) {\\n border-right: none;\\n border-left: 1px solid var(--antd-border-color-split);\\n}\\n.ant-card-type-inner .ant-card-head {\\n padding: 0 20px;\\n background: var(--antd-background-color-light);\\n}\\n.ant-card-type-inner .ant-card-head-title {\\n padding: 12px 0;\\n font-size: 14px;\\n}\\n.ant-card-type-inner .ant-card-body {\\n padding: 16px 20px;\\n}\\n.ant-card-type-inner .ant-card-extra {\\n padding: 13.5px 0;\\n}\\n.ant-card-meta {\\n margin: -4px 0;\\n}\\n.ant-card-meta::before {\\n display: table;\\n content: '';\\n}\\n.ant-card-meta::after {\\n display: table;\\n clear: both;\\n content: '';\\n}\\n.ant-card-meta-avatar {\\n float: left;\\n padding-right: 16px;\\n}\\n.ant-card-rtl .ant-card-meta-avatar {\\n float: right;\\n padding-right: 0;\\n padding-left: 16px;\\n}\\n.ant-card-meta-detail {\\n overflow: hidden;\\n}\\n.ant-card-meta-detail > div:not(:last-child) {\\n margin-bottom: 8px;\\n}\\n.ant-card-meta-title {\\n overflow: hidden;\\n color: var(--antd-heading-color);\\n font-weight: 500;\\n font-size: 16px;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.ant-card-meta-description {\\n color: var(--antd-text-color-secondary);\\n}\\n.ant-card-loading {\\n overflow: hidden;\\n}\\n.ant-card-loading .ant-card-body {\\n user-select: none;\\n}\\n.ant-card-loading-content p {\\n margin: 0;\\n}\\n.ant-card-loading-block {\\n height: 14px;\\n margin: 4px 0;\\n background: linear-gradient(90deg, rgba(207, 216, 220, 0.2), rgba(207, 216, 220, 0.4), rgba(207, 216, 220, 0.2));\\n background-size: 600% 600%;\\n border-radius: 6px;\\n animation: card-loading 1.4s ease infinite;\\n}\\n@keyframes card-loading {\\n 0%,\\n 100% {\\n background-position: 0 50%;\\n }\\n 50% {\\n background-position: 100% 50%;\\n }\\n}\\n.ant-card-small > .ant-card-head {\\n min-height: 36px;\\n padding: 0 10px;\\n font-size: 14px;\\n}\\n.ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-head-title {\\n padding: 6px 0;\\n}\\n.ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-extra {\\n padding: 6px 0;\\n font-size: 14px;\\n}\\n.ant-card-small > .ant-card-body {\\n padding: 10px;\\n}\\n.ant-card {\\n box-shadow: var(--card-default-box-shadow);\\n transition: var(--card-transition);\\n}\\n.ant-card-bordered {\\n border: var(--card-inner-border);\\n border-radius: var(--card-inner-border-radius);\\n}\\n.ant-card-head {\\n border-bottom-color: var(--antd-card-head-border-bottom-color);\\n}\\n.ant-card .ant-card-body {\\n padding: 0;\\n}\\n:host {\\n display: block;\\n}\\n:host([hidden]) {\\n display: none;\\n}\\n::slotted([slot=\\\"content\\\"]) {\\n position: relative;\\n padding: 20px;\\n min-width: 0;\\n min-height: 0;\\n}\\n::slotted(.columns-card-no-padding) {\\n padding: 0;\\n}\\n::slotted([slot=\\\"content\\\"]:not(:last-child))::after {\\n content: \\\"\\\";\\n position: absolute;\\n width: 1px;\\n top: 0;\\n right: 0;\\n height: 100%;\\n border-right: var(--card-inner-border);\\n}\\n.multiple-columns-container {\\n display: grid;\\n grid-template-rows: auto;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== 'string') {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n'), \"\\\"\");\n }\n\n return url;\n};","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"IP2g\");","module.exports = __webpack_public_path__ + \"assets/logo-278w.1e946de6.png\";","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","export const NS_BASIC_BRICKS = \"basic-bricks\";\n\nexport enum K {\n BASIC_BRICKS = \"BASIC_BRICKS\",\n LOGOUT = \"LOGOUT\",\n LOGIN = \"LOGIN\",\n PAGE_NOT_FOUND_TITLE = \"PAGE_NOT_FOUND_TITLE\",\n PAGE_NOT_FOUND_DESC = \"PAGE_NOT_FOUND_DESC\",\n PAGE_ERROR_TITLE = \"PAGE_ERROR_TITLE\",\n ACCOUNT_MANAGEMENT = \"ACCOUNT_MANAGEMENT\",\n BRICK_ERROR = \"BRICK_ERROR\",\n LEGACY_TEMPLATE_ERROR = \"LEGACY_TEMPLATE_ERROR\",\n HELP = \"HELP\",\n CANCEL = \"CANCEL\",\n OK = \"OK\",\n COVERT_TO_LANGUAGE = \"COVERT_TO_LANGUAGE\",\n}\n\nexport type Locale = { [key in K]: string };\n","import { Locale, K } from \"../constants\";\n\nconst locale: Locale = {\n [K.BASIC_BRICKS]: \"Basic Bricks\",\n [K.LOGOUT]: \"Logout\",\n [K.LOGIN]: \"Login\",\n [K.ACCOUNT_MANAGEMENT]: \"Account setting\",\n [K.PAGE_NOT_FOUND_TITLE]: \"Oops! Page Not Found.\",\n [K.PAGE_NOT_FOUND_DESC]: 'The requested URL \"{{url}}\" was not found.',\n [K.PAGE_ERROR_TITLE]: \"Oops! Something went wrong.\",\n [K.BRICK_ERROR]: \"Oops! Brick went wrong.\",\n [K.LEGACY_TEMPLATE_ERROR]: \"Oops! Legacy template went wrong.\",\n [K.HELP]: \"Help\",\n [K.CANCEL]: \"Cancel\",\n [K.OK]: \"OK\",\n [K.COVERT_TO_LANGUAGE]: \"切换为中文\",\n};\n\nexport default locale;\n","import { Locale, K } from \"../constants\";\n\nconst locale: Locale = {\n [K.BASIC_BRICKS]: \"基础构件\",\n [K.LOGOUT]: \"登出\",\n [K.LOGIN]: \"登录\",\n [K.ACCOUNT_MANAGEMENT]: \"我的账户\",\n [K.PAGE_NOT_FOUND_TITLE]: \"糟糕!页面没有找到。\",\n [K.PAGE_NOT_FOUND_DESC]: \"请求的页面 “{{url}}” 没有找到。\",\n [K.PAGE_ERROR_TITLE]: \"糟糕!页面出现了一些问题。\",\n [K.BRICK_ERROR]: \"糟糕!构件出现了一些问题。\",\n [K.LEGACY_TEMPLATE_ERROR]: \"糟糕!(老)模板出现了一些问题。\",\n [K.HELP]: \"帮助\",\n [K.CANCEL]: \"取消\",\n [K.OK]: \"确定\",\n [K.COVERT_TO_LANGUAGE]: \"Convert to English\",\n};\n\nexport default locale;\n","import i18next from \"i18next\";\nimport { NS_BASIC_BRICKS } from \"./constants\";\nimport en from \"./locales/en\";\nimport zh from \"./locales/zh\";\n\ni18next.addResourceBundle(\"en\", NS_BASIC_BRICKS, en);\ni18next.addResourceBundle(\"zh\", NS_BASIC_BRICKS, zh);\n","import React from \"react\";\nimport { useApplyPageTitle } from \"@next-core/brick-kit\";\n\ninterface PageTitleProps {\n pageTitle: string;\n dashboardMode?: boolean;\n}\n\nexport function PageTitle({\n pageTitle,\n dashboardMode,\n}: PageTitleProps): React.ReactElement {\n useApplyPageTitle(pageTitle);\n\n return (\n <>\n {dashboardMode && <span className=\"page-title-before\"></span>}\n <span\n className=\"page-title-content\"\n style={{\n display: \"block\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n ...(dashboardMode\n ? {\n fontSize: 38,\n height: \"100%\",\n }\n : {\n fontSize: 18,\n lineHeight: \"32px\",\n }),\n }}\n >\n {pageTitle}\n </span>\n {dashboardMode && <span className=\"page-title-after\"></span>}\n </>\n );\n}\n","import * as React from \"react\";\n\nfunction SvgLogo31(props) {\n return <svg xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" width={132} height={32} {...props}><defs><path id=\"logo-3_1_svg__a\" d=\"M0 .046h36.507v15.597H0z\" /></defs><g fill=\"none\" fillRule=\"evenodd\"><path fill=\"currentColor\" d=\"M41.935 22.77V7.623h10.586v2.338H44.69V13.7h7.067v2.295H44.69v4.437h8.357v2.338zm17.558-1.858c.816 0 1.435-.044 1.858-.131v-2.93a5.909 5.909 0 00-1.552-.197 6.219 6.219 0 00-.885.067 2.753 2.753 0 00-.808.24c-.24.117-.434.28-.58.492-.145.211-.218.477-.218.798 0 .626.197 1.06.59 1.3.393.24.925.36 1.595.36m-.218-9.856c.874 0 1.61.11 2.207.328.597.218 1.074.524 1.431.918.358.393.613.87.766 1.431.152.561.229 1.177.229 1.847v6.928a33.16 33.16 0 01-1.847.317c-.823.124-1.752.186-2.786.186a8.365 8.365 0 01-1.88-.197c-.568-.131-1.053-.342-1.453-.634a2.987 2.987 0 01-.94-1.136c-.226-.466-.339-1.042-.339-1.727 0-.655.128-1.209.383-1.66.255-.452.6-.82 1.038-1.105a4.5 4.5 0 011.519-.611 8.556 8.556 0 012.72-.131c.321.036.664.098 1.028.185v-.437a3.43 3.43 0 00-.11-.874c-.073-.277-.2-.52-.382-.732a1.796 1.796 0 00-.721-.492c-.299-.116-.674-.175-1.126-.175-.612 0-1.173.044-1.683.131-.51.088-.925.19-1.245.306l-.328-2.141c.335-.117.823-.233 1.464-.35a11.468 11.468 0 012.055-.175m10.73 9.813c.7 0 1.21-.084 1.53-.251.32-.168.481-.456.481-.864 0-.378-.172-.692-.513-.94-.343-.247-.907-.516-1.694-.808a13.27 13.27 0 01-1.323-.558 4.508 4.508 0 01-1.038-.688 2.82 2.82 0 01-.688-.95c-.168-.372-.251-.827-.251-1.366 0-1.05.385-1.876 1.158-2.481.772-.604 1.821-.907 3.147-.907.67 0 1.312.062 1.923.186.612.124 1.071.244 1.377.36l-.48 2.142a6.486 6.486 0 00-1.115-.36 6.75 6.75 0 00-1.574-.164c-.54 0-.976.09-1.311.273a.897.897 0 00-.503.841c0 .19.033.358.099.503.065.146.178.28.338.404.16.124.372.248.634.372s.582.251.962.382a14.81 14.81 0 011.595.689c.437.226.798.48 1.082.764.284.285.492.609.623.973.13.365.196.802.196 1.311 0 1.093-.404 1.92-1.212 2.481-.81.56-1.964.841-3.465.841-1.005 0-1.813-.084-2.425-.251-.612-.167-1.042-.302-1.29-.404l.459-2.208c.394.16.863.314 1.41.46a7.298 7.298 0 001.868.218m16.457-9.528c-1.178 4.341-2.546 8.275-4.101 11.8a11.961 11.961 0 01-.897 1.684 5.02 5.02 0 01-1.029 1.158c-.38.306-.802.528-1.269.667-.467.138-1.006.207-1.619.207-.408 0-.813-.044-1.214-.13-.401-.088-.704-.183-.908-.285l.48-2.12a4.297 4.297 0 001.56.306c.687 0 1.225-.164 1.613-.492.388-.327.728-.834 1.021-1.519a61.098 61.098 0 01-2.403-5.245 57.64 57.64 0 01-2.053-6.032h2.82c.146.612.325 1.275.537 1.989a60.6 60.6 0 001.481 4.37c.278.73.556 1.407.834 2.033a59.585 59.585 0 001.305-4.141 139.01 139.01 0 001.11-4.25h2.732zm26.685 5.769c0-1.18-.266-2.098-.798-2.754-.532-.656-1.388-.983-2.568-.983-.248 0-.506.01-.776.032s-.536.07-.798.142v6.535c.233.16.543.31.93.448a3.63 3.63 0 001.234.208c.962 0 1.664-.328 2.109-.984.444-.655.667-1.537.667-2.644m2.71-.044c0 .874-.114 1.676-.34 2.404-.226.729-.55 1.355-.972 1.88-.423.524-.95.932-1.584 1.224-.634.29-1.352.437-2.153.437-.54 0-1.035-.066-1.486-.197a5.545 5.545 0 01-1.115-.437v4.436h-2.644V11.711a21.128 21.128 0 011.988-.416 15.13 15.13 0 012.492-.196c.903 0 1.712.138 2.426.415a5.06 5.06 0 011.825 1.191 5.252 5.252 0 011.158 1.88c.27.735.404 1.562.404 2.48m5.595 3.803c.7 0 1.21-.084 1.53-.251.32-.168.481-.456.481-.864 0-.378-.171-.692-.514-.94-.342-.247-.907-.516-1.693-.808a13.27 13.27 0 01-1.323-.558 4.508 4.508 0 01-1.038-.688 2.82 2.82 0 01-.688-.95c-.168-.372-.252-.827-.252-1.366 0-1.05.386-1.876 1.159-2.481.772-.604 1.821-.907 3.147-.907.67 0 1.311.062 1.923.186.612.124 1.071.244 1.377.36l-.48 2.142a6.486 6.486 0 00-1.115-.36 6.75 6.75 0 00-1.574-.164c-.54 0-.976.09-1.311.273a.897.897 0 00-.503.841c0 .19.033.358.098.503.066.146.179.28.34.404.16.124.37.248.633.372.262.124.582.251.962.382a14.81 14.81 0 011.595.689c.437.226.798.48 1.082.764.284.285.492.609.623.973.13.365.196.802.196 1.311 0 1.093-.404 1.92-1.213 2.481-.808.56-1.963.841-3.464.841-1.005 0-1.813-.084-2.426-.251-.611-.167-1.041-.302-1.289-.404l.459-2.208c.394.16.863.314 1.41.46a7.298 7.298 0 001.868.218M92.198 9.64l.289 1.601a5.025 5.025 0 015.998-.252l1.77-.319.31-1.703a7.866 7.866 0 00-3.98-1.656 7.883 7.883 0 00-6.234 1.994l1.847.336zm9.169 2.144l-1.712.309a5.023 5.023 0 01.319 5.667l.325 1.804 1.7.31a7.866 7.866 0 001.506-3.784 7.88 7.88 0 00-1.822-6.04l-.316 1.734zm-11.33 6.726l1.613-.291a5.023 5.023 0 01-.256-5.746l-.31-1.72-1.76-.32a7.864 7.864 0 00-1.517 3.798 7.883 7.883 0 001.893 6.126l.337-1.847zm9.148 2.166l-.297-1.65a5.024 5.024 0 01-6.075.298l-1.664.3-.326 1.791a7.867 7.867 0 003.903 1.595 7.884 7.884 0 006.25-2.007l-1.791-.327zM18.254 30.985c-4.674 0-8.477-3.803-8.477-8.477v-1.866a2.559 2.559 0 115.118 0v1.866a3.362 3.362 0 003.359 3.359 3.362 3.362 0 003.358-3.359v-1.866a2.559 2.559 0 015.118 0v1.866c0 4.674-3.802 8.477-8.476 8.477\" /><g transform=\"translate(0 .186)\"><mask id=\"logo-3_1_svg__b\" fill=\"#fff\"><use xlinkHref=\"#logo-3_1_svg__a\" /></mask><path fill=\"currentColor\" d=\"M33.954 9.85c-.679 0-1.294.268-1.752.7-.776.5-1.72.802-2.814.802-1.09 0-1.826-.301-2.597-.797a3.248 3.248 0 00-.812-.808c-.488-.763-.781-1.507-.781-2.582 0-1.083.296-2.035.788-2.807a2.553 2.553 0 10-3.7-.008c.499.777.802 1.721.802 2.815 0 1.09-.302 1.826-.798 2.596a3.23 3.23 0 00-.8.803c-.788.49-2.154.788-3.236.788-1.093 0-2.462-.303-3.246-.8a3.248 3.248 0 00-.79-.79c-.497-.771-.799-1.508-.799-2.597 0-1.094.304-2.038.802-2.814.433-.458.7-1.074.7-1.752a2.553 2.553 0 10-4.4 1.76c.492.771.788 1.723.788 2.806 0 1.075-.293 1.819-.781 2.582a3.245 3.245 0 00-.812.808c-.77.496-1.507.797-2.597.797-1.093 0-2.037-.303-2.814-.802a2.553 2.553 0 10.008 3.7c.772-.492 1.723-.788 2.806-.788 1.076 0 1.82.294 2.583.782a3.23 3.23 0 005.312.014c.781-.497 2.151-.796 3.24-.796 1.08 0 2.45.296 3.234.789a3.229 3.229 0 005.318-.007c.763-.488 1.507-.782 2.582-.782 1.083 0 2.034.296 2.806.788a2.553 2.553 0 101.76-4.4\" mask=\"url(#logo-3_1_svg__b)\" /></g></g></svg>;\n}\n\nexport default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTMyIiBoZWlnaHQ9IjMyIj48ZGVmcz48cGF0aCBpZD0iYSIgZD0iTTAgLjA0NmgzNi41MDd2MTUuNTk3SDB6Ii8+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBkPSJNNDEuOTM1IDIyLjc3VjcuNjIzaDEwLjU4NnYyLjMzOEg0NC42OVYxMy43aDcuMDY3djIuMjk1SDQ0LjY5djQuNDM3aDguMzU3djIuMzM4em0xNy41NTgtMS44NThjLjgxNiAwIDEuNDM1LS4wNDQgMS44NTgtLjEzMXYtMi45M2E1LjkwOSA1LjkwOSAwIDAgMC0xLjU1Mi0uMTk3IDYuMjE5IDYuMjE5IDAgMCAwLS44ODUuMDY3IDIuNzUzIDIuNzUzIDAgMCAwLS44MDguMjRjLS4yNC4xMTctLjQzNC4yOC0uNTguNDkyLS4xNDUuMjExLS4yMTguNDc3LS4yMTguNzk4IDAgLjYyNi4xOTcgMS4wNi41OSAxLjMuMzkzLjI0LjkyNS4zNiAxLjU5NS4zNm0tLjIxOC05Ljg1NmMuODc0IDAgMS42MS4xMSAyLjIwNy4zMjguNTk3LjIxOCAxLjA3NC41MjQgMS40MzEuOTE4LjM1OC4zOTMuNjEzLjg3Ljc2NiAxLjQzMS4xNTIuNTYxLjIyOSAxLjE3Ny4yMjkgMS44NDd2Ni45MjhhMzMuMTYgMzMuMTYgMCAwIDEtMS44NDcuMzE3Yy0uODIzLjEyNC0xLjc1Mi4xODYtMi43ODYuMTg2YTguMzY1IDguMzY1IDAgMCAxLTEuODgtLjE5N2MtLjU2OC0uMTMxLTEuMDUzLS4zNDItMS40NTMtLjYzNGEyLjk4NyAyLjk4NyAwIDAgMS0uOTQtMS4xMzZjLS4yMjYtLjQ2Ni0uMzM5LTEuMDQyLS4zMzktMS43MjcgMC0uNjU1LjEyOC0xLjIwOS4zODMtMS42Ni4yNTUtLjQ1Mi42LS44MiAxLjAzOC0xLjEwNWE0LjUgNC41IDAgMCAxIDEuNTE5LS42MTEgOC41NTYgOC41NTYgMCAwIDEgMi43Mi0uMTMxYy4zMjEuMDM2LjY2NC4wOTggMS4wMjguMTg1di0uNDM3YTMuNDMgMy40MyAwIDAgMC0uMTEtLjg3NGMtLjA3My0uMjc3LS4yLS41Mi0uMzgyLS43MzJhMS43OTYgMS43OTYgMCAwIDAtLjcyMS0uNDkyYy0uMjk5LS4xMTYtLjY3NC0uMTc1LTEuMTI2LS4xNzUtLjYxMiAwLTEuMTczLjA0NC0xLjY4My4xMzEtLjUxLjA4OC0uOTI1LjE5LTEuMjQ1LjMwNmwtLjMyOC0yLjE0MWMuMzM1LS4xMTcuODIzLS4yMzMgMS40NjQtLjM1YTExLjQ2OCAxMS40NjggMCAwIDEgMi4wNTUtLjE3NW0xMC43MyA5LjgxM2MuNyAwIDEuMjEtLjA4NCAxLjUzLS4yNTEuMzItLjE2OC40ODEtLjQ1Ni40ODEtLjg2NCAwLS4zNzgtLjE3Mi0uNjkyLS41MTMtLjk0LS4zNDMtLjI0Ny0uOTA3LS41MTYtMS42OTQtLjgwOGExMy4yNyAxMy4yNyAwIDAgMS0xLjMyMy0uNTU4IDQuNTA4IDQuNTA4IDAgMCAxLTEuMDM4LS42ODggMi44MiAyLjgyIDAgMCAxLS42ODgtLjk1Yy0uMTY4LS4zNzItLjI1MS0uODI3LS4yNTEtMS4zNjYgMC0xLjA1LjM4NS0xLjg3NiAxLjE1OC0yLjQ4MS43NzItLjYwNCAxLjgyMS0uOTA3IDMuMTQ3LS45MDcuNjcgMCAxLjMxMi4wNjIgMS45MjMuMTg2LjYxMi4xMjQgMS4wNzEuMjQ0IDEuMzc3LjM2bC0uNDggMi4xNDJhNi40ODYgNi40ODYgMCAwIDAtMS4xMTUtLjM2IDYuNzUgNi43NSAwIDAgMC0xLjU3NC0uMTY0Yy0uNTQgMC0uOTc2LjA5LTEuMzExLjI3M2EuODk3Ljg5NyAwIDAgMC0uNTAzLjg0MWMwIC4xOS4wMzMuMzU4LjA5OS41MDMuMDY1LjE0Ni4xNzguMjguMzM4LjQwNC4xNi4xMjQuMzcyLjI0OC42MzQuMzcycy41ODIuMjUxLjk2Mi4zODJhMTQuODEgMTQuODEgMCAwIDEgMS41OTUuNjg5Yy40MzcuMjI2Ljc5OC40OCAxLjA4Mi43NjQuMjg0LjI4NS40OTIuNjA5LjYyMy45NzMuMTMuMzY1LjE5Ni44MDIuMTk2IDEuMzExIDAgMS4wOTMtLjQwNCAxLjkyLTEuMjEyIDIuNDgxLS44MS41Ni0xLjk2NC44NDEtMy40NjUuODQxLTEuMDA1IDAtMS44MTMtLjA4NC0yLjQyNS0uMjUxLS42MTItLjE2Ny0xLjA0Mi0uMzAyLTEuMjktLjQwNGwuNDU5LTIuMjA4Yy4zOTQuMTYuODYzLjMxNCAxLjQxLjQ2YTcuMjk4IDcuMjk4IDAgMCAwIDEuODY4LjIxOG0xNi40NTctOS41MjhjLTEuMTc4IDQuMzQxLTIuNTQ2IDguMjc1LTQuMTAxIDExLjhhMTEuOTYxIDExLjk2MSAwIDAgMS0uODk3IDEuNjg0IDUuMDIgNS4wMiAwIDAgMS0xLjAyOSAxLjE1OGMtLjM4LjMwNi0uODAyLjUyOC0xLjI2OS42NjctLjQ2Ny4xMzgtMS4wMDYuMjA3LTEuNjE5LjIwNy0uNDA4IDAtLjgxMy0uMDQ0LTEuMjE0LS4xMy0uNDAxLS4wODgtLjcwNC0uMTgzLS45MDgtLjI4NWwuNDgtMi4xMmE0LjI5NyA0LjI5NyAwIDAgMCAxLjU2LjMwNmMuNjg3IDAgMS4yMjUtLjE2NCAxLjYxMy0uNDkyLjM4OC0uMzI3LjcyOC0uODM0IDEuMDIxLTEuNTE5YTYxLjA5OCA2MS4wOTggMCAwIDEtMi40MDMtNS4yNDUgNTcuNjQgNTcuNjQgMCAwIDEtMi4wNTMtNi4wMzJoMi44MmMuMTQ2LjYxMi4zMjUgMS4yNzUuNTM3IDEuOTg5YTYwLjYgNjAuNiAwIDAgMCAxLjQ4MSA0LjM3Yy4yNzguNzMuNTU2IDEuNDA3LjgzNCAyLjAzM2E1OS41ODUgNTkuNTg1IDAgMCAwIDEuMzA1LTQuMTQxIDEzOS4wMSAxMzkuMDEgMCAwIDAgMS4xMS00LjI1aDIuNzMyem0yNi42ODUgNS43NjljMC0xLjE4LS4yNjYtMi4wOTgtLjc5OC0yLjc1NC0uNTMyLS42NTYtMS4zODgtLjk4My0yLjU2OC0uOTgzLS4yNDggMC0uNTA2LjAxLS43NzYuMDMycy0uNTM2LjA3LS43OTguMTQydjYuNTM1Yy4yMzMuMTYuNTQzLjMxLjkzLjQ0OGEzLjYzIDMuNjMgMCAwIDAgMS4yMzQuMjA4Yy45NjIgMCAxLjY2NC0uMzI4IDIuMTA5LS45ODQuNDQ0LS42NTUuNjY3LTEuNTM3LjY2Ny0yLjY0NG0yLjcxLS4wNDRjMCAuODc0LS4xMTQgMS42NzYtLjM0IDIuNDA0LS4yMjYuNzI5LS41NSAxLjM1NS0uOTcyIDEuODgtLjQyMy41MjQtLjk1LjkzMi0xLjU4NCAxLjIyNC0uNjM0LjI5LTEuMzUyLjQzNy0yLjE1My40MzctLjU0IDAtMS4wMzUtLjA2Ni0xLjQ4Ni0uMTk3YTUuNTQ1IDUuNTQ1IDAgMCAxLTEuMTE1LS40Mzd2NC40MzZoLTIuNjQ0VjExLjcxMWEyMS4xMjggMjEuMTI4IDAgMCAxIDEuOTg4LS40MTYgMTUuMTMgMTUuMTMgMCAwIDEgMi40OTItLjE5NmMuOTAzIDAgMS43MTIuMTM4IDIuNDI2LjQxNWE1LjA2IDUuMDYgMCAwIDEgMS44MjUgMS4xOTEgNS4yNTIgNS4yNTIgMCAwIDEgMS4xNTggMS44OGMuMjcuNzM1LjQwNCAxLjU2Mi40MDQgMi40OG01LjU5NSAzLjgwM2MuNyAwIDEuMjEtLjA4NCAxLjUzLS4yNTEuMzItLjE2OC40ODEtLjQ1Ni40ODEtLjg2NCAwLS4zNzgtLjE3MS0uNjkyLS41MTQtLjk0LS4zNDItLjI0Ny0uOTA3LS41MTYtMS42OTMtLjgwOGExMy4yNyAxMy4yNyAwIDAgMS0xLjMyMy0uNTU4IDQuNTA4IDQuNTA4IDAgMCAxLTEuMDM4LS42ODggMi44MiAyLjgyIDAgMCAxLS42ODgtLjk1Yy0uMTY4LS4zNzItLjI1Mi0uODI3LS4yNTItMS4zNjYgMC0xLjA1LjM4Ni0xLjg3NiAxLjE1OS0yLjQ4MS43NzItLjYwNCAxLjgyMS0uOTA3IDMuMTQ3LS45MDcuNjcgMCAxLjMxMS4wNjIgMS45MjMuMTg2LjYxMi4xMjQgMS4wNzEuMjQ0IDEuMzc3LjM2bC0uNDggMi4xNDJhNi40ODYgNi40ODYgMCAwIDAtMS4xMTUtLjM2IDYuNzUgNi43NSAwIDAgMC0xLjU3NC0uMTY0Yy0uNTQgMC0uOTc2LjA5LTEuMzExLjI3M2EuODk3Ljg5NyAwIDAgMC0uNTAzLjg0MWMwIC4xOS4wMzMuMzU4LjA5OC41MDMuMDY2LjE0Ni4xNzkuMjguMzQuNDA0LjE2LjEyNC4zNy4yNDguNjMzLjM3Mi4yNjIuMTI0LjU4Mi4yNTEuOTYyLjM4MmExNC44MSAxNC44MSAwIDAgMSAxLjU5NS42ODljLjQzNy4yMjYuNzk4LjQ4IDEuMDgyLjc2NC4yODQuMjg1LjQ5Mi42MDkuNjIzLjk3My4xMy4zNjUuMTk2LjgwMi4xOTYgMS4zMTEgMCAxLjA5My0uNDA0IDEuOTItMS4yMTMgMi40ODEtLjgwOC41Ni0xLjk2My44NDEtMy40NjQuODQxLTEuMDA1IDAtMS44MTMtLjA4NC0yLjQyNi0uMjUxLS42MTEtLjE2Ny0xLjA0MS0uMzAyLTEuMjg5LS40MDRsLjQ1OS0yLjIwOGMuMzk0LjE2Ljg2My4zMTQgMS40MS40NmE3LjI5OCA3LjI5OCAwIDAgMCAxLjg2OC4yMThNOTIuMTk4IDkuNjRsLjI4OSAxLjYwMWE1LjAyNSA1LjAyNSAwIDAgMSA1Ljk5OC0uMjUybDEuNzctLjMxOS4zMS0xLjcwM2E3Ljg2NiA3Ljg2NiAwIDAgMC0zLjk4LTEuNjU2IDcuODgzIDcuODgzIDAgMCAwLTYuMjM0IDEuOTk0bDEuODQ3LjMzNnptOS4xNjkgMi4xNDRsLTEuNzEyLjMwOWE1LjAyMyA1LjAyMyAwIDAgMSAuMzE5IDUuNjY3bC4zMjUgMS44MDQgMS43LjMxYTcuODY2IDcuODY2IDAgMCAwIDEuNTA2LTMuNzg0IDcuODggNy44OCAwIDAgMC0xLjgyMi02LjA0bC0uMzE2IDEuNzM0em0tMTEuMzMgNi43MjZsMS42MTMtLjI5MWE1LjAyMyA1LjAyMyAwIDAgMS0uMjU2LTUuNzQ2bC0uMzEtMS43Mi0xLjc2LS4zMmE3Ljg2NCA3Ljg2NCAwIDAgMC0xLjUxNyAzLjc5OCA3Ljg4MyA3Ljg4MyAwIDAgMCAxLjg5MyA2LjEyNmwuMzM3LTEuODQ3em05LjE0OCAyLjE2NmwtLjI5Ny0xLjY1YTUuMDI0IDUuMDI0IDAgMCAxLTYuMDc1LjI5OGwtMS42NjQuMy0uMzI2IDEuNzkxYTcuODY3IDcuODY3IDAgMCAwIDMuOTAzIDEuNTk1IDcuODg0IDcuODg0IDAgMCAwIDYuMjUtMi4wMDdsLTEuNzkxLS4zMjd6TTE4LjI1NCAzMC45ODVjLTQuNjc0IDAtOC40NzctMy44MDMtOC40NzctOC40Nzd2LTEuODY2YTIuNTU5IDIuNTU5IDAgMSAxIDUuMTE4IDB2MS44NjZhMy4zNjIgMy4zNjIgMCAwIDAgMy4zNTkgMy4zNTkgMy4zNjIgMy4zNjIgMCAwIDAgMy4zNTgtMy4zNTl2LTEuODY2YTIuNTU5IDIuNTU5IDAgMCAxIDUuMTE4IDB2MS44NjZjMCA0LjY3NC0zLjgwMiA4LjQ3Ny04LjQ3NiA4LjQ3NyIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLjE4NikiPjxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj48dXNlIHhsaW5rOmhyZWY9IiNhIi8+PC9tYXNrPjxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTMzLjk1NCA5Ljg1Yy0uNjc5IDAtMS4yOTQuMjY4LTEuNzUyLjctLjc3Ni41LTEuNzIuODAyLTIuODE0LjgwMi0xLjA5IDAtMS44MjYtLjMwMS0yLjU5Ny0uNzk3YTMuMjQ4IDMuMjQ4IDAgMCAwLS44MTItLjgwOGMtLjQ4OC0uNzYzLS43ODEtMS41MDctLjc4MS0yLjU4MiAwLTEuMDgzLjI5Ni0yLjAzNS43ODgtMi44MDdhMi41NTMgMi41NTMgMCAxIDAtMy43LS4wMDhjLjQ5OS43NzcuODAyIDEuNzIxLjgwMiAyLjgxNSAwIDEuMDktLjMwMiAxLjgyNi0uNzk4IDIuNTk2YTMuMjMgMy4yMyAwIDAgMC0uOC44MDNjLS43ODguNDktMi4xNTQuNzg4LTMuMjM2Ljc4OC0xLjA5MyAwLTIuNDYyLS4zMDMtMy4yNDYtLjhhMy4yNDggMy4yNDggMCAwIDAtLjc5LS43OWMtLjQ5Ny0uNzcxLS43OTktMS41MDgtLjc5OS0yLjU5NyAwLTEuMDk0LjMwNC0yLjAzOC44MDItMi44MTQuNDMzLS40NTguNy0xLjA3NC43LTEuNzUyYTIuNTUzIDIuNTUzIDAgMSAwLTQuNCAxLjc2Yy40OTIuNzcxLjc4OCAxLjcyMy43ODggMi44MDYgMCAxLjA3NS0uMjkzIDEuODE5LS43ODEgMi41ODJhMy4yNDUgMy4yNDUgMCAwIDAtLjgxMi44MDhjLS43Ny40OTYtMS41MDcuNzk3LTIuNTk3Ljc5Ny0xLjA5MyAwLTIuMDM3LS4zMDMtMi44MTQtLjgwMmEyLjU1MyAyLjU1MyAwIDEgMCAuMDA4IDMuN2MuNzcyLS40OTIgMS43MjMtLjc4OCAyLjgwNi0uNzg4IDEuMDc2IDAgMS44Mi4yOTQgMi41ODMuNzgyYTMuMjMgMy4yMyAwIDAgMCA1LjMxMi4wMTRjLjc4MS0uNDk3IDIuMTUxLS43OTYgMy4yNC0uNzk2IDEuMDggMCAyLjQ1LjI5NiAzLjIzNC43ODlhMy4yMjkgMy4yMjkgMCAwIDAgNS4zMTgtLjAwN2MuNzYzLS40ODggMS41MDctLjc4MiAyLjU4Mi0uNzgyIDEuMDgzIDAgMi4wMzQuMjk2IDIuODA2Ljc4OGEyLjU1MyAyLjU1MyAwIDEgMCAxLjc2LTQuNCIgbWFzaz0idXJsKCNiKSIvPjwvZz48L2c+PC9zdmc+Cg==\";\nexport { SvgLogo31 as ReactComponent };","// istanbul ignore file\nimport React from \"react\";\n\nexport function BtnExitDashboardMode(): React.ReactElement {\n return (\n <a className=\"btn-exit-dashboard-mode\" role=\"button\">\n <svg\n viewBox=\"64 64 896 896\"\n focusable=\"false\"\n data-icon=\"poweroff\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M705.6 124.9a8 8 0 00-11.6 7.2v64.2c0 5.5 2.9 10.6 7.5 13.6a352.2 352.2 0 0162.2 49.8c32.7 32.8 58.4 70.9 76.3 113.3a355 355 0 0127.9 138.7c0 48.1-9.4 94.8-27.9 138.7a355.92 355.92 0 01-76.3 113.3 353.06 353.06 0 01-113.2 76.4c-43.8 18.6-90.5 28-138.5 28s-94.7-9.4-138.5-28a353.06 353.06 0 01-113.2-76.4A355.92 355.92 0 01184 650.4a355 355 0 01-27.9-138.7c0-48.1 9.4-94.8 27.9-138.7 17.9-42.4 43.6-80.5 76.3-113.3 19-19 39.8-35.6 62.2-49.8 4.7-2.9 7.5-8.1 7.5-13.6V132c0-6-6.3-9.8-11.6-7.2C178.5 195.2 82 339.3 80 506.3 77.2 745.1 272.5 943.5 511.2 944c239 .5 432.8-193.3 432.8-432.4 0-169.2-97-315.7-238.4-386.7zM480 560h64c4.4 0 8-3.6 8-8V88c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z\"></path>\n </svg>\n </a>\n );\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { PageTitle } from \"../page-title/PageTitle\";\nimport { ReactComponent as Logo } from \"../images/logo-3.1.svg\";\nimport { BtnExitDashboardMode } from \"./BtnExitDashboardMode\";\nimport { getRuntime } from \"@next-core/brick-kit\";\n\ninterface MicroAppProps {\n bannerPageTitle?: string;\n bannerStyle?: React.CSSProperties;\n pageTitle?: string;\n noGap?: boolean;\n dashboardMode?: boolean;\n}\n\nexport function MicroApp(props: MicroAppProps): React.ReactElement {\n const { dashboard_mode_logo_url } = getRuntime().getBrandSettings();\n return (\n <>\n <div className=\"banner-container\" style={props.bannerStyle}>\n <div className=\"banner-header-container\">\n <div className=\"banner-page-title\">\n {props.bannerPageTitle ? (\n <PageTitle pageTitle={props.bannerPageTitle} />\n ) : (\n <slot id=\"bannerTitleBarSlot\" name=\"bannerTitleBar\" />\n )}\n </div>\n <div className=\"banner-toolbar\">\n <slot id=\"bannerToolbarSlot\" name=\"bannerToolbar\" />\n </div>\n </div>\n <slot id=\"bannerSlot\" name=\"banner\" />\n </div>\n <div className=\"micro-app-container\">\n <div className=\"header-container\">\n <div className=\"page-title\">\n {props.pageTitle ? (\n <PageTitle\n pageTitle={props.pageTitle}\n dashboardMode={props.dashboardMode}\n />\n ) : (\n <slot id=\"titleBarSlot\" name=\"titleBar\" />\n )}\n </div>\n <div className=\"toolbar\">\n <slot id=\"toolbarSlot\" name=\"toolbar\" />\n </div>\n {props.dashboardMode && (\n <>\n <div className=\"logo-in-dashboard-mode\">\n {dashboard_mode_logo_url ? (\n <img src={dashboard_mode_logo_url} style={{ height: 32 }} />\n ) : (\n <Logo />\n )}\n </div>\n <BtnExitDashboardMode />\n </>\n )}\n </div>\n <div className=\"main-container\">\n <div className=\"sub-menu-container\">\n <slot id=\"subMenuSlot\" name=\"subMenu\" />\n </div>\n <div className=\"content-container\">\n <div\n className={classNames(\"content-grid\", {\n \"no-gap\": props.noGap,\n })}\n >\n <slot id=\"contentSlot\" name=\"content\" />\n </div>\n </div>\n </div>\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { MicroApp } from \"./MicroApp\";\nimport {\n UpdatingElement,\n property,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\n\nimport styles from \"./MicroApp.shadow.css\";\n\n// ** Best Practices **\n// https://developers.google.com/web/fundamentals/web-components/best-practices\n\n// ** Set a :host display style (e.g. block, inline-block, flex)\n// unless you prefer the default of inline. **\n// ** Add a :host display style that respects the hidden attribute. **\n\n/**\n * @id basic-bricks.micro-view\n * @name basic-bricks.micro-view\n * @docKind brick\n * @description 通用页面视图容器, 提供了 titleBar、toolbar、content、subMenu、banner、bannerTitleBar、bannerToolbar 插槽\n * @author steve\n * @slots\n * titleBar: 左上角页面标题\n * toolbar: 右上角页面操作栏\n * content: 内容区\n * subMenu: 内面内的左侧子菜单\n * banner: 顶部的 banner 的内容区\n * bannerTitleBar: 顶部的 banner 的标题\n * bannerToolbar: 顶部的 banner 的操作栏\n * @history\n * 1.19.0:新增构件\n * 1.89.0:新增 bannerPageTitle、bannerStyle 属性,banner、bannerTitleBar、bannerToolbar 插槽\n * @memo\n * @noInheritDoc\n */\nexport class MicroViewElement extends UpdatingElement {\n /**\n * @kind string\n * @required -\n * @default -\n * @description 设置标题。如果要使用复杂的标题构件,请使用插槽 `titleBar`\n * @group basic\n */\n @property()\n pageTitle: string;\n\n /**\n * @kind boolean\n * @required -\n * @default `false`\n * @description 内容区是否需要设置`overflow-x: auto`\n * @group basic\n */\n @property({\n type: Boolean,\n })\n overflowXAuto: boolean;\n\n /**\n * @kind boolean\n * @required -\n * @default `false`\n * @description 内容区默认为 grid 布局且有默认的 gap,设为 `true` 则使之没有 gap。\n * @group basic\n */\n @property({\n type: Boolean,\n })\n noGap: boolean;\n\n /**\n * @kind boolean\n * @default `false`\n * @description 是否启用大屏模式。\n * @group basic\n */\n @property({\n type: Boolean,\n })\n dashboardMode: boolean;\n\n /**\n * @kind boolean\n * @default `false`\n * @description 是否隐藏工具栏(常用语大屏模式)。\n * @group basic\n */\n @property({\n type: Boolean,\n })\n hideToolbar: boolean;\n\n /**\n * @kind string\n * @required -\n * @default -\n * @description 设置 banner 标题。如果要使用复杂的标题构件,请使用插槽 `bannerTitleBar`\n * @group advanced\n */\n @property()\n bannerPageTitle: string;\n\n /**\n * @default -\n * @description banner 的样式\n * @group advanced\n */\n @property({\n attribute: false,\n })\n bannerStyle: React.CSSProperties;\n\n /**\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n hasSubMenu: boolean;\n\n /**\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n hasTitleBar: boolean;\n\n /**\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n hasToolbar: boolean;\n\n /**\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n hasBanner: boolean;\n\n /**\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n hasBannerTitleBar: boolean;\n\n /**\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n hasBannerToolbar: boolean;\n\n /**\n * @description 用户点击退出大屏模式时触发。\n */\n @event({\n type: \"mode.dashboard.exit\",\n })\n private _modeDashboardExitEmitter: EventEmitter;\n\n private _mountPoint: HTMLElement;\n\n constructor() {\n super();\n\n // ** Create a shadow root to encapsulate styles. **\n // ** Create your shadow root in the constructor. **\n const shadowRoot = this.attachShadow({ mode: \"open\" });\n\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = styles;\n shadowRoot.appendChild(styleElement);\n\n this._mountPoint = document.createElement(\"div\");\n // ** Place any children the element creates into its shadow root. **\n shadowRoot.appendChild(this._mountPoint);\n }\n\n connectedCallback(): void {\n this._initInternalListeners();\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this._mountPoint);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <MicroApp\n noGap={this.noGap}\n pageTitle={this.pageTitle}\n dashboardMode={this.dashboardMode}\n bannerPageTitle={this.bannerPageTitle}\n bannerStyle={this.bannerStyle}\n />,\n this._mountPoint,\n () => {\n const subMenuSlotSelector = \"#subMenuSlot\";\n const subMenuSlot = this._getSlotBySelector(subMenuSlotSelector);\n if (subMenuSlot) {\n this.hasSubMenu = this._checkSlotBySelector(subMenuSlotSelector);\n subMenuSlot.addEventListener(\"slotchange\", () => {\n this.hasSubMenu = this._checkSlotBySelector(subMenuSlotSelector);\n });\n }\n const titleBarSlotSelector = \"#titleBarSlot\";\n const titleBarSlot = this._getSlotBySelector(titleBarSlotSelector);\n if (this.pageTitle) {\n this.hasTitleBar = true;\n } else if (titleBarSlot) {\n this.hasTitleBar = this._checkSlotBySelector(titleBarSlotSelector);\n titleBarSlot.addEventListener(\"slotchange\", () => {\n this.hasTitleBar = this._checkSlotBySelector(\n titleBarSlotSelector\n );\n });\n }\n const toolbarSlotSelector = \"#toolbarSlot\";\n const toolbarSlot = this._getSlotBySelector(toolbarSlotSelector);\n if (toolbarSlot) {\n this.hasToolbar = this._checkSlotBySelector(toolbarSlotSelector);\n toolbarSlot.addEventListener(\"slotchange\", () => {\n this.hasToolbar = this._checkSlotBySelector(toolbarSlotSelector);\n });\n }\n const bannerSlotSelector = \"#bannerSlot\";\n const bannerSlot = this._getSlotBySelector(bannerSlotSelector);\n if (this.bannerStyle) {\n this.hasBanner = true;\n } else if (bannerSlot) {\n this.hasBanner = this._checkSlotBySelector(bannerSlotSelector);\n bannerSlot.addEventListener(\"slotchange\", () => {\n this.hasBanner = this._checkSlotBySelector(bannerSlotSelector);\n });\n }\n const bannerTitleBarSlotSelector = \"#bannerTitleBarSlot\";\n const bannerTitleBarSlot = this._getSlotBySelector(\n bannerTitleBarSlotSelector\n );\n if (this.bannerPageTitle) {\n this.hasBannerTitleBar = true;\n } else if (bannerTitleBarSlot) {\n this.hasBannerTitleBar = this._checkSlotBySelector(\n bannerTitleBarSlotSelector\n );\n bannerTitleBarSlot.addEventListener(\"slotchange\", () => {\n this.hasBannerTitleBar = this._checkSlotBySelector(\n bannerTitleBarSlotSelector\n );\n });\n }\n const bannerToolbarSlotSelector = \"#bannerToolbarSlot\";\n const bannerToolbarSlot = this._getSlotBySelector(\n bannerToolbarSlotSelector\n );\n if (bannerToolbarSlot) {\n this.hasBannerToolbar = this._checkSlotBySelector(\n bannerToolbarSlotSelector\n );\n bannerToolbarSlot.addEventListener(\"slotchange\", () => {\n this.hasBannerToolbar = this._checkSlotBySelector(\n bannerToolbarSlotSelector\n );\n });\n }\n }\n );\n }\n }\n\n // Todo(steve): refactor after upgraded to react v17.\n // istanbul ignore next\n private _initInternalListeners(): void {\n this.addEventListener(\"click\", (e) => {\n const paths = e.composedPath() as HTMLElement[];\n for (const dom of paths) {\n if (dom === this) {\n break;\n }\n if (\n dom.tagName &&\n dom.tagName === \"A\" &&\n dom.className.includes(\"btn-exit-dashboard-mode\")\n ) {\n this._modeDashboardExitEmitter.emit();\n break;\n }\n }\n });\n }\n\n private _getSlotBySelector(selector: string): HTMLSlotElement {\n return this.shadowRoot.querySelector(selector) as HTMLSlotElement;\n }\n\n private _checkSlotBySelector = (selector: string): boolean => {\n const slot = this._getSlotBySelector(selector);\n if (slot) {\n const assignedNodes = slot.assignedNodes();\n return (\n assignedNodes.length > 0 &&\n (assignedNodes as HTMLElement[]).some((node) => node.hidden !== true)\n );\n }\n };\n}\n\n// `basic-bricks.micro-app` is deprecated cause its misunderstanding name.\n// Use `basic-bricks.micro-view` instead.\ncustomElements.define(\"basic-bricks.micro-view\", MicroViewElement);\nclass MicroAppElement extends MicroViewElement {}\ncustomElements.define(\"basic-bricks.micro-app\", MicroAppElement);\n","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"innerRef\", \"replace\", \"to\"];\n// Ref https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/modules/Link.js\nimport React, { useMemo } from \"react\";\nimport { createLocation } from \"history\";\nimport { getHistory } from \"@next-core/brick-kit\";\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nexport function Link(props) {\n var {\n innerRef,\n replace,\n to\n } = props,\n rest = _objectWithoutProperties(props, _excluded); // eslint-disable-line no-unused-vars\n\n\n var history = getHistory();\n var href = useMemo(() => {\n if (props.href) {\n return props.href;\n } else {\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n return location ? history.createHref(location) : \"\";\n }\n }, [props.href, to, history]);\n\n var handleClick = (event, history) => {\n if (props.onClick) props.onClick(event);\n if (props.href) return;\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && (!props.target || props.target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n if (!to) return;\n var method = replace ? history.replace : history.push;\n method(to);\n }\n };\n\n return /*#__PURE__*/React.createElement(\"a\", _extends({}, rest, {\n onClick: event => handleClick(event, history),\n href: href,\n ref: innerRef\n }));\n}","export var Colors;\n\n(function (Colors) {\n Colors[\"green\"] = \"green\";\n Colors[\"red\"] = \"red\";\n Colors[\"blue\"] = \"blue\";\n Colors[\"orange\"] = \"orange\";\n Colors[\"cyan\"] = \"cyan\";\n Colors[\"purple\"] = \"purple\";\n Colors[\"geekblue\"] = \"geekblue\";\n Colors[\"gray\"] = \"gray\";\n})(Colors || (Colors = {}));\n\nexport var COLORS_MAP = {\n [Colors.green]: {\n color: \"var(--theme-green-color)\",\n background: \"var(--theme-green-background)\",\n borderColor: \"var(--theme-green-border-color)\"\n },\n [Colors.red]: {\n color: \"var(--theme-red-color)\",\n background: \"var(--theme-red-background)\",\n borderColor: \"var(--theme-red-border-color)\"\n },\n [Colors.blue]: {\n color: \"var(--theme-blue-color)\",\n background: \"var(--theme-blue-background)\",\n borderColor: \"var(--theme-blue-border-color)\"\n },\n [Colors.orange]: {\n color: \"var(--theme-orange-color)\",\n background: \"var(--theme-orange-background)\",\n borderColor: \"var(--theme-orange-border-color)\"\n },\n [Colors.cyan]: {\n color: \"var(--theme-cyan-color)\",\n background: \"var(--theme-cyan-background)\",\n borderColor: \"var(--theme-cyan-border-color)\"\n },\n [Colors.purple]: {\n color: \"var(--theme-purple-color)\",\n background: \"var(--theme-purple-background)\",\n borderColor: \"var(--theme-purple-border-color)\"\n },\n [Colors.geekblue]: {\n color: \"var(--theme-geekblue-color)\",\n background: \"var(--theme-geekblue-background)\",\n borderColor: \"var(--theme-geekblue-border-color)\"\n },\n [Colors.gray]: {\n color: \"var(--theme-gray-color)\",\n background: \"var(--theme-gray-background)\",\n borderColor: \"var(--theme-gray-border-color)\"\n }\n};\n/**\n * 如果提供的颜色值是平台提供的规范颜色,则转换为使用平台规范的颜色定义,包括color、background、borderColor,不是的话则原样输出。\n * @param color {string} 颜色值\n * @return {color:string;background:string;borderColor:string;} 返回处理后的对应颜色值\n */\n\nexport function getColor(color) {\n var _COLORS_MAP;\n\n return (_COLORS_MAP = COLORS_MAP[color]) !== null && _COLORS_MAP !== void 0 ? _COLORS_MAP : {\n color,\n background: color,\n borderColor: color\n };\n}","import api from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../css-loader/dist/cjs.js??ref--12-1!../../../../postcss-loader/src/index.js??postcss!./GeneralIcon.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport React, { useMemo } from \"react\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\nimport Icon from \"@ant-design/icons\";\nimport { Avatar } from \"antd\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { BrickIcon } from \"@next-core/brick-icons\";\nimport { COLORS_MAP, getColor } from \"./utils/getColor\";\nimport classnames from \"classnames\";\nimport cssStyle from \"./GeneralIcon.module.css\";\nimport { uniqueId } from \"lodash\";\n\nfunction isGradientColor(color) {\n return color !== undefined && (color === null || color === void 0 ? void 0 : color.startColor) !== undefined && (color === null || color === void 0 ? void 0 : color.endColor) !== undefined;\n}\n\nexport function GeneralIcon({\n icon,\n bg,\n size,\n shape,\n reverseBgColor,\n onClick,\n showEmptyIcon,\n style\n}) {\n var getStyle = icon => {\n var mergedStyle;\n\n if (icon !== null && icon !== void 0 && icon.color) {\n if (!isGradientColor(icon.color)) {\n if (bg) {\n if (COLORS_MAP[icon.color]) {\n if (reverseBgColor) {\n mergedStyle = {\n color: \"#ffffff\",\n backgroundColor: getColor(icon.color).color\n };\n } else {\n mergedStyle = getColor(icon.color);\n }\n } else {\n mergedStyle = {\n color: \"#ffffff\",\n backgroundColor: icon.color\n };\n }\n } else {\n mergedStyle = {\n color: COLORS_MAP[icon.color] ? getColor(icon.color).color : icon.color\n };\n }\n } else {\n mergedStyle = {\n color: \"transparent\"\n };\n }\n }\n\n return mergedStyle;\n };\n\n var getDefaultIcon = (bg, mergedStyle, iconNode) => {\n var _ref;\n\n return bg ? /*#__PURE__*/React.createElement(Avatar, {\n icon: showEmptyIcon ? /*#__PURE__*/React.createElement(Icon, {\n style: mergedStyle,\n component: () => /*#__PURE__*/React.createElement(BrickIcon, {\n icon: \"empty-icon\",\n category: \"common\"\n }),\n onClick: onClick\n }) : iconNode,\n size: size !== null && size !== void 0 ? size : \"default\",\n shape: (_ref = shape) !== null && _ref !== void 0 ? _ref : \"circle\",\n style: mergedStyle,\n className: classnames({\n [cssStyle.roundSquareBg]: shape === \"round-square\"\n })\n }) : iconNode;\n };\n\n return useMemo(() => {\n var _icon$color;\n\n var iconNode = /*#__PURE__*/React.createElement(React.Fragment, null);\n var mergedStyle;\n if (!icon) icon = {};\n\n if (\"imgSrc\" in icon) {\n iconNode = /*#__PURE__*/React.createElement(\"img\", {\n src: icon.imgSrc,\n width: size,\n height: size,\n style: icon.imgStyle,\n onClick: onClick\n });\n } else if (\"lib\" in icon) {\n var _icon, _icon2;\n\n mergedStyle = getStyle(icon);\n\n if (style) {\n if (mergedStyle) {\n Object.assign(mergedStyle, style);\n } else {\n mergedStyle = style;\n }\n }\n\n var generalIconId = uniqueId(\"generalIcon\");\n var iconType = ((_icon = icon) === null || _icon === void 0 ? void 0 : _icon.icon) || ((_icon2 = icon) === null || _icon2 === void 0 ? void 0 : _icon2.type);\n\n if (!icon || !iconType && showEmptyIcon) {\n return getDefaultIcon(bg, mergedStyle, iconNode);\n }\n\n if (icon.lib === \"antd\") {\n var type = icon.icon || icon.type;\n iconNode = /*#__PURE__*/React.createElement(LegacyIcon, {\n type: type,\n theme: icon.theme,\n style: mergedStyle,\n onClick: onClick,\n className: generalIconId,\n \"data-icon\": icon.icon || icon.type\n });\n }\n\n if (icon.lib === \"fa\") {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n var faIcon = icon.prefix ? [icon.prefix, icon.icon] : icon.icon;\n iconNode = /*#__PURE__*/React.createElement(Icon, {\n style: _objectSpread(_objectSpread({}, mergedStyle), {}, {\n verticalAlign: 0\n }),\n component: () =>\n /*#__PURE__*/\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n React.createElement(FontAwesomeIcon, {\n icon: faIcon,\n className: cssStyle.faIcon\n }),\n onClick: onClick,\n className: generalIconId,\n \"data-icon\": icon.icon\n });\n }\n\n if (icon.lib === \"easyops\") {\n iconNode = /*#__PURE__*/React.createElement(Icon, {\n style: mergedStyle,\n component: () => /*#__PURE__*/React.createElement(BrickIcon, {\n icon: icon.icon,\n category: icon.category\n }),\n onClick: onClick,\n className: generalIconId,\n \"data-icon\": icon.icon\n });\n }\n\n if (isGradientColor(icon.color)) {\n var gradientIconDirection;\n\n switch ((_icon$color = icon.color) === null || _icon$color === void 0 ? void 0 : _icon$color.direction) {\n case \"left-to-right\":\n gradientIconDirection = {\n x1: \"0\",\n y1: \"0\",\n x2: \"1\",\n y2: \"0\"\n };\n break;\n\n case \"top-to-bottom\":\n default:\n gradientIconDirection = {\n x1: \"0\",\n y1: \"0\",\n x2: \"0\",\n y2: \"1\"\n };\n }\n\n iconNode = /*#__PURE__*/React.createElement(React.Fragment, null, iconNode, /*#__PURE__*/React.createElement(\"div\", {\n style: {\n position: \"absolute\"\n }\n }, /*#__PURE__*/React.createElement(\"svg\", {\n width: \"0\",\n height: \"0\",\n \"aria-hidden\": true,\n focusable: false\n }, /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", _extends({\n id: \"linearGradient-\".concat(generalIconId)\n }, gradientIconDirection), \"`\", /*#__PURE__*/React.createElement(\"stop\", {\n offset: \"0%\",\n stopColor: icon.color.startColor\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: \"100%\",\n stopColor: icon.color.endColor\n })))), /*#__PURE__*/React.createElement(\"style\", null, \".\".concat(generalIconId, \" svg path {\\n fill: url(#linearGradient-\").concat(generalIconId, \");\\n }\"))));\n }\n\n if (bg) {\n var _ref2;\n\n iconNode = /*#__PURE__*/React.createElement(Avatar, {\n icon: iconNode,\n size: size !== null && size !== void 0 ? size : \"default\",\n shape: (_ref2 = shape) !== null && _ref2 !== void 0 ? _ref2 : \"circle\",\n style: _objectSpread(_objectSpread({}, isGradientColor(icon.color) ? {\n backgroundColor: \"#fff\"\n } : {}), mergedStyle),\n className: classnames({\n [cssStyle.roundSquareBg]: shape === \"round-square\"\n })\n });\n }\n } else {\n return getDefaultIcon(bg, getStyle(icon), iconNode);\n }\n\n return iconNode;\n }, [bg, icon, onClick, reverseBgColor, shape, showEmptyIcon, size, style]);\n}","import api from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../css-loader/dist/cjs.js??ref--12-1!../../../../postcss-loader/src/index.js??postcss!./Sidebar.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport React from \"react\";\nimport { Menu } from \"antd\";\nimport { uniq } from \"lodash\";\nimport { parsePath } from \"history\";\nimport { getHistory } from \"@next-core/brick-kit\";\nimport { matchPath } from \"@next-core/brick-utils\";\nimport { Link } from \"./Link\";\nimport { GeneralIcon } from \"./GeneralIcon\";\nimport style from \"./Sidebar.module.css\";\n\nfunction isGroup(item) {\n return item.type === \"group\";\n}\n\nfunction isSubMenu(item) {\n return item.type === \"subMenu\";\n}\n\nexport function initMenuItemAndMatchCurrentPathKeys(menuItems, pathname, search, parentCursor) {\n var selectedKeys = [];\n var openedKeys = [];\n var cursor = 0;\n menuItems.forEach(item => {\n // key的格式最终为0,1,2,0.1,0.2,0.1.1,0.1.2\n item.key = parentCursor === \"\" ? \"\".concat(cursor) : \"\".concat(parentCursor, \".\").concat(cursor);\n\n if (isGroup(item) || isSubMenu(item)) {\n var tmp = initMenuItemAndMatchCurrentPathKeys(item.items, pathname, search, item.key);\n selectedKeys.push(...tmp.selectedKeys);\n\n if (tmp.selectedKeys.length || item.defaultExpanded) {\n openedKeys.push(item.key);\n }\n\n openedKeys.push(...tmp.openedKeys);\n } else {\n if (matchMenuItem(item, pathname, search)) {\n selectedKeys.push(String(item.key));\n }\n }\n\n cursor += 1;\n });\n\n if (selectedKeys.length && parentCursor !== \"\") {\n openedKeys.push(parentCursor);\n }\n\n return {\n selectedKeys: selectedKeys,\n openedKeys: openedKeys\n };\n}\nexport function matchMenuItem(item, pathname, search) {\n if (!item.to) return false;\n var to = typeof item.to === \"object\" ? item.to : parsePath(item.to); // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n\n var escapedPath = to.pathname.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n var match = !!matchPath(pathname, {\n path: escapedPath,\n exact: item.exact\n });\n\n if (!match && Array.isArray(item.activeIncludes)) {\n for (var include of item.activeIncludes) {\n match = !!matchPath(pathname, {\n path: include,\n exact: true\n });\n\n if (match) {\n break;\n }\n }\n }\n\n if (match && Array.isArray(item.activeExcludes)) {\n for (var _include of item.activeExcludes) {\n match = !matchPath(pathname, {\n path: _include,\n exact: true\n });\n\n if (!match) {\n break;\n }\n }\n }\n\n if (match && item.activeMatchSearch) {\n var toSearch = new URLSearchParams(to.search);\n var currentSearch = new URLSearchParams(search);\n\n for (var [key, value] of toSearch.entries()) {\n if (currentSearch.get(key) !== value) {\n match = false;\n break;\n }\n }\n }\n\n return match;\n}\nexport class Sidebar extends React.Component {\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"unlisten\", void 0);\n\n var history = getHistory();\n this.state = {\n location: history.location\n };\n this.unlisten = history.listen(location => {\n this.setState({\n location\n });\n });\n }\n\n componentWillUnmount() {\n this.unlisten();\n }\n\n renderSimpleMenuItem(item, ignoreTitle) {\n return /*#__PURE__*/React.createElement(Menu.Item, {\n key: String(item.key),\n title: ignoreTitle ? undefined : item.text\n }, /*#__PURE__*/React.createElement(Link, {\n to: item.to,\n href: item.href,\n target: item.target\n }, item.icon && /*#__PURE__*/React.createElement(\"i\", {\n className: style.menuItemIcon\n }, /*#__PURE__*/React.createElement(GeneralIcon, {\n icon: item.icon\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: style.menuItemText\n }, item.text)));\n }\n\n renderGroupMenu(item) {\n return /*#__PURE__*/React.createElement(Menu.ItemGroup, {\n key: item.key,\n title: item.title\n }, item.items.map(innerItem => this.renderMenuItem(innerItem)));\n }\n\n renderSubMenu(item) {\n return /*#__PURE__*/React.createElement(Menu.SubMenu, {\n key: item.key,\n title: /*#__PURE__*/React.createElement(\"span\", null, item.icon && /*#__PURE__*/React.createElement(\"i\", {\n className: style.menuItemIcon\n }, /*#__PURE__*/React.createElement(GeneralIcon, {\n icon: item.icon\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: style.menuItemText\n }, item.title))\n }, item.items.map(innerItem => this.renderMenuItem(innerItem, true)));\n }\n\n renderMenuItem(item, ignoreTitle) {\n return isSubMenu(item) ? this.renderSubMenu(item) : isGroup(item) ? this.renderGroupMenu(item) : this.renderSimpleMenuItem(item, ignoreTitle);\n }\n\n render() {\n var {\n pathname,\n search\n } = this.state.location;\n var {\n selectedKeys,\n openedKeys\n } = initMenuItemAndMatchCurrentPathKeys(this.props.menuItems, pathname, search, \"\");\n\n if (this.props.collapsed) {\n openedKeys = [];\n }\n\n return /*#__PURE__*/React.createElement(Menu, {\n mode: \"inline\",\n theme: this.props.theme,\n inlineIndent: this.props.inlineIndent,\n defaultOpenKeys: uniq(openedKeys),\n defaultSelectedKeys: selectedKeys,\n selectedKeys: selectedKeys,\n style: {\n borderRight: 0\n },\n className: style.menuContainer,\n inlineCollapsed: this.props.collapsed\n }, this.props.menuItems.map(item => this.renderMenuItem(item)));\n }\n\n}","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./AppMenu.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport { Tooltip } from \"antd\";\nimport { TooltipProps } from \"antd/lib/tooltip\";\n\ninterface MenuTooltipProps {\n title: string;\n collapsed: boolean;\n}\n\nexport function MenuTooltip(\n props: React.PropsWithChildren<MenuTooltipProps>\n): React.ReactElement {\n const tooltipProps: TooltipProps = {\n title: props.title\n };\n\n if (!props.collapsed) {\n tooltipProps.title = null;\n tooltipProps.visible = false;\n }\n\n return (\n <Tooltip\n {...tooltipProps}\n placement=\"right\"\n overlayClassName=\"ant-menu-inline-collapsed-tooltip\"\n >\n {props.children}\n </Tooltip>\n );\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { getRuntime, RelatedApp } from \"@next-core/brick-kit\";\nimport { MatchResult } from \"@next-core/brick-types\";\nimport { Link } from \"@next-libs/basic-components\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport styles from \"../AppMenu.module.css\";\nimport { MenuTooltip } from \"../MenuTooltip/MenuTooltip\";\n\nexport function OtherAppMenu(props: {\n app: RelatedApp;\n matchResult: MatchResult;\n collapsed: boolean;\n}): React.ReactElement {\n const realApp = getRuntime()\n .getMicroApps({ excludeInstalling: true, includeInternal: true })\n .find((item) => item.id === props.app.microAppId);\n if (!realApp) {\n return null;\n }\n return (\n <div className={classNames(styles.menuGroup)}>\n <div className={styles.menuTitle}>\n <MenuTooltip collapsed={props.collapsed} title={realApp.localeName}>\n <Link\n to={replaceParams(props.app.subPath, props.matchResult)}\n className={styles.menuTitleLink}\n >\n <i className={styles.menuTitleIcon}>\n <GeneralIcon\n icon={\n realApp.menuIcon || {\n lib: \"antd\",\n type: \"question-circle\",\n }\n }\n />\n </i>\n <span className={styles.menuTitleText}>{realApp.localeName}</span>\n </Link>\n </MenuTooltip>\n </div>\n </div>\n );\n}\n\nfunction replaceParams(path: string, match: MatchResult): string {\n let result = path;\n if (match?.params) {\n for (const [key, value] of Object.entries(match.params)) {\n result = result.replace(`\\${${key}}`, value);\n }\n }\n return result;\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport {\n getRuntime,\n useCurrentApp,\n useLocation,\n RelatedApp,\n} from \"@next-core/brick-kit\";\nimport { SidebarMenu, MatchResult } from \"@next-core/brick-types\";\nimport { matchPath } from \"@next-core/brick-utils\";\nimport { Link } from \"@next-libs/basic-components\";\nimport { GeneralIcon, Sidebar } from \"@next-libs/basic-components\";\nimport { OtherAppMenu } from \"./OtherAppMenu/OtherAppMenu\";\nimport { MenuTooltip } from \"./MenuTooltip/MenuTooltip\";\nimport styles from \"./AppMenu.module.css\";\n\nexport interface AppMenuProps {\n menu: SidebarMenu;\n collapsed?: boolean;\n}\n\nexport function getRelatedAppsByPath(\n relatedApps: RelatedApp[],\n pathname: string\n): {\n matchResult: MatchResult;\n prependApps: RelatedApp[];\n appendApps: RelatedApp[];\n} {\n let matchResult: MatchResult;\n let prependApps: RelatedApp[] = [];\n let appendApps: RelatedApp[] = [];\n\n const matchedAppIndex = relatedApps.findIndex((app) => {\n const path = app.subPath.replace(/\\$\\{(\\w+)\\}/g, \":$1\");\n matchResult = matchPath(pathname, {\n path,\n });\n return matchResult;\n });\n\n if (matchedAppIndex !== -1) {\n prependApps = relatedApps.slice(0, matchedAppIndex);\n appendApps = relatedApps.slice(matchedAppIndex + 1);\n }\n return { matchResult, prependApps, appendApps };\n}\n\nexport function AppMenu(props: AppMenuProps): React.ReactElement {\n const location = useLocation();\n const app = useCurrentApp();\n const [prependApps, setPrependApps] = React.useState<RelatedApp[]>([]);\n const [appendApps, setAppendApps] = React.useState<RelatedApp[]>([]);\n const [matchResult, setMatchResult] = React.useState<MatchResult>();\n\n const { menu, collapsed } = props;\n const showRelatedApps = menu?.showRelatedApps;\n\n React.useEffect(() => {\n (async () => {\n // `location.pathname` will be changed before app and menu changed.\n // If the current location is not matching `app.homepage`,\n // ignore the related apps refreshing.\n if (\n !app ||\n !matchPath(location.pathname, {\n path: app.homepage,\n })\n ) {\n return;\n }\n const relatedApps = await getRuntime().getRelatedAppsAsync(app.id);\n const tmp = getRelatedAppsByPath(\n showRelatedApps ? relatedApps : [],\n location.pathname\n );\n setPrependApps(tmp.prependApps);\n setAppendApps(tmp.appendApps);\n setMatchResult(tmp.matchResult);\n })();\n }, [app, location.pathname, showRelatedApps]);\n\n if (!menu) {\n return (\n <div\n className={classNames(styles.appMenu, {\n [styles.collapsed]: collapsed,\n })}\n />\n );\n }\n\n return (\n <div\n className={classNames(styles.appMenu, {\n [styles.collapsed]: collapsed,\n })}\n >\n {prependApps.map((app) => (\n <OtherAppMenu\n app={app}\n matchResult={matchResult}\n collapsed={collapsed}\n key={app.microAppId}\n />\n ))}\n <div className={styles.menuGroup}>\n {menu?.title && (\n <MenuTooltip collapsed={collapsed} title={menu.title}>\n {menu.link ? (\n <Link to={menu.link} className={styles.menuTitleLink}>\n <i className={styles.menuTitleIcon}>\n <GeneralIcon icon={menu.icon} />\n </i>\n <span className={styles.menuTitleText}>{menu.title}</span>\n </Link>\n ) : (\n <a className={styles.menuTitleLink} role=\"button\">\n <i className={styles.menuTitleIcon}>\n <GeneralIcon icon={menu.icon} />\n </i>\n <span className={styles.menuTitleText}>{menu.title}</span>\n </a>\n )}\n </MenuTooltip>\n )}\n <div\n className={classNames(styles.menuContainer, {\n [styles.empty]: !(\n Array.isArray(menu.menuItems) && menu.menuItems.length > 0\n ),\n })}\n >\n <Sidebar\n menuItems={menu.menuItems || []}\n inlineIndent={30}\n collapsed={collapsed}\n ></Sidebar>\n </div>\n </div>\n {appendApps.map((app) => (\n <OtherAppMenu\n app={app}\n matchResult={matchResult}\n collapsed={collapsed}\n key={app.microAppId}\n />\n ))}\n </div>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./LogoBar.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport { Link } from \"@next-libs/basic-components\";\nimport styles from \"./LogoBar.module.css\";\nimport { ReactComponent as Logo } from \"../../images/logo-3.1.svg\";\nimport { getRuntime } from \"@next-core/brick-kit\";\n\nexport function LogoBar(): React.ReactElement {\n const brand = getRuntime().getBrandSettings();\n return (\n <div className={styles.logoBar}>\n <Link to=\"/\" className={styles.logoLink}>\n {brand.menu_bar_logo_url ? (\n <img\n src={brand.menu_bar_logo_url}\n style={{ height: 32, verticalAlign: \"top\" }}\n />\n ) : (\n <Logo height={32} style={{ verticalAlign: \"top\" }} />\n )}\n </Link>\n </div>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./CollapseBar.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import * as React from \"react\";\n\nfunction SvgCollapse(props) {\n return <svg width={22} height={22} viewBox=\"0 0 22 22\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><g transform=\"rotate(90 10.5 11.5)\" stroke=\"#D9D9D9\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><circle cx={10.25} cy={11} r={10.02} /><path d=\"M14.91 9.17l-4.66 5.66-4.66-5.66\" /></g></g></svg>;\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjJweCIgaGVpZ2h0PSIyMnB4IiB2aWV3Qm94PSIwIDAgMjIgMjIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDU1LjIgKDc4MTgxKSAtIGh0dHBzOi8vc2tldGNoYXBwLmNvbSAtLT4KICAgIDx0aXRsZT7pgJrnlKjlm77moIcvZG93bi1jaXJjbGUtbzwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iNTAlIiB5MT0iMC4zMTkxMDg3NjElIiB4Mj0iNTAlIiB5Mj0iMTAwJSIgaWQ9ImxpbmVhckdyYWRpZW50LTEiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMzAzQzUwIiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMxQTFGMkMiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPHJlY3QgaWQ9InBhdGgtMiIgeD0iMCIgeT0iNTciIHdpZHRoPSIyNDAiIGhlaWdodD0iMTM5MyI+PC9yZWN0PgogICAgICAgIDxmaWx0ZXIgeD0iLTEyLjklIiB5PSItMi45JSIgd2lkdGg9IjEzNC4yJSIgaGVpZ2h0PSIxMDUuOSUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0zIj4KICAgICAgICAgICAgPGZlT2Zmc2V0IGR4PSI0IiBkeT0iMCIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSI+PC9mZU9mZnNldD4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNi41IiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwLjUgICAwIDAgMCAwIDAuNSAgIDAgMCAwIDAgMC41ICAwIDAgMCAwLjQ2NTQ5OTM0NCAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIiByZXN1bHQ9InNoYWRvd01hdHJpeE91dGVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICAgICAgICA8ZmVPZmZzZXQgZHg9IjEwIiBkeT0iMCIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMiI+PC9mZU9mZnNldD4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMTIiIGluPSJzaGFkb3dPZmZzZXRPdXRlcjIiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMiI+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAuNSAgIDAgMCAwIDAgMC41ICAgMCAwIDAgMCAwLjUgIDAgMCAwIDAuNDQxNTcwMTQ5IDAiIHR5cGU9Im1hdHJpeCIgaW49InNoYWRvd0JsdXJPdXRlcjIiIHJlc3VsdD0ic2hhZG93TWF0cml4T3V0ZXIyIj48L2ZlQ29sb3JNYXRyaXg+CiAgICAgICAgICAgIDxmZU1lcmdlPgogICAgICAgICAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJzaGFkb3dNYXRyaXhPdXRlcjEiPjwvZmVNZXJnZU5vZGU+CiAgICAgICAgICAgICAgICA8ZmVNZXJnZU5vZGUgaW49InNoYWRvd01hdHJpeE91dGVyMiI+PC9mZU1lcmdlTm9kZT4KICAgICAgICAgICAgPC9mZU1lcmdlPgogICAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkVhc3lvcHM1LjDpppbpobUv5rex6ImyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTA5LjAwMDAwMCwgLTEwNDQuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSLpgJrnlKjlm77moIcvZG93bi1jaXJjbGUtbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIwLjAwMDAwMCwgMTA1NS4wMDAwMDApIHJvdGF0ZSgtMjcwLjAwMDAwMCkgdHJhbnNsYXRlKC0xMjAuMDAwMDAwLCAtMTA1NS4wMDAwMDApIHRyYW5zbGF0ZSgxMDkuMDAwMDAwLCAxMDQ0LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZSIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMCIgeD0iMCIgeT0iMCIgd2lkdGg9IjIyIiBoZWlnaHQ9IjIyIj48L3JlY3Q+CiAgICAgICAgICAgICAgICA8ZyBpZD0iZG93bi1jaXJjbGUtbyIgc3Ryb2tlLXdpZHRoPSIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjAwMDAwMCwgMC4wMDAwMDApIiBzdHJva2U9IiNEOUQ5RDkiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+CiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbCIgY3g9IjEwLjI1IiBjeT0iMTEiIHI9IjEwLjAyIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICA8cG9seWxpbmUgaWQ9IlBhdGgiIHBvaW50cz0iMTQuOTEgOS4xNyAxMC4yNSAxNC44MyA1LjU5IDkuMTciPjwvcG9seWxpbmU+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9ImxvZ28vYmxhY2siIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExNi4wMDAwMDAsIC0xODEuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0ibG9nbyI+PC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4K\";\nexport { SvgCollapse as ReactComponent };","import React from \"react\";\nimport classNames from \"classnames\";\nimport { getRuntime } from \"@next-core/brick-kit\";\nimport styles from \"./CollapseBar.module.css\";\nimport { ReactComponent as CollapseSvg } from \"../../images/collapse.svg\";\n\ninterface CollapseBarProps {\n collapsed?: boolean;\n}\n\nexport function CollapseBar(props: CollapseBarProps): React.ReactElement {\n const handleCollapse = (): void => {\n const { menuBar } = getRuntime();\n menuBar.collapse(!menuBar.isCollapsed());\n };\n\n return (\n <a\n className={classNames(styles.collapseBar, {\n [styles.collapsed]: props.collapsed\n })}\n role=\"button\"\n onClick={handleCollapse}\n >\n <CollapseSvg width={22} height={22} />\n </a>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./AppSubMenu.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport { SidebarSubMenu } from \"@next-core/brick-types\";\nimport { Sidebar } from \"@next-libs/basic-components\";\nimport styles from \"./AppSubMenu.module.css\";\n\ninterface AppSubMenuProps {\n subMenu: SidebarSubMenu;\n}\n\nexport function AppSubMenu({ subMenu }: AppSubMenuProps): React.ReactElement {\n React.useEffect(() => {\n document.body.classList.add(\"has-sub-menu\");\n return () => {\n document.body.classList.remove(\"has-sub-menu\");\n };\n }, []);\n\n return (\n <div className={styles.appSubMenu} data-testid=\"sub-menu-bar\">\n <div className={styles.appSubMenuTitle}>{subMenu.title}</div>\n <Sidebar menuItems={subMenu.menuItems} inlineIndent={20} theme=\"light\" />\n </div>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./MenuBar.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport classNames from \"classnames\";\nimport { useCurrentApp } from \"@next-core/brick-kit\";\nimport { SidebarSubMenu } from \"@next-core/brick-types\";\nimport { AppMenu, AppMenuProps } from \"../AppMenu/AppMenu\";\nimport { LogoBar } from \"../LogoBar/LogoBar\";\nimport { CollapseBar } from \"../CollapseBar/CollapseBar\";\nimport { AppSubMenu } from \"../AppSubMenu/AppSubMenu\";\nimport styles from \"./MenuBar.module.css\";\n\nexport type MenuBarProps = AppMenuProps & {\n subMenu: SidebarSubMenu;\n};\n\nexport function MenuBar(props: MenuBarProps): React.ReactElement {\n const app = useCurrentApp();\n\n React.useEffect(() => {\n document.body.classList.toggle(\"menu-bar-collapsed\", !!props.collapsed);\n }, [props.collapsed]);\n\n return (\n <div>\n <div\n className={classNames(styles.menuBar, {\n [styles.developing]: app?.status === \"developing\",\n })}\n data-testid=\"main-menu-bar\"\n >\n <LogoBar />\n <AppMenu {...props} />\n <CollapseBar collapsed={props.collapsed} />\n </div>\n {props.subMenu && <AppSubMenu subMenu={props.subMenu} />}\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport {\n SidebarMenu,\n SidebarSubMenu,\n MenuBarBrick,\n} from \"@next-core/brick-types\";\nimport { MenuBar } from \"./MenuBar/MenuBar\";\n\n/**\n* @id basic-bricks.menu-bar\n* @name basic-bricks.menu-bar\n* @docKind brick\n* @editor shared-editors.general-menu--editor\n* @description 点击后注意左侧菜单即为效果图,点击浏览器返回\n* @author steve\n* @slots\n* @history\n* @memo\n* > Tips: 因为绝对定位的原因,当前菜单被覆盖,右侧即为效果图,如果需要返回开发者中心,请点击浏览器返回\n*```typescript\n* export interface SidebarMenu {\n* title: string;\n* icon?: MenuIcon;\n* link?: LocationDescriptor;\n* defaultCollapsed?: boolean;\n* menuItems: SidebarMenuItem[];\n* }\n* export declare type SidebarMenuItem = SidebarMenuSimpleItem | SidebarMenuGroup;\n* export interface SidebarMenuSimpleItem {\n* text: string;\n* to: LocationDescriptor;\n* icon?: MenuIcon;\n* type?: \"default\";\n* exact?: boolean;\n* activeIncludes?: string[];\n* activeExcludes?: string[];\n* key?: string;\n*}\n*export interface SidebarMenuGroup {\n* type: \"group\" | \"subMenu\";\n* title: string;\n* items: SidebarMenuItem[];\n* key?: string;\n*}\n* export declare type MenuIcon = AntdIcon | FaIcon | EasyopsIcon;\n* export interface AntdIcon {\n* lib: \"antd\";\n* type: string;\n* theme?: ThemeType;\n*}\n*export interface FaIcon {\n* lib: \"fa\";\n* icon: IconName;\n* prefix?: IconPrefix;\n*}\n*export interface EasyopsIcon {\n* lib: \"easyops\";\n* icon: string;\n* category?: string;\n*}\n*```\n\n*\n* @noInheritDoc\n*/\nexport class MenuBarElement extends UpdatingElement implements MenuBarBrick {\n /**\n * @kind SidebarMenu\n * @required true\n * @default -\n * @description 菜单项\n */\n @property({\n attribute: false,\n })\n menu: SidebarMenu;\n /**\n * @kind SidebarMenu\n * @required true\n * @default -\n * @description 二级菜单项\n */\n @property({\n attribute: false,\n })\n subMenu: SidebarSubMenu;\n\n /**\n * @kind boolean\n * @required true\n * @default -\n * @description 是否折叠\n */\n @property({\n type: Boolean,\n })\n collapsed: boolean;\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this.style.width = \"inherit\";\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <MenuBar\n menu={this.menu}\n subMenu={this.subMenu}\n collapsed={this.collapsed}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n\n set softExpanded(value: boolean) {\n // Do nothing now.\n }\n\n get softExpanded(): boolean {\n return false;\n }\n}\n\ncustomElements.define(\"basic-bricks.menu-bar\", MenuBarElement);\n","import { http, HttpOptions } from \"@next-core/brick-http\";\nimport { ModelLaunchpadCollection } from \"../../../model/user_service\";\nimport { ResponseBodyWrapper } from \"../../../wrapper\";\n\nexport interface LaunchpadApi_CreateCollectionRequestBody {\n /** LaunchpadCollection */\n launchpadCollection?: Partial<ModelLaunchpadCollection>;\n\n /** microApp Id, 当type为microApp时必填 */\n microAppId?: string;\n}\n\nexport interface LaunchpadApi_CreateCollectionResponseBody {\n /** LaunchpadCollection instanceId */\n launchpadInstanceId: string;\n}\n\n/**\n * @description 新增我的收藏\n * @endpoint POST /api/v1/launchpad/collection\n */\nexport const LaunchpadApi_createCollection = async (\n data: LaunchpadApi_CreateCollectionRequestBody,\n options?: HttpOptions\n): Promise<LaunchpadApi_CreateCollectionResponseBody> =>\n /**! @contract easyops.api.user_service.launchpad.CreateCollection */ (\n await http.post<\n ResponseBodyWrapper<LaunchpadApi_CreateCollectionResponseBody>\n >(\n \"api/gateway/user_service.launchpad.CreateCollection/api/v1/launchpad/collection\",\n data,\n options\n )\n ).data;\n","import { http, HttpOptions } from \"@next-core/brick-http\";\nimport { ModelLaunchpadCollection } from \"../../../model/user_service\";\nimport { ResponseListWrapper, ResponseBodyWrapper } from \"../../../wrapper\";\n\nexport interface LaunchpadApi_ListCollectionRequestParams {\n /** 页码 */\n page?: number;\n\n /** 页大小 */\n pageSize?: number;\n}\n\nexport interface LaunchpadApi_ListCollectionResponseItem {\n /** LaunchpadCollection */\n launchpadCollection?: Partial<ModelLaunchpadCollection>;\n\n /** microApp Id, 当type为microApp时有该字段 */\n microAppId?: string;\n}\n\nexport type LaunchpadApi_ListCollectionResponseBody = ResponseListWrapper<LaunchpadApi_ListCollectionResponseItem>;\n\n/**\n * @description 获取我的收藏列表\n * @endpoint LIST /api/v1/launchpad/collection\n */\nexport const LaunchpadApi_listCollection = async (\n params: LaunchpadApi_ListCollectionRequestParams,\n options?: HttpOptions\n): Promise<LaunchpadApi_ListCollectionResponseBody> =>\n /**! @contract easyops.api.user_service.launchpad.ListCollection */ (\n await http.get<\n ResponseBodyWrapper<LaunchpadApi_ListCollectionResponseBody>\n >(\n \"api/gateway/user_service.launchpad.ListCollection/api/v1/launchpad/collection\",\n { ...options, params }\n )\n ).data;\n","import { http, HttpOptions } from \"@next-core/brick-http\";\nimport { ModelUserInfo } from \"../../../model/user_service\";\nimport { ResponseBodyWrapper } from \"../../../wrapper\";\n\nexport type UserAdminApi_GetUserInfoV2ResponseBody = Partial<ModelUserInfo>;\n\n/**\n * @description 获取用户信息v2 (返回结构化信息,方便使用)\n * @endpoint GET /api/v1/users/detail/:username\n */\nexport const UserAdminApi_getUserInfoV2 = async (\n username: string | number,\n options?: HttpOptions\n): Promise<UserAdminApi_GetUserInfoV2ResponseBody> =>\n /**! @contract easyops.api.user_service.user_admin.GetUserInfoV2 */ (\n await http.get<ResponseBodyWrapper<UserAdminApi_GetUserInfoV2ResponseBody>>(\n `api/gateway/user_service.user_admin.GetUserInfoV2/api/v1/users/detail/${username}`,\n options\n )\n ).data;\n","import { http, HttpOptions } from \"@next-core/brick-http\";\nimport { ResponseBodyWrapper } from \"../../../wrapper\";\n\nexport interface CustomerApi_GetExpirationResponseBody {\n /** 过期时间戳 */\n expires: number;\n\n /** org是否已经是延期中状态 */\n updating: boolean;\n}\n\n/**\n * @description 获取过期时间戳\n * @endpoint GET /api/v1/customer/expiration\n */\nexport const CustomerApi_getExpiration = async (\n options?: HttpOptions\n): Promise<CustomerApi_GetExpirationResponseBody> =>\n /**! @contract easyops.api.air_admin_service.customer.GetExpiration */ (\n await http.get<ResponseBodyWrapper<CustomerApi_GetExpirationResponseBody>>(\n \"api/gateway/air_admin_service.customer.GetExpiration/api/v1/customer/expiration\",\n options\n )\n ).data;\n","import * as React from \"react\";\n\nfunction SvgLaunchpad(props) {\n return <svg width={16} height={16} viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><path fill=\"#EFF4FA\" d=\"M-212-20h1920v1449H-212z\" /><path fill=\"#EFF4FA\" d=\"M-212-19h1920v1449H-212z\" /><path d=\"M-212-20H40v56h-252z\" /><g fill=\"#167be0\"><path d=\"M0 0h4v4H0zM0 6h4v4H0zM6 0h4v4H6zM6 6h4v4H6zM12 0h4v4h-4zM12 6h4v4h-4zM0 12h4v4H0zM6 12h4v4H6zM12 12h4v4h-4z\" /></g></g></svg>;\n}\n\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDU1LjIgKDc4MTgxKSAtIGh0dHBzOi8vc2tldGNoYXBwLmNvbSAtLT4KICAgIDx0aXRsZT5pY29uLW1lbnU8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iRWFzeW9wczUuMOmmlumhtS/mt7HoibIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTIuMDAwMDAwLCAtMjAuMDAwMDAwKSI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUiIGZpbGw9IiNFRkY0RkEiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjE0NDkiPjwvcmVjdD4KICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZSIgZmlsbD0iI0VGRjRGQSIgeD0iMCIgeT0iMSIgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTQ0OSI+PC9yZWN0PgogICAgICAgICAgICA8ZyBpZD0ibG9nby9ibGFjayIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTE2LjAwMDAwMCwgLTE4MS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJsb2dvIj48L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0ibm9uZSIgeD0iMCIgeT0iMCIgd2lkdGg9IjI1MiIgaGVpZ2h0PSI1NiI+PC9yZWN0PgogICAgICAgICAgICA8ZyBpZD0iaWNvbi1tZW51IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTIuMDAwMDAwLCAyMC4wMDAwMDApIiBmaWxsPSIjMTY3YmUwIj4KICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tMTUiIHg9IjAiIHk9IjAiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2i5aSH5Lu9LTE2IiB4PSIwIiB5PSI2IiB3aWR0aD0iNCIgaGVpZ2h0PSI0Ij48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9ouWkh+S7vS0xNyIgeD0iNiIgeT0iMCIgd2lkdGg9IjQiIGhlaWdodD0iNCI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tMTgiIHg9IjYiIHk9IjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2i5aSH5Lu9LTE5IiB4PSIxMiIgeT0iMCIgd2lkdGg9IjQiIGhlaWdodD0iNCI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tMjAiIHg9IjEyIiB5PSI2IiB3aWR0aD0iNCIgaGVpZ2h0PSI0Ij48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9ouWkh+S7vS0yMSIgeD0iMCIgeT0iMTIiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2i5aSH5Lu9LTIyIiB4PSI2IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iNCI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tMjMiIHg9IjEyIiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iNCI+PC9yZWN0PgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4K\";\nexport { SvgLaunchpad as ReactComponent };","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./LaunchpadButton.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./SearchBar.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Input } from \"antd\";\nimport styles from \"./SearchBar.module.css\";\nimport { SearchOutlined } from \"@ant-design/icons\";\n\nexport interface SearchBarProps {\n onChange: (value: string) => void;\n}\n\nexport function SearchBar(props: SearchBarProps): React.ReactElement {\n const [focus, setFocus] = React.useState(false);\n\n const searchInputRef = React.useCallback((element) => {\n if (element) {\n // Wait for portal mounted first.\n Promise.resolve().then(() => {\n try {\n element.focus();\n } catch (e) {\n // Do nothing.\n }\n });\n }\n }, []);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n props.onChange(e.target.value);\n };\n\n const handleClick = (e: React.MouseEvent): void => {\n e.stopPropagation();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent): void => {\n const key =\n e.key ||\n /* istanbul ignore next: compatibility */ e.keyCode ||\n /* istanbul ignore next: compatibility */ e.which;\n if (\n [\n \"Tab\",\n \"Enter\",\n \"ArrowLeft\",\n \"ArrowUp\",\n \"ArrowRight\",\n \"ArrowDown\",\n 9,\n 13,\n 37,\n 38,\n 39,\n 40,\n ].includes(key)\n ) {\n e.preventDefault();\n }\n };\n\n const handleFocus = (): void => {\n setFocus(true);\n };\n\n const handleBlur = (): void => {\n setFocus(false);\n };\n\n return (\n <div\n className={classNames(styles.searchBar, {\n [styles.focus]: focus,\n })}\n >\n <div className={styles.inputContainer} onClick={handleClick}>\n <Input\n placeholder=\"通过名称/关键字搜索\"\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n prefix={<SearchOutlined />}\n ref={searchInputRef}\n />\n </div>\n </div>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./DesktopCell.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./DesktopApp.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport classNames from \"classnames\";\nimport {\n Loading3QuartersOutlined,\n PlusCircleFilled,\n PlusCircleOutlined,\n} from \"@ant-design/icons\";\nimport { getRuntime } from \"@next-core/brick-kit\";\nimport { MicroApp } from \"@next-core/brick-types\";\nimport { Link } from \"@next-libs/basic-components\";\nimport styles from \"./DesktopApp.module.css\";\nimport defaultAppIcon from \"../../images/default-app-icon.png\";\n\ninterface DesktopAppProps {\n app: MicroApp;\n isFavorite?: boolean;\n showAddIcon?: boolean;\n onAddClick?: () => void;\n onClick?: () => void;\n size?: string;\n}\n\nexport function DesktopApp({\n app,\n onAddClick,\n onClick,\n isFavorite,\n showAddIcon,\n size,\n}: DesktopAppProps): React.ReactElement {\n const installing = app.installStatus === \"running\";\n\n const handleAppClick = (e: React.MouseEvent): void => {\n e.stopPropagation();\n if (installing) {\n e.preventDefault();\n }\n onClick?.();\n getRuntime().resetWorkspaceStack();\n };\n\n const handleAddIconClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n onAddClick?.();\n };\n\n return (\n <>\n <Link\n className={classNames(\n styles.appLink,\n styles[size],\n app.iconBackground === \"circle\" ? styles.circle : styles.square,\n {\n [styles.installing]: installing,\n }\n )}\n to={app.homepage}\n onClick={handleAppClick}\n >\n <img\n className={styles.appIcon}\n src={\n app.icons && app.icons.large\n ? /^(\\/|https?:\\/\\/)/.test(app.icons.large)\n ? app.icons.large\n : `micro-apps/${app.id}/${app.icons.large}`\n : defaultAppIcon\n }\n />\n\n {showAddIcon && isFavorite && (\n <PlusCircleFilled\n className={classNames(\n styles.addIcon,\n app.iconBackground === \"circle\"\n ? styles.circleIcon\n : styles.squareIcon\n )}\n onClick={handleAddIconClick}\n />\n )}\n </Link>\n <span className={styles.appName}>\n {installing && (\n <Loading3QuartersOutlined spin style={{ paddingRight: 5 }} />\n )}\n {app.localeName}\n </span>\n </>\n );\n}\n","import React from \"react\";\nimport { NormalizedDesktopDir } from \"./interfaces\";\n\nexport interface DirWithCoordinates {\n dir: NormalizedDesktopDir;\n coordinates: {\n x: number;\n y: number;\n };\n activeIndex: number;\n}\n\nexport interface ContextOfDesktopDir {\n desktopDir?: DirWithCoordinates;\n setDesktopDir?: React.Dispatch<DirWithCoordinates>;\n}\n\nexport const DesktopDirContext = React.createContext<ContextOfDesktopDir>({});\n\nexport const useDesktopDirContext = (): ContextOfDesktopDir =>\n React.useContext(DesktopDirContext);\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./DesktopDir.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport classNames from \"classnames\";\nimport { useDesktopDirContext } from \"../DesktopDirContext\";\nimport styles from \"./DesktopDir.module.css\";\nimport defaultAppIcon from \"../../images/default-app-icon.png\";\nimport { NormalizedDesktopDir } from \"../interfaces\";\n\nexport function DesktopDir(props: NormalizedDesktopDir): React.ReactElement {\n const { setDesktopDir } = useDesktopDirContext();\n const handleDirClick = (e: React.MouseEvent): void => {\n e.stopPropagation();\n // 记录鼠标点击的位置,在文件夹展开时以此为原点做动画。\n setDesktopDir({\n dir: {\n name: props.name,\n items: props.items,\n },\n coordinates: {\n x: e.clientX,\n y: e.clientY,\n },\n activeIndex: -1,\n });\n };\n\n return (\n <>\n <a\n className={classNames(styles.dirLink, {\n [styles[props.size]]: !!props.size,\n })}\n onClick={handleDirClick}\n role=\"button\"\n >\n {props.items\n .slice(0, 4)\n .map((item) =>\n item.type === \"app\" ? (\n <img\n className={styles.appIcon}\n key={item.id}\n src={\n item.app.icons && item.app.icons.large\n ? /^(\\/|https?:\\/\\/)/.test(item.app.icons.large)\n ? item.app.icons.large\n : `micro-apps/${item.id}/${item.app.icons.large}`\n : defaultAppIcon\n }\n />\n ) : (\n <img\n className={styles.appIcon}\n key={item.id}\n src={defaultAppIcon}\n />\n )\n )}\n </a>\n <span className={styles.dirName}>{props.name}</span>\n </>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./DesktopCustom.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Link } from \"@next-libs/basic-components\";\nimport styles from \"./DesktopCustom.module.css\";\nimport defaultAppIcon from \"../../images/default-app-icon.png\";\nimport { PlusCircleFilled } from \"@ant-design/icons\";\n\ninterface DesktopCustomProps {\n name: string;\n url: string;\n isFavorite?: boolean;\n showAddIcon?: boolean;\n onAddClick: () => void;\n onClick?: () => void;\n size?: string;\n responsive?: boolean;\n}\n\nexport function DesktopCustom({\n name,\n url,\n showAddIcon,\n isFavorite,\n onClick,\n onAddClick,\n size,\n responsive = true,\n}: DesktopCustomProps): React.ReactElement {\n const handleItemClick = (e: React.MouseEvent): void => {\n e.stopPropagation();\n onClick?.();\n };\n\n const handleAddIconClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n onAddClick?.();\n };\n return (\n <>\n <Link\n className={classNames(styles.appLink, styles.circle, styles[size], {\n [styles.responsive]: responsive,\n })}\n href={url}\n target=\"_blank\"\n onClick={handleItemClick}\n >\n <img className={styles.appIcon} src={defaultAppIcon} />\n {showAddIcon && isFavorite && (\n <PlusCircleFilled\n className={classNames(styles.addIcon, styles.circleIcon)}\n onClick={handleAddIconClick}\n />\n )}\n </Link>\n <span className={styles.appName}>{name}</span>\n </>\n );\n}\n","export class JsonStorage {\n constructor(storage, prefix = \"brick-next-\") {\n this.storage = storage;\n this.prefix = prefix;\n }\n\n setItem(name, value) {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n\n getItem(name) {\n return JSON.parse(this.storage.getItem(this.prefix + name));\n }\n\n removeItem(name) {\n return this.storage.removeItem(this.prefix + name);\n }\n\n clear() {\n return this.storage.clear();\n }\n\n}","import { JsonStorage } from \"@next-libs/storage\";\nimport {\n MicroApp,\n DesktopItemCustom,\n DesktopItemApp,\n} from \"@next-core/brick-types\";\nimport {\n LaunchpadApi_ListCollectionResponseItem,\n LaunchpadApi_listCollection,\n LaunchpadApi_CreateCollectionRequestBody,\n LaunchpadApi_createCollection,\n LaunchpadApi_deleteCollection,\n} from \"@next-sdk/user-service-sdk\";\nimport { getRuntime, getAuth } from \"@next-core/brick-kit\";\nimport { pick } from \"lodash\";\n\nexport class LaunchpadService {\n readonly storageKey = `launchpad-recently-visited:${getAuth().org}`;\n private storage: JsonStorage;\n private favoriteList: LaunchpadApi_ListCollectionResponseItem[] = [];\n private filteredFavoriteList: LaunchpadApi_ListCollectionResponseItem[] = [];\n private microApps: MicroApp[] = [];\n private customList: DesktopItemCustom[] = [];\n private maxVisitorLength = 7;\n constructor() {\n this.storage = new JsonStorage(localStorage);\n const runtime = getRuntime();\n const desktops = runtime.getDesktops();\n\n this.customList = desktops\n .map((desktop) => desktop.items.filter((i) => i.type === \"custom\"))\n .flat() as DesktopItemCustom[];\n\n const microApps = runtime\n .getMicroApps()\n // 兼容较老版本接口未返回 `status` 的情况。\n .filter(\n (item) =>\n !item.status ||\n item.status === \"enabled\" ||\n item.status === \"developing\"\n );\n\n this.setMicroApps(microApps);\n }\n\n setMaxVisitorLength(value: number) {\n this.maxVisitorLength = value;\n }\n\n async fetchFavoriteList() {\n const result = (\n await LaunchpadApi_listCollection({ page: 1, pageSize: 25 })\n ).list;\n this.setFavorites(result);\n return result;\n }\n\n getFavoritesLength() {\n return this.favoriteList.length;\n }\n\n typeAdaptor(type: string): string {\n if (type === \"customItem\") {\n return \"custom\";\n }\n\n if (type === \"microApp\") {\n return \"app\";\n }\n\n return type;\n }\n\n setFavorites(list: LaunchpadApi_ListCollectionResponseItem[]): void {\n this.filteredFavoriteList = list.filter(\n (v) =>\n v.launchpadCollection.type === \"microApp\" ||\n (v.launchpadCollection as any).type === \"customItem\"\n );\n\n this.favoriteList = list;\n }\n\n setMicroApps(microApps: MicroApp[]) {\n this.microApps = microApps;\n this.syncValidRecentlyVisitor();\n }\n\n syncValidRecentlyVisitor() {\n const visitors = this.getAllVisitors();\n const result = visitors.filter((v) => {\n if (v.type === \"app\") {\n return this.microApps.some((app) => app.id === v.id);\n } else {\n return this.customList.some((f) => f.type === v.type && f.id === v.id);\n }\n });\n\n this.setAllVisitors(result);\n }\n\n async setAsFavorite(params: LaunchpadApi_CreateCollectionRequestBody) {\n await LaunchpadApi_createCollection(params, {\n interceptorParams: { ignoreLoadingBar: true },\n });\n }\n\n async deleteFavorite(id: string | number) {\n await LaunchpadApi_deleteCollection(id, {\n interceptorParams: { ignoreLoadingBar: true },\n });\n }\n\n isFavorite(item: DesktopItemApp | DesktopItemCustom) {\n if (item.type === \"app\") {\n return this.filteredFavoriteList.some(\n (f) =>\n this.typeAdaptor(f.launchpadCollection.type) === \"app\" &&\n f.microAppId === item.id\n );\n }\n\n return this.filteredFavoriteList.some(\n (f) =>\n this.typeAdaptor(f.launchpadCollection.type) === \"custom\" &&\n (f as any).customItemId === item.id\n );\n }\n\n getItem(\n type: \"app\" | \"custom\",\n id: string\n ): DesktopItemApp | DesktopItemCustom {\n return (this.storage.getItem(this.storageKey) || []).find(\n (v: DesktopItemApp | DesktopItemCustom) => v.id === id && v.type === type\n );\n }\n\n getItemIndex(type: \"app\" | \"custom\", id: string): number {\n return (this.storage.getItem(this.storageKey) || []).findIndex(\n (v: DesktopItemApp | DesktopItemCustom) => v.id === id && v.type === type\n );\n }\n\n hasItem(type: \"app\" | \"custom\", id: string): boolean {\n return (this.storage.getItem(this.storageKey) || []).some(\n (v: DesktopItemApp | DesktopItemCustom) => v.id === id && v.type === type\n );\n }\n\n getAllVisitors(): (DesktopItemApp | DesktopItemCustom)[] {\n return this.storage.getItem(this.storageKey) || [];\n }\n\n setItem(\n type: \"app\" | \"custom\",\n item: DesktopItemApp | DesktopItemCustom\n ): void {\n const visitors = this.getAllVisitors();\n\n if (!this.hasItem(type, item.id)) {\n visitors.unshift(item);\n } else {\n const index = this.getItemIndex(type, item.id);\n visitors.splice(index, 1);\n visitors.unshift(item);\n }\n\n // 默认只保存一行\n if (visitors.length > this.maxVisitorLength) {\n visitors.pop();\n }\n this.setAllVisitors(visitors);\n }\n\n setAllVisitors(visitors: (DesktopItemApp | DesktopItemCustom)[]) {\n this.storage.setItem(this.storageKey, visitors);\n }\n\n pushVisitor(\n type: \"app\" | \"custom\",\n item: MicroApp | DesktopItemCustom\n ): void {\n if (type === \"app\") {\n const app = item as MicroApp;\n item = {\n id: app.id,\n app: {\n name: app.name,\n icons: app.icons,\n localeName: app.localeName,\n id: app.id,\n homepage: app.homepage,\n } as MicroApp,\n type: \"app\",\n } as any;\n }\n\n this.setItem(type, item as DesktopItemApp | DesktopItemCustom);\n }\n\n getVisitor(\n type: \"app\" | \"custom\",\n id: string\n ): DesktopItemApp | DesktopItemCustom | undefined {\n return this.getItem(type, id);\n }\n\n getRealDesktopItem(\n item: LaunchpadApi_ListCollectionResponseItem\n ): MicroApp | DesktopItemCustom {\n if (item.launchpadCollection.type === \"microApp\") {\n return this.microApps.find((app) => app.id === item.microAppId);\n } else {\n return this.customList.find(\n (custom) => custom.id === (item as any).customItemId\n );\n }\n }\n\n setFavoriteAsVisitor(item: LaunchpadApi_ListCollectionResponseItem) {\n const type = this.typeAdaptor(item.launchpadCollection.type);\n if (type === \"link\") return;\n const data = this.getRealDesktopItem(item);\n if (data) {\n this.pushVisitor(type as \"custom\" | \"app\", data);\n }\n }\n\n getSitemapList() {\n const curMicroApps = getRuntime().getMicroApps({ includeInternal: true });\n const siteMapList = getRuntime().getLaunchpadSiteMap();\n\n return siteMapList?.map((item) => ({\n ...item,\n apps: (item.apps || []).map((row) => {\n const find = curMicroApps.find((item) => item.id === row.id) || {};\n return {\n ...row,\n ...pick(find, [\"name\", \"icons\", \"localeName\", \"homepage\"]),\n };\n }),\n }));\n }\n}\n\nconst service = new LaunchpadService();\nexport const launchpadService = service;\n","import { http, HttpOptions } from \"@next-core/brick-http\";\n\n/**\n * @description 删除我的收藏\n * @endpoint DELETE /api/v1/launchpad/collection/:instanceId\n */\nexport const LaunchpadApi_deleteCollection = (\n instanceId: string | number,\n options?: HttpOptions\n): Promise<void> =>\n /**! @contract easyops.api.user_service.launchpad.DeleteCollection */ http.delete<void>(\n `api/gateway/user_service.launchpad.DeleteCollection/api/v1/launchpad/collection/${instanceId}`,\n options\n );\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { DesktopItem, MicroApp } from \"@next-core/brick-types\";\nimport styles from \"./DesktopCell.module.css\";\nimport { DesktopApp } from \"../DesktopApp/DesktopApp\";\nimport { DesktopDir } from \"../DesktopDir/DesktopDir\";\nimport { DesktopCustom } from \"../DesktopCustom/DesktopCustom\";\nimport { launchpadService } from \"../LaunchpadService\";\nimport {\n DesktopItemApp,\n DesktopItemCustom,\n} from \"@next-core/brick-types/dist/types/manifest\";\nimport { Modal } from \"antd\";\n\ninterface DesktopCellProps {\n item: DesktopItem;\n active?: boolean;\n showAddIcon?: boolean;\n position?: \"left\" | \"center\" | \"right\";\n onSetAsFavorite?: () => void;\n isFavorite?: boolean;\n size?: string;\n}\n\nexport function DesktopCell(props: DesktopCellProps): React.ReactElement {\n const checkFavoriteUpperLimit = () => {\n const favoriteLength = launchpadService.getFavoritesLength();\n if (favoriteLength >= 25) {\n Modal.warning({\n // launchpad 遮罩层z-index为5000\n zIndex: 5001,\n title: \"收藏数量已达上限\",\n content: \"当前收藏链接数量已达上限(25个),请删除部分链接后再添加。\",\n });\n\n return false;\n }\n return true;\n };\n\n const addItemToFavorite = async () => {\n if (checkFavoriteUpperLimit()) {\n let params;\n if (props.item.type === \"app\") {\n const app = props.item as Partial<DesktopItemApp>;\n params = {\n microAppId: app.id,\n launchpadCollection: {\n type: \"microApp\",\n name: app.app.name,\n },\n };\n } else {\n const custom = props.item as DesktopItemCustom;\n params = {\n customItemId: custom.id,\n launchpadCollection: {\n type: \"customItem\",\n name: custom.name,\n },\n };\n }\n try {\n await launchpadService.setAsFavorite(params);\n props?.onSetAsFavorite?.();\n } catch (e) {\n // Noting to cache\n }\n }\n };\n\n const handleAppClick = () => {\n const app = (props.item as DesktopItemApp).app;\n launchpadService.pushVisitor(\"app\", app);\n };\n\n const handleCustomClick = () => {\n const custom = props.item as DesktopItemCustom;\n launchpadService.pushVisitor(\"custom\", custom);\n };\n\n return (\n <div\n className={classNames(styles.cellWrapper, {\n [styles.positionLeft]: props?.position === \"left\",\n })}\n >\n <div\n className={classNames(styles.cellItem, styles[props.size], {\n [styles.active]: props.active,\n })}\n >\n {props.item.type === \"app\" ? (\n <DesktopApp\n showAddIcon={props.showAddIcon}\n isFavorite={props.isFavorite}\n app={props.item.app}\n onClick={handleAppClick}\n onAddClick={addItemToFavorite}\n size={props.size}\n />\n ) : props.item.type === \"custom\" ? (\n <DesktopCustom\n showAddIcon={props.showAddIcon}\n isFavorite={props.isFavorite}\n name={props.item.name}\n url={props.item.url}\n onClick={handleCustomClick}\n onAddClick={addItemToFavorite}\n size={props.size}\n />\n ) : (\n <DesktopDir\n name={props.item.name}\n items={props.item.items}\n size={props.size}\n />\n )}\n </div>\n </div>\n );\n}\n","import React from \"react\";\n\ninterface LaunchpadSettings {\n columns: number;\n rows: number;\n}\n\nexport const LaunchpadSettingsContext = React.createContext<LaunchpadSettings>({\n columns: 7,\n rows: 4,\n});\n\nexport const useLaunchpadSettingsContext = (): LaunchpadSettings =>\n React.useContext(LaunchpadSettingsContext);\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./Desktop.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport { DesktopData } from \"@next-core/brick-types\";\nimport { DesktopCell } from \"../DesktopCell/DesktopCell\";\nimport { useLaunchpadSettingsContext } from \"../LaunchpadSettingsContext\";\nimport styles from \"./Desktop.module.css\";\n\ninterface DesktopProps {\n desktop: DesktopData;\n desktopCount: number;\n arrowWidthPercent: number;\n activeIndex: number;\n}\n\nexport function Desktop(props: DesktopProps): React.ReactElement {\n const { columns, rows } = useLaunchpadSettingsContext();\n\n return (\n <div\n className={styles.desktop}\n style={{\n padding: `0 ${props.arrowWidthPercent / props.desktopCount}%`,\n gridTemplateColumns: `repeat(${columns},1fr)`,\n gridTemplateRows: `repeat(${rows},1fr)`\n }}\n >\n {props.desktop.items.map((item, index) => (\n <DesktopCell\n key={index}\n item={item}\n active={index === props.activeIndex}\n />\n ))}\n </div>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./DesktopSlider.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./MyDesktop.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./FavoriteDesktopCell.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React, { useMemo } from \"react\";\nimport { Link, GeneralIcon } from \"@next-libs/basic-components\";\nimport classNames from \"classnames\";\nimport styles from \"./FavoriteDesktopCell.module.css\";\nimport { LaunchpadApi_ListCollectionResponseItem } from \"@next-sdk/user-service-sdk\";\nimport { launchpadService } from \"../LaunchpadService\";\ninterface FavoriteDesktopCellProps {\n item: LaunchpadApi_ListCollectionResponseItem;\n onDelete?: (item: LaunchpadApi_ListCollectionResponseItem) => void;\n}\n\nexport function FavoriteDesktopCell({\n item,\n onDelete,\n}: FavoriteDesktopCellProps): React.ReactElement {\n const disabled = useMemo(\n () =>\n item.launchpadCollection.type === \"microApp\"\n ? !item.microAppId\n : item.launchpadCollection.type === \"customItem\"\n ? !item.customItemId\n : false,\n [item]\n );\n\n const setAsVisitor = () => {\n if (item.launchpadCollection.type === \"link\") return;\n launchpadService.setFavoriteAsVisitor(item);\n };\n const handleCellClick = (e: React.MouseEvent) => {\n // e.stopPropagation();\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n setAsVisitor();\n\n if (\n (item.launchpadCollection.link.startsWith(\"https://\") ||\n item.launchpadCollection.link.startsWith(\"http://\")) &&\n !item.launchpadCollection.link.startsWith(document.baseURI)\n ) {\n e.preventDefault();\n window.open(item.launchpadCollection.link, \"_blank\");\n }\n };\n\n const realLink = useMemo(() => {\n const link = item.launchpadCollection.link;\n if (item.launchpadCollection.type === \"microApp\") return link;\n const baseUrl = document.baseURI;\n // const baseUrl = \"http://192.168.100.162/next/\";\n if (link.startsWith(baseUrl)) return link.replace(baseUrl, \"/\");\n return item.launchpadCollection.link;\n }, [item]);\n\n return (\n <div>\n <div\n className={classNames(styles.cellWrapper, {\n [styles.disabled]: disabled,\n })}\n >\n <Link className={styles.link} to={realLink} onClick={handleCellClick}>\n <>\n <span className={classNames(styles.appLink, styles.square)}>\n <GeneralIcon\n icon={item?.launchpadCollection.icon}\n style={{ fontSize: 18 }}\n />\n </span>\n <span className={styles.name}>\n {item?.launchpadCollection?.name}\n </span>\n </>\n </Link>\n </div>\n </div>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./SiteMap.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React, { forwardRef, useEffect, useMemo } from \"react\";\nimport styles from \"./SiteMap.module.css\";\nimport { Link } from \"@next-libs/basic-components\";\nimport { MicroApp } from \"@next-core/brick-types\";\nimport { launchpadService } from \"../LaunchpadService\";\n\ninterface SiteCategory {\n name: string;\n id: string;\n order: string;\n apps: {\n id?: string;\n sort?: string;\n name?: string;\n homepage?: string;\n }[];\n}\nexport interface SiteMapProps {\n categoryList: SiteCategory[];\n containerStyle?: React.CSSProperties;\n onLoad?: () => void;\n}\n\nexport function LeacySiteMap(\n props: SiteMapProps,\n ref: any\n): React.ReactElement {\n const handleWheel = (e: React.WheelEvent) => {\n e.stopPropagation();\n };\n\n useEffect(() => {\n props.onLoad?.();\n }, []);\n\n const handleClick = (app: MicroApp): void => {\n launchpadService.pushVisitor(\"app\", app);\n };\n\n return (\n <div\n className={styles.scrollContainer}\n style={props.containerStyle}\n ref={ref}\n onWheel={handleWheel}\n >\n <div className={styles.siteMapContainer}>\n {props.categoryList?.map((item) => (\n <div className={styles.groupWrapper} key={item.name}>\n <div>{item.name}</div>\n <ul className={styles.group}>\n {item.apps?.map((row, index) => (\n <li className={styles.item} key={index}>\n <Link\n to={row.homepage}\n onClick={() => handleClick(row as MicroApp)}\n >\n {row.name}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nexport const SiteMap = forwardRef(LeacySiteMap);\n","import React, { createRef, useEffect, useMemo, useRef, useState } from \"react\";\nimport { DesktopCell } from \"../DesktopCell/DesktopCell\";\nimport styles from \"./MyDesktop.module.css\";\nimport { SettingOutlined, LoadingOutlined } from \"@ant-design/icons\";\nimport { FavoriteDesktopCell } from \"../FavoriteDesktopCell/FavoriteDesktopCell\";\nimport classNames from \"classnames\";\nimport { launchpadService } from \"../LaunchpadService\";\nimport { Link } from \"@next-libs/basic-components\";\nimport { Spin } from \"antd\";\nimport Icon from \"@ant-design/icons\";\nimport { isEmpty } from \"lodash\";\nimport { BrickIcon } from \"@next-core/brick-icons\";\nimport { SiteMap } from \"../site-map/SiteMap\";\n\ninterface MyDesktopProps {\n desktopCount: number;\n arrowWidthPercent: number;\n}\n\nenum ModeType {\n Favorities = \"favorities\",\n Sitemap = \"sitemap\",\n}\n\nlet remberMode = ModeType.Sitemap;\n\nexport function MyDesktop(props: MyDesktopProps, ref: any): React.ReactElement {\n const [recentlyVisitedList] = useState(launchpadService.getAllVisitors());\n const [favoriteList, setFavoriteList] = useState([]);\n const [isLoading, setIsLoading] = useState(true);\n const [firstRendered, setFirstRendered] = useState(true);\n const [mode, setMode] = useState<ModeType>(remberMode);\n const siteMapRef = createRef<HTMLDivElement>();\n const deskContainerRef = useRef<HTMLDivElement>();\n const [siteMapHeight, setSiteMapHeight] = useState<number>();\n\n const getFavoriteList = async () => {\n setIsLoading(true);\n const favoriteList = await launchpadService.fetchFavoriteList();\n setIsLoading(false);\n setFavoriteList(favoriteList);\n };\n\n const handleMode = (e: React.MouseEvent, mode: ModeType): void => {\n e.stopPropagation();\n remberMode = mode;\n setMode(mode);\n };\n useEffect(() => {\n (async () => {\n getFavoriteList();\n })();\n }, []);\n\n const handleOnSetAsFavorite = async () => {\n await getFavoriteList();\n };\n\n const handleSiteMapLoad = () => {\n // wait for launchpad open\n Promise.resolve().then(() => {\n const siteMapDom = siteMapRef.current.getBoundingClientRect();\n const deskContainerDom = deskContainerRef.current.getBoundingClientRect();\n const siteMapHeight = deskContainerDom.bottom - siteMapDom.top;\n\n setSiteMapHeight(siteMapHeight);\n });\n };\n\n useEffect(() => {\n !isLoading && firstRendered && setFirstRendered(false);\n }, [isLoading, firstRendered]);\n\n const renderRecentlyVisited = useMemo(() => {\n return (\n <div className={styles.visited}>\n <div className={styles.title}>最近访问</div>\n <div className={styles.desktop}>\n {recentlyVisitedList?.map((item, index) => (\n <DesktopCell\n size=\"small\"\n key={index}\n item={item}\n showAddIcon={true}\n isFavorite={!launchpadService.isFavorite(item)}\n onSetAsFavorite={handleOnSetAsFavorite}\n />\n ))}\n </div>\n </div>\n );\n }, [recentlyVisitedList, isLoading]);\n const antIcon = <LoadingOutlined style={{ fontSize: \"2.5rem\" }} />;\n const renderMyFavorites = useMemo(() => {\n return (\n <div className={classNames([styles.section, styles.favorites])}>\n {firstRendered && isLoading && (\n <Spin\n indicator={antIcon}\n spinning={isLoading}\n delay={500}\n className={styles.spin}\n />\n )}\n {!isEmpty(favoriteList) ? (\n <div className={styles.favoriteContainer}>\n {favoriteList?.map((item, index) => (\n <FavoriteDesktopCell key={index} item={item} />\n ))}\n </div>\n ) : (\n !isLoading && (\n <div className={styles.emptyTips}>\n 把常用的页面链接加入收藏夹,方便快速访问 ~{\" \"}\n <Link to=\"/launchpad-collection\" style={{ marginLeft: 30 }}>\n 管理我的收藏\n </Link>\n </div>\n )\n )}\n </div>\n );\n }, [favoriteList, isLoading, firstRendered]);\n\n const renderSiteMap = useMemo(() => {\n const categoryList = launchpadService\n .getSitemapList()\n ?.filter((item) => item.apps?.length > 0);\n\n return (\n <SiteMap\n ref={siteMapRef}\n categoryList={categoryList}\n containerStyle={{\n height: siteMapHeight,\n overflow: \"auto\",\n }}\n onLoad={handleSiteMapLoad}\n />\n );\n }, [siteMapHeight]);\n\n return (\n <div\n test-id=\"my-destop\"\n ref={deskContainerRef}\n style={{\n flex: 1,\n padding: `0 ${props.arrowWidthPercent / props.desktopCount}%`,\n }}\n >\n {!!recentlyVisitedList?.length && renderRecentlyVisited}\n <div className={styles.modeWrapper}>\n <div className={styles.header}>\n {mode === ModeType.Favorities ? (\n <div className={styles.title}>\n {\" \"}\n 我的收藏\n <Icon\n className={styles.modeIcon}\n component={() => (\n <BrickIcon icon=\"launchpad-sitmap\" category=\"app\" />\n )}\n onClick={(e) => handleMode(e, ModeType.Sitemap)}\n />\n </div>\n ) : (\n <div className={styles.title}>\n 系统地图\n <Icon\n className={styles.modeIcon}\n component={() => (\n <BrickIcon icon=\"launchpad-collection\" category=\"app\" />\n )}\n onClick={(e) => handleMode(e, ModeType.Favorities)}\n />\n </div>\n )}\n {mode === ModeType.Favorities && (\n <div className={styles.settingsContainer}>\n <Link to={\"/launchpad-collection\"}>\n <Icon\n className={styles.settings}\n component={() => (\n <BrickIcon icon=\"launchpad-setting\" category=\"app\" />\n )}\n />\n 管理收藏\n </Link>\n </div>\n )}\n </div>\n\n {mode === ModeType.Favorities ? renderMyFavorites : renderSiteMap}\n </div>\n </div>\n );\n}\n","// See https://github.com/facebook/jest/issues/11471\n// Open launchpad with the previous visited desktop.\nlet rememberedDesktopCursor = 0;\n\nexport function getRememberedDesktopCursor(): number {\n return rememberedDesktopCursor;\n}\n\nexport function setRememberedDesktopCursor(newValue: number): void {\n rememberedDesktopCursor = newValue;\n}\n","import React, { useEffect } from \"react\";\nimport { LeftOutlined, RightOutlined, HomeFilled } from \"@ant-design/icons\";\nimport { chunk } from \"lodash\";\nimport classNames from \"classnames\";\nimport { MicroApp, DesktopData } from \"@next-core/brick-types\";\nimport { getHistory, getRuntime } from \"@next-core/brick-kit\";\nimport { Desktop } from \"../Desktop/Desktop\";\nimport { useLaunchpadSettingsContext } from \"../LaunchpadSettingsContext\";\nimport { useDesktopDirContext } from \"../DesktopDirContext\";\nimport styles from \"./DesktopSlider.module.css\";\nimport { MyDesktop } from \"../MyDesktop/MyDesktop\";\nimport { launchpadService } from \"../LaunchpadService\";\nimport {\n getRememberedDesktopCursor,\n setRememberedDesktopCursor,\n} from \"./desktopCursor\";\n\ninterface DesktopSliderProps {\n microApps: MicroApp[];\n q?: string;\n desktops?: DesktopData[];\n arrowWidthPercent: number;\n}\n\nexport function DesktopSlider(props: DesktopSliderProps): React.ReactElement {\n const enableMyDesktop = getRuntime().getFeatureFlags()[\"enable-my-desktop\"];\n const [desktopCursor, setDesktopCursor] = React.useState(\n getRememberedDesktopCursor()\n );\n const [appCursor, setAppCursor] = React.useState(-1);\n const { columns, rows } = useLaunchpadSettingsContext();\n const { setDesktopDir } = useDesktopDirContext();\n const slideDuration = 400;\n\n useEffect(() => {\n enableMyDesktop && launchpadService.setMaxVisitorLength(8);\n }, [columns, enableMyDesktop]);\n const mapAppsToDesktop = (apps: MicroApp[]): DesktopData => ({\n name: \"-\",\n items: apps.map((app) => ({\n type: \"app\",\n id: app.id,\n app,\n })),\n });\n\n let desktops: DesktopData[];\n let validApps = props.microApps;\n\n if (props.desktops && props.desktops.length > 0) {\n validApps = [];\n\n const id2app = props.microApps.reduce((acc, app) => {\n acc.set(app.id, app);\n return acc;\n }, new Map<string, MicroApp>());\n\n desktops = props.desktops\n .map((desktop) => ({\n name: desktop.name,\n items: desktop.items\n .map((item) => {\n if (item.type === \"app\") {\n if (id2app.has(item.id)) {\n const app = id2app.get(item.id);\n validApps.push(app);\n id2app.delete(item.id);\n return {\n type: item.type,\n id: item.id,\n app,\n };\n }\n // ignore not found apps\n } else if (item.type === \"dir\") {\n const items = item.items\n .map((item) => {\n if (item.type === \"app\") {\n if (id2app.has(item.id)) {\n const app = id2app.get(item.id);\n validApps.push(app);\n id2app.delete(item.id);\n return {\n type: item.type,\n id: item.id,\n app,\n };\n }\n } else if (item.type === \"custom\") {\n return item;\n }\n })\n .filter(Boolean);\n // ignore empty dirs\n if (items.length > 0) {\n return {\n type: item.type,\n id: item.id,\n name: item.name,\n items,\n };\n }\n } else if (item.type === \"custom\") {\n return item;\n }\n })\n .filter(Boolean)\n .slice(0, columns * rows),\n }))\n // ignore empty desktops\n .filter((desktop) => desktop.items.length > 0);\n } else {\n // 如果没有定义桌面列表(例如本地开发模式),则自动按数量切割。\n desktops = chunk(props.microApps, columns * rows).map(mapAppsToDesktop);\n }\n let filteredDesktop: DesktopData;\n if (props.q) {\n const lowerQ = props.q.toLowerCase();\n filteredDesktop = mapAppsToDesktop(\n validApps\n .filter(\n (app) =>\n app.localeName.toLowerCase().includes(lowerQ) ||\n app.name.toLowerCase().includes(lowerQ) ||\n app.id.toLowerCase().includes(lowerQ)\n )\n .slice(0, columns * rows)\n );\n }\n\n // When sliding desktop, reset app cursor.\n React.useEffect(() => {\n setAppCursor(-1);\n }, [desktopCursor]);\n\n // When making search, set app cursor to the first app.\n React.useEffect(() => {\n setAppCursor(\n props.q && filteredDesktop && filteredDesktop.items.length > 0 ? 0 : -1\n );\n }, [props.q]);\n\n const lockRef = React.useRef(false);\n\n const throttledSetDesktopCursor = (index: number): void => {\n if (lockRef.current) {\n return;\n }\n setRememberedDesktopCursor(index);\n setDesktopCursor(index);\n // 一次滑动一个屏幕,锁定期间内,不能继续滑动屏幕。\n lockRef.current = true;\n setTimeout(() => {\n lockRef.current = false;\n }, slideDuration);\n };\n\n const slideLeft = React.useCallback((): void => {\n if (desktopCursor > 0) {\n throttledSetDesktopCursor(desktopCursor - 1);\n }\n }, [desktopCursor]);\n\n const slideRight = React.useCallback((): void => {\n const length = enableMyDesktop ? desktops.length : desktops.length + 1;\n if (desktopCursor < length) {\n throttledSetDesktopCursor(desktopCursor + 1);\n }\n }, [desktopCursor, desktops.length]);\n\n const handleSlideLeft = (e: React.MouseEvent): void => {\n e.stopPropagation();\n slideLeft();\n };\n\n const handleSlideRight = (e: React.MouseEvent): void => {\n e.stopPropagation();\n slideRight();\n };\n\n const handleSlideTo = (e: React.MouseEvent, index: number): void => {\n e.stopPropagation();\n if (desktopCursor !== index) {\n throttledSetDesktopCursor(index);\n }\n };\n\n // Press arrow key to select an app.\n React.useEffect(() => {\n const onKeydown = (event: KeyboardEvent): void => {\n // 第一栏为我的面板,须过滤掉(PS: 但是搜索时 desktopCursor 为0是可以的)\n if (enableMyDesktop && desktopCursor === 0 && !props.q) return;\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n const currentDesktop = props.q\n ? filteredDesktop\n : desktops[enableMyDesktop ? desktopCursor - 1 : desktopCursor];\n if (key === \"Enter\" || key === 13) {\n event.preventDefault();\n if (appCursor >= 0 && appCursor < currentDesktop.items.length) {\n const cell = currentDesktop.items[appCursor];\n if (cell.type === \"app\") {\n launchpadService.pushVisitor(\"app\", cell.app);\n getRuntime().resetWorkspaceStack();\n getHistory().push(cell.app.homepage);\n } else if (cell.type === \"custom\") {\n launchpadService.pushVisitor(\"custom\", cell);\n window.open(cell.url);\n } else if (cell.type === \"dir\") {\n // Calculate the approximate coordinates of a dir.\n const x = appCursor % columns;\n const y = Math.floor(appCursor / columns);\n setDesktopDir({\n activeIndex: 0,\n dir: {\n name: cell.name,\n items: cell.items,\n },\n coordinates: {\n x: (window.innerWidth * (x + 1)) / (columns + 1),\n y: (window.innerHeight * (y + 1)) / (rows + 1),\n },\n });\n }\n }\n } else {\n let offset = 0;\n if (key === \"ArrowRight\" || key === 39) {\n offset = 1;\n } else if (key === \"ArrowLeft\" || key === 37) {\n offset = appCursor === -1 ? currentDesktop.items.length : -1;\n } else if (key === \"ArrowDown\" || key === 40) {\n offset = appCursor === -1 ? 1 : columns;\n } else if (key === \"ArrowUp\" || key === 38) {\n offset = appCursor === -1 ? currentDesktop.items.length : -columns;\n }\n if (offset !== 0) {\n event.preventDefault();\n const next = appCursor + offset;\n if (next >= 0 && next < currentDesktop.items.length) {\n setAppCursor(next);\n }\n }\n }\n };\n window.addEventListener(\"keydown\", onKeydown);\n return () => {\n window.removeEventListener(\"keydown\", onKeydown);\n };\n }, [desktopCursor, appCursor, props.q, columns, setDesktopDir]);\n\n const deltaXRef = React.useRef(0);\n const deltaYRef = React.useRef(0);\n const responsibleRef = React.useRef(true);\n\n const tryToSlideByWheel = (): void => {\n // Mac 的 trackpad,部分鼠标滚轮会有“拖尾效应”,拖尾期间,不再响应滚轮事件。\n if (!responsibleRef.current) {\n return;\n }\n // 取绝对值较大的方向\n const axisRef =\n Math.abs(deltaYRef.current) > Math.abs(deltaXRef.current)\n ? deltaYRef\n : deltaXRef;\n // 经测试,滚轮纵轴一次位移 4,横轴一次位移 40。\n const threshold = axisRef === deltaYRef ? 4 : 40;\n if (axisRef.current >= threshold) {\n slideRight();\n } else if (axisRef.current <= -threshold) {\n slideLeft();\n } else {\n return;\n }\n // 触发滑动后,重设 delta,拖尾期间,不再响应滚轮事件。\n deltaXRef.current = 0;\n deltaYRef.current = 0;\n responsibleRef.current = false;\n };\n\n const resetDeltaTimeoutRef = React.useRef<any>();\n\n const handleWheel = (e: React.WheelEvent): void => {\n deltaXRef.current += e.deltaX;\n deltaYRef.current += e.deltaY;\n tryToSlideByWheel();\n if (resetDeltaTimeoutRef.current) {\n clearTimeout(resetDeltaTimeoutRef.current);\n }\n // 间隔 50ms 内的连续滚轮事件被认作一次滚动。\n resetDeltaTimeoutRef.current = setTimeout(() => {\n deltaXRef.current = 0;\n deltaYRef.current = 0;\n responsibleRef.current = true;\n }, 50);\n };\n\n const sliderChildrenLength = enableMyDesktop\n ? desktops.length + 1\n : desktops.length;\n\n return (\n <div\n onWheel={handleWheel}\n className={classNames(styles.desktopSlider, {\n [styles.filtered]: props.q,\n })}\n >\n <div className={styles.desktopSelector}>\n {[\n ...(enableMyDesktop ? [{ name: <HomeFilled /> }] : []),\n ...desktops,\n ].map((desktop, index) => (\n <React.Fragment key={index}>\n {index !== 0 && <span className={styles.selectorSeparator} />}\n <a\n className={classNames(styles.desktopName, {\n [styles.active]: desktopCursor === index,\n })}\n onClick={(e) => handleSlideTo(e, index)}\n role=\"button\"\n >\n {desktop.name}\n </a>\n </React.Fragment>\n ))}\n </div>\n <div className={styles.scrollContainer}>\n <div\n className={styles.desktopList}\n style={{\n width: `${sliderChildrenLength * 100}%`,\n marginLeft: `${desktopCursor * -100}%`,\n transition: `margin-left ${slideDuration}ms ease-out`,\n }}\n >\n {enableMyDesktop && (\n <MyDesktop\n desktopCount={desktops.length}\n arrowWidthPercent={props.arrowWidthPercent}\n />\n )}\n {desktops.map((desktop, index) => (\n <Desktop\n key={index}\n desktop={desktop}\n desktopCount={desktops.length}\n arrowWidthPercent={props.arrowWidthPercent}\n activeIndex={\n (enableMyDesktop ? desktopCursor - 1 : desktopCursor) === index\n ? appCursor\n : -1\n }\n />\n ))}\n </div>\n {\n // Show filtered apps as a single desktop.\n props.q && (\n <div className={styles.filteredList}>\n <Desktop\n desktop={filteredDesktop}\n desktopCount={1}\n arrowWidthPercent={props.arrowWidthPercent}\n activeIndex={appCursor}\n />\n </div>\n )\n }\n </div>\n <a\n className={classNames(styles.arrowLeft, {\n [styles.available]: desktopCursor > 0,\n })}\n style={{ width: `${props.arrowWidthPercent}%` }}\n onClick={handleSlideLeft}\n role=\"button\"\n >\n <span className={styles.arrowButton}>\n <LeftOutlined />\n </span>\n </a>\n <a\n className={classNames(styles.arrowRight, {\n [styles.available]: desktopCursor < sliderChildrenLength - 1,\n })}\n style={{ width: `${props.arrowWidthPercent}%` }}\n onClick={handleSlideRight}\n role=\"button\"\n >\n <span className={styles.arrowButton}>\n <RightOutlined />\n </span>\n </a>\n </div>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./DesktopDirContent.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { getHistory, getRuntime } from \"@next-core/brick-kit\";\nimport { useDesktopDirContext, DirWithCoordinates } from \"../DesktopDirContext\";\nimport { DesktopCell } from \"../DesktopCell/DesktopCell\";\nimport { useLaunchpadSettingsContext } from \"../LaunchpadSettingsContext\";\nimport styles from \"./DesktopDirContent.module.css\";\n\ninterface DesktopDirContentProps extends DirWithCoordinates {\n arrowWidthPercent: number;\n}\n\nexport function DesktopDirContent(\n props: DesktopDirContentProps\n): React.ReactElement {\n const { columns, rows } = useLaunchpadSettingsContext();\n const { setDesktopDir } = useDesktopDirContext();\n const [entering, setEntering] = React.useState(false);\n const [appCursor, setAppCursor] = React.useState(props.activeIndex);\n\n const items = props.dir.items.slice(0, columns * rows);\n // 展开的文件夹容器的大小即 DOM 容器的大小,以其中心为基准,变换至鼠标点击的位置,\n // 以模拟出一种从鼠标点击处展开的动画效果。\n const translateX =\n props.coordinates.x - document.documentElement.clientWidth / 2;\n const translateY =\n props.coordinates.y - document.documentElement.clientHeight / 2;\n\n React.useEffect(() => {\n const onKeydown = (event: KeyboardEvent): void => {\n event.stopPropagation();\n event.preventDefault();\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n if (key === \"Escape\" || key === 27) {\n setDesktopDir(undefined);\n } else if (key === \"Enter\" || key === 13) {\n if (appCursor >= 0 && appCursor < items.length) {\n const item = items[appCursor];\n if (item.type === \"app\") {\n getRuntime().resetWorkspaceStack();\n getHistory().push(item.app.homepage);\n } else {\n window.open(item.url);\n }\n }\n } else {\n let offset = 0;\n if (key === \"ArrowRight\" || key === 39) {\n offset = 1;\n } else if (key === \"ArrowLeft\" || key === 37) {\n offset = appCursor === -1 ? items.length : -1;\n } else if (key === \"ArrowDown\" || key === 40) {\n offset = appCursor === -1 ? 1 : columns;\n } else if (key === \"ArrowUp\" || key === 38) {\n offset = appCursor === -1 ? items.length : -columns;\n }\n if (offset !== 0) {\n const next = appCursor + offset;\n if (next >= 0 && next < items.length) {\n setAppCursor(next);\n }\n }\n }\n };\n document.addEventListener(\"keydown\", onKeydown);\n return () => {\n document.removeEventListener(\"keydown\", onKeydown);\n };\n }, [props.dir, appCursor, columns, rows, setDesktopDir]);\n\n const handleCloseDir = (e: React.MouseEvent): void => {\n e.stopPropagation();\n setDesktopDir(undefined);\n };\n\n const handleEntering = (): void => {\n setEntering(true);\n };\n\n const rowsInDir = Math.ceil(items.length / columns);\n\n return (\n <CSSTransition\n in={true}\n timeout={150}\n appear={true}\n classNames=\"no-rules-class-name\"\n onEntering={handleEntering}\n >\n <div\n className={styles.dirContainer}\n onClick={handleCloseDir}\n style={{\n padding: `0 ${props.arrowWidthPercent}% 36px`,\n transform: entering\n ? \"none\"\n : `translate(${translateX}px,${translateY}px) scale(0.01)`,\n }}\n >\n <div className={styles.dirName}>{props.dir.name}</div>\n <div\n className={styles.dirContent}\n style={{\n height: `${((rowsInDir + 0.2) * 100) / (rows + 1)}%`,\n gridTemplateColumns: `repeat(${columns},1fr)`,\n gridTemplateRows: `repeat(${rowsInDir},1fr)`,\n }}\n >\n {items.map((item, index) => (\n <DesktopCell\n key={item.id}\n item={item}\n active={appCursor === index}\n />\n ))}\n </div>\n </div>\n </CSSTransition>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./Launchpad.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { getRuntime, handleHttpError } from \"@next-core/brick-kit\";\nimport { MicroApp } from \"@next-core/brick-types\";\nimport { SearchBar } from \"../SearchBar/SearchBar\";\nimport { DesktopSlider } from \"../DesktopSlider/DesktopSlider\";\nimport { DesktopDirContext, DirWithCoordinates } from \"../DesktopDirContext\";\nimport { LaunchpadSettingsContext } from \"../LaunchpadSettingsContext\";\nimport { DesktopDirContent } from \"../DesktopDirContent/DesktopDirContent\";\nimport styles from \"./Launchpad.module.css\";\n\nexport interface LaunchpadProps {\n onWillClose?: () => void;\n}\n\nexport function Launchpad(props: LaunchpadProps): React.ReactElement {\n const runtime = getRuntime();\n\n const desktops = runtime.getDesktops();\n const settings = runtime.getLaunchpadSettings();\n\n const getFilterMicroApps = (): MicroApp[] =>\n // 过滤掉状态为开发中的小产品\n runtime\n .getMicroApps()\n // 兼容较老版本接口未返回 `status` 的情况。\n .filter(\n (item) =>\n !item.status ||\n item.status === \"enabled\" ||\n item.status === \"developing\"\n );\n\n const [q, setQ] = React.useState(\"\");\n const [microApps, setMicroApps] = React.useState(getFilterMicroApps());\n const [desktopDir, setDesktopDir] = React.useState<DirWithCoordinates>();\n\n React.useEffect((): (() => void) => {\n let timer: NodeJS.Timeout;\n const pollingRunningAppStatus = async (): Promise<void> => {\n try {\n await runtime.reloadMicroApps({\n ignoreLoadingBar: true,\n });\n const reloadApps = getFilterMicroApps();\n const installingApp = reloadApps.filter(\n (app: MicroApp) => app.installStatus === \"running\"\n );\n if (installingApp.length) {\n timer = setTimeout(pollingRunningAppStatus, 1000);\n } else {\n setMicroApps(getFilterMicroApps());\n }\n } catch (error) {\n props.onWillClose();\n handleHttpError(error);\n }\n };\n pollingRunningAppStatus();\n return (): void => clearTimeout(timer);\n }, []);\n\n React.useEffect(() => {\n const onKeydown = (event: KeyboardEvent): void => {\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n if (key === \"Escape\" || key === 27) {\n props.onWillClose();\n }\n };\n window.addEventListener(\"keydown\", onKeydown);\n return () => {\n window.removeEventListener(\"keydown\", onKeydown);\n };\n }, [props.onWillClose]);\n\n const handleChange = (value: string): void => {\n setQ(value);\n };\n\n const arrowWidthPercent = 9;\n\n return (\n <LaunchpadSettingsContext.Provider value={settings}>\n <DesktopDirContext.Provider\n value={{\n desktopDir,\n setDesktopDir,\n }}\n >\n <div className={styles.launchpad} onClick={props.onWillClose}>\n <CSSTransition\n in={!desktopDir}\n timeout={100}\n classNames={{\n enter: styles.fadeEnter,\n enterActive: styles.fadeEnterActive,\n exit: styles.fadeExit,\n exitActive: styles.fadeExitActive,\n exitDone: styles.fadeExitDone,\n }}\n >\n <div className={styles.launchpadContainer}>\n <SearchBar onChange={handleChange} />\n <DesktopSlider\n q={q}\n microApps={microApps}\n desktops={desktops}\n arrowWidthPercent={arrowWidthPercent}\n />\n </div>\n </CSSTransition>\n {desktopDir && (\n <DesktopDirContent\n {...desktopDir}\n arrowWidthPercent={arrowWidthPercent}\n />\n )}\n </div>\n </DesktopDirContext.Provider>\n </LaunchpadSettingsContext.Provider>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./LaunchpadWrapper.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { Launchpad, LaunchpadProps } from \"../Launchpad/Launchpad\";\nimport styles from \"./LaunchpadWrapper.module.css\";\n\nexport interface LaunchpadWrapperProps extends LaunchpadProps {\n onClose?: () => void;\n}\n\nexport function LaunchpadWrapper(\n props: LaunchpadWrapperProps\n): React.ReactElement {\n const [fadeIn, setFadeIn] = React.useState(true);\n\n const handleWillClose = (): void => {\n setFadeIn(false);\n props.onWillClose();\n };\n\n const onExited = (): void => {\n props.onClose();\n };\n\n return (\n <CSSTransition\n in={fadeIn}\n timeout={100}\n appear={true}\n classNames={{ ...styles }}\n onExited={onExited}\n >\n <Launchpad onWillClose={handleWillClose} />\n </CSSTransition>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n LaunchpadWrapper,\n LaunchpadWrapperProps\n} from \"../LaunchpadWrapper/LaunchpadWrapper\";\n\nexport interface LaunchpadPortalProps extends LaunchpadWrapperProps {\n visible: boolean;\n}\n\nexport function LaunchpadPortal(\n props: LaunchpadPortalProps\n): React.ReactPortal {\n const elem = document.createElement(\"div\");\n\n // Currently the `useEffect()` can't be covered when shallow rendering.\n // Ref https://github.com/airbnb/enzyme/issues/2086\n // Todo(steve): check issue status and remove ignore.\n /* istanbul ignore next */\n React.useEffect(() => {\n document.body.appendChild(elem);\n return () => {\n document.body.removeChild(elem);\n };\n });\n\n if (!props.visible) {\n return null;\n }\n\n return ReactDOM.createPortal(\n <LaunchpadWrapper\n onWillClose={props.onWillClose}\n onClose={props.onClose}\n />,\n elem\n );\n}\n","/*!\n * hotkeys-js v3.8.7\n * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies.\n * \n * Copyright (c) 2021 kenny wong <wowohoo@qq.com>\n * http://jaywcjlove.github.io/hotkeys\n * \n * Licensed under the MIT license.\n */\n\nvar isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false; // 绑定事件\n\nfunction addEvent(object, event, method) {\n if (object.addEventListener) {\n object.addEventListener(event, method, false);\n } else if (object.attachEvent) {\n object.attachEvent(\"on\".concat(event), function () {\n method(window.event);\n });\n }\n} // 修饰键转换成对应的键码\n\n\nfunction getMods(modifier, key) {\n var mods = key.slice(0, key.length - 1);\n\n for (var i = 0; i < mods.length; i++) {\n mods[i] = modifier[mods[i].toLowerCase()];\n }\n\n return mods;\n} // 处理传的key字符串转换成数组\n\n\nfunction getKeys(key) {\n if (typeof key !== 'string') key = '';\n key = key.replace(/\\s/g, ''); // 匹配任何空白字符,包括空格、制表符、换页符等等\n\n var keys = key.split(','); // 同时设置多个快捷键,以','分割\n\n var index = keys.lastIndexOf(''); // 快捷键可能包含',',需特殊处理\n\n for (; index >= 0;) {\n keys[index - 1] += ',';\n keys.splice(index, 1);\n index = keys.lastIndexOf('');\n }\n\n return keys;\n} // 比较修饰键的数组\n\n\nfunction compareArray(a1, a2) {\n var arr1 = a1.length >= a2.length ? a1 : a2;\n var arr2 = a1.length >= a2.length ? a2 : a1;\n var isIndex = true;\n\n for (var i = 0; i < arr1.length; i++) {\n if (arr2.indexOf(arr1[i]) === -1) isIndex = false;\n }\n\n return isIndex;\n}\n\nvar _keyMap = {\n backspace: 8,\n tab: 9,\n clear: 12,\n enter: 13,\n return: 13,\n esc: 27,\n escape: 27,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n del: 46,\n delete: 46,\n ins: 45,\n insert: 45,\n home: 36,\n end: 35,\n pageup: 33,\n pagedown: 34,\n capslock: 20,\n num_0: 96,\n num_1: 97,\n num_2: 98,\n num_3: 99,\n num_4: 100,\n num_5: 101,\n num_6: 102,\n num_7: 103,\n num_8: 104,\n num_9: 105,\n num_multiply: 106,\n num_add: 107,\n num_enter: 108,\n num_subtract: 109,\n num_decimal: 110,\n num_divide: 111,\n '⇪': 20,\n ',': 188,\n '.': 190,\n '/': 191,\n '`': 192,\n '-': isff ? 173 : 189,\n '=': isff ? 61 : 187,\n ';': isff ? 59 : 186,\n '\\'': 222,\n '[': 219,\n ']': 221,\n '\\\\': 220\n}; // Modifier Keys\n\nvar _modifier = {\n // shiftKey\n '⇧': 16,\n shift: 16,\n // altKey\n '⌥': 18,\n alt: 18,\n option: 18,\n // ctrlKey\n '⌃': 17,\n ctrl: 17,\n control: 17,\n // metaKey\n '⌘': 91,\n cmd: 91,\n command: 91\n};\nvar modifierMap = {\n 16: 'shiftKey',\n 18: 'altKey',\n 17: 'ctrlKey',\n 91: 'metaKey',\n shiftKey: 16,\n ctrlKey: 17,\n altKey: 18,\n metaKey: 91\n};\nvar _mods = {\n 16: false,\n 18: false,\n 17: false,\n 91: false\n};\nvar _handlers = {}; // F1~F12 special key\n\nfor (var k = 1; k < 20; k++) {\n _keyMap[\"f\".concat(k)] = 111 + k;\n}\n\nvar _downKeys = []; // 记录摁下的绑定键\n\nvar _scope = 'all'; // 默认热键范围\n\nvar elementHasBindEvent = []; // 已绑定事件的节点记录\n// 返回键码\n\nvar code = function code(x) {\n return _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\n}; // 设置获取当前范围(默认为'所有')\n\n\nfunction setScope(scope) {\n _scope = scope || 'all';\n} // 获取当前范围\n\n\nfunction getScope() {\n return _scope || 'all';\n} // 获取摁下绑定键的键值\n\n\nfunction getPressedKeyCodes() {\n return _downKeys.slice(0);\n} // 表单控件控件判断 返回 Boolean\n// hotkey is effective only when filter return true\n\n\nfunction filter(event) {\n var target = event.target || event.srcElement;\n var tagName = target.tagName;\n var flag = true; // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n\n if (target.isContentEditable || (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {\n flag = false;\n }\n\n return flag;\n} // 判断摁下的键是否为某个键,返回true或者false\n\n\nfunction isPressed(keyCode) {\n if (typeof keyCode === 'string') {\n keyCode = code(keyCode); // 转换成键码\n }\n\n return _downKeys.indexOf(keyCode) !== -1;\n} // 循环删除handlers中的所有 scope(范围)\n\n\nfunction deleteScope(scope, newScope) {\n var handlers;\n var i; // 没有指定scope,获取scope\n\n if (!scope) scope = getScope();\n\n for (var key in _handlers) {\n if (Object.prototype.hasOwnProperty.call(_handlers, key)) {\n handlers = _handlers[key];\n\n for (i = 0; i < handlers.length;) {\n if (handlers[i].scope === scope) handlers.splice(i, 1);else i++;\n }\n }\n } // 如果scope被删除,将scope重置为all\n\n\n if (getScope() === scope) setScope(newScope || 'all');\n} // 清除修饰键\n\n\nfunction clearModifier(event) {\n var key = event.keyCode || event.which || event.charCode;\n\n var i = _downKeys.indexOf(key); // 从列表中清除按压过的键\n\n\n if (i >= 0) {\n _downKeys.splice(i, 1);\n } // 特殊处理 cmmand 键,在 cmmand 组合快捷键 keyup 只执行一次的问题\n\n\n if (event.key && event.key.toLowerCase() === 'meta') {\n _downKeys.splice(0, _downKeys.length);\n } // 修饰键 shiftKey altKey ctrlKey (command||metaKey) 清除\n\n\n if (key === 93 || key === 224) key = 91;\n\n if (key in _mods) {\n _mods[key] = false; // 将修饰键重置为false\n\n for (var k in _modifier) {\n if (_modifier[k] === key) hotkeys[k] = false;\n }\n }\n}\n\nfunction unbind(keysInfo) {\n // unbind(), unbind all keys\n if (!keysInfo) {\n Object.keys(_handlers).forEach(function (key) {\n return delete _handlers[key];\n });\n } else if (Array.isArray(keysInfo)) {\n // support like : unbind([{key: 'ctrl+a', scope: 's1'}, {key: 'ctrl-a', scope: 's2', splitKey: '-'}])\n keysInfo.forEach(function (info) {\n if (info.key) eachUnbind(info);\n });\n } else if (typeof keysInfo === 'object') {\n // support like unbind({key: 'ctrl+a, ctrl+b', scope:'abc'})\n if (keysInfo.key) eachUnbind(keysInfo);\n } else if (typeof keysInfo === 'string') {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // support old method\n // eslint-disable-line\n var scope = args[0],\n method = args[1];\n\n if (typeof scope === 'function') {\n method = scope;\n scope = '';\n }\n\n eachUnbind({\n key: keysInfo,\n scope: scope,\n method: method,\n splitKey: '+'\n });\n }\n} // 解除绑定某个范围的快捷键\n\n\nvar eachUnbind = function eachUnbind(_ref) {\n var key = _ref.key,\n scope = _ref.scope,\n method = _ref.method,\n _ref$splitKey = _ref.splitKey,\n splitKey = _ref$splitKey === void 0 ? '+' : _ref$splitKey;\n var multipleKeys = getKeys(key);\n multipleKeys.forEach(function (originKey) {\n var unbindKeys = originKey.split(splitKey);\n var len = unbindKeys.length;\n var lastKey = unbindKeys[len - 1];\n var keyCode = lastKey === '*' ? '*' : code(lastKey);\n if (!_handlers[keyCode]) return; // 判断是否传入范围,没有就获取范围\n\n if (!scope) scope = getScope();\n var mods = len > 1 ? getMods(_modifier, unbindKeys) : [];\n _handlers[keyCode] = _handlers[keyCode].map(function (record) {\n // 通过函数判断,是否解除绑定,函数相等直接返回\n var isMatchingMethod = method ? record.method === method : true;\n\n if (isMatchingMethod && record.scope === scope && compareArray(record.mods, mods)) {\n return {};\n }\n\n return record;\n });\n });\n}; // 对监听对应快捷键的回调函数进行处理\n\n\nfunction eventHandler(event, handler, scope) {\n var modifiersMatch; // 看它是否在当前范围\n\n if (handler.scope === scope || handler.scope === 'all') {\n // 检查是否匹配修饰符(如果有返回true)\n modifiersMatch = handler.mods.length > 0;\n\n for (var y in _mods) {\n if (Object.prototype.hasOwnProperty.call(_mods, y)) {\n if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) {\n modifiersMatch = false;\n }\n }\n } // 调用处理程序,如果是修饰键不做处理\n\n\n if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') {\n if (handler.method(event, handler) === false) {\n if (event.preventDefault) event.preventDefault();else event.returnValue = false;\n if (event.stopPropagation) event.stopPropagation();\n if (event.cancelBubble) event.cancelBubble = true;\n }\n }\n }\n} // 处理keydown事件\n\n\nfunction dispatch(event) {\n var asterisk = _handlers['*'];\n var key = event.keyCode || event.which || event.charCode; // 表单控件过滤 默认表单控件不触发快捷键\n\n if (!hotkeys.filter.call(this, event)) return; // Gecko(Firefox)的command键值224,在Webkit(Chrome)中保持一致\n // Webkit左右 command 键值不一样\n\n if (key === 93 || key === 224) key = 91;\n /**\n * Collect bound keys\n * If an Input Method Editor is processing key input and the event is keydown, return 229.\n * https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229\n * http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n */\n\n if (_downKeys.indexOf(key) === -1 && key !== 229) _downKeys.push(key);\n /**\n * Jest test cases are required.\n * ===============================\n */\n\n ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(function (keyName) {\n var keyNum = modifierMap[keyName];\n\n if (event[keyName] && _downKeys.indexOf(keyNum) === -1) {\n _downKeys.push(keyNum);\n } else if (!event[keyName] && _downKeys.indexOf(keyNum) > -1) {\n _downKeys.splice(_downKeys.indexOf(keyNum), 1);\n } else if (keyName === 'metaKey' && event[keyName] && _downKeys.length === 3) {\n /**\n * Fix if Command is pressed:\n * ===============================\n */\n if (!(event.ctrlKey || event.shiftKey || event.altKey)) {\n _downKeys = _downKeys.slice(_downKeys.indexOf(keyNum));\n }\n }\n });\n /**\n * -------------------------------\n */\n\n if (key in _mods) {\n _mods[key] = true; // 将特殊字符的key注册到 hotkeys 上\n\n for (var k in _modifier) {\n if (_modifier[k] === key) hotkeys[k] = true;\n }\n\n if (!asterisk) return;\n } // 将 modifierMap 里面的修饰键绑定到 event 中\n\n\n for (var e in _mods) {\n if (Object.prototype.hasOwnProperty.call(_mods, e)) {\n _mods[e] = event[modifierMap[e]];\n }\n }\n /**\n * https://github.com/jaywcjlove/hotkeys/pull/129\n * This solves the issue in Firefox on Windows where hotkeys corresponding to special characters would not trigger.\n * An example of this is ctrl+alt+m on a Swedish keyboard which is used to type μ.\n * Browser support: https://caniuse.com/#feat=keyboardevent-getmodifierstate\n */\n\n\n if (event.getModifierState && !(event.altKey && !event.ctrlKey) && event.getModifierState('AltGraph')) {\n if (_downKeys.indexOf(17) === -1) {\n _downKeys.push(17);\n }\n\n if (_downKeys.indexOf(18) === -1) {\n _downKeys.push(18);\n }\n\n _mods[17] = true;\n _mods[18] = true;\n } // 获取范围 默认为 `all`\n\n\n var scope = getScope(); // 对任何快捷键都需要做的处理\n\n if (asterisk) {\n for (var i = 0; i < asterisk.length; i++) {\n if (asterisk[i].scope === scope && (event.type === 'keydown' && asterisk[i].keydown || event.type === 'keyup' && asterisk[i].keyup)) {\n eventHandler(event, asterisk[i], scope);\n }\n }\n } // key 不在 _handlers 中返回\n\n\n if (!(key in _handlers)) return;\n\n for (var _i = 0; _i < _handlers[key].length; _i++) {\n if (event.type === 'keydown' && _handlers[key][_i].keydown || event.type === 'keyup' && _handlers[key][_i].keyup) {\n if (_handlers[key][_i].key) {\n var record = _handlers[key][_i];\n var splitKey = record.splitKey;\n var keyShortcut = record.key.split(splitKey);\n var _downKeysCurrent = []; // 记录当前按键键值\n\n for (var a = 0; a < keyShortcut.length; a++) {\n _downKeysCurrent.push(code(keyShortcut[a]));\n }\n\n if (_downKeysCurrent.sort().join('') === _downKeys.sort().join('')) {\n // 找到处理内容\n eventHandler(event, record, scope);\n }\n }\n }\n }\n} // 判断 element 是否已经绑定事件\n\n\nfunction isElementBind(element) {\n return elementHasBindEvent.indexOf(element) > -1;\n}\n\nfunction hotkeys(key, option, method) {\n _downKeys = [];\n var keys = getKeys(key); // 需要处理的快捷键列表\n\n var mods = [];\n var scope = 'all'; // scope默认为all,所有范围都有效\n\n var element = document; // 快捷键事件绑定节点\n\n var i = 0;\n var keyup = false;\n var keydown = true;\n var splitKey = '+'; // 对为设定范围的判断\n\n if (method === undefined && typeof option === 'function') {\n method = option;\n }\n\n if (Object.prototype.toString.call(option) === '[object Object]') {\n if (option.scope) scope = option.scope; // eslint-disable-line\n\n if (option.element) element = option.element; // eslint-disable-line\n\n if (option.keyup) keyup = option.keyup; // eslint-disable-line\n\n if (option.keydown !== undefined) keydown = option.keydown; // eslint-disable-line\n\n if (typeof option.splitKey === 'string') splitKey = option.splitKey; // eslint-disable-line\n }\n\n if (typeof option === 'string') scope = option; // 对于每个快捷键进行处理\n\n for (; i < keys.length; i++) {\n key = keys[i].split(splitKey); // 按键列表\n\n mods = []; // 如果是组合快捷键取得组合快捷键\n\n if (key.length > 1) mods = getMods(_modifier, key); // 将非修饰键转化为键码\n\n key = key[key.length - 1];\n key = key === '*' ? '*' : code(key); // *表示匹配所有快捷键\n // 判断key是否在_handlers中,不在就赋一个空数组\n\n if (!(key in _handlers)) _handlers[key] = [];\n\n _handlers[key].push({\n keyup: keyup,\n keydown: keydown,\n scope: scope,\n mods: mods,\n shortcut: keys[i],\n method: method,\n key: keys[i],\n splitKey: splitKey\n });\n } // 在全局document上设置快捷键\n\n\n if (typeof element !== 'undefined' && !isElementBind(element) && window) {\n elementHasBindEvent.push(element);\n addEvent(element, 'keydown', function (e) {\n dispatch(e);\n });\n addEvent(window, 'focus', function () {\n _downKeys = [];\n });\n addEvent(element, 'keyup', function (e) {\n dispatch(e);\n clearModifier(e);\n });\n }\n}\n\nvar _api = {\n setScope: setScope,\n getScope: getScope,\n deleteScope: deleteScope,\n getPressedKeyCodes: getPressedKeyCodes,\n isPressed: isPressed,\n filter: filter,\n unbind: unbind\n};\n\nfor (var a in _api) {\n if (Object.prototype.hasOwnProperty.call(_api, a)) {\n hotkeys[a] = _api[a];\n }\n}\n\nif (typeof window !== 'undefined') {\n var _hotkeys = window.hotkeys;\n\n hotkeys.noConflict = function (deep) {\n if (deep && window.hotkeys === hotkeys) {\n window.hotkeys = _hotkeys;\n }\n\n return hotkeys;\n };\n\n window.hotkeys = hotkeys;\n}\n\nexport default hotkeys;\n","import React, { useState } from \"react\";\nimport { getRuntime, getHistory } from \"@next-core/brick-kit\";\nimport { ReactComponent as LaunchpadSvg } from \"../../images/launchpad.svg\";\nimport styles from \"./LaunchpadButton.module.css\";\nimport { LaunchpadPortal } from \"../LaunchpadPortal/LaunchpadPortal\";\nimport hotkeys from \"hotkeys-js\";\n\nexport function LaunchpadButton(): React.ReactElement {\n const [visible, setVisible] = React.useState(false);\n const openLaunchpad = async () => {\n setVisible(true);\n };\n\n const runtime = React.useMemo(() => getRuntime(), []);\n\n const handleLaunchpadClose = (): void => {\n setVisible(false);\n };\n const handleLaunchpadWillClose = React.useCallback((): void => {\n runtime.toggleLaunchpadEffect(false);\n }, [runtime]);\n\n React.useEffect(() => {\n const unlisten = getHistory().listen(() => {\n // 当切换页面时,关闭 Launchpad。\n handleLaunchpadWillClose();\n setVisible(false);\n });\n return unlisten;\n }, [handleLaunchpadWillClose]);\n\n React.useEffect(() => {\n hotkeys.filter = function () {\n return true;\n };\n\n hotkeys(\"alt+l\", (event) => {\n event.preventDefault();\n setVisible((preVisble) => {\n const curVisble = !preVisble;\n if (!curVisble) handleLaunchpadWillClose();\n return curVisble;\n });\n });\n\n return () => {\n hotkeys.unbind(\"alt+l\");\n };\n }, []);\n\n React.useEffect(() => {\n if (visible) {\n // 当打开 Launchpad 时,开启背景模糊,收起悬浮展开模式。\n runtime.toggleLaunchpadEffect(true);\n }\n }, [runtime, visible]);\n\n return (\n <>\n <a role=\"button\" className={styles.launchpadLink} onClick={openLaunchpad}>\n <LaunchpadSvg className={styles.launchpadIcon} width={16} height={16} />\n </a>\n <LaunchpadPortal\n visible={visible}\n onWillClose={handleLaunchpadWillClose}\n onClose={handleLaunchpadClose}\n />\n </>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./AppBarBreadcrumb.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport { HomeOutlined } from \"@ant-design/icons\";\nimport { Breadcrumb } from \"antd\";\nimport { BreadcrumbItemConf } from \"@next-core/brick-types\";\nimport { useRecentApps, getRuntime, getHistory } from \"@next-core/brick-kit\";\nimport { Link, GeneralIcon } from \"@next-libs/basic-components\";\nimport styles from \"./AppBarBreadcrumb.module.css\";\n\ninterface BasicBreadcrumbProps {\n breadcrumb?: BreadcrumbItemConf[];\n}\n\nexport function AppBarBreadcrumb(\n props: BasicBreadcrumbProps\n): React.ReactElement {\n const { currentApp, previousWorkspace } = useRecentApps();\n\n const handleGoBackPreviousWorkspace = (): void => {\n getRuntime().popWorkspaceStack();\n getHistory().push(previousWorkspace.url);\n };\n\n return (\n <div className={styles.breadcrumbContainer}>\n {previousWorkspace && (\n <a\n role=\"button\"\n className={styles.workspaceButton}\n onClick={handleGoBackPreviousWorkspace}\n >\n <GeneralIcon icon={{ lib: \"fa\", icon: \"reply\" }} />\n <span style={{ marginLeft: 7 }}>\n {previousWorkspace.appLocaleName}\n </span>\n </a>\n )}\n <Breadcrumb separator=\">\">\n {currentApp ? (\n <Breadcrumb.Item>\n <HomeOutlined />\n <span>\n {props.breadcrumb &&\n props.breadcrumb.length > 0 &&\n currentApp.homepage &&\n !currentApp.internal ? (\n <Link to={currentApp.homepage}>{currentApp.localeName}</Link>\n ) : (\n currentApp.localeName\n )}\n </span>\n </Breadcrumb.Item>\n ) : null}\n {props.breadcrumb &&\n props.breadcrumb.map((item, index) => (\n <Breadcrumb.Item key={String(index)}>\n {item.to ? <Link to={item.to}>{item.text}</Link> : item.text}\n </Breadcrumb.Item>\n ))}\n </Breadcrumb>\n </div>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./AppDocumentLink.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport { QuestionCircleOutlined } from \"@ant-design/icons\";\nimport { Tooltip } from \"antd\";\nimport { useTranslation } from \"react-i18next\";\nimport { getRuntime, useRecentApps } from \"@next-core/brick-kit\";\nimport { Link } from \"@next-libs/basic-components\";\nimport { K, NS_BASIC_BRICKS } from \"../../i18n/constants\";\n\nimport styles from \"./AppDocumentLink.module.css\";\n\ninterface AppDocumentLinkProps {\n documentId?: string;\n}\n\nexport function AppDocumentLink({\n documentId,\n}: AppDocumentLinkProps): React.ReactElement {\n const { t } = useTranslation(NS_BASIC_BRICKS);\n const { currentApp } = useRecentApps();\n const showAppDocumentLink = React.useMemo(\n () => getRuntime().getFeatureFlags()[\"show-app-document-link\"],\n []\n );\n\n const docLink = currentApp?.id\n ? `/next-documents/apps/${currentApp.id}${\n documentId\n ? `?${new URLSearchParams({\n docId: documentId,\n }).toString()}`\n : `/redirect?${new URLSearchParams({\n redirectToDocHomeIfNotFound: \"1\",\n }).toString()}`\n }`\n : \"/next-documents\";\n\n if (!showAppDocumentLink) {\n return null;\n }\n\n return (\n <div className={styles.docLinkContainer}>\n <Tooltip title={t(K.HELP)}>\n <Link to={docLink} target=\"_blank\">\n <QuestionCircleOutlined />\n </Link>\n </Tooltip>\n </div>\n );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./AppBar.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../../node_modules/postcss-loader/src/index.js??postcss!./LicenseInfo.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport moment from \"moment\";\nimport { JsonStorage } from \"@next-libs/storage\";\nimport { handleHttpError, getAuth } from \"@next-core/brick-kit\";\nimport { CustomerApi_setOrgUpdating } from \"@next-sdk/air-admin-service-sdk\";\nimport { notification, Button, message } from \"antd\";\nimport styles from \"./LicenseInfo.module.css\";\n\nexport const LICENSE_INFO = \"license-info\";\nexport const EXPIRING_DISMISSED_UNTIL = \"licenseExpiringDismissedUntil\";\nexport const EXPIRING_DISMISSED = \"licenseExpiringDismissed\";\n\nconst storage = new JsonStorage(localStorage);\n\nexport function getUnionKey(key: string) {\n const { org } = getAuth();\n return `${key}:${org}`;\n}\n\nexport function notificationFactory(expires: number) {\n const handleClose = () => {\n storage.setItem(getUnionKey(EXPIRING_DISMISSED), true);\n // 7 天内不在提示\n storage.setItem(\n getUnionKey(EXPIRING_DISMISSED_UNTIL),\n moment().unix() + 7 * 86400\n );\n notification.close(LICENSE_INFO);\n };\n\n const handleDelay = async () => {\n const { org } = getAuth();\n try {\n await CustomerApi_setOrgUpdating({\n orgId: org,\n });\n message.success(\"已申请延期\");\n handleClose();\n } catch (err) {\n handleHttpError(err);\n }\n };\n\n const renderBtn = () => {\n return (\n <Button type=\"link\" onClick={handleClose} className={styles.closeBtn}>\n {\" \"}\n 不再提示{\" \"}\n </Button>\n );\n };\n\n const renderContent = () => {\n return (\n <>\n <div style={{ marginTop: 15 }}>\n 你的 org 即将在{\" \"}\n <span className={styles.highlight}>\n {moment.unix(expires).format(\"YYYY-MM-DD\")}\n </span>{\" \"}\n 过期,请联系 EasyOps 续期。{\" \"}\n </div>\n <span>或点击</span>\n <Button type=\"link\" onClick={handleDelay}>\n 一键申请延期\n </Button>\n </>\n );\n };\n\n return notification.warning({\n key: LICENSE_INFO,\n message: \"提示\",\n duration: 0,\n description: renderContent(),\n btn: renderBtn(),\n style: {\n width: 580,\n },\n });\n}\n\nexport function processLiscenseExpires(expires: number): void {\n // istanbul ignore else\n if (typeof expires === \"number\" && expires !== 0) {\n // 提前三十天提醒\n const notificationTime = expires - 30 * 86400;\n const now = moment().unix();\n const expiringDismissed = getUnionKey(EXPIRING_DISMISSED);\n const expiringDismissedUntil = getUnionKey(EXPIRING_DISMISSED_UNTIL);\n\n if (now > notificationTime) {\n if (\n storage.getItem(expiringDismissed) &&\n now > storage.getItem(expiringDismissedUntil)\n ) {\n storage.removeItem(expiringDismissed);\n storage.removeItem(expiringDismissedUntil);\n }\n\n if (storage.getItem(expiringDismissed)) {\n return;\n }\n notificationFactory(expires);\n }\n }\n}\n","import { http, HttpOptions } from \"@next-core/brick-http\";\n\nexport interface CustomerApi_SetOrgUpdatingRequestBody {\n /** 需要修改状态的org */\n orgId: number;\n}\n\n/**\n * @description 将客户Org的状态修改成updating\n * @endpoint PUT /api/v1/customer/updating_org\n */\nexport const CustomerApi_setOrgUpdating = (\n data: CustomerApi_SetOrgUpdatingRequestBody,\n options?: HttpOptions\n): Promise<void> =>\n /**! @contract easyops.api.air_admin_service.customer.SetOrgUpdating */ http.put<void>(\n \"api/gateway/air_admin_service.customer.SetOrgUpdating/api/v1/customer/updating_org\",\n data,\n options\n );\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport i18next from \"i18next\";\nimport { DownOutlined, UserOutlined } from \"@ant-design/icons\";\nimport { Button, Menu, Dropdown, Divider, Avatar,Tooltip } from \"antd\";\nimport { AvatarProps } from \"antd/lib/avatar\";\nimport { BreadcrumbItemConf } from \"@next-core/brick-types\";\nimport { getAuth, getHistory, getRuntime } from \"@next-core/brick-kit\";\nimport { Link, GeneralIcon } from \"@next-libs/basic-components\";\nimport { UserAdminApi_getUserInfoV2 } from \"@next-sdk/user-service-sdk\";\nimport { CustomerApi_getExpiration } from \"@next-sdk/air-admin-service-sdk\";\nimport { NS_BASIC_BRICKS, K } from \"../../i18n/constants\";\nimport { LaunchpadButton } from \"../LaunchpadButton/LaunchpadButton\";\nimport { AppBarBreadcrumb } from \"../AppBarBreadcrumb/AppBarBreadcrumb\";\nimport { AppDocumentLink } from \"../AppDocumentLink/AppDocumentLink\";\nimport styles from \"./AppBar.module.css\";\nimport { processLiscenseExpires } from \"../License-notification/LicenseNotification\";\n\ninterface AppBarProps {\n pageTitle: string;\n breadcrumb?: BreadcrumbItemConf[];\n documentId?: string;\n}\n\nexport function AppBar({\n pageTitle,\n breadcrumb,\n documentId,\n}: AppBarProps): React.ReactElement {\n const { t } = useTranslation(NS_BASIC_BRICKS);\n const [avatarSrc, setAvatarSrc] = React.useState<string>();\n const [accountEntryEnabled, setAccountEntry] = React.useState<boolean>(false);\n const hideLaunchpadButton = React.useMemo(\n () => getRuntime().getFeatureFlags()[\"hide-launchpad-button\"],\n []\n );\n\n const ssoEnabled = React.useMemo(\n () => getRuntime().getFeatureFlags()[\"sso-enabled\"],\n []\n );\n\n const licenseInfoEnabled = React.useMemo(\n () => getRuntime().getFeatureFlags()[\"license-expires-detection\"],\n []\n );\n\n const switchLanguageEnabled = React.useMemo(\n () => getRuntime().getFeatureFlags()[\"switch-language\"],\n []\n );\n\n const currentLang = i18next.language?.split(\"-\")[0];\n\n React.useEffect(() => {\n const link = document.querySelector(\n \"link[rel='shortcut icon']\"\n ) as HTMLLinkElement;\n const favicon = getRuntime().getBrandSettings().favicon;\n // istanbul ignore else\n if (favicon) {\n link.href = favicon;\n }\n const isEnable = getRuntime()\n .getMicroApps()\n .some((item) => {\n return item.id === \"cmdb-account-setting\";\n });\n setAccountEntry(isEnable);\n }, []);\n\n React.useEffect(() => {\n const baseTitle = getRuntime().getBrandSettings().base_title;\n document.title = pageTitle ? `${pageTitle} - ${baseTitle}` : baseTitle;\n }, [pageTitle]);\n\n const username = getAuth().username;\n\n React.useEffect(() => {\n (async () => {\n // istanbul ignore else\n if (username) {\n const userInfo = await UserAdminApi_getUserInfoV2(username);\n setAvatarSrc(userInfo.user_icon);\n }\n })();\n }, [username]);\n\n React.useEffect(() => {\n (async () => {\n if (licenseInfoEnabled && username) {\n try {\n const { expires, updating } = await CustomerApi_getExpiration();\n // org 为延期中的不提示\n !updating && processLiscenseExpires(expires);\n } catch (error) {\n // eslint-disable-next-line no-empty\n }\n }\n })();\n }, [username]);\n\n const avatarProps: AvatarProps = {\n size: \"small\",\n style: {\n marginRight: 8,\n },\n };\n\n if (avatarSrc) {\n avatarProps.src = avatarSrc;\n } else {\n avatarProps.icon = <UserOutlined />;\n avatarProps.style.backgroundColor = \"var(--color-brand)\";\n }\n\n const handleLogout = (): void => {\n getHistory().replace(\"/auth/logout\");\n };\n\n const handleSSOLogout = (): void => {\n getHistory().replace(\"/sso-auth/logout\");\n };\n\n const handleRedirectToMe = (): void => {\n getHistory().push(\"/account-setting\");\n };\n\n const handleSwitchLanguage = async (): Promise<void> => {\n // istanbul ignore else\n if (currentLang === \"zh\") {\n await i18next.changeLanguage(\"en\");\n } else if (currentLang === \"en\") {\n await i18next.changeLanguage(\"zh\");\n }\n location.reload();\n };\n\n return (\n <div className={styles.appBar} id=\"app-bar\">\n <div className={styles.titleContainer}>\n {!hideLaunchpadButton && (\n <>\n <LaunchpadButton />\n <Divider\n type=\"vertical\"\n style={{ height: 24, margin: \"0 16px\", top: 0 }}\n />\n </>\n )}\n\n <AppBarBreadcrumb breadcrumb={breadcrumb} />\n </div>\n <div className={styles.actionsContainer}>\n <AppDocumentLink documentId={documentId} />\n <div>\n {username ? (\n <Dropdown\n overlay={\n <Menu>\n {accountEntryEnabled && (\n <Menu.Item\n onClick={handleRedirectToMe}\n className={styles.dropdownMenuItem}\n >\n <GeneralIcon\n icon={{\n lib: \"easyops\",\n category: \"default\",\n icon: \"account\",\n }}\n />\n {t(K.ACCOUNT_MANAGEMENT)}\n </Menu.Item>\n )}\n\n <Menu.Item\n className={styles.dropdownMenuItem}\n onClick={ssoEnabled ? handleSSOLogout : handleLogout}\n >\n <GeneralIcon\n icon={{\n lib: \"easyops\",\n category: \"default\",\n icon: \"logout\",\n }}\n />\n {t(K.LOGOUT)}\n </Menu.Item>\n {switchLanguageEnabled && (\n <>\n <Menu.Divider />\n <Menu.Item\n onClick={handleSwitchLanguage}\n className={styles.dropdownMenuItem}\n >\n <Tooltip title={t(K.COVERT_TO_LANGUAGE)} placement=\"left\">\n <GeneralIcon\n icon={{\n lib: \"easyops\",\n icon: \"language\",\n category: \"default\",\n }}\n />\n {currentLang === \"zh\" ? \"English\" : \"中文\"}\n </Tooltip>\n\n </Menu.Item>\n </>\n )}\n </Menu>\n }\n trigger={[\"click\"]}\n >\n <Button type=\"link\">\n <Avatar {...avatarProps}>{username.substr(0, 1)}</Avatar>\n {username}\n <DownOutlined />\n </Button>\n </Dropdown>\n ) : (\n <Link to=\"/auth/login\">{t(K.LOGIN)}</Link>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { BreadcrumbItemConf } from \"@next-core/brick-types\";\nimport { AppBar } from \"./AppBar/AppBar\";\n\nclass AppBarElement extends UpdatingElement {\n @property()\n pageTitle: string;\n\n @property()\n documentId: string;\n\n private _breadcrumb: BreadcrumbItemConf[] = [];\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <AppBar\n pageTitle={this.pageTitle}\n breadcrumb={this._breadcrumb}\n documentId={this.documentId}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n\n set breadcrumb(value: BreadcrumbItemConf[]) {\n this._breadcrumb = value;\n this._render();\n }\n\n get breadcrumb(): BreadcrumbItemConf[] {\n return this._breadcrumb || [];\n }\n}\n\ncustomElements.define(\"basic-bricks.app-bar\", AppBarElement);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./GeneralButton.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\nimport { Button, Tooltip } from \"antd\";\nimport { ButtonProps } from \"antd/lib/button\";\nimport { Link, GeneralIcon } from \"@next-libs/basic-components\";\nimport styles from \"./GeneralButton.module.css\";\nimport { TooltipConfig } from \".\";\nimport classNames from \"classnames\";\n\ndeclare const ButtonTypes: [\n \"default\",\n \"primary\",\n \"ghost\",\n \"dashed\",\n \"link\",\n \"text\",\n \"icon\"\n];\ndeclare type ButtonType = typeof ButtonTypes[number];\n\ninterface LegacyGeneralButtonProps {\n buttonName: string;\n buttonType?: ButtonType;\n buttonDanger?: boolean;\n buttonIcon?: string;\n buttonShape?: \"circle\" | \"round\";\n buttonSize?: \"small\" | \"large\";\n buttonProps?: ButtonProps & { icon?: string };\n buttonUrl?: string;\n buttonHref?: string;\n onClick: () => void;\n disabled?: boolean;\n loading?: boolean;\n disabledTooltip?: string;\n tooltip?: string;\n tooltipConfig?: TooltipConfig;\n target?: string;\n fadedText?: boolean;\n}\n\nexport function GeneralButton({\n buttonName,\n buttonType,\n buttonDanger,\n buttonIcon,\n buttonShape,\n buttonSize,\n buttonProps,\n buttonUrl,\n buttonHref,\n onClick,\n disabled,\n loading,\n disabledTooltip,\n tooltip,\n target,\n tooltipConfig,\n fadedText,\n}: LegacyGeneralButtonProps): React.ReactElement {\n if (!buttonIcon && buttonProps?.icon) {\n buttonIcon = buttonProps.icon;\n }\n const { placement, arrowPointAtCenter } = tooltipConfig || {};\n const getButtonNode = () => (\n <Button\n className={classNames(styles.iconButton, {\n [styles.fadedText]: fadedText && buttonType === \"text\",\n })}\n shape={buttonShape}\n size={buttonSize}\n onClick={onClick}\n type={buttonType}\n danger={buttonDanger}\n {...buttonProps}\n icon={\n buttonIcon && typeof buttonIcon === \"string\" ? (\n <LegacyIcon type={buttonIcon} />\n ) : (\n typeof buttonIcon === \"object\" && <GeneralIcon icon={buttonIcon} />\n )\n }\n disabled={disabled}\n loading={loading}\n data-testid=\"button\"\n >\n {buttonName}\n </Button>\n );\n\n return (\n <Tooltip\n title={disabled ? disabledTooltip : tooltip}\n placement={placement}\n arrowPointAtCenter={arrowPointAtCenter}\n >\n {buttonUrl || buttonHref ? (\n <Link to={buttonUrl} target={target} href={buttonHref}>\n {getButtonNode()}\n </Link>\n ) : (\n getButtonNode()\n )}\n </Tooltip>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n property,\n UpdatingElement,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { isEmpty } from \"lodash\";\nimport { GeneralButton } from \"./GeneralButton\";\nimport { ButtonProps } from \"antd/lib/button\";\n\ndeclare const ButtonTypes: [\n \"default\",\n \"primary\",\n \"ghost\",\n \"dashed\",\n \"link\",\n \"text\",\n \"icon\"\n];\ndeclare type ButtonType = typeof ButtonTypes[number];\n\nexport type TooltipPlacement =\n | \"top\"\n | \"left\"\n | \"right\"\n | \"bottom\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottomRight\"\n | \"leftTop\"\n | \"leftBottom\"\n | \"rightTop\"\n | \"rightBottom\";\nexport interface TooltipConfig {\n /**\n * 气泡框位置,可选 `top` `left` `right` `bottom` `topLeft` `topRight` `bottomLeft` `bottomRight` `leftTop` `leftBottom` `rightTop` `rightBottom`\n */\n placement?: TooltipPlacement;\n /**\n * 箭头是否指向目标元素中心\n */\n arrowPointAtCenter?: boolean;\n}\n\n/**\n * @id basic-bricks.general-button\n * @name basic-bricks.general-button\n * @docKind brick\n * @description 可发送点击事件、可配置按钮名称、按钮跳转链接等\n * @author jo\n * @slots\n * @history\n * 1.54.0:新增属性 `buttonHref`\n * 1.55.1:使用 `dataSource` 替代 `detail`\n * 1.59.0:新增属性 `disableAfterClick`\n * 1.97.0:新增属性 `fadedText`\n * @memo\n * 注意,因为按钮是有 margin 的,在`type=link` 时候也一样会有,所以在表格里面放置点击链接的时候,请选用[链接](developers/brick-book/brick/presentational-bricks.brick-link)\n *\n * @noInheritDoc\n */\nexport class GeneralButtonElement extends UpdatingElement {\n /**\n * @kind string\n * @required false\n * @default -\n * @description 按钮名称\n * @group basic\n */\n @property()\n buttonName: string;\n\n /**\n * @kind MenuIcon\n * @required false\n * @default -\n * @description 按钮 icon,支持[icon 图标库](developers/icon),可直接复制图标图标的配置(antd、fa 及 easyops 三种库都支持),也可只取 icon 字段的值(仅支持 antd 库)。配置{ \"lib\": \"antd\", \"icon\": \"edit\" }与 \"edit\"等价\n * @group basic\n */\n @property({\n attribute: false,\n })\n buttonIcon: any;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 点击按钮跳转的 url\n * @group basic\n */\n @property()\n buttonUrl: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 是否使用原生 <a> 标签,通常用于外链的跳转\n * @group basic\n */\n @property()\n buttonHref: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 跳转的 target,例如可以设置为\"\\_blank\"\n * @group basic\n */\n @property()\n target: string;\n\n /**\n * @kind any\n * @required false\n * @default `{}`\n * @description 替代之前 detail 属性,用法相同。暂存的数据在事件传出时使用\n * @group basic\n */\n @property({\n attribute: false,\n })\n dataSource: Record<string, any> = {};\n\n /**\n * @kind boolean\n * @required false\n * @default `false`\n * @description 是否禁用按钮\n * @group basic\n */\n @property({ type: Boolean })\n disabled: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default `false`\n * @description 按钮加载动画\n */\n @property({\n type: Boolean,\n })\n loading: boolean;\n\n /**\n * @kind ButtonType\n * @required false\n * @default -\n * @description 按钮类型 ButtonType(`\"link\" | \"default\" | \"primary\" | \"ghost\" | \"dashed\" | \"danger\" | \"icon\"|\"text\"`)\n * @group basic\n */\n @property()\n buttonType: ButtonType;\n\n /**\n * @kind boolean\n * @required false\n * @default `false`\n * @description 设置危险按钮\n * @group basic\n */\n @property({ type: Boolean })\n buttonDanger: boolean;\n\n /**\n * @kind \"circle\" | \"round\"\n * @required false\n * @default -\n * @description 按钮形状,支持圆形、椭圆形,不设置为默认方形\n * @group basic\n */\n @property()\n buttonShape: \"circle\" | \"round\";\n\n /**\n * @kind small | large\n * @required false\n * @default -\n * @description 按钮大小,支持大、小,不设置为默认中\n * @group basic\n */\n @property()\n buttonSize: \"small\" | \"large\";\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 按钮的 tooltip\n * @group basic\n */\n @property()\n tooltip: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 禁用按钮的 tooltip\n * @group basic\n */\n @property()\n disabledTooltip: string;\n\n /**\n * @kind TooltipConfig\n * @required false\n * @default -\n * @description tooltip的配置,配置属性见TooltipConfig\n * @group basic\n */\n @property({ attribute: false })\n tooltipConfig: TooltipConfig;\n\n /**\n * @kind boolean\n * @required false\n * @default `false`\n * @description 淡化按钮文字,按钮类型为 text 时可以设置。默认 `false` 文字按钮颜色和平台的字体颜色一样,在一些希望弱化文字颜色的场景下可以设置为 `true`。\n * @group advanced\n */\n @property({ type: Boolean })\n fadedText: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default `false`\n * @description 点击按钮后自动禁用\n * @group advanced\n */\n @property({ type: Boolean })\n disableAfterClick: boolean;\n\n /**\n * @kind ButtonProps\n * @required -\n * @default -\n * @description 完全透传给 antd 的 Button 属性\n * @group advanced\n */\n @property({\n attribute: false,\n })\n buttonProps: ButtonProps & { icon?: string };\n\n /**\n * @kind any\n * @required false\n * @default {}\n * @deprecated\n * @description [已废弃]按钮点击事件传出的内容。当用于列表类构件,例如 `brick-table` 中,可通过传入传入 `detail` 来识别不通的行进行操作处理。\n * @group advanced\n */\n @property({\n attribute: false,\n })\n detail: Record<string, any> = {};\n\n /**\n * @detail `any`\n * @description 按钮被点击时触发, detail 为 dataSource 数据\n */\n @event({ type: \"general.button.click\", cancelable: true })\n buttonClick: EventEmitter<Record<string, any>>;\n private _handleClick = () => {\n // istanbul ignore if\n if (!isEmpty(this.detail)) {\n // eslint-disable-next-line no-console\n console.warn(\n `\\`detail\\` of <basic-bricks.general-button> is deprecated, use \\`dataSource\\` instead`\n );\n }\n this.buttonClick.emit(\n !isEmpty(this.dataSource) ? this.dataSource : this.detail\n );\n if (this.disableAfterClick) {\n this.disabled = true;\n }\n };\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n if (this.buttonProps) {\n // eslint-disable-next-line\n console.warn(\n \"The property `buttonProps` will be deprecated,replace it with other properties.\"\n );\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <GeneralButton\n buttonName={this.buttonName}\n buttonType={this.buttonType}\n buttonDanger={this.buttonDanger}\n buttonIcon={this.buttonIcon}\n buttonShape={this.buttonShape}\n buttonSize={this.buttonSize}\n buttonProps={this.buttonProps}\n buttonUrl={this.buttonUrl}\n buttonHref={this.buttonHref}\n onClick={this._handleClick}\n disabled={this.disabled}\n loading={this.loading}\n disabledTooltip={this.disabledTooltip}\n tooltip={this.tooltip}\n target={this.target}\n tooltipConfig={this.tooltipConfig}\n fadedText={this.fadedText}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.general-button\", GeneralButtonElement);\n","import { getHistory, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { createLocation, locationsAreEqual } from \"history\";\n/**\n * @id basic-bricks.redirect-to\n * @name basic-bricks.redirect-to\n * @docKind brick\n * @description 用于重定向的工具构件\n * @author steve\n * @slots\n * @history\n * 1.27.0:新增 href2 能力\n * @memo\n * ### DEMO\n * ```json\n * {\n * \"brick\": \"basic-bricks.redirect-to\",\n * \"properties\": {\n * \"href\": \"\" // 目标url\n * }\n * }\n * ```\n * 如果没数据则跳转到指引页面\n *\n * ```json\n * {\n * \"brick\": \"basic-bricks.redirect-to\",\n * \"properties\": {\n * \"href\": \"${APP.homepage}/guide\",\n * \"href2\": \"${APP.homepage}/list\"\n * },\n * \"lifeCycle\": {\n * \"useResolves\": [\n * {\n * \"provider\": \"xxxxx\",\n * \"transform\": {\n * \"useHref2\": \"@{list.length}\"\n * }\n * }\n * ]\n * }\n * }\n *```\n * >Tips: 新增 href2 用来解决如下场景:如果有数据则跳转到列表页面,如果没数据则跳转到提示新建页面\n * @noInheritDoc\n */\nexport class RedirectToElement extends UpdatingElement {\n /**\n * @kind string\n * @required true\n * @default -\n * @description 重定向的 url\n */\n @property()\n href: string;\n /**\n * @kind string\n * @required false\n * @default -\n * @description 重定向的 url2\n */\n @property()\n href2: string;\n /**\n * @kind boolean\n * @required true\n * @default -\n * @description 是否选用 href2 作为最终的跳转链接\n */\n @property({\n type: Boolean,\n })\n useHref2: boolean;\n\n connectedCallback(): void {\n this.style.display = \"none\";\n this._render();\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n const history = getHistory();\n const currentLocation = { ...history.location };\n const toHref = this.useHref2 ? this.href2 : this.href;\n const toLocation = createLocation(toHref);\n\n delete currentLocation.key;\n\n if (!locationsAreEqual(currentLocation, toLocation)) {\n history.replace(toHref);\n }\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.redirect-to\", RedirectToElement);\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { NS_BASIC_BRICKS, K } from \"../i18n/constants\";\n\ninterface PageNotFoundProps {\n url: string;\n}\n\nexport function PageNotFound(props: PageNotFoundProps): React.ReactElement {\n const { t } = useTranslation(NS_BASIC_BRICKS);\n\n return (\n <div style={{ textAlign: \"center\", marginTop: 100 }}>\n <p style={{ fontSize: \"150%\" }}>{t(K.PAGE_NOT_FOUND_TITLE)}</p>\n <p>\n {t(K.PAGE_NOT_FOUND_DESC, {\n url: props.url\n })}\n </p>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { PageNotFound } from \"./PageNotFound\";\n\nexport class PageNotFoundElement extends UpdatingElement {\n @property()\n url: string;\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <PageNotFound url={this.url} />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.page-not-found\", PageNotFoundElement);\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { NS_BASIC_BRICKS, K } from \"../i18n/constants\";\n\ninterface PageErrorProps {\n error: string;\n}\n\nexport function PageError(props: PageErrorProps): React.ReactElement {\n const { t } = useTranslation(NS_BASIC_BRICKS);\n\n return (\n <div style={{ textAlign: \"center\", marginTop: 100 }}>\n <p style={{ fontSize: \"150%\" }}>{t(K.PAGE_ERROR_TITLE)}</p>\n <p>{props.error}</p>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { PageError } from \"./PageError\";\n\nclass PageErrorElement extends UpdatingElement {\n @property()\n error: string;\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <PageError error={this.error} />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.page-error\", PageErrorElement);\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nexport function LoadingBar(): React.ReactElement {\n const [requestsCount, setRequestsCount] = React.useState(0);\n\n React.useEffect(() => {\n let count = 0;\n const requestStart = (): void => {\n count += 1;\n setRequestsCount(count);\n };\n const requestEnd = (): void => {\n // 兼容 loading bar 在某些请求开始和结束之间初始化时,`count` 可能小于 0 的情况\n if (count > 0) {\n count -= 1;\n }\n setRequestsCount(count);\n };\n window.addEventListener(\"request.start\", requestStart);\n window.addEventListener(\"request.end\", requestEnd);\n return () => {\n window.removeEventListener(\"request.start\", requestStart);\n window.removeEventListener(\"request.end\", requestEnd);\n };\n }, []);\n\n return (\n <div\n className={classNames(\"global-loading-bar rendered-loading-bar\", {\n loading: requestsCount > 0\n })}\n >\n <div />\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper } from \"@next-core/brick-kit\";\nimport { LoadingBar } from \"./LoadingBar\";\n\nclass LoadingBarElement extends HTMLElement {\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n private _render(): void {\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <LoadingBar />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.loading-bar\", LoadingBarElement);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { PageTitle } from \"./PageTitle\";\n\n/**\n * @id basic-bricks.page-title\n * @name basic-bricks.page-title\n * @docKind brick\n * @description 页面标题,在`basic-bricks.micro-view`的titleBar插槽中使用,如果只是普通字符串的可用pageTitle属性代替,如果是动态的话则用这个构件\n * @author steve\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class PageTitleElement extends UpdatingElement {\n /**\n * @kind string\n * @required true\n * @default -\n * @description 页面标题\n */\n @property()\n pageTitle: string;\n\n /**\n * @kind boolean\n * @default `false`\n * @description 是否以 dashboard 模式显示\n */\n @property({\n type: Boolean,\n })\n dashboardMode: boolean;\n\n connectedCallback(): void {\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <PageTitle\n pageTitle={this.pageTitle}\n dashboardMode={this.dashboardMode}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n\n setPageTitle(value: string): void {\n this.pageTitle = value;\n }\n}\n\ncustomElements.define(\"basic-bricks.page-title\", PageTitleElement);\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { NS_BASIC_BRICKS, K } from \"../i18n/constants\";\n\ninterface IndexCardProps {\n title?: string;\n contentGridGap?: number;\n}\n\nexport function IndexCard(props: IndexCardProps): React.ReactElement {\n const { t } = useTranslation(NS_BASIC_BRICKS);\n\n return (\n <div>\n {props.title && (\n <div className=\"indexCardHeader\">\n <div className=\"indexCardTitle\">{props.title}</div>\n <div className=\"indexCardToolbar\">\n <slot id=\"toolbarSlot\" name=\"toolbar\" />\n </div>\n </div>\n )}\n <div className=\"indexCardBody\" style={{ gridGap: props.contentGridGap }}>\n <slot id=\"contentSlot\" name=\"content\" />\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, property } from \"@next-core/brick-kit\";\n\nimport { IndexCard } from \"./IndexCard\";\nimport styles from \"./IndexCard.shadow.css\";\n\n/**\n * @id basic-bricks.index-card\n * @name basic-bricks.index-card\n * @docKind brick\n * @description 页面容器,注意与micro-app的区别\n * @author william\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class IndexCardElement extends HTMLElement {\n private _mountPoint: HTMLElement;\n private _contentGridGap = 24;\n private _title: string;\n\n /**\n * @kind number\n * @required no\n * @default 24\n * @description 内容区的 gap,内容区固定为 grid 布局\n */\n @property({\n __unstable_doNotDecorate: true,\n })\n set contentGridGap(value: number) {\n this._contentGridGap = value;\n this._render();\n }\n\n get contentGridGap(): number {\n return this._contentGridGap;\n }\n\n constructor() {\n super();\n\n const shadowRoot = this.attachShadow({ mode: \"open\" });\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = styles;\n shadowRoot.appendChild(styleElement);\n this._mountPoint = document.createElement(\"div\");\n shadowRoot.appendChild(this._mountPoint);\n }\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n /**\n * @kind string\n * @required no\n * @default -\n * @description 卡片标题\n */\n @property({\n __unstable_doNotDecorate: true,\n })\n set title(value: string) {\n this._title = value;\n this._render();\n }\n\n private _render(): void {\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <IndexCard title={this._title} contentGridGap={this.contentGridGap} />\n </BrickWrapper>,\n this._mountPoint\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.index-card\", IndexCardElement);\n","import {\n getRuntime,\n getHistory,\n UpdatingElement,\n property,\n} from \"@next-core/brick-kit\";\n/**\n * @id basic-bricks.home-redirect\n * @name basic-bricks.home-redirect\n * @docKind brick\n * @description 重定向到指定应用的首页\n * @author steve\n * @slots\n * @history\n * @memo\n * ### DEMO\n\n* ```json\n* {\n* \"brick\": \"basic-bricks.home-redirect\",\n* \"properties\": {\n* \"appId\": \"search\" // 目标应用Id\n* }\n* }\n* ```\n\n * @noInheritDoc\n */\nexport class HomeRedirectElement extends UpdatingElement {\n /**\n * @kind string\n * @required true\n * @default -\n * @description 指定的应用 Id\n */\n @property()\n appId: string;\n\n connectedCallback(): void {\n this._render();\n }\n\n protected _render(): void {\n if (this.isConnected && this.appId) {\n const apps = getRuntime().getMicroApps({ excludeInstalling: true });\n const app = apps.find((item) => item.id === this.appId);\n if (app && app.homepage) {\n getHistory().replace(app.homepage);\n }\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.home-redirect\", HomeRedirectElement);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./PrintButton.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React, { useState } from \"react\";\nimport { DownloadOutlined, InfoCircleOutlined } from \"@ant-design/icons\";\nimport { Modal, Popover, Button } from \"antd\";\nimport styles from \"./PrintButton.module.css\";\nimport printHelperUrl from \"../images/print-helper.png\";\n\ninterface PrintButtonProps {\n prefixTitle: string;\n backgroundColor?: string;\n color?: string;\n border?: string;\n size?: number;\n}\n\nexport function PrintButton(props: PrintButtonProps): React.ReactElement {\n const [visible, setVisible] = useState(false);\n\n const content = (\n <span>\n 查看{\" \"}\n <a onClick={preRemind}>\n 帮助{\" \"}\n <InfoCircleOutlined\n style={{ transform: \"translateY(1px)\" }}\n ></InfoCircleOutlined>\n </a>\n </span>\n );\n\n const handleVisible = (isVisible: boolean) => {\n setVisible(isVisible);\n };\n\n function preRemind() {\n const padding = 32;\n const pngWidth = 800;\n Modal.info({\n className: styles.printModalBody,\n maskClosable: true,\n title: \"打印操作指引\",\n width: pngWidth + padding * 2,\n okText: \"关闭\",\n content: (\n <div style={{ overflowY: \"scroll\", width: \"100%\", height: \"500px\" }}>\n <img src={printHelperUrl} alt=\"打印操作指导图片\" />\n </div>\n ),\n });\n }\n\n function invokePrint() {\n const originTitle = window.parent.document.title;\n // in iframe, maybe\n window.parent.document.title =\n props.prefixTitle +\n \"-\" +\n new Date().toISOString().substr(0, 10).replace(/-/g, \"\");\n window.print();\n window.parent.document.title = originTitle;\n }\n\n return (\n <div>\n <Popover\n title={null}\n content={content}\n visible={visible}\n onVisibleChange={handleVisible}\n overlayClassName=\"print-hide\"\n placement=\"left\"\n >\n <Button\n className=\"print-hide\"\n icon={<DownloadOutlined />}\n style={{\n backgroundColor: props.backgroundColor,\n color: props.color,\n border: props.border,\n width: props.size || 24,\n height: props.size || 24,\n }}\n onClick={invokePrint}\n ></Button>\n </Popover>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { PrintButton } from \"./PrintButton\";\n\n/**\n * @id basic-bricks.print-button\n * @name basic-bricks.print-button\n * @docKind brick\n * @description 触发打开浏览器的打印窗口\n * @author momo\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class PrintButtonElement extends UpdatingElement {\n top: string;\n\n /**\n * @kind string\n * @required true\n * @default -\n * @description 打印保存的 pdf 文件前缀\n */\n @property({\n attribute: false,\n })\n prefixTitle: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description fixed 布局下,按钮的位置\n */\n @property({\n attribute: false,\n })\n right: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description fixed 布局下,按钮的位置\n */\n @property({\n attribute: false,\n })\n bottom: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 按钮图标颜色\n */\n @property({\n attribute: false,\n })\n color: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 按钮边框\n */\n @property({\n attribute: false,\n })\n border: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 按钮的背景\n */\n @property({\n attribute: false,\n })\n backgroundColor: string;\n\n connectedCallback(): void {\n this.style.position = \"fixed\";\n this.style.right = this.right;\n this.style.bottom = this.bottom;\n this.style.top = this.top;\n this.style.zIndex = \"999\";\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <PrintButton\n prefixTitle={this.prefixTitle}\n color={this.color || \"\"}\n backgroundColor={this.backgroundColor || \"\"}\n border={this.border || \"\"}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.print-button\", PrintButtonElement);\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\nimport { Card, Tooltip, Button } from \"antd\";\nimport { CardProps } from \"antd/lib/card\";\nimport { ButtonProps } from \"antd/lib/button\";\nimport { isEmpty } from \"lodash\";\nimport ResizeObserver from \"resize-observer-polyfill\";\n\nexport interface OperationButton {\n // to listen for\n id: string;\n eventName: string;\n configProps: ButtonProps & { icon?: string };\n tooltip?: string;\n text?: string;\n needData?: boolean;\n}\n\nexport interface GeneralCardProps {\n configProps?: CardProps;\n operationButtons?: OperationButton[];\n hasExtraSlot?: boolean;\n cardTitle?: string;\n fillVertical?: boolean;\n verticalCenter?: boolean;\n isFixedFooter?: boolean;\n}\n\nexport function GeneralCard({\n configProps,\n operationButtons,\n hasExtraSlot,\n cardTitle,\n fillVertical,\n verticalCenter,\n isFixedFooter,\n}: GeneralCardProps): React.ReactElement {\n const [paddingBottom, setPaddingBottom] = useState(0);\n const [fixedStyle, setFixedStyle] = useState({});\n const footerRef = useRef<HTMLDivElement>();\n const renderButtons = (\n operationButtons: OperationButton[]\n ): React.ReactElement[] =>\n operationButtons.map((button, index) => {\n const icon = button.configProps?.icon;\n return (\n <Tooltip title={button.tooltip} key={index}>\n <Button\n {...button.configProps}\n icon={icon && <LegacyIcon type={icon} />}\n id={button.id}\n >\n {button.text}\n </Button>\n </Tooltip>\n );\n });\n\n const title = cardTitle && (\n <>\n {cardTitle} <slot id=\"titleSlot\" name=\"titleSuffix\" />\n </>\n );\n\n // istanbul ignore next\n const handleFooter = () => {\n const rootNodeRef = footerRef.current.getRootNode().host;\n const rootNodeRect = rootNodeRef.getBoundingClientRect();\n const top = rootNodeRect.bottom - window.innerHeight;\n if (top <= 0) {\n setFixedStyle({});\n } else {\n setFixedStyle({\n position: \"fixed\",\n left: rootNodeRect.left,\n bottom: 0,\n width: rootNodeRef.clientWidth,\n });\n }\n };\n // istanbul ignore next\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n if (\n paddingBottom !== footerRef.current.clientHeight &&\n footerRef.current.clientHeight\n ) {\n setPaddingBottom(footerRef.current.clientHeight);\n if (isFixedFooter) {\n handleFooter();\n }\n }\n });\n resizeObserver.observe(footerRef.current.getRootNode().host);\n\n if (isFixedFooter) {\n window.addEventListener(\"scroll\", handleFooter);\n window.addEventListener(\"resize\", handleFooter);\n }\n return () => {\n resizeObserver.disconnect();\n if (isFixedFooter) {\n window.removeEventListener(\"scroll\", handleFooter);\n window.removeEventListener(\"resize\", handleFooter);\n }\n };\n }, []);\n\n const buttons = isEmpty(operationButtons)\n ? null\n : renderButtons(operationButtons);\n\n const extra =\n hasExtraSlot || !isEmpty(operationButtons) ? (\n <div className=\"generalCardExtra\">\n {buttons}\n <slot id=\"extraSlot\" name=\"extra\" />\n </div>\n ) : null;\n\n return (\n <Card\n style={{\n ...(fillVertical ? { height: \"100%\" } : {}),\n ...(verticalCenter\n ? { display: \"grid\", gridTemplate: \"50px auto/auto\" }\n : {}),\n paddingBottom,\n }}\n bordered={false}\n extra={extra}\n title={title}\n {...configProps}\n className=\"generalCardContainer\"\n >\n <div\n style={\n verticalCenter\n ? {\n height: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }\n : {}\n }\n >\n <slot id=\"contentSlot\" name=\"content\" />\n </div>\n <div\n className=\"generalCardFooter\"\n ref={footerRef}\n style={{\n ...fixedStyle,\n ...(paddingBottom ? {} : { padding: 0 }),\n }}\n >\n <slot id=\"footerSlot\" name=\"footer\" />\n </div>\n </Card>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { GeneralCard, OperationButton } from \"./GeneralCard\";\nimport style from \"./index.shadow.less\";\nimport { CardProps } from \"antd/lib/card\";\nimport { isEmpty } from \"lodash\";\n\n/**\n * @id basic-bricks.general-card\n * @name basic-bricks.general-card\n * @docKind brick\n * @description 常见于为多个构件提供统一的卡片容器,比如将搜索框与表格放在一起\n * @author lynette\n * @slots\n * content:内容插槽\n * extra:右上角操作区插槽,使用时请设置 hasExtraSlot 为 true\n * titleSuffix:标题后缀的插槽\n * footer:底部插槽,当底部滚动到窗口外时,默认固定在窗口底部,适用场景参考 http://192.168.100.162/next/resource-events/alert-config/inhibition-rule/create,其他情况,请设置`isFixedFooter`为false;\n * @history\n * 1.42.0:新增属性 `fillVertical`\n * @memo\n * ```typescript\n * export interface OperationButton {\n * // to listen for\n * id: string;\n * eventName: string;\n * configProps: ButtonProps;\n * text?: string;\n * needData?: boolean;\n * }\n * ```\n * @noInheritDoc\n */\nexport class GeneralCardElement extends UpdatingElement {\n /**\n * @kind string\n * @required false\n * @default -\n * @description 卡片标题\n * @group basic\n */\n @property()\n cardTitle: string;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 设置该属性后,设置卡片高度为 100%,卡片高度会自动撑满父容器\n * @group basic\n */\n @property({\n type: Boolean,\n })\n fillVertical: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 设置该属性后,卡片内容区的元素自动垂直居中\n * @group basic\n */\n @property({\n type: Boolean,\n })\n verticalCenter: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否右上角有操作区 slot\n * @group basic\n */\n @property({\n type: Boolean,\n })\n hasExtraSlot: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description footer滚动到窗口外时,是否需要将footer固定在窗口底部\n * @group advanced\n */\n @property({\n attribute: false,\n })\n isFixedFooter = true;\n\n private _mountPoint: HTMLElement;\n private _shadowRoot: ShadowRoot;\n private _operationBtns: OperationButton[] = [];\n private idEventNameMap: Map<string, string> = new Map();\n private eventDetailMap: Map<string, any> = new Map();\n private hasFooter: boolean;\n private _getFooterSlot(): HTMLSlotElement {\n return this.shadowRoot.querySelector(\"#footerSlot\") as HTMLSlotElement;\n }\n private _checkFooterSlot = (): void => {\n const footerSlot = this._getFooterSlot();\n if (footerSlot) {\n this.hasFooter = footerSlot.assignedNodes().length > 0;\n }\n };\n constructor() {\n super();\n this._shadowRoot = this.attachShadow({ mode: \"open\" });\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = style;\n this._shadowRoot.appendChild(styleElement);\n this._mountPoint = document.createElement(\"div\");\n\n this._shadowRoot.appendChild(this._mountPoint);\n }\n\n connectedCallback(): void {\n if (this.fillVertical) {\n this._mountPoint.style.height = \"100%\";\n }\n this.listenOnClick();\n this._render();\n }\n\n listenOnClick() {\n this.addEventListener(\"click\", (e) => {\n const paths = e.composedPath() as HTMLElement[];\n for (const path of paths) {\n if (path.nodeName.toLowerCase() === \"#document-fragment\") {\n break;\n }\n if (\n path.nodeName.toLowerCase() === \"button\" &&\n this.idEventNameMap.has(path.id)\n ) {\n this.emitEvent(this.idEventNameMap.get(path.id));\n break;\n }\n }\n });\n }\n\n dealCustomEvent(event: CustomEvent) {\n this.eventDetailMap.set(event.type, event.detail);\n for (const button of this._operationBtns) {\n if (button.eventName === event.type && button.needData) {\n button.configProps.disabled = isEmpty(event.detail);\n }\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this._mountPoint);\n }\n\n protected _render(): void {\n if (this.isConnected) {\n for (const button of this.operationButtons) {\n this.idEventNameMap.set(button.id, button.eventName);\n if (button.needData) {\n button.configProps.disabled = true;\n }\n }\n ReactDOM.render(\n <BrickWrapper>\n <GeneralCard\n configProps={this.configProps}\n operationButtons={this.operationButtons}\n hasExtraSlot={this.hasExtraSlot}\n cardTitle={this.cardTitle}\n fillVertical={this.fillVertical}\n verticalCenter={this.verticalCenter}\n isFixedFooter={this.isFixedFooter}\n />\n </BrickWrapper>,\n this._mountPoint,\n () => {\n const footerSlot = this._getFooterSlot();\n if (footerSlot) {\n this._checkFooterSlot();\n footerSlot.addEventListener(\"slotchange\", this._checkFooterSlot);\n }\n }\n );\n }\n }\n\n emitEvent(eventName: string) {\n const detail = this.eventDetailMap.get(eventName) || {};\n this.dispatchEvent(new CustomEvent(eventName, { detail }));\n }\n\n /**\n * @kind map\n * @required false\n * @default -\n * @description 完全透传给 antd 的 Card 属性,详见:[https://ant.design/components/card-cn/#Card](https://ant.design/components/card-cn/#Card)\n */\n @property({ attribute: false }) configProps: CardProps;\n\n /**\n * @kind OperationButton[]\n * @required false\n * @default -\n * @description 右上角的操作按钮列表,可自定义指定该按钮的名字,并配置该按钮点击后发出的事件,在 storyboard 去监听该事件传给目标\n */\n @property({ attribute: false }) operationButtons: OperationButton[] = [];\n}\n\ncustomElements.define(\"basic-bricks.general-card\", GeneralCardElement);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./index.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport { Sidebar, GeneralIcon } from \"@next-libs/basic-components\";\nimport style from \"./index.module.css\";\nimport { SidebarMenu } from \"@next-core/brick-types\";\n\ninterface SubMenuProps {\n dataSource: SidebarMenu;\n}\n\nexport function SubMenu({ dataSource }: SubMenuProps): React.ReactElement {\n return (\n <div className={style.subMenuContainer}>\n {(dataSource.icon || dataSource.title) && (\n <div className={style.header}>\n <GeneralIcon icon={dataSource.icon} />\n <span className={style.headerTitle}>{dataSource.title}</span>\n </div>\n )}\n <Sidebar\n menuItems={dataSource.menuItems}\n inlineIndent={16}\n theme=\"light\"\n />\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, property, UpdatingElement } from \"@next-core/brick-kit\";\nimport { SubMenu } from \"./SubMenu\";\nimport { SidebarMenu } from \"@next-core/brick-types\";\n\n/**\n * @id basic-bricks.sub-menu\n * @name basic-bricks.sub-menu\n * @editor shared-editors.general-menu--editor\n * @docKind brick\n * @description 二级菜单\n * @author lynette\n * @slots\n * @history\n * @memo\n * > Tips: 通用子菜单构件,相关配置项同 Storyboard.routes.menu.sidebarMenu,暂时不支持 icon\n * @noInheritDoc\n */\nexport class SubMenuElement extends UpdatingElement {\n /**\n * @kind [SidebarMenu](http://developers.162.d.easyops.local/micro-app/storyboard-routes-menu-sidebarmenu.html)\n * @required true\n * @default -\n * @description 数据源\n */\n @property({ attribute: false }) dataSource: SidebarMenu;\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <SubMenu dataSource={this.dataSource} />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.sub-menu\", SubMenuElement);\n","import React, { useEffect, useRef, useState } from \"react\";\nimport classnames from \"classnames\";\nimport { Modal, Button } from \"antd\";\nimport { ModalProps } from \"antd/lib/modal\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { NS_BASIC_BRICKS, K } from \"../i18n/constants\";\nimport { useTranslation } from \"react-i18next\";\n\nconst fullscreenTopOffset = 40;\n\nconst titleAlignPropertyMap: Record<string, string> = {\n start: \"flex-start\",\n left: \"flex-start\",\n center: \"center\",\n right: \"flex-end\",\n end: \"flex-end\",\n};\n\ninterface GeneralModalProps {\n visible: boolean;\n configProps?: ModalProps;\n modalTitle: string;\n hideCancelButton?: boolean;\n enableFooterSlot?: boolean;\n titleAlign?: string;\n titleIcon?: MenuIcon;\n fullscreen?: boolean;\n okDisabled?: boolean;\n confirmLoading?: boolean;\n}\n\nexport function GeneralModal(props: GeneralModalProps): React.ReactElement {\n const {\n configProps,\n enableFooterSlot,\n hideCancelButton,\n modalTitle,\n visible,\n titleAlign,\n titleIcon,\n fullscreen,\n okDisabled,\n confirmLoading,\n } = props;\n const modalHeaderRef = useRef<HTMLDivElement>();\n const modalFooterRef = useRef<HTMLDivElement>();\n const contentSlotRef = useRef<HTMLSlotElement>();\n const setBodyHeightHandlerRef = useRef<() => void>();\n const [bodyHeight, setBodyHeight] = useState<number>();\n const { t } = useTranslation(NS_BASIC_BRICKS);\n\n useEffect(() => {\n if (fullscreen && visible && contentSlotRef.current) {\n if (!setBodyHeightHandlerRef.current) {\n if (!modalHeaderRef.current || !modalFooterRef.current) {\n const modalContent = contentSlotRef.current.closest(\n \".ant-modal-content\"\n ) as HTMLDivElement;\n modalHeaderRef.current =\n modalContent.querySelector(\".ant-modal-header\");\n modalFooterRef.current =\n modalContent.querySelector(\".ant-modal-footer\");\n }\n setBodyHeightHandlerRef.current = () => {\n setTimeout(() => {\n setBodyHeight(\n window.innerHeight -\n fullscreenTopOffset -\n modalHeaderRef.current.getBoundingClientRect().height -\n modalFooterRef.current.getBoundingClientRect().height\n );\n });\n };\n setBodyHeightHandlerRef.current();\n window.addEventListener(\"resize\", setBodyHeightHandlerRef.current);\n }\n } else {\n if (setBodyHeightHandlerRef.current) {\n window.removeEventListener(\"resize\", setBodyHeightHandlerRef.current);\n modalHeaderRef.current = undefined;\n modalFooterRef.current = undefined;\n setBodyHeightHandlerRef.current = undefined;\n }\n }\n\n return () => {\n if (setBodyHeightHandlerRef.current) {\n window.removeEventListener(\"resize\", setBodyHeightHandlerRef.current);\n }\n };\n }, [fullscreen, visible]);\n\n let footer = undefined;\n const defaultFooter = (\n <div>\n <Button type=\"link\" className=\"cancelBtn\">\n {configProps?.cancelText || t(K.CANCEL)}\n </Button>\n <Button\n disabled={okDisabled ?? configProps?.okButtonProps?.disabled}\n loading={confirmLoading}\n className=\"okBtn\"\n type={configProps?.okType || \"primary\"}\n >\n {configProps?.okText || t(K.OK)}\n </Button>\n </div>\n );\n\n if (enableFooterSlot) {\n footer = (\n <div className=\"footer-container\">\n <slot name=\"footer\"></slot>\n <div></div>\n {configProps && configProps.footer !== null && defaultFooter}\n </div>\n );\n delete configProps.footer;\n }\n\n return (\n <Modal\n className={classnames({ wrapper: hideCancelButton })}\n title={\n modalTitle && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: titleAlignPropertyMap[titleAlign],\n }}\n >\n {titleIcon && (\n <GeneralIcon icon={titleIcon} style={{ marginRight: 8 }} />\n )}\n {modalTitle}\n <span className=\"headerExtra\">\n <slot id=\"headerExtra\" name=\"headerExtra\"></slot>\n </span>\n </div>\n )\n }\n footer={footer || defaultFooter}\n width={fullscreen ? \"100%\" : undefined}\n style={fullscreen ? { top: fullscreenTopOffset } : undefined}\n bodyStyle={fullscreen ? { height: bodyHeight } : undefined}\n wrapClassName={classnames({ fullscreen })}\n {...configProps}\n cancelButtonProps={{ type: \"link\", ...configProps?.cancelButtonProps }}\n visible={visible}\n >\n <slot id=\"content\" name=\"content\" ref={contentSlotRef}></slot>\n </Modal>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { ModalProps } from \"antd/lib/modal\";\n\nimport {\n BrickWrapper,\n property,\n UpdatingElement,\n method,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { GeneralModal } from \"./GeneralModal\";\nimport style from \"./index.shadow.less\";\nimport { get, pick, forEach, set } from \"lodash\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { ButtonType } from \"antd/lib/button\";\n\nexport interface OpenCloseOption {\n noEvent?: boolean;\n}\n/**\n * @id basic-bricks.general-modal\n * @name basic-bricks.general-modal\n * @docKind brick\n * @description 提供插槽以展示其他构件,注意与表单通用模态框 (forms.general-modal) 的不同\n * @author ice\n * @slots\n * content:模态框里面的内容\n * headerExtra:模态框头部标题后面的内容\n * @history\n * 1.26.0:新增 `modal.close` 事件\n * 1.34.0:新增 `width` 属性\n * 1.37.0:新增 `okText`, `cancelText` 属性, 新增 `modal.open` 事件\n * 1.53.0:新增 `hideCancelButton` 属性\n * 1.60.0:`open` 和 `close` 方法新增 `noEvent` 选项\n * 1.61.0:新增 `enableFooterSlot` 属性\n * 1.88.0:新增 `titleAlign` 和 `titleIcon` 属性\n * @memo\n * ### OpenCloseOption\n\n* | property | type | required | default | description |\n* | -------- | --------- | -------- | ------- | ----------- |\n* | noEvent | `boolean` | - | - | 不触发事件 |\n * @noInheritDoc\n */\nexport class GeneralModalElement extends UpdatingElement {\n /**\n * @kind string\n * @required false\n * @default -\n * @description 模态框标题\n * @group basic\n */\n @property()\n modalTitle: string;\n\n /**\n * @kind MenuIcon\n * @required false\n * @default -\n * @description 标题图标\n * @group basic\n */\n @property({ attribute: false })\n titleIcon?: MenuIcon;\n\n /**\n * @required false\n * @default -\n * @description 标题对齐方式\n * @group basic\n */\n @property()\n titleAlign?: string;\n\n /**\n * @kind string | number\n * @required false\n * @default -\n * @description 模态框宽度\n * @group basic\n */\n @property({ attribute: false })\n width: string | number;\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default -\n * @description 数据来源\n * @group basic\n */\n @property({\n attribute: false,\n })\n dataSource: Record<string, any>;\n\n /**\n * @kind string\n * @required false\n * @default `\"确认\"`\n * @description 确认按钮文字\n * @group basic\n */\n @property()\n okText: string;\n\n /**\n * @kind ButtonType\n * @required false\n * @default `\"primary\"`\n * @description 模态框确认按钮类型 ButtonType(\"link\" | \"default\" | \"primary\" | \"ghost\" | \"dashed\" | \"danger\")\n * @group basic\n */\n @property()\n okType: ButtonType;\n\n /**\n * @kind boolean\n * @required false\n * @default `false`\n * @description 是否禁用确认按钮\n * @group basic\n */\n @property({ type: Boolean })\n okDisabled: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default `false`\n * @description 确定按钮 loading\n * @group basic\n */\n @property({ type: Boolean })\n confirmLoading: boolean;\n\n /**\n * @kind string\n * @required false\n * @default `\"取消\"`\n * @description 取消按钮文字\n * @group basic\n */\n @property()\n cancelText: string;\n\n /**\n * @kind boolean\n * @required false\n * @default `false`\n * @description 是否隐藏取消按钮\n * @group basic\n */\n @property({ type: Boolean })\n hideCancelButton: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default `true`\n * @description 点击确定时,是否立即关闭模态框,如果设为`false`,则需要自行关闭。\n * @group basic\n */\n @property({ attribute: false }) closeWhenOk = true;\n\n /**\n * @kind boolean\n * @required false\n * @default `false`\n * @description 是否启用 footer 插槽\n * @group basic\n */\n @property({ type: Boolean })\n enableFooterSlot: boolean;\n\n /**\n * @default `false`\n * @description 全屏模式\n * @group advanced\n */\n @property({ type: Boolean })\n fullscreen?: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default `true`\n * @description 是否点击背景关闭模态框\n * @group advanced\n */\n @property({\n attribute: false,\n })\n maskClosable: boolean;\n\n /**\n * @kind object\n * @required false\n * @default -\n * @description 完全透传给 antd 的 Modal 属性,详见:[https://ant.design/components/modal-cn/#API](https://ant.design/components/modal-cn/#API)\n * @group advanced\n */\n @property({ attribute: false })\n configProps: ModalProps;\n\n /**\n * @kind {modalTitle: string}\n * @required false\n * @default -\n * @description [已废弃]字段映射, 跟 dataSource 一起使用来获得运行时 modalTitle\n * @group advanced\n */\n @property({\n attribute: false,\n })\n fields: {\n modalTitle: string;\n };\n\n private _mountPoint: HTMLElement;\n private isVisible = false;\n private modalProps: ModalProps = {};\n\n constructor() {\n super();\n\n const shadowRoot = this.attachShadow({ mode: \"open\" });\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = style;\n shadowRoot.appendChild(styleElement);\n this._mountPoint = document.createElement(\"div\");\n shadowRoot.appendChild(this._mountPoint);\n }\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this.listenOnClose();\n this._render();\n }\n\n // istanbul ignore next\n listenOnClose() {\n this.addEventListener(\"click\", (e) => {\n const paths = e.composedPath() as HTMLElement[];\n const clickNode = paths[0];\n const nodeName = clickNode.nodeName.toLowerCase();\n const buttonNode =\n nodeName === \"button\" ? clickNode : clickNode.closest(\"button\");\n\n if (\n ((this.maskClosable !== undefined\n ? this.maskClosable\n : this.modalProps.maskClosable !== false) &&\n nodeName === \"div\" &&\n clickNode.className.includes(\"ant-modal-wrap\")) ||\n (buttonNode && buttonNode.className.includes(\"ant-modal-close\"))\n ) {\n this.close();\n return;\n }\n\n if (buttonNode && buttonNode.closest(\".ant-modal-footer\") !== null) {\n const isInFooterContainer =\n buttonNode.closest(\".footer-container\") !== null;\n\n if (\n buttonNode.className.includes(\"okBtn\") ||\n (!isInFooterContainer &&\n buttonNode.className.includes(\"ant-btn-primary\"))\n ) {\n this.generalModalConfirm.emit();\n if (this.closeWhenOk) {\n this.close();\n }\n } else if (\n buttonNode.className.includes(\"cancelBtn\") ||\n !isInFooterContainer\n ) {\n this.generalModalCancel.emit();\n this.close();\n }\n return;\n }\n });\n }\n\n disconnectedCallback(): void {\n document.body.style.overflow = \"\";\n document.body.style.touchAction = \"\";\n ReactDOM.unmountComponentAtNode(this);\n }\n private initData(mutableProps: { modalTitle: string }): void {\n const pickFields = pick(this.fields, [\"modalTitle\"]);\n forEach(pickFields, (fieldKey, field: string) => {\n set(mutableProps, field, get(this.dataSource, fieldKey));\n });\n }\n protected _render(): void {\n if (this.configProps) {\n this.modalProps = { ...this.configProps };\n }\n this.modalProps.getContainer = this._mountPoint;\n if (this.isConnected) {\n const mutableProps = {\n modalTitle: this.modalTitle,\n };\n if (this.fields && this.dataSource) {\n this.initData(mutableProps);\n }\n if (this.width) {\n set(this.modalProps, \"width\", this.width);\n }\n if (this.okText) {\n set(this.modalProps, \"okText\", this.okText);\n }\n if (this.cancelText) {\n set(this.modalProps, \"cancelText\", this.cancelText);\n }\n if (this.okType) {\n set(this.modalProps, \"okType\", this.okType);\n }\n ReactDOM.render(\n <BrickWrapper>\n <GeneralModal\n visible={this.isVisible}\n configProps={this.modalProps}\n modalTitle={mutableProps.modalTitle}\n hideCancelButton={this.hideCancelButton}\n enableFooterSlot={this.enableFooterSlot}\n titleAlign={this.titleAlign}\n titleIcon={this.titleIcon}\n fullscreen={this.fullscreen}\n okDisabled={this.okDisabled}\n confirmLoading={this.confirmLoading}\n />\n </BrickWrapper>,\n this._mountPoint\n );\n }\n }\n /**\n *\n * @description 弹出模态框\n */\n @method() open(option?: OpenCloseOption): void {\n this.isVisible = true;\n document.body.style.overflow = \"hidden\";\n document.body.style.touchAction = \"none\";\n if (!option?.noEvent) {\n this.openModal.emit(this.dataSource);\n }\n\n this._render();\n }\n /**\n * @params `option?: OpenCloseOption`\n * @description 打开 modal 时发出该事件\n */\n @event({ type: \"modal.open\" }) openModal: EventEmitter<Record<string, any>>;\n /**\n * @params `option?: OpenCloseOption`\n * @description 关闭模态框\n */\n @method() close(option?: OpenCloseOption): void {\n this.isVisible = false;\n document.body.style.overflow = \"\";\n document.body.style.touchAction = \"\";\n if (!option?.noEvent) {\n this.closeModal.emit(this.dataSource);\n }\n\n this._render();\n }\n /**\n * @detail -\n * @description 关闭 modal 时发出该事件\n */\n @event({ type: \"modal.close\" }) closeModal: EventEmitter<Record<string, any>>;\n\n /**\n * @detail `dataSource`\n * @description 当点击 modal 自带的取消按钮时发出该事件\n */\n @event({ type: \"basic-bricks.general-modal.cancel\" })\n generalModalCancel: EventEmitter;\n /**\n * @detail `dataSource`\n * @description 当点击 modal 自带的确认按钮时发出该事件\n */\n @event({ type: \"basic-bricks.general-modal.confirm\" })\n generalModalConfirm: EventEmitter;\n}\n\ncustomElements.define(\"basic-bricks.general-modal\", GeneralModalElement);\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Drawer, Spin } from \"antd\";\n\nimport { NS_BASIC_BRICKS, K } from \"../i18n/constants\";\nimport { DrawerProps } from \"antd/lib/drawer\";\n\ninterface GeneralDrawerProps {\n visible: boolean;\n title?: string;\n width?: number;\n getContainer?: HTMLElement;\n closable?: boolean;\n bodyStyle?: Record<string, any>;\n drawerStyle?: Record<string, any>;\n hasFooter?: boolean;\n loading?: boolean;\n mask?: boolean;\n headerStyle?: Record<string, any>;\n configProps?: DrawerProps;\n}\n\nexport function GeneralDrawer(props: GeneralDrawerProps): React.ReactElement {\n const { t } = useTranslation(NS_BASIC_BRICKS);\n const title = (\n <div className=\"header\">\n {props.title ? (\n <span>{props.title}</span>\n ) : (\n <div className=\"flexContainer\">\n <slot id=\"headerLeft\" name=\"headerLeft\"></slot>\n </div>\n )}\n <div className=\"flexContainer\">\n <slot id=\"headerRight\" name=\"headerRight\"></slot>\n </div>\n </div>\n );\n const [maxContentHeight, setMaxContentHeight] = React.useState<number>();\n\n React.useEffect(() => {\n if (props.hasFooter) {\n const normalHeaderHeight = 64;\n const drawerContentPadding = 24;\n const manualFix = 4;\n let height =\n window.innerHeight -\n normalHeaderHeight -\n drawerContentPadding -\n manualFix;\n const normalFooterHeight = 64;\n height -= normalFooterHeight;\n setMaxContentHeight(height);\n }\n }, [props.hasFooter]);\n\n return (\n <Drawer\n {...props.configProps}\n title={title}\n width={props.width}\n visible={props.visible}\n getContainer={props.getContainer}\n closable={props.closable}\n bodyStyle={props.bodyStyle}\n drawerStyle={props.drawerStyle}\n mask={props.mask}\n headerStyle={props.headerStyle}\n >\n <Spin spinning={props.loading} tip=\"Loading...\">\n <div className=\"content\" style={{ maxHeight: maxContentHeight }}>\n <slot id=\"content\" name=\"content\"></slot>\n </div>\n </Spin>\n {props.hasFooter && (\n <div className=\"footer\">\n <div className=\"footer-inner\">\n <slot id=\"footer\" name=\"footer\"></slot>\n </div>\n </div>\n )}\n </Drawer>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport {\n BrickWrapper,\n property,\n UpdatingElement,\n method,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { GeneralDrawer } from \"./GeneralDrawer\";\nimport style from \"./index.shadow.less\";\nimport { DrawerProps } from \"antd/lib/drawer\";\nexport interface OpenCloseOption {\n noEvent?: boolean;\n}\n/**\n * @id basic-bricks.general-drawer\n * @name basic-bricks.general-drawer\n * @docKind brick\n * @description 提供插槽以展示其他构件\n * @author ice\n * @slots\n * headerLeft:标题左侧插槽位,当设置 `customTitle` 属性时,该插槽无效\n * headerRight:标题右侧插槽位,当使用该插槽时,应设置 `closable` 为 false\n * content:内容插槽位\n * footer:底部插槽位,仅当 `hasFooter` 为真时,该插槽才会存在\n * @history\n * 1.30.0:新增 `bodyStyle` 和 `drawerStyle` 配置\n * 1.34.0:新增插槽 `headerLeft`, `headerRight` 和 `footer`,新增 `general.drawer.open` 事件\n * 1.60.0:`open` 和 `close` 方法新增 `noEvent` 选项\n * @memo\n * ### OpenCloseOption\n\n* | property | type | required | default | description |\n* | -------- | --------- | -------- | ------- | ----------- |\n* | noEvent | `boolean` | - | - | 不触发事件 |\n * @noInheritDoc\n */\n\nexport class GeneralDrawerElement extends UpdatingElement {\n private _mountPoint: HTMLElement;\n private isVisible = false;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 标题\n * @group basic\n */\n @property()\n customTitle: string;\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 是否显示loading效果\n * @group basic\n */\n @property({ type: Boolean })\n loading: boolean;\n\n /**\n * @kind number\n * @required false\n * @default -\n * @description 宽度\n * @group basic\n */\n @property({ type: Number })\n width: number;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 是否显示右上角的关闭按钮\n * @group basic\n */\n @property({ type: Boolean })\n closable: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 点击蒙层是否允许关闭\n * @group basic\n */\n @property({ type: Boolean })\n maskClosable: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否提供 `footer` 插槽\n * @group basic\n */\n @property({ type: Boolean })\n hasFooter: boolean;\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否展示遮罩\n * @group basic\n */\n @property({ attribute: false })\n mask = true;\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default -\n * @description 可用于设置 Drawer 内容部分的样式\n * @group advanced\n */\n @property({\n attribute: false,\n })\n bodyStyle: Record<string, any>;\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default -\n * @description 用于设置 Drawer 弹出层的样式\n * @group advanced\n */\n @property({\n attribute: false,\n })\n drawerStyle: Record<string, any>;\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default -\n * @description 用于设置 Drawer 头部的样式\n * @group advanced\n */\n @property({\n attribute: false,\n })\n headerStyle: Record<string, any>;\n /**\n * @kind object\n * @required false\n * @default -\n * @description 完全透传给 antd 的 Drawer 属性,详见:[https://ant.design/components/drawer-cn/#API](https://ant.design/components/drawer-cn/#API)\n * @group advanced\n */\n @property({ attribute: false })\n configProps: DrawerProps;\n\n constructor() {\n super();\n\n const shadowRoot = this.attachShadow({ mode: \"open\" });\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = style;\n shadowRoot.appendChild(styleElement);\n this._mountPoint = document.createElement(\"div\");\n shadowRoot.appendChild(this._mountPoint);\n }\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this.listenOnClose();\n this._render();\n }\n\n // istanbul ignore next\n listenOnClose() {\n this.addEventListener(\"click\", (e) => {\n const paths = e.composedPath() as HTMLElement[];\n\n const maybeMaskDom = paths[0];\n if (\n maybeMaskDom.nodeName.toLowerCase() === \"div\" &&\n maybeMaskDom.className.includes(\"ant-drawer-mask\")\n ) {\n e.stopPropagation();\n if (this.maskClosable) {\n this.close();\n return;\n }\n }\n\n if (!this.closable) {\n return;\n }\n\n for (const dom of paths) {\n if (\n dom.nodeName &&\n dom.nodeName.toLowerCase() === \"#document-fragment\"\n ) {\n break;\n }\n if (\n dom.nodeName &&\n dom.nodeName.toLowerCase() === \"button\" &&\n dom.className.includes(\"ant-drawer-close\")\n ) {\n e.stopPropagation();\n this.close();\n break;\n }\n }\n });\n }\n\n disconnectedCallback(): void {\n document.body.style.overflow = \"\";\n document.body.style.touchAction = \"\";\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <GeneralDrawer\n closable={this.closable}\n title={this.customTitle}\n visible={this.isVisible}\n width={this.width}\n getContainer={this._mountPoint}\n bodyStyle={this.bodyStyle}\n drawerStyle={this.drawerStyle}\n hasFooter={this.hasFooter}\n loading={this.loading}\n headerStyle={this.headerStyle}\n mask={this.mask}\n configProps={this.configProps}\n />\n </BrickWrapper>,\n this._mountPoint\n );\n }\n }\n /**\n *\n * @detail\n * @description 构件打开时所发出的事件, 事件数据为空\n */\n @event({ type: \"general.drawer.open\" }) drawerOpen: EventEmitter<\n Record<string, any>\n >;\n /**\n *\n * @description 显示抽屉构件\n */\n @method()\n open(option?: OpenCloseOption): void {\n this.isVisible = true;\n document.body.style.overflow = \"hidden\";\n document.body.style.touchAction = \"none\";\n this._render();\n\n if (!option?.noEvent) {\n this.drawerOpen.emit({});\n }\n }\n /**\n *\n * @detail\n * @description 构件关闭时所发出的事件, 事件数据为空\n */\n @event({ type: \"general.drawer.close\" }) drawerClose: EventEmitter<\n Record<string, any>\n >;\n /**\n *\n * @description 显示抽屉构件\n */\n @method()\n close(option?: OpenCloseOption): void {\n this.isVisible = false;\n document.body.style.overflow = \"\";\n document.body.style.touchAction = \"\";\n this._render();\n\n if (!option?.noEvent) {\n this.drawerClose.emit({});\n }\n\n // refs: https://github.com/ant-design/ant-design/issues/21894\n document.body.style.removeProperty(\"overflow\");\n }\n}\n\ncustomElements.define(\"basic-bricks.general-drawer\", GeneralDrawerElement);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./index.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\nimport {\n DownOutlined,\n EllipsisOutlined,\n SettingOutlined,\n} from \"@ant-design/icons\";\nimport { Button, Dropdown, Menu, Tooltip } from \"antd\";\nimport { MenuInfo } from \"rc-menu/lib/interface\";\nimport { isEmpty } from \"lodash\";\nimport { CustomButton, DropdownPlacement } from \"./index\";\nimport { Link, GeneralIcon } from \"@next-libs/basic-components\";\nimport style from \"./index.module.css\";\n\ndeclare const ButtonTypes: [\n \"default\",\n \"primary\",\n \"ghost\",\n \"dashed\",\n \"link\",\n \"text\",\n \"icon\"\n];\ndeclare type ButtonType = typeof ButtonTypes[number];\ninterface AdminButtonProps {\n buttons: CustomButton[];\n handleClick: (eventName: string, button: CustomButton) => void;\n dropdownBtnText?: string;\n dropdownBtnIcon?: any;\n isMoreButton?: boolean;\n moreBtnIcon?: any;\n moreButtonShape?: \"circle\" | \"rectangle\" | \"no\" | \"icon\";\n moreButtonType?: ButtonType;\n alignment?: \"start\" | \"center\" | \"end\" | \"stretch\";\n dropdownPlacement?: DropdownPlacement;\n dropdownBtnType?: \"default\" | \"link\";\n}\n\nexport class GeneralCustomButtons extends React.Component<AdminButtonProps> {\n constructor(props: AdminButtonProps) {\n super(props);\n this.handleMenuClick = this.handleMenuClick.bind(this);\n }\n\n handleMenuClick(info: MenuInfo) {\n this.props.handleClick(\n info.key as string,\n (info.item as React.Component<any>).props[\"data-button\"]\n );\n }\n\n render() {\n const {\n buttons: buttonConfigs,\n handleClick,\n dropdownPlacement,\n isMoreButton,\n moreButtonShape,\n moreBtnIcon,\n moreButtonType,\n dropdownBtnIcon,\n dropdownBtnText,\n alignment,\n dropdownBtnType,\n } = this.props;\n const propsButtons = buttonConfigs.filter((btn) => !btn.hide);\n const buttons = propsButtons\n .filter((btn) => !btn.isDropdown)\n .map((button) => {\n const {\n icon,\n buttonHref,\n buttonUrl,\n buttonType,\n buttonShape,\n buttonSize,\n urlTarget,\n color,\n eventName,\n text,\n tooltip,\n disabledTooltip,\n tooltipPlacement,\n testId,\n ...restProps\n } = button;\n const buttonComponent = (\n <Button\n className={style.iconButton}\n icon={\n icon &&\n typeof icon === \"string\" && (\n <LegacyIcon type={icon} data-icon={icon} />\n )\n }\n onClick={() => {\n handleClick(eventName, button);\n }}\n style={{ color: color }}\n type={buttonType}\n shape={buttonShape}\n size={buttonSize}\n data-testid={testId}\n {...restProps}\n >\n {icon && typeof icon === \"object\" && <GeneralIcon icon={icon} />}\n {text}\n </Button>\n );\n\n const child =\n buttonUrl || buttonHref ? (\n <Link href={buttonHref} to={buttonUrl} target={urlTarget}>\n {buttonComponent}\n </Link>\n ) : (\n buttonComponent\n );\n\n return (\n <Tooltip\n title={restProps.disabled ? disabledTooltip : tooltip}\n placement={tooltipPlacement}\n key={eventName}\n >\n {child}\n </Tooltip>\n );\n });\n let dropdown: React.ReactNode;\n const dropdownButtons = propsButtons.filter((btn) => btn.isDropdown);\n if (!isEmpty(dropdownButtons)) {\n const menu = (\n <Menu onClick={this.handleMenuClick}>\n {dropdownButtons.map((button, idx) => {\n if (button.isDivider) {\n return <Menu.Divider key={idx} />;\n }\n\n const wrapIcon = (\n <span className={style.dropdownBtnIconContainer}>\n {button.icon &&\n (typeof button.icon === \"string\" ? (\n <LegacyIcon\n type={button.icon}\n className={style.menuIcon}\n data-icon={button.icon}\n />\n ) : (\n <GeneralIcon icon={button.icon} />\n ))}\n {button.text}\n </span>\n );\n const text =\n button.buttonUrl || button.buttonHref ? (\n <Link\n href={button.buttonHref}\n to={button.buttonUrl}\n target={button.urlTarget}\n disabled={button.disabled}\n >\n {wrapIcon}\n </Link>\n ) : (\n wrapIcon\n );\n const tooltip = (\n <Tooltip\n title={\n button.disabled ? button.disabledTooltip : button.tooltip\n }\n placement={button.tooltipPlacement}\n >\n <div\n className={classNames(style.dropdownBtn, {\n [style.dropdownBtnNormal]: !button.disabled,\n })}\n >\n {text}\n </div>\n </Tooltip>\n );\n return (\n <Menu.Item\n className={classNames({\n [style.disabledMenuItem]: button.disabled,\n [style.dropdownMenuItem]: !button.disabled,\n })}\n key={button.eventName}\n style={{ color: button.disabled ? \"\" : button.color }}\n disabled={button.disabled}\n data-button={button}\n data-testid={button.testId}\n >\n {tooltip}\n </Menu.Item>\n );\n })}\n </Menu>\n );\n dropdown = (\n <Dropdown\n overlay={menu}\n trigger={[\"click\"]}\n placement={dropdownPlacement ?? \"bottomRight\"}\n >\n {isMoreButton ? (\n <Button\n type={moreButtonType}\n icon={\n moreBtnIcon &&\n typeof moreBtnIcon === \"string\" && (\n <LegacyIcon type={moreBtnIcon} />\n )\n }\n className={classNames(\n style.moreButton,\n {\n [style.noShapeButton]: moreButtonShape === \"no\",\n },\n {\n [style.circleShapeButton]: moreButtonShape === \"circle\",\n },\n {\n [style.moreIconButton]: moreButtonShape === \"icon\",\n }\n )}\n data-testid=\"dropdown-trigger\"\n >\n {moreBtnIcon && typeof moreBtnIcon === \"object\" && (\n <GeneralIcon icon={moreBtnIcon} />\n )}\n {!moreBtnIcon && <EllipsisOutlined />}\n </Button>\n ) : dropdownBtnType === \"link\" ? (\n <Button\n type=\"link\"\n className={style.dropdownBtnContainer}\n data-testid=\"dropdown-trigger\"\n >\n {dropdownBtnText || \"管理\"}\n </Button>\n ) : (\n <Button\n className={style.dropdownBtnContainer}\n icon={\n dropdownBtnIcon && typeof dropdownBtnIcon === \"string\" ? (\n <LegacyIcon type={dropdownBtnIcon} />\n ) : dropdownBtnIcon &&\n typeof dropdownBtnIcon === \"object\" ? null : (\n <SettingOutlined />\n )\n }\n data-testid=\"dropdown-trigger\"\n >\n {dropdownBtnIcon && typeof dropdownBtnIcon === \"object\" && (\n <GeneralIcon icon={dropdownBtnIcon} />\n )}\n {dropdownBtnText || \"管理\"} <DownOutlined />\n </Button>\n )}\n </Dropdown>\n );\n }\n\n return (\n <div\n className={style.customButtonsContainer}\n style={{ justifyContent: alignment ?? \"center\" }}\n >\n {buttons}\n {dropdown}\n </div>\n );\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isEqual } from \"lodash\";\nimport {\n UpdatingElement,\n property,\n method,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport update from \"immutability-helper\";\nimport { ButtonType, ButtonShape, ButtonSize } from \"antd/lib/button\";\nimport { TooltipPlacement } from \"antd/lib/tooltip\";\nimport { GeneralCustomButtons } from \"./GeneralCustomButtons\";\n\nexport interface CustomButton {\n /**\n * 是否收纳成下拉框\n */\n isDropdown: boolean;\n /**\n * 菜单项分割线,只用在弹出菜单内\n */\n isDivider?: boolean;\n /**\n * 按钮名\n */\n text: string;\n /**\n * 按钮 icon,支持[icon图标库](http://192.168.100.162/next/developers/icon),可直接复制图标图标的配置(antd、fa 及 easyops 三种库都支持),也可只取 icon 字段的值(仅支持 antd 库)。配置{ \"lib\": \"antd\", \"icon\": \"edit\" }与 \"edit\"等价\n */\n icon: any;\n /**\n * 按钮点击事件名\n */\n eventName: string;\n /**\n * 按钮字体颜色\n */\n color?: string;\n /**\n * 按钮 ID, updateButton 时使用\n */\n id?: string;\n /**\n * 是否禁用\n */\n disabled?: boolean;\n /**\n * 是否隐藏\n */\n hide?: boolean;\n /**\n * 样式类型\n */\n buttonType?: ButtonType;\n /**\n * 形状类型\n */\n buttonShape?: ButtonShape;\n /**\n * 点击跳转的地址,一般站内链接使用此属性\n */\n buttonUrl?: string;\n /**\n * 点击跳转的地址,一般站外链接使用此属性\n */\n buttonHref?: string;\n /**\n * 按钮大小\n */\n buttonSize?: ButtonSize;\n /**\n * 相当于 a 链接的 target 属性,buttonUrl 或 buttonHref 存在时生效\n */\n urlTarget?: string;\n /**\n * \t按钮简单的文字提示气泡框\n */\n tooltip?: string;\n /**\n * \t禁用按钮的 tooltip\n */\n disabledTooltip?: string;\n /**\n * tooltip 位置\n */\n tooltipPlacement?: TooltipPlacement;\n /**\n * 设置按钮载入状态\n */\n loading?: boolean;\n /**\n * 用于测试时定位的 ID\n */\n testId?: string;\n}\nexport type DropdownPlacement =\n | \"bottomRight\"\n | \"topLeft\"\n | \"topCenter\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottomCenter\";\n/**\n * @id basic-bricks.general-custom-buttons\n * @name basic-bricks.general-custom-buttons\n * @docKind brick\n * @description 可配置收纳起来的更多按钮,可配置不同事件\n * @author ice\n * @slots\n * @history\n * 1.28.0:新增 `updateButton` 方法,按钮新增 `id`, `disabled` 属性\n * 1.29.0:按钮新增 `buttonType`, `buttonShape` 属性\n * 1.30.0:按钮新增 `buttonSize`, `buttonUrl`, `urlTarget` 属性\n * 1.35.0:新增 `alignment` 属性\n * 1.40.0:按钮新增 `buttonHref`, `tooltip`, `tooltipPlacement` 属性\n * 1.45.0:新增 `dropdownPlacement` 属性, 按钮新增 `isDivider` 属性\n * 1.48.0:按钮新增 `hide` 属性\n * 1.59.0:新增属性 `disableAfterClick`\n * 1.72.0:新增属性 `loading`\n * @memo\n * @noInheritDoc\n */\nexport class GeneralCustomButtonsElement extends UpdatingElement {\n /**\n * @kind CustomButton[]\n * @required true\n * @default -\n * @description 自定义按钮组\n */\n @property({ attribute: false })\n customButtons: CustomButton[];\n\n /**\n * @kind \"start\" | \"center\" | \"end\" | \"stretch\"\n * @required false\n * @default `\"center\"`\n * @description 对齐方式\n */\n @property()\n alignment: \"start\" | \"center\" | \"end\" | \"stretch\";\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 按钮组中 isDropdown 为 true 的按钮收纳成 dropdown。isMoreButton 为 true 时更多按钮显示纯icon样式,为 false 时显示icon+文字样式。\n */\n @property({\n type: Boolean,\n })\n isMoreButton: boolean;\n\n /**\n * @kind MenuIcon\n * @required false\n * @default -\n * @description isMoreButton 为 true 时更多按钮的图标,默认为`...`\n */\n @property({ attribute: false }) moreBtnIcon: any;\n\n /**\n * @kind `ButtonType` (`\"link\" | \"default\" | \"primary\" | \"ghost\" | \"dashed\" | \"danger\" | \"icon\" | \"text\"`)\n * @required false\n * @default -\n * @description 更多按钮的类型,参考 general-button 构件\n */\n @property()\n moreButtonType: ButtonType;\n\n /**\n * @kind \"circle\" | \"no\" | \"rectangle\" | \"icon\"\n * @required false\n * @default -\n * @description isMoreButton 为 true 时更多按钮的样式\n */\n @property() moreButtonShape: \"no\"; //UI规范中暂时只支持noShape。后面有需要可以支持circle。\n\n /**\n * @kind any\n * @required false\n * @default -\n * @description 按钮事件的 detail\n */\n @property({ attribute: false }) dataSource: any;\n\n /**\n * @kind string\n * @required false\n * @default `\"管理\"`\n * @description isMoreButton 为 false 时,按钮组中 isDropdown 为 true 的按钮收纳成 dropdown,收纳起来的按钮文字\n * @group advanced\n */\n @property() dropdownBtnText: string;\n\n /**\n * @kind `\"default\" | \"link\"`\n * @required false\n * @default `\"default\"`\n * @description dropdown按钮的类型\n */\n @property({ attribute: false })\n dropdownBtnType: \"default\" | \"link\" = \"default\";\n\n /**\n * @kind MenuIcon\n * @required false\n * @default `\"setting\"`\n * @description isMoreButton 为 false 时,按钮组中 isDropdown 为 true 的按钮收纳成 dropdown,收纳起来的按钮 icon,支持[icon 图标库](/next/developers/icon),可直接复制图标图标的配置(antd、fa 及 easyops 三种库都支持),也可只取 icon 字段的值(仅支持 antd 库)。配置{ \"lib\": \"antd\", \"icon\": \"edit\" }与 \"edit\"等价\n * @group advanced\n */\n @property({ attribute: false }) dropdownBtnIcon: any;\n\n /**\n * @kind DropdownPlacement\n * @required false\n * @default `\"bottomRight\"`\n * @description dropdown 的弹出位置\n * @group advanced\n */\n @property()\n dropdownPlacement: DropdownPlacement;\n\n /**\n * @kind boolean\n * @required false\n * @default `false`\n * @description 点击按钮后自动禁用\n * @group advanced\n */\n @property({ type: Boolean })\n disableAfterClick: boolean;\n\n constructor() {\n super();\n this.handleClick = this.handleClick.bind(this);\n }\n /**\n * @type 上面配置的 eventName\n * @detail 上面配置的 dataSource\n * @description 按钮被点击时触发\n */\n @event({ type: \"上面配置的eventName\" })\n eventName: EventEmitter<Record<string, any>>;\n private handleClick(eventName: string, button: CustomButton): void {\n this.dispatchEvent(new CustomEvent(eventName, { detail: this.dataSource }));\n\n if (this.disableAfterClick) {\n this.customButtons = update(this.customButtons, {\n [this.customButtons.indexOf(button)]: {\n disabled: { $set: true },\n },\n });\n }\n }\n\n connectedCallback(): void {\n this._render();\n }\n\n /**\n * @description 更新按钮\n */\n @method() updateButton(id: string, btn: Partial<CustomButton>) {\n const customButton = this.customButtons.find((btn) => btn.id === id);\n if (customButton && btn) {\n const keys = Object.keys(btn);\n for (const key of keys) {\n if (\n !isEqual(\n customButton[key as keyof CustomButton],\n btn[key as keyof CustomButton]\n )\n ) {\n Object.assign(customButton, btn);\n this.customButtons = [...this.customButtons];\n break;\n }\n }\n }\n }\n\n protected _render() {\n this.style.display = \"block\";\n // istanbul ignore else\n if (this.isConnected && this.customButtons) {\n ReactDOM.render(\n <GeneralCustomButtons\n buttons={this.customButtons}\n handleClick={this.handleClick}\n dropdownBtnText={this.dropdownBtnText}\n dropdownBtnIcon={this.dropdownBtnIcon}\n isMoreButton={this.isMoreButton}\n moreBtnIcon={this.moreBtnIcon}\n moreButtonShape={this.moreButtonShape}\n moreButtonType={this.moreButtonType}\n alignment={this.alignment}\n dropdownPlacement={this.dropdownPlacement}\n dropdownBtnType={this.dropdownBtnType}\n />,\n this\n );\n }\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n}\n\ncustomElements.define(\n \"basic-bricks.general-custom-buttons\",\n GeneralCustomButtonsElement\n);\n","import React, { useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Modal } from \"antd\";\n\nimport { NS_BASIC_BRICKS, K } from \"../i18n/constants\";\n\ninterface DeleteConfirmModalProps {\n name: string;\n visible: boolean;\n handleConfirm: () => void;\n handleCancel: () => void;\n title: string;\n message?: string;\n}\n\nexport function DeleteConfirmModal(\n props: DeleteConfirmModalProps\n): React.ReactElement {\n const { t } = useTranslation(NS_BASIC_BRICKS);\n\n const contentTemplate = () => {\n return props.message ? (\n <div>{props.message}</div>\n ) : (\n <div>\n 确定删除<span style={{ color: \"#FC5043\" }}> {props.name} </span>?\n </div>\n );\n };\n\n useEffect(() => {\n if (props.visible) {\n Modal.confirm({\n title: props.title,\n content: contentTemplate(),\n okText: \"确定\",\n okType: \"danger\",\n onOk: props.handleConfirm,\n cancelText: \"取消\",\n onCancel: props.handleCancel\n });\n }\n }, [props.visible]);\n\n return <div></div>;\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper } from \"@next-core/brick-kit\";\nimport { DeleteConfirmModal } from \"./DeleteConfirmModal\";\n\n/**\n * @id basic-bricks.delete-confirm-modal\n * @name basic-bricks.delete-confirm-modal\n * @docKind brick\n * @description\n * @author\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class DeleteConfirmModalElement extends HTMLElement {\n private isVisible = false;\n private _data = { name: \"\" };\n private _eventName = \"\";\n private _title = \"删除\";\n private _message = \"\";\n private _eventDetail = {};\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n private _render(): void {\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <DeleteConfirmModal\n visible={this.isVisible}\n name={this._data.name}\n title={this._title}\n message={this._message}\n handleConfirm={this.confirm.bind(this)}\n handleCancel={this.close.bind(this)}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n\n open(event: CustomEvent) {\n this.isVisible = true;\n this._eventDetail = event.detail;\n this._render();\n }\n\n close() {\n this.isVisible = false;\n this._render();\n }\n\n confirm() {\n this.dispatchEvent(\n new CustomEvent(this._eventName, { detail: this._eventDetail })\n );\n this.isVisible = false;\n this._render();\n }\n\n set eventName(value: string) {\n this._eventName = value;\n }\n\n set message(value: string) {\n this._message = value;\n this._render();\n }\n\n set title(value: string) {\n this._title = value;\n }\n\n set data(value: any) {\n this._data = value;\n this._render();\n }\n}\n\ncustomElements.define(\n \"basic-bricks.delete-confirm-modal\",\n DeleteConfirmModalElement\n);\n","import { UpdatingElement, property } from \"@next-core/brick-kit\";\n\n// ** Set a :host display style (e.g. block, inline-block, flex)\n// unless you prefer the default of inline. **\n// ** Add a :host display style that respects the hidden attribute. **\nconst extraStyles = `\n:host {\n display: block;\n}\n:host([hidden]) {\n display: none;\n}\n::slotted([slot=\"items\"]) {\n min-width: 0;\n}\n`;\n\ntype MediaSize = \"large\" | \"medium\" | \"small\" | \"xSmall\";\n\ninterface GridSettings {\n columns?: number;\n rows?: number;\n templateColumns?: string;\n columnSpan?: number;\n rowSpan?: number;\n}\n\nconst mediaSizeList: MediaSize[] = [\"large\", \"medium\", \"small\", \"xSmall\"];\n\nconst mediaQueryMap: Record<MediaSize, string> = {\n large: \"(max-width: 1920px)\",\n medium: \"(max-width: 1600px)\",\n small: \"(max-width: 1280px)\",\n xSmall: \"(max-width: 1024px)\",\n};\n/**\n * @id basic-bricks.grid-layout\n * @name basic-bricks.grid-layout\n * @docKind brick\n * @description 提供多行多列的响应式网格布局\n * @author steve\n * @slots\n * @history\n * @memo\n * ### interface\n * ```typescript\n * interface ResponsiveSettings {\n * large?: GridSettings;\n * medium?: GridSettings;\n * small?: GridSettings;\n * xSmall?: GridSettings;\n * }\n\n * interface GridSettings {\n * columns?: number;\n * rows?: number;\n * columnSpan?: number;\n * rowSpan?: number;\n * }\n ```\n * ### 响应式布局说明\n\n*Bootstrap 等 UI 框架是移动优先的设计,它们的响应式为默认匹配小屏幕,并由小到大适配。而 EasyOps 平台以 PC 优先,并由大到小适配。这里我们针对常见桌面显示器大小,分为以下五档(屏幕宽度):\n\n* - `xSmall`:<= 1024px (老式投影仪)\n* - `small`:<= 1280px (13 寸笔记本)\n* - `medium`:<= 1600px (中等显示器)\n* - `large`:<= 1920px (大号显示器)\n* - 其它:超大显示器\n\n* 例如以下设置:\n\n*```json\n*{\n* \"columns\": 3,\n* \"responsive\": {\n* \"medium\": {\n* \"columns\": 2\n* },\n* \"small\": {\n* \"columns\": 1\n* }\n* }\n*}\n*```\n\n*在 `> 1600px` 的屏幕上时将显示为三列,`<= 1600px && > 1280px` 时显示两列,更小的屏幕显示为一列。\n */\nexport class GridLayoutElement extends UpdatingElement {\n private _mountPoint: HTMLElement;\n private _sizeMatch: Partial<Record<MediaSize, boolean>> = {};\n // eslint-disable-next-line @typescript-eslint/ban-types\n private _mediaMatchListeners: Function[] = [];\n\n /**\n * @kind number\n * @default -\n * @description \t网格布局列数(各列等宽)\n */\n @property({\n type: Number,\n })\n columns: number;\n\n /**\n * @kind number\n * @default auto\n * @description 自己在父级网格中所占列数\n */\n @property({\n type: Number,\n })\n columnSpan: number;\n\n /**\n * @kind number\n * @default 1\n * @description \t网格布局行数,通常不需设置,各行高度由内容决定。设置为 > 1 时,各行高度相同。\n */\n @property({\n type: Number,\n })\n rows: number;\n\n /**\n * @kind number\n * @default 1\n * @description 自己在父级网格中所占行数\n */\n @property({\n type: Number,\n })\n rowSpan: number;\n\n /**\n * @kind string\n * @default -\n * @description \t网格布局模板列,即 CSS 的 gridTemplateColumns,优先于 `columns`。\n */\n @property()\n templateColumns: string;\n\n /**\n * @kind ResponsiveSettings\n * @default 1\n * @description 响应式布局设置\n */\n @property({\n attribute: false,\n })\n responsive: Partial<Record<MediaSize, GridSettings>>;\n\n constructor() {\n super();\n\n // ** Create a shadow root to encapsulate styles. **\n // ** Create your shadow root in the constructor. **\n const shadowRoot = this.attachShadow({ mode: \"open\" });\n\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = extraStyles;\n shadowRoot.appendChild(styleElement);\n\n this._mountPoint = document.createElement(\"div\");\n this._mountPoint.style.display = \"grid\";\n this._mountPoint.style.gridGap = \"var(--page-card-gap)\";\n this._mountPoint.style.gap = \"var(--page-card-gap)\";\n\n const slot = document.createElement(\"slot\");\n slot.name = \"items\";\n this._mountPoint.append(slot);\n\n // ** Place any children the element creates into its shadow root. **\n shadowRoot.appendChild(this._mountPoint);\n }\n\n connectedCallback(): void {\n this._clearMediaMatchListeners();\n if (window.matchMedia && this.responsive) {\n for (const [media, query] of Object.entries(mediaQueryMap)) {\n if (this.responsive[media as MediaSize]) {\n const mediaMatch = window.matchMedia(query);\n this._sizeMatch[media as MediaSize] = mediaMatch.matches;\n const handler = (e: MediaQueryListEvent): void => {\n this._sizeMatch[media as MediaSize] = e.matches;\n this._render();\n };\n if (mediaMatch.addEventListener) {\n mediaMatch.addEventListener(\"change\", handler);\n this._mediaMatchListeners.push(() => {\n mediaMatch.removeEventListener(\"change\", handler);\n });\n } else {\n mediaMatch.addListener(handler);\n this._mediaMatchListeners.push(() => {\n mediaMatch.removeListener(handler);\n });\n }\n }\n }\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n this._clearMediaMatchListeners();\n this._sizeMatch = {};\n }\n\n private _clearMediaMatchListeners(): void {\n // eslint-disable-next-line @typescript-eslint/ban-types\n let fn: Function;\n while ((fn = this._mediaMatchListeners.pop())) {\n fn();\n }\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n const layout = {\n columns: this.columns,\n rows: this.rows,\n columnSpan: this.columnSpan,\n rowSpan: this.rowSpan,\n };\n for (const size of mediaSizeList) {\n if (this._sizeMatch[size]) {\n Object.assign(layout, this.responsive[size]);\n }\n }\n\n const columns = layout.columns || 1;\n const rows = layout.rows || 1;\n const columnSpan = layout.columnSpan || 1;\n const rowSpan = layout.rowSpan || 1;\n\n this._mountPoint.style.gridTemplateColumns =\n this.templateColumns || (columns === 1 ? \"\" : `repeat(${columns},1fr)`);\n this._mountPoint.style.gridTemplateRows =\n rows === 1 ? \"\" : `repeat(${rows},1fr)`;\n this.style.gridColumn = columnSpan === 1 ? \"\" : `span ${columnSpan}`;\n this.style.gridRow = rowSpan === 1 ? \"\" : `span ${rowSpan}`;\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.grid-layout\", GridLayoutElement);\n","import React from \"react\";\nimport { Card } from \"antd\";\n\nexport interface MultipleColumnsCardProps {\n cardBorder: boolean;\n gridColumns: string | Array<string | number>;\n}\n\nexport function transformCss(\n gridColumns: MultipleColumnsCardProps[\"gridColumns\"]\n) {\n const defaultValue = \"1fr\";\n const arr = Array.isArray(gridColumns) ? gridColumns : [gridColumns];\n\n const columns = arr.reduce((str, value) => {\n if (typeof value === \"string\") {\n str += `${value} `;\n } else if (typeof value === \"number\") {\n str += `${value}fr `;\n }\n return str;\n }, \"\");\n\n return columns || defaultValue;\n}\n\nexport function MultipleColumnsCard({\n cardBorder,\n gridColumns\n}: MultipleColumnsCardProps): React.ReactElement {\n return (\n <Card bordered={cardBorder}>\n <div\n className=\"multiple-columns-container\"\n style={{\n gridTemplateColumns: transformCss(gridColumns)\n }}\n >\n <slot id=\"contentSlot\" name=\"content\" />\n </div>\n </Card>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { MultipleColumnsCard } from \"./MultipleColumnsCard\";\nimport style from \"./index.shadow.less\";\n\n/**\n * @id basic-bricks.multiple-columns-card\n * @name basic-bricks.multiple-columns-card\n * @docKind brick\n * @description 支持多列布局的容器\n * @author jo\n * @slots\n * @history\n * @memo\n * Tips: 多列布局默认每一列都会有 padding,如果其中某一列不需要则在相应的用户构件 storyboard 内配置 columns-card-no-padding 的类名属性即可,如示例二所示\n * @noInheritDoc\n */\nexport class MultipleColumnsCardElement extends UpdatingElement {\n /**\n * @kind `Array<string | number>`\n * @required false\n * @default -\n * @description 配置多列布局时每一列的宽度,可以是具体的像素长度`200px`,也可以是数字`1,2...`等等,表示该列的宽度为相应的比例值,列数要与放入插槽的构件数相符\n */\n @property({\n attribute: false,\n })\n gridColumns: string;\n\n /**\n * @kind boolean\n * @required false\n * @default `true`\n * @description 是否显示卡片边框\n */\n @property({\n attribute: false,\n })\n cardBorder = true;\n\n private _mountPoint: HTMLElement;\n\n constructor() {\n super();\n\n const shadowRoot = this.attachShadow({ mode: \"open\" });\n\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = style;\n shadowRoot.appendChild(styleElement);\n\n this._mountPoint = document.createElement(\"div\");\n shadowRoot.appendChild(this._mountPoint);\n }\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <MultipleColumnsCard\n cardBorder={this.cardBorder}\n gridColumns={this.gridColumns}\n />\n </BrickWrapper>,\n this._mountPoint\n );\n }\n }\n}\n\ncustomElements.define(\n \"basic-bricks.multiple-columns-card\",\n MultipleColumnsCardElement\n);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./ListContainer.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport classNames from \"classnames\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport styles from \"./ListContainer.module.css\";\n\ninterface ListContainerProps {\n data: any[];\n useBrick: UseBrickConf;\n gap?: string | number;\n containerStyle?: React.CSSProperties;\n extraContainerStyle?: React.CSSProperties;\n}\n\nexport function ListContainer(props: ListContainerProps): React.ReactElement {\n if (!Array.isArray(props.data)) {\n return null;\n }\n\n let containerStyle: React.CSSProperties = {};\n if (props.containerStyle) {\n containerStyle = props.containerStyle;\n } else {\n containerStyle = {\n display: \"grid\",\n gap: props.gap ?? \"var(--card-content-gap)\",\n ...props.extraContainerStyle,\n };\n }\n\n return (\n <div\n className={classNames({\n [styles.listContainerAsGrid]: containerStyle.display === \"grid\",\n })}\n style={containerStyle}\n >\n {props.data.map((item, index) => (\n <BrickAsComponent key={index} data={item} useBrick={props.useBrick} />\n ))}\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { ListContainer } from \"./ListContainer\";\n\n/**\n * @id basic-bricks.list-container\n * @name basic-bricks.list-container\n * @docKind brick\n * @description 可以指定子项使用特定构件的列表容器,相当于是动态的构件列表\n * @author steve\n * @slots\n * @history\n * 1.20.0:新增构件\n * 1.41.0:支持 `containerStyle` 配置\n * @memo\n * @noInheritDoc\n */\nexport class ListContainerElement extends UpdatingElement {\n /**\n * @kind [UseBrickConf](http://docs.developers.easyops.cn/docs/api-reference/brick-types.usebrickconf)\n * @required true\n * @default `[]`\n * @description 使用的子构件配置\n */\n @property({\n attribute: false,\n })\n useBrick: UseBrickConf;\n\n /**\n * @kind `any[]`\n * @required true\n * @default `[]`\n * @description 数据列表\n */\n @property({\n attribute: false,\n })\n data: any[] = [];\n\n /**\n * @kind string | number\n * @default `\"var(--card-content-gap)\"`\n * @description 间距\n */\n @property({\n attribute: false,\n })\n gap: string | number;\n\n /**\n * @kind Record<string, any>\n * @default -\n * @description 自定义容器的样式,容器本身默认是 grid 布局,如果`containerStyle`不为空则覆盖掉容器本身的样式配置\n */\n @property({\n attribute: false,\n })\n containerStyle: React.CSSProperties;\n\n /**\n * @kind Record<string, any>\n * @default -\n * @description 容器本身默认是 grid 布局,可以设置额外的样式。\n */\n @property({\n attribute: false,\n })\n extraContainerStyle: React.CSSProperties;\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <ListContainer\n data={this.data}\n useBrick={this.useBrick}\n gap={this.gap}\n containerStyle={this.containerStyle}\n extraContainerStyle={this.extraContainerStyle}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.list-container\", ListContainerElement);\n","import {\n UpdatingElement,\n property,\n method,\n transformElementProperties,\n} from \"@next-core/brick-kit\";\nimport { isObject } from \"@next-core/brick-utils\";\nimport { GeneralTransform } from \"@next-core/brick-types\";\n\n/**\n * @id basic-bricks.transform-agent\n * @name basic-bricks.transform-agent\n * @docKind brick\n * @description 一个代理构件支持将一些构件的属性转换并赋值给其它构件\n * @author steve\n * @slots\n * @history\n * 1.21.0:新增构件 `basic-bricks.transform-agent`\n * @memo\n */\nexport class TransformAgentElement extends UpdatingElement {\n /**\n * @kind object\n * @required true\n * @default -\n * @description 数据来源的构件的字典,key 为数据的字段名,value 为来源构件的 css selector\n */\n @property({\n attribute: false,\n })\n source: Record<string, string>;\n\n /**\n * @kind string\n * @required true\n * @default -\n * @description 目标构件的 css selector\n */\n @property()\n target: string;\n\n /**\n * @kind GeneralTransform\n * @required true\n * @default -\n * @description \t属性数据转换配置,请参考[Transform 数据转换](http://docs.developers.easyops.cn/docs/brick-next/transform)\n */\n @property({\n attribute: false,\n })\n transform: GeneralTransform;\n\n /**\n * @kind boolean\n * @required false\n * @default `false`\n * @description\t目标构件是否为多个\n */\n @property({\n type: Boolean,\n })\n multiple: boolean;\n\n protected _render(): void {\n // Do nothing\n }\n /**\n * @description 执行转换\n */\n @method()\n execute(): void {\n let targetElements: any[] = [];\n if (this.multiple) {\n targetElements = Array.from(document.querySelectorAll(this.target));\n } else {\n const found = document.querySelector(this.target);\n if (found !== null) {\n targetElements.push(found);\n }\n }\n\n if (targetElements.length === 0) {\n // eslint-disable-next-line no-console\n console.error(\"target not found:\", this.target);\n return;\n }\n\n const sourceElements: Record<string, any> = {};\n if (isObject(this.source)) {\n for (const [name, selector] of Object.entries(this.source)) {\n const found = document.querySelector(selector);\n if (found !== null) {\n sourceElements[name] = found;\n } else {\n // eslint-disable-next-line no-console\n console.error(\"source not found:\", selector);\n }\n }\n }\n\n for (const element of targetElements) {\n transformElementProperties(element, sourceElements, this.transform);\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.transform-agent\", TransformAgentElement);\n","import {\n UpdatingElement,\n property,\n event,\n EventEmitter,\n method,\n transformElementProperties,\n} from \"@next-core/brick-kit\";\nimport { GeneralTransform } from \"@next-core/brick-types\";\n\n/**\n * @id basic-bricks.script-brick\n * @name basic-bricks.script-brick\n * @docKind brick\n * @description 可自定义函数来转换数据,并将处理后的数据给到其他构件\n * @author alren\n * @slots\n * @history\n * 1.x36.0:新增方法 `sendNotify` 和事件 `data.true` 和 `data.false`\n * @memo\n >`sendNotify`使用场景\n>\n> 在编排的时候,如果想要动态根据某个条件来决定是否做某个事情,可以:\n>\n> 1. 在事件或`useResolve`中通过`properties`给`script-brick`的`data`设定标记位,注意不能用`execute`,因为`execute`不改变内部的 data 变量\n> 2. 在`script-brick`根据所需绑定的`data.true`的事件或`data.false`事件\n> 3. 执行`sendNotify`,则会根据`data`发送`data.true`或`data.false`事件,从而执行不同的绑定行为\n * @noInheritDoc\n */\nexport class ScriptBrickElement extends UpdatingElement {\n /**\n * @kind any\n * @required false\n * @default -\n * @description 可通过 useResolve 来更新 data 字段并执行,具体见第 2 个示例\n */\n @property({\n attribute: false,\n })\n data: any;\n\n /**\n * @kind string\n * @required true\n * @default -\n * @description 自定义函数,入参为`data`,注意要`return`,如`return {'a': data.split('.')};\"`\n */\n @property()\n fun: string;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 目标构件是否为多个,target 有值时生效\n */\n @property({\n type: Boolean,\n })\n multiple: boolean;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 目标构件,格式为`css selector`,如果不在这边填,也可以通过事件来给其他构件赋值\n */\n @property()\n target: string;\n\n /**\n * @kind `GeneralTransform`\n * @required false\n * @default -\n * @description 属性数据转换配置,请参考[Transform 数据转换](http://docs.developers.easyops.cn/docs/brick-next/transform),当 target 有值时,可直接在此处做数据的转换,注意,如果`target`有值,`transform`也要填\n */\n @property({\n attribute: false,\n })\n transform: GeneralTransform;\n /**\n *\n * @param data\n * @description 透传给自定义函数的入参`data`,并发送`script.execute`事件,注意该函数不改变内部的 data 变量\n */\n async execute(data?: any): Promise<void> {\n let targetElements: any[] = [];\n if (this.target) {\n if (this.multiple) {\n targetElements = Array.from(document.querySelectorAll(this.target));\n } else {\n const found = document.querySelector(this.target);\n if (found !== null) {\n targetElements.push(found);\n }\n }\n }\n\n const AsyncFunction = Object.getPrototypeOf(async function () {\n /* do nothing */\n }).constructor;\n\n const fun = new AsyncFunction(\"data\", this.fun).bind(this);\n\n const newData = await fun(data);\n\n for (const element of targetElements) {\n transformElementProperties(element, newData, this.transform);\n }\n // 也可以通过事件来传递\n this.scriptExecute.emit(newData);\n }\n /**\n * @description 根据内部 data 的值决定发送`data.true`或`data.false`事件\n */\n sendNotify(): void {\n if (this.data) {\n this.dataTrue.emit(this.data);\n } else {\n this.dataFalse.emit(this.data);\n }\n }\n /**\n * @detail any\n * @description 自定义函数`fun`返回的值\n */\n @event({ type: \"script.execute\" }) scriptExecute: EventEmitter;\n /**\n * @detail any\n * @description 自定义函数`fun`返回的值\n */\n @event({ type: \"data.true\" }) dataTrue: EventEmitter;\n /**\n * @detail any\n * @description 自定义函数`fun`返回的值\n */\n @event({ type: \"data.false\" }) dataFalse: EventEmitter;\n connectedCallback(): void {\n this._render();\n }\n\n protected _render(): void {\n if (this.isConnected && this.data) {\n this.execute(this.data);\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.script-brick\", ScriptBrickElement);\n","import React, { useEffect, useState } from \"react\";\nimport {\n BrickAsComponent,\n developHelper,\n getRuntime,\n} from \"@next-core/brick-kit\";\nimport { JSON_SCHEMA, safeLoad } from \"js-yaml\";\nimport {\n BrickEventsMap,\n GeneralTransform,\n BrickConf,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\n\ninterface MagicBrickProps {\n showType: string;\n data: any;\n}\n\nexport function MagicBrick(props: MagicBrickProps): React.ReactElement {\n const [useBrickConf, setUseBrickConf] = useState<UseSingleBrickConf>();\n\n useEffect(() => {\n async function fetchData(): Promise<void> {\n const magicBrickConfigMap = await getRuntime().getMagicBrickConfigMapAsync();\n if (magicBrickConfigMap.has(props.showType)) {\n const data = magicBrickConfigMap.get(props.showType);\n try {\n const $$parsedProperties = data.properties\n ? safeLoad(data.properties, { schema: JSON_SCHEMA, json: true })\n : {};\n const parsedTransform = data.transform\n ? safeLoad(data.transform, { schema: JSON_SCHEMA, json: true })\n : {};\n const parsedEvents = data.events\n ? safeLoad(data.events, { schema: JSON_SCHEMA, json: true })\n : {};\n const useBrickConf: UseSingleBrickConf = {\n brick: data.brick,\n properties: $$parsedProperties as Record<string, unknown>,\n transform: parsedTransform as GeneralTransform,\n events: parsedEvents as BrickEventsMap,\n };\n await developHelper.loadDynamicBricksInBrickConf(\n useBrickConf as BrickConf\n );\n setUseBrickConf(useBrickConf);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n `请检查 ${props.showType} 的配置信息是否为有效的yaml数据`\n );\n }\n } else {\n // eslint-disable-next-line no-console\n console.error(`请检查是否存在 ${props.showType} 对应的配置信息`);\n }\n }\n if (props.showType) {\n fetchData();\n }\n }, [props.showType]);\n\n return (\n <>\n {useBrickConf && (\n <BrickAsComponent useBrick={useBrickConf} data={props.data} />\n )}\n </>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { MagicBrick } from \"./MagicBrick\";\n\n/**\n * @id basic-bricks.magic-brick\n * @name basic-bricks.magic-brick\n * @docKind brick\n * @description 指定数据渲染类型,直接调用对应的展示构件渲染\n * @author lynette\n * @slots\n * @history\n * 1.25.0:新增构件 `basic-bricks.magic-brick`\n * @memo\n * @noInheritDoc\n */\nexport class MagicBrickElement extends UpdatingElement {\n /**\n * @kind string\n * @required true\n * @default -\n * @description 数据渲染类型,对[构件配置表](magic-brick)中的 selector 字段\n */\n @property()\n showType: string;\n\n /**\n * @kind any\n * @required true\n * @default -\n * @description 数据源,通常情况该构件在一些容器构件中使用,数据源来自于容器构件例如 brick-table 的 rowData\n */\n @property({\n attribute: false,\n })\n data: any;\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <MagicBrick showType={this.showType} data={this.data} />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.magic-brick\", MagicBrickElement);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./PopoverContainer.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React, { useState, useEffect, useRef } from \"react\";\nimport { UseBrickConf, MenuIcon } from \"@next-core/brick-types\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport styles from \"./PopoverContainer.module.css\";\nimport { Popover } from \"antd\";\nimport { TooltipPlacement } from \"antd/lib/tooltip\";\nimport { ActionType } from \"rc-trigger/lib/interface\";\nimport classNames from \"classnames\";\nimport { merge } from \"lodash\";\n\ninterface PopoverContainerProps {\n data?: any;\n visible?: boolean;\n displayBrick: {\n useBrick: UseBrickConf;\n data?: any;\n };\n popoverBrick: {\n useBrick: UseBrickConf;\n data?: any;\n };\n onVisibleChange?: (visible: boolean) => void;\n popoverIcon?: MenuIcon;\n placement?: TooltipPlacement;\n trigger?: ActionType | ActionType[];\n showPopoverBg?: boolean;\n popoverContentStyle?: Record<string, any>;\n triggerByIcon?: boolean;\n showIcon?: \"always\" | \"never\" | \"hover\";\n related?: boolean;\n highlighted?: boolean;\n faded?: boolean;\n transferGraphAttrs?: boolean;\n}\n\nexport function PopoverContainer(\n props: PopoverContainerProps\n): React.ReactElement {\n const customElementRef = useRef<HTMLDivElement>();\n const [visible, setVisible] = useState(props.visible);\n const trigger = props.trigger ?? \"click\";\n const ref = useRef<HTMLDivElement>();\n\n useEffect(() => {\n setVisible(props.visible);\n }, [props.visible]);\n\n const popoverBrickNode = (\n <>\n {props.popoverBrick?.useBrick && (\n <div\n className={styles.popoverBrick}\n style={\n props.popoverContentStyle ?? {\n width: 200,\n }\n }\n >\n <BrickAsComponent\n data={props.popoverBrick.data ?? props.data}\n useBrick={props.popoverBrick.useBrick}\n parentRefForUseBrickInPortal={ref}\n />\n </div>\n )}\n </>\n );\n\n useEffect(() => {\n const handleClick = (): void => {\n customElementRef.current?.parentNode?.dispatchEvent(\n new MouseEvent(\"click\")\n );\n };\n const handleMouseover = (): void => {\n customElementRef.current?.parentNode?.dispatchEvent(\n new MouseEvent(\"mouseover\", {\n bubbles: true,\n })\n );\n };\n if (!props.triggerByIcon) {\n if (props.trigger === \"click\") {\n customElementRef.current?.addEventListener(\"click\", handleClick);\n } else if (props.trigger === \"hover\") {\n customElementRef.current?.addEventListener(\n \"mouseover\",\n handleMouseover\n );\n }\n }\n return () => {\n customElementRef.current?.removeEventListener(\n \"mouseover\",\n handleMouseover\n );\n customElementRef.current?.removeEventListener(\"click\", handleClick);\n };\n }, [props.triggerByIcon, props.trigger]);\n\n const onVisibleChange = (value: boolean) => {\n setVisible(value);\n props.onVisibleChange && props.onVisibleChange(value);\n };\n\n const processedUseBrickOfDisplayBrick = React.useMemo(() => {\n let useBrick = props.displayBrick?.useBrick;\n if (!useBrick) {\n return null;\n }\n if (props.transferGraphAttrs) {\n const graphAttrs = {\n properties: {\n related: props.related,\n faded: props.faded,\n highlighted: props.highlighted,\n },\n };\n if (Array.isArray(useBrick)) {\n useBrick.map((v) => merge({}, v, graphAttrs));\n } else {\n useBrick = merge({}, useBrick, graphAttrs);\n }\n }\n return useBrick;\n }, [\n props.displayBrick,\n props.transferGraphAttrs,\n props.faded,\n props.highlighted,\n props.related,\n ]);\n\n const displayBrickNode = (\n <>\n {props.displayBrick?.useBrick && (\n <div className={classNames(styles.displayBrick)} ref={customElementRef}>\n <BrickAsComponent\n data={props.displayBrick.data ?? props.data}\n useBrick={processedUseBrickOfDisplayBrick}\n />\n </div>\n )}\n </>\n );\n\n return (\n <div\n className={classNames({\n [styles.displayBrickContainer]: props.triggerByIcon,\n })}\n ref={ref}\n >\n {props.triggerByIcon && displayBrickNode}\n <Popover\n visible={visible}\n placement={props.placement ?? \"bottom\"}\n content={popoverBrickNode}\n trigger={trigger}\n overlayClassName={props.showPopoverBg ? \"\" : styles.customOverlay}\n onVisibleChange={onVisibleChange}\n >\n <div\n data-testid=\"trigger-container\"\n className={classNames(styles.cursorPointer, {\n [styles.displayBrickContainer]: !props.triggerByIcon,\n })}\n >\n {!props.triggerByIcon && displayBrickNode}\n {props.showIcon !== \"never\" && (\n <div\n className={classNames(styles.editIcon, {\n [styles.editIconVisible]:\n props.showIcon === \"always\" || visible,\n })}\n >\n <GeneralIcon\n icon={\n props.popoverIcon ?? {\n lib: \"fa\",\n icon: \"pencil-alt\",\n prefix: \"fas\",\n }\n }\n />\n </div>\n )}\n </div>\n </Popover>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n UpdatingElement,\n property,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { PopoverContainer } from \"./PopoverContainer\";\nimport { UseBrickConf, MenuIcon } from \"@next-core/brick-types\";\nimport { TooltipPlacement } from \"antd/lib/tooltip\";\nimport { ActionType } from \"rc-trigger/lib/interface\";\n\n/**\n * @id basic-bricks.popover-container\n * @name basic-bricks.popover-container\n * @docKind brick\n * @description 可以配置显示构件和弹出框构件,常用于快速编辑和详情展示\n * @author lynette\n * @slots\n * @history\n * 1.39.0:新增属性 `triggerByIcon`,`showIcon`\n * 1.33.0:新增构件 `basic-bricks.popover-container`\n * @memo\n * ### CustomBrick\n\n* | property | type | required | default | description |\n* | -------- | ------------ | -------- | ------- | ------------------------ |\n* | useBrick | UseBrickConf | ✔️ | - | 自定义构件 |\n* | data | any | - | - | 数据,优先级高于整体数据 |\n\n### UseBrickConf\n\n* | property | type | required | default | description |\n* | ------------- | -------------- | -------- | ------- | -------------------------------------------------- |\n* | brick | string | ✔️ | - | 构件名称 |\n* | properties | object | - | - | 构件属性 |\n* | events | BrickEventsMap | - | - | 事件 |\n* | transform | string\\|object | - | - | 属性数据转换 |\n* | transformFrom | string | - | - | 属性数据转换来自数据源的哪个字段,不填则为整个数据 |\n * @noInheritDoc\n */\nexport class PopoverContainerElement extends UpdatingElement {\n /**\n * @kind CustomBrick\n * @required true\n * @default -\n * @description 展示构件\n */\n @property({\n attribute: false,\n })\n displayBrick: {\n useBrick: UseBrickConf;\n data?: any;\n };\n\n /**\n * @kind CustomBrick\n * @required true\n * @default -\n * @description 弹出框构件\n */\n @property({\n attribute: false,\n })\n popoverBrick: {\n useBrick: UseBrickConf;\n data?: any;\n };\n\n /**\n * @kind MenuIcon\n * @required false\n * @default { lib: \"fa\", icon: \"pencil-alt\", prefix: \"fas\" }\n * @description 触发弹出框的 icon [MenuIcon]((http://docs.developers.easyops.cn/docs/brick-next/icon))\n */\n @property({\n attribute: false,\n })\n popoverIcon: MenuIcon;\n\n /**\n * @kind Record<string,any>\n * @required false\n * @default {width:200px}\n * @description popover 内容区域的样式,默认给了 200 的宽度。由于我们的弹出框拥有自定义构件的能力,在第一次点击之前,popover 是不知道所渲染构件的宽高,可能发生错位的问题。可以通过设置宽高来解决问题。注意,根据不同的`placement`需要按需调整宽度/高度。[详见](https://github.com/ant-design/ant-design/issues/3545)\n */\n @property({\n attribute: false,\n })\n popoverContentStyle: Record<string, any>;\n\n /**\n * @kind top\\|left\\|right\\|bottom\\|topLeft\\|topRight\\|bottomLeft\\|bottomRight\\|leftTop\\|leftBottom\\|rightTop\\|rightBottom\n * @required false\n * @default bottom\n * @description 气泡框位置。注意设置该属性的时候可能需要调整`popoverContentStyle`。\n */\n @property({\n attribute: false,\n })\n placement: TooltipPlacement;\n\n /**\n * @kind \"always\"\\|\"hover\"\\|\"never\"\n * @required false\n * @default hover\n * @description 在什么时候显示 Icon\n *\n */\n @property({\n attribute: false,\n })\n showIcon: \"always\" | \"never\" | \"hover\" = \"hover\";\n\n /**\n * @required false\n * @default -\n * @description 触发方式\n *\n */\n @property({\n attribute: false,\n })\n trigger: ActionType | ActionType[];\n\n // 整体数据,可以配置整体数据,也可以单独配置数据\n /**\n * @kind any\n * @required false\n * @default false\n * @description 整体数据,如果展示构件和弹出框构件数据都来自于同一个 provider,可以直接配置 data,如果来源不一样,可以分别配置 CustomBrick.data\n */\n @property({\n attribute: false,\n })\n data: any;\n\n /**\n * @kind hover\\|click\n * @required false\n * @default click\n * @description 触发行为\n */\n @property({\n attribute: false,\n })\n triggerByIcon = true;\n\n /**\n * @kind {useBrick:UseBrickConf;data?:any}\n * @required false\n * @default false\n * @description 弹出框是否可见\n */\n @property({\n type: Boolean,\n })\n visible: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示 popover 的默认背景\n */\n @property({\n attribute: false,\n })\n showPopoverBg = true;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否高亮,由[general-graph](developers/brick-book/brick/graph.general-graph)构件设置。\n */\n @property({\n attribute: false,\n })\n highlighted: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否被关联,由[general-graph](developers/brick-book/brick/graph.general-graph)构件设置。\n */\n @property({\n attribute: false,\n })\n related: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否弱化,由[general-graph](developers/brick-book/brick/graph.general-graph)构件设置。\n */\n @property({\n attribute: false,\n })\n faded: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否透传拓扑视图的高亮相关属性给子展示构件。由于该构件常用于[general-graph](developers/brick-book/brick/graph.general-graph)构件,故特别增设该属性。开启之后将会透传highlighted(高亮节点)/related(关联节点)/faded(淡化节点)三个属性给子展示构件,以实现高亮功能。\n */\n @property({\n type: Boolean,\n })\n transferGraphAttrs: boolean;\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n /**\n * @detail {visible:boolean}\n * @description 弹出框`是否可见`变化触发的事件\n */\n @event({ type: \"visible.change\" }) visibleChange: EventEmitter;\n private _handleVisibleChange = (visible: boolean): void => {\n this.visible = visible;\n this.visibleChange.emit({ visible });\n };\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <PopoverContainer\n displayBrick={this.displayBrick}\n popoverBrick={this.popoverBrick}\n visible={this.visible}\n onVisibleChange={this._handleVisibleChange}\n data={this.data}\n popoverIcon={this.popoverIcon}\n placement={this.placement}\n showPopoverBg={this.showPopoverBg}\n popoverContentStyle={this.popoverContentStyle}\n trigger={this.trigger}\n triggerByIcon={this.triggerByIcon}\n showIcon={this.showIcon}\n highlighted={this.highlighted}\n related={this.related}\n faded={this.faded}\n transferGraphAttrs={this.transferGraphAttrs}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"basic-bricks.popover-container\",\n PopoverContainerElement\n);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./style.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React, { useState } from \"react\";\nimport { UpOutlined } from \"@ant-design/icons\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport classNames from \"classnames\";\nimport style from \"./style.module.css\";\n\ninterface FoldBrickProps {\n useBrick: UseBrickConf;\n foldName: string;\n foldStyle?: Record<string, string>;\n defaultShow?: boolean;\n}\n\nexport function FoldBrick(props: FoldBrickProps): React.ReactElement {\n const [show, handleShow] = useState(props.defaultShow || false);\n const handleFold = (): void => {\n handleShow(!show);\n };\n return (\n <div>\n <div\n style={props.foldStyle}\n onClick={handleFold}\n className={style.foldContainer}\n >\n <span>{props.foldName}</span>\n <UpOutlined\n rotate={show ? 0 : 180}\n style={{ marginLeft: \"15px\", lineHeight: \"0px\" }}\n />\n </div>\n <div\n className={classNames({\n [style.foldActive]: show,\n [style.foldInactive]: !show,\n })}\n >\n <BrickAsComponent useBrick={props.useBrick}></BrickAsComponent>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { FoldBrick } from \"./FoldBrick\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\n\n/**\n * @id basic-bricks.fold-brick\n * @name basic-bricks.fold-brick\n * @docKind brick\n * @description 已废弃,请使用basic-bricks.fold-brick-v2\n * @author momo\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class FoldBrickElement extends UpdatingElement {\n @property({\n attribute: false,\n })\n useBrick: UseBrickConf;\n\n @property({\n attribute: false,\n })\n foldName: string;\n\n @property({\n attribute: false,\n })\n foldStyle: Record<string, string>;\n\n @property({\n attribute: false,\n })\n defaultShow?: boolean;\n\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <FoldBrick\n foldName={this.foldName}\n foldStyle={this.foldStyle}\n defaultShow={this.defaultShow}\n useBrick={this.useBrick}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.fold-brick\", FoldBrickElement);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./style.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React, { useState, useEffect } from \"react\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { List } from \"antd\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport classNames from \"classnames\";\nimport style from \"./style.module.css\";\nexport interface AdvanceListContainerProps {\n data: {\n list: Record<string, any>[];\n page_size?: number | string;\n page?: number | string;\n };\n titleBrick: { useBrick: UseBrickConf };\n suffixBrick?: { useBrick: UseBrickConf };\n itemClick?: Function;\n selectable?: boolean;\n defaultActiveIndex?: number;\n}\nexport function AdvanceListContainer(\n props: AdvanceListContainerProps\n): React.ReactElement {\n const [activeIndex, setActiveIndex] = useState(props.defaultActiveIndex || 0);\n const clickItemEvent = (data: any, index: number): void => {\n setActiveIndex(index);\n props.itemClick({ item: data, index });\n };\n const renderItemExtra = (item: Record<string, any>): React.ReactElement => {\n return (\n props?.suffixBrick?.useBrick && (\n <BrickAsComponent\n useBrick={props.suffixBrick.useBrick}\n data={item}\n ></BrickAsComponent>\n )\n );\n };\n useEffect(() => {\n if (props.data.list) {\n const item = props.data.list[props.defaultActiveIndex];\n item && props.itemClick({ item, index: props.defaultActiveIndex });\n }\n }, [props.defaultActiveIndex, props.data]);\n const renderItem = (\n item: Record<string, any>,\n index: number\n ): React.ReactElement => {\n return (\n <div\n className={classNames({\n [style.itemContainer]: true,\n [style.activeItem]: props.selectable && activeIndex === index\n })}\n onClick={() => clickItemEvent(item, index)}\n >\n <div className={style.itemContainerInner}>\n <BrickAsComponent\n useBrick={props.titleBrick.useBrick}\n data={item}\n ></BrickAsComponent>\n {renderItemExtra(item)}\n </div>\n </div>\n );\n };\n return (\n <div>\n <List dataSource={props?.data?.list || []} renderItem={renderItem}></List>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n UpdatingElement,\n property,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { Card } from \"antd\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { AdvanceListContainer } from \"./AdvanceListContainer\";\nexport interface itemData {\n list: Record<string, any>[];\n page_size?: number | string;\n page?: number | string;\n}\nexport interface AdvanceListContainerProps {\n data: {\n list: Record<string, any>[];\n page_size?: number | string;\n page?: number | string;\n };\n titleBrick: { useBrick: UseBrickConf };\n suffixBrick?: { useBrick: UseBrickConf };\n itemClick?: () => void;\n selectable?: boolean;\n defaultActiveIndex?: number;\n}\n/**\n * @id basic-bricks.advanced-list-container\n * @name basic-bricks.advanced-list-container\n * @docKind brick\n * @description 可以指定子项使用特定构件的列表容器,相当于是动态的构件列表\n * @author momo\n * @slots\n * @history\n * 1.55.0:新增构件 `basic-bricks.advanced-list-container`\n * @memo\n * ### interface\n * ```typescript\n * interface ItemData {\n * list: Record<string, any>[];\n * page_size?: number | string;\n * page?: number | string }\n * }\n *\n * interface AdvanceListContainerProps {\n * data: {\n * list: Record<string, any>[];\n * page_size?: number | string;\n * page?: number | string;\n * };\n * titleBrick: { useBrick: UseBrickConf };\n * suffixBrick?: { useBrick: UseBrickConf };\n * itemClick?: () => void;\n * selectable?: boolean;\n * defaultActiveIndex?: number;\n * }\n * ```\n * @noInheritDoc\n */\nexport class AdvancedListContainerElement extends UpdatingElement {\n /**\n * @kind ItemData\n * @required true\n * @default -\n * @description 列表数据\n */\n @property({ attribute: false })\n data: AdvanceListContainerProps[\"data\"];\n /**\n * @kind {useBrick:[UseBrickConf](http://docs.developers.easyops.cn/docs/api-reference/brick-types.usebrickconf)}\n * @required true\n * @default -\n * @description 列表项标题位置\n */\n @property({ attribute: false })\n titleBrick: AdvanceListContainerProps[\"titleBrick\"];\n /**\n * @kind {useBrick:[UseBrickConf](http://docs.developers.easyops.cn/docs/api-reference/brick-types.usebrickconf)}\n * @required false\n * @default -\n * @description 列表项 extra 位置(右边)\n */\n @property({ attribute: false })\n suffixBrick: AdvanceListContainerProps[\"suffixBrick\"];\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否展示 card\n */\n @property({ attribute: false })\n showCard: boolean;\n /**\n * @kind number\n * @required false\n * @default -\n * @description 默认选中项\n */\n @property({ attribute: false })\n defaultActiveIndex: number;\n\n @property({ attribute: false })\n selectable = true;\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n /**\n * @detail `{item: any, index: number}`\n * @description 当前项的所有数据以及当前项的索引\n */\n @event({ type: \"item.click\" }) clickEvent: EventEmitter<{\n item: any;\n index: number;\n }>;\n private _handleItemClick = (data: { item: any; index: number }): void => {\n this.clickEvent.emit(data);\n };\n renderAdvanceListContainer(): React.ReactElement {\n return (\n <AdvanceListContainer\n selectable={this.selectable}\n defaultActiveIndex={this.defaultActiveIndex}\n data={this.data}\n titleBrick={this.titleBrick}\n suffixBrick={this.suffixBrick}\n itemClick={this._handleItemClick}\n />\n );\n }\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n {this.showCard ? (\n <Card bordered={false}>{this.renderAdvanceListContainer()}</Card>\n ) : (\n this.renderAdvanceListContainer()\n )}\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"basic-bricks.advanced-list-container\",\n AdvancedListContainerElement\n);\n// `basic-bricks.advance-list-container` is deprecated cause its misunderstanding name.\n// Use `basic-bricks.advanced-list-container` instead.\nclass AdvanceListContainerElement extends AdvancedListContainerElement {}\ncustomElements.define(\n \"basic-bricks.advance-list-container\",\n AdvanceListContainerElement\n);\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { UpOutlined } from \"@ant-design/icons\";\nimport { Divider } from \"antd\";\n\ninterface FoldBrickV2Props {\n foldName: string;\n foldStyle?: Record<string, string>;\n show: boolean;\n showDivider?: boolean;\n dividerOrientation?: \"left\" | \"right\";\n dividerDashed?: boolean;\n isShowFoldIcon?: boolean;\n type?: \"normal\" | \"primary\";\n}\n\nexport function FoldBrickV2(props: FoldBrickV2Props): React.ReactElement {\n const fold = (\n <div\n style={props.foldStyle}\n id=\"foldBrickButton\"\n className={classNames(\"foldContainer\", {\n foldPrimaryActive: props.type === \"primary\",\n })}\n >\n <span>{props.foldName}</span>\n <>\n {props.isShowFoldIcon ? (\n <UpOutlined\n rotate={props.show ? 0 : 180}\n style={{ marginLeft: \"2px\", lineHeight: \"0px\" }}\n />\n ) : (\n \"\"\n )}\n </>\n </div>\n );\n\n return (\n <div>\n {props.showDivider ? (\n <Divider\n dashed={props.dividerDashed}\n orientation={props.dividerOrientation}\n >\n {fold}\n </Divider>\n ) : (\n fold\n )}\n <div\n className={classNames({\n foldActive: props.show,\n foldInactive: !props.show,\n })}\n >\n <slot name=\"content\"></slot>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { FoldBrickV2 } from \"./FoldBrickV2\";\nimport style from \"./style.shadow.less\";\n\n/**\n * @id basic-bricks.fold-brick-v2\n * @name basic-bricks.fold-brick-v2\n * @docKind brick\n * @description 折叠容器,只折叠单个内容,支持slot\n * @author momo\n * @slots\n * content:内容插槽\n * @history\n * 1.87.0:新增属性 `isShowFoldIcon`, `type`\n * 1.64.0:新增属性 `showDivider`,`dividerOrientation`,`dividerDashed`,`show`\n * 1.56.0:新增构件 `basic-bricks.fold-brick-v2`\n * @memo\n * @noInheritDoc\n */\nexport class FoldBrickV2Element extends UpdatingElement {\n private _mountPoint: HTMLElement;\n private _shadowRoot: ShadowRoot;\n\n /**\n * @kind string\n * @required true\n * @default -\n * @description 折叠展示名称\n */\n @property({\n attribute: false,\n })\n foldName: string;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示展开图标\n */\n @property({\n attribute: false,\n })\n isShowFoldIcon = true;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 是否默认展开\n */\n @property({\n attribute: false,\n })\n defaultShow?: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 是否展开\n */\n @property({\n type: Boolean,\n })\n showDivider: boolean;\n\n /**\n * @kind \"normal\" | \"primary\"\n * @required false\n * @default \"normal\"\n * @description 折叠面板类型\n */\n @property({\n attribute: false,\n })\n type: \"normal\" | \"primary\";\n\n /**\n * @kind \"left\"|\"right\"\n * @required false\n * @default center\n * @description 分割线标题的位置\n * @group advanced\n */\n @property({\n attribute: false,\n })\n dividerOrientation: \"left\" | \"right\";\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否虚线\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n dividerDashed: boolean;\n\n /**\n * @kind object\n * @required false\n * @default -\n * @description 折叠展示的样式编写\n * @group advanced\n */\n @property({\n attribute: false,\n })\n foldStyle: Record<string, string>;\n\n @property({\n type: Boolean,\n })\n show: boolean;\n\n constructor() {\n super();\n this._shadowRoot = this.attachShadow({ mode: \"open\" });\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = style;\n this._shadowRoot.appendChild(styleElement);\n this._mountPoint = document.createElement(\"div\");\n this._shadowRoot.appendChild(this._mountPoint);\n }\n\n listenOnClick(): void {\n this.addEventListener(\"click\", this.listenToClick);\n }\n // istanbul ignore next\n listenToClick = (e: Event): void => {\n const paths = e.composedPath() as HTMLElement[];\n for (const path of paths) {\n if (path.id === \"foldBrickButton\") {\n this.show = !this.show;\n this._render();\n break;\n }\n }\n };\n\n connectedCallback(): void {\n this.listenOnClick();\n\n this.show = this.defaultShow;\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n this.removeEventListener(\"click\", this.listenToClick);\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <FoldBrickV2\n foldName={this.foldName}\n foldStyle={this.foldStyle}\n show={this.show}\n showDivider={this.showDivider}\n dividerOrientation={this.dividerOrientation}\n dividerDashed={this.dividerDashed}\n isShowFoldIcon={this.isShowFoldIcon}\n type={this.type}\n />\n </BrickWrapper>,\n this._mountPoint\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.fold-brick-v2\", FoldBrickV2Element);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./index.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React, { ReactElement, useEffect, useState } from \"react\";\nimport {\n UseBrickConf,\n AntdIcon,\n FaIcon,\n EasyopsIcon,\n MenuIcon,\n} from \"@next-core/brick-types\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { Menu, Input } from \"antd\";\nimport { uniq, cloneDeep } from \"lodash\";\nimport style from \"./index.module.css\";\nimport { SelectParam } from \"antd/lib/menu\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport classNames from \"classnames\";\n\nexport interface SubMenuFilterSimpleItem {\n title: string;\n key: string;\n type?: \"item\";\n icon: MenuIcon;\n}\n\nexport interface SubMenuFilterGroup {\n type: \"group\" | \"subMenu\";\n title: string;\n items: SubMenuFilterSimpleItem[];\n key?: string;\n}\n\nexport type SubMenuFilterItem = SubMenuFilterSimpleItem | SubMenuFilterGroup;\n\nfunction isGroup(item: SubMenuFilterItem): item is SubMenuFilterGroup {\n return item.type === \"group\";\n}\n\nfunction isSubMenu(item: SubMenuFilterItem): item is SubMenuFilterGroup {\n return item.type === \"subMenu\";\n}\n\nfunction getSubMenuKeys(items: SubMenuFilterItem[]): string[] {\n let subMenuKeys: string[] = [];\n items.map((item) => {\n item.type === \"subMenu\" && subMenuKeys.push(item.key);\n if ((item as SubMenuFilterGroup)?.items) {\n subMenuKeys = subMenuKeys.concat(\n getSubMenuKeys((item as SubMenuFilterGroup).items)\n );\n }\n });\n return subMenuKeys;\n}\n\nexport interface SubMenuFilterProps {\n defaultSelectedKeys: string[];\n defaultOpenKeys: string[];\n selectable: boolean;\n suffixBrick?: { useBrick: UseBrickConf };\n menuItems: SubMenuFilterItem[];\n placeholder?: string;\n unsearchable: boolean;\n onSelect: (menuItem: SubMenuFilterItem[]) => void;\n onSearch: (query: string) => void;\n multiple: boolean;\n inlineIndent?: number;\n transparentBackground?: boolean;\n accordion?: boolean;\n}\n\nexport function SubMenuFilter({\n defaultSelectedKeys,\n defaultOpenKeys,\n selectable = true,\n suffixBrick,\n menuItems: rowMenuItem,\n placeholder = \"\",\n unsearchable,\n onSelect,\n onSearch,\n multiple,\n inlineIndent,\n transparentBackground,\n accordion,\n}: SubMenuFilterProps): React.ReactElement {\n const [menuItems, setMenuItems] = useState([]);\n const [selectedKeys, setSelectedKeys] = useState([]);\n const [openKeys, setOpenKeys] = useState([]);\n const [subMenuKeys, setSubMenuKeys] = useState([]);\n\n useEffect(() => {\n setMenuItems(cloneDeep(rowMenuItem));\n setSubMenuKeys(getSubMenuKeys(rowMenuItem));\n }, [rowMenuItem]);\n\n useEffect(() => {\n defaultSelectedKeys && setSelectedKeys(defaultSelectedKeys);\n }, [defaultSelectedKeys]);\n\n useEffect(() => {\n defaultOpenKeys && setOpenKeys(defaultOpenKeys);\n }, [defaultOpenKeys]);\n\n const renderIcon = (item: SubMenuFilterSimpleItem) => (\n <>\n {item.icon && (\n <i className={style.menuItemIcon}>\n <GeneralIcon icon={item.icon} />\n </i>\n )}\n </>\n );\n\n const renderItemExtra = (item: Record<string, any>): ReactElement => {\n return (\n suffixBrick?.useBrick && (\n <BrickAsComponent useBrick={suffixBrick.useBrick} data={item} />\n )\n );\n };\n\n const renderSimpleMenuItem = (\n item: SubMenuFilterSimpleItem\n ): React.ReactNode => {\n return (\n <Menu.Item key={String(item.key)} title={item.title}>\n <div className={style.itemContainerInner}>\n <div className={style.menuItemMainPart}>\n {renderIcon(item)}\n <span className={style.menuItemText}>{item.title}</span>\n </div>\n {renderItemExtra(item)}\n </div>\n </Menu.Item>\n );\n };\n\n const renderGroupTitle = (item: SubMenuFilterGroup) => (\n <div className={style.menuItemMainPart}>{item.title}</div>\n );\n\n /* eslint-disable @typescript-eslint/no-use-before-define */\n const renderGroupMenu = (item: SubMenuFilterGroup): React.ReactNode => {\n return (\n <Menu.ItemGroup key={item.key} title={renderGroupTitle(item)}>\n {item.items.map((innerItem) => renderMenuItem(innerItem))}\n </Menu.ItemGroup>\n );\n };\n const renderMenuTitle = (item: SubMenuFilterGroup) => (\n <div className={style.menuItemMainPart}>\n {renderIcon(item)}\n {item.title}\n </div>\n );\n const renderSubMenu = (item: SubMenuFilterGroup): React.ReactNode => {\n return (\n <Menu.SubMenu key={item.key} title={renderMenuTitle(item)}>\n {item.items.map((innerItem) => renderMenuItem(innerItem))}\n </Menu.SubMenu>\n );\n };\n\n const renderMenuItem = (item: SubMenuFilterItem): React.ReactNode => {\n return isSubMenu(item)\n ? renderSubMenu(item)\n : isGroup(item)\n ? renderGroupMenu(item)\n : renderSimpleMenuItem(item);\n };\n /* eslint-enable @typescript-eslint/no-use-before-define */\n\n function searchMenu(\n menuItem: SubMenuFilterItem[],\n query: string,\n selectedKeys: string[]\n ): SubMenuFilterItem[] {\n return menuItem.filter((menu) => {\n const m = menu as SubMenuFilterGroup;\n if (m.items && m.items.length) {\n if (m.items.length > 0) {\n const result = searchMenu(m.items, query, selectedKeys);\n if (result.length === 0) {\n return (menu = null);\n }\n selectedKeys.push(menu.key);\n return (m.items = result);\n }\n } else {\n if (menu.title.toLowerCase().includes(query.toLowerCase())) {\n selectedKeys.push(menu.key);\n return menu;\n }\n }\n });\n }\n\n const getMenuItemByKey = (\n menuItem: SubMenuFilterItem[],\n key: string\n ): null | SubMenuFilterSimpleItem => {\n let data = null;\n menuItem.forEach((menu) => {\n if (menu.key === key) {\n data = menu;\n return;\n }\n\n if (menu.items) {\n const result = getMenuItemByKey(menu.items, key);\n if (result) {\n data = result;\n }\n }\n });\n return data;\n };\n\n const getSelectedMenuItemByKeys = (selectedKeys: string[]) => {\n const data = [] as SubMenuFilterSimpleItem[];\n const m = cloneDeep(rowMenuItem);\n selectedKeys.forEach((key) => {\n data.push(getMenuItemByKey(m, key));\n });\n\n return data.filter(Boolean);\n };\n const handleSearch = (value: string) => {\n onSearch && onSearch(value);\n if (value) {\n const keys: string[] = [];\n const m = cloneDeep(rowMenuItem);\n const result = searchMenu(m, value, keys);\n setMenuItems(result);\n setOpenKeys(keys);\n } else {\n setMenuItems([...rowMenuItem]);\n setOpenKeys(defaultOpenKeys || []);\n }\n };\n\n const handleOpenChange = (keys: string[]) => {\n // istanbul ignore else\n if (!accordion) {\n setOpenKeys(keys);\n } else {\n const latestOpenKey = keys.find((key) => openKeys.indexOf(key) === -1);\n if (subMenuKeys.indexOf(latestOpenKey) === -1) {\n setOpenKeys(keys);\n } else {\n setOpenKeys(latestOpenKey ? [latestOpenKey] : []);\n }\n }\n };\n const handleSelect = ({ key }: SelectParam) => {\n const newSelectedKeys = multiple\n ? [...new Set([...selectedKeys, key])]\n : [key];\n setSelectedKeys(newSelectedKeys);\n\n onSelect && onSelect(getSelectedMenuItemByKeys(newSelectedKeys));\n };\n\n const handleDeselect = ({ key }: SelectParam) => {\n const newSelectedKeys = [...selectedKeys.filter((k) => k !== key)];\n setSelectedKeys(newSelectedKeys);\n onSelect && onSelect(getSelectedMenuItemByKeys(newSelectedKeys));\n };\n\n return (\n <div\n className={classNames(style.subMenuContainer, {\n [style.transparentBackground]: transparentBackground,\n })}\n >\n {!unsearchable && (\n <Input.Search\n placeholder={placeholder}\n onSearch={handleSearch}\n style={{ width: \"100%\" }}\n />\n )}\n <Menu\n multiple={multiple}\n mode=\"inline\"\n selectable={selectable}\n defaultOpenKeys={uniq(defaultOpenKeys)}\n defaultSelectedKeys={defaultSelectedKeys}\n selectedKeys={selectedKeys}\n openKeys={openKeys}\n style={{ height: \"100%\", borderRight: 0 }}\n className={style.menuContainer}\n onSelect={handleSelect}\n onDeselect={handleDeselect}\n onOpenChange={handleOpenChange}\n inlineIndent={inlineIndent}\n >\n {menuItems && menuItems.map((item) => renderMenuItem(item))}\n </Menu>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n property,\n event,\n EventEmitter,\n UpdatingElement,\n} from \"@next-core/brick-kit\";\nimport { SubMenuFilter, SubMenuFilterItem } from \"./SubMenuFilter\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\n\n/**\n * @id basic-bricks.sub-menu-filter\n * @name basic-bricks.sub-menu-filter\n * @editor shared-editors.general-menu--editor\n * @editorProps {\"showSearch\": true}\n * @docKind brick\n * @description 搜索能力二级菜单\n * @author Alex\n * @slots\n * @history\n * 1.58.0:新增构件 `basic-bricks.sub-menu-filter`\n * @memo\n * ### INTERFACE\n\n * ```typescript\n*export declare type MenuIcon = AntdIcon | FaIcon | EasyopsIcon;\n\n*export interface AntdIcon {\n* lib: \"antd\";\n* type: string;\n* theme?: ThemeType;\n*}\n*export interface FaIcon {\n* lib: \"fa\";\n* icon: IconName;\n* prefix?: IconPrefix;\n*}\n*export interface EasyopsIcon {\n* lib: \"easyops\";\n* icon: string;\n* category?: string;\n*}\n\n*export interface SubMenuFilterSimpleItem {\n* title: string;\n* key: string;\n* type?: \"item\";\n* icon: MenuIcon;\n*}\n\n*export interface SubMenuFilterGroup {\n* type: \"group\" | \"subMenu\";\n* title: string;\n* items: SubMenuFilterSimpleItem[];\n* key?: string;\n*}\n\n*export type SubMenuFilterItem = SubMenuFilterSimpleItem | SubMenuFilterGroup;\n\n*export interface SubMenuFilterProps {\n* defaultSelectedKeys: string[];\n* defaultOpenKeys: string[];\n* selectable: boolean;\n* multiple: boolean;\n* suffixBrick?: { useBrick: UseBrickConf };\n* menuItems: SubMenuFilterItem[];\n* placeholder?: string;\n* unsearchable: boolean;\n* onSelect: (menuItem: SubMenuFilterItem[]) => void;\n* onSearch: (query: string) => void;\n*}\n*```\n\n * @noInheritDoc\n */\nexport class SubMenuFilterElement extends UpdatingElement {\n /**\n * @required -\n * @default -\n * @description 菜单项\n */\n @property({\n attribute: false,\n })\n menuItems: SubMenuFilterItem[];\n\n /**\n * @kind {useBrick:[UseBrickConf](http://docs.developers.easyops.cn/docs/api-reference/brick-types.usebrickconf)}\n * @required false\n * @default -\n * @description 列表项 extra 位置(右边)\n */\n @property({\n attribute: false,\n })\n suffixBrick: { useBrick: UseBrickConf };\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否展示搜索框\n */\n @property({\n type: Boolean,\n })\n unsearchable: boolean;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 搜索框 placeholder\n */\n @property()\n placeholder: string;\n\n /**\n * @kind string[]\n * @required false\n * @default -\n * @description 初始选中的菜单项 key 数组\n */\n @property({\n attribute: false,\n })\n defaultSelectedKeys: string[];\n\n /**\n * @kind string[]\n * @required false\n * @default -\n * @description 初始展开的 SubMenu 菜单项 key 数组\n */\n @property({\n attribute: false,\n })\n defaultOpenKeys: string[];\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否允许选中\n */\n @property({\n type: Boolean,\n })\n selectable: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否多选\n */\n @property({\n type: Boolean,\n })\n multiple: boolean;\n\n /**\n * @kind number\n * @required false\n * @default 24\n * @description 菜单缩进宽度\n * @group advanced\n */\n @property({\n attribute: false,\n })\n inlineIndent = 24;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否采用透明背景样式\n */\n @property({\n attribute: false,\n })\n transparentBackground = false;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 手风琴模式\n */\n @property({\n attribute: false,\n })\n accordion = false;\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n /**\n * @detail SubMenuFilterItem[]\n * @description -\n */\n @event({ type: \"menu.select\" }) menuSelect: EventEmitter<SubMenuFilterItem[]>;\n /**\n * @detail string\n * @description 搜索 query\n */\n @event({ type: \"menu.search\" }) menuSearch: EventEmitter<string>;\n handleSelect = (menuItem: SubMenuFilterItem[]) => {\n this.menuSelect.emit(menuItem);\n };\n\n handleSearch = (q: string) => {\n this.menuSearch.emit(q);\n };\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <SubMenuFilter\n multiple={this.multiple}\n onSelect={this.handleSelect}\n onSearch={this.handleSearch}\n selectable={this.selectable}\n unsearchable={this.unsearchable}\n placeholder={this.placeholder}\n suffixBrick={this.suffixBrick}\n menuItems={this.menuItems}\n inlineIndent={this.inlineIndent}\n transparentBackground={this.transparentBackground}\n accordion={this.accordion}\n defaultOpenKeys={this.defaultOpenKeys}\n defaultSelectedKeys={this.defaultSelectedKeys}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.sub-menu-filter\", SubMenuFilterElement);\n","import React, { CSSProperties } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n property,\n UpdatingElement,\n event,\n EventEmitter,\n method,\n} from \"@next-core/brick-kit\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\nimport { notification } from \"antd\";\nimport { NotificationPlacement } from \"antd/lib/notification\";\nimport { NotificationApi } from \"antd/es/notification\";\n\n/**\n * @id basic-bricks.general-notification\n * @name basic-bricks.general-notification\n * @docKind brick\n * @description 普通的 notification\n * @author Alex\n * @slots\n * @history\n * 1.62.0:新增构件 `basic-bricks.general-notification`\n * @memo\n * @noInheritDoc\n */\nexport class GeneralNotificationElement extends UpdatingElement {\n /**\n * @kind string\n * @required true\n * @default -\n * @description 通知提醒标题,必选\n */\n @property()\n message: string;\n\n /**\n * @kind string\n * @required true\n * @default -\n * @description 通知提醒内容,必选\n */\n @property()\n description: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description icon,具体查阅:[react icon](https://3x.ant.design/components/icon-cn/)\n */\n @property()\n icon: string;\n\n /**\n * @kind `topLeft` `topRight` `bottomLeft` `bottomRight`\n * @required false\n * @default topRight\n * @description 弹出位置,可选\n * @group advanced\n */\n @property()\n placement: NotificationPlacement;\n\n /**\n * @kind number\n * @required false\n * @default 4.5\n * @description 默认 4.5 秒后自动关闭,配置为 null 则不自动关闭\n * @group advanced\n */\n @property({ type: Number })\n duration: number;\n\n /**\n * @kind [React.CSSProperties](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/e434515761b36830c3e58a970abf5186f005adac/types/react/index.d.ts#L794)\n * @required false\n * @default -\n * @description icon css 样式\n * @group advanced\n */\n @property({\n attribute: false,\n })\n iconStyle: CSSProperties;\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n handleClose = () => {\n this.closeEvent.emit({});\n };\n\n handleClick = () => {\n this.clickEvent.emit({});\n };\n /**\n * @detail -\n * @description 点击通知时触发的回调函数\n */\n @event({ type: \"general.notification.click\" }) clickEvent: EventEmitter<\n Record<string, any>\n >;\n /**\n * @detail -\n * @description 点击默认关闭按钮时触发的回调函数\n */\n @event({ type: \"general.notification.close\" }) closeEvent: EventEmitter<\n Record<string, any>\n >;\n renderIcon = () => {\n return this.icon && <LegacyIcon type={this.icon} style={this.iconStyle} />;\n };\n /**\n *\n * @params `success`| `error`| `info`| `warning`| `warn` |`open`\n * @description 显示通知栏,默认为`open`\n */\n @method()\n open(mtd: keyof Omit<NotificationApi, \"config\" | \"close\" | \"destroy\">) {\n typeof mtd !== \"string\" && (mtd = \"open\");\n notification[mtd]({\n message: this.message,\n description: this.description,\n duration: this.duration,\n icon: this.renderIcon(),\n placement: this.placement || \"topRight\",\n onClose: this.handleClose,\n onClick: this.handleClick,\n });\n }\n\n protected _render(): void {\n // Nothing to do.\n }\n}\n\ncustomElements.define(\n \"basic-bricks.general-notification\",\n GeneralNotificationElement\n);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { UpdatingElement, property } from \"@next-core/brick-kit\";\nimport hotkeys from \"hotkeys-js\";\nimport { isEmpty, map, find } from \"lodash\";\n\ninterface HotkeysConfig {\n key: string;\n eventName: string;\n}\n\n/**\n* @id basic-bricks.general-hotkeys\n* @name basic-bricks.general-hotkeys\n* @docKind brick\n* @description 可配置通用快捷键以及相关事件名\n* @author lynette\n* @slots\n* @history\n* 1.66.0:新增构件 `basic-bricks.general-hotkeys`\n* @memo\n* ### Supported Keys\n\n* HotKeys 构件可以识别以下修饰符,方便配置:`⇧`, `shift`, `option`, `⌥`, `alt`, `ctrl`, `control`, `command`, and `⌘`.\n\n* 以下特殊键可用于配置快捷键:`backspace`, `tab`, `clear`, `enter`, `return`, `esc`, `escape`, `space`, `up`, `down`, `left`, `right`, `home`, `end`, `pageup`, `pagedown`, `del`, `delete` , `f1` 到 `f19`.\n\n* 其中:\n\n* - `⌘` Command()\n* - `⌃` Control\n* - `⌥` Option(alt)\n* - `⇧` Shift\n* - `⇪` Caps Lock(Capital)\n* - `↩︎` return/Enter space\n* @noInheritDoc\n*/\nexport class GeneralHotkeysElement extends UpdatingElement {\n /**\n * @kind {key: string,eventName: string}[]\n * @required false\n * @default -\n * @description 快捷键配置,支持的 keys 列表如下\n */\n @property({\n attribute: false,\n })\n hotkeysConfig: HotkeysConfig[];\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否禁用\n */\n @property({\n type: Boolean,\n })\n disabled: boolean;\n\n connectedCallback(): void {\n if (!isEmpty(this.hotkeysConfig)) {\n hotkeys.filter = function (event) {\n return true;\n };\n hotkeys(map(this.hotkeysConfig, \"key\").join(\",\"), (event, handler) => {\n event.preventDefault();\n const found = find(this.hotkeysConfig, [\"key\", handler.key]);\n if (found?.eventName) {\n if (!this.disabled) {\n this.dispatchEvent(new CustomEvent(found.eventName));\n }\n }\n });\n }\n }\n\n disconnectedCallback(): void {\n if (!isEmpty(this.hotkeysConfig)) {\n hotkeys.unbind(map(this.hotkeysConfig, \"key\").join(\",\"));\n }\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // Nothing to do.\n }\n}\n\ncustomElements.define(\"basic-bricks.general-hotkeys\", GeneralHotkeysElement);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport { property, BrickWrapper, UpdatingElement, method } from \"@next-core/brick-kit\";\n/**\n * @id basic-bricks.general-timer\n * @name basic-bricks.general-timer\n * @docKind brick\n * @description 启动一个定时发出指定事件的定时器\n * @author cyril\n * @slots\n * @history\n * 1.67.2:新增构件 `basic-bricks.general-timer`\n * @memo\n * @noInheritDoc\n */\nexport class GeneralTimerElement extends UpdatingElement {\n /**\n * @kind string\n * @required false\n * @default general-timer.timing-event\n * @description 定时抛出的事件\n */\n @property()\n eventName: string;\n\n /**\n * @kind number\n * @required false\n * @default 60000\n * @description 定时间隔(单位:ms)\n */\n @property()\n interval: number;\n\n /**\n * @kind any\n * @required false\n * @default -\n * @description 抛出事件的数据\n */\n @property()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSource: any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _intervalId: any = null;\n\n private defaultEventName = \"general-timer.timing-event\";\n private defaultInterval = 60000;\n\n /**\n *\n * @description 停止timer\n */\n @method() stopTimer(): void {\n if (this._intervalId) {\n clearInterval(this._intervalId);\n }\n }\n\n /**\n*\n* @description 重启timer\n*/\n @method() reStartTimer(): void {\n this.stopTimer();\n this.startTimeout();\n }\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n\n this.startTimeout();\n\n this._render();\n }\n\n disconnectedCallback(): void {\n if (this._intervalId) {\n clearInterval(this._intervalId);\n }\n ReactDOM.unmountComponentAtNode(this);\n }\n\n private startTimeout(): void {\n this._intervalId = setTimeout(() => {\n if (this.dataSource) {\n this.dispatchEvent(\n new CustomEvent(this.eventName || this.defaultEventName, {\n detail: this.dataSource,\n })\n );\n } else {\n this.dispatchEvent(\n new CustomEvent(this.eventName || this.defaultEventName)\n );\n }\n\n this.startTimeout();\n }, this.interval || this.defaultInterval);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <></>\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.general-timer\", GeneralTimerElement);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isObject } from \"lodash\";\n\nimport {\n property,\n BrickWrapper,\n UpdatingElement,\n handleHttpError,\n event,\n method,\n EventEmitter,\n} from \"@next-core/brick-kit\";\n\n/**\n * @id basic-bricks.export-json-file\n * @name basic-bricks.export-json-file\n * @docKind brick\n * @description 把数据导出为 JSON 文件\n * @author cyril\n * @slots\n * @history\n * 1.69.2:新增构件 `basic-bricks.export-json-file`\n * @memo\n * @noInheritDoc\n */\nexport class ExportJsonFileElement extends UpdatingElement {\n /**\n * @kind string\n * @required false\n * @default -\n * @description 导出的文件名\n */\n @property()\n fileName: string;\n\n /**\n * @kind object | string\n * @required -\n * @default -\n * @description \t导出的文件数据\n */\n @property({ attribute: false })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any;\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"none\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n /**\n * @params [{ detail: { fileName: string; data: object | string; } }]\n * @description 导出数据\n */\n @method()\n export(event: CustomEvent): void {\n const fileName = event.detail?.fileName ?? this.fileName;\n const data = event.detail?.data ?? this.data;\n\n if (this.isConnected) {\n const dataString = isObject(data) ? JSON.stringify(data) : data;\n\n try {\n const link = document.createElement(\"a\");\n const blob = new Blob([dataString], {\n type: \"text/plain\",\n });\n link.download = fileName || \"undefined\";\n link.href = URL.createObjectURL(blob);\n link.click();\n this.success.emit();\n } catch (e) {\n handleHttpError(e);\n this.failed.emit();\n }\n }\n }\n /**\n * @description 导出文件成功\n */\n @event({ type: \"json-file.export.success\" }) success: EventEmitter;\n /**\n * @description 导出文件失败\n */\n @event({ type: \"json-file.export.failed\" }) failed: EventEmitter;\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <></>\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.export-json-file\", ExportJsonFileElement);\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { NS_BASIC_BRICKS, K } from \"../i18n/constants\";\n\nexport interface BrickErrorProps {\n errorType: string;\n errorMessage: string;\n brickName: string;\n isLegacyTemplate?: boolean;\n}\n\nexport function BrickError({\n errorType,\n errorMessage,\n brickName,\n isLegacyTemplate,\n}: BrickErrorProps): React.ReactElement {\n const { t } = useTranslation(NS_BASIC_BRICKS);\n\n return (\n <div>\n <p style={{ fontSize: \"125%\", marginBottom: \"10px\" }}>\n {t(isLegacyTemplate ? K.LEGACY_TEMPLATE_ERROR : K.BRICK_ERROR)}\n </p>\n <p>{`<${brickName}> ${errorType}: ${errorMessage}`}</p>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, property, UpdatingElement } from \"@next-core/brick-kit\";\nimport { BrickError } from \"./BrickError\";\n\n/**\n * @id basic-bricks.brick-error\n * @description 用于当构件发生允许单独 crash 的错误时显示的替代构件\n * @author steve\n * @history\n * 1.84.0: 新增构件 `basic-bricks.brick-error`\n * @docKind brick\n * @noInheritDoc\n */\nexport class BrickErrorElement extends UpdatingElement {\n /**\n * @description 错误类型\n * @required\n */\n @property()\n errorType: string;\n\n /**\n * @description 错误信息\n * @required\n */\n @property()\n errorMessage: string;\n\n /**\n * @description 发生错误的构件名称\n * @required\n */\n @property()\n brickName: string;\n\n /**\n * @description 发生错误的是否是老模板\n */\n @property({\n type: Boolean,\n })\n isLegacyTemplate: boolean;\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickError\n errorType={this.errorType}\n errorMessage={this.errorMessage}\n brickName={this.brickName}\n isLegacyTemplate={this.isLegacyTemplate}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.brick-error\", BrickErrorElement);\n","import React, { useMemo } from \"react\";\n\ninterface EasyViewProps {\n gridAreas?: Record<string, (string | number)[]>;\n gridTemplateAreas?: string[][];\n gridTemplateColumns?: string | string[];\n gridTemplateRows?: string | string[];\n containerStyle?: React.CSSProperties;\n styleByAreas?: Record<string, React.CSSProperties>;\n}\n\nexport function EasyView({\n gridAreas,\n gridTemplateAreas,\n gridTemplateColumns,\n gridTemplateRows,\n containerStyle,\n styleByAreas,\n}: EasyViewProps): React.ReactElement {\n const areas = useMemo(\n () =>\n gridAreas\n ? Object.keys(gridAreas)\n : Array.from(new Set(gridTemplateAreas?.flat?.() ?? [])).filter(\n (area) => area !== \".\"\n ),\n [gridAreas, gridTemplateAreas]\n );\n\n return (\n <div\n style={{\n display: \"grid\",\n gridTemplateAreas: gridTemplateAreas\n ?.map((row) => `\"${row.join(\" \")}\"`)\n .join(\" \"),\n gridTemplateColumns: Array.isArray(gridTemplateColumns)\n ? gridTemplateColumns.join(\" \")\n : gridTemplateColumns,\n gridTemplateRows: Array.isArray(gridTemplateRows)\n ? gridTemplateRows.join(\" \")\n : gridTemplateRows,\n ...containerStyle,\n }}\n >\n {areas.map((area) => (\n <div\n key={area}\n style={{\n gridArea: gridAreas ? gridAreas[area].join(\" / \") : area,\n ...styleByAreas?.[area],\n }}\n >\n <slot name={area} />\n </div>\n ))}\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { EasyView } from \"./EasyView\";\n\nimport styles from \"./EasyView.shadow.css\";\n\n/**\n * @id basic-bricks.easy-view\n * @author steve\n * @description 基于网格的简易布局容器,可以根据 grid-area 名称自动生成对应的插槽\n * @history\n * 1.127.0: 新增构件 `basic-bricks.easy-view`\n * @docKind brick\n * @noInheritDoc\n */\nexport class EasyViewElement extends UpdatingElement {\n private _mountPoint: HTMLElement;\n\n /**\n * @description 以键值对形式定义多个 [grid-area](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area)\n */\n @property({ attribute: false })\n gridAreas: Record<string, (string | number)[]>;\n\n /**\n * @description 定义 [grid-template-areas](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-areas)\n */\n @property({ attribute: false })\n gridTemplateAreas: string[][];\n\n /**\n * @description 定义 [grid-template-columns](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns)\n */\n @property({ attribute: false })\n gridTemplateColumns: string | string[];\n\n /**\n * @description 定义 [grid-template-rows](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-rows)\n */\n @property({ attribute: false })\n gridTemplateRows: string | string[];\n\n /**\n * @description 定义网格容器的样式\n */\n @property({ attribute: false })\n containerStyle: React.CSSProperties;\n\n /**\n * @description 定义网格内各区域的样式\n */\n @property({ attribute: false })\n styleByAreas: Record<string, React.CSSProperties>;\n\n constructor() {\n super();\n\n // ** Create a shadow root to encapsulate styles. **\n // ** Create your shadow root in the constructor. **\n const shadowRoot = this.attachShadow({ mode: \"open\" });\n\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = styles;\n shadowRoot.appendChild(styleElement);\n\n this._mountPoint = document.createElement(\"div\");\n // ** Place any children the element creates into its shadow root. **\n shadowRoot.appendChild(this._mountPoint);\n }\n\n connectedCallback(): void {\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <EasyView\n gridAreas={this.gridAreas}\n gridTemplateAreas={this.gridTemplateAreas}\n gridTemplateColumns={this.gridTemplateColumns}\n gridTemplateRows={this.gridTemplateRows}\n containerStyle={this.containerStyle}\n styleByAreas={this.styleByAreas}\n />\n </BrickWrapper>,\n this._mountPoint\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.easy-view\", EasyViewElement);\n","import React from \"react\";\nimport logo139w from \"../images/logo-139w.png\";\nimport logo278w from \"../images/logo-278w.png\";\nexport interface HeaderBarProps {\n logoUrl?: string;\n headerBackgroundColor?: string;\n}\n\nexport function HeaderBar({\n logoUrl,\n headerBackgroundColor,\n}: HeaderBarProps): React.ReactElement {\n return (\n <header\n className=\"headerBar\"\n style={{\n backgroundColor: headerBackgroundColor,\n }}\n >\n <div className=\"logo\">\n <img\n src={logoUrl ? logoUrl : logo278w}\n srcSet={`${logoUrl ? logoUrl : logo139w} 139w, ${\n logoUrl ? logoUrl : logo278w\n } 278w`}\n sizes=\"(min-resolution: 2dppx) 278px, 139px\"\n alt=\"优维科技 UWinTech\"\n />\n </div>\n <div className=\"content\">\n <nav className=\"navbar\">\n <slot name=\"navbar\" />\n </nav>\n <div className=\"toolbar\">\n <slot name=\"toolbar\" />\n </div>\n </div>\n </header>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n UpdatingElement,\n property,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { HeaderBar } from \"./HeaderBar\";\nimport style from \"./index.headerBar.less\";\n/**\n * @id basic-bricks.header-bar\n * @author zekunpan\n * @history\n * 1.x.0: 新增构件 `basic-bricks.header-bar`,便于用户在basic-view模式下自由设定header头部\n * @docKind brick\n * @slots\n * navbar:左侧导航栏插槽\n * toolbar: 右侧工具栏插槽\n * @noInheritDoc\n */\nexport class HeaderBarElement extends UpdatingElement {\n private _mountPoint: HTMLElement;\n private _shadowRoot: ShadowRoot;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description log 图片\n * @group basic\n */\n @property()\n logoUrl: string;\n /**\n * @kind string\n * @required false\n * @default -\n * @description 构件背景颜色\n * @group basic\n */\n @property()\n headerBackgroundColor: string;\n /**\n * @detail `-`\n * @description 点击logo时触发\n */\n @event({ type: \"logo.click\" })\n logoClickEvent: EventEmitter<any>;\n\n constructor() {\n super();\n this._shadowRoot = this.attachShadow({ mode: \"open\" });\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = style;\n this._shadowRoot.appendChild(styleElement);\n this._mountPoint = document.createElement(\"div\");\n this._shadowRoot.appendChild(this._mountPoint);\n }\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this.listenOnClick();\n this._render();\n }\n\n listenOnClick() {\n this.addEventListener(\"click\", (e) => {\n const paths = e.composedPath() as HTMLElement[];\n for (const path of paths) {\n if (path.nodeName.toLowerCase() === \"#document-fragment\") {\n break;\n }\n if (path.className === \"logo\") {\n this.logoClickEvent?.emit();\n break;\n }\n }\n });\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <HeaderBar\n logoUrl={this.logoUrl}\n headerBackgroundColor={this.headerBackgroundColor}\n />\n </BrickWrapper>,\n this._mountPoint\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.header-bar\", HeaderBarElement);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./GeneralAnchor.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from \"react\";\nimport { Anchor, AnchorProps } from \"antd\";\nimport { AnchorListType } from \"./index\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport styles from \"./GeneralAnchor.module.css\";\nimport classnames from \"classnames\";\ninterface GeneralAnchorProps {\n configProps?: AnchorProps;\n anchorList: AnchorListType[];\n type?: \"default\" | \"radio\";\n extraBrick?: { useBrick: UseBrickConf };\n}\nexport function GeneralAnchor(props: GeneralAnchorProps): React.ReactElement {\n const { anchorList, configProps, type, extraBrick } = props;\n const { Link } = Anchor;\n const renderAnchorList = (\n anchorList: AnchorListType[],\n type?: \"default\" | \"radio\"\n ) => {\n return anchorList.map((item: AnchorListType, i: number) => {\n return (\n <Link title={item.title} href={item.href} target={item.target} key={i}>\n {type === \"default\" &&\n item.children?.length &&\n renderAnchorList(item.children, type)}\n </Link>\n );\n });\n };\n return (\n <Anchor\n offsetTop={56}\n {...configProps}\n className={classnames([\n {\n [styles.anchorWrapper]: type !== \"default\",\n },\n ])}\n >\n {type === \"default\" ? (\n renderAnchorList(anchorList, type)\n ) : (\n <div className={styles.anchorContainer}>\n <div className={styles.anchorLinkContainer}>\n {renderAnchorList(anchorList, type)}\n </div>\n {extraBrick?.useBrick && (\n <div className={styles.extraContainer}>\n <BrickAsComponent useBrick={extraBrick.useBrick} />\n </div>\n )}\n </div>\n )}\n </Anchor>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, property, UpdatingElement } from \"@next-core/brick-kit\";\nimport { GeneralAnchor } from \"./GeneralAnchor\";\nimport { AnchorLinkProps, AnchorProps } from \"antd\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nexport interface AnchorListType extends AnchorLinkProps {\n /* 其他参数请参考 https://ant.design/components/anchor-cn/#Link-Props */\n title: string;\n href: string;\n target?: string;\n children?: AnchorListType[];\n}\n\n/**\n * @id basic-bricks.general-anchor\n * @author astrid\n * @history\n * 1.138.0: 新增构件 `basic-bricks.general-anchor`\n * @docKind brick\n * @noInheritDoc\n */\nexport class GeneralAnchorElement extends UpdatingElement {\n /**\n * @kind `AnchorListType[]`\n * @required true\n * @default -\n * @description 锚点链接的list,会根据list的结构渲染出对应的锚点排布,\n */\n @property({\n attribute: false,\n })\n anchorList: AnchorListType[];\n\n /**\n * @kind `AnchorProps`\n * @required false\n * @default -\n * @description 锚点的具体参数,这里offsetTop设置了默认为`56`,其他参数可参考antd https://ant.design/docs/react/use-in-typescript-cn#Anchor-Props\n */\n @property({\n attribute: false,\n })\n configProps: AnchorProps;\n\n /**\n * @kind `\"default\" | \"radio\"`\n * @required false\n * @default `default`\n * @description 锚点的类型 , `radio` 的类型不支持 `anchorList`属性有`children`,否则会样式有问题\n */\n @property({\n attribute: false,\n })\n type: \"default\" | \"radio\";\n /**\n * @kind `{ useBrick: UseBrickConf }`\n * @required false\n * @default -\n * @description 右上角有操作区\n * @group basic\n */\n @property({ attribute: false })\n extraBrick: { useBrick: UseBrickConf };\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <GeneralAnchor\n anchorList={this.anchorList}\n configProps={this.configProps}\n type={this.type || \"default\"}\n extraBrick={this.extraBrick}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.general-anchor\", GeneralAnchorElement);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--12-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./GeneralTitle.module.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React, { useEffect, useRef } from \"react\";\nimport styles from \"./GeneralTitle.module.css\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { Link } from \"@next-libs/basic-components\";\ninterface GeneralTitleProps {\n mainTitle: string;\n subTitle?: string;\n description?: string;\n url?: string;\n target?: string;\n titleSuffixBrick?: { useBrick: UseBrickConf };\n descPrefixBrick?: { useBrick: UseBrickConf };\n dataSource?: Record<string, any>;\n descSuffixBrick?: { useBrick: UseBrickConf };\n}\nexport function GeneralTitle(props: GeneralTitleProps): React.ReactElement {\n const {\n mainTitle,\n description,\n titleSuffixBrick,\n descPrefixBrick,\n dataSource,\n subTitle,\n url,\n target,\n descSuffixBrick,\n } = props;\n return (\n <div>\n {mainTitle && (\n <div className={styles.titleWrapper}>\n {url ? (\n <Link to={url} target={target} className={styles.titleContentUrl}>\n {mainTitle}\n </Link>\n ) : (\n <div className={styles.titleContent}>{mainTitle}</div>\n )}\n {titleSuffixBrick?.useBrick && (\n <BrickAsComponent\n useBrick={titleSuffixBrick.useBrick}\n data={dataSource}\n />\n )}\n </div>\n )}\n {subTitle && (\n <div className={styles.subTitleWrapper}>\n <div className={styles.subTitleContent}>{subTitle}</div>\n </div>\n )}\n {description && (\n <div className={styles.descriptionWrapper}>\n {descPrefixBrick?.useBrick && (\n <BrickAsComponent\n useBrick={descPrefixBrick.useBrick}\n data={dataSource}\n />\n )}\n <div\n className={styles.descriptionContent}\n style={{\n marginLeft: descPrefixBrick?.useBrick ? \"5px\" : \"\",\n marginRight: descSuffixBrick?.useBrick ? \"5px\" : \"\",\n }}\n >\n {description}\n </div>\n {descSuffixBrick?.useBrick && (\n <BrickAsComponent\n useBrick={descSuffixBrick.useBrick}\n data={dataSource}\n />\n )}\n </div>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, property, UpdatingElement } from \"@next-core/brick-kit\";\nimport { GeneralTitle } from \"./GeneralTitle\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { forEach, get, pick, set } from \"lodash\";\n\n/**\n * @id basic-bricks.general-title\n * @author astrid\n * @slots\n * @history\n * 1.139.0: 新增构件 `basic-bricks.general-title`\n * @docKind brick\n * @noInheritDoc\n */\nexport class GeneralTitleElement extends UpdatingElement {\n /**\n * @kind `string`\n * @required true\n * @default\n * @description 标题\n * @group basic\n */\n @property({\n attribute: false,\n })\n mainTitle: string;\n\n /**\n * @kind `string`\n * @required false\n * @default\n * @description 描述\n * @group basic\n */\n @property({\n attribute: false,\n })\n description: string;\n /**\n * @kind `string`\n * @required\n * @default\n * @description 副标题\n * @group basic\n */\n @property({\n attribute: false,\n })\n subTitle: string;\n\n /**\n * @kind `string`\n * @required false\n * @default\n * @description 链接,点击标题时跳转\n * @group basic\n */\n @property({\n attribute: false,\n })\n url: string;\n\n /**\n * @kind `string`\n * @required false\n * @default\n * @description title跳转 target,例如可以设置成 _blank\n * @group basic\n */\n @property({\n attribute: false,\n })\n target: string;\n\n /**\n * @kind `{useBrick: UseBrickConf }`\n * @required false\n * @default\n * @description 可以在描述前添加前缀\n * @group advanced\n */\n @property({\n attribute: false,\n })\n descPrefixBrick: { useBrick: UseBrickConf };\n\n /**\n * @kind `{useBrick: UseBrickConf }\n * @required false\n * @default\n * @description 可以在标题后添加后缀\n * @group advanced\n */\n @property({\n attribute: false,\n })\n titleSuffixBrick: { useBrick: UseBrickConf };\n\n /**\n * @kind `{useBrick: UseBrickConf }`\n * @required false\n * @default\n * @description 可以在描述后面添加后缀\n * @group advanced\n */\n @property({\n attribute: false,\n })\n descSuffixBrick: { useBrick: UseBrickConf };\n\n /**\n * @kind ` Record<string, any>`\n * @required false\n * @default\n * @description 数据源\n * @group advanced\n */\n @property({\n attribute: false,\n })\n dataSource: Record<string, any>;\n\n /**\n * @kind ` {mainTitle?: string; subTitle?: string; description?: string;}`\n * @required false\n * @default\n * @description 字段映射, 跟 dataSource 一起使用来获得运行时 mainTitle、 description\n * @group advanced\n */\n @property({\n attribute: false,\n })\n fields: {\n mainTitle?: string;\n description?: string;\n subTitle?: string;\n };\n\n // istanbul ignore next\n private initData(mutableProps: {\n mainTitle: string;\n description: string;\n subTitle: string;\n }): void {\n const pickFields = pick(this.fields, [\n \"mainTitle\",\n \"description\",\n \"subTitle\",\n ]);\n forEach(pickFields, (fieldKey, field: string) => {\n set(mutableProps, field, get(this.dataSource, fieldKey));\n });\n }\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n const data = {\n mainTitle: this.mainTitle,\n description: this.description,\n subTitle: this.subTitle,\n };\n if (this.fields && this.dataSource) {\n this.initData(data);\n }\n ReactDOM.render(\n <BrickWrapper>\n <GeneralTitle\n mainTitle={data.mainTitle}\n subTitle={data.subTitle}\n url={this.url}\n target={this.target}\n description={data.description}\n dataSource={this.dataSource}\n titleSuffixBrick={this.titleSuffixBrick}\n descPrefixBrick={this.descPrefixBrick}\n descSuffixBrick={this.descSuffixBrick}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.general-title\", GeneralTitleElement);\n","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"LhCv\");","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"LvDl\");","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\"-!../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../node_modules/@fortawesome/fontawesome-svg-core/styles.css\");\nvar ___CSS_LOADER_AT_RULE_IMPORT_1___ = require(\"-!../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../node_modules/@next-core/brick-icons/dist/styles/index.css\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[class^=ant-]::-ms-clear,\\n[class*= ant-]::-ms-clear,\\n[class^=ant-] input::-ms-clear,\\n[class*= ant-] input::-ms-clear,\\n[class^=ant-] input::-ms-reveal,\\n[class*= ant-] input::-ms-reveal {\\n display: none;\\n}\\n[class^=ant-],\\n[class*= ant-],\\n[class^=ant-] *,\\n[class*= ant-] *,\\n[class^=ant-] *::before,\\n[class*= ant-] *::before,\\n[class^=ant-] *::after,\\n[class*= ant-] *::after {\\n box-sizing: border-box;\\n}\\n/* stylelint-disable at-rule-no-unknown */\\nhtml,\\nbody {\\n width: 100%;\\n height: 100%;\\n}\\ninput::-ms-clear,\\ninput::-ms-reveal {\\n display: none;\\n}\\n*,\\n*::before,\\n*::after {\\n box-sizing: border-box;\\n}\\nhtml {\\n font-family: sans-serif;\\n line-height: 1.15;\\n -webkit-text-size-adjust: 100%;\\n -ms-text-size-adjust: 100%;\\n -ms-overflow-style: scrollbar;\\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\n}\\n@-ms-viewport {\\n width: device-width;\\n}\\nbody {\\n margin: 0;\\n color: var(--antd-text-color);\\n font-size: 14px;\\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\\n font-variant: tabular-nums;\\n line-height: 1.5715;\\n background-color: #fff;\\n font-feature-settings: 'tnum';\\n}\\n[tabindex='-1']:focus {\\n outline: none !important;\\n}\\nhr {\\n box-sizing: content-box;\\n height: 0;\\n overflow: visible;\\n}\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n margin-top: 0;\\n margin-bottom: 0.5em;\\n color: var(--antd-heading-color);\\n font-weight: 500;\\n}\\np {\\n margin-top: 0;\\n margin-bottom: 1em;\\n}\\nabbr[title],\\nabbr[data-original-title] {\\n text-decoration: underline;\\n text-decoration: underline dotted;\\n border-bottom: 0;\\n cursor: help;\\n}\\naddress {\\n margin-bottom: 1em;\\n font-style: normal;\\n line-height: inherit;\\n}\\ninput[type='text'],\\ninput[type='password'],\\ninput[type='number'],\\ntextarea {\\n -webkit-appearance: none;\\n}\\nol,\\nul,\\ndl {\\n margin-top: 0;\\n margin-bottom: 1em;\\n}\\nol ol,\\nul ul,\\nol ul,\\nul ol {\\n margin-bottom: 0;\\n}\\ndt {\\n font-weight: 500;\\n}\\ndd {\\n margin-bottom: 0.5em;\\n margin-left: 0;\\n}\\nblockquote {\\n margin: 0 0 1em;\\n}\\ndfn {\\n font-style: italic;\\n}\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\nsmall {\\n font-size: 80%;\\n}\\nsub,\\nsup {\\n position: relative;\\n font-size: 75%;\\n line-height: 0;\\n vertical-align: baseline;\\n}\\nsub {\\n bottom: -0.25em;\\n}\\nsup {\\n top: -0.5em;\\n}\\na {\\n color: var(--antd-link-color);\\n text-decoration: none;\\n background-color: transparent;\\n outline: none;\\n cursor: pointer;\\n transition: color 0.3s;\\n -webkit-text-decoration-skip: objects;\\n}\\na:hover {\\n color: var(--antd-link-hover-color);\\n}\\na:active {\\n color: var(--antd-link-active-color);\\n}\\na:active,\\na:hover {\\n text-decoration: none;\\n outline: 0;\\n}\\na:focus {\\n text-decoration: none;\\n outline: 0;\\n}\\na[disabled] {\\n color: var(--text-color-disabled);\\n cursor: not-allowed;\\n pointer-events: none;\\n}\\npre,\\ncode,\\nkbd,\\nsamp {\\n font-size: 1em;\\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;\\n}\\npre {\\n margin-top: 0;\\n margin-bottom: 1em;\\n overflow: auto;\\n}\\nfigure {\\n margin: 0 0 1em;\\n}\\nimg {\\n vertical-align: middle;\\n border-style: none;\\n}\\nsvg:not(:root) {\\n overflow: hidden;\\n}\\na,\\narea,\\nbutton,\\n[role='button'],\\ninput:not([type='range']),\\nlabel,\\nselect,\\nsummary,\\ntextarea {\\n touch-action: manipulation;\\n}\\ntable {\\n border-collapse: collapse;\\n}\\ncaption {\\n padding-top: 0.75em;\\n padding-bottom: 0.3em;\\n color: var(--antd-text-color-secondary);\\n text-align: left;\\n caption-side: bottom;\\n}\\nth {\\n text-align: inherit;\\n}\\ninput,\\nbutton,\\nselect,\\noptgroup,\\ntextarea {\\n margin: 0;\\n color: inherit;\\n font-size: inherit;\\n font-family: inherit;\\n line-height: inherit;\\n}\\nbutton,\\ninput {\\n overflow: visible;\\n}\\nbutton,\\nselect {\\n text-transform: none;\\n}\\nbutton,\\nhtml [type=\\\"button\\\"],\\n[type=\\\"reset\\\"],\\n[type=\\\"submit\\\"] {\\n -webkit-appearance: button;\\n}\\nbutton::-moz-focus-inner,\\n[type='button']::-moz-focus-inner,\\n[type='reset']::-moz-focus-inner,\\n[type='submit']::-moz-focus-inner {\\n padding: 0;\\n border-style: none;\\n}\\ninput[type='radio'],\\ninput[type='checkbox'] {\\n box-sizing: border-box;\\n padding: 0;\\n}\\ninput[type='date'],\\ninput[type='time'],\\ninput[type='datetime-local'],\\ninput[type='month'] {\\n -webkit-appearance: listbox;\\n}\\ntextarea {\\n overflow: auto;\\n resize: vertical;\\n}\\nfieldset {\\n min-width: 0;\\n margin: 0;\\n padding: 0;\\n border: 0;\\n}\\nlegend {\\n display: block;\\n width: 100%;\\n max-width: 100%;\\n margin-bottom: 0.5em;\\n padding: 0;\\n color: inherit;\\n font-size: 1.5em;\\n line-height: inherit;\\n white-space: normal;\\n}\\nprogress {\\n vertical-align: baseline;\\n}\\n[type='number']::-webkit-inner-spin-button,\\n[type='number']::-webkit-outer-spin-button {\\n height: auto;\\n}\\n[type='search'] {\\n outline-offset: -2px;\\n -webkit-appearance: none;\\n}\\n[type='search']::-webkit-search-cancel-button,\\n[type='search']::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n::-webkit-file-upload-button {\\n font: inherit;\\n -webkit-appearance: button;\\n}\\noutput {\\n display: inline-block;\\n}\\nsummary {\\n display: list-item;\\n}\\ntemplate {\\n display: none;\\n}\\n[hidden] {\\n display: none !important;\\n}\\nmark {\\n padding: 0.2em;\\n background-color: #feffe6;\\n}\\n::selection {\\n color: #fff;\\n background: #0071eb;\\n}\\n.clearfix::before {\\n display: table;\\n content: '';\\n}\\n.clearfix::after {\\n display: table;\\n clear: both;\\n content: '';\\n}\\n.anticon {\\n display: inline-block;\\n color: inherit;\\n font-style: normal;\\n line-height: 0;\\n text-align: center;\\n text-transform: none;\\n vertical-align: -0.125em;\\n text-rendering: optimizeLegibility;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n.anticon > * {\\n line-height: 1;\\n}\\n.anticon svg {\\n display: inline-block;\\n}\\n.anticon::before {\\n display: none;\\n}\\n.anticon .anticon-icon {\\n display: block;\\n}\\n.anticon[tabindex] {\\n cursor: pointer;\\n}\\n.anticon-spin::before {\\n display: inline-block;\\n animation: loadingCircle 1s infinite linear;\\n}\\n.anticon-spin {\\n display: inline-block;\\n animation: loadingCircle 1s infinite linear;\\n}\\n.fade-enter,\\n.fade-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.fade-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.fade-enter.fade-enter-active,\\n.fade-appear.fade-appear-active {\\n animation-name: antFadeIn;\\n animation-play-state: running;\\n}\\n.fade-leave.fade-leave-active {\\n animation-name: antFadeOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.fade-enter,\\n.fade-appear {\\n opacity: 0;\\n animation-timing-function: linear;\\n}\\n.fade-leave {\\n animation-timing-function: linear;\\n}\\n@keyframes antFadeIn {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@keyframes antFadeOut {\\n 0% {\\n opacity: 1;\\n }\\n 100% {\\n opacity: 0;\\n }\\n}\\n.move-up-enter,\\n.move-up-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.move-up-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.move-up-enter.move-up-enter-active,\\n.move-up-appear.move-up-appear-active {\\n animation-name: antMoveUpIn;\\n animation-play-state: running;\\n}\\n.move-up-leave.move-up-leave-active {\\n animation-name: antMoveUpOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.move-up-enter,\\n.move-up-appear {\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.move-up-leave {\\n animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);\\n}\\n.move-down-enter,\\n.move-down-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.move-down-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.move-down-enter.move-down-enter-active,\\n.move-down-appear.move-down-appear-active {\\n animation-name: antMoveDownIn;\\n animation-play-state: running;\\n}\\n.move-down-leave.move-down-leave-active {\\n animation-name: antMoveDownOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.move-down-enter,\\n.move-down-appear {\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.move-down-leave {\\n animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);\\n}\\n.move-left-enter,\\n.move-left-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.move-left-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.move-left-enter.move-left-enter-active,\\n.move-left-appear.move-left-appear-active {\\n animation-name: antMoveLeftIn;\\n animation-play-state: running;\\n}\\n.move-left-leave.move-left-leave-active {\\n animation-name: antMoveLeftOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.move-left-enter,\\n.move-left-appear {\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.move-left-leave {\\n animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);\\n}\\n.move-right-enter,\\n.move-right-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.move-right-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.move-right-enter.move-right-enter-active,\\n.move-right-appear.move-right-appear-active {\\n animation-name: antMoveRightIn;\\n animation-play-state: running;\\n}\\n.move-right-leave.move-right-leave-active {\\n animation-name: antMoveRightOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.move-right-enter,\\n.move-right-appear {\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.move-right-leave {\\n animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);\\n}\\n@keyframes antMoveDownIn {\\n 0% {\\n transform: translateY(100%);\\n transform-origin: 0 0;\\n opacity: 0;\\n }\\n 100% {\\n transform: translateY(0%);\\n transform-origin: 0 0;\\n opacity: 1;\\n }\\n}\\n@keyframes antMoveDownOut {\\n 0% {\\n transform: translateY(0%);\\n transform-origin: 0 0;\\n opacity: 1;\\n }\\n 100% {\\n transform: translateY(100%);\\n transform-origin: 0 0;\\n opacity: 0;\\n }\\n}\\n@keyframes antMoveLeftIn {\\n 0% {\\n transform: translateX(-100%);\\n transform-origin: 0 0;\\n opacity: 0;\\n }\\n 100% {\\n transform: translateX(0%);\\n transform-origin: 0 0;\\n opacity: 1;\\n }\\n}\\n@keyframes antMoveLeftOut {\\n 0% {\\n transform: translateX(0%);\\n transform-origin: 0 0;\\n opacity: 1;\\n }\\n 100% {\\n transform: translateX(-100%);\\n transform-origin: 0 0;\\n opacity: 0;\\n }\\n}\\n@keyframes antMoveRightIn {\\n 0% {\\n transform: translateX(100%);\\n transform-origin: 0 0;\\n opacity: 0;\\n }\\n 100% {\\n transform: translateX(0%);\\n transform-origin: 0 0;\\n opacity: 1;\\n }\\n}\\n@keyframes antMoveRightOut {\\n 0% {\\n transform: translateX(0%);\\n transform-origin: 0 0;\\n opacity: 1;\\n }\\n 100% {\\n transform: translateX(100%);\\n transform-origin: 0 0;\\n opacity: 0;\\n }\\n}\\n@keyframes antMoveUpIn {\\n 0% {\\n transform: translateY(-100%);\\n transform-origin: 0 0;\\n opacity: 0;\\n }\\n 100% {\\n transform: translateY(0%);\\n transform-origin: 0 0;\\n opacity: 1;\\n }\\n}\\n@keyframes antMoveUpOut {\\n 0% {\\n transform: translateY(0%);\\n transform-origin: 0 0;\\n opacity: 1;\\n }\\n 100% {\\n transform: translateY(-100%);\\n transform-origin: 0 0;\\n opacity: 0;\\n }\\n}\\n@keyframes loadingCircle {\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n[ant-click-animating='true'],\\n[ant-click-animating-without-extra-node='true'] {\\n position: relative;\\n}\\nhtml {\\n --antd-wave-shadow-color: #0071eb;\\n --scroll-bar: 0;\\n}\\n[ant-click-animating-without-extra-node='true']::after,\\n.ant-click-animating-node {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n display: block;\\n border-radius: inherit;\\n box-shadow: 0 0 0 0 #0071eb;\\n box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);\\n opacity: 0.2;\\n animation: fadeEffect 2s cubic-bezier(0.08, 0.82, 0.17, 1), waveEffect 0.4s cubic-bezier(0.08, 0.82, 0.17, 1);\\n animation-fill-mode: forwards;\\n content: '';\\n pointer-events: none;\\n}\\n@keyframes waveEffect {\\n 100% {\\n box-shadow: 0 0 0 #0071eb;\\n box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);\\n }\\n}\\n@keyframes fadeEffect {\\n 100% {\\n opacity: 0;\\n }\\n}\\n.slide-up-enter,\\n.slide-up-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.slide-up-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.slide-up-enter.slide-up-enter-active,\\n.slide-up-appear.slide-up-appear-active {\\n animation-name: antSlideUpIn;\\n animation-play-state: running;\\n}\\n.slide-up-leave.slide-up-leave-active {\\n animation-name: antSlideUpOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.slide-up-enter,\\n.slide-up-appear {\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.slide-up-leave {\\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n}\\n.slide-down-enter,\\n.slide-down-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.slide-down-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.slide-down-enter.slide-down-enter-active,\\n.slide-down-appear.slide-down-appear-active {\\n animation-name: antSlideDownIn;\\n animation-play-state: running;\\n}\\n.slide-down-leave.slide-down-leave-active {\\n animation-name: antSlideDownOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.slide-down-enter,\\n.slide-down-appear {\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.slide-down-leave {\\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n}\\n.slide-left-enter,\\n.slide-left-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.slide-left-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.slide-left-enter.slide-left-enter-active,\\n.slide-left-appear.slide-left-appear-active {\\n animation-name: antSlideLeftIn;\\n animation-play-state: running;\\n}\\n.slide-left-leave.slide-left-leave-active {\\n animation-name: antSlideLeftOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.slide-left-enter,\\n.slide-left-appear {\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.slide-left-leave {\\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n}\\n.slide-right-enter,\\n.slide-right-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.slide-right-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.slide-right-enter.slide-right-enter-active,\\n.slide-right-appear.slide-right-appear-active {\\n animation-name: antSlideRightIn;\\n animation-play-state: running;\\n}\\n.slide-right-leave.slide-right-leave-active {\\n animation-name: antSlideRightOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.slide-right-enter,\\n.slide-right-appear {\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.slide-right-leave {\\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n}\\n@keyframes antSlideUpIn {\\n 0% {\\n transform: scaleY(0.8);\\n transform-origin: 0% 0%;\\n opacity: 0;\\n }\\n 100% {\\n transform: scaleY(1);\\n transform-origin: 0% 0%;\\n opacity: 1;\\n }\\n}\\n@keyframes antSlideUpOut {\\n 0% {\\n transform: scaleY(1);\\n transform-origin: 0% 0%;\\n opacity: 1;\\n }\\n 100% {\\n transform: scaleY(0.8);\\n transform-origin: 0% 0%;\\n opacity: 0;\\n }\\n}\\n@keyframes antSlideDownIn {\\n 0% {\\n transform: scaleY(0.8);\\n transform-origin: 100% 100%;\\n opacity: 0;\\n }\\n 100% {\\n transform: scaleY(1);\\n transform-origin: 100% 100%;\\n opacity: 1;\\n }\\n}\\n@keyframes antSlideDownOut {\\n 0% {\\n transform: scaleY(1);\\n transform-origin: 100% 100%;\\n opacity: 1;\\n }\\n 100% {\\n transform: scaleY(0.8);\\n transform-origin: 100% 100%;\\n opacity: 0;\\n }\\n}\\n@keyframes antSlideLeftIn {\\n 0% {\\n transform: scaleX(0.8);\\n transform-origin: 0% 0%;\\n opacity: 0;\\n }\\n 100% {\\n transform: scaleX(1);\\n transform-origin: 0% 0%;\\n opacity: 1;\\n }\\n}\\n@keyframes antSlideLeftOut {\\n 0% {\\n transform: scaleX(1);\\n transform-origin: 0% 0%;\\n opacity: 1;\\n }\\n 100% {\\n transform: scaleX(0.8);\\n transform-origin: 0% 0%;\\n opacity: 0;\\n }\\n}\\n@keyframes antSlideRightIn {\\n 0% {\\n transform: scaleX(0.8);\\n transform-origin: 100% 0%;\\n opacity: 0;\\n }\\n 100% {\\n transform: scaleX(1);\\n transform-origin: 100% 0%;\\n opacity: 1;\\n }\\n}\\n@keyframes antSlideRightOut {\\n 0% {\\n transform: scaleX(1);\\n transform-origin: 100% 0%;\\n opacity: 1;\\n }\\n 100% {\\n transform: scaleX(0.8);\\n transform-origin: 100% 0%;\\n opacity: 0;\\n }\\n}\\n.zoom-enter,\\n.zoom-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-enter.zoom-enter-active,\\n.zoom-appear.zoom-appear-active {\\n animation-name: antZoomIn;\\n animation-play-state: running;\\n}\\n.zoom-leave.zoom-leave-active {\\n animation-name: antZoomOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.zoom-enter,\\n.zoom-appear {\\n transform: scale(0);\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-enter-prepare,\\n.zoom-appear-prepare {\\n transform: none;\\n}\\n.zoom-leave {\\n animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.zoom-big-enter,\\n.zoom-big-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-big-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-big-enter.zoom-big-enter-active,\\n.zoom-big-appear.zoom-big-appear-active {\\n animation-name: antZoomBigIn;\\n animation-play-state: running;\\n}\\n.zoom-big-leave.zoom-big-leave-active {\\n animation-name: antZoomBigOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.zoom-big-enter,\\n.zoom-big-appear {\\n transform: scale(0);\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-big-enter-prepare,\\n.zoom-big-appear-prepare {\\n transform: none;\\n}\\n.zoom-big-leave {\\n animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.zoom-big-fast-enter,\\n.zoom-big-fast-appear {\\n animation-duration: 0.1s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-big-fast-leave {\\n animation-duration: 0.1s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-big-fast-enter.zoom-big-fast-enter-active,\\n.zoom-big-fast-appear.zoom-big-fast-appear-active {\\n animation-name: antZoomBigIn;\\n animation-play-state: running;\\n}\\n.zoom-big-fast-leave.zoom-big-fast-leave-active {\\n animation-name: antZoomBigOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.zoom-big-fast-enter,\\n.zoom-big-fast-appear {\\n transform: scale(0);\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-big-fast-enter-prepare,\\n.zoom-big-fast-appear-prepare {\\n transform: none;\\n}\\n.zoom-big-fast-leave {\\n animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.zoom-up-enter,\\n.zoom-up-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-up-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-up-enter.zoom-up-enter-active,\\n.zoom-up-appear.zoom-up-appear-active {\\n animation-name: antZoomUpIn;\\n animation-play-state: running;\\n}\\n.zoom-up-leave.zoom-up-leave-active {\\n animation-name: antZoomUpOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.zoom-up-enter,\\n.zoom-up-appear {\\n transform: scale(0);\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-up-enter-prepare,\\n.zoom-up-appear-prepare {\\n transform: none;\\n}\\n.zoom-up-leave {\\n animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.zoom-down-enter,\\n.zoom-down-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-down-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-down-enter.zoom-down-enter-active,\\n.zoom-down-appear.zoom-down-appear-active {\\n animation-name: antZoomDownIn;\\n animation-play-state: running;\\n}\\n.zoom-down-leave.zoom-down-leave-active {\\n animation-name: antZoomDownOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.zoom-down-enter,\\n.zoom-down-appear {\\n transform: scale(0);\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-down-enter-prepare,\\n.zoom-down-appear-prepare {\\n transform: none;\\n}\\n.zoom-down-leave {\\n animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.zoom-left-enter,\\n.zoom-left-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-left-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-left-enter.zoom-left-enter-active,\\n.zoom-left-appear.zoom-left-appear-active {\\n animation-name: antZoomLeftIn;\\n animation-play-state: running;\\n}\\n.zoom-left-leave.zoom-left-leave-active {\\n animation-name: antZoomLeftOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.zoom-left-enter,\\n.zoom-left-appear {\\n transform: scale(0);\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-left-enter-prepare,\\n.zoom-left-appear-prepare {\\n transform: none;\\n}\\n.zoom-left-leave {\\n animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.zoom-right-enter,\\n.zoom-right-appear {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-right-leave {\\n animation-duration: 0.2s;\\n animation-fill-mode: both;\\n animation-play-state: paused;\\n}\\n.zoom-right-enter.zoom-right-enter-active,\\n.zoom-right-appear.zoom-right-appear-active {\\n animation-name: antZoomRightIn;\\n animation-play-state: running;\\n}\\n.zoom-right-leave.zoom-right-leave-active {\\n animation-name: antZoomRightOut;\\n animation-play-state: running;\\n pointer-events: none;\\n}\\n.zoom-right-enter,\\n.zoom-right-appear {\\n transform: scale(0);\\n opacity: 0;\\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-right-enter-prepare,\\n.zoom-right-appear-prepare {\\n transform: none;\\n}\\n.zoom-right-leave {\\n animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n@keyframes antZoomIn {\\n 0% {\\n transform: scale(0.2);\\n opacity: 0;\\n }\\n 100% {\\n transform: scale(1);\\n opacity: 1;\\n }\\n}\\n@keyframes antZoomOut {\\n 0% {\\n transform: scale(1);\\n }\\n 100% {\\n transform: scale(0.2);\\n opacity: 0;\\n }\\n}\\n@keyframes antZoomBigIn {\\n 0% {\\n transform: scale(0.8);\\n opacity: 0;\\n }\\n 100% {\\n transform: scale(1);\\n opacity: 1;\\n }\\n}\\n@keyframes antZoomBigOut {\\n 0% {\\n transform: scale(1);\\n }\\n 100% {\\n transform: scale(0.8);\\n opacity: 0;\\n }\\n}\\n@keyframes antZoomUpIn {\\n 0% {\\n transform: scale(0.8);\\n transform-origin: 50% 0%;\\n opacity: 0;\\n }\\n 100% {\\n transform: scale(1);\\n transform-origin: 50% 0%;\\n }\\n}\\n@keyframes antZoomUpOut {\\n 0% {\\n transform: scale(1);\\n transform-origin: 50% 0%;\\n }\\n 100% {\\n transform: scale(0.8);\\n transform-origin: 50% 0%;\\n opacity: 0;\\n }\\n}\\n@keyframes antZoomLeftIn {\\n 0% {\\n transform: scale(0.8);\\n transform-origin: 0% 50%;\\n opacity: 0;\\n }\\n 100% {\\n transform: scale(1);\\n transform-origin: 0% 50%;\\n }\\n}\\n@keyframes antZoomLeftOut {\\n 0% {\\n transform: scale(1);\\n transform-origin: 0% 50%;\\n }\\n 100% {\\n transform: scale(0.8);\\n transform-origin: 0% 50%;\\n opacity: 0;\\n }\\n}\\n@keyframes antZoomRightIn {\\n 0% {\\n transform: scale(0.8);\\n transform-origin: 100% 50%;\\n opacity: 0;\\n }\\n 100% {\\n transform: scale(1);\\n transform-origin: 100% 50%;\\n }\\n}\\n@keyframes antZoomRightOut {\\n 0% {\\n transform: scale(1);\\n transform-origin: 100% 50%;\\n }\\n 100% {\\n transform: scale(0.8);\\n transform-origin: 100% 50%;\\n opacity: 0;\\n }\\n}\\n@keyframes antZoomDownIn {\\n 0% {\\n transform: scale(0.8);\\n transform-origin: 50% 100%;\\n opacity: 0;\\n }\\n 100% {\\n transform: scale(1);\\n transform-origin: 50% 100%;\\n }\\n}\\n@keyframes antZoomDownOut {\\n 0% {\\n transform: scale(1);\\n transform-origin: 50% 100%;\\n }\\n 100% {\\n transform: scale(0.8);\\n transform-origin: 50% 100%;\\n opacity: 0;\\n }\\n}\\n.ant-motion-collapse-legacy {\\n overflow: hidden;\\n}\\n.ant-motion-collapse-legacy-active {\\n transition: height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1) !important;\\n}\\n.ant-motion-collapse {\\n overflow: hidden;\\n transition: height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1) !important;\\n}\\n/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n.ant-modal {\\n box-sizing: border-box;\\n margin: 0;\\n padding: 0;\\n color: var(--antd-text-color);\\n font-size: 14px;\\n font-variant: tabular-nums;\\n line-height: 1.5715;\\n list-style: none;\\n font-feature-settings: 'tnum';\\n pointer-events: none;\\n position: relative;\\n top: 100px;\\n width: auto;\\n max-width: calc(100vw - 32px);\\n margin: 0 auto;\\n padding-bottom: 24px;\\n}\\n.ant-modal.zoom-enter,\\n.ant-modal.zoom-appear {\\n transform: none;\\n opacity: 0;\\n animation-duration: 0.3s;\\n user-select: none;\\n}\\n.ant-modal-mask {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 1000;\\n height: 100%;\\n background-color: rgba(11, 26, 47, 0.45);\\n}\\n.ant-modal-mask-hidden {\\n display: none;\\n}\\n.ant-modal-wrap {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n overflow: auto;\\n outline: 0;\\n -webkit-overflow-scrolling: touch;\\n}\\n.ant-modal-wrap {\\n z-index: 1000;\\n}\\n.ant-modal-title {\\n margin: 0;\\n color: var(--antd-heading-color);\\n font-weight: 500;\\n font-size: 16px;\\n line-height: 22px;\\n word-wrap: break-word;\\n}\\n.ant-modal-content {\\n position: relative;\\n background-color: var(--antd-component-background);\\n background-clip: padding-box;\\n border: 0;\\n border-radius: 6px;\\n box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\\n pointer-events: auto;\\n}\\n.ant-modal-close {\\n position: absolute;\\n top: 0;\\n right: 0;\\n z-index: 10;\\n padding: 0;\\n color: var(--antd-text-color-secondary);\\n font-weight: 700;\\n line-height: 1;\\n text-decoration: none;\\n background: transparent;\\n border: 0;\\n outline: 0;\\n cursor: pointer;\\n transition: color 0.3s;\\n}\\n.ant-modal-close-x {\\n display: block;\\n width: 56px;\\n height: 56px;\\n font-size: 16px;\\n font-style: normal;\\n line-height: 56px;\\n text-align: center;\\n text-transform: none;\\n text-rendering: auto;\\n}\\n.ant-modal-close:focus,\\n.ant-modal-close:hover {\\n color: rgba(0, 0, 0, 0.75);\\n text-decoration: none;\\n}\\n.ant-modal-header {\\n padding: 16px 24px;\\n color: var(--antd-text-color);\\n background: var(--antd-component-background);\\n border-bottom: 1px solid var(--antd-border-color-split);\\n border-radius: 6px 6px 0 0;\\n}\\n.ant-modal-body {\\n padding: 24px;\\n font-size: 14px;\\n line-height: 1.5715;\\n word-wrap: break-word;\\n}\\n.ant-modal-footer {\\n padding: 10px 24px;\\n text-align: right;\\n background: #f3f4f7;\\n border-top: 1px none var(--antd-border-color-split);\\n border-radius: 0 0 6px 6px;\\n}\\n.ant-modal-footer button + button {\\n margin-bottom: 0;\\n margin-left: 8px;\\n}\\n.ant-modal-open {\\n overflow: hidden;\\n}\\n.ant-modal-centered {\\n text-align: center;\\n}\\n.ant-modal-centered::before {\\n display: inline-block;\\n width: 0;\\n height: 100%;\\n vertical-align: middle;\\n content: '';\\n}\\n.ant-modal-centered .ant-modal {\\n top: 0;\\n display: inline-block;\\n text-align: left;\\n vertical-align: middle;\\n}\\n@media (max-width: 767px) {\\n .ant-modal {\\n max-width: calc(100vw - 16px);\\n margin: 8px auto;\\n }\\n .ant-modal-centered .ant-modal {\\n flex: 1;\\n }\\n}\\n.ant-modal-confirm .ant-modal-header {\\n display: none;\\n}\\n.ant-modal-confirm .ant-modal-body {\\n padding: 32px 32px 24px;\\n}\\n.ant-modal-confirm-body-wrapper::before {\\n display: table;\\n content: '';\\n}\\n.ant-modal-confirm-body-wrapper::after {\\n display: table;\\n clear: both;\\n content: '';\\n}\\n.ant-modal-confirm-body-wrapper::before {\\n display: table;\\n content: '';\\n}\\n.ant-modal-confirm-body-wrapper::after {\\n display: table;\\n clear: both;\\n content: '';\\n}\\n.ant-modal-confirm-body .ant-modal-confirm-title {\\n display: block;\\n overflow: hidden;\\n color: var(--antd-heading-color);\\n font-weight: 500;\\n font-size: 16px;\\n line-height: 1.4;\\n}\\n.ant-modal-confirm-body .ant-modal-confirm-content {\\n margin-top: 8px;\\n color: var(--antd-text-color);\\n font-size: 14px;\\n}\\n.ant-modal-confirm-body > .anticon {\\n float: left;\\n margin-right: 16px;\\n font-size: 22px;\\n}\\n.ant-modal-confirm-body > .anticon + .ant-modal-confirm-title + .ant-modal-confirm-content {\\n margin-left: 38px;\\n}\\n.ant-modal-confirm .ant-modal-confirm-btns {\\n float: right;\\n margin-top: 24px;\\n}\\n.ant-modal-confirm .ant-modal-confirm-btns button + button {\\n margin-bottom: 0;\\n margin-left: 8px;\\n}\\n.ant-modal-confirm-error .ant-modal-confirm-body > .anticon {\\n color: #ff4d4f;\\n}\\n.ant-modal-confirm-warning .ant-modal-confirm-body > .anticon,\\n.ant-modal-confirm-confirm .ant-modal-confirm-body > .anticon {\\n color: #faad14;\\n}\\n.ant-modal-confirm-info .ant-modal-confirm-body > .anticon {\\n color: #0071eb;\\n}\\n.ant-modal-confirm-success .ant-modal-confirm-body > .anticon {\\n color: #52c41a;\\n}\\n.ant-modal-wrap-rtl {\\n direction: rtl;\\n}\\n.ant-modal-wrap-rtl .ant-modal-close {\\n right: initial;\\n left: 0;\\n}\\n.ant-modal-wrap-rtl .ant-modal-footer {\\n text-align: left;\\n}\\n.ant-modal-wrap-rtl .ant-modal-footer button + button {\\n margin-right: 8px;\\n margin-left: 0;\\n}\\n.ant-modal-wrap-rtl .ant-modal-confirm-body {\\n direction: rtl;\\n}\\n.ant-modal-wrap-rtl .ant-modal-confirm-body > .anticon {\\n float: right;\\n margin-right: 0;\\n margin-left: 16px;\\n}\\n.ant-modal-wrap-rtl .ant-modal-confirm-body > .anticon + .ant-modal-confirm-title + .ant-modal-confirm-content {\\n margin-right: 38px;\\n margin-left: 0;\\n}\\n.ant-modal-wrap-rtl .ant-modal-confirm-btns {\\n float: left;\\n}\\n.ant-modal-wrap-rtl .ant-modal-confirm-btns button + button {\\n margin-right: 8px;\\n margin-left: 0;\\n}\\n.ant-modal-wrap-rtl.ant-modal-centered .ant-modal {\\n text-align: right;\\n}\\n.ant-btn {\\n line-height: 1.5715;\\n position: relative;\\n display: inline-block;\\n font-weight: 400;\\n white-space: nowrap;\\n text-align: center;\\n background-image: none;\\n border: 1px solid transparent;\\n box-shadow: none;\\n cursor: pointer;\\n transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n user-select: none;\\n touch-action: manipulation;\\n height: 32px;\\n padding: 4px 15px;\\n font-size: 14px;\\n border-radius: 6px;\\n color: var(--antd-btn-default-color);\\n background: var(--antd-btn-default-bg);\\n border-color: var(--antd-border-color-base);\\n}\\n.ant-btn > .anticon {\\n line-height: 1;\\n}\\n.ant-btn,\\n.ant-btn:active,\\n.ant-btn:focus {\\n outline: 0;\\n}\\n.ant-btn:not([disabled]):hover {\\n text-decoration: none;\\n}\\n.ant-btn:not([disabled]):active {\\n outline: 0;\\n box-shadow: none;\\n}\\n.ant-btn[disabled] {\\n cursor: not-allowed;\\n}\\n.ant-btn[disabled] > * {\\n pointer-events: none;\\n}\\n.ant-btn-lg {\\n height: 40px;\\n padding: 6.4px 15px;\\n font-size: 16px;\\n border-radius: 6px;\\n}\\n.ant-btn-sm {\\n height: 28px;\\n padding: 2px 7px;\\n font-size: 14px;\\n border-radius: 6px;\\n}\\n.ant-btn > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn:hover,\\n.ant-btn:focus {\\n color: #2893f7;\\n background: var(--antd-btn-default-bg);\\n border-color: #2893f7;\\n}\\n.ant-btn:hover > a:only-child,\\n.ant-btn:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn:hover > a:only-child::after,\\n.ant-btn:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn:active {\\n color: #0058c4;\\n background: var(--antd-btn-default-bg);\\n border-color: #0058c4;\\n}\\n.ant-btn:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn[disabled],\\n.ant-btn[disabled]:hover,\\n.ant-btn[disabled]:focus,\\n.ant-btn[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn[disabled] > a:only-child,\\n.ant-btn[disabled]:hover > a:only-child,\\n.ant-btn[disabled]:focus > a:only-child,\\n.ant-btn[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn[disabled] > a:only-child::after,\\n.ant-btn[disabled]:hover > a:only-child::after,\\n.ant-btn[disabled]:focus > a:only-child::after,\\n.ant-btn[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn:hover,\\n.ant-btn:focus,\\n.ant-btn:active {\\n text-decoration: none;\\n background: var(--antd-btn-default-bg);\\n}\\n.ant-btn > span {\\n display: inline-block;\\n}\\n.ant-btn-primary {\\n color: #fff;\\n background: #0071eb;\\n border-color: #0071eb;\\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\\n}\\n.ant-btn-primary > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-primary > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-primary:hover,\\n.ant-btn-primary:focus {\\n color: #fff;\\n background: #2893f7;\\n border-color: #2893f7;\\n}\\n.ant-btn-primary:hover > a:only-child,\\n.ant-btn-primary:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-primary:hover > a:only-child::after,\\n.ant-btn-primary:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-primary:active {\\n color: #fff;\\n background: #0058c4;\\n border-color: #0058c4;\\n}\\n.ant-btn-primary:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-primary:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-primary[disabled],\\n.ant-btn-primary[disabled]:hover,\\n.ant-btn-primary[disabled]:focus,\\n.ant-btn-primary[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-primary[disabled] > a:only-child,\\n.ant-btn-primary[disabled]:hover > a:only-child,\\n.ant-btn-primary[disabled]:focus > a:only-child,\\n.ant-btn-primary[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-primary[disabled] > a:only-child::after,\\n.ant-btn-primary[disabled]:hover > a:only-child::after,\\n.ant-btn-primary[disabled]:focus > a:only-child::after,\\n.ant-btn-primary[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) {\\n border-right-color: #2893f7;\\n border-left-color: #2893f7;\\n}\\n.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled {\\n border-color: var(--antd-border-color-base);\\n}\\n.ant-btn-group .ant-btn-primary:first-child:not(:last-child) {\\n border-right-color: #2893f7;\\n}\\n.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] {\\n border-right-color: var(--antd-border-color-base);\\n}\\n.ant-btn-group .ant-btn-primary:last-child:not(:first-child),\\n.ant-btn-group .ant-btn-primary + .ant-btn-primary {\\n border-left-color: #2893f7;\\n}\\n.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],\\n.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {\\n border-left-color: var(--antd-border-color-base);\\n}\\n.ant-btn-ghost {\\n color: var(--antd-text-color);\\n background: transparent;\\n border-color: var(--antd-border-color-base);\\n}\\n.ant-btn-ghost > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-ghost > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-ghost:hover,\\n.ant-btn-ghost:focus {\\n color: #2893f7;\\n background: transparent;\\n border-color: #2893f7;\\n}\\n.ant-btn-ghost:hover > a:only-child,\\n.ant-btn-ghost:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-ghost:hover > a:only-child::after,\\n.ant-btn-ghost:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-ghost:active {\\n color: #0058c4;\\n background: transparent;\\n border-color: #0058c4;\\n}\\n.ant-btn-ghost:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-ghost:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-ghost[disabled],\\n.ant-btn-ghost[disabled]:hover,\\n.ant-btn-ghost[disabled]:focus,\\n.ant-btn-ghost[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-ghost[disabled] > a:only-child,\\n.ant-btn-ghost[disabled]:hover > a:only-child,\\n.ant-btn-ghost[disabled]:focus > a:only-child,\\n.ant-btn-ghost[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-ghost[disabled] > a:only-child::after,\\n.ant-btn-ghost[disabled]:hover > a:only-child::after,\\n.ant-btn-ghost[disabled]:focus > a:only-child::after,\\n.ant-btn-ghost[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dashed {\\n color: var(--antd-btn-default-color);\\n background: var(--antd-btn-default-bg);\\n border-color: var(--antd-border-color-base);\\n border-style: dashed;\\n}\\n.ant-btn-dashed > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dashed > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dashed:hover,\\n.ant-btn-dashed:focus {\\n color: #2893f7;\\n background: var(--antd-btn-default-bg);\\n border-color: #2893f7;\\n}\\n.ant-btn-dashed:hover > a:only-child,\\n.ant-btn-dashed:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dashed:hover > a:only-child::after,\\n.ant-btn-dashed:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dashed:active {\\n color: #0058c4;\\n background: var(--antd-btn-default-bg);\\n border-color: #0058c4;\\n}\\n.ant-btn-dashed:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dashed:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dashed[disabled],\\n.ant-btn-dashed[disabled]:hover,\\n.ant-btn-dashed[disabled]:focus,\\n.ant-btn-dashed[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dashed[disabled] > a:only-child,\\n.ant-btn-dashed[disabled]:hover > a:only-child,\\n.ant-btn-dashed[disabled]:focus > a:only-child,\\n.ant-btn-dashed[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dashed[disabled] > a:only-child::after,\\n.ant-btn-dashed[disabled]:hover > a:only-child::after,\\n.ant-btn-dashed[disabled]:focus > a:only-child::after,\\n.ant-btn-dashed[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-danger {\\n color: #fff;\\n background: #f0493c;\\n border-color: #f0493c;\\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\\n}\\n.ant-btn-danger > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-danger > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-danger:hover,\\n.ant-btn-danger:focus {\\n color: #fff;\\n background: #fc7668;\\n border-color: #fc7668;\\n}\\n.ant-btn-danger:hover > a:only-child,\\n.ant-btn-danger:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-danger:hover > a:only-child::after,\\n.ant-btn-danger:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-danger:active {\\n color: #fff;\\n background: #c92e28;\\n border-color: #c92e28;\\n}\\n.ant-btn-danger:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-danger:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-danger[disabled],\\n.ant-btn-danger[disabled]:hover,\\n.ant-btn-danger[disabled]:focus,\\n.ant-btn-danger[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-danger[disabled] > a:only-child,\\n.ant-btn-danger[disabled]:hover > a:only-child,\\n.ant-btn-danger[disabled]:focus > a:only-child,\\n.ant-btn-danger[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-danger[disabled] > a:only-child::after,\\n.ant-btn-danger[disabled]:hover > a:only-child::after,\\n.ant-btn-danger[disabled]:focus > a:only-child::after,\\n.ant-btn-danger[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-link {\\n color: var(--antd-link-color);\\n background: transparent;\\n border-color: transparent;\\n box-shadow: none;\\n}\\n.ant-btn-link > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-link > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-link:hover,\\n.ant-btn-link:focus {\\n color: #2893f7;\\n background: transparent;\\n border-color: #2893f7;\\n}\\n.ant-btn-link:hover > a:only-child,\\n.ant-btn-link:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-link:hover > a:only-child::after,\\n.ant-btn-link:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-link:active {\\n color: #0058c4;\\n background: transparent;\\n border-color: #0058c4;\\n}\\n.ant-btn-link:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-link:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-link[disabled],\\n.ant-btn-link[disabled]:hover,\\n.ant-btn-link[disabled]:focus,\\n.ant-btn-link[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-link[disabled] > a:only-child,\\n.ant-btn-link[disabled]:hover > a:only-child,\\n.ant-btn-link[disabled]:focus > a:only-child,\\n.ant-btn-link[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-link[disabled] > a:only-child::after,\\n.ant-btn-link[disabled]:hover > a:only-child::after,\\n.ant-btn-link[disabled]:focus > a:only-child::after,\\n.ant-btn-link[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-link:hover {\\n background: transparent;\\n}\\n.ant-btn-link:hover,\\n.ant-btn-link:focus,\\n.ant-btn-link:active {\\n border-color: transparent;\\n}\\n.ant-btn-link[disabled],\\n.ant-btn-link[disabled]:hover,\\n.ant-btn-link[disabled]:focus,\\n.ant-btn-link[disabled]:active {\\n color: var(--text-color-disabled);\\n background: transparent;\\n border-color: transparent;\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-link[disabled] > a:only-child,\\n.ant-btn-link[disabled]:hover > a:only-child,\\n.ant-btn-link[disabled]:focus > a:only-child,\\n.ant-btn-link[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-link[disabled] > a:only-child::after,\\n.ant-btn-link[disabled]:hover > a:only-child::after,\\n.ant-btn-link[disabled]:focus > a:only-child::after,\\n.ant-btn-link[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-text {\\n color: var(--antd-text-color);\\n background: transparent;\\n border-color: transparent;\\n box-shadow: none;\\n}\\n.ant-btn-text > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-text > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-text:hover,\\n.ant-btn-text:focus {\\n color: #2893f7;\\n background: transparent;\\n border-color: #2893f7;\\n}\\n.ant-btn-text:hover > a:only-child,\\n.ant-btn-text:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-text:hover > a:only-child::after,\\n.ant-btn-text:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-text:active {\\n color: #0058c4;\\n background: transparent;\\n border-color: #0058c4;\\n}\\n.ant-btn-text:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-text:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-text[disabled],\\n.ant-btn-text[disabled]:hover,\\n.ant-btn-text[disabled]:focus,\\n.ant-btn-text[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-text[disabled] > a:only-child,\\n.ant-btn-text[disabled]:hover > a:only-child,\\n.ant-btn-text[disabled]:focus > a:only-child,\\n.ant-btn-text[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-text[disabled] > a:only-child::after,\\n.ant-btn-text[disabled]:hover > a:only-child::after,\\n.ant-btn-text[disabled]:focus > a:only-child::after,\\n.ant-btn-text[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-text:hover,\\n.ant-btn-text:focus {\\n color: var(--antd-text-color);\\n background: rgba(0, 0, 0, 0.018);\\n border-color: transparent;\\n}\\n.ant-btn-text:active {\\n color: var(--antd-text-color);\\n background: rgba(0, 0, 0, 0.028);\\n border-color: transparent;\\n}\\n.ant-btn-text[disabled],\\n.ant-btn-text[disabled]:hover,\\n.ant-btn-text[disabled]:focus,\\n.ant-btn-text[disabled]:active {\\n color: var(--text-color-disabled);\\n background: transparent;\\n border-color: transparent;\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-text[disabled] > a:only-child,\\n.ant-btn-text[disabled]:hover > a:only-child,\\n.ant-btn-text[disabled]:focus > a:only-child,\\n.ant-btn-text[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-text[disabled] > a:only-child::after,\\n.ant-btn-text[disabled]:hover > a:only-child::after,\\n.ant-btn-text[disabled]:focus > a:only-child::after,\\n.ant-btn-text[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous {\\n color: #ff4d4f;\\n background: var(--antd-btn-default-bg);\\n border-color: #ff4d4f;\\n}\\n.ant-btn-dangerous > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous:hover,\\n.ant-btn-dangerous:focus {\\n color: #ff7875;\\n background: var(--antd-btn-default-bg);\\n border-color: #ff7875;\\n}\\n.ant-btn-dangerous:hover > a:only-child,\\n.ant-btn-dangerous:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous:hover > a:only-child::after,\\n.ant-btn-dangerous:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous:active {\\n color: #d9363e;\\n background: var(--antd-btn-default-bg);\\n border-color: #d9363e;\\n}\\n.ant-btn-dangerous:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous[disabled],\\n.ant-btn-dangerous[disabled]:hover,\\n.ant-btn-dangerous[disabled]:focus,\\n.ant-btn-dangerous[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous[disabled] > a:only-child,\\n.ant-btn-dangerous[disabled]:hover > a:only-child,\\n.ant-btn-dangerous[disabled]:focus > a:only-child,\\n.ant-btn-dangerous[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous[disabled] > a:only-child::after,\\n.ant-btn-dangerous[disabled]:hover > a:only-child::after,\\n.ant-btn-dangerous[disabled]:focus > a:only-child::after,\\n.ant-btn-dangerous[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-primary {\\n color: #fff;\\n background: #f0493c;\\n border-color: #f0493c;\\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\\n}\\n.ant-btn-dangerous.ant-btn-primary > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-primary > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-primary:hover,\\n.ant-btn-dangerous.ant-btn-primary:focus {\\n color: #fff;\\n background: #fc7668;\\n border-color: #fc7668;\\n}\\n.ant-btn-dangerous.ant-btn-primary:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-primary:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-primary:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-primary:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-primary:active {\\n color: #fff;\\n background: #c92e28;\\n border-color: #c92e28;\\n}\\n.ant-btn-dangerous.ant-btn-primary:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-primary:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-primary[disabled],\\n.ant-btn-dangerous.ant-btn-primary[disabled]:hover,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:focus,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-primary[disabled] > a:only-child,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:focus > a:only-child,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-primary[disabled] > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:focus > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-primary[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link {\\n color: #ff4d4f;\\n background: transparent;\\n border-color: transparent;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-link > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link:hover,\\n.ant-btn-dangerous.ant-btn-link:focus {\\n color: #2893f7;\\n background: transparent;\\n border-color: #2893f7;\\n}\\n.ant-btn-dangerous.ant-btn-link:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-link:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link:active {\\n color: #0058c4;\\n background: transparent;\\n border-color: #0058c4;\\n}\\n.ant-btn-dangerous.ant-btn-link:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link[disabled],\\n.ant-btn-dangerous.ant-btn-link[disabled]:hover,\\n.ant-btn-dangerous.ant-btn-link[disabled]:focus,\\n.ant-btn-dangerous.ant-btn-link[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child,\\n.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child,\\n.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link:hover,\\n.ant-btn-dangerous.ant-btn-link:focus {\\n color: #ff7875;\\n background: transparent;\\n border-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-link:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-link:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link:active {\\n color: #d9363e;\\n background: transparent;\\n border-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-link:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-link[disabled],\\n.ant-btn-dangerous.ant-btn-link[disabled]:hover,\\n.ant-btn-dangerous.ant-btn-link[disabled]:focus,\\n.ant-btn-dangerous.ant-btn-link[disabled]:active {\\n color: var(--text-color-disabled);\\n background: transparent;\\n border-color: transparent;\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child,\\n.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child,\\n.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text {\\n color: #ff4d4f;\\n background: transparent;\\n border-color: transparent;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-text > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text:hover,\\n.ant-btn-dangerous.ant-btn-text:focus {\\n color: #2893f7;\\n background: transparent;\\n border-color: #2893f7;\\n}\\n.ant-btn-dangerous.ant-btn-text:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-text:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text:active {\\n color: #0058c4;\\n background: transparent;\\n border-color: #0058c4;\\n}\\n.ant-btn-dangerous.ant-btn-text:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text[disabled],\\n.ant-btn-dangerous.ant-btn-text[disabled]:hover,\\n.ant-btn-dangerous.ant-btn-text[disabled]:focus,\\n.ant-btn-dangerous.ant-btn-text[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child,\\n.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child,\\n.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text:hover,\\n.ant-btn-dangerous.ant-btn-text:focus {\\n color: #ff7875;\\n background: rgba(0, 0, 0, 0.018);\\n border-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-text:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-text:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text:active {\\n color: #d9363e;\\n background: rgba(0, 0, 0, 0.028);\\n border-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-text:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-dangerous.ant-btn-text[disabled],\\n.ant-btn-dangerous.ant-btn-text[disabled]:hover,\\n.ant-btn-dangerous.ant-btn-text[disabled]:focus,\\n.ant-btn-dangerous.ant-btn-text[disabled]:active {\\n color: var(--text-color-disabled);\\n background: transparent;\\n border-color: transparent;\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child,\\n.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child,\\n.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child,\\n.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child::after,\\n.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-icon-only {\\n width: 32px;\\n height: 32px;\\n padding: 2.4px 0;\\n font-size: 16px;\\n border-radius: 6px;\\n vertical-align: -1px;\\n}\\n.ant-btn-icon-only > * {\\n font-size: 16px;\\n}\\n.ant-btn-icon-only.ant-btn-lg {\\n width: 40px;\\n height: 40px;\\n padding: 4.9px 0;\\n font-size: 18px;\\n border-radius: 6px;\\n}\\n.ant-btn-icon-only.ant-btn-lg > * {\\n font-size: 18px;\\n}\\n.ant-btn-icon-only.ant-btn-sm {\\n width: 28px;\\n height: 28px;\\n padding: 2px 0;\\n font-size: 14px;\\n border-radius: 6px;\\n}\\n.ant-btn-icon-only.ant-btn-sm > * {\\n font-size: 14px;\\n}\\n.ant-btn-round {\\n height: 32px;\\n padding: 4px 16px;\\n font-size: 14px;\\n border-radius: 32px;\\n}\\n.ant-btn-round.ant-btn-lg {\\n height: 40px;\\n padding: 6.4px 20px;\\n font-size: 16px;\\n border-radius: 40px;\\n}\\n.ant-btn-round.ant-btn-sm {\\n height: 28px;\\n padding: 2px 14px;\\n font-size: 14px;\\n border-radius: 28px;\\n}\\n.ant-btn-round.ant-btn-icon-only {\\n width: auto;\\n}\\n.ant-btn-circle {\\n min-width: 32px;\\n padding-right: 0;\\n padding-left: 0;\\n text-align: center;\\n border-radius: 50%;\\n}\\n.ant-btn-circle.ant-btn-lg {\\n min-width: 40px;\\n border-radius: 50%;\\n}\\n.ant-btn-circle.ant-btn-sm {\\n min-width: 28px;\\n border-radius: 50%;\\n}\\n.ant-btn::before {\\n position: absolute;\\n top: -1px;\\n right: -1px;\\n bottom: -1px;\\n left: -1px;\\n z-index: 1;\\n display: none;\\n background: var(--antd-component-background);\\n border-radius: inherit;\\n opacity: 0.35;\\n transition: opacity 0.2s;\\n content: '';\\n pointer-events: none;\\n}\\n.ant-btn .anticon {\\n transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-btn .anticon.anticon-plus > svg,\\n.ant-btn .anticon.anticon-minus > svg {\\n shape-rendering: optimizeSpeed;\\n}\\n.ant-btn.ant-btn-loading {\\n position: relative;\\n}\\n.ant-btn.ant-btn-loading:not([disabled]) {\\n pointer-events: none;\\n}\\n.ant-btn.ant-btn-loading::before {\\n display: block;\\n}\\n.ant-btn > .ant-btn-loading-icon {\\n transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-btn > .ant-btn-loading-icon .anticon {\\n padding-right: 8px;\\n animation: none;\\n}\\n.ant-btn > .ant-btn-loading-icon .anticon svg {\\n animation: loadingCircle 1s infinite linear;\\n}\\n.ant-btn > .ant-btn-loading-icon:only-child .anticon {\\n padding-right: 0;\\n}\\n.ant-btn-group {\\n position: relative;\\n display: inline-flex;\\n}\\n.ant-btn-group > .ant-btn,\\n.ant-btn-group > span > .ant-btn {\\n position: relative;\\n}\\n.ant-btn-group > .ant-btn:hover,\\n.ant-btn-group > span > .ant-btn:hover,\\n.ant-btn-group > .ant-btn:focus,\\n.ant-btn-group > span > .ant-btn:focus,\\n.ant-btn-group > .ant-btn:active,\\n.ant-btn-group > span > .ant-btn:active {\\n z-index: 2;\\n}\\n.ant-btn-group > .ant-btn[disabled],\\n.ant-btn-group > span > .ant-btn[disabled] {\\n z-index: 0;\\n}\\n.ant-btn-group .ant-btn-icon-only {\\n font-size: 14px;\\n}\\n.ant-btn-group-lg > .ant-btn,\\n.ant-btn-group-lg > span > .ant-btn {\\n height: 40px;\\n padding: 6.4px 15px;\\n font-size: 16px;\\n border-radius: 0;\\n}\\n.ant-btn-group-lg .ant-btn.ant-btn-icon-only {\\n width: 40px;\\n height: 40px;\\n padding-right: 0;\\n padding-left: 0;\\n}\\n.ant-btn-group-sm > .ant-btn,\\n.ant-btn-group-sm > span > .ant-btn {\\n height: 28px;\\n padding: 2px 7px;\\n font-size: 14px;\\n border-radius: 0;\\n}\\n.ant-btn-group-sm > .ant-btn > .anticon,\\n.ant-btn-group-sm > span > .ant-btn > .anticon {\\n font-size: 14px;\\n}\\n.ant-btn-group-sm .ant-btn.ant-btn-icon-only {\\n width: 28px;\\n height: 28px;\\n padding-right: 0;\\n padding-left: 0;\\n}\\n.ant-btn-group .ant-btn + .ant-btn,\\n.ant-btn + .ant-btn-group,\\n.ant-btn-group span + .ant-btn,\\n.ant-btn-group .ant-btn + span,\\n.ant-btn-group > span + span,\\n.ant-btn-group + .ant-btn,\\n.ant-btn-group + .ant-btn-group {\\n margin-left: -1px;\\n}\\n.ant-btn-group .ant-btn-primary + .ant-btn:not(.ant-btn-primary):not([disabled]) {\\n border-left-color: transparent;\\n}\\n.ant-btn-group .ant-btn {\\n border-radius: 0;\\n}\\n.ant-btn-group > .ant-btn:first-child,\\n.ant-btn-group > span:first-child > .ant-btn {\\n margin-left: 0;\\n}\\n.ant-btn-group > .ant-btn:only-child {\\n border-radius: 6px;\\n}\\n.ant-btn-group > span:only-child > .ant-btn {\\n border-radius: 6px;\\n}\\n.ant-btn-group > .ant-btn:first-child:not(:last-child),\\n.ant-btn-group > span:first-child:not(:last-child) > .ant-btn {\\n border-top-left-radius: 6px;\\n border-bottom-left-radius: 6px;\\n}\\n.ant-btn-group > .ant-btn:last-child:not(:first-child),\\n.ant-btn-group > span:last-child:not(:first-child) > .ant-btn {\\n border-top-right-radius: 6px;\\n border-bottom-right-radius: 6px;\\n}\\n.ant-btn-group-sm > .ant-btn:only-child {\\n border-radius: 6px;\\n}\\n.ant-btn-group-sm > span:only-child > .ant-btn {\\n border-radius: 6px;\\n}\\n.ant-btn-group-sm > .ant-btn:first-child:not(:last-child),\\n.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {\\n border-top-left-radius: 6px;\\n border-bottom-left-radius: 6px;\\n}\\n.ant-btn-group-sm > .ant-btn:last-child:not(:first-child),\\n.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {\\n border-top-right-radius: 6px;\\n border-bottom-right-radius: 6px;\\n}\\n.ant-btn-group > .ant-btn-group {\\n float: left;\\n}\\n.ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn {\\n border-radius: 0;\\n}\\n.ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child {\\n padding-right: 8px;\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n.ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child {\\n padding-left: 8px;\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n.ant-btn-rtl.ant-btn-group .ant-btn + .ant-btn,\\n.ant-btn-rtl.ant-btn + .ant-btn-group,\\n.ant-btn-rtl.ant-btn-group span + .ant-btn,\\n.ant-btn-rtl.ant-btn-group .ant-btn + span,\\n.ant-btn-rtl.ant-btn-group > span + span,\\n.ant-btn-rtl.ant-btn-group + .ant-btn,\\n.ant-btn-rtl.ant-btn-group + .ant-btn-group,\\n.ant-btn-group-rtl.ant-btn-group .ant-btn + .ant-btn,\\n.ant-btn-group-rtl.ant-btn + .ant-btn-group,\\n.ant-btn-group-rtl.ant-btn-group span + .ant-btn,\\n.ant-btn-group-rtl.ant-btn-group .ant-btn + span,\\n.ant-btn-group-rtl.ant-btn-group > span + span,\\n.ant-btn-group-rtl.ant-btn-group + .ant-btn,\\n.ant-btn-group-rtl.ant-btn-group + .ant-btn-group {\\n margin-right: -1px;\\n margin-left: auto;\\n}\\n.ant-btn-group.ant-btn-group-rtl {\\n direction: rtl;\\n}\\n.ant-btn-group-rtl.ant-btn-group > .ant-btn:first-child:not(:last-child),\\n.ant-btn-group-rtl.ant-btn-group > span:first-child:not(:last-child) > .ant-btn {\\n border-top-left-radius: 0;\\n border-top-right-radius: 6px;\\n border-bottom-right-radius: 6px;\\n border-bottom-left-radius: 0;\\n}\\n.ant-btn-group-rtl.ant-btn-group > .ant-btn:last-child:not(:first-child),\\n.ant-btn-group-rtl.ant-btn-group > span:last-child:not(:first-child) > .ant-btn {\\n border-top-left-radius: 6px;\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 6px;\\n}\\n.ant-btn-group-rtl.ant-btn-group-sm > .ant-btn:first-child:not(:last-child),\\n.ant-btn-group-rtl.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {\\n border-top-left-radius: 0;\\n border-top-right-radius: 6px;\\n border-bottom-right-radius: 6px;\\n border-bottom-left-radius: 0;\\n}\\n.ant-btn-group-rtl.ant-btn-group-sm > .ant-btn:last-child:not(:first-child),\\n.ant-btn-group-rtl.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {\\n border-top-left-radius: 6px;\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 6px;\\n}\\n.ant-btn:focus > span,\\n.ant-btn:active > span {\\n position: relative;\\n}\\n.ant-btn > .anticon + span,\\n.ant-btn > span + .anticon {\\n margin-left: 8px;\\n}\\n.ant-btn-background-ghost {\\n color: var(--antd-component-background);\\n background: transparent !important;\\n border-color: var(--antd-component-background);\\n}\\n.ant-btn-background-ghost.ant-btn-primary {\\n color: #0071eb;\\n background: transparent;\\n border-color: #0071eb;\\n text-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-primary > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-primary > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-primary:hover,\\n.ant-btn-background-ghost.ant-btn-primary:focus {\\n color: #2893f7;\\n background: transparent;\\n border-color: #2893f7;\\n}\\n.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-primary:active {\\n color: #0058c4;\\n background: transparent;\\n border-color: #0058c4;\\n}\\n.ant-btn-background-ghost.ant-btn-primary:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-primary:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-primary[disabled],\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:hover,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:focus,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-danger {\\n color: #f0493c;\\n background: transparent;\\n border-color: #f0493c;\\n text-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-danger > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-danger > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-danger:hover,\\n.ant-btn-background-ghost.ant-btn-danger:focus {\\n color: #fc7668;\\n background: transparent;\\n border-color: #fc7668;\\n}\\n.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-danger:active {\\n color: #c92e28;\\n background: transparent;\\n border-color: #c92e28;\\n}\\n.ant-btn-background-ghost.ant-btn-danger:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-danger:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-danger[disabled],\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:hover,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:focus,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous {\\n color: #f0493c;\\n background: transparent;\\n border-color: #f0493c;\\n text-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous:hover,\\n.ant-btn-background-ghost.ant-btn-dangerous:focus {\\n color: #fc7668;\\n background: transparent;\\n border-color: #fc7668;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous:active {\\n color: #c92e28;\\n background: transparent;\\n border-color: #c92e28;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled],\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled] > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled] > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link {\\n color: #f0493c;\\n background: transparent;\\n border-color: transparent;\\n text-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus {\\n color: #fc7668;\\n background: transparent;\\n border-color: transparent;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active {\\n color: #c92e28;\\n background: transparent;\\n border-color: transparent;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled],\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active {\\n color: var(--text-color-disabled);\\n background: var(--antd-background-color-base);\\n border-color: var(--antd-border-color-base);\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {\\n color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background: transparent;\\n content: '';\\n}\\n.ant-btn-two-chinese-chars::first-letter {\\n letter-spacing: 0.34em;\\n}\\n.ant-btn-two-chinese-chars > *:not(.anticon) {\\n margin-right: -0.34em;\\n letter-spacing: 0.34em;\\n}\\n.ant-btn-block {\\n width: 100%;\\n}\\n.ant-btn:empty {\\n display: inline-block;\\n width: 0;\\n visibility: hidden;\\n content: '\\\\a0';\\n}\\na.ant-btn {\\n padding-top: 0.1px;\\n line-height: 30px;\\n}\\na.ant-btn-lg {\\n line-height: 38px;\\n}\\na.ant-btn-sm {\\n line-height: 26px;\\n}\\n.ant-btn-rtl {\\n direction: rtl;\\n}\\n.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child),\\n.ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary {\\n border-right-color: #2893f7;\\n border-left-color: var(--antd-border-color-base);\\n}\\n.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],\\n.ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {\\n border-right-color: var(--antd-border-color-base);\\n border-left-color: #2893f7;\\n}\\n.ant-btn-rtl.ant-btn > .ant-btn-loading-icon .anticon {\\n padding-right: 0;\\n padding-left: 8px;\\n}\\n.ant-btn > .ant-btn-loading-icon:only-child .anticon {\\n padding-right: 0;\\n padding-left: 0;\\n}\\n.ant-btn-rtl.ant-btn > .anticon + span,\\n.ant-btn-rtl.ant-btn > span + .anticon {\\n margin-right: 8px;\\n margin-left: 0;\\n}\\n.ant-btn {\\n transition: initial;\\n}\\n.ant-btn-primary {\\n background-image: linear-gradient(45deg, #0071eb 0%, #65b2ff 100%);\\n background-origin: border-box;\\n border-color: transparent;\\n text-shadow: none;\\n box-shadow: none;\\n}\\n.ant-btn-primary[disabled] {\\n background-image: none;\\n}\\n.ant-btn-primary:hover,\\n.ant-btn-primary:focus {\\n background-color: var(--bg-color-button-primary-hover);\\n border-color: var(--bg-color-button-primary-hover);\\n}\\n.ant-btn-primary.active,\\n.ant-btn-primary:active {\\n background-color: var(--bg-color-button-primary-pressed);\\n border-color: var(--bg-color-button-primary-pressed);\\n}\\n.ant-btn-danger {\\n background-image: linear-gradient(45deg, #f0493c 0%, #fc796f 100%);\\n background-origin: border-box;\\n border-color: transparent;\\n}\\n.ant-btn-danger[disabled] {\\n background-image: none;\\n}\\n.ant-btn-danger:hover,\\n.ant-btn-danger:focus {\\n background-color: var(--bg-color-button-danger-hover);\\n border-color: var(--bg-color-button-danger-hover);\\n}\\n.ant-btn-danger.active,\\n.ant-btn-danger:active {\\n background-color: var(--bg-color-button-danger-pressed);\\n border-color: var(--bg-color-button-danger-pressed);\\n}\\n.ant-btn-default:hover,\\n.ant-btn-default:focus {\\n color: var(--antd-btn-default-hover-color);\\n border-color: var(--antd-btn-default-hover-border-color);\\n}\\n.ant-btn-default.active,\\n.ant-btn-default:active {\\n color: var(--antd-btn-default-active-color);\\n border-color: var(--antd-btn-default-active-border-color);\\n}\\n.ant-btn-link:hover,\\n.ant-btn-link:focus {\\n color: var(--bg-color-button-link-hover);\\n}\\n.ant-btn-link.active,\\n.ant-btn-link:active {\\n color: var(--bg-color-button-link-pressed);\\n}\\n.ant-btn-text {\\n color: var(--antd-btn-default-color);\\n}\\n.ant-btn-text:hover,\\n.ant-btn-text:focus {\\n color: var(--bg-color-button-link-hover);\\n background-color: transparent;\\n}\\n.ant-btn-text.active,\\n.ant-btn-text:active {\\n color: var(--bg-color-button-link-pressed);\\n background-color: transparent;\\n}\\n.ant-btn-circle.ant-btn-sm {\\n min-width: 28px;\\n}\\nhtml[data-theme=\\\"dark\\\"] .ant-btn-primary {\\n background-image: none;\\n}\\n.wrapper .ant-modal-footer .ant-btn:first-child {\\n display: none;\\n}\\n.footer-container {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n}\\n.fullscreen .ant-modal {\\n margin: 0;\\n padding: 0;\\n max-width: none;\\n}\\n.fullscreen .ant-modal-content {\\n border-radius: 0;\\n}\\n.fullscreen .ant-modal-body {\\n overflow: auto;\\n}\\n.headerExtra {\\n display: inline-flex;\\n margin-left: 20px;\\n align-items: center;\\n height: 22px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIsAAAAjCAYAAACkVvl8AAAYQklEQVR4Xu2ce5heVXXGf+ubmRAISAi5IuAN663YUtuqra3VipSiUgFRvCAKoqUGQ7iINzDgrYgmGEUEBbyjgBbECyrVqqCVUiwKKqhAJSH3OwlhZr7V53dmn+Fk5vsmM4E+/sN+nnmSfHO+c/Ze613vetfa+ySYyHhZ9jBn7bPpGZgHcQDJL8n2YqbOvI4FMdD1Vm9aNpPJvW+APIrwqryMgcFPsHjOyok8/pFr/7AWqFw37jF3+RPojU9BPBOYDDwA3AIDx7Bw9m0QOepepyybwkDPPwMnAXOq3wdLida5bNp6IRfutXncz3/kwj+oBcYPlpflJPZe+SqIDwF7NGa9HjidgemXsDi2jlrN/NX70B68hoinj/jdbWTvISza464/qAUeefi4LTB+sMzNnehZ8Xqi532QU4efkGyAeCfrNl7EpY+7f9STT1yzLz3tb5D5VGIoCZEkwR3k4MEsmv27cc92jAszswfYG9gZ+F1EyHpkps+cVX7uALYAk4CBiBgc77Mzc7dy/3siYmP9vczsBfbxfsB9wH7A7yPi3vHee+R1meka/NkcEaNtOrSu3YGnAsuAuyOi3el5mTkT2Be4PSI2dLlGG00v67ijub7m9eMHCxmctOypZM8XiPhjoAW0IW6HfA0Lp9/UMQ2dtnI3HuBUgnmABndo7IX0cS7nzBg2/I4at4DCxZ4PPBZ4eUTcWT6fAswHDgVOAH4NHAmsAv49ImTGMUdmmnLfDBwFnBwR32+AxeddDNwGfBE4F1gOnAZo+NGpecTTMrOvAFiAPA74O+BJ5X4/FBsR0d/8WmY+FzgP+Cbwvk4OzkyD4lWAMuBM4Fud5lPW9zrg9cA7gO90um4CYPFxOYkNK18DfABC56yD1ru5b+tF3bVHBnPXP56e/s8T/EVhlpsY7DuKxVN/uz1Hjff3mamRvzsEYA6KiIqxSgR+EHgp8Frgf4AvAI8HLgIujAijs+MozPRk4CslQA6LiFsbrPUi7wFcqdMKMHXQT4BTI+I3XaJ5l8J2ztu5yAD7A88qwFH8vxv4FfBnwH8WxqzAl5kHA5cCXwNOiYh1HRhKsLypAPcU4MudGKiAyoA6sQTFVx86WJzNyWsfQ3tAwx1g5EAewsKZHQ0yPPmTcmdi9XwyT4Nok3E26zac3zFtjRcdjeuKQ/8W+JzRU5xUGa+A5WzgiCKy/w14fqWz4CnF2OcAd9apa0QEy4ZG5TGA9/lElUiHQCkTvKcAUUPfAJii3wAYqV8C1HimJ6/fYFrJTFn5hQVcgsT7yYAyjPdwDd8xvQB/Xe4hE75N0Jg+M/Mg4JPAVbJBJ4YsjPVK4O3AWyLiWyVdzwZ2aqzT5xpIEoHr8dnNYbpeOzFm8etz751BT+8nCV5ExnXk4Gs4b5a0O/aYt+r5ROpMTfNKFs0YpvLtfXV7v89MDf1W4LgSRV+s9UjRGhrgMOCNhbZ1lulD48sMPzNF1WxUP6+A8C+NSGAJ8IqSQk1pBojONLL/CLix6BbTqjrjH6u6D35egLIWWGzqK//+G61Z7nc7cGDRO4f7nVqrFM3xFuDYkjplCJ1pqpJZBP87m2ApASIbTQNeUMD8aeDbZU4GyhMKSF2u83xU+VlTwF2bwd8ZeIsnDpaTl06n3XsBxKEk32Bw4Lhx9UvesuyZtHquqCY22DqSj+xpBD0sIzP3KmlA47wE+F9A4Wk0ywzSuZH4cuAXxTg+26g2n1upqamszLbWFJyZRuBHgWcUx14LvLqw0oeHmJVLSpRuAhTZPlfxqcBW5JpuBKfayDQlxfcXneDc6v6U0W+qfFFEmHqGR2ZVUMgQgtvnqJ8UqzLXN5rMUgD+nMJGzn/XYgOvN7UZGHUxUNtIHHit9tB2AsbP/PEa/33xxMEyb+UcIr8E4YRuIVov5sN7/n5Mrx//X31MedzR0Jbu22R7HktmXsbl469Gut2/GOfvCyXLAB8BjM5Hlwg3b5vf1Qb+Xp2k86RhGUBW0lCr1QTAZeb/UpEo+IxCBaxi0nuqdzSe4PJ3ppOPlRQoQHzOZwqQZASdpJ0F7mqFaElDAsA05lBAnwr8Q0l3gtDUtKbBMF7rus4qOkaWWlRYZps0VPSb7OczlAv6SjZSr8mAleYq8/I5AsIgOL4wtKK6iQ3nvql8kMFb1z6KTb29bNh8P5+dbY4dPc7MFhvWvBDa5koNtwJyLvfMuHJMx5+4ZF96+j4OcVBlguBaWr0n8KE9pPEOozGf/k1bxmrcZaY9H3WBhjbNyA4KV8tZc63AUIwbTTrZ/OzfXaMVhtfUEWRUHV1AY7XhOmUrgbKiPMNKUP0iCAWFzCFoLlI8ZqZlqinW6ujVXYSnTpQlBJpDkAnYGZa4BShSv2C42blGxOqSbmVIgW66MzC+3iEN1cHgOgWYrCW4/8MAGSlyS8Bpu5PVW81qr+mcwKifvO8z6WkdAbkn7fwF0fclYtNyFu5jT2JoVJ3YeDrRWkTyDEKDywwpWucz0LqZadM2saBR78+9Yyd695gOKWKNMunZsZGM8xmMj7Js2r0PAi2DeXftTmvyAWTfodV8ZK8+Ps850+8dWZqXRepUnSbdapTLS0UhiGwS6mw/F6ZGo+WveuW99kMKeOookqavL9eqf9RBOkbqN6cLNMtz2cU/7WTbgRZM6jGd/pjyd1lKB+l0ny04ZRYB5dwUzYcUe+hce0TOw9Ql46kDFbpqH4PqTCur0tfxOtnUoBilWWqXlWvVOuoc9ZHVomtwLQZQaX9UnynI1WRWjpbjAs15K6xXmTqDk1cfyODgOUQ8iaSXqBb1E2h9C/LHDAyuptUznVbbyb0CwkaQN6rHIMntROsayOshfsPAwP0Es4jW/rTiOSQHE6nTGtQWayGvIVpfI/Ln9LcH6eEJZBxI8E/V1kA1n9hItr9Ib/sszp1tdFejAEX2UFNoUOf9geI4jV0bQmBodAWpzvMaxZ9R7Wfb0K16paSJJ5ZKxPtYOht5aglZRW1hSapDbcLJUDUoZBy3NfzM30vhGl0H6PC15f4GginQ4XwEn078fGEMWdAAkDVNI7LCO9VcZY51NTQWWJyLoHfdCwqYfYbrUduZ/mr2dS6mOu1oANSaRY3nd28MTlrxFQgrAtFVRsUYG0kjKrdC7EQMq+UmMz3498zNlWOJLZADZEwmqirFHyfdaTxA5vohQKRd3SkQLkZqb44lkMexcMa1NbtkpoZ0v8lcX3di1UQfiYjhNJqZf6KoLAJYBrAnIuBf0K0H0gCjNtHxsoDVh8+S9jW0kenQgQbP0gIK565ukdVkhLrM9nvnjCxxS2rx/jYMddY9wLtKQ851GRCKcCNfcMsQilSrnE9th1kE+ssAxbjgk9FMkfaAZFttqI4T0AptQeJnahh/XlzWqKC+UrD8gIznDLfiHwTMAOQmMvuJ6CPZbSj1jDESASNYfLgA0XANEHb87haGgKZRNVYdbU0groaeN7Fk2lfrlFUqlQuK0xRkphcrk3NrsBQatgIy5Qgk+0OmLEvdAyNCIdl1lLLVVGQwSflGf11mmqIVkZbllqU6zjSkZrFK0bGmXktmhwBe39QLjf6QczIN1RWVqUhx/aPCIgJTMHk/2U220LZWl4JwVJ+l9FMEuv0T05C+004C0fv/awkAG4iW9w79JsAcrkMgCRqZ/tZg/so30ubtRPVL40A0LyfiBqLtze8l2QvCNGSDyHQycqyD/BUZN0DeSnIfEXNKx9bvKIZ9aGPEANm+m+DrRN5E2+f2PI1In2Oru9Y3Iv56BtrHsnjWcMe3lJ5eJ/1b+ir2dNoHG2CxNJVCbe/bKLup0LwpZkywZFZ6SecY1dcV46pfTHmmNsWnDvZPny2jqUfULN8bS+DWRihg9Lve08i3ctLmVa+lpDr3uUyNAsZ0YnNRR/8IuLqkWPssTTZ13drRuVv2G7iC3Wcp4h1/VWyhgFbUqk2GIDC0vWFHV+a2Enyv+0rBvLVTafUfTbaOKxuEP6fNx9k6+FNmzdrAbfQzhT52XTWN3jycCM+y7A3VvoN5WfpdTKv3CjauWcfaLVtYubLNAfv10eqZQn/vk2kJxkq7SHHGpowlsM6GzbeyefV9zHlGsmXVzrT7pjPYfwSZRxOxO8nNDA6+n2U/uJHLjxy18Vfyv6yiFrF6aTKLFYbRIZVbLQksNYE6oytYSsTbJNPAAsLUYFoRLEaehtWYBoBpzV6Hf+owU5xdXvemrC5kFq+zz7K00Sz0M6NaZrqmsIqdZYsB2dA12TG+tLEpahUlGG0QyhoypSWxIDCFOC/nKfhkUwN7qP6EoyPChmANCINBwe86TW3VVkCxp5+5HtsJit5qj2tI3B2/dBd2zn2ISaaAe1kyfUXHUri6ru8FtOIwyH1JlpLtr9If13L+TCm0w8jgzcsfS1/rVaRCTVvn9fT2fY5zd7+r4+ajz9m1vTftnXblgVzKjI+tYMGCbruqGt2GlcYZBktxuHtRUrUVm7Tuw61k7F4Og6XsjchSjl/rnMz889LME2jaSWeoFRSat5RKSnpWgBo4gsE5CihLYANJ5/mZ3/d78yNiZXGIJfhnC5B0iJWR4tl7+iw/s3GpwPSepmifo/Odkx1py3zFvEFgKW268TmuWwFsZSd43YpwY/OqOg0W+/xpsYdBaJ/F/ovrNr3L7DLZ1fV3Jt6U87TczCVT6dtpEv07PcCtN63n+8/rfkquho+l9+bW0K7zLu2NnNull9MZcV0/LbrEKLQ72gSLzzIyBZKGklGMtE5gMUpNYQbLKyLi9wVAXl+L8/oIgkEh6ASpekBmMALtj3iNRnYz0OtMe34mYBSWnyxNOdOyjbznlSabWstmm4LSNGNqsEISUDbVdLgAcS510Lg+BWtVkpdm49sj4sYyd6+VZdzvcSfZn8ubxzLKdQLujDJXA0uWcX7unts7Gj6cNnGw6LZj7pzM1KmTWbfu/vFvBrr7vGY3dolg8h4bt+nHTBAgzctHgEWRWWmWzFTHSNMu9qUR8dvM9FxLJ7Co16RzAWCVVB1vGPEcBaLOsdJ5WtEUCmVB6nPN7XWfxed6FMIqoha4zsPzKeoPQeC+jqW1JbnAsr8h/QsYnS/wZTsLBNnEe8te9m/UMwpc2dIUZrXjd+z4Vud4HJkpIymGTYc2Dq8ceYan7J2ZUtVndZr3eq/dpjk7QbBUDn80PYOHEtbq+UsGeq9m8bQlHdNJPWubcz1Tn02LQ0h6yPwOMeP7LLRyemijAZb3F6dZ9cgQ/qnhZZcLym6vYPHMiQL1+RFRndLLTI8IKGKtYOy6Vhuj5d6W8moFKVst8exC+z5PQbqwVEkfK3s+3lttYAdXnaBwHQk85ycQbAKqh2QjRaupQ3FrxePc/dw5qVG0lalNtvDvso16TGCe0WSABlgEf71lUTUsRzCL7KTYt3EnAwtM05kAMwWuax5VmBhYTlr1aEjp6SDwNFdrM+S3Gdh6Kov3dtGjx5nZy/oVLyFa7yXZF3VSxj1knMXUPb/MggcjYUdgM4JZpHabdOZfI146P8a0UpxfC17ZwcaapbOMYUTrdFOV6cCI8hrTiQ60crBCMMIFmCnLSsTvyQju5spYMoQNLx2vg+2fyCymBKPWSuSuDtEtGBXoClMPbv24rKvV6dhEWYt9H0vuuik3fAqulM0CwWeqgZyHPwaKAPJ5inx1jz+u6welpPbfMpJp0/urYyz5t44fLMdnH1NW2eCxVFTA1WMF7fYJTJ15VccT/iesmM2k8OCTSv/BkdxET+/h3feHxgedcmZDcLizrNiUpnW8dGxlcUNjF9l5K97cWPzvInyNXg2vtrCXYbdXipeWzfcKSw9HaUyPIwgwKV8D2yjTyUakIlPn+HcdpbYwSuvehfOxOfiekftFZVfZILRiOzJsW2xnlPMsah1B+9YRRxRkN8teny9retZH9lBD2VC0P6QWEjim3Bp0pkoFrunTQHHuBpzd5xvGD5YTVuzK5DiFrPLfUAk8NNbTzjNYP+NCLu1wXnT+kn3Ivq9B2EltDKN94BAWzq4bQtuzT8ffF7BYgirgdKiLdX52W1X/w+V2EXRGrzSrbqhb2hrJvZ2Plh1nmUBjqU2sfDToxhFnb2UaKd6IFUxWHqYJQVQ310w3PkNBLFjsv3x75LnazGorxDJWp8osY4KlVDJ1u19W86hnrY1Mnx7qEkiKYlnCADKgFNTaxQDQ7qYwg2O5zFEYy7kaVAa3dq1BdffEwDIpTiYqsNRnab3/WoK30b/uUhY/cfTp/jev3IvevIIIc31z3A2DL36oYCkLFIiWmjbt7EOoFwTKqNdMCmAUqjrIP2UU95zcLBsu/0sa6KmNOBKpherds5HmFZlGbV2p1OduazBW0yw7vsMCtL5naflbldhA8zztdg+xZ6ZAtulm6/6KJgDLGm0POD/PqHiNP24ReJhLYMus2wjibYh/6CC6vRirMhlvYPxgsfQdbJ0EYRnaAEusIfJ0dpv+6Y76w/Mv5JWdwSKzzKnPVuwQsxSwuDCj2MhWg7gNv80B5x2++RhfLNWGUSrrjPtNgQ7A0w/OXxZQVG73XgXM+sG1diwUCmhMi/5esMqG2sojDx37Vh3mJtNU/h4/WHwVpHe1ee89UG2x1+N+UsHXezqL9hh1aJh5q54CeRVRqe7muP3hfBXk/wMMj9xzWwuMHyy+CjJv1XOJSvUPvVk4RK7uFt8Fva/jvqk3cGEjoufdN4fYcjqZxxHb7CSL6m/Sbh87rvO72/Fa6YhaOQyUfC67DHZ7DaNcH+Xgszbw+vZY0Vb2S9yfMVVZHWz3FY/xgq0wgBFvSjSSnZOM8bA9YwJzqVlOxpTlhhl6AmCxabxmX1oDitX9t92ljkEyf0bkYmh9l56BfvpjNsFriZYVQ5OJBNgGWvEucstF2xywGu+KGtc1zp7YILPcU5wpXn/YFH0NfaBTbNgJeFvjAsUDVPY2fjPGy1qWxPZsFJSf7fby10SXUIDiZqstercH7OsoVr/S7WWviT5jIteXoLDnoth+W/NluYmBxYpoUpxGVJto2x4lkGHIVRC3Ur24lTrPzujIIwdeeTsxcPjDpFfqLqXKXcWvkHYv5PX1+z1NY5WOpZWTu7K21s3p9lfswF7S5XUQqyMrDEWoAPNlrVFCtQFIAWgvw6rMvRtPyHXcEinOsdlnhSYg7fHYO1nQCeyNZxj5inRZujrJNhYoCigNJNc7fGqvg0apD7jbb3E745a61J8YWExFJ67cj574QjlaOfr7Q2nJBXQ7+yKQzqGnfd7DsT9URKZVgT0V+wc20ATDERFh2bvNKGCxfBQs9lI0uudUbOhd3AUsVhYCUIFoqfnNsZildIQ9B2PA2JNxB/d7nRxa0qZsYofYfof7Mx7SWtJN6Gam1wswqxtTlf0bq79ur7raN9L5MoZpzhLervaotzELeD0FqA3dsvAoxHkyzATBUr2V2GL9yoOIsDmnMSYwqlN3l0OczsLpdjgf8ihgcX/FyLQra6lng+6oLmCR6dx49Fil6zctyRxVg6sLWEyjfkcAaLwTPUDdbfKZqRN1uGde7fvYXT02IjzO0XFkpoC06edO9IfHKNmdsz0Wm4HOxU6zKdXgGFVyN95+sFHpW432ouwk+7LaqCoqMwXWvxRgyaLaybV8euJgcal2c3deeRgRZxKxH1Tv6m5vrCPzamgvYNGsO8fcS9renRq/L2AxEgSM0eOeiccV3D32aMJIZhEcHgewBWBU1q14T5D57vOokrIY3GpOZ6ptZLEVYwhoO8RuN3idxpbxnE/X/klmmoK8/2UCYeQmXiP9OF+rUg912VTT9qa8efW2RnPBjfe0ZUYB/9Oy7o4FQGFeNx19Cc6Go81CmeiMHQNLDZgpK59FxlzC5k9OHTp32yjHPXUXVct5Oe28hIjPsGjGDv/vAp0wVByp8wWIXVjFrU06I63be8amKg826RibVjrUNvsocDWcZPS6cef1Cl03C+/t8qK5YHE+pjnv7bFM59P13e7SdbW5JwDO6iZuy3q9v8wucHW+IJQVR50pKtfbVHMrxALA1r2seHMXZqlPF9rtte3v9ohNvHfsOFgqK2Ywf83etNsq54Mh9ydiKlnlxa1ELoX4Hu28jo1xMxc/PP9jQge2cIPQHGvH0mdL5ebkjgeyMivxLY17wsxyWGFsZHb9v2JKhLpX5J6LKdRUN7zvNCKarW7sdLvzbVfWrqmVxVhpyD0ctZPO9GX9rjvy5cinTGE6clfbyP/EGP+lhszjvpcC3V6Y6ejs5lHKRlCYhmRE5+x+lXb1+gv+DzgfdSsrdYDZAAAAAElFTkSuQmCC\"","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"AE1K\");","module.exports = \"data:image/png;base64,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\"","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nimport ___CSS_LOADER_URL_IMPORT_0___ from \"../../images/developing.png\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".menuBar--1DhEWFbz {\\n z-index: 101;\\n position: fixed;\\n left: 0;\\n top: 0;\\n bottom: 0;\\n width: var(--menu-bar-width);\\n color: #fff;\\n background-color: #4e93ef;\\n box-shadow: 3px 0px 8px 0px rgba(218, 218, 218, 0.44);\\n transition: var(--launchpad-backdrop-transition);\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.menuBar--1DhEWFbz.developing--3LkZW4Yi {\\n background-position: 0 -55px;\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n background-repeat: repeat;\\n background-size: 148px 150px;\\n}\\n\\n.menu-bar-collapsed .menuBar--1DhEWFbz {\\n width: var(--menu-bar-collapsed-width);\\n}\\n\\n.first-rendered .menuBar--1DhEWFbz {\\n transition: width var(--menu-bar-collapse-transition-duration)\\n var(--menu-bar-collapse-transition-timing-function),\\n var(--launchpad-backdrop-transition);\\n}\\n\\n.launchpad-open .menuBar--1DhEWFbz {\\n filter: var(--launchpad-backdrop-filter);\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"menuBar\": \"menuBar--1DhEWFbz\",\n\t\"developing\": \"developing--3LkZW4Yi\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTE4cHgiIGhlaWdodD0iNDVweCIgdmlld0JveD0iMCAwIDUxOCA0NSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDx0aXRsZT7lj7M8L3RpdGxlPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDEuMDEzMDQzJSIgeTE9IjAlIiB4Mj0iLTAuNzYzNzYwMzc3JSIgeTI9IjAlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwNTE0MkQiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzQxODhFMiIgb2Zmc2V0PSI1MC4yMzEzMjYlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwNTE0MkQiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjUwJSIgeDI9IjEwMCUiIHkyPSI1MCUiIGlkPSJsaW5lYXJHcmFkaWVudC0yIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzQxODhFMiIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDUxNDJEIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgaWQ9Iumhtemdoi0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0i5qCH6aKY6KOF6aWwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTk0LjI3MzQxMSwgMS4wMDAwMDApIj4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IuefqeW9oiIgZmlsbD0iIzQxODhFMiIgcG9pbnRzPSI0OTkuNzY0MzQgMzIgMTAxMi4yNzM0MSAzMiAxMDA4LjIwMDQgMzYgNTAzLjI3MzQxMSAzNiI+PC9wb2x5Z29uPgogICAgICAgICAgICA8cG9seWxpbmUgaWQ9Iui3r+W+hC0xOSIgc3Ryb2tlPSJ1cmwoI2xpbmVhckdyYWRpZW50LTEpIiBzdHJva2Utd2lkdGg9IjIiIHBvaW50cz0iOSAxLjMwMDk1MTc5ZS0xMyA0NDAuMTU0OTYyIDAgNDY4LjA4MjUyMyAzNS42NTE4MzExIDQ4Ni42ODM3MzQgMzUuNjUxODMxMSA0OTIuOTk4OTkyIDQyLjQxNzg1MzQgMTAxNi4wMDQ0NiA0Mi40MTc4NTM0IDEwMjIuNzc4NSAzNS42NTE4MzExIDEwNDMuMTY2NjEgMzUuNjUxODMxMSAxMDc0Ljk5OTI1IDAgMTUxMS4yNzM0MSA0LjUyMDk1NDY0ZS0xMyI+PC9wb2x5bGluZT4KICAgICAgICAgICAgPHBhdGggZD0iTTEwODEuODk5MTMsMTYgTDEwNzAuNDk3ODQsMzYgTDEwNjMsMzYgTDEwNzQuMDM0NDUsMTYgTDEwODEuODk5MTMsMTYgWiBNMTEwMS42NjY2OCwxNiBMMTA5MC4yNjUzOSwzNiBMMTA4Mi43Njc1NCwzNiBMMTA5My44MDE5OSwxNiBMMTEwMS42NjY2OCwxNiBaIE0xMTIxLjQzNDIyLDE2IEwxMTEwLjAzMjkzLDM2IEwxMTAyLjUzNTA4LDM2IEwxMTEzLjU2OTUzLDE2IEwxMTIxLjQzNDIyLDE2IFogTTExNDEuMjAxNzYsMTYgTDExMjkuODAwNDcsMzYgTDExMjIuMzAyNjMsMzYgTDExMzMuMzM3MDgsMTYgTDExNDEuMjAxNzYsMTYgWiBNMTE2MC45NjkzLDE2IEwxMTQ5LjU2ODAxLDM2IEwxMTQyLjA3MDE3LDM2IEwxMTUzLjEwNDYyLDE2IEwxMTYwLjk2OTMsMTYgWiBNMTE4MC43MzY4NCwxNiBMMTE2OS4zMzU1NSwzNiBMMTE2MS44Mzc3MSwzNiBMMTE3Mi44NzIxNiwxNiBMMTE4MC43MzY4NCwxNiBaIE0xMjAwLjUwNDM5LDE2IEwxMTg5LjEwMzEsMzYgTDExODEuNjA1MjUsMzYgTDExOTIuNjM5NywxNiBMMTIwMC41MDQzOSwxNiBaIE0xMjIwLjI3MTkzLDE2IEwxMjA4Ljg3MDY0LDM2IEwxMjAxLjM3Mjc5LDM2IEwxMjEyLjQwNzI0LDE2IEwxMjIwLjI3MTkzLDE2IFogTTEyNDIuNjE3ODQsMTYgTDEyMzEuMjE2NTYsMzYgTDEyMjMuNzE4NzEsMzYgTDEyMzQuNzUzMTYsMTYgTDEyNDIuNjE3ODQsMTYgWiBNMTI2NS4xOTQ5MSwxNiBMMTI1My43OTM2MiwzNiBMMTI0Ni4yOTU3OCwzNiBMMTI1Ny4zMzAyMywxNiBMMTI2NS4xOTQ5MSwxNiBaIE0xMjg3LjU0MDgzLDE2IEwxMjc2LjEzOTU0LDM2IEwxMjY4LjY0MTcsMzYgTDEyNzkuNjc2MTUsMTYgTDEyODcuNTQwODMsMTYgWiBNMTMwOS44ODY3NSwxNiBMMTI5OC40ODU0NiwzNiBMMTI5MC45ODc2MSwzNiBMMTMwMi4wMjIwNiwxNiBMMTMwOS44ODY3NSwxNiBaIE0xMzMyLjIzMjY2LDE2IEwxMzIwLjgzMTM3LDM2IEwxMzEzLjMzMzUzLDM2IEwxMzI0LjM2Nzk4LDE2IEwxMzMyLjIzMjY2LDE2IFogTTEzNTQuNTc4NTgsMTYgTDEzNDMuMTc3MjksMzYgTDEzMzUuNjc5NDUsMzYgTDEzNDYuNzEzOSwxNiBMMTM1NC41Nzg1OCwxNiBaIE0xMzc2LjkyNDUsMTYgTDEzNjUuNTIzMjEsMzYgTDEzNTguMDI1MzYsMzYgTDEzNjkuMDU5ODEsMTYgTDEzNzYuOTI0NSwxNiBaIE0xMzk5LjI3MDQxLDE2IEwxMzg3Ljg2OTEzLDM2IEwxMzgwLjM3MTI4LDM2IEwxMzkxLjQwNTczLDE2IEwxMzk5LjI3MDQxLDE2IFogTTE0MjEuNjE2MzMsMTYgTDE0MTAuMjE1MDQsMzYgTDE0MDIuNzE3MiwzNiBMMTQxMy43NTE2NSwxNiBMMTQyMS42MTYzMywxNiBaIE0xNDQzLjk2MjI1LDE2IEwxNDMyLjU2MDk2LDM2IEwxNDI1LjA2MzEyLDM2IEwxNDM2LjA5NzU3LDE2IEwxNDQzLjk2MjI1LDE2IFogTTE0NjYuMzA4MTcsMTYgTDE0NTQuOTA2ODgsMzYgTDE0NDcuNDA5MDMsMzYgTDE0NTguNDQzNDgsMTYgTDE0NjYuMzA4MTcsMTYgWiBNMTQ4OC42NTQwOCwxNiBMMTQ3Ny4yNTI3OSwzNiBMMTQ2OS43NTQ5NSwzNiBMMTQ4MC43ODk0LDE2IEwxNDg4LjY1NDA4LDE2IFogTTE1MTEsMTYgTDE0OTkuNTk4NzEsMzYgTDE0OTIuMTAwODcsMzYgTDE1MDMuMTM1MzIsMTYgTDE1MTEsMTYgWiIgaWQ9IuW9oueKtue7k+WQiCIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"QILm\");","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"A+yw\");","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"RBnf\");","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stringifiable(obj) {\n // Safely stringify Object.create(null)\n /* istanbul ignore next */\n return typeof obj === 'object' && !('toString' in obj) ?\n Object.prototype.toString.call(obj).slice(8, -1) :\n obj;\n}\nvar isProduction = typeof process === 'object' && process.env.NODE_ENV === 'production';\nfunction invariant(condition, message) {\n if (!condition) {\n /* istanbul ignore next */\n if (isProduction) {\n throw new Error('Invariant failed');\n }\n throw new Error(message());\n }\n}\nexports.invariant = invariant;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar splice = Array.prototype.splice;\nvar toString = Object.prototype.toString;\nfunction type(obj) {\n return toString.call(obj).slice(8, -1);\n}\nvar assign = Object.assign || /* istanbul ignore next */ (function (target, source) {\n getAllKeys(source).forEach(function (key) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n });\n return target;\n});\nvar getAllKeys = typeof Object.getOwnPropertySymbols === 'function'\n ? function (obj) { return Object.keys(obj).concat(Object.getOwnPropertySymbols(obj)); }\n /* istanbul ignore next */\n : function (obj) { return Object.keys(obj); };\nfunction copy(object) {\n return Array.isArray(object)\n ? assign(object.constructor(object.length), object)\n : (type(object) === 'Map')\n ? new Map(object)\n : (type(object) === 'Set')\n ? new Set(object)\n : (object && typeof object === 'object')\n ? assign(Object.create(Object.getPrototypeOf(object)), object)\n /* istanbul ignore next */\n : object;\n}\nvar Context = /** @class */ (function () {\n function Context() {\n this.commands = assign({}, defaultCommands);\n this.update = this.update.bind(this);\n // Deprecated: update.extend, update.isEquals and update.newContext\n this.update.extend = this.extend = this.extend.bind(this);\n this.update.isEquals = function (x, y) { return x === y; };\n this.update.newContext = function () { return new Context().update; };\n }\n Object.defineProperty(Context.prototype, \"isEquals\", {\n get: function () {\n return this.update.isEquals;\n },\n set: function (value) {\n this.update.isEquals = value;\n },\n enumerable: true,\n configurable: true\n });\n Context.prototype.extend = function (directive, fn) {\n this.commands[directive] = fn;\n };\n Context.prototype.update = function (object, $spec) {\n var _this = this;\n var spec = (typeof $spec === 'function') ? { $apply: $spec } : $spec;\n if (!(Array.isArray(object) && Array.isArray(spec))) {\n invariant(!Array.isArray(spec), function () { return \"update(): You provided an invalid spec to update(). The spec may \" +\n \"not contain an array except as the value of $set, $push, $unshift, \" +\n \"$splice or any custom command allowing an array value.\"; });\n }\n invariant(typeof spec === 'object' && spec !== null, function () { return \"update(): You provided an invalid spec to update(). The spec and \" +\n \"every included key path must be plain objects containing one of the \" +\n (\"following commands: \" + Object.keys(_this.commands).join(', ') + \".\"); });\n var nextObject = object;\n getAllKeys(spec).forEach(function (key) {\n if (hasOwnProperty.call(_this.commands, key)) {\n var objectWasNextObject = object === nextObject;\n nextObject = _this.commands[key](spec[key], nextObject, spec, object);\n if (objectWasNextObject && _this.isEquals(nextObject, object)) {\n nextObject = object;\n }\n }\n else {\n var nextValueForKey = type(object) === 'Map'\n ? _this.update(object.get(key), spec[key])\n : _this.update(object[key], spec[key]);\n var nextObjectValue = type(nextObject) === 'Map'\n ? nextObject.get(key)\n : nextObject[key];\n if (!_this.isEquals(nextValueForKey, nextObjectValue)\n || typeof nextValueForKey === 'undefined'\n && !hasOwnProperty.call(object, key)) {\n if (nextObject === object) {\n nextObject = copy(object);\n }\n if (type(nextObject) === 'Map') {\n nextObject.set(key, nextValueForKey);\n }\n else {\n nextObject[key] = nextValueForKey;\n }\n }\n }\n });\n return nextObject;\n };\n return Context;\n}());\nexports.Context = Context;\nvar defaultCommands = {\n $push: function (value, nextObject, spec) {\n invariantPushAndUnshift(nextObject, spec, '$push');\n return value.length ? nextObject.concat(value) : nextObject;\n },\n $unshift: function (value, nextObject, spec) {\n invariantPushAndUnshift(nextObject, spec, '$unshift');\n return value.length ? value.concat(nextObject) : nextObject;\n },\n $splice: function (value, nextObject, spec, originalObject) {\n invariantSplices(nextObject, spec);\n value.forEach(function (args) {\n invariantSplice(args);\n if (nextObject === originalObject && args.length) {\n nextObject = copy(originalObject);\n }\n splice.apply(nextObject, args);\n });\n return nextObject;\n },\n $set: function (value, _nextObject, spec) {\n invariantSet(spec);\n return value;\n },\n $toggle: function (targets, nextObject) {\n invariantSpecArray(targets, '$toggle');\n var nextObjectCopy = targets.length ? copy(nextObject) : nextObject;\n targets.forEach(function (target) {\n nextObjectCopy[target] = !nextObject[target];\n });\n return nextObjectCopy;\n },\n $unset: function (value, nextObject, _spec, originalObject) {\n invariantSpecArray(value, '$unset');\n value.forEach(function (key) {\n if (Object.hasOwnProperty.call(nextObject, key)) {\n if (nextObject === originalObject) {\n nextObject = copy(originalObject);\n }\n delete nextObject[key];\n }\n });\n return nextObject;\n },\n $add: function (values, nextObject, _spec, originalObject) {\n invariantMapOrSet(nextObject, '$add');\n invariantSpecArray(values, '$add');\n if (type(nextObject) === 'Map') {\n values.forEach(function (_a) {\n var key = _a[0], value = _a[1];\n if (nextObject === originalObject && nextObject.get(key) !== value) {\n nextObject = copy(originalObject);\n }\n nextObject.set(key, value);\n });\n }\n else {\n values.forEach(function (value) {\n if (nextObject === originalObject && !nextObject.has(value)) {\n nextObject = copy(originalObject);\n }\n nextObject.add(value);\n });\n }\n return nextObject;\n },\n $remove: function (value, nextObject, _spec, originalObject) {\n invariantMapOrSet(nextObject, '$remove');\n invariantSpecArray(value, '$remove');\n value.forEach(function (key) {\n if (nextObject === originalObject && nextObject.has(key)) {\n nextObject = copy(originalObject);\n }\n nextObject.delete(key);\n });\n return nextObject;\n },\n $merge: function (value, nextObject, _spec, originalObject) {\n invariantMerge(nextObject, value);\n getAllKeys(value).forEach(function (key) {\n if (value[key] !== nextObject[key]) {\n if (nextObject === originalObject) {\n nextObject = copy(originalObject);\n }\n nextObject[key] = value[key];\n }\n });\n return nextObject;\n },\n $apply: function (value, original) {\n invariantApply(value);\n return value(original);\n },\n};\nvar defaultContext = new Context();\nexports.isEquals = defaultContext.update.isEquals;\nexports.extend = defaultContext.extend;\nexports.default = defaultContext.update;\n// @ts-ignore\nexports.default.default = module.exports = assign(exports.default, exports);\n// invariants\nfunction invariantPushAndUnshift(value, spec, command) {\n invariant(Array.isArray(value), function () { return \"update(): expected target of \" + stringifiable(command) + \" to be an array; got \" + stringifiable(value) + \".\"; });\n invariantSpecArray(spec[command], command);\n}\nfunction invariantSpecArray(spec, command) {\n invariant(Array.isArray(spec), function () { return \"update(): expected spec of \" + stringifiable(command) + \" to be an array; got \" + stringifiable(spec) + \". \" +\n \"Did you forget to wrap your parameter in an array?\"; });\n}\nfunction invariantSplices(value, spec) {\n invariant(Array.isArray(value), function () { return \"Expected $splice target to be an array; got \" + stringifiable(value); });\n invariantSplice(spec.$splice);\n}\nfunction invariantSplice(value) {\n invariant(Array.isArray(value), function () { return \"update(): expected spec of $splice to be an array of arrays; got \" + stringifiable(value) + \". \" +\n \"Did you forget to wrap your parameters in an array?\"; });\n}\nfunction invariantApply(fn) {\n invariant(typeof fn === 'function', function () { return \"update(): expected spec of $apply to be a function; got \" + stringifiable(fn) + \".\"; });\n}\nfunction invariantSet(spec) {\n invariant(Object.keys(spec).length === 1, function () { return \"Cannot have more than one key in an object with $set\"; });\n}\nfunction invariantMerge(target, specValue) {\n invariant(specValue && typeof specValue === 'object', function () { return \"update(): $merge expects a spec of type 'object'; got \" + stringifiable(specValue); });\n invariant(target && typeof target === 'object', function () { return \"update(): $merge expects a target of type 'object'; got \" + stringifiable(target); });\n}\nfunction invariantMapOrSet(target, command) {\n var typeOfTarget = type(target);\n invariant(typeOfTarget === 'Map' || typeOfTarget === 'Set', function () { return \"update(): \" + stringifiable(command) + \" expects a target of type Set or Map; got \" + stringifiable(typeOfTarget); });\n}\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNTE4cHgiIGhlaWdodD0iNDVweCIgdmlld0JveD0iMCAwIDUxOCA0NSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDx0aXRsZT7lt6Y8L3RpdGxlPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDEuMDEzMDQzJSIgeTE9IjAlIiB4Mj0iLTAuNzYzNzYwMzc3JSIgeTI9IjAlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwNTE0MkQiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzQxODhFMiIgb2Zmc2V0PSI1MC4yMzEzMjYlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwNTE0MkQiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAlIiB5MT0iNTAlIiB4Mj0iLTAuODI1MTE3NjEzJSIgeTI9IjUwJSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjNDE4OEUyIiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwNTE0MkQiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i6aG16Z2iLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSLmoIfpopjoo4XppbAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuNzI2NTg5LCAxLjAwMDAwMCkiPgogICAgICAgICAgICA8cG9seWdvbiBpZD0i55+p5b2iIiBmaWxsPSIjNDE4OEUyIiBwb2ludHM9IjQ5OS43NjQzNCAzMiAxMDEyLjI3MzQxIDMyIDEwMDguMjAwNCAzNiA1MDMuMjczNDExIDM2Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDxwb2x5bGluZSBpZD0i6Lev5b6ELTE5IiBzdHJva2U9InVybCgjbGluZWFyR3JhZGllbnQtMSkiIHN0cm9rZS13aWR0aD0iMiIgcG9pbnRzPSI5IDEuMzAwOTUxNzllLTEzIDQ0MC4xNTQ5NjIgMCA0NjguMDgyNTIzIDM1LjY1MTgzMTEgNDg2LjY4MzczNCAzNS42NTE4MzExIDQ5Mi45OTg5OTIgNDIuNDE3ODUzNCAxMDE2LjAwNDQ2IDQyLjQxNzg1MzQgMTAyMi43Nzg1IDM1LjY1MTgzMTEgMTA0My4xNjY2MSAzNS42NTE4MzExIDEwNzQuOTk5MjUgMCAxNTExLjI3MzQxIDQuNTIwOTU0NjRlLTEzIj48L3BvbHlsaW5lPgogICAgICAgICAgICA8cGF0aCBkPSJNNDM3LjM0Nzg1NSwxNiBMNDQ4LDM2IEw0NDAuNzYxOTMsMzYgTDQyOS43NTU2NTYsMTYgTDQzNy4zNDc4NTUsMTYgWiBNNDE4LjA4OTkzNiwxNiBMNDI4Ljc0MjA4MSwzNiBMNDIxLjUwNDAxMiwzNiBMNDEwLjQ5NzczOCwxNiBMNDE4LjA4OTkzNiwxNiBaIE0zOTguODMyMDE4LDE2IEw0MDkuNDg0MTYzLDM2IEw0MDIuMjQ2MDkzLDM2IEwzOTEuMjM5ODE5LDE2IEwzOTguODMyMDE4LDE2IFogTTM3OS41NzQwOTksMTYgTDM5MC4yMjYyNDQsMzYgTDM4Mi45ODgxNzUsMzYgTDM3MS45ODE5LDE2IEwzNzkuNTc0MDk5LDE2IFogTTM1OS4zMDI2MDYsMTYgTDM2OS45NTQ3NTEsMzYgTDM2Mi43MTY2ODEsMzYgTDM1MS43MTA0MDcsMTYgTDM1OS4zMDI2MDYsMTYgWiBNMzQxLjA1ODI2MiwxNiBMMzUxLjcxMDQwNywzNiBMMzQ0LjQ3MjMzOCwzNiBMMzMzLjQ2NjA2MywxNiBMMzQxLjA1ODI2MiwxNiBaIE0zMjEuODAwMzQ0LDE2IEwzMzIuNDUyNDg5LDM2IEwzMjUuMjE0NDE5LDM2IEwzMTQuMjA4MTQ1LDE2IEwzMjEuODAwMzQ0LDE2IFogTTMwMS41Mjg4NSwxNiBMMzEyLjE4MDk5NSwzNiBMMzA0Ljk0MjkyNiwzNiBMMjkzLjkzNjY1MiwxNiBMMzAxLjUyODg1LDE2IFogTTI4Mi4yNzA5MzIsMTYgTDI5Mi45MjMwNzcsMzYgTDI4NS42ODUwMDcsMzYgTDI3NC42Nzg3MzMsMTYgTDI4Mi4yNzA5MzIsMTYgWiBNMjU5Ljk3MjI4OSwxNiBMMjcwLjYyNDQzNCwzNiBMMjYzLjM4NjM2NSwzNiBMMjUyLjM4MDA5LDE2IEwyNTkuOTcyMjg5LDE2IFogTTIzNi42NjAwNzIsMTYgTDI0Ny4zMTIyMTcsMzYgTDI0MC4wNzQxNDcsMzYgTDIyOS4wNjc4NzMsMTYgTDIzNi42NjAwNzIsMTYgWiBNMjEzLjM0Nzg1NSwxNiBMMjI0LDM2IEwyMTYuNzYxOTMsMzYgTDIwNS43NTU2NTYsMTYgTDIxMy4zNDc4NTUsMTYgWiBNMTkxLjA0OTIxMiwxNiBMMjAxLjcwMTM1NywzNiBMMTk0LjQ2MzI4OCwzNiBMMTgzLjQ1NzAxNCwxNiBMMTkxLjA0OTIxMiwxNiBaIE0xNjcuNzM2OTk1LDE2IEwxNzguMzg5MTQsMzYgTDE3MS4xNTEwNzEsMzYgTDE2MC4xNDQ3OTYsMTYgTDE2Ny43MzY5OTUsMTYgWiBNMTQ1LjQzODM1MywxNiBMMTU2LjA5MDQ5OCwzNiBMMTQ4Ljg1MjQyOCwzNiBMMTM3Ljg0NjE1NCwxNiBMMTQ1LjQzODM1MywxNiBaIE0xMjIuMTI2MTM1LDE2IEwxMzIuNzc4MjgxLDM2IEwxMjUuNTQwMjExLDM2IEwxMTQuNTMzOTM3LDE2IEwxMjIuMTI2MTM1LDE2IFogTTk4LjgxMzkxODMsMTYgTDEwOS40NjYwNjMsMzYgTDEwMi4yMjc5OTQsMzYgTDkxLjIyMTcxOTUsMTYgTDk4LjgxMzkxODMsMTYgWiBNNzYuNTE1Mjc1OCwxNiBMODcuMTY3NDIwOCwzNiBMNzkuOTI5MzUxMSwzNiBMNjguOTIzMDc2OSwxNiBMNzYuNTE1Mjc1OCwxNiBaIE01My4yMDMwNTg2LDE2IEw2My44NTUyMDM2LDM2IEw1Ni42MTcxMzM5LDM2IEw0NS42MTA4NTk3LDE2IEw1My4yMDMwNTg2LDE2IFogTTI5Ljg5MDg0MTQsMTYgTDQwLjU0Mjk4NjQsMzYgTDMzLjMwNDkxNjcsMzYgTDIyLjI5ODY0MjUsMTYgTDI5Ljg5MDg0MTQsMTYgWiBNNy41OTIxOTg4NCwxNiBMMTguMjQ0MzQzOSwzNiBMMTEuMDA2Mjc0MiwzNiBMMCwxNiBMNy41OTIxOTg4NCwxNiBaIiBpZD0i5b2i54q257uT5ZCIIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTIpIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\"","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"TSYQ\");","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../node_modules/less-loader/dist/cjs.js??ref--15-2!./style.shadow.less\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".cellWrapper--2OYGkPe3 {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n /* https://stackoverflow.com/a/43312314 */\\n overflow: hidden;\\n}\\n .cellWrapper--2OYGkPe3.positionLeft--37I2lSco {\\n justify-content: flex-start;\\n }\\n\\n.cellItem--2SC_hb3l {\\n height: 144px;\\n padding: 10px;\\n min-width: 120px;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n flex-direction: column;\\n}\\n\\n.cellItem--2SC_hb3l.small--2iopoc-K {\\n height: 110px;\\n }\\n\\n.cellItem--2SC_hb3l.active--WeFTsRRm {\\n background-color: rgba(0, 0, 0, 0.3);\\n border-radius: 6px;\\n}\\n\\n@media (max-height: 860px), (max-width: 1280px) {\\n .cellItem--2SC_hb3l {\\n height: 124px;\\n min-width: 100px;\\n }\\n\\n .cellItem--2SC_hb3l.small--2iopoc-K {\\n height: 100px;\\n min-width: 76px;\\n }\\n}\\n\\n@media (max-height: 700px), (max-width: 1024px) {\\n .cellItem--2SC_hb3l {\\n height: 118px;\\n min-width: 80px;\\n }\\n\\n .cellItem--2SC_hb3l.small--2iopoc-K {\\n height: 89px;\\n min-width: 60px;\\n }\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"cellWrapper\": \"cellWrapper--2OYGkPe3\",\n\t\"positionLeft\": \"positionLeft--37I2lSco\",\n\t\"cellItem\": \"cellItem--2SC_hb3l\",\n\t\"small\": \"small--2iopoc-K\",\n\t\"active\": \"active--WeFTsRRm\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjZweCIgaGVpZ2h0PSIyNnB4IiB2aWV3Qm94PSIwIDAgMjYgMjYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+5Y2h54mH6L656KeS57uT5p6EL+W3puS4izwvdGl0bGU+CiAgICA8ZyBpZD0i6aG16Z2iLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CiAgICAgICAgPGcgaWQ9IuaWh+WtlyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE1Mi4wMDAwMDAsIC0xMzY3LjAwMDAwMCkiIHN0cm9rZT0iIzIxM0E3OSIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgPGcgaWQ9IuivleWbvuWxleekui0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzQuMDAwMDAwLCAxMTAyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPGcgaWQ9Iue7n+iuoeWNoeeJhyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTguMDAwMDAwLCAxMzAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMTYwIEwxLDE0MSBDMSwxMzguMjM4NTc2IDMuMjM4NTc2MjUsMTM2IDYsMTM2IEwyNSwxMzYgTDI1LDEzNiIgaWQ9IuWNoeeJh+i+ueinkue7k+aehC/lt6bkuIsiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzLjAwMDAwMCwgMTQ4LjAwMDAwMCkgc2NhbGUoMSwgLTEpIHRyYW5zbGF0ZSgtMTMuMDAwMDAwLCAtMTQ4LjAwMDAwMCkgIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".appBar--3FVwevTx {\\n z-index: 100;\\n position: fixed;\\n left: var(--menu-bar-width);\\n right: 0;\\n height: var(--app-bar-height);\\n background: rgba(255, 255, 255, 1);\\n box-shadow: 0px 3px 20px 0px rgba(128, 128, 128, 0.2);\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n padding: 0 26px;\\n transition: var(--launchpad-backdrop-transition);\\n}\\n\\n.titleContainer--3aTVex31 {\\n display: flex;\\n align-items: center;\\n}\\n\\n.menu-bar-collapsed .appBar--3FVwevTx {\\n left: var(--menu-bar-collapsed-width);\\n}\\n\\n.launchpad-open .appBar--3FVwevTx {\\n filter: var(--launchpad-backdrop-filter);\\n}\\n\\n.first-rendered .appBar--3FVwevTx {\\n transition: left var(--menu-bar-collapse-transition-duration)\\n var(--menu-bar-collapse-transition-timing-function),\\n var(--launchpad-backdrop-transition);\\n}\\n\\n.actionsContainer--3_rbEHWR {\\n display: flex;\\n align-items: center;\\n flex-wrap: nowrap;\\n}\\n\\n.dropdownMenuItem--3o5tm_zL {\\n color: var(--text-color-default);\\n}\\n\\n.dropdownMenuItem--3o5tm_zL:hover {\\n background-color: var(--theme-blue-background);\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"appBar\": \"appBar--3FVwevTx\",\n\t\"titleContainer\": \"titleContainer--3aTVex31\",\n\t\"actionsContainer\": \"actionsContainer--3_rbEHWR\",\n\t\"dropdownMenuItem\": \"dropdownMenuItem--3o5tm_zL\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".searchBar--CTH4eOdV {\\n display: flex;\\n justify-content: center;\\n align-items: flex-end;\\n height: 10%;\\n}\\n\\n .searchBar--CTH4eOdV .ant-input {\\n color: #fff;\\n background-color: transparent;\\n }\\n\\n .searchBar--CTH4eOdV .ant-input::placeholder {\\n color: rgba(255, 255, 255, 0.25);\\n }\\n\\n .searchBar--CTH4eOdV .ant-input-affix-wrapper {\\n height: 42px;\\n border-radius: 21px;\\n padding-left: 54px;\\n padding-right: 4px;\\n border: 2px solid rgba(255, 255, 255, 0.1);\\n background-color: rgba(0, 0, 0, 0.06);\\n transition: padding-left 150ms ease-out;\\n }\\n\\n .searchBar--CTH4eOdV .ant-input-affix-wrapper:hover {\\n border-color: #0071eb;\\n border-right-width: 2px !important;\\n }\\n\\n .searchBar--CTH4eOdV.focus--1KB5PAqZ .ant-input-affix-wrapper,\\n .searchBar--CTH4eOdV .ant-input-affix-wrapper-focused {\\n padding-left: 4px;\\n border-color: #2893f7;\\n border-right-width: 2px !important;\\n }\\n\\n .searchBar--CTH4eOdV .ant-input-prefix {\\n width: 30px;\\n margin-left: 0;\\n margin-right: 6px;\\n display: flex;\\n justify-content: center;\\n color: rgba(255, 255, 255, 0.65);\\n }\\n\\n.inputContainer--pmppgB3E {\\n width: 300px;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"searchBar\": \"searchBar--CTH4eOdV\",\n\t\"focus\": \"focus--1KB5PAqZ\",\n\t\"inputContainer\": \"inputContainer--pmppgB3E\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = dll;","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"XzT5\");","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../node_modules/less-loader/dist/cjs.js??ref--15-2!./index.headerBar.less\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".appSubMenu--3QjNzmIv {\\n z-index: 100;\\n position: fixed;\\n top: var(--app-bar-height);\\n left: var(--menu-bar-width);\\n bottom: 0;\\n width: var(--sub-menu-bar-width);\\n background-color: #fff;\\n color: var(--text-color-title);\\n box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.04);\\n padding: 0 12px;\\n overflow-y: auto;\\n}\\n\\n.appSubMenuTitle--13oXdzsp {\\n padding: 20px 10px;\\n color: rgba(0, 0, 0, 0.85);\\n font-size: 18px;\\n word-break: break-word;\\n}\\n\\n.first-rendered .appSubMenu--3QjNzmIv {\\n transition: left var(--menu-bar-collapse-transition-duration)\\n var(--menu-bar-collapse-transition-timing-function),\\n var(--launchpad-backdrop-transition);\\n}\\n\\n.menu-bar-collapsed .appSubMenu--3QjNzmIv {\\n left: var(--menu-bar-collapsed-width);\\n}\\n\\n.launchpad-open .appSubMenu--3QjNzmIv {\\n filter: var(--launchpad-backdrop-filter);\\n}\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-item {\\n margin: 0;\\n border-radius: 6px;\\n transition: none;\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-item:not(.ant-menu-item-selected):hover > a {\\n color: var(--antd-link-color);\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu > .ant-menu-item > a {\\n color: var(--text-color-secondary);\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu > .ant-menu-item > a > i {\\n color: var(--text-color-secondary);\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-item-selected {\\n background-color: #e0eeff;\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-item-selected > a {\\n color: var(--antd-link-color);\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-submenu-title {\\n color: var(--antd-text-color);\\n transition: none;\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-submenu-title .anticon {\\n margin-right: 14px;\\n vertical-align: middle;\\n color: var(--antd-text-color-secondary);\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-submenu-title .ant-menu-submenu-arrow {\\n color: var(--text-color-disabled);\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu.ant-menu-inline .ant-menu-item::after {\\n content: none;\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-sub.ant-menu-inline > .ant-menu-item {\\n height: 36px;\\n line-height: 36px;\\n text-indent: 8px;\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-submenu.ant-menu-submenu-selected {\\n background: #f7f7f7;\\n border-radius: 6px;\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-submenu.ant-menu-submenu-selected > .ant-menu-submenu-title {\\n font-weight: 500;\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-submenu.ant-menu-submenu-selected > .ant-menu-submenu-title .anticon {\\n color: rgba(0, 0, 0, 0.55);\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-submenu.ant-menu-inline > .ant-menu-item {\\n height: 36px;\\n line-height: 36px;\\n text-indent: 8px;\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-submenu:hover .ant-menu-submenu-title .ant-menu-submenu-arrow {\\n color: var(--antd-link-color);\\n }\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-submenu .ant-menu {\\n background: transparent;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"appSubMenu\": \"appSubMenu--3QjNzmIv\",\n\t\"appSubMenuTitle\": \"appSubMenuTitle--13oXdzsp\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"ZR4k\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".desktop--1GLvqWiQ {\\n flex: 1;\\n display: grid;\\n grid-template-columns: repeat(7, 1fr);\\n grid-template-rows: repeat(4, 1fr);\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"desktop\": \"desktop--1GLvqWiQ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".anchorWrapper--a69PwwmW {\\n width: 100%;\\n background: rgba(255, 255, 255, 0.9);\\n -webkit-backdrop-filter: blur(3px);\\n backdrop-filter: blur(3px);\\n padding: 5px 0;\\n}\\n .anchorWrapper--a69PwwmW .anchorContainer--2LmHPwUH {\\n width: 100%;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n min-height: 45px;\\n }\\n .anchorWrapper--a69PwwmW .ant-anchor-ink {\\n display: none;\\n }\\n .anchorWrapper--a69PwwmW .anchorLinkContainer--2GE0pKbG {\\n display: flex;\\n background: #f5f5f5;\\n border-radius: 15px;\\n padding: 2px;\\n }\\n .anchorWrapper--a69PwwmW .anchorLinkContainer--2GE0pKbG .ant-anchor-link {\\n padding: 0;\\n }\\n .anchorWrapper--a69PwwmW .anchorLinkContainer--2GE0pKbG .ant-anchor-link-title {\\n padding: 8px 16px;\\n border-radius: 15px;\\n color: #6e6e6e;\\n }\\n .anchorWrapper--a69PwwmW .anchorLinkContainer--2GE0pKbG .ant-anchor-link-active > .ant-anchor-link-title {\\n color: #262626;\\n background: #fff;\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.09);\\n }\\n .anchorWrapper--a69PwwmW .extraContainer--2jJ7iCHv {\\n display: grid;\\n grid-auto-flow: column;\\n grid-gap: 8px;\\n justify-items: end;\\n align-items: center;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"anchorWrapper\": \"anchorWrapper--a69PwwmW\",\n\t\"anchorContainer\": \"anchorContainer--2LmHPwUH\",\n\t\"anchorLinkContainer\": \"anchorLinkContainer--2GE0pKbG\",\n\t\"extraContainer\": \"extraContainer--2jJ7iCHv\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".subMenuContainer--1NLRRYRs {\\n background: #ffffff;\\n border-radius: 6px;\\n padding: 20px 12px;\\n height: 100%;\\n}\\n\\n .subMenuContainer--1NLRRYRs .header--2So5Ep-2 {\\n display: flex;\\n align-items: center;\\n font-size: 18px;\\n padding: 0 24px 16px 24px;\\n line-height: 26px;\\n color: #000;\\n }\\n\\n .subMenuContainer--1NLRRYRs .header--2So5Ep-2 i {\\n color: #8c8c8c;\\n width: 24px;\\n text-align: center;\\n }\\n\\n .subMenuContainer--1NLRRYRs .header--2So5Ep-2 > i + span {\\n margin-left: 5px;\\n }\\n\\n .subMenuContainer--1NLRRYRs .header--2So5Ep-2 .headerTitle--1S_9PfHs {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n\\n .subMenuContainer--1NLRRYRs > .ant-input-search {\\n margin-bottom: 10px;\\n }\\n\\n .subMenuContainer--1NLRRYRs > .ant-menu {\\n background: transparent;\\n }\\n\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item-group .ant-menu-item-group-title {\\n padding: 8px;\\n font-size: 12px;\\n }\\n\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-sub.ant-menu-inline {\\n background-color: #f7f7f7;\\n border-radius: 6px;\\n }\\n\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item {\\n margin: 0;\\n border-radius: 6px;\\n }\\n\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item:after {\\n content: none;\\n }\\n\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item:not(.ant-menu-item-selected):hover {\\n background-color: #f2f5f9;\\n }\\n\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item:not(.ant-menu-item-selected):active {\\n background-color: #d8e4f0;\\n }\\n\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item-selected {\\n background-color: #e0eeff;\\n }\\n\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-submenu-title {\\n margin: 0;\\n }\\n\\n .subMenuContainer--1NLRRYRs .ant-menu-item-group-list .ant-menu-submenu-title .menuItemMainPart--1jfvaODg {\\n width: calc(100% - 20px);\\n }\\n\\n .subMenuContainer--1NLRRYRs .ant-menu-item-only-child {\\n padding-right: 0 !important;\\n }\\n\\n .subMenuContainer--1NLRRYRs .ant-menu-inline .ant-menu-item {\\n width: 100%;\\n }\\n\\n.itemContainerInner--16FNjk2I {\\n padding: 8px 8px 8px 0;\\n height: 100%;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n grid-gap: 6px;\\n gap: 6px;\\n}\\n\\n.menuItemMainPart--1jfvaODg {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.transparentBackground--RdFv0mVM {\\n background: transparent;\\n}\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu {\\n color: rgba(0,0,0,0.85098);\\n }\\n\\n/* subMenu-title hover样式 */\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu.ant-menu-submenu-active .ant-menu-submenu-title {\\n color: inherit;\\n background-color: #ebebeb;\\n }\\n\\n/* subMenu展开时subMenu-title样式 */\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu.ant-menu-submenu-open .ant-menu-submenu-title {\\n font-weight: 500;\\n }\\n\\n/* subMenu子项被选中时subMenu-title样式 */\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu.ant-menu-submenu-selected .ant-menu-submenu-title {\\n background-color: inherit;\\n color: #116ac3;\\n }\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu.ant-menu-submenu-selected .ant-menu-submenu-title .menuItemMainPart--1jfvaODg > i {\\n color: #116ac3;\\n }\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu.ant-menu-submenu-selected .ant-menu-submenu-title .ant-menu-submenu-arrow {\\n color: #116ac3;\\n }\\n\\n/* subMenu-title 普通样式 */\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu .ant-menu-submenu-title .ant-menu-submenu-arrow {\\n color: #bfbfbf;\\n }\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\\n .transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu .ant-menu-submenu-title .ant-menu-submenu-arrow::after {\\n height: 1px;\\n }\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu .ant-menu-submenu-title .menuItemMainPart--1jfvaODg > i {\\n color: #8c8c8c;\\n }\\n\\n/* subMenu组 普通样式 */\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu .ant-menu-sub {\\n background-color: transparent !important;\\n }\\n\\n/* menu-item 样式 */\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-item {\\n color: #8c8c8c;\\n }\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-item.ant-menu-item-selected {\\n background-color: #ebf3fd;\\n color: #116ac3;\\n }\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-item:not(.ant-menu-item-selected):hover {\\n background-color: #ebebeb;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"subMenuContainer\": \"subMenuContainer--1NLRRYRs\",\n\t\"header\": \"header--2So5Ep-2\",\n\t\"headerTitle\": \"headerTitle--1S_9PfHs\",\n\t\"menuItemMainPart\": \"menuItemMainPart--1jfvaODg\",\n\t\"itemContainerInner\": \"itemContainerInner--16FNjk2I\",\n\t\"transparentBackground\": \"transparentBackground--RdFv0mVM\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"bdgK\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".launchpad--t9BwfkVa {\\n background: linear-gradient(\\n 275deg,\\n rgba(7, 58, 120, 0.86) 0%,\\n rgba(0, 1, 20, 0.86) 100%\\n );\\n position: fixed;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 5000;\\n overflow: hidden;\\n overflow-y: auto;\\n color: #fff;\\n}\\n\\n.launchpadContainer--11TRYHas {\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n}\\n\\n.fadeEnter--kRYn22xl {\\n opacity: 0;\\n transform: scale(0.95);\\n}\\n\\n.fadeEnterActive--3EtPY7PF {\\n opacity: 1;\\n transform: translateX(0);\\n transition: opacity 100ms ease-out, transform 100ms ease-out;\\n}\\n\\n.fadeExit--T4GRvIdT {\\n opacity: 1;\\n}\\n\\n.fadeExitActive--zkF1-bJs {\\n opacity: 0;\\n transform: scale(0.95);\\n transition: opacity 100ms ease-out, transform 100ms ease-out;\\n}\\n\\n.fadeExitDone--25Kt4yhI {\\n display: none;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"launchpad\": \"launchpad--t9BwfkVa\",\n\t\"launchpadContainer\": \"launchpadContainer--11TRYHas\",\n\t\"fadeEnter\": \"fadeEnter--kRYn22xl\",\n\t\"fadeEnterActive\": \"fadeEnterActive--3EtPY7PF\",\n\t\"fadeExit\": \"fadeExit--T4GRvIdT\",\n\t\"fadeExitActive\": \"fadeExitActive--zkF1-bJs\",\n\t\"fadeExitDone\": \"fadeExitDone--25Kt4yhI\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"JxWY\");","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"svg:not(:root).svg-inline--fa {\\n overflow: visible; }\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -.125em; }\\n .svg-inline--fa.fa-lg {\\n vertical-align: -.225em; }\\n .svg-inline--fa.fa-w-1 {\\n width: 0.0625em; }\\n .svg-inline--fa.fa-w-2 {\\n width: 0.125em; }\\n .svg-inline--fa.fa-w-3 {\\n width: 0.1875em; }\\n .svg-inline--fa.fa-w-4 {\\n width: 0.25em; }\\n .svg-inline--fa.fa-w-5 {\\n width: 0.3125em; }\\n .svg-inline--fa.fa-w-6 {\\n width: 0.375em; }\\n .svg-inline--fa.fa-w-7 {\\n width: 0.4375em; }\\n .svg-inline--fa.fa-w-8 {\\n width: 0.5em; }\\n .svg-inline--fa.fa-w-9 {\\n width: 0.5625em; }\\n .svg-inline--fa.fa-w-10 {\\n width: 0.625em; }\\n .svg-inline--fa.fa-w-11 {\\n width: 0.6875em; }\\n .svg-inline--fa.fa-w-12 {\\n width: 0.75em; }\\n .svg-inline--fa.fa-w-13 {\\n width: 0.8125em; }\\n .svg-inline--fa.fa-w-14 {\\n width: 0.875em; }\\n .svg-inline--fa.fa-w-15 {\\n width: 0.9375em; }\\n .svg-inline--fa.fa-w-16 {\\n width: 1em; }\\n .svg-inline--fa.fa-w-17 {\\n width: 1.0625em; }\\n .svg-inline--fa.fa-w-18 {\\n width: 1.125em; }\\n .svg-inline--fa.fa-w-19 {\\n width: 1.1875em; }\\n .svg-inline--fa.fa-w-20 {\\n width: 1.25em; }\\n .svg-inline--fa.fa-pull-left {\\n margin-right: .3em;\\n width: auto; }\\n .svg-inline--fa.fa-pull-right {\\n margin-left: .3em;\\n width: auto; }\\n .svg-inline--fa.fa-border {\\n height: 1.5em; }\\n .svg-inline--fa.fa-li {\\n width: 2em; }\\n .svg-inline--fa.fa-fw {\\n width: 1.25em; }\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0; }\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -.125em;\\n width: 1em; }\\n .fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center; }\\n\\n.fa-layers-text, .fa-layers-counter {\\n display: inline-block;\\n position: absolute;\\n text-align: center; }\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center; }\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: .25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right; }\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right; }\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left; }\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right; }\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left; }\\n\\n.fa-lg {\\n font-size: 1.33333em;\\n line-height: 0.75em;\\n vertical-align: -.0667em; }\\n\\n.fa-xs {\\n font-size: .75em; }\\n\\n.fa-sm {\\n font-size: .875em; }\\n\\n.fa-1x {\\n font-size: 1em; }\\n\\n.fa-2x {\\n font-size: 2em; }\\n\\n.fa-3x {\\n font-size: 3em; }\\n\\n.fa-4x {\\n font-size: 4em; }\\n\\n.fa-5x {\\n font-size: 5em; }\\n\\n.fa-6x {\\n font-size: 6em; }\\n\\n.fa-7x {\\n font-size: 7em; }\\n\\n.fa-8x {\\n font-size: 8em; }\\n\\n.fa-9x {\\n font-size: 9em; }\\n\\n.fa-10x {\\n font-size: 10em; }\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em; }\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0; }\\n .fa-ul > li {\\n position: relative; }\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit; }\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: .1em;\\n padding: .2em .25em .15em; }\\n\\n.fa-pull-left {\\n float: left; }\\n\\n.fa-pull-right {\\n float: right; }\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: .3em; }\\n\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: .3em; }\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear; }\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8); }\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg); }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg); } }\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg); }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg); } }\\n\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg); }\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg); }\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg); }\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1); }\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1); }\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1); }\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none; }\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em; }\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0; }\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em; }\\n\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em; }\\n\\n.fa-inverse {\\n color: #fff; }\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px; }\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto; }\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1); }\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4); }\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4); }\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1); }\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black; }\\n\\n.fad.fa-inverse {\\n color: #fff; }\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".appear--1vkq8e4t {\\n opacity: 0;\\n transform: scale(1.05);\\n}\\n\\n.appearActive--3iaAqvYv {\\n opacity: 1;\\n transform: translateX(0);\\n transition: opacity 100ms ease-out, transform 100ms ease-out;\\n}\\n\\n.exit--uBRxwc9r {\\n opacity: 1;\\n}\\n\\n.exitActive--31dVxsE1 {\\n opacity: 0;\\n transform: scale(1.05);\\n transition: opacity 100ms ease-out, transform 100ms ease-out;\\n}\\n\\n/* Keep these empty rules, CSSTransition need them. */\\n.appearDone--1FoOnEbb {\\n}\\n.enterDone--GlvcsZfi {\\n}\\n.exitDone--3Wi8kKIp {\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"appear\": \"appear--1vkq8e4t\",\n\t\"appearActive\": \"appearActive--3iaAqvYv\",\n\t\"exit\": \"exit--uBRxwc9r\",\n\t\"exitActive\": \"exitActive--31dVxsE1\",\n\t\"appearDone\": \"appearDone--1FoOnEbb\",\n\t\"enterDone\": \"enterDone--GlvcsZfi\",\n\t\"exitDone\": \"exitDone--3Wi8kKIp\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"gdfu\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".dirContainer--3_1t24IV {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n left: 0;\\n top: 0;\\n transition: transform 150ms ease-out;\\n}\\n\\n.dirName--2o5Sm-Nn {\\n margin-bottom: 40px;\\n font-size: 24px;\\n line-height: 32px;\\n text-align: center;\\n}\\n\\n.dirContent--2DUBjcow {\\n display: grid;\\n background-color: rgba(255, 255, 255, 0.1);\\n border-radius: 20px;\\n width: 100%;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"dirContainer\": \"dirContainer--3_1t24IV\",\n\t\"dirName\": \"dirName--2o5Sm-Nn\",\n\t\"dirContent\": \"dirContent--2DUBjcow\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".scrollContainer--31jmpwGN::-webkit-scrollbar {\\n width: 6px;\\n }\\n .scrollContainer--31jmpwGN::-webkit-scrollbar-thumb {\\n visibility: hidden;\\n border-radius: 3px;\\n background-color: rgb(130, 130, 140, 0.45);\\n }\\n .scrollContainer--31jmpwGN::-webkit-scrollbar-track {\\n visibility: hidden;\\n width: 12px;\\n background-color: rgb(140, 140, 140, 0.2);\\n }\\n .scrollContainer--31jmpwGN:hover {\\n background: rgba(32, 35, 38, 0.1);\\n box-shadow: 0px 5px 10px 4px rgba(0, 0, 0, 0.1);\\n border-radius: 6px;\\n }\\n .scrollContainer--31jmpwGN:hover::-webkit-scrollbar-thumb,\\n .scrollContainer--31jmpwGN:hover::-webkit-scrollbar-track {\\n visibility: visible;\\n }\\n\\n.siteMapContainer--2Kc942OO {\\n padding-top: 10px;\\n column-count: 5;\\n}\\n\\n.siteMapContainer--2Kc942OO .groupWrapper--eOCVFRG0 {\\n margin: 0 30px;\\n page-break-inside: avoid;\\n break-inside: avoid;\\n }\\n\\n.siteMapContainer--2Kc942OO .groupWrapper--eOCVFRG0 .group--9EV2jTpF {\\n margin: 0;\\n padding: 9px 0 58px;\\n }\\n\\n.siteMapContainer--2Kc942OO .groupWrapper--eOCVFRG0 .item--1mR3Q4_D {\\n list-style-type: none;\\n font-size: 12px;\\n padding: 5px 0px;\\n }\\n\\n.siteMapContainer--2Kc942OO .groupWrapper--eOCVFRG0 .item--1mR3Q4_D > a {\\n color: rgba(255, 255, 255, 0.65);\\n }\\n\\n.siteMapContainer--2Kc942OO .groupWrapper--eOCVFRG0 .item--1mR3Q4_D > a:hover {\\n color: var(--antd-link-hover-color);\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"scrollContainer\": \"scrollContainer--31jmpwGN\",\n\t\"siteMapContainer\": \"siteMapContainer--2Kc942OO\",\n\t\"groupWrapper\": \"groupWrapper--eOCVFRG0\",\n\t\"group\": \"group--9EV2jTpF\",\n\t\"item\": \"item--1mR3Q4_D\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"i8i4\");","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"iTG7\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".subMenuContainer--22aAI82E {\\n background: #ffffff;\\n border-radius: 6px;\\n padding: 20px 0;\\n}\\n .subMenuContainer--22aAI82E .header--39v9Ck6M {\\n display: flex;\\n align-items: center;\\n font-size: 18px;\\n padding: 0 24px 16px 24px;\\n line-height: 26px;\\n color: #000;\\n }\\n .subMenuContainer--22aAI82E .header--39v9Ck6M i {\\n color: #8c8c8c;\\n width: 24px;\\n text-align: center;\\n }\\n .subMenuContainer--22aAI82E .header--39v9Ck6M > i + span {\\n margin-left: 5px;\\n }\\n .subMenuContainer--22aAI82E .header--39v9Ck6M .headerTitle--1PpR1CeL {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n .subMenuContainer--22aAI82E > .ant-menu {\\n padding: 0 12px;\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-item-group .ant-menu-item-group-title {\\n padding: 8px;\\n font-size: 12px;\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-sub.ant-menu-inline {\\n background-color: #f7f7f7;\\n border-radius: 6px;\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-item {\\n margin: 0;\\n border-radius: 6px;\\n width: 100%;\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-item:after {\\n content: none;\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-item:not(.ant-menu-item-selected):hover {\\n background-color: #f2f5f9;\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-item:not(.ant-menu-item-selected):active {\\n background-color: #d8e4f0;\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-item-selected {\\n background-color: #e0eeff;\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-submenu-title {\\n margin: 0;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"subMenuContainer\": \"subMenuContainer--22aAI82E\",\n\t\"header\": \"header--39v9Ck6M\",\n\t\"headerTitle\": \"headerTitle--1PpR1CeL\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".appLink--3NF-bGgn {\\n display: flex;\\n width: 80px;\\n height: 80px;\\n color: #fff;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n}\\n .appLink--3NF-bGgn.circle--14KzQNw2,\\n .appLink--3NF-bGgn.square--3M40KQS3 {\\n background-color: rgba(255, 255, 255, 0.1);\\n }\\n .appLink--3NF-bGgn.small--1fzyi043 {\\n width: 56px;\\n height: 56px;\\n }\\n @media (max-height: 860px), (max-width: 1280px) {\\n .appLink--3NF-bGgn.small--1fzyi043.appLink--3NF-bGgn {\\n transform: scale(0.8);\\n }\\n .appLink--3NF-bGgn.small--1fzyi043 + .appName--j08CzuI2 {\\n font-size: 14px;\\n height: 21px;\\n }\\n }\\n @media (max-height: 700px), (max-width: 1024px) {\\n .appLink--3NF-bGgn.small--1fzyi043.appLink--3NF-bGgn {\\n transform: scale(0.7);\\n }\\n .appLink--3NF-bGgn.small--1fzyi043 + .appName--j08CzuI2 {\\n font-size: 12px;\\n height: 18px;\\n }\\n }\\n .appLink--3NF-bGgn.circle--14KzQNw2 {\\n border-radius: 40px;\\n }\\n .appLink--3NF-bGgn.square--3M40KQS3 {\\n border-radius: 10px;\\n }\\n .appLink--3NF-bGgn.installing--lXFC9zex {\\n opacity: 0.5;\\n }\\n .appLink--3NF-bGgn:hover .addIcon--epP8KruL {\\n display: block;\\n }\\n\\n.addIcon--epP8KruL {\\n position: absolute;\\n\\n font-size: 20px;\\n color: white;\\n display: none;\\n}\\n\\n.circleIcon--1wokrKBj {\\n right: -7px;\\n bottom: 5px;\\n}\\n\\n.squareIcon--eN7CAMpr {\\n right: -3px;\\n bottom: 5px;\\n}\\n\\n.appLink--3NF-bGgn:hover {\\n color: #fff;\\n}\\n\\n.appIcon--RPzLndbs {\\n width: 100%;\\n}\\n\\n.appName--j08CzuI2 {\\n display: block;\\n font-size: 16px;\\n line-height: 1.5;\\n height: 24px;\\n text-align: center;\\n}\\n\\n@media (max-height: 860px), (max-width: 1280px) {\\n .appLink--3NF-bGgn {\\n transform: scale(0.75);\\n }\\n .appName--j08CzuI2 {\\n font-size: 14px;\\n height: 21px;\\n }\\n}\\n\\n@media (max-height: 700px), (max-width: 1024px) {\\n .appLink--3NF-bGgn {\\n transform: scale(0.6);\\n }\\n .appName--j08CzuI2 {\\n font-size: 12px;\\n height: 18px;\\n }\\n}\\n\\n@media (max-height: 640px), (max-width: 900px) {\\n .appLink--3NF-bGgn {\\n transform: scale(0.5);\\n }\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"appLink\": \"appLink--3NF-bGgn\",\n\t\"circle\": \"circle--14KzQNw2\",\n\t\"square\": \"square--3M40KQS3\",\n\t\"small\": \"small--1fzyi043\",\n\t\"appName\": \"appName--j08CzuI2\",\n\t\"installing\": \"installing--lXFC9zex\",\n\t\"addIcon\": \"addIcon--epP8KruL\",\n\t\"circleIcon\": \"circleIcon--1wokrKBj\",\n\t\"squareIcon\": \"squareIcon--eN7CAMpr\",\n\t\"appIcon\": \"appIcon--RPzLndbs\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@media print {\\n .printDisplay--3WGVuqyv {\\n display: none;\\n }\\n}\\n\\n.printModalBody--2VtYeTjH\\n .ant-modal-confirm-body\\n > .anticon\\n + .ant-modal-confirm-title\\n + .ant-modal-confirm-content {\\n margin-left: 0px;\\n}\\n\\n.print-hide .ant-popover-inner-content {\\n padding: 6px 16px;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"printDisplay\": \"printDisplay--3WGVuqyv\",\n\t\"printModalBody\": \"printModalBody--2VtYeTjH\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"lSNA\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".appLink--mP_z7IEG {\\n display: flex;\\n width: 80px;\\n height: 80px;\\n color: #fff;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n\\n /* &:hover {\\n .addIcon {\\n display: block;\\n }\\n }*/\\n}\\n .appLink--mP_z7IEG.circle--JW0ZoLr6,\\n .appLink--mP_z7IEG.square--2c8quU2W {\\n background-color: rgba(255, 255, 255, 0.1);\\n }\\n .appLink--mP_z7IEG.small--wWzBnrSZ {\\n width: 56px;\\n height: 56px;\\n }\\n @media (max-height: 860px), (max-width: 1280px) {\\n .appLink--mP_z7IEG.small--wWzBnrSZ.appLink--mP_z7IEG {\\n transform: scale(0.8);\\n }\\n .appLink--mP_z7IEG.small--wWzBnrSZ + .appName--1BpRSnuD {\\n font-size: 14px;\\n height: 21px;\\n }\\n }\\n @media (max-height: 700px), (max-width: 1024px) {\\n .appLink--mP_z7IEG.small--wWzBnrSZ.appLink--mP_z7IEG {\\n transform: scale(0.7);\\n }\\n .appLink--mP_z7IEG.small--wWzBnrSZ + .appName--1BpRSnuD {\\n font-size: 12px;\\n height: 18px;\\n }\\n }\\n .appLink--mP_z7IEG.circle--JW0ZoLr6 {\\n border-radius: 40px;\\n }\\n .appLink--mP_z7IEG.square--2c8quU2W {\\n border-radius: 10px;\\n }\\n\\n.addIcon--2UVHPPZb {\\n position: absolute;\\n display: none;\\n font-size: 20px;\\n color: white;\\n}\\n.circleIcon--2sLTE17s {\\n right: -7px;\\n bottom: 5px;\\n}\\n\\n.squareIcon--pmcXX3-v {\\n right: -3px;\\n bottom: 5px;\\n}\\n\\n.appLink--mP_z7IEG:hover {\\n color: #fff;\\n}\\n\\n.appIcon--L8NJaQVT {\\n width: 100%;\\n}\\n\\n.appName--1BpRSnuD {\\n display: block;\\n font-size: 16px;\\n line-height: 1.5;\\n height: 24px;\\n text-align: center;\\n}\\n\\n@media (max-height: 860px), (max-width: 1280px) {\\n .appLink--mP_z7IEG {\\n transform: scale(0.75);\\n }\\n .appName--1BpRSnuD {\\n font-size: 14px;\\n height: 21px;\\n }\\n}\\n\\n@media (max-height: 700px), (max-width: 1024px) {\\n .appLink--mP_z7IEG {\\n transform: scale(0.6);\\n }\\n .appName--1BpRSnuD {\\n font-size: 12px;\\n height: 18px;\\n }\\n}\\n\\n@media (max-height: 640px), (max-width: 900px) {\\n .appLink--mP_z7IEG {\\n transform: scale(0.5);\\n }\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"appLink\": \"appLink--mP_z7IEG\",\n\t\"circle\": \"circle--JW0ZoLr6\",\n\t\"square\": \"square--2c8quU2W\",\n\t\"small\": \"small--wWzBnrSZ\",\n\t\"appName\": \"appName--1BpRSnuD\",\n\t\"addIcon\": \"addIcon--2UVHPPZb\",\n\t\"circleIcon\": \"circleIcon--2sLTE17s\",\n\t\"squareIcon\": \"squareIcon--pmcXX3-v\",\n\t\"appIcon\": \"appIcon--L8NJaQVT\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".displayBrickContainer--1fGhA4GN {\\n display: flex;\\n align-items: center;\\n}\\n .displayBrickContainer--1fGhA4GN .editIcon--21-1oPU0 {\\n visibility: hidden;\\n padding: 0 10px;\\n }\\n .displayBrickContainer--1fGhA4GN:hover .editIcon--21-1oPU0 {\\n visibility: visible;\\n }\\n .displayBrickContainer--1fGhA4GN .editIconVisible--1w-UUWDd {\\n visibility: visible;\\n }\\n.cursorPointer--1M-ZY55i {\\n cursor: pointer;\\n}\\n.customOverlay--QLGoGQcR.ant-popover-placement-bottom {\\n padding-top: 0;\\n }\\n.customOverlay--QLGoGQcR .ant-popover-arrow {\\n display: none;\\n }\\n.customOverlay--QLGoGQcR .ant-popover-inner {\\n background: none;\\n box-shadow: none;\\n }\\n.customOverlay--QLGoGQcR .ant-popover-inner-content {\\n padding: 0;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"displayBrickContainer\": \"displayBrickContainer--1fGhA4GN\",\n\t\"editIcon\": \"editIcon--21-1oPU0\",\n\t\"editIconVisible\": \"editIconVisible--1w-UUWDd\",\n\t\"cursorPointer\": \"cursorPointer--1M-ZY55i\",\n\t\"customOverlay\": \"customOverlay--QLGoGQcR\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".menuIcon--3rUFOkYC {\\n margin-right: 8px;\\n}\\n\\n.customButtonsContainer--1wynIuIu {\\n display: grid;\\n grid-gap: 8px;\\n grid-auto-flow: column;\\n align-items: center;\\n}\\n\\n.customButtonsContainer--1wynIuIu .moreButton--1HJQEX3O {\\n padding: 0 8px;\\n }\\n\\n.customButtonsContainer--1wynIuIu .noShapeButton--2y0g5AHo {\\n border: 0;\\n height: auto;\\n }\\n\\n.customButtonsContainer--1wynIuIu .ant-btn .anticon {\\n vertical-align: middle;\\n }\\n\\n.customButtonsContainer--1wynIuIu .circleShapeButton--ZmAlFEvY {\\n border-radius: 16px;\\n }\\n\\n.disabledMenuItem--JIL6b4V_ > a {\\n color: rgb(191, 191, 191);\\n}\\n\\n.dropdownBtnIconContainer--17ZPzovn .anticon {\\n float: left;\\n min-width: 12px;\\n margin-top: 5px;\\n margin-right: 8px;\\n font-size: 12px;\\n vertical-align: -0.1em;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn-icon {\\n color: #8c8c8c;\\n background: #f5f5f5;\\n border: none;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn-icon:hover {\\n color: #0071eb;\\n background: #d8ecff;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn-icon[disabled] {\\n color: #bfbfbf;\\n background: #f5f5f5;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn-icon.ant-btn {\\n font-size: 16px;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn-icon.ant-btn .anticon {\\n vertical-align: -0.125em;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn-icon.ant-btn-sm {\\n font-size: 14px;\\n width: 28px;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn-icon.ant-btn-lg {\\n font-size: 18px;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn-icon.ant-btn-lg .anticon {\\n vertical-align: middle;\\n }\\n\\n.moreIconButton--Pr6S5Ezg {\\n background: #f5f5f5;\\n color: #8c8c8c;\\n border: none;\\n border-radius: 16px;\\n}\\n\\n.moreIconButton--Pr6S5Ezg:hover {\\n color: #0071eb;\\n background: #d8ecff;\\n }\\n\\n.moreIconButton--Pr6S5Ezg[disabled] {\\n color: #bfbfbf;\\n background: #f5f5f5;\\n }\\n\\n.moreIconButton--Pr6S5Ezg.ant-btn {\\n font-size: 16px;\\n }\\n\\n.moreIconButton--Pr6S5Ezg.ant-btn .anticon {\\n vertical-align: -0.125em;\\n }\\n\\n.moreIconButton--Pr6S5Ezg.ant-btn-sm {\\n font-size: 14px;\\n width: 28px;\\n }\\n\\n.moreIconButton--Pr6S5Ezg.ant-btn-lg {\\n font-size: 18px;\\n }\\n\\n.moreIconButton--Pr6S5Ezg.ant-btn-lg .anticon {\\n vertical-align: middle;\\n }\\n\\n.dropdownMenuItem--3Zd2uG7j:hover {\\n background-color: #ecf6fd;\\n }\\n\\n.dropdownBtn--1FPH4NtC {\\n margin: -5px -12px;\\n padding: 5px 12px;\\n}\\n.dropdownBtnNormal--kN4PKT9N > a {\\n color: var(--antd-text-color);\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"menuIcon\": \"menuIcon--3rUFOkYC\",\n\t\"customButtonsContainer\": \"customButtonsContainer--1wynIuIu\",\n\t\"moreButton\": \"moreButton--1HJQEX3O\",\n\t\"noShapeButton\": \"noShapeButton--2y0g5AHo\",\n\t\"circleShapeButton\": \"circleShapeButton--ZmAlFEvY\",\n\t\"disabledMenuItem\": \"disabledMenuItem--JIL6b4V_\",\n\t\"dropdownBtnIconContainer\": \"dropdownBtnIconContainer--17ZPzovn\",\n\t\"iconButton\": \"iconButton--QkXiuZZ7\",\n\t\"moreIconButton\": \"moreIconButton--Pr6S5Ezg\",\n\t\"dropdownMenuItem\": \"dropdownMenuItem--3Zd2uG7j\",\n\t\"dropdownBtn\": \"dropdownBtn--1FPH4NtC\",\n\t\"dropdownBtnNormal\": \"dropdownBtnNormal--kN4PKT9N\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".easyops-icon {\\n width: 1em;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"pVnL\");","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"q1tI\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".logoBar--oqCw4Z63 {\\n position: relative;\\n height: var(--app-bar-height);\\n width: 100%;\\n padding: 0 22px 0 24px;\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n}\\n\\n.logoLink--_JNg0eeJ,\\n.logoLink--_JNg0eeJ:hover {\\n color: #fff;\\n}\\n\\n.menu-bar-collapsed .logoBar--oqCw4Z63 {\\n padding: 0 11px;\\n }\\n\\n.menu-bar-collapsed .logoLink--_JNg0eeJ {\\n width: 38px;\\n overflow: hidden;\\n }\\n\\n.first-rendered .logoBar--oqCw4Z63 {\\n transition: padding var(--menu-bar-collapse-transition-duration)\\n var(--menu-bar-collapse-transition-timing-function);\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"logoBar\": \"logoBar--oqCw4Z63\",\n\t\"logoLink\": \"logoLink--_JNg0eeJ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjZweCIgaGVpZ2h0PSIyNnB4IiB2aWV3Qm94PSIwIDAgMjYgMjYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+5Y2h54mH6L656KeS57uT5p6EL+WPs+S4ijwvdGl0bGU+CiAgICA8ZyBpZD0i6aG16Z2iLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CiAgICAgICAgPGcgaWQ9IuaWh+WtlyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIwMDguMDAwMDAwLCAtMTIzMi4wMDAwMDApIiBzdHJva2U9IiMyMTNBNzkiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgIDxnIGlkPSLor5Xlm77lsZXnpLotMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM0LjAwMDAwMCwgMTEwMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSLnu5/orqHljaHniYciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4LjAwMDAwMCwgMTMwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xODU3LDI1IEwxODU3LDYgQzE4NTcsMy4yMzg1NzYyNSAxODU5LjIzODU4LDEgMTg2MiwxIEwxODgxLDEgTDE4ODEsMSIgaWQ9IuWNoeeJh+i+ueinkue7k+aehC/lj7PkuIoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4NjkuMDAwMDAwLCAxMy4wMDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTE4NjkuMDAwMDAwLCAtMTMuMDAwMDAwKSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".launchpadLink--3NprEmht {\\n width: 24px;\\n height: 24px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n.launchpadIcon--3BH2aMKf {\\n vertical-align: top;\\n filter: grayscale(100%);\\n opacity: 0.8;\\n}\\n\\n.launchpadLink--3NprEmht:hover .launchpadIcon--3BH2aMKf {\\n filter: none;\\n opacity: 1;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"launchpadLink\": \"launchpadLink--3NprEmht\",\n\t\"launchpadIcon\": \"launchpadIcon--3BH2aMKf\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../node_modules/less-loader/dist/cjs.js??ref--15-2!./index.shadow.less\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--13-1!../../../../node_modules/postcss-loader/src/index.js??postcss!./MicroApp.shadow.css\");\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".faIcon--2IYQpP5k.svg-inline--fa {\\n width: 1em;\\n}\\n\\n.roundSquareBg--1bgTDK6y {\\n border-radius: 10%;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"faIcon\": \"faIcon--2IYQpP5k\",\n\t\"roundSquareBg\": \"roundSquareBg--1bgTDK6y\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = __webpack_public_path__ + \"assets/print-helper.80b6b0b5.png\";","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"wd/R\");","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../images/dashboard-title-decorator-left.svg\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = require(\"../images/dashboard-title-decorator-right.svg\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = require(\"../images/dashboard-title-decorator-center.svg\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host {\\n display: block;\\n}\\n\\n:host([hidden]) {\\n display: none;\\n}\\n\\n::slotted([slot=\\\"toolbar\\\"]),\\n::slotted([slot=\\\"bannerToolbar\\\"]) {\\n margin-left: var(--toolbar-button-gap);\\n}\\n\\n:host([dashboard-mode]) ::slotted([slot=\\\"toolbar\\\"]) {\\n margin-top: 20px;\\n margin-bottom: -4px;\\n}\\n\\n::slotted([slot=\\\"content\\\"]) {\\n min-width: 0;\\n}\\n\\n:host([overflow-x-auto]) ::slotted([slot=\\\"content\\\"]) {\\n overflow-x: auto;\\n}\\n\\n:host .micro-app-container {\\n padding: var(--page-padding);\\n}\\n\\n:host([has-title-bar]) .micro-app-container,\\n:host([has-toolbar]) .micro-app-container {\\n padding-top: var(--page-title-margin-top);\\n}\\n\\n.banner-container {\\n overflow: hidden;\\n padding: var(--page-card-gap);\\n background-color: var(--antd-component-background);\\n background-size: cover;\\n background-position: center;\\n}\\n\\n:host(:not([has-banner]):not([has-banner-title-bar]):not([has-banner-toolbar]))\\n .banner-container {\\n display: none;\\n}\\n\\n.header-container,\\n.banner-header-container {\\n display: none;\\n margin-bottom: var(--page-title-margin-bottom);\\n justify-content: flex-start;\\n align-items: center;\\n position: relative;\\n}\\n\\n.page-title,\\n.banner-page-title {\\n overflow: hidden;\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n}\\n\\n.toolbar,\\n.banner-toolbar {\\n display: flex;\\n justify-content: flex-end;\\n}\\n\\n:host([hide-toolbar]) .toolbar {\\n display: none;\\n}\\n\\n:host([has-title-bar]) .header-container,\\n:host([has-toolbar]) .header-container,\\n:host([has-banner-title-bar]) .banner-header-container,\\n:host([has-banner-toolbar]) .banner-header-container {\\n display: flex;\\n}\\n\\n:host([has-toolbar]) .header-container,\\n:host([has-banner-toolbar]) .banner-header-container {\\n justify-content: flex-end;\\n}\\n\\n:host([has-title-bar][has-toolbar]) .header-container,\\n:host([has-banner-title-bar][has-banner-toolbar]) .banner-header-container {\\n justify-content: space-between;\\n}\\n\\n:host([dashboard-mode]) .header-container {\\n display: block;\\n margin-bottom: var(--page-padding);\\n}\\n\\n:host([dashboard-mode]) .page-title {\\n width: 100%;\\n height: 76px;\\n justify-content: center;\\n}\\n\\n:host([dashboard-mode]) .page-title-before,\\n:host([dashboard-mode]) .page-title-after {\\n flex: 1;\\n height: 100%;\\n}\\n\\n:host([dashboard-mode]) .page-title-before {\\n background: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") right bottom\\n no-repeat;\\n}\\n\\n:host([dashboard-mode]) .page-title-after {\\n background: url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") left bottom\\n no-repeat;\\n}\\n\\n:host([dashboard-mode]) .page-title-content {\\n background: url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") center bottom\\n no-repeat;\\n background-size: 100% 45px;\\n}\\n\\n.main-container {\\n display: flex;\\n}\\n\\n.sub-menu-container {\\n display: none;\\n width: calc(var(--sub-menu-width) + var(--page-card-gap));\\n padding-right: var(--page-card-gap);\\n}\\n\\n:host([has-sub-menu]) .sub-menu-container {\\n display: block;\\n}\\n\\n.content-container {\\n flex: 1;\\n}\\n\\n.content-grid {\\n display: grid;\\n grid-gap: var(--page-card-gap);\\n gap: var(--page-card-gap);\\n}\\n\\n.content-grid.no-gap {\\n grid-gap: 0;\\n gap: 0;\\n}\\n\\n.logo-in-dashboard-mode {\\n position: absolute;\\n top: -6px;\\n left: 0;\\n color: rgba(255, 255, 255, 0.25);\\n}\\n\\n.btn-exit-dashboard-mode {\\n position: absolute;\\n right: 0;\\n top: 14px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n width: 36px;\\n height: 36px;\\n background: #192d49;\\n border-radius: 50%;\\n cursor: pointer;\\n font-size: 18px;\\n}\\n\\n.btn-exit-dashboard-mode:hover {\\n color: var(--antd-link-color);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"yXPU\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".fadedText--12EGjQ2N.ant-btn-text {\\n color: #8c8c8c;\\n }\\n\\n.iconButton--17JmWR-Q.ant-btn-icon {\\n color: #8c8c8c;\\n background: #f5f5f5;\\n border: none;\\n }\\n\\n.iconButton--17JmWR-Q.ant-btn-icon:hover {\\n color: #0071eb;\\n background: #d8ecff;\\n }\\n\\n.iconButton--17JmWR-Q.ant-btn-icon[disabled] {\\n color: #bfbfbf;\\n background: #f5f5f5;\\n }\\n\\n.iconButton--17JmWR-Q.ant-btn-icon.ant-btn {\\n font-size: 16px;\\n }\\n\\n.iconButton--17JmWR-Q.ant-btn-icon.ant-btn .anticon {\\n vertical-align: -0.125em;\\n }\\n\\n.iconButton--17JmWR-Q.ant-btn-icon.ant-btn-sm {\\n font-size: 14px;\\n width: 28px;\\n }\\n\\n.iconButton--17JmWR-Q.ant-btn-icon.ant-btn-lg {\\n font-size: 18px;\\n }\\n\\n.iconButton--17JmWR-Q.ant-btn-icon.ant-btn-lg .anticon {\\n vertical-align: middle;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fadedText\": \"fadedText--12EGjQ2N\",\n\t\"iconButton\": \"iconButton--17JmWR-Q\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".menuContainer--YRivW3PI .ant-menu-item > a,\\n.menuContainer--YRivW3PI .ant-menu-submenu-title > span {\\n display: flex;\\n align-items: center;\\n}\\n\\n.menuItemText--3XNIF7IK,\\n.menuContainer--YRivW3PI .ant-menu-item-group-title {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.menuItemIcon--3hI4x0Wb + .menuItemText--3XNIF7IK {\\n margin-left: 14px;\\n}\\n\\n.menuItemIcon--3hI4x0Wb {\\n display: flex;\\n justify-content: right;\\n align-items: center;\\n width: 14px;\\n height: 14px;\\n}\\n\\n.menuItemIcon--3hI4x0Wb > .anticon {\\n margin-right: 0;\\n}\\n\\n.menuItemText--3XNIF7IK {\\n transition: margin-left 250ms ease-out;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"menuContainer\": \"menuContainer--YRivW3PI\",\n\t\"menuItemText\": \"menuItemText--3XNIF7IK\",\n\t\"menuItemIcon\": \"menuItemIcon--3hI4x0Wb\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".desktop--1JaMR7SR {\\n display: grid;\\n grid-template-columns: repeat(8, 1fr);\\n}\\n .desktop--1JaMR7SR .cellWrapper {\\n justify-content: flex-start;\\n }\\n\\n.title--3zy3KX97 {\\n color: #fff;\\n font-size: 16px;\\n padding-bottom: 6px;\\n}\\n\\n.visited--2jqlxP-X {\\n padding-bottom: 24px;\\n margin-bottom: 20px;\\n border-bottom: 1px rgba(255, 255, 255, 0.25) solid;\\n}\\n\\n.favorites--3eAlvlwh .ant-spin-blur {\\n opacity: 1;\\n }\\n\\n.favorites--3eAlvlwh .ant-spin-blur::after {\\n opacity: 0;\\n }\\n\\n.modeWrapper--3Pm8epZV {\\n height: 0;\\n}\\n\\n.modeWrapper--3Pm8epZV .header--3jc7uzzb {\\n display: flex;\\n justify-content: space-between;\\n }\\n\\n.modeWrapper--3Pm8epZV .section--jbYIy0JY {\\n padding: 10px 30px 20px;\\n }\\n\\n.modeWrapper--3Pm8epZV .modeIcon--3b3FYay3 {\\n margin-left: 15px;\\n padding: 3px;\\n border-radius: 50%;\\n opacity: 0.8;\\n background: rgba(255, 255, 255, 0.1);\\n }\\n\\n.modeWrapper--3Pm8epZV .modeIcon--3b3FYay3:hover {\\n opacity: 1;\\n }\\n\\n.modeWrapper--3Pm8epZV .emptyTips--2uZul8VC {\\n font-size: 16px;\\n line-height: 24px;\\n }\\n\\n.modeWrapper--3Pm8epZV .emptyTips--2uZul8VC a {\\n color: #52a6f9;\\n }\\n\\n.modeWrapper--3Pm8epZV .emptyTips--2uZul8VC a:hover {\\n color: var(--antd-link-hover-color);\\n }\\n\\n.spin--2Tjf-TZs {\\n color: #8c8c8c;\\n width: 100%;\\n height: 200px;\\n line-height: 200px;\\n}\\n\\n.settingsContainer--2JMFYgL0 a {\\n color: #fff;\\n }\\n\\n.settingsContainer--2JMFYgL0 .settings--21WoAqnC {\\n cursor: pointer;\\n margin-right: 10px;\\n color: rgba(255, 255, 255, 0.7);\\n font-size: 13px;\\n transition-duration: 0.8s;\\n transition-property: transform;\\n }\\n\\n.settingsContainer--2JMFYgL0:hover .settings--21WoAqnC {\\n transform: rotate(180deg);\\n }\\n\\n.favoriteContainer--1AXIxGKL {\\n display: grid;\\n grid-template-columns: repeat(5, 1fr);\\n grid-gap: 2.5rem 7%;\\n gap: 2.5rem 7%;\\n}\\n\\n@media (max-height: 860px), (max-width: 1280px) {\\n .favoriteContainer--1AXIxGKL {\\n grid-gap: 1.7rem 4%;\\n gap: 1.7rem 4%;\\n }\\n}\\n\\n@media (max-height: 720px), (max-width: 1024px) {\\n .favoriteContainer--1AXIxGKL {\\n grid-gap: 1rem 3%;\\n gap: 1rem 3%;\\n }\\n .visited--2jqlxP-X {\\n padding-bottom: 18px;\\n margin-bottom: 15px;\\n }\\n}\\n\\n@media (max-height: 640px), (max-width: 900px) {\\n .favoriteContainer--1AXIxGKL {\\n grid-gap: 0.8rem 2%;\\n gap: 0.8rem 2%;\\n }\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"desktop\": \"desktop--1JaMR7SR\",\n\t\"title\": \"title--3zy3KX97\",\n\t\"visited\": \"visited--2jqlxP-X\",\n\t\"favorites\": \"favorites--3eAlvlwh\",\n\t\"modeWrapper\": \"modeWrapper--3Pm8epZV\",\n\t\"header\": \"header--3jc7uzzb\",\n\t\"section\": \"section--jbYIy0JY\",\n\t\"modeIcon\": \"modeIcon--3b3FYay3\",\n\t\"emptyTips\": \"emptyTips--2uZul8VC\",\n\t\"spin\": \"spin--2Tjf-TZs\",\n\t\"settingsContainer\": \"settingsContainer--2JMFYgL0\",\n\t\"settings\": \"settings--21WoAqnC\",\n\t\"favoriteContainer\": \"favoriteContainer--1AXIxGKL\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".breadcrumbContainer--2uOYawcd {\\n display: flex;\\n}\\n\\n.workspaceButton--1mc8P_il {\\n margin-right: 16px;\\n height: 24px;\\n line-height: 24px;\\n padding: 0 8px;\\n display: flex;\\n align-items: center;\\n background-color: #d6e8fb;\\n color: var(--text-color-default);\\n border-radius: 6px;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"breadcrumbContainer\": \"breadcrumbContainer--2uOYawcd\",\n\t\"workspaceButton\": \"workspaceButton--1mc8P_il\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"sourceRoot":""}
|