@next-bricks/basic-bricks 1.258.11 → 1.258.12
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/deploy/contract.yaml +84 -84
- package/dist/bricks.json +31 -31
- package/dist/index.76908742.js +10 -0
- package/dist/index.76908742.js.map +1 -0
- package/dist/stories.json +12 -0
- package/package.json +2 -2
- package/dist/index.8524e67d.js +0 -10
- package/dist/index.8524e67d.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./bricks/basic-bricks/src/micro-app/MicroApp.shadow.css","webpack:///delegated ./node_modules/rc-virtual-list/es/index.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/grid-layout/gridLayout.module.css","webpack:///./bricks/basic-bricks/src/multiple-columns-card/index.shadow.less?1d87","webpack:///delegated ./node_modules/@ant-design/compatible/es/index.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/resizable-box/ResizableBox.shadow.css?9caf","webpack:///./bricks/basic-bricks/src/header-bar/index.headerBar.less","webpack:///delegated ./node_modules/prop-types/index.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/app-bar/FavoriteDesktopCell/FavoriteDesktopCell.module.css","webpack:///./bricks/basic-bricks/src/app-bar/SearchBar/SearchBar.module.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/general-drawer/index.shadow.less","webpack:///./bricks/basic-bricks/src/general-custom-buttons/index.module.css","webpack:///./bricks/basic-bricks/src/app-bar/DesktopCustom/DesktopCustom.module.css","webpack:///./bricks/basic-bricks/src/images/dashboard-title-decorator-center.svg","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-popup/style.shadow.css?f084","webpack:///./bricks/basic-bricks/src/menu-bar/CollapseBar/CollapseBar.module.css","webpack:///./bricks/basic-bricks/src/app-bar/DesktopSlider/DesktopSlider.module.css","webpack:///./bricks/basic-bricks/src/general-card/index.shadow.less","webpack:///./bricks/basic-bricks/src/general-modal/index.shadow.less?affd","webpack:///./bricks/basic-bricks/src/index-card/IndexCard.shadow.css","webpack:///./bricks/basic-bricks/src/fold-brick/style.module.css","webpack:///delegated ./node_modules/process/browser.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/menu-bar/AppSubMenu/AppSubMenu.module.css","webpack:///delegated ./node_modules/react-i18next/dist/es/index.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/_/public-path.js","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/sub-menu/index.module.css","webpack:///./bricks/basic-bricks/src/general-button/GeneralButton.module.css","webpack:///./bricks/basic-bricks/src/index-card/IndexCard.shadow.css?931a","webpack:///./bricks/basic-bricks/src/general-card/index.shadow.less?53fa","webpack:///./bricks/basic-bricks/src/app-bar/Launchpad/Launchpad.module.css","webpack:///./bricks/basic-bricks/src/easy-view/EasyView.shadow.css?7bbf","webpack:///./bricks/basic-bricks/src/general-title/GeneralTitle.module.css","webpack:///./bricks/basic-bricks/src/list-container/ListContainer.module.css","webpack:///./bricks/basic-bricks/src/multiple-columns-card/index.shadow.less","webpack:///./node_modules/css-loader/dist/runtime/getUrl.js","webpack:///./bricks/basic-bricks/src/app-bar/DesktopDirContent/DesktopDirContent.module.css","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:///delegated ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js from dll-reference dll","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/inherits.js from dll-reference dll","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/utils.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/src/getExtendedLocationDescriptor.ts","webpack:///./node_modules/@next-libs/basic-components/src/Link.tsx","webpack:///./node_modules/@next-libs/basic-components/src/utils/getColor.ts","webpack:///./node_modules/@next-libs/basic-components/dist/esm/GeneralIcon.module.css?b7cd","webpack:///./node_modules/@next-libs/basic-components/src/GeneralIcon.tsx","webpack:///./node_modules/@next-libs/basic-components/dist/esm/Sidebar.module.css?d5e2","webpack:///./node_modules/@next-libs/basic-components/src/Sidebar.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/AppMenu/MenuTooltip/MenuTooltip.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/AppMenu/AppMenu.module.css?3946","webpack:///./bricks/basic-bricks/src/menu-bar/AppMenu/AppMenu.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/LogoBar/LogoBar.module.css?976a","webpack:///./bricks/basic-bricks/src/menu-bar/LogoBar/LogoBar.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/CollapseBar/CollapseBar.module.css?c6f4","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?163e","webpack:///./bricks/basic-bricks/src/menu-bar/AppSubMenu/AppSubMenu.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/MenuBar/MenuBar.module.css?b2c4","webpack:///./node_modules/@next-libs/storage/src/JsonStorage.ts","webpack:///./bricks/basic-bricks/src/menu-bar/MenuBar/MenuBar.tsx","webpack:///./bricks/basic-bricks/src/menu-bar/index.tsx","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?96c1","webpack:///./bricks/basic-bricks/src/app-bar/SearchBar/SearchBar.module.css?dd0c","webpack:///./bricks/basic-bricks/src/app-bar/SearchBar/SearchBar.tsx","webpack:///./bricks/basic-bricks/src/app-bar/DesktopCell/DesktopCell.module.css?4651","webpack:///./bricks/basic-bricks/src/app-bar/DesktopApp/DesktopApp.module.css?f88e","webpack:///./bricks/basic-bricks/src/app-bar/utils/getImageUrl.tsx","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?089f","webpack:///./bricks/basic-bricks/src/app-bar/DesktopDir/DesktopDir.tsx","webpack:///./bricks/basic-bricks/src/app-bar/DesktopCustom/DesktopCustom.module.css?f318","webpack:///./bricks/basic-bricks/src/app-bar/DesktopCustom/DesktopCustom.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/micro-app-standalone-sdk/src/api/micro_app_standalone/launchpad/getLaunchpadInfo.ts","webpack:///./node_modules/@next-sdk/micro-app-standalone-sdk/src/api/micro_app_standalone/runtime/searchMicroAppStandalone.ts","webpack:///./bricks/basic-bricks/src/shared/DeferredService.ts","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?ac56","webpack:///./bricks/basic-bricks/src/app-bar/Desktop/Desktop.tsx","webpack:///./bricks/basic-bricks/src/app-bar/DesktopSlider/DesktopSlider.module.css?eaca","webpack:///./bricks/basic-bricks/src/app-bar/MyDesktop/MyDesktop.module.css?5b11","webpack:///./bricks/basic-bricks/src/app-bar/FavoriteDesktopCell/FavoriteDesktopCell.module.css?9198","webpack:///./bricks/basic-bricks/src/app-bar/FavoriteDesktopCell/FavoriteDesktopCell.tsx","webpack:///./bricks/basic-bricks/src/app-bar/site-map/SiteMap.module.css?f073","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?ea47","webpack:///./bricks/basic-bricks/src/app-bar/DesktopDirContent/DesktopDirContent.tsx","webpack:///./bricks/basic-bricks/src/app-bar/Launchpad/Launchpad.module.css?7d9a","webpack:///./bricks/basic-bricks/src/app-bar/Launchpad/Launchpad.tsx","webpack:///./bricks/basic-bricks/src/app-bar/LaunchpadWrapper/LaunchpadWrapper.module.css?f6f1","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?cd16","webpack:///./bricks/basic-bricks/src/app-bar/AppBarBreadcrumb/AppBarBreadcrumb.tsx","webpack:///./bricks/basic-bricks/src/general-button/GeneralButton.module.css?d214","webpack:///./bricks/basic-bricks/src/general-button/GeneralButton.tsx","webpack:///./bricks/basic-bricks/src/app-bar/AppDocumentLink/AppDocumentLink.module.css?71c8","webpack:///./bricks/basic-bricks/src/app-bar/AppDocumentLink/AppDocumentLink.tsx","webpack:///./bricks/basic-bricks/src/app-bar/AppSetting/AppSetting.module.css?0e63","webpack:///./bricks/basic-bricks/src/app-bar/AppSetting/AppSetting.tsx","webpack:///./bricks/basic-bricks/src/app-bar/License-notification/LicenseInfo.module.css?03f8","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/AppBarTips/AppBarTips.tsx","webpack:///./bricks/basic-bricks/src/app-bar/AppBar/AppBar.module.css?fa92","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/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/presentational-bricks/src/brick-result/components/IllustrationWrapper.tsx","webpack:///./bricks/presentational-bricks/src/brick-illustration/index.module.css?4f0f","webpack:///./bricks/basic-bricks/src/page-error/PageError.tsx","webpack:///./bricks/presentational-bricks/src/brick-illustration/BrickIllustration.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?daea","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?4e6b","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?0fa6","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/gridLayout.module.css?095c","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?a30d","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?f754","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?1d55","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?4683","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?8293","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?f128","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?d845","webpack:///./bricks/basic-bricks/src/general-title/GeneralTitle.tsx","webpack:///./bricks/basic-bricks/src/general-title/index.tsx","webpack:///./bricks/basic-bricks/src/launchpad-button/index.tsx","webpack:///./bricks/basic-bricks/src/app-bar-breadcrumb/AppbarBreadcrumb.module.css?0de6","webpack:///./bricks/basic-bricks/src/app-bar-breadcrumb/AppbarBreadcrumb.tsx","webpack:///./bricks/basic-bricks/src/app-bar-breadcrumb/index.tsx","webpack:///./bricks/basic-bricks/src/app-bar-setting/AppBarSetting.tsx","webpack:///./bricks/basic-bricks/src/app-bar-setting/index.tsx","webpack:///./bricks/basic-bricks/src/event-agent/index.ts","webpack:///./bricks/basic-bricks/src/resizable-box/ResizableBox.tsx","webpack:///./bricks/basic-bricks/src/resizable-box/index.tsx","webpack:///./bricks/basic-bricks/src/general-text/GeneralText.tsx","webpack:///./bricks/basic-bricks/src/general-text/index.tsx","webpack:///./bricks/basic-bricks/src/app-document-link/AppDocumentLink.tsx","webpack:///./bricks/basic-bricks/src/app-document-link/index.tsx","webpack:///./bricks/basic-bricks/src/flex-layout/index.tsx","webpack:///./bricks/basic-bricks/src/general-popup/GeneralPopup.tsx","webpack:///./bricks/basic-bricks/src/general-popup/index.tsx","webpack:///./bricks/basic-bricks/src/app-bar-logo/AppBarLogo.tsx","webpack:///./bricks/basic-bricks/src/app-bar-logo/index.tsx","webpack:///./bricks/basic-bricks/src/app-bar-wrapper/AppBarWrapper.tsx","webpack:///./bricks/basic-bricks/src/app-bar-wrapper/index.tsx","webpack:///./bricks/basic-bricks/src/general-heading/GeneralHeading.tsx","webpack:///./bricks/basic-bricks/src/general-heading/index.tsx","webpack:///./bricks/basic-bricks/src/quick-visit-menu/index.module.css?489d","webpack:///./bricks/basic-bricks/src/quick-visit-menu/MenuTag.tsx","webpack:///./node_modules/react-sortable-hoc/dist/react-sortable-hoc.esm.js","webpack:///./bricks/basic-bricks/src/quick-visit-menu/FavouriteMenu.tsx","webpack:///./bricks/basic-bricks/src/quick-visit-menu/QuickVisitMenu.tsx","webpack:///./bricks/basic-bricks/src/quick-visit-menu/index.tsx","webpack:///./bricks/basic-bricks/src/virtual-list-container/style.module.css?5f11","webpack:///./bricks/basic-bricks/src/virtual-list-container/VirtualListContainer.tsx","webpack:///./bricks/basic-bricks/src/virtual-list-container/index.tsx","webpack:///./bricks/basic-bricks/src/data-providers/HttpRequest.ts","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/app-bar-wrapper/AppBarWrapper.shadow.css","webpack:///./bricks/basic-bricks/src/print-button/PrintButton.module.css","webpack:///./bricks/basic-bricks/src/app-bar/DesktopApp/DesktopApp.module.css","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/app-bar/MyDesktop/MyDesktop.module.css","webpack:///./bricks/basic-bricks/src/images/logo-139w.png","webpack:///./bricks/basic-bricks/src/app-bar/AppSetting/AppSetting.module.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js from dll-reference dll","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/app-bar/DesktopCell/DesktopCell.module.css","webpack:///delegated ./node_modules/@next-core/illustrations/dist/index.esm.js from dll-reference dll","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:///./node_modules/invariant/browser.js","webpack:///./bricks/basic-bricks/src/app-bar-wrapper/AppBarWrapper.shadow.css?254e","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:///./bricks/basic-bricks/src/app-bar/Desktop/Desktop.module.css","webpack:///delegated ./node_modules/classnames/index.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/fold-brick-v2/style.shadow.less?0e42","webpack:///./bricks/basic-bricks/src/images/card-bg-bottom-left.svg","webpack:///./node_modules/@next-libs/basic-components/dist/esm/GeneralIcon.module.css","webpack:///./bricks/basic-bricks/src/general-popup/style.shadow.css","webpack:///./node_modules/@next-libs/basic-components/dist/esm/Sidebar.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?d9a6","webpack:///./bricks/basic-bricks/src/general-anchor/GeneralAnchor.module.css","webpack:///./bricks/presentational-bricks/src/brick-illustration/index.module.css","webpack:///delegated ./node_modules/js-yaml/index.js from dll-reference dll","webpack:///delegated ./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/app-bar/License-notification/LicenseInfo.module.css","webpack:///delegated ./node_modules/@next-core/brick-http/dist/index.esm.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/app-bar/AppBar/AppBar.module.css","webpack:///./bricks/basic-bricks/src/resizable-box/ResizableBox.shadow.css","webpack:///./bricks/basic-bricks/src/app-bar/site-map/SiteMap.module.css","webpack:///./node_modules/@fortawesome/fontawesome-svg-core/styles.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js from dll-reference dll","webpack:///delegated ./node_modules/antd/es/index.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/advance-list-container/style.module.css","webpack:///./bricks/basic-bricks/src/app-bar/AppBarBreadcrumb/AppBarBreadcrumb.module.css","webpack:///./bricks/basic-bricks/src/quick-visit-menu/index.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:///delegated ./node_modules/@babel/runtime/helpers/defineProperty.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/easy-view/EasyView.shadow.css","webpack:///./bricks/basic-bricks/src/sub-menu-filter/index.module.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/app-bar/DesktopDir/DesktopDir.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:///./bricks/basic-bricks/src/app-bar-breadcrumb/AppbarBreadcrumb.module.css","webpack:///./bricks/basic-bricks/src/menu-bar/LogoBar/LogoBar.module.css","webpack:///delegated ./node_modules/react/index.js from dll-reference dll","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/defineProperty.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/images/card-bg-top-right.svg","webpack:///./bricks/basic-bricks/src/virtual-list-container/style.module.css","webpack:///./bricks/basic-bricks/src/app-bar/AppDocumentLink/AppDocumentLink.module.css","webpack:///./bricks/basic-bricks/src/menu-bar/MenuBar/MenuBar.module.css","webpack:///./bricks/basic-bricks/src/app-bar/LaunchpadButton/LaunchpadButton.module.css","webpack:///./bricks/basic-bricks/src/general-drawer/index.shadow.less?6c9f","webpack:///./bricks/basic-bricks/src/micro-app/MicroApp.shadow.css?f0e3","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/objectSpread.js from dll-reference dll","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/createClass.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/app-bar/LaunchpadWrapper/LaunchpadWrapper.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/popover-container/PopoverContainer.module.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/extends.js from dll-reference dll","webpack:///./bricks/basic-bricks/src/menu-bar/AppMenu/AppMenu.module.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/asyncToGenerator.js from dll-reference dll"],"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_API_IMPORT___","___CSS_LOADER_GET_URL_IMPORT___","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","push","locals","result","default","toString","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_REPLACEMENT_3___","__webpack_public_path__","window","PUBLIC_ROOT","PUBLIC_ROOT_WITH_VERSION","url","options","test","slice","hash","needQuotes","concat","replace","cssWithMappingToString","list","this","map","item","content","join","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","SWITCH_THEME","LIGHT_THEME","DARK_THEME","SEARCH_BY_NAME_KEYWORD","FORBIDDEN","NOT_FOUND","SERVER_ERROR","QUICK_ACCESS","NO_VISIT_ACCESS","RECOMMEND_SEARCH","SEARCH_RESULT_EMPTY","ENTER_KEY_WORDS","ADD_TO_QUICK_ACCESS","REMOVE_FROM_QUICK_ACCESS","MANAGE","i18next","addResourceBundle","en","zh","getNewUIStatus","isSetPageTitleStyle","getFeatureFlags","getCurrentRoute","getRuntime","flags","featureFlag","bricks","tplNames","some","v","includes","brick","PageTitle","pageTitle","pageTitleScale","dashboardMode","useApplyPageTitle","isShowNewUiMode","scale","decoratorStyle","backgroundSize","className","style","display","overflow","textOverflow","whiteSpace","fontSize","height","fontWeight","lineHeight","SvgLogo31","props","xmlns","xmlnsXlink","width","fill","fillRule","transform","xlinkHref","mask","BtnExitDashboardMode","role","viewBox","focusable","data-icon","aria-hidden","MicroApp","bannerPageTitle","bannerStyle","noGap","hideLogo","hideExitBtn","dashboard_mode_logo_url","getBrandSettings","pageTitleStyle","classNames","src","MicroViewElement","constructor","super","shadowRoot","attachShadow","styleElement","document","createElement","textContent","styles","appendChild","_mountPoint","type","Boolean","Number","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","_modeDashboardExitEmitter","emit","selector","querySelector","slot","assignedNodes","node","hidden","UpdatingElement","customElements","define","getExtendedLocationDescriptor","_to","currentLocation","_to$search","keepCurrentSearch","to","_objectWithoutProperties","_excluded","currentUrlSearchParams","URLSearchParams","search","newUrlSearchParams","entries","has","append","_objectSpread","Link","innerRef","noEmptyHref","disabled","useNativeEvent","onClick","rest","history","getHistory","setCurrentLocation","useState","location","linkRef","useRef","useEffect","listen","loc","computedHref","useMemo","href","createLocation","createHref","handleClick","useCallback","preventDefault","defaultPrevented","button","target","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","link","current","removeEventListener","undefined","React","_extends","cursor","color","ref","Colors","COLORS_MAP","green","background","borderColor","red","blue","orange","cyan","purple","geekblue","gray","getColor","_COLORS_MAP","LegacyIcon","_LegacyIcon","isGradientColor","startColor","endColor","GeneralIcon","_ref","icon","_icon","bg","size","shape","reverseBgColor","onMouseEnter","onMouseLeave","showEmptyIcon","_style","noPublicRoot","imageLoading","iconClassName","memoizedIcon","useDeepEqualMemo","memoizedStyle","getStyle","mergedStyle","backgroundColor","getDefaultIcon","iconNode","_ref2","Avatar","Icon","omit","component","BrickIcon","category","classnames","cssStyle","roundSquareBg","Fragment","imgSrc","_PUBLIC_ROOT","startsWith","getBasePath","imgStyle","loading","_icon2","_icon3","assign","iconType","_ref3","migrateV3","gradientColor","generalIconId","lib","uniqueId","mergedStyleByBg","theme","faIcon","prefix","migrateProps","iconStyle","verticalAlign","FontAwesomeIcon","gradientIconDirection","direction","x1","y1","x2","y2","position","offset","stopColor","isEqual","isGroup","isSubMenu","initMenuItemAndMatchCurrentPathKeys","menuItems","pathname","parentCursor","selectedKeys","openedKeys","forEach","tmp","items","defaultExpanded","parsePath","escapedPath","match","matchPath","path","exact","activeMatchSearch","getMatchOfSearch","Array","isArray","activeIncludes","include","isObject","_parsedPath","parsedPath","hasSearch","activeExcludes","parsedPathWithSearch","matchMenuItem","String","currentSearch","toSearch","Sidebar","Component","_defineProperty","state","unlisten","setState","componentWillUnmount","renderSimpleMenuItem","ignoreTitle","Menu","Item","title","text","menuItemIcon","menuItemText","renderGroupMenu","ItemGroup","innerItem","renderMenuItem","renderSubMenu","SubMenu","collapsed","inlineIndent","defaultOpenKeys","uniq","defaultSelectedKeys","borderRight","menuContainer","inlineCollapsed","MenuTooltip","tooltipProps","visible","placement","overlayClassName","children","AppMenu","menu","appMenu","menuGroup","menuTitleLink","menuTitleIcon","menuTitleText","empty","LogoBar","brand","currentApp","getCurrentApp","flag","isUseUI8","layoutType","logo","menu_bar_logo_url","paddingRight","marginTop","logoBar","ui8","ui5","menu_bar_logo_no_link","logoLink","SvgCollapse","stroke","strokeLinecap","strokeLinejoin","cx","cy","CollapseBar","collapseBar","menuBar","collapse","isCollapsed","AppSubMenu","subMenu","subMenuRef","body","classList","add","remove","appSubMenu","data-testid","appSubMenuTitle","JsonStorage","storage","setItem","JSON","stringify","getItem","parse","removeItem","clear","MenuBar","app","useCurrentApp","tipList","setTipList","localStorage","createRef","toggle","handleShowTips","detail","filter","closable","tipKey","moment","unix","sidebarHeight","top","developing","status","MenuBarElement","CustomerApi_getExpiration","http","SvgLaunchpad","SearchBar","focus","setFocus","searchInputRef","element","Promise","resolve","then","searchBar","inputContainer","stopPropagation","placeholder","onChange","onKeyDown","keyCode","which","onFocus","onBlur","getImageUrl","defaultAppIcon","icons","large","STANDALONE_MICRO_APPS","standaloneMode","currentVersion","PUBLIC_CDN","DesktopApp","onAddClick","isFavorite","showAddIcon","installing","installStatus","appLink","iconBackground","circle","square","homepage","resetWorkspaceStack","appIcon","addIcon","circleIcon","squareIcon","appName","localeName","spin","DesktopDirContext","createContext","useDesktopDirContext","useContext","DesktopDir","setDesktopDir","dirLink","dir","coordinates","x","clientX","y","clientY","activeIndex","dirName","DesktopCustom","responsive","LaunchpadApi_createCollection","_asyncToGenerator","data","post","_x","_x2","apply","arguments","LaunchpadApi_listCollection","params","UserAdminApi_getUserInfoV2","username","LaunchpadApi_getLaunchpadInfo","RuntimeApi_searchMicroAppStandalone","DeferredService","task","schedulePrefetch","preFetchScheduled","preFetchLaunchpadInfo","preFetchId","fetch","requestIdleCallback","setTimeout","eager","promise","cancelIdleCallback","clearTimeout","isFetching","catch","error","console","firstFetchPromise","finally","launchpadService","getAuth","org","settings","columns","rows","microApps","desktops","siteSort","page","pageSize","interceptorParams","ignoreLoadingBar","noAbortOnRouteChange","setFavorites","favoritesLoaded","launchpadInfo","storyboard","locales","lang","resources","getFixedT","keys","removeResourceBundle","storyboards","baseInfo","launchpad","initValue","loaded","deferredLaunchpadInfo","doFetchLaunchpadInfo","deferredFavorites","doFetchFavorites","init","initialized","runtime","getDesktops","getMicroApps","getLaunchpadSettings","getLaunchpadSiteMap","customList","desktop","flat","setMicroApps","setMaxVisitorLength","maxVisitorLength","preFetchFavorites","fetchFavoriteList","favoriteList","fetchLaunchpadInfo","getBaseInfo","getFavoritesLength","typeAdaptor","filteredFavoriteList","launchpadCollection","syncValidRecentlyVisitor","getAllVisitors","reduce","pre","find","f","processVisitor","setAllVisitors","setAsFavorite","deleteFavorite","LaunchpadApi_deleteCollection","instanceId","delete","microAppId","customItemId","storageKey","getItemIndex","findIndex","hasItem","visitors","index","splice","unshift","pop","pushVisitor","getVisitor","getRealDesktopItem","custom","setFavoriteAsVisitor","getSitemapList","curMicroApps","internal","siteMapList","apps","row","pick","DesktopCell","addItemToFavorite","Modal","warning","zIndex","onSetAsFavorite","cellWrapper","positionLeft","cellItem","active","LaunchpadSettingsContext","useLaunchpadSettingsContext","Desktop","padding","arrowWidthPercent","desktopCount","gridTemplateColumns","gridTemplateRows","FavoriteDesktopCell","onDelete","realLink","baseUrl","baseURI","open","LeacySiteMap","onLoad","scrollContainer","containerStyle","onWheel","siteMapContainer","categoryList","groupWrapper","group","ModeType","SiteMap","forwardRef","remberMode","Sitemap","MyDesktop","recentlyVisitedList","setFavoriteList","isLoading","setIsLoading","setMode","siteMapRef","deskContainerRef","siteMapHeight","setSiteMapHeight","getFavoriteList","handleMode","handleOnSetAsFavorite","handleSiteMapLoad","siteMapDom","getBoundingClientRect","bottom","renderRecentlyVisited","visited","renderMyFavorites","section","favorites","indicator","spinning","delay","isEmpty","emptyTips","marginLeft","favoriteContainer","renderSiteMap","flex","modeWrapper","header","Favorities","modeIcon","settingsContainer","rememberedDesktopCursor","DesktopSlider","desktopCursor","setDesktopCursor","appCursor","setAppCursor","filteredDesktop","mapItemToDesktop","transformCustomItem","validItems","id2app","acc","set","Map","chunk","q","lowerQ","toLowerCase","lockRef","throttledSetDesktopCursor","slideLeft","slideRight","onKeydown","currentDesktop","cell","Math","floor","innerWidth","innerHeight","next","deltaXRef","deltaYRef","responsibleRef","resetDeltaTimeoutRef","sliderChildrenLength","deltaX","deltaY","axisRef","abs","threshold","tryToSlideByWheel","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","getFilterMicroApps","setQ","desktopDir","setLoading","timer","pollingRunningAppStatus","reloadMicroApps","onWillClose","handleHttpError","startFetchLaunchpadInfo","Provider","loadingWrapper","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","useCapture","attachEvent","getMods","modifier","mods","getKeys","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","winListendFocus","_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","capture","isElementBind","clearModifier","_api","getPressedKeyString","getModifier","fromCharCode","deleteScope","newScope","handlers","getPressedKeyCodes","isPressed","srcElement","isContentEditable","readOnly","trigger","unbind","keysInfo","info","_len","args","_key","keyMap","_hotkeys","noConflict","deep","LaunchpadButton","setVisible","handleLaunchpadWillClose","toggleLaunchpadEffect","preVisble","curVisble","launchpadLink","launchpadIcon","AppBarBreadcrumb","useRecentApps","breadcrumbItems","noCurrentApp","breadcrumbNoCurrentApp","useCurrentMenuTitle","breadcrumb","breadcrumbContainer","separator","showCurrentAppIcon","menuIcon","GeneralButton","buttonName","buttonType","buttonDanger","buttonIcon","buttonShape","buttonSize","buttonProps","buttonUrl","buttonHref","disabledTooltip","tooltip","tooltipConfig","fadedText","buttonStyle","arrowPointAtCenter","overlayStyle","overlayInnerStyle","getButtonNode","iconButton","navIcon","pointerEvents","danger","AppDocumentLink","documentId","isInNavbar","useTranslation","showAppDocumentLink","docLink","docId","redirectToDocHomeIfNotFound","docLinkContainer","AppSetting","userShowValue","currentLang","language","appsTheme","getMiscSettings","getCurrentTheme","userShowValueFlag","avatarSrc","setAvatarSrc","accountEntryEnabled","setAccountEntry","avatarProps","marginRight","favicon","isEnable","userInfo","user_icon","getCustomizedLogOutLink","logOutPage","config","customizedLogOutPageInNoAuthGuardMode","themeText","ssoEnabled","hideLogoutEnabled","switchLanguageEnabled","switchThemeEnable","supportedApps","handleSwitchLanguage","changeLanguage","reload","DropdownIconStyle","minWidth","NO_AUTH_GUARD","overlay","dropdownMenuItem","sessionStorage","Divider","dropdownBtn","obj","batchSetAppsLocalTheme","substr","data-id","usernameStyle","dropdownIconStyle","getUnionKey","notificationFactory","expires","handleClose","notification","close","handleDelay","orgId","put","message","success","err","duration","description","highlight","format","btn","closeBtn","AppBarTips","isCenter","closeBtnRef","justifyContent","boxSizing","rel","label","paddingLeft","alignItems","AppBar","useCurrentMode","hideLaunchpadButton","licenseInfoEnabled","baseTitle","base_title","updating","notificationTime","now","expiringDismissed","expiringDismissedUntil","processLiscenseExpires","handleCloseTips","targetKey","dispatchEvent","CustomEvent","mainElement","getElementById","iframeMainElement","appBar","appBarContent","titleContainer","margin","actionsContainer","AppBarElement","_breadcrumb","GeneralButtonElement","cancelable","warn","buttonClick","dataSource","disableAfterClick","_handleClick","RedirectToElement","toHref","useHref2","href2","toLocation","locationsAreEqual","PageNotFound","textAlign","PageNotFoundElement","IconSize","HttpStatusCode","iconSizeMap","Small","maxWidth","Middle","Large","XLarge","Unset","IllustrationWrapper","imageStyle","useNewIllustration","useCurrentTheme","isFeatureFlag","useFeatureFlags","isSupportedApp","supportNewIllustrations","image","illustrationConfig","translateIllustrationConfig","getIllustration","objectFit","BrickIllustration","footer","renderHeader","renderFooter","illustrationWrapper","feedback","guide","httpCodeIllustrationMap","PageError","httpCodeItem","code","isException","PageErrorElement","LoadingBar","requestsCount","setRequestsCount","count","requestStart","requestEnd","LoadingBarElement","HTMLElement","connectedCallback","disconnectedCallback","PageTitleElement","IndexCard","gridGap","contentGridGap","IndexCardElement","__unstable_doNotDecorate","_contentGridGap","_title","HomeRedirectElement","appId","redirectUrl","realUrl","query","$ne","fields","excludeInstalling","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","compactMode","cardContentWrapperStyle","paddingBottom","setPaddingBottom","fixedStyle","setFixedStyle","footerRef","handleFooter","rootNodeRef","getRootNode","host","rootNodeRect","resizeObserver","ResizeObserver","observe","disconnect","buttons","renderButtons","extra","gridTemplate","bordered","compactCardContainer","generalCardContainerHoverable","hoverable","GeneralCardElement","_shadowRoot","footerSlot","_getFooterSlot","hasFooter","listenOnClick","nodeName","idEventNameMap","emitEvent","eventDetailMap","_operationBtns","eventName","needData","_checkFooterSlot","featureFlags","topOperationConf","isThirdLevel","thirdLevelHeaderTitle","enableCompactUi","isShowTooltip","setIsShowTooltip","thirdLevelHeaderTitleRef","scrollHeight","offsetHeight","subMenuContainer","isCompact","useBrick","isThirdLevelHeaderTitle","headerTitle","SubMenuElement","titleAlignPropertyMap","start","center","GeneralModal","enableFooterSlot","hideCancelButton","modalTitle","titleAlign","titleIcon","fullscreen","okDisabled","confirmLoading","onAfterClose","isHiddenBodyPadding","isHiddenHeaderBorder","isHiddenFooterColor","isHiddenModalTitle","isHiddenModalFooter","isShowCustomHeader","footerPosition","stack","stackable","modalHeaderRef","modalFooterRef","contentSlotRef","setBodyHeightHandlerRef","bodyHeight","setBodyHeight","modalContent","closest","headerHeight","footerHeight","fullscreenMargin","defaultFooter","cancelButtonProps","cancelText","okButtonProps","okType","mergedIcon","setZIndex","pull","wrapper","headerWrapper","bodyWrapper","footerWrapper","titleWrapper","customHeaderWrapper","bodyStyle","wrapClassName","afterClose","GeneralModalElement","__deprecated_and_for_compatibility_only","instantiateModalStack","listenOnClose","afterCloseModel","clickNode","buttonNode","modalProps","getAttribute","parentNode","contains","isInFooterContainer","generalModalConfirm","modalConfirm","closeWhenOk","generalModalCancel","modalCancel","closeWhenCancel","touchAction","_stack","mutableProps","pickFields","fieldKey","field","getContainer","initData","handleAfterClose","noEvent","openModal","closeModal","GeneralDrawer","scrollToTopWhenOpen","contentRef","findDrawerBody","ele","parentElement","scrollTo","classNameList","isFloat","hasOuterSwitch","drawerStyle","headerStyle","forceRender","useBigOuterSwitch","customSwitchConfig","outerIcon","openIcon","closeIcon","outerText","openText","closeText","getOuterSwitchNode","tip","GeneralDrawerElement","maybeMaskDom","customTitle","drawerOpen","scroll","behavior","drawerClose","removeProperty","AvailableButtonTypeSet","Set","GeneralCustomButtons","dropdown","dropdownVisible","setDropdownVisible","buttonConfigs","dropdownPlacement","isMoreButton","moreButtonShape","moreBtnIcon","moreButtonType","dropdownBtnIcon","dropdownBtnText","alignment","dropdownBtnType","moreButtonStyle","propsButtons","hide","isDropdown","urlTarget","tooltipPlacement","testId","restProps","buttonComponent","child","dropdownButtons","idx","isDivider","wrapIcon","dropdownBtnIconContainer","textNode","dropdownBtnLink","tooltipNode","dropdownBtnNormal","data-button","onDropdownVisibleChange","moreButton","noShapeButton","circleShapeButton","moreIconButton","dropdownBtnContainer","customButtonsContainer","GeneralCustomButtonsElement","useButtonDataSource","customButtons","update","$set","customButton","handleDropdownVisibleChange","DeleteConfirmModal","confirm","onOk","handleConfirm","onCancel","handleCancel","DeleteConfirmModalElement","_data","_message","_eventDetail","_eventName","mediaSizeList","mediaQueryMap","medium","small","xSmall","GridLayoutElement","_clearMediaMatchListeners","_sizeMatch","fn","_mediaMatchListeners","matchMedia","media","mediaMatch","matches","addListener","removeListener","layout","columnSpan","rowSpan","gap","templateColumns","gridColumn","gridRow","showGridBorder","setProperty","gridBorderColor","parseInt","gridBorder","gridBorderWithGap","getPropertyValue","from","transformCss","gridColumns","str","MultipleColumnsCard","cardBorder","MultipleColumnsCardElement","ListContainer","itemKey","extraContainerStyle","listContainerAsGrid","ListContainerElement","TransformAgentElement","targetElements","multiple","querySelectorAll","found","sourceElements","source","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","developHelper","loadDynamicBricksInBrickConf","fetchData","MagicBrickElement","PopoverContainer","customElementRef","popoverBrickNode","popoverBrick","transferVisible","useBrickVisible","popoverContentStyle","parentRefForUseBrickInPortal","MouseEvent","handleMouseover","bubbles","triggerByIcon","processedUseBrickOfDisplayBrick","displayBrick","transferGraphAttrs","graphAttrs","related","faded","highlighted","merge","displayBrickNode","displayBrickContainer","displayBrickContainerFaded","itemMouseEnter","itemMouseLeave","showPopoverBg","customOverlay","align","getPopupContainer","popoverTitleBrick","cursorPointer","showIcon","editIcon","editIconVisible","popoverIcon","PopoverContainerElement","visibleChange","_handleVisibleChange","_itemMouseEnter","_itemMouseLeave","FoldBrick","show","handleShow","defaultShow","foldStyle","foldContainer","foldName","rotate","foldActive","foldInactive","FoldBrickElement","AdvanceListContainer","setActiveIndex","defaultActiveIndex","notTriggerClickEventWhenInit","itemClick","renderItem","itemContainer","activeItem","selectable","clickItemEvent","itemContainerInner","titleBrick","suffixBrick","renderItemExtra","AdvancedListContainerElement","clickEvent","_handleItemClick","showCard","renderAdvanceListContainer","FoldBrickV2","hideFoldName","foldIcon","foldIconStyle","fold","_id","foldPrimaryActive","isShowFoldIcon","showDivider","dashed","dividerDashed","orientation","dividerOrientation","FoldBrickV2Element","listenToClick","foldChange","SubMenuFilter","rowMenuItem","unsearchable","onSelect","onSearch","transparentBackground","accordion","suffixBrickTriggerByHover","setMenuItems","setSelectedKeys","openKeys","setOpenKeys","subMenuKeys","setSubMenuKeys","cloneDeep","getSubMenuKeys","renderIcon","triggerByHover","renderGroupTitle","menuItemMainPart","renderMenuTitle","blockLink","getMenuItemByKey","menuItem","getSelectedMenuItemByKeys","Search","_value","trim","searchMenu","newSelectedKeys","onDeselect","onOpenChange","latestOpenKey","SubMenuFilterElement","menuSelect","menuClick","menuSearch","handleSelect","handleSearch","GeneralNotificationElement","closeEvent","descriptionBrick","btnBrick","mtd","renderDescription","renderBtn","GeneralHotkeysElement","hotkeysConfig","GeneralTimerElement","_stopped","_intervalId","clearInterval","stopTimer","startTimeout","defaultEventName","isInterval","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","extraBrick","handleChange","setScrollContainer","Anchor","getHref","anchorList","setAnchorList","renderAnchorList","initHash","pageView","pageContainer","sharpLinkMatch","exec","scrollIntoView","block","inline","offsetTop","initOffset","anchor","anchorWrapper","anchorContainer","anchorLinkContainer","extraContainer","GeneralAnchorElement","disabledJump","anchorClick","currentActiveLink","anchorChange","_handleChange","GeneralTitle","mainTitle","titleSuffixBrick","descPrefixBrick","subTitle","descSuffixBrick","titleContentUrl","titleContent","subTitleWrapper","subTitleContent","descriptionWrapper","descriptionContent","GeneralTitleElement","LaunchpadButtonElement","AppbarBreadcrumb","containerData","getNavConfig","setBreadCrumb","appbarBreadcrumb","AppbarBreadcrumbElement","AppBarSetting","AppBarSettingElement","EventAgentElement","_eventTrigger","ResizableBox","resizeDirection","defaultSize","minSize","minSpace","boxStyle","boxStyleWhenNotResizing","resizable","variant","refinedDefaultSize","refinedMinSize","refinedMinSpace","refBar","initSize","setSize","resized","setResized","resizeStatus","setResizerStatus","debouncedSetSize","debounceByAnimationFrame","isVerticalDirection","handleResizerMouseDown","startWidth","startHeigh","startX","startY","refBarCurrent","handleResizerMouseMove","modifiedSize","min","max","handleResizerMouseUp","resizing","hoverBar","ResizableBoxElement","GeneralText","customStyle","GeneralTextElement","AppBarDocumentLinkElement","FlexLayoutElement","_styles","processString","flexDirection","flexWrap","alignContent","OpenDirection","getCssPropertyValue","GeneralPopup","popupId","popupTitle","popupWidth","popupHeight","dragHeaderStyle","dragWrapperStyle","openDirection","closePopup","resize","popupRef","headerRef","isMove","setIsMove","curPointRef","offsetX","offsetY","setPosition","jsonStorage","debouncedSetPoint","handleMouseDown","handleMouseMove","maxX","maxY","pointX","pointY","handleMouseUp","initPos","initPostion","offsetWidth","LeftTop","LeftBottom","RightTop","RightBottom","Center","popupElement","maxHeight","GeneralPopupElement","AppBarLogo","AppBarLogoElement","AppBarWrapper","isFixed","displayCenter","extraAppBarContentStyle","appbarHeight","setAppbarHeight","previous","prev","newHeight","auth","validDaysLeft","license","isAdmin","handelRouteRender","renderTime","loadTime","loadInfoPage","isBuildPush","getSecond","time","AppBarWrapperElement","styleMap","GeneralHeading","headerRender","GeneralHeadingElement","MenuTag","handleCollect","handleMenuClick","handleMenuRemove","favouriteCount","maxFavouriteCount","handleCollectFailed","selected","setSelected","canCollect","setCanCollect","isFavourite","isNumber","tag","textContainer","mouseLeaveDelay","operation","collectStar","favouriteStar","Manager","collection","refs","getIndex","_this","sortableInfo","sortByIndex","keysToOmit","move","vendorPrefix","getComputedStyle","OLink","setInlineStyles","setTranslate3d","translate","setTransitionDuration","el","limit","getPixelValue","stringValue","parseFloat","getElementMargin","provideDisplayName","Component$$1","componentName","displayName","getScrollAdjustedBoundingClientRect","scrollDelta","boundingClientRect","getPosition","touches","pageX","pageY","changedTouches","isTouchEvent","getEdgeOffset","nodeOffset","offsetLeft","getTargetIndex","newIndex","prevIndex","oldIndex","getLockPixelOffset","lockOffset","unit","isFinite","getLockPixelOffsets","offsets","_offsets","minLockOffset","maxLockOffset","getScrollingParent","computedStyle","overflowRegex","isScrollable","getContainerGridGap","gridColumnGap","gridRowGap","KEYCODE","NodeType","cloneNode","clonedNode","getContext","drawImage","isSortableHandle","sortableHandle","AutoScroller","container","onScrollCallback","minTranslate","maxTranslate","speed","acceleration","_this$container","scrollTop","scrollLeft","scrollWidth","isTop","isBottom","isLeft","isRight","isAutoScrolling","setInterval","propTypes","axis","oneOf","contentWindow","any","disableAutoscroll","bool","distance","number","func","getHelperDimensions","helperClass","string","helperContainer","oneOfType","instanceOf","hideSortableGhost","keyboardSortingTransitionDuration","lockAxis","arrayOf","lockToContainerEdges","onSortEnd","onSortMove","onSortOver","onSortStart","pressDelay","pressThreshold","keyCodes","lift","drop","cancel","shouldCancelStart","transitionDuration","updateBeforeSortStart","useDragHandle","useWindowAsScrollContainer","defaultKeyCodes","defaultProps","contentEditable","omittedProps","validateProps","_finallyRethrows","finalizer","SortableContext","manager","propTypes$1","isRequired","omittedProps$1","FavouriteMenu","menus","handleMenuDrag","setList","newList","removeItemFromList","SortableWrapper","WrappedComponent","_class","_temp","withRef","_React$Component","WithSortableContainer","_this$props","touched","nodeIsChild","sorting","_node$sortableInfo","handlePress","pressTimer","_this$props2","_awaitingUpdateBeforeSortStart","delta","combinedDelta","isActive","cancelTimer","getActive","_temp6","_temp7","_node","containerBoundingRect","dimensions","_getHelperDimensions","_collection","marginOffset","_axis","offsetEdge","initialOffset","_isKeySorting","initialScroll","initialWindowScroll","pageXOffset","pageYOffset","helper","_hideSortableGhost","sortableGhost","opacity","visibility","_useWindowAsScrollContainer","containerTop","containerLeft","containerWidth","containerBottom","containerRight","_helperClass","listenerNode","handleKeyEnd","handleKeyDown","handleSortMove","handleSortEnd","sortingIndex","_onSortStart","isKeySorting","nodes","getOrderedRefs","keyMove","_this$props3","_temp8","_temp9","_wasThrown","_result","reject","updateHelperPosition","animateNodes","autoscroll","_this$props4","_this$manager","_node2","edgeOffset","autoScroller","scrollX","scrollY","_this$props5","_this$props5$keyCodes","customKeyCodes","isValidSortingTarget","keyLift","keyDrop","_node$sortableInfo2","initialFocusedNode","lastIndex","targetIndex","targetNode","containerScrollDelta","targetBoundingClientRect","targetTranslate","targetPosition","shouldAdjustForSize","sizeAdjustment","ignoreTransition","wrappedInstance","sortableContextValue","handleEnd","handleMove","handleStart","_this2","containerNode","ownerDocument","defaultView","scrollingElement","onAutoScroll","_this3","_this$props6","_this$props6$keyboard","_getLockPixelOffsets","_getLockPixelOffsets2","minOffset","maxOffset","_this$props7","windowScrollDelta","sortingOffset","_node3","mustShiftBackward","mustShiftForward","nextNode","prevNode","getWrappedInstance","SortableContainer","DragHandle","WithSortableHandle","_getPrototypeOf2","SortableHandle","dragHandler","SortableItem","WithSortableElement","register","prevProps","unregister","context","SortableElement","clickItem","favouriteTag","deleteBtn","array","fromIndex","toIndex","newArray","startIndex","endIndex","arrayMoveImmutable","filterMenuTitle","toLocaleLowerCase","flagFavourite","favouriteMenus","menuIsSame","menu1","menu2","MenuContainer","searchPlaceholder","allMenus","handleMenuAdd","isSearching","setIsSearching","filterMenus","setFilterMenus","searchKey","setSearchKey","setFavouriteCount","searchResult","categoryTitle","groupTitle","newFavouriteList","handleCollectMenuFailed","removeSingleMenu","outerWrapper","menuSearchContainer","searchInput","searchIcon","clearBtn","favouriteEmpty","QuickVisitMenu","setAllMenus","secondItems","secondItem","thirdItems","thirdItem","flattenMenus","drawerVisible","setDrawerVisible","triggerDrawerVisible","menuPopover","appNameWrapper","quickVisitContainer","popoverInMenu","favouriteList","QuickVisitMenuElement","menuDragEvent","menuRemoveEvent","menuAddEvent","menuClickEvent","menuCollectFailedEvent","_handleMenuDrag","_handleMenuRemove","_handleMenuAdd","_handleMenuClick","_handleCollectFailed","VirtualListContainer","setHeight","setData","domRef","useImperativeHandle","refreshDomHeight","uniqBy","oHeight","onScroll","total","currentTarget","onScrollData","itemIcon","itemContent","itemContentHeader","itemContentTitle","desc","itemContentDesc","itemFooter","paddingTop","VirtualListContainer2","VirtualListContainerElement","scrollEvent","_onScrollData","createProviderClass","httpRequestParams","request","memo","isOldIE","all","atob","getTarget","styleTarget","HTMLIFrameElement","contentDocument","head","stylesInDom","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","base","css","sourceMap","references","updater","addStyle","insertStyleElement","attributes","nonce","setAttribute","Error","textStore","replaceText","replacement","applyToSingletonTag","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","applyToTag","removeAttribute","btoa","unescape","encodeURIComponent","firstChild","singleton","singletonCounter","styleIndex","removeStyleElement","newObj","lastIdentifiers","newLastIdentifiers","_index","___CSS_LOADER_AT_RULE_IMPORT_0___","___CSS_LOADER_AT_RULE_IMPORT_1___","condition","b","argIndex","framesToPop","stringifiable","isProduction","process","invariant","getAllKeys","getOwnPropertySymbols","copy","Context","commands","defaultCommands","extend","isEquals","newContext","configurable","directive","$spec","spec","$apply","nextObject","objectWasNextObject","nextValueForKey","nextObjectValue","$push","invariantPushAndUnshift","$unshift","$splice","originalObject","invariantSplice","invariantSplices","_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.76908742.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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"bricks/basic-bricks:KEXQ\");\n","// 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___(function(i){return i[1]});\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:host([has-title-bar]) .micro-view-container,\\n:host([has-toolbar]) .micro-view-container {\\n padding-top: 12px;\\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: 9px 0;\\n justify-content: flex-start;\\n align-items: center;\\n position: relative;\\n}\\n:host(:not([dashboard-mode])) .header-container {\\n justify-content: space-between;\\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 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\"))(\"+nKL\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".gridBorder--3_Q1s0zZ {\\n border-top: 1px solid var(--grid-border-color);\\n border-left: 1px solid var(--grid-border-color);\\n}\\n.gridBorder--3_Q1s0zZ > * {\\n border-bottom: 1px solid var(--grid-border-color);\\n border-right: 1px solid var(--grid-border-color);\\n}\\n.gridBorderWithGap--3C10E9m_ > * {\\n border: 1px solid var(--grid-border-color);\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"gridBorder\": \"gridBorder--3_Q1s0zZ\",\n\t\"gridBorderWithGap\": \"gridBorderWithGap--3C10E9m_\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--18-1!../../../../node_modules/less-loader/dist/cjs.js??ref--18-2!./index.shadow.less\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\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\");","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--16-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--16-2!./ResizableBox.shadow.css\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\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___(function(i){return i[1]});\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","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"17x9\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".searchBar--CTH4eOdV {\\n display: flex;\\n justify-content: center;\\n align-items: flex-end;\\n min-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-right-width: 2px !important;\\n }\\n\\n .searchBar--CTH4eOdV .ant-input-affix-wrapper:hover {\\n border-color: #0071eb;\\n }\\n\\n .searchBar--CTH4eOdV.focus--1KB5PAqZ .ant-input-affix-wrapper,\\n .searchBar--CTH4eOdV .ant-input-affix-wrapper-focused {\\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 }\\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 = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"1OyB\");","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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: var(--antd-icon-color-hover);\\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: var(--antd-modal-mask-bg);\\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.ant-drawer-body {\\n padding: 20px 24px;\\n}\\n.header {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n}\\n.content {\\n height: 100%;\\n}\\n.ant-drawer-footer {\\n padding: 0;\\n border: none;\\n}\\n.ant-drawer-footer .footer {\\n display: flex;\\n align-items: center;\\n width: 100%;\\n height: 56px;\\n background: var(--antd-modal-footer-bg);\\n}\\n.ant-drawer-footer .footer .footer-inner {\\n flex: 1;\\n}\\n.flexContainer {\\n display: flex;\\n}\\n.ant-drawer-open.no-mask:focus-visible {\\n outline: none;\\n}\\n.floatDrawer.ant-drawer-open .ant-drawer-content-wrapper {\\n margin: 30px;\\n height: calc(100% - 60px);\\n}\\n.floatDrawer.ant-drawer-open .ant-drawer-content-wrapper .ant-drawer-content {\\n box-shadow: 0px 2px 3px 4px rgba(170, 170, 170, 0.2);\\n border-radius: 8px;\\n}\\n.floatDrawer.ant-drawer-open .ant-drawer-content-wrapper .ant-drawer-content .ant-drawer-header {\\n border-bottom: none;\\n}\\n.defaultOuterBtn {\\n background-color: rgba(0, 0, 0, 0.4);\\n width: 16px;\\n height: 35px;\\n color: #fff;\\n box-shadow: 2px 8px 12px 0px rgba(170, 170, 170, 0.2);\\n border-radius: 8px 0 0 8px;\\n left: -16px;\\n top: calc(50% - 32px);\\n padding-top: 20px;\\n}\\n.outerBtn {\\n position: absolute;\\n cursor: pointer;\\n}\\n.bigOuterBtn {\\n width: 48px;\\n height: 48px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n background: linear-gradient(180deg, #00aaf7 0%, #0071eb 100%);\\n box-shadow: -2px 8px 12px 0px rgba(0, 113, 235, 0.5);\\n border-radius: 10px 0px 0px 10px;\\n top: 170px;\\n left: -48px;\\n text-align: center;\\n color: #fff;\\n}\\n.bigOuterBtn .anticon {\\n width: 20px;\\n height: 20px;\\n}\\n.bigOuterBtn .anticon svg {\\n width: 20px;\\n height: 20px;\\n}\\n.switch .ant-drawer-content {\\n overflow: visible;\\n}\\n.outerText {\\n max-width: 28px;\\n line-height: 1.3;\\n}\\n:host-context(html[data-theme=\\\"dark-v2\\\"]) .bigOuterBtn {\\n box-shadow: -2px 8px 12px 0px rgb(37 56 95);\\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___(function(i){return i[1]});\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.customButtonsContainer--1wynIuIu .ant-dropdown-open {\\n color: var(--color-brand) !important;\\n background: var(--antd-btn-special-icon-type-hover-bg) !important;\\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 {\\n font-size: 16px;\\n color: var(--antd-btn-special-icon-type-color);\\n background: var(--antd-btn-special-icon-type-bg);\\n border: none;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn:hover {\\n color: var(--antd-btn-special-icon-type-hover-color);\\n background: var(--antd-btn-special-icon-type-hover-bg);\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn:active {\\n color: var(--antd-btn-special-icon-type-active-color);\\n background: var(--antd-btn-special-icon-type-active-bg);\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn[disabled] {\\n color: var(--antd-btn-special-icon-type-disabled-color);\\n background: var(--antd-btn-special-icon-type-disabled-bg);\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn .anticon {\\n vertical-align: -0.125em;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn.ant-btn-sm {\\n font-size: 14px;\\n width: 28px;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn.ant-btn-lg {\\n font-size: 18px;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn.ant-btn-lg .anticon {\\n vertical-align: middle;\\n }\\n\\n.iconButton--QkXiuZZ7.ant-btn.ant-btn-dangerous:hover {\\n color: var(--theme-red-color);\\n background: var(--theme-red-background);\\n }\\n\\n.moreIconButton--Pr6S5Ezg {\\n background: var(--antd-btn-special-icon-type-bg);\\n color: var(--antd-btn-special-icon-type-color);\\n border: none;\\n border-radius: 16px;\\n}\\n\\n.moreIconButton--Pr6S5Ezg:hover {\\n color: var(--color-brand-hover) !important;\\n background: var(--antd-btn-special-icon-type-hover-bg) !important;\\n }\\n\\n.moreIconButton--Pr6S5Ezg[disabled] {\\n color: var(--antd-btn-special-icon-type-disabled-color);\\n background: var(--antd-btn-special-icon-type-disabled-bg);\\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 {\\n /* &:not(:global(.ant-dropdown-menu-item-disabled), :global(.ant-dropdown-menu-item-danger)):hover {\\n background-color: var(--app-bar-dropdown-menu-item-hover-bg);\\n } */\\n}\\n\\n.dropdownBtn--1FPH4NtC {\\n position: relative;\\n margin: -5px -12px;\\n padding: 5px 12px;\\n}\\n.dropdownBtnNormal--kN4PKT9N > a {\\n color: var(--antd-text-color);\\n}\\n\\n.dropdownBtnLink--1mPutyHx {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\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\"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\t\"dropdownBtnLink\": \"dropdownBtnLink--1mPutyHx\"\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___(function(i){return i[1]});\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: 42px;\\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: 36px;\\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: -webkit-box;\\n font-size: 16px;\\n line-height: 1.5;\\n height: 48px;\\n text-align: center;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 2;\\n overflow: hidden;\\n text-overflow: ellipsis;\\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: 42px;\\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: 36px;\\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","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDc3cHgiIGhlaWdodD0iNDVweCIgdmlld0JveD0iMCAwIDQ3NyA0NSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4KICAgIDx0aXRsZT7kuK08L3RpdGxlPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDEuMDEzMDQzJSIgeTE9IjAlIiB4Mj0iLTAuNzYzNzYwMzc3JSIgeTI9IjAlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwNTE0MkQiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzQxODhFMiIgb2Zmc2V0PSI1MC4yMzEzMjYlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwNTE0MkQiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i6aG16Z2iLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSLmoIfpopjoo4XppbAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MTcuMjczNDExLCAxLjAwMDAwMCkiPgogICAgICAgICAgICA8cG9seWdvbiBpZD0i55+p5b2iIiBmaWxsPSIjNDE4OEUyIiBwb2ludHM9IjQ5OS43NjQzNCAzMiAxMDEyLjI3MzQxIDMyIDEwMDguMjAwNCAzNiA1MDMuMjczNDExIDM2Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDxwb2x5bGluZSBpZD0i6Lev5b6ELTE5IiBzdHJva2U9InVybCgjbGluZWFyR3JhZGllbnQtMSkiIHN0cm9rZS13aWR0aD0iMiIgcG9pbnRzPSI5IDEuMzAwOTUxNzllLTEzIDQ0MC4xNTQ5NjIgMCA0NjguMDgyNTIzIDM1LjY1MTgzMTEgNDg2LjY4MzczNCAzNS42NTE4MzExIDQ5Mi45OTg5OTIgNDIuNDE3ODUzNCAxMDE2LjAwNDQ2IDQyLjQxNzg1MzQgMTAyMi43Nzg1IDM1LjY1MTgzMTEgMTA0My4xNjY2MSAzNS42NTE4MzExIDEwNzQuOTk5MjUgMCAxNTExLjI3MzQxIDQuNTIwOTU0NjRlLTEzIj48L3BvbHlsaW5lPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==\"","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___(function(i){return i[1]});\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: var(--color-normal-text);\\n font-size: 14px;\\n}\\n.foldPrimaryActive {\\n color: var(--antd-btn-link-color);\\n}\\n.foldPrimaryActive:hover,\\n.foldPrimaryActive:focus {\\n color: var(--antd-btn-link-hover-color);\\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=\"","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--16-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--16-2!./style.shadow.css\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".collapseBar--3vokZtEQ {\\n height: 51px;\\n border-top: 1px solid var(--ant-menu-collapse-bar-border-color);\\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: var(--ant-menu-collapse-bar-bg);\\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___(function(i){return i[1]});\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 flex-wrap: wrap;\\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(18, 21, 26, 0.3);\\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","// 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___(function(i){return i[1]});\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: var(--antd-card-shadow);\\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: var(--antd-card-shadow);\\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-btn-default-border);\\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: var(--antd-btn-primary-color);\\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: var(--antd-btn-primary-color);\\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: var(--antd-btn-primary-color);\\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-btn-default-border);\\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-btn-default-border);\\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-btn-default-border);\\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-btn-default-border);\\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: var(--antd-btn-danger-color);\\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: var(--antd-btn-danger-color);\\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: var(--antd-btn-danger-color);\\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: var(--antd-error-color);\\n background: var(--antd-btn-default-bg);\\n border-color: var(--antd-error-color);\\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: #0d0c0c;\\n background: var(--antd-btn-default-bg);\\n border-color: #0d0c0c;\\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: #000000;\\n background: var(--antd-btn-default-bg);\\n border-color: #000000;\\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: var(--antd-btn-danger-color);\\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: var(--antd-btn-danger-color);\\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: var(--antd-btn-danger-color);\\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: var(--antd-error-color);\\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: #0d0c0c;\\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: #000000;\\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: var(--antd-error-color);\\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: #0d0c0c;\\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: #000000;\\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-btn-default-border);\\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-btn-default-border);\\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: var(--antd-tooltip-color);\\n text-align: left;\\n text-decoration: none;\\n word-wrap: break-word;\\n background-color: var(--antd-tooltip-bg);\\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: var(--antd-tooltip-bg);\\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 border-radius: var(--antd-button-border-radius);\\n}\\n.ant-btn:hover,\\n.ant-btn:focus {\\n color: var(--antd-btn-default-hover-color);\\n border-color: var(--antd-btn-default-hover-border-color);\\n background: var(--antd-btn-default-bg);\\n}\\n.ant-btn.active,\\n.ant-btn:active {\\n color: var(--antd-btn-default-active-color);\\n border-color: var(--antd-btn-default-active-border-color);\\n background: var(--antd-btn-default-bg);\\n}\\n.ant-btn-primary {\\n background-image: var(--antd-btn-primary-bg-image);\\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 color: var(--antd-btn-primary-hover-color);\\n background-color: var(--antd-btn-primary-hover-bg);\\n border-color: var(--antd-btn-primary-hover-bg);\\n}\\n.ant-btn-primary.active,\\n.ant-btn-primary:active {\\n color: var(--antd-btn-primary-active-color);\\n background-color: var(--antd-btn-primary-active-bg);\\n border-color: var(--antd-btn-primary-active-bg);\\n}\\n.ant-btn-danger {\\n background-image: var(--antd-btn-danger-bg-image);\\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 color: var(--antd-btn-danger-hover-color);\\n background-color: var(--antd-btn-danger-hover-bg);\\n border-color: var(--antd-btn-danger-hover-bg);\\n}\\n.ant-btn-danger.active,\\n.ant-btn-danger:active {\\n color: var(--antd-btn-danger-active-color);\\n background-color: var(--antd-btn-danger-active-bg);\\n border-color: var(--antd-btn-danger-active-bg);\\n}\\n.ant-btn-default {\\n border-radius: var(--antd-button-border-radius);\\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 background: var(--antd-btn-default-bg);\\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 background: var(--antd-btn-default-bg);\\n}\\n.ant-btn-link:hover,\\n.ant-btn-link:focus {\\n color: var(--antd-btn-link-hover-color);\\n border-color: transparent;\\n background-color: transparent;\\n}\\n.ant-btn-link.active,\\n.ant-btn-link:active {\\n color: var(--antd-btn-link-active-color);\\n border-color: transparent;\\n background-color: transparent;\\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(--antd-btn-text-hover-color);\\n background-color: rgba(0, 0, 0, 0.018);\\n border-color: transparent;\\n}\\n.ant-btn-text.active,\\n.ant-btn-text:active {\\n color: var(--antd-btn-text-active-color);\\n background-color: rgba(0, 0, 0, 0.028);\\n border-color: transparent;\\n}\\n.ant-btn-dangerous {\\n color: var(--antd-btn-danger-bg-image);\\n border-color: var(--antd-btn-danger-bg-image);\\n background: var(--antd-btn-default-bg);\\n}\\n.ant-btn-dangerous:hover,\\n.ant-btn-dangerous:focus {\\n color: var(--antd-btn-danger-hover-bg);\\n border-color: var(--antd-btn-danger-hover-bg);\\n background: var(--antd-btn-danger-hover-color);\\n}\\n.ant-btn-dangerous.active,\\n.ant-btn-dangerous:active {\\n color: var(--antd-btn-danger-active-bg);\\n border-color: var(--antd-btn-danger-active-bg);\\n background: var(--antd-btn-danger-active-color);\\n}\\n.ant-btn-dangerous.ant-btn-primary {\\n background-image: var(--antd-btn-danger-bg-image);\\n}\\n.ant-btn-dangerous.ant-btn-primary[disabled] {\\n background-image: none;\\n}\\n.ant-btn-dangerous.ant-btn-primary:hover,\\n.ant-btn-dangerous.ant-btn-primary:focus {\\n color: var(--antd-btn-danger-hover-color);\\n background-color: var(--antd-btn-danger-hover-bg);\\n border-color: var(--antd-btn-danger-hover-bg);\\n}\\n.ant-btn-dangerous.ant-btn-primary.active,\\n.ant-btn-dangerous.ant-btn-primary:active {\\n color: var(--antd-btn-danger-active-color);\\n background-color: var(--antd-btn-danger-active-bg);\\n border-color: var(--antd-btn-danger-active-bg);\\n}\\n.ant-btn-dangerous.ant-btn-link:hover,\\n.ant-btn-dangerous.ant-btn-link:focus {\\n color: var(--antd-btn-danger-hover-bg);\\n border-color: transparent;\\n background-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-link.active,\\n.ant-btn-dangerous.ant-btn-link:active {\\n color: var(--antd-btn-danger-active-bg);\\n border-color: transparent;\\n background-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-text:hover,\\n.ant-btn-dangerous.ant-btn-text:focus {\\n color: var(--antd-btn-danger-hover-bg);\\n background-color: rgba(0, 0, 0, 0.018);\\n border-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-text.active,\\n.ant-btn-dangerous.ant-btn-text:active {\\n color: var(--antd-btn-danger-active-bg);\\n background-color: rgba(0, 0, 0, 0.028);\\n border-color: transparent;\\n}\\n.ant-btn-circle {\\n border-radius: 50%;\\n}\\n.ant-btn-round {\\n border-radius: 32px;\\n}\\n.ant-btn-circle.ant-btn-sm {\\n min-width: 28px;\\n}\\n.ant-btn-sm {\\n line-height: 13px;\\n height: 26px;\\n font-size: 13px;\\n}\\nhtml[data-theme=\\\"dark\\\"] .ant-btn-primary {\\n background-image: none;\\n}\\n.ant-card {\\n box-shadow: var(---antd-card-shadow);\\n transition: var(--card-transition);\\n border-radius: 8px;\\n}\\n.ant-card-bordered {\\n border: 1px solid var(--antd-card-inner-border-color);\\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 padding: 0 var(--card-head-padding-horizontal, 20px);\\n}\\n.ant-card-head-title {\\n padding: var(--card-head-padding-vertical, 12px) 0;\\n}\\n.ant-card-body {\\n padding: var(--card-body-padding, 16px 24px);\\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.generalCardContainerHoverable:hover {\\n box-shadow: var(--card-item-hover-shadow);\\n background: var(--card-item-hover-bg);\\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:host-context(html[data-ui=\\\"v8-2\\\"]) .ant-card-body {\\n padding-bottom: 0;\\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: var(--antd-card-footer-bg);\\n z-index: 997;\\n}\\n:host([has-footer]) .generalCardFooter {\\n border-top: var(--border-width-base) solid var(--antd-card-footer-top-border-color);\\n}\\n:host-context(body.compact-layout) .ant-card.compactCardContainer {\\n border-radius: 0;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--18-1!../../../../node_modules/less-loader/dist/cjs.js??ref--18-2!./index.shadow.less\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\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___(function(i){return i[1]});\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\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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","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___(function(i){return i[1]});\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: var(--antd-app-submenu-bg);\\n color: var(--text-color-title);\\n box-shadow: var(--antd-app-submenu-shadow);\\n padding: 0 12px;\\n overflow-y: auto;\\n}\\n\\n.appSubMenuTitle--13oXdzsp {\\n padding: 20px 10px;\\n color: var(--antd-app-submenu-title);\\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 {\\n background: transparent;\\n}\\n\\n.appSubMenu--3QjNzmIv .ant-menu .ant-menu-item-group-title {\\n color: var(--antd-app-submenu-group-title-color);\\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: var(--antd-app-submenu-active-bg);\\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 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-submenu-title:active {\\n background-color: transparent;\\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: var(--menu-submenu-group-selected-bg);\\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: var(--color-auxiliary-text);\\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\"))(\"9kay\");","__webpack_public_path__ = `${window.PUBLIC_ROOT ?? \"\"}${\n window.PUBLIC_ROOT_WITH_VERSION\n ? \"bricks/basic-bricks/1.258.12/dist/\"\n : \"bricks/basic-bricks/dist/\"\n }`;","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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".subMenuContainer--22aAI82E {\\n background: var(--antd-app-submenu-bg);\\n border-radius: 6px;\\n padding: 20px 0;\\n}\\n .subMenuContainer--22aAI82E .header--39v9Ck6M {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n font-size: 18px;\\n padding: 0 24px 16px 24px;\\n line-height: 26px;\\n color: var(--color-header-text);\\n }\\n .subMenuContainer--22aAI82E .header--39v9Ck6M i {\\n color: var(--color-secondary-text);\\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: var(--sub-title-font-size);\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-sub.ant-menu-inline {\\n background-color: var(--sub-menu-brick-group-bg);\\n border-radius: 4px;\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-item {\\n margin: 0;\\n border-radius: 4px;\\n margin-bottom: 4px;\\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: var(--sub-menu-brick-item-hover-bg);\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-item:not(.ant-menu-item-selected):active {\\n background-color: var(--sub-menu-brick-item-active-bg);\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-item svg {\\n color: var(--color-secondary-text);\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-item-selected {\\n background-color: var(--app-submenu-active-bg);\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-item-selected svg {\\n color: var(--antd-link-color);\\n }\\n .subMenuContainer--22aAI82E > .ant-menu .ant-menu-submenu-title {\\n margin: 0;\\n }\\n .subMenuContainer--22aAI82E.isThirdLevel--22efR318 {\\n border-radius: 0;\\n height: 100%;\\n }\\n .subMenuContainer--22aAI82E.isThirdLevel--22efR318 .header--39v9Ck6M {\\n font-size: 16px;\\n display: block;\\n }\\n .subMenuContainer--22aAI82E.isThirdLevel--22efR318.isCompact--wsDnnRjb {\\n background: #f7f8fa;\\n border: 1px solid var(--stroke-color-default);\\n border-left: 0;\\n height: 100%;\\n }\\n .subMenuContainer--22aAI82E.isThirdLevel--22efR318.isCompact--wsDnnRjb > .ant-menu {\\n background: #f7f8fa;\\n }\\n .subMenuContainer--22aAI82E .isThirdLevelHeaderTitle--3FZeJjiU {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 2;\\n word-wrap: break-word;\\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\t\"isThirdLevel\": \"isThirdLevel--22efR318\",\n\t\"isCompact\": \"isCompact--wsDnnRjb\",\n\t\"isThirdLevelHeaderTitle\": \"isThirdLevelHeaderTitle--3FZeJjiU\"\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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".fadedText--12EGjQ2N.ant-btn-text {\\n color: var(--antd-btn-fade-text-color);\\n }\\n.navIcon--_BxxGs2C.ant-btn-nav {\\n border: none;\\n border-radius: var(--antd-button-border-radius);\\n font-size: 14px;\\n height: 24px;\\n }\\n.navIcon--_BxxGs2C.ant-btn-nav:hover {\\n background: var(--color-fill-bg-base-3);\\n }\\n.navIcon--_BxxGs2C.ant-btn-nav {\\n background-color: transparent;\\n}\\n.iconButton--17JmWR-Q.ant-btn-icon {\\n color: var(--antd-btn-special-icon-type-color);\\n background: var(--antd-btn-special-icon-type-bg);\\n border: none;\\n }\\n.iconButton--17JmWR-Q.ant-btn-icon:hover {\\n color: var(--antd-btn-special-icon-type-hover-color);\\n background: var(--antd-btn-special-icon-type-hover-bg);\\n }\\n.iconButton--17JmWR-Q.ant-btn-icon:active {\\n color: var(--antd-btn-special-icon-type-active-color);\\n background: var(--antd-btn-special-icon-type-active-bg);\\n }\\n.iconButton--17JmWR-Q.ant-btn-icon[disabled] {\\n color: var(--antd-btn-special-icon-type-disabled-color);\\n background: var(--antd-btn-special-icon-type-disabled-bg);\\n }\\n.iconButton--17JmWR-Q.ant-btn-icon.ant-btn {\\n font-size: 16px;\\n }\\n.iconButton--17JmWR-Q.ant-btn-icon.ant-btn .anticon {\\n vertical-align: -0.125em;\\n }\\n.iconButton--17JmWR-Q.ant-btn-icon.ant-btn-sm {\\n font-size: 14px;\\n width: 28px;\\n }\\n.iconButton--17JmWR-Q.ant-btn-icon.ant-btn-lg {\\n font-size: 18px;\\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\"navIcon\": \"navIcon--_BxxGs2C\",\n\t\"iconButton\": \"iconButton--17JmWR-Q\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--16-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--16-2!./IndexCard.shadow.css\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\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--18-1!../../../../node_modules/less-loader/dist/cjs.js??ref--18-2!./index.shadow.less\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".launchpad--t9BwfkVa {\\n background: rgba(36, 41, 51, 0.93);\\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 -webkit-backdrop-filter: blur(15px);\\n backdrop-filter: blur(15px);\\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.loadingWrapper--3VSjf7va {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\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\t\"loadingWrapper\": \"loadingWrapper--3VSjf7va\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--16-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--16-2!./EasyView.shadow.css\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".titleWrapper--28bPvrgh {\\n font-size: var(--sub-title-font-size);\\n font-weight: var(--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: var(--color-header-text);\\n}\\n.titleWrapper--28bPvrgh .titleContentUrl--uTrCc8Vz:hover {\\n color: var(--text-color-link);\\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: var(--auxiliary-font-size-small);\\n align-items: center;\\n}\\n\\n.descriptionWrapper--3z-RRpfq .descriptionContent--1uvaxzdV {\\n margin-top: 2px;\\n color: var(--color-secondary-text);\\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","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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: var(--antd-card-shadow);\\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: var(--antd-card-shadow);\\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(---antd-card-shadow);\\n transition: var(--card-transition);\\n border-radius: 8px;\\n}\\n.ant-card-bordered {\\n border: 1px solid var(--antd-card-inner-border-color);\\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 padding: 0 var(--card-head-padding-horizontal, 20px);\\n}\\n.ant-card-head-title {\\n padding: var(--card-head-padding-vertical, 12px) 0;\\n}\\n.ant-card-body {\\n padding: var(--card-body-padding, 16px 24px);\\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: 1px solid var(--antd-card-inner-border-color);\\n}\\n.multiple-columns-container {\\n display: grid;\\n grid-template-rows: auto;\\n}\\n:host-context(html[data-ui=\\\"v8-2\\\"]) .ant-card:not(.ant-card-bordered) ::slotted([slot=\\\"content\\\"]) {\\n padding: 0;\\n}\\n:host-context(html[data-ui=\\\"v8-2\\\"]) .ant-card:not(.ant-card-bordered) ::slotted([slot=\\\"content\\\"]:not(:first-child):not(.columns-card-no-padding)) {\\n padding-left: 20px;\\n}\\n:host-context(html[data-ui=\\\"v8-2\\\"]) .ant-card:not(.ant-card-bordered) ::slotted([slot=\\\"content\\\"]:not(:last-child):not(.columns-card-no-padding)) {\\n padding-right: 20px;\\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};","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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(18, 21, 26, 0.4);\\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","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 (cssWithMappingToString) {\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);\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};","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"JX7q\");","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"Ji7U\");","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 SWITCH_THEME = \"SWITCH_THEME\",\n LIGHT_THEME = \"LIGHT_THEME\",\n DARK_THEME = \"DARK_THEME\",\n SEARCH_BY_NAME_KEYWORD = \"SEARCH_BY_NAME_KEYWORD\",\n FORBIDDEN = \"FORBIDDEN\",\n NOT_FOUND = \"NOT_FOUND\",\n SERVER_ERROR = \"SERVER_ERROR\",\n QUICK_ACCESS = \"QUICK_ACCESS\",\n NO_VISIT_ACCESS = \"NO_VISIT_ACCESS\",\n RECOMMEND_SEARCH = \"RECOMMEND_SEARCH\",\n SEARCH_RESULT_EMPTY = \"SEARCH_RESULT_EMPTY\",\n ENTER_KEY_WORDS = \"ENTER_KEY_WORDS\",\n ADD_TO_QUICK_ACCESS = \"ADD_TO_QUICK_ACCESS\",\n REMOVE_FROM_QUICK_ACCESS = \"REMOVE_FROM_QUICK_ACCESS\",\n MANAGE = \"MANAGE\",\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 [K.SWITCH_THEME]: \"Switch theme\",\n [K.LIGHT_THEME]: \"default theme\",\n [K.DARK_THEME]: \"dark theme\",\n [K.SEARCH_BY_NAME_KEYWORD]: \"Search by name/keyword\",\n [K.FORBIDDEN]: \"No access permission\",\n [K.NOT_FOUND]: \"Page not found\",\n [K.SERVER_ERROR]: \"Service exception\",\n [K.QUICK_ACCESS]: \"Quick access\",\n [K.NO_VISIT_ACCESS]:\n \"No resources for quick access have been added yet, you can quickly add them after searching from the top.\",\n [K.RECOMMEND_SEARCH]: \"Recommend search result\",\n [K.SEARCH_RESULT_EMPTY]: \"The search result is empty, please re-enter\",\n [K.ENTER_KEY_WORDS]: \"Enter keywords to search\",\n [K.ADD_TO_QUICK_ACCESS]: \"Add to quick access\",\n [K.REMOVE_FROM_QUICK_ACCESS]: \"Remove from quick access\",\n [K.MANAGE]: \"Manage\",\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 [K.SWITCH_THEME]: \"切换主题\",\n [K.LIGHT_THEME]: \"默认主题\",\n [K.DARK_THEME]: \"暗黑主题\",\n [K.SEARCH_BY_NAME_KEYWORD]: \"通过名称/关键字搜索\",\n [K.FORBIDDEN]: \"无访问权限\",\n [K.NOT_FOUND]: \"请求资源不存在\",\n [K.SERVER_ERROR]: \"服务端异常\",\n [K.QUICK_ACCESS]: \"快捷访问\",\n [K.NO_VISIT_ACCESS]: \"暂未添加快捷访问的资源,可从上方搜索后快速添加\",\n [K.RECOMMEND_SEARCH]: \"搜索推荐\",\n [K.SEARCH_RESULT_EMPTY]: \"搜索结果为空,请重新输入\",\n [K.ENTER_KEY_WORDS]: \"输入关键词搜索\",\n [K.ADD_TO_QUICK_ACCESS]: \"添加至快捷访问\",\n [K.REMOVE_FROM_QUICK_ACCESS]: \"从快捷访问移除\",\n [K.MANAGE]: \"管理\",\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 { getRuntime } from \"@next-core/brick-kit\";\nimport { BrickConf, RouteConfOfBricks } from \"@next-core/brick-types\";\n\nexport function getNewUIStatus(isSetPageTitleStyle?: boolean): boolean {\n const { getFeatureFlags, getCurrentRoute } = getRuntime();\n const flags = getFeatureFlags();\n\n if (flags[\"migrate-to-brick-next-v3\"]) return true;\n\n const featureFlag = flags[\"support-ui-8.0-base-layout\"];\n const { bricks = [] } = (getCurrentRoute() ?? {}) as RouteConfOfBricks;\n const tplNames = [\n \"base-layout.tpl-base-page-module\",\n \"base-layout.tpl-base-page-module-cmdb\",\n \"base-layout.tpl-homepage-base-module\",\n \"base-layout.tpl-homepage-base-module-cmdb\",\n ];\n if (\n bricks.some((v: BrickConf) => tplNames.includes(v?.brick)) &&\n !!featureFlag\n ) {\n if (isSetPageTitleStyle) {\n return bricks.some((v: BrickConf) =>\n tplNames.slice(0, 2).includes(v?.brick)\n );\n }\n return true;\n }\n return false;\n}\n","import React from \"react\";\nimport { useApplyPageTitle } from \"@next-core/brick-kit\";\nimport { getNewUIStatus } from \"../utils\";\ninterface PageTitleProps {\n pageTitle: string;\n pageTitleScale?: number;\n dashboardMode?: boolean;\n}\n\nexport function PageTitle({\n pageTitle,\n pageTitleScale,\n dashboardMode,\n}: PageTitleProps): React.ReactElement {\n useApplyPageTitle(pageTitle);\n const isShowNewUiMode = getNewUIStatus();\n const scale = (dashboardMode && pageTitleScale) || 1;\n const decoratorStyle =\n scale === 1\n ? null\n : {\n backgroundSize: `${518 * scale}px ${45 * scale}px`,\n };\n\n return (\n <>\n {dashboardMode && (\n <span className=\"page-title-before\" style={decoratorStyle}></span>\n )}\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 * scale,\n height: \"100%\",\n ...(scale === 1\n ? null\n : {\n backgroundSize: `100% ${45 * scale}px`,\n }),\n }\n : {\n fontSize: isShowNewUiMode\n ? \"var(--title-font-size-larger)\"\n : \"var(--page-title-font-size)\",\n fontWeight: isShowNewUiMode\n ? \"normal\"\n : \"var(--page-title-font-weight)\",\n lineHeight: \"32px\",\n }),\n }}\n >\n {pageTitle}\n </span>\n {dashboardMode && (\n <span className=\"page-title-after\" style={decoratorStyle}></span>\n )}\n </>\n );\n}\n","import * as React from \"react\";\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}\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, { useMemo } 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\";\nimport { getNewUIStatus } from \"../utils\";\ninterface MicroAppProps {\n pageTitle?: string;\n pageTitleScale?: number;\n bannerPageTitle?: string;\n bannerStyle?: React.CSSProperties;\n noGap?: boolean;\n dashboardMode?: boolean;\n hideLogo?: boolean;\n hideExitBtn?: boolean;\n}\n\nexport function MicroApp({\n pageTitle,\n pageTitleScale,\n bannerPageTitle,\n bannerStyle,\n noGap,\n dashboardMode,\n hideLogo,\n hideExitBtn,\n}: MicroAppProps): React.ReactElement {\n const { dashboard_mode_logo_url } = getRuntime().getBrandSettings();\n const isShowNewUiMode = getNewUIStatus(true);\n const scale = (dashboardMode && pageTitleScale) || 1;\n const pageTitleStyle: React.CSSProperties =\n scale === 1\n ? null\n : {\n height: 76 * scale,\n };\n\n return (\n <>\n <div className=\"banner-container\" style={bannerStyle}>\n <div className=\"banner-header-container\">\n <div className=\"banner-page-title\">\n {bannerPageTitle ? (\n <PageTitle pageTitle={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\n className={classNames(\"micro-app-container\", {\n \"micro-view-container\": isShowNewUiMode,\n })}\n >\n <div className=\"header-container\">\n <div className=\"page-title\" style={pageTitleStyle}>\n {pageTitle ? (\n <PageTitle\n pageTitle={pageTitle}\n pageTitleScale={scale}\n dashboardMode={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 {dashboardMode && (\n <>\n {!hideLogo && (\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 )}\n {!hideExitBtn && <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\": 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 string\n * @required -\n * @default -\n * @description 设置 banner 标题。如果要使用复杂的标题构件,请使用插槽 `bannerTitleBar`\n * @group other\n */\n @property()\n bannerPageTitle: string;\n\n /**\n * @kind boolean\n * @required -\n * @default false\n * @description 内容区是否需要设置`overflow-x: auto`\n * @group ui\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 ui\n */\n @property({\n type: Boolean,\n })\n noGap: boolean;\n\n /**\n * @kind boolean\n * @default false\n * @description 是否启用大屏模式。\n * @group ui\n */\n @property({\n type: Boolean,\n })\n dashboardMode: boolean;\n\n /**\n * @description 标题栏大小比例,默认为 1,仅用于暗黑大屏模式。\n * @group ui\n */\n @property({\n type: Number,\n })\n pageTitleScale?: number;\n\n /**\n * @kind boolean\n * @default false\n * @description 是否隐藏工具栏(常用语大屏模式)。\n * @group ui\n */\n @property({\n type: Boolean,\n })\n hideToolbar: boolean;\n\n /**\n * @default -\n * @description banner 的样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n bannerStyle?: React.CSSProperties;\n\n /**\n * @kind boolean\n * @required -\n * @default false\n * @description 隐藏logo\n * @group ui\n */\n @property({\n type: Boolean,\n })\n hideLogo: boolean;\n\n /**\n * @kind boolean\n * @required -\n * @default false\n * @description 隐藏退出按钮\n * @group ui\n */\n @property({\n type: Boolean,\n })\n hideExitBtn: boolean;\n\n /**\n * @private\n */\n @property({\n type: Boolean,\n })\n hasSubMenu: boolean;\n\n /**\n * @private\n *\n */\n @property({\n type: Boolean,\n })\n hasTitleBar: boolean;\n\n /**\n * @private\n */\n @property({\n type: Boolean,\n })\n hasToolbar: boolean;\n\n /**\n * @private\n */\n @property({\n type: Boolean,\n })\n hasBanner: boolean;\n\n /**\n * @private\n */\n @property({\n type: Boolean,\n })\n hasBannerTitleBar: boolean;\n\n /**\n * @private\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 pageTitleScale={this.pageTitleScale}\n dashboardMode={this.dashboardMode}\n bannerPageTitle={this.bannerPageTitle}\n bannerStyle={this.bannerStyle}\n hideLogo={this.hideLogo}\n hideExitBtn={this.hideExitBtn}\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 =\n this._checkSlotBySelector(titleBarSlotSelector);\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 { Location, LocationDescriptorObject } from \"history\";\nimport { PluginHistoryState } from \"@next-core/brick-types\";\n\nexport type ExtendedLocationDescriptorObject =\n LocationDescriptorObject<PluginHistoryState> & {\n /**\n * Whether to keep current search when click on links, defaults to `false`.\n *\n * `true` - Keep all current search params.\n * `false` - Ignore all current search params.\n * `[...]` - Keep specified current search params.\n */\n keepCurrentSearch?: boolean | string[];\n };\n\nexport function getExtendedLocationDescriptor(\n _to: ExtendedLocationDescriptorObject,\n currentLocation: Location\n): LocationDescriptorObject<PluginHistoryState> {\n const { keepCurrentSearch, ...to } = _to;\n if (!keepCurrentSearch) {\n return to;\n }\n\n const currentUrlSearchParams = new URLSearchParams(currentLocation.search);\n const newUrlSearchParams = new URLSearchParams(to.search ?? \"\");\n\n for (const [key, value] of currentUrlSearchParams.entries()) {\n if (\n !newUrlSearchParams.has(key) &&\n (keepCurrentSearch === true || keepCurrentSearch.includes(key))\n ) {\n newUrlSearchParams.append(key, value);\n }\n }\n const search = newUrlSearchParams.toString();\n return {\n ...to,\n search: search ? `?${search}` : search,\n };\n}\n","// Ref https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/modules/Link.js\nimport React, {\n useEffect,\n useMemo,\n useState,\n useRef,\n useCallback,\n} from \"react\";\nimport { createLocation } from \"history\";\nimport { getHistory } from \"@next-core/brick-kit\";\nimport {\n ExtendedLocationDescriptorObject,\n getExtendedLocationDescriptor,\n} from \"./getExtendedLocationDescriptor\";\n\nfunction isModifiedEvent(event: MouseEvent | React.MouseEvent): boolean {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport type ExtendedLocationDescriptor =\n | string\n | ExtendedLocationDescriptorObject;\nexport type { ExtendedLocationDescriptorObject };\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"onClick\"> {\n to?: ExtendedLocationDescriptor;\n innerRef?: string;\n noEmptyHref?: boolean;\n replace?: boolean;\n disabled?: boolean;\n /**\n * Set `useNativeEvent` to true in shadow DOM.\n *\n * Notice: when set it to true, the inner elements inside Link should also use native events.\n * Otherwise the event bubbling may not work as you expected.\n */\n useNativeEvent?: boolean;\n onClick?: (e: MouseEvent | React.MouseEvent) => void;\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nexport function Link(props: LinkProps): React.ReactElement {\n const {\n innerRef,\n replace,\n to,\n noEmptyHref,\n disabled,\n style,\n useNativeEvent,\n onClick,\n ...rest\n } = props;\n const history = getHistory();\n\n const [currentLocation, setCurrentLocation] = useState(history.location);\n const linkRef = useRef<HTMLAnchorElement>();\n useEffect(() => {\n // Listen history change only when necessary.\n if (typeof to !== \"string\" && to?.keepCurrentSearch) {\n return history.listen((loc) => {\n setCurrentLocation(loc);\n });\n }\n }, [history, to]);\n\n const computedHref = useMemo(() => {\n if (disabled) return;\n\n if (props.href) {\n return props.href;\n }\n\n if (!to) return;\n\n const loc =\n typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : getExtendedLocationDescriptor(to, currentLocation);\n return loc ? history.createHref(loc) : \"\";\n }, [disabled, props.href, to, currentLocation, history]);\n\n const handleClick = useCallback(\n (event: MouseEvent | React.MouseEvent): void => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n if (props.href) return;\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!props.target || props.target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n if (!to) return;\n\n const method = replace ? history.replace : history.push;\n\n method(\n typeof to === \"string\"\n ? to\n : getExtendedLocationDescriptor(to, currentLocation)\n );\n }\n },\n [\n currentLocation,\n disabled,\n history,\n onClick,\n props.href,\n props.target,\n replace,\n to,\n ]\n );\n\n useEffect(() => {\n const link = linkRef.current;\n if (!link || !useNativeEvent) {\n return;\n }\n link.addEventListener(\"click\", handleClick);\n return () => {\n link.removeEventListener(\"click\", handleClick);\n };\n }, [handleClick, useNativeEvent]);\n\n rest.href = computedHref || !noEmptyHref ? computedHref : undefined;\n\n return (\n <a\n {...rest}\n style={{\n ...(disabled\n ? { cursor: \"not-allowed\", color: \"var(--text-color-disabled)\" }\n : null),\n ...style,\n }}\n onClick={useNativeEvent ? null : handleClick}\n ref={linkRef}\n />\n );\n}\n","export enum Colors {\n green = \"green\",\n red = \"red\",\n blue = \"blue\",\n orange = \"orange\",\n cyan = \"cyan\",\n purple = \"purple\",\n geekblue = \"geekblue\",\n gray = \"gray\",\n}\n\nexport const COLORS_MAP: Record<\n Colors,\n { color: string; background: string; borderColor: string }\n> = {\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/**\n * 如果提供的颜色值是平台提供的规范颜色,则转换为使用平台规范的颜色定义,包括color、background、borderColor,不是的话则原样输出。\n * @param color {string} 颜色值\n * @return {color:string;background:string;borderColor:string;} 返回处理后的对应颜色值\n */\nexport function getColor(\n color: string\n): { color: string; background: string; borderColor: string } {\n return (\n COLORS_MAP[color as Colors] ?? {\n color,\n background: color,\n borderColor: color,\n }\n );\n}\n","import api from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../css-loader/dist/cjs.js??ref--15-1!../../../../postcss-loader/dist/cjs.js??ref--15-2!./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 React, { DOMAttributes, useCallback, useMemo, useRef } from \"react\";\nimport { Icon as _LegacyIcon } from \"@ant-design/compatible\";\nimport { IconComponent, IconProps } from \"@ant-design/compatible/lib/icon\";\nimport Icon from \"@ant-design/icons\";\nimport { Avatar, AvatarProps } from \"antd\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n MenuIcon,\n RefinedAntdIcon,\n LegacyAntdIcon,\n FaIcon,\n EasyopsIcon,\n GradientColor,\n} from \"@next-core/brick-types\";\nimport { BrickIcon } from \"@next-core/brick-icons\";\nimport { Colors, COLORS_MAP, getColor } from \"./utils/getColor\";\nimport classnames from \"classnames\";\nimport cssStyle from \"./GeneralIcon.module.css\";\nimport { isEqual, omit, uniqueId } from \"lodash\";\nimport { getRuntime } from \"@next-core/brick-kit\";\n\nconst LegacyIcon = _LegacyIcon as IconComponent<\n IconProps &\n Pick<DOMAttributes<HTMLSpanElement>, \"onMouseEnter\" | \"onMouseLeave\">\n>;\n\ntype SrcIcon = {\n imgSrc?: string;\n imgStyle?: React.CSSProperties;\n};\n\ninterface MenuIconProps\n extends Pick<\n DOMAttributes<HTMLSpanElement>,\n \"onClick\" | \"onMouseEnter\" | \"onMouseLeave\"\n > {\n icon: MenuIcon | SrcIcon;\n bg?: boolean;\n size?: number | \"large\" | \"small\" | \"default\";\n shape?: \"circle\" | \"square\" | \"round-square\";\n reverseBgColor?: boolean;\n style?: React.CSSProperties;\n showEmptyIcon?: boolean;\n noPublicRoot?: boolean;\n imageLoading?: \"lazy\" | \"eager\";\n iconClassName?: string;\n}\n\nfunction isGradientColor(\n color: string | GradientColor\n): color is GradientColor {\n return (\n color !== undefined &&\n (color as GradientColor)?.startColor !== undefined &&\n (color as GradientColor)?.endColor !== undefined\n );\n}\n\nexport function GeneralIcon({\n icon: _icon,\n bg,\n size,\n shape,\n reverseBgColor,\n onClick,\n onMouseEnter,\n onMouseLeave,\n showEmptyIcon,\n style: _style,\n noPublicRoot,\n imageLoading,\n iconClassName,\n}: MenuIconProps): React.ReactElement {\n const memoizedIcon = useDeepEqualMemo(_icon);\n const memoizedStyle = useDeepEqualMemo(_style);\n const getStyle = useCallback(\n (icon: MenuIcon): React.CSSProperties => {\n let mergedStyle: React.CSSProperties;\n if (icon?.color) {\n if (!isGradientColor(icon.color)) {\n if (bg) {\n if (COLORS_MAP[icon.color as Colors]) {\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 as Colors]\n ? getColor(icon.color).color\n : icon.color,\n };\n }\n } else {\n mergedStyle = {\n color: \"transparent\",\n };\n }\n }\n return mergedStyle;\n },\n [bg, reverseBgColor]\n );\n const getDefaultIcon = useCallback(\n (bg: boolean, mergedStyle: React.CSSProperties, iconNode: JSX.Element) => {\n return bg ? (\n <Avatar\n icon={\n showEmptyIcon ? (\n <Icon\n style={omit(mergedStyle, \"background\")}\n component={() => (\n <BrickIcon icon=\"empty-icon\" category=\"common\" />\n )}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n />\n ) : (\n iconNode\n )\n }\n size={size ?? \"default\"}\n shape={(shape as AvatarProps[\"shape\"]) ?? \"circle\"}\n style={mergedStyle}\n className={classnames({\n [cssStyle.roundSquareBg]: shape === \"round-square\",\n })}\n ></Avatar>\n ) : (\n iconNode\n );\n },\n [onClick, onMouseEnter, onMouseLeave, shape, showEmptyIcon, size]\n );\n\n return useMemo(() => {\n let iconNode = <></>;\n let icon = memoizedIcon;\n if (typeof icon === \"number\" || typeof icon === \"string\") return iconNode;\n if (!icon) icon = {};\n let mergedStyle: React.CSSProperties;\n\n if (\"imgSrc\" in icon && icon.imgSrc) {\n iconNode = (\n <img\n src={\n /^(?:https?|data):|^\\//.test(icon.imgSrc) ||\n icon.imgSrc.startsWith(\"api/\")\n ? icon.imgSrc\n : `${\n noPublicRoot\n ? getRuntime().getBasePath()\n : (window as any).PUBLIC_ROOT ?? \"\"\n }${icon.imgSrc}`\n }\n width={size}\n height={size}\n style={icon.imgStyle}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n loading={imageLoading}\n />\n );\n } else if (\"lib\" in icon) {\n mergedStyle = getStyle(icon);\n\n if (memoizedStyle) {\n if (mergedStyle) {\n Object.assign(mergedStyle, memoizedStyle);\n } else {\n mergedStyle = memoizedStyle;\n }\n }\n\n const iconType =\n (icon as RefinedAntdIcon | FaIcon | EasyopsIcon)?.icon ||\n (icon as LegacyAntdIcon)?.type;\n\n if (!icon || (!iconType && showEmptyIcon)) {\n return getDefaultIcon(bg, mergedStyle, iconNode);\n }\n\n const migrateV3 =\n process.env.NODE_ENV === \"test\"\n ? false\n : getRuntime().getFeatureFlags()[\"migrate-to-brick-next-v3\"];\n const gradientColor = isGradientColor(icon.color)\n ? icon.color\n : undefined;\n const generalIconId =\n gradientColor && (!migrateV3 || icon.lib !== \"fa\")\n ? uniqueId(\"generalIcon\")\n : undefined;\n\n const mergedStyleByBg = bg\n ? omit(mergedStyle, \"background\")\n : mergedStyle;\n\n if (icon.lib === \"antd\") {\n const type =\n (icon as RefinedAntdIcon).icon || (icon as LegacyAntdIcon).type;\n iconNode = (\n <LegacyIcon\n type={type}\n theme={icon.theme}\n style={mergedStyleByBg}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n className={classnames(generalIconId, iconClassName)}\n data-icon={\n (icon as RefinedAntdIcon).icon || (icon as LegacyAntdIcon).type\n }\n />\n );\n }\n\n if (icon.lib === \"fa\") {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const faIcon: IconName | [IconPrefix, IconName] = icon.prefix\n ? [icon.prefix, icon.icon]\n : icon.icon;\n const migrateProps = migrateV3 ? { gradientColor } : null;\n const iconStyle = migrateV3 ? null : { verticalAlign: 0 };\n\n iconNode = (\n <Icon\n style={{ ...iconStyle, ...mergedStyleByBg }}\n component={() => (\n <FontAwesomeIcon\n icon={faIcon}\n className={classnames(cssStyle.faIcon, iconClassName)}\n {...migrateProps}\n />\n )}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n className={generalIconId}\n data-icon={icon.icon}\n />\n );\n }\n\n if (icon.lib === \"easyops\") {\n iconNode = (\n <Icon\n style={mergedStyleByBg}\n component={() => (\n <BrickIcon\n icon={(icon as EasyopsIcon).icon}\n category={(icon as EasyopsIcon).category}\n />\n )}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n className={classnames(generalIconId, iconClassName)}\n data-icon={icon.icon}\n />\n );\n }\n\n if (gradientColor && generalIconId) {\n let gradientIconDirection;\n switch (gradientColor.direction) {\n case \"left-to-right\":\n gradientIconDirection = { x1: \"0\", y1: \"0\", x2: \"1\", y2: \"0\" };\n break;\n case \"top-to-bottom\":\n default:\n gradientIconDirection = { x1: \"0\", y1: \"0\", x2: \"0\", y2: \"1\" };\n }\n\n iconNode = (\n <>\n {iconNode}\n <div style={{ position: \"absolute\" }}>\n <svg width=\"0\" height=\"0\" aria-hidden={true} focusable={false}>\n <defs>\n <linearGradient\n id={`linearGradient-${generalIconId}`}\n {...gradientIconDirection}\n >\n `\n <stop offset=\"0%\" stopColor={gradientColor.startColor} />\n <stop offset=\"100%\" stopColor={gradientColor.endColor} />\n </linearGradient>\n </defs>\n </svg>\n <style>\n {`.${generalIconId} svg path {\n fill: url(#linearGradient-${generalIconId});\n }`}\n </style>\n </div>\n </>\n );\n }\n\n if (bg) {\n iconNode = (\n <Avatar\n icon={iconNode}\n size={size ?? \"default\"}\n shape={(shape as AvatarProps[\"shape\"]) ?? \"circle\"}\n style={{\n ...(gradientColor ? { backgroundColor: \"#fff\" } : {}),\n ...mergedStyle,\n }}\n className={classnames({\n [cssStyle.roundSquareBg]: shape === \"round-square\",\n })}\n ></Avatar>\n );\n }\n } else {\n return getDefaultIcon(bg, getStyle(icon as MenuIcon), iconNode);\n }\n\n return iconNode;\n }, [\n bg,\n memoizedIcon,\n onClick,\n onMouseEnter,\n onMouseLeave,\n shape,\n imageLoading,\n getStyle,\n showEmptyIcon,\n getDefaultIcon,\n iconClassName,\n size,\n memoizedStyle,\n noPublicRoot,\n ]);\n}\n\n// Use deepEqual to compare icons, to avoid flicker of easyops icon.\nfunction useDeepEqualMemo<T>(value: T): T {\n const ref = useRef<T>(undefined);\n\n if (!isEqual(ref.current, value)) {\n ref.current = value;\n }\n\n return ref.current;\n}\n","import api from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../css-loader/dist/cjs.js??ref--15-1!../../../../postcss-loader/dist/cjs.js??ref--15-2!./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 React from \"react\";\nimport { Menu } from \"antd\";\nimport { MenuTheme } from \"antd/lib/menu/MenuContext\";\nimport { isObject, uniq } from \"lodash\";\nimport { UnregisterCallback, Location, parsePath } from \"history\";\nimport { getHistory } from \"@next-core/brick-kit\";\nimport { matchPath } from \"@next-core/brick-utils\";\nimport {\n SidebarMenuSimpleItem,\n SidebarMenuItem,\n SidebarMenuGroup,\n} from \"@next-core/brick-types\";\nimport { Link } from \"./Link\";\nimport { GeneralIcon } from \"./GeneralIcon\";\nimport style from \"./Sidebar.module.css\";\n\ninterface SidebarProps {\n menuItems: SidebarMenuItem[];\n theme?: MenuTheme;\n inlineIndent?: number;\n collapsed?: boolean;\n}\n\ninterface SidebarState {\n location: Location;\n}\n\nfunction isGroup(item: SidebarMenuItem): item is SidebarMenuGroup {\n return item.type === \"group\";\n}\n\nfunction isSubMenu(item: SidebarMenuItem): item is SidebarMenuGroup {\n return item.type === \"subMenu\";\n}\n\nexport function initMenuItemAndMatchCurrentPathKeys(\n menuItems: SidebarMenuItem[],\n pathname: string,\n search: string,\n parentCursor: string\n): {\n selectedKeys: string[];\n openedKeys: string[];\n} {\n const selectedKeys: string[] = [];\n const openedKeys: string[] = [];\n\n let 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 === \"\" ? `${cursor}` : `${parentCursor}.${cursor}`;\n if (isGroup(item) || isSubMenu(item)) {\n const tmp = initMenuItemAndMatchCurrentPathKeys(\n item.items,\n pathname,\n search,\n item.key\n );\n selectedKeys.push(...tmp.selectedKeys);\n if (tmp.selectedKeys.length || item.defaultExpanded) {\n openedKeys.push(item.key);\n }\n openedKeys.push(...tmp.openedKeys);\n } else {\n if (matchMenuItem(item, pathname, search)) {\n selectedKeys.push(String(item.key));\n }\n }\n cursor += 1;\n });\n if (selectedKeys.length && parentCursor !== \"\") {\n openedKeys.push(parentCursor);\n }\n return {\n selectedKeys: selectedKeys,\n openedKeys: openedKeys,\n };\n}\n\nexport function getMatchOfSearch(\n currentSearch: string,\n toSearch: string\n): boolean {\n const current = new URLSearchParams(currentSearch);\n const to = new URLSearchParams(toSearch);\n for (const [key, value] of to.entries()) {\n if (current.get(key) !== value) {\n return false;\n }\n }\n return true;\n}\n\nexport function matchMenuItem(\n item: SidebarMenuSimpleItem,\n pathname: string,\n search: string\n): boolean {\n if (!item.to) return false;\n const to = typeof item.to === \"object\" ? item.to : parsePath(item.to);\n\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath = to.pathname.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n let match = !!matchPath(pathname, {\n path: escapedPath,\n exact: item.exact,\n });\n\n if (match && (item as any).activeMatchSearch) {\n match = getMatchOfSearch(search, to.search);\n }\n\n if (!match && Array.isArray(item.activeIncludes)) {\n for (const include of item.activeIncludes) {\n let paths: string[];\n let exact = true;\n\n if (isObject(include)) {\n paths = Array.isArray(include.path) ? include.path : [include.path];\n exact = include.exact;\n } else {\n paths = [include];\n }\n\n for (const path of paths) {\n let parsedPath;\n const hasSearch = path.includes(\"?\");\n\n if (hasSearch) {\n parsedPath = parsePath(path);\n }\n match = !!matchPath(pathname, {\n path: hasSearch ? parsedPath.pathname : path,\n exact,\n });\n\n if (match && parsedPath?.search) {\n match = getMatchOfSearch(search, parsedPath.search);\n }\n\n if (match) {\n break;\n }\n }\n\n if (match) {\n break;\n }\n }\n }\n\n if (match && Array.isArray(item.activeExcludes)) {\n for (const include of item.activeExcludes) {\n let paths: string[];\n let exact = true;\n\n if (isObject(include)) {\n paths = Array.isArray(include.path) ? include.path : [include.path];\n exact = include.exact;\n } else {\n paths = [include];\n }\n\n for (const path of paths) {\n let parsedPathWithSearch: Location | undefined;\n if (path.includes(\"?\")) {\n parsedPathWithSearch = parsePath(path);\n }\n\n match = !(\n matchPath(pathname, {\n path: parsedPathWithSearch ? parsedPathWithSearch.pathname : path,\n exact,\n }) &&\n (!parsedPathWithSearch ||\n getMatchOfSearch(search, parsedPathWithSearch.search))\n );\n\n if (!match) {\n break;\n }\n }\n\n if (!match) {\n break;\n }\n }\n }\n\n return match;\n}\n\nexport class Sidebar extends React.Component<SidebarProps, SidebarState> {\n private unlisten: UnregisterCallback;\n\n constructor(props: SidebarProps) {\n super(props);\n const history = getHistory();\n\n this.state = {\n location: history.location,\n };\n\n this.unlisten = history.listen((location) => {\n this.setState({\n location,\n });\n });\n }\n\n componentWillUnmount(): void {\n this.unlisten();\n }\n\n private renderSimpleMenuItem(\n item: SidebarMenuSimpleItem,\n ignoreTitle?: boolean\n ): React.ReactNode {\n return (\n <Menu.Item\n key={String(item.key)}\n title={ignoreTitle ? undefined : item.text}\n >\n <Link to={item.to} href={item.href} target={item.target}>\n {item.icon && (\n <i className={style.menuItemIcon}>\n <GeneralIcon icon={item.icon} size={14} />\n </i>\n )}\n <span className={style.menuItemText} title={item.text}>\n {item.text}\n </span>\n </Link>\n </Menu.Item>\n );\n }\n\n private renderGroupMenu(item: SidebarMenuGroup): React.ReactNode {\n return (\n <Menu.ItemGroup\n key={item.key}\n title={<span title={item.title}>{item.title}</span>}\n >\n {item.items.map((innerItem) => this.renderMenuItem(innerItem))}\n </Menu.ItemGroup>\n );\n }\n\n private renderSubMenu(item: SidebarMenuGroup): React.ReactNode {\n return (\n <Menu.SubMenu\n key={item.key}\n title={\n <span>\n {item.icon && (\n <i className={style.menuItemIcon}>\n <GeneralIcon icon={item.icon} size={14} />\n </i>\n )}\n <span className={style.menuItemText} title={item.title}>\n {item.title}\n </span>\n </span>\n }\n >\n {/* Items in sub-menu should ignore their titles. */}\n {item.items.map((innerItem) => this.renderMenuItem(innerItem, true))}\n </Menu.SubMenu>\n );\n }\n\n private renderMenuItem(\n item: SidebarMenuItem,\n ignoreTitle?: boolean\n ): React.ReactNode {\n return isSubMenu(item)\n ? this.renderSubMenu(item)\n : isGroup(item)\n ? this.renderGroupMenu(item)\n : this.renderSimpleMenuItem(item, ignoreTitle);\n }\n\n render(): React.ReactNode {\n const { pathname, search } = this.state.location;\n let { selectedKeys, openedKeys } = initMenuItemAndMatchCurrentPathKeys(\n this.props.menuItems,\n pathname,\n search,\n \"\"\n );\n if (this.props.collapsed) {\n openedKeys = [];\n }\n return (\n <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={{ borderRight: 0 }}\n className={style.menuContainer}\n inlineCollapsed={this.props.collapsed}\n >\n {this.props.menuItems.map((item) => this.renderMenuItem(item))}\n </Menu>\n );\n }\n}\n","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 api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 classNames from \"classnames\";\nimport { SidebarMenu } from \"@next-core/brick-types\";\nimport { Link } from \"@next-libs/basic-components\";\nimport { GeneralIcon, Sidebar } from \"@next-libs/basic-components\";\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 AppMenu(props: AppMenuProps): React.ReactElement {\n const { menu, collapsed } = props;\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 <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} size={20} />\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} size={20} />\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 </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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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, GeneralIcon } 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\";\nimport classnames from \"classnames\";\n\nexport function LogoBar(): React.ReactElement {\n const brand = getRuntime().getBrandSettings();\n const currentApp = getRuntime().getCurrentApp();\n const flag = getRuntime().getFeatureFlags();\n const isUseUI8 =\n currentApp?.layoutType === \"business\" && flag[\"support-ui-8.0-base-layout\"];\n const logo: React.ReactElement = brand.menu_bar_logo_url ? (\n <img\n src={brand.menu_bar_logo_url}\n style={{\n height: isUseUI8 ? 24 : 32,\n verticalAlign: \"top\",\n paddingRight: isUseUI8 ? 12 : 0,\n }}\n />\n ) : isUseUI8 ? (\n <GeneralIcon\n icon={{\n category: \"blueprint\",\n color: \"var(--color-brand)\",\n icon: \"easyops\",\n lib: \"easyops\",\n }}\n style={{\n fontSize: 24,\n paddingRight: 12,\n marginTop: 2,\n cursor: \"pointer\",\n }}\n />\n ) : (\n <Logo height={32} style={{ verticalAlign: \"top\" }} />\n );\n return (\n <div\n className={classnames(styles.logoBar, {\n [styles.ui8]: isUseUI8,\n [styles.ui5]: !isUseUI8,\n })}\n >\n {brand.menu_bar_logo_no_link === \"true\" ? (\n <span className={styles.logoLink}>{logo}</span>\n ) : (\n <Link to=\"/\" className={styles.logoLink}>\n {logo}\n </Link>\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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\";\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}\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 subMenuRef: React.RefObject<HTMLDivElement>;\n}\n\nexport function AppSubMenu({\n subMenu,\n subMenuRef,\n}: 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\n className={styles.appSubMenu}\n ref={subMenuRef}\n data-testid=\"sub-menu-bar\"\n >\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 || {};","export class JsonStorage {\n constructor(\n private storage: Storage,\n private prefix: string = \"brick-next-\"\n ) {}\n\n setItem<T = any>(name: string, value: T): void {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n\n getItem<T = any>(name: string): T {\n return JSON.parse(this.storage.getItem(this.prefix + name)) as T;\n }\n\n removeItem(name: string): void {\n return this.storage.removeItem(this.prefix + name);\n }\n\n clear(): void {\n return this.storage.clear();\n }\n}\n","import React, { useEffect, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { useCurrentApp } from \"@next-core/brick-kit\";\nimport { NavTip, 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\";\nimport { JsonStorage } from \"@next-libs/storage\";\nimport moment from \"moment\";\n\nexport type MenuBarProps = AppMenuProps & {\n subMenu: SidebarSubMenu;\n};\n\nexport function MenuBar(props: MenuBarProps): React.ReactElement {\n const app = useCurrentApp();\n const [tipList, setTipList] = useState<NavTip[]>([]);\n const storage = React.useMemo(() => new JsonStorage(localStorage), []);\n const subMenuRef = React.createRef<HTMLDivElement>();\n\n React.useEffect(() => {\n document.body.classList.toggle(\"menu-bar-collapsed\", !!props.collapsed);\n }, [props.collapsed]);\n\n const handleShowTips = ((e: CustomEvent<NavTip[]>): void => {\n const list = (e.detail ?? []).filter((item) => {\n const isTipClosing =\n item.closable &&\n storage.getItem(item.tipKey) &&\n moment().unix() <= storage.getItem(item.tipKey);\n return !isTipClosing;\n });\n setTipList(list);\n }) as EventListener;\n\n React.useEffect(() => {\n window.addEventListener(\"app.bar.tips\", handleShowTips);\n return () => {\n window.removeEventListener(\"app.bar.tips\", handleShowTips);\n };\n }, []);\n\n useEffect(() => {\n const subMenu = subMenuRef.current;\n const sidebarHeight = `calc(100vh - var(--app-bar-height) + 1px - ${\n tipList.length * 32\n }px)`;\n const top = `calc(var(--app-bar-height) + ${tipList.length * 32}px)`;\n subMenu && (subMenu.style.height = sidebarHeight);\n subMenu && (subMenu.style.top = top);\n }, [tipList, subMenuRef]);\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 && (\n <AppSubMenu subMenu={props.subMenu} subMenuRef={subMenuRef} />\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 {\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* @deprecated\n* @memo\n* 该构件已迁移至 `nav-legacy` 包中维护,后续版本将不再维护该构件,请使用 `nav-legacy.menu-bar` 构件\n*\n*\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 { 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\";\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=\"currentColor\" fillRule=\"nonzero\"><path d=\"M0 0h4v4H0zM0 6h4v4H0zM6 0h4v4H6zM6 6h4v4H6zM12 0h4v4h-4zM12 6h4v4h-4zM0 12h4v4H0zM6 12h4v4H6zM12 12h4v4h-4z\" /></g></svg>;\n}\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+bGF1bmNocGFkPC90aXRsZT4KICAgIDxnIGlkPSLpobXpnaItMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9ImxhdW5jaHBhZCIgZmlsbD0iY3VycmVudENvbG9yIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0i57yW57uEIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tMTUiIHg9IjAiIHk9IjAiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tMTYiIHg9IjAiIHk9IjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tMTciIHg9IjYiIHk9IjAiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tMTgiIHg9IjYiIHk9IjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tMTkiIHg9IjEyIiB5PSIwIiB3aWR0aD0iNCIgaGVpZ2h0PSI0Ij48L3JlY3Q+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2i5aSH5Lu9LTIwIiB4PSIxMiIgeT0iNiIgd2lkdGg9IjQiIGhlaWdodD0iNCI+PC9yZWN0PgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9ouWkh+S7vS0yMSIgeD0iMCIgeT0iMTIiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tMjIiIHg9IjYiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI0Ij48L3JlY3Q+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2i5aSH5Lu9LTIzIiB4PSIxMiIgeT0iMTIiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPjwvcmVjdD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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\";\nimport i18next from \"i18next\";\nimport { NS_BASIC_BRICKS, K } from \"../../i18n/constants\";\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={i18next.t(\n `${NS_BASIC_BRICKS}:${K.SEARCH_BY_NAME_KEYWORD}`\n )}\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 { MicroApp } from \"@next-core/brick-types\";\n\nexport function getImageUrl(app: MicroApp, defaultAppIcon: string): string {\n return app.icons && app.icons.large\n ? /^(?:https?|data):|^\\//.test(app.icons.large)\n ? app.icons.large\n : `${\n window.STANDALONE_MICRO_APPS\n ? // 如果是独立打包模式\n app.standaloneMode\n ? // 如果是独立打包模式下的standalone app, 则使用 PUBLIC_ROOT 再去掉末尾的 '-/'\n // 例如: sa-static/my-app/versions/1.1.1/webroot/-/micro-apps/my-app/large.png (没设置cdn)\n // 例如: https://cdn-air.uwintech.cn/next/sa-static/my-app/versions/1.1.1/webroot/-/micro-apps/my-app/large.png (设置了cdn)\n `${window.PUBLIC_ROOT.replace(/-\\/$/, \"\")}${app.id}/versions/${\n app.currentVersion\n }/webroot/-/micro-apps/${app.id}/${app.icons.large}`\n : // 如果是独立打包模式下的普通app,则使用PUBLIC_CDN + 默认前缀micro-apps\n `${window.PUBLIC_CDN || \"\"}micro-apps/${app.id}/${\n app.icons.large\n }`\n : // 非独立打包应用使用旧模式进行设置\n `${window.PUBLIC_ROOT || \"\"}micro-apps/${app.id}/${\n app.icons.large\n }`\n }`\n : defaultAppIcon;\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Loading3QuartersOutlined, PlusCircleFilled } 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\";\nimport { getImageUrl } from \"../utils/getImageUrl\";\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={getImageUrl(app, defaultAppIcon)}\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 <div className={styles.appName} title={app.localeName}>\n {installing && (\n <Loading3QuartersOutlined spin style={{ paddingRight: 5 }} />\n )}\n {app.localeName}\n </div>\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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\";\nimport { getImageUrl } from \"../utils/getImageUrl\";\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={getImageUrl(item.app, defaultAppIcon)}\n />\n ) : (\n <img\n className={styles.appIcon}\n key={item.id}\n src={defaultAppIcon}\n />\n )\n )}\n </a>\n <div className={styles.dirName} title={props.name}>\n {props.name}\n </div>\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 <div className={styles.appName} title={name}>\n {name}\n </div>\n </>\n );\n}\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@1.0.0 */ (\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 =\n 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@1.0.0 */ (\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@1.1.0 */ (\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 { ModelSettings, ModelDesktop } from \"../../../model/api_gateway\";\nimport { ModelInstalledMicroAppBootstrap } from \"../../../model/micro_app\";\nimport { ResponseBodyWrapper } from \"../../../wrapper\";\n\nexport interface LaunchpadApi_GetLaunchpadInfoRequestParams {\n /** 指定查询storyboard下的app字段,不指定则默认返回 appId,name,position,homepage,menuIcon,icons */\n appFields?: string;\n}\n\nexport interface LaunchpadApi_GetLaunchpadInfoResponseBody {\n /** 配置 */\n settings?: Partial<ModelSettings>;\n\n /** 桌面列表 */\n desktops?: Partial<ModelDesktop>[];\n\n /** storyboards */\n storyboards?: LaunchpadApi_GetLaunchpadInfoResponseBody_storyboards_item[];\n\n /** 系统地图 */\n siteSort?: LaunchpadApi_GetLaunchpadInfoResponseBody_siteSort_item[];\n}\n\n/**\n * @description Launchpad信息\n * @endpoint GET /api/v1/micro_app_standalone/launchpad_info\n */\nexport const LaunchpadApi_getLaunchpadInfo = async (\n params: LaunchpadApi_GetLaunchpadInfoRequestParams,\n options?: HttpOptions\n): Promise<LaunchpadApi_GetLaunchpadInfoResponseBody> =>\n /**! @contract easyops.api.micro_app_standalone.launchpad.GetLaunchpadInfo@1.1.0 */ (\n await http.get<\n ResponseBodyWrapper<LaunchpadApi_GetLaunchpadInfoResponseBody>\n >(\n \"api/gateway/micro_app_standalone.launchpad.GetLaunchpadInfo/api/v1/micro_app_standalone/launchpad_info\",\n { ...options, params }\n )\n ).data;\n\nexport interface LaunchpadApi_GetLaunchpadInfoResponseBody_storyboards_item {\n /** 小产品基本信息 */\n app?: Partial<ModelInstalledMicroAppBootstrap>;\n}\n\nexport interface LaunchpadApi_GetLaunchpadInfoResponseBody_siteSort_item {\n /** 分类ID */\n id?: string;\n\n /** 分类名称 */\n name?: string;\n\n /** 分类顺序 */\n order?: number;\n\n /** 微应用列表 */\n apps?: LaunchpadApi_GetLaunchpadInfoResponseBody_siteSort_item_apps_item[];\n}\n\nexport interface LaunchpadApi_GetLaunchpadInfoResponseBody_siteSort_item_apps_item {\n /** 微应用id */\n id?: string;\n\n /** 微应用排序 */\n sort?: number;\n}\n","import { http, HttpOptions } from \"@next-core/brick-http\";\nimport { ResponseBodyWrapper } from \"../../../wrapper\";\n\nexport interface RuntimeApi_SearchMicroAppStandaloneRequestBody {\n /** 查询条件 */\n query?: Record<string, any>;\n\n /** 返回字段 */\n fields?: string[];\n}\n\nexport interface RuntimeApi_SearchMicroAppStandaloneResponseBody {\n /** 所有启用的微应用 */\n list?: Record<string, any>[];\n\n /** 总数 */\n total?: number;\n}\n\n/**\n * @description 查询独立部署小产品\n * @endpoint POST /api/v1/micro_app_standalone/search\n */\nexport const RuntimeApi_searchMicroAppStandalone = async (\n data: RuntimeApi_SearchMicroAppStandaloneRequestBody,\n options?: HttpOptions\n): Promise<RuntimeApi_SearchMicroAppStandaloneResponseBody> =>\n /**! @contract easyops.api.micro_app_standalone.runtime.SearchMicroAppStandalone@1.0.1 */ (\n await http.post<\n ResponseBodyWrapper<RuntimeApi_SearchMicroAppStandaloneResponseBody>\n >(\n \"api/gateway/micro_app_standalone.runtime.SearchMicroAppStandalone/api/v1/micro_app_standalone/search\",\n data,\n options\n )\n ).data;\n","export class DeferredService {\n private preFetchId: number;\n private preFetchScheduled = false;\n private firstFetchPromise: Promise<unknown>;\n private isFetching = false;\n private readonly task: () => Promise<unknown>;\n\n constructor(task: () => Promise<unknown>) {\n this.task = task;\n }\n\n schedulePrefetch(): void {\n if (!this.preFetchScheduled) {\n this.preFetchScheduled = true;\n const preFetchLaunchpadInfo = async (): Promise<void> => {\n this.preFetchId = null;\n this.fetch();\n };\n // istanbul ignore if\n if (typeof window.requestIdleCallback === \"function\") {\n this.preFetchId = window.requestIdleCallback(preFetchLaunchpadInfo);\n } else {\n this.preFetchId = setTimeout(\n preFetchLaunchpadInfo\n ) as unknown as number;\n }\n }\n }\n\n fetch(eager?: boolean): Promise<unknown> {\n if (this.preFetchId) {\n // istanbul ignore if\n if (typeof window.cancelIdleCallback === \"function\") {\n cancelIdleCallback(this.preFetchId);\n } else {\n clearTimeout(this.preFetchId);\n }\n this.preFetchId = null;\n }\n\n let promise: Promise<unknown>;\n if (!this.isFetching || eager) {\n this.isFetching = true;\n promise = this.task();\n promise\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error(error);\n this.firstFetchPromise = null;\n })\n .finally(() => {\n this.isFetching = false;\n });\n if (!this.firstFetchPromise) {\n this.firstFetchPromise = promise;\n }\n if (eager) {\n return promise;\n }\n }\n return this.firstFetchPromise;\n }\n}\n","import { JsonStorage } from \"@next-libs/storage\";\nimport {\n MicroApp,\n DesktopItemCustom,\n DesktopItemApp,\n DesktopData,\n SiteMapItem,\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 { LaunchpadApi_getLaunchpadInfo } from \"@next-sdk/micro-app-standalone-sdk\";\nimport { getRuntime, getAuth } from \"@next-core/brick-kit\";\nimport { pick } from \"lodash\";\nimport i18next from \"i18next\";\nimport { LaunchpadSettings } from \"./LaunchpadSettingsContext\";\nimport { DeferredService } from \"../shared/DeferredService\";\n\ninterface LaunchpadBaseInfo {\n settings: LaunchpadSettings;\n microApps: MicroApp[];\n desktops: DesktopData[];\n siteSort: SiteMapItem[];\n}\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 private initialized = false;\n private baseInfo: LaunchpadBaseInfo = {\n settings: {\n columns: 7,\n rows: 4,\n },\n microApps: [],\n desktops: [],\n siteSort: [],\n };\n public loaded = false;\n public favoritesLoaded = false;\n\n private readonly deferredLaunchpadInfo: DeferredService;\n private readonly deferredFavorites: DeferredService;\n\n constructor() {\n this.storage = new JsonStorage(localStorage);\n this.deferredLaunchpadInfo = new DeferredService(this.doFetchLaunchpadInfo);\n this.deferredFavorites = new DeferredService(this.doFetchFavorites);\n\n this.init();\n this.initialized = true;\n }\n\n init(): void {\n const runtime = getRuntime();\n this.baseInfo = {\n desktops: runtime.getDesktops(),\n microApps: runtime.getMicroApps(),\n settings: runtime.getLaunchpadSettings(),\n siteSort: runtime.getLaunchpadSiteMap(),\n };\n\n this.initValue();\n }\n\n private initValue(): void {\n this.customList = this.baseInfo.desktops\n .map((desktop) => desktop.items.filter((i) => i.type === \"custom\"))\n .flat() as DesktopItemCustom[];\n\n const microApps = this.baseInfo.microApps\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): void {\n this.maxVisitorLength = value;\n }\n\n preFetchFavorites(): void {\n this.deferredFavorites.schedulePrefetch();\n }\n\n async fetchFavoriteList(\n eager?: boolean\n ): Promise<LaunchpadApi_ListCollectionResponseItem[]> {\n await this.deferredFavorites.fetch(eager);\n return this.favoriteList;\n }\n\n private doFetchFavorites = async (): Promise<void> => {\n const result = (\n await LaunchpadApi_listCollection(\n { page: 1, pageSize: 25 },\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n )\n ).list;\n this.setFavorites(result);\n this.favoritesLoaded = true;\n };\n\n preFetchLaunchpadInfo(): void {\n if (window.STANDALONE_MICRO_APPS) {\n this.deferredLaunchpadInfo.schedulePrefetch();\n }\n }\n\n fetchLaunchpadInfo(): Promise<unknown> {\n return this.deferredLaunchpadInfo.fetch();\n }\n\n private doFetchLaunchpadInfo = async (): Promise<void> => {\n const launchpadInfo = await LaunchpadApi_getLaunchpadInfo(null, {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n });\n\n for (const storyboard of launchpadInfo.storyboards) {\n const app = storyboard.app as unknown as MicroApp;\n if (app) {\n if (app.locales) {\n // Prefix to avoid conflict between brick package's i18n namespace.\n const ns = `$tmp-${app.id}`;\n // Support any languages in `app.locales`.\n Object.entries(app.locales).forEach(([lang, resources]) => {\n i18next.addResourceBundle(lang, ns, resources);\n });\n // Use `app.name` as the fallback `app.localeName`.\n app.localeName = i18next.getFixedT(null, ns)(\"name\", app.name);\n // Remove the temporary i18n resource bundles.\n Object.keys(app.locales).forEach((lang) => {\n i18next.removeResourceBundle(lang, ns);\n });\n } else {\n app.localeName = app.name;\n }\n }\n }\n\n this.baseInfo = {\n ...launchpadInfo,\n settings: launchpadInfo.settings.launchpad as LaunchpadSettings,\n microApps: launchpadInfo.storyboards\n .map((storyboard) => storyboard.app)\n .filter(Boolean) as unknown as MicroApp[],\n } as unknown as LaunchpadBaseInfo;\n this.initValue();\n this.loaded = true;\n };\n\n getBaseInfo(): LaunchpadBaseInfo {\n return this.baseInfo;\n }\n\n getFavoritesLength(): number {\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 if (window.STANDALONE_MICRO_APPS && !this.initialized) {\n // standalone 模式时,初始化不会请求 launchpad 数据,拿不全 microApps 和 customList,所以 syncValidRecentlyVisitor 直接返回。后面调用 getLaunchpadInfo 能正常拿到 microApps 和 customList 数据,正常进行同步。\n return;\n }\n const visitors = this.getAllVisitors();\n const result = visitors.reduce((pre, v) => {\n let find: MicroApp | DesktopItemCustom;\n if (v.type === \"app\") {\n find = this.microApps.find((app) => app.id === v.id);\n } else {\n find = this.customList.find((f) => f.type === v.type && f.id === v.id);\n }\n\n if (find) {\n return pre.concat(this.processVisitor(v.type, find));\n }\n return pre;\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 processVisitor(\n type: \"app\" | \"custom\",\n item: MicroApp | DesktopItemCustom\n ): DesktopItemApp | DesktopItemCustom {\n if (type === \"app\") {\n const app = item as MicroApp;\n return {\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 currentVersion: app.currentVersion,\n standaloneMode: (app as MicroApp & { standaloneMode: boolean })\n .standaloneMode,\n } as MicroApp,\n type: \"app\",\n } as DesktopItemApp;\n }\n return item as DesktopItemCustom;\n }\n\n pushVisitor(\n type: \"app\" | \"custom\",\n item: MicroApp | DesktopItemCustom\n ): void {\n this.setItem(type, this.processVisitor(type, item));\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 = this.baseInfo.microApps.filter((app) => !app.internal);\n const siteMapList = this.baseInfo.siteSort;\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, [\n \"name\",\n \"icons\",\n \"localeName\",\n \"homepage\",\n \"currentVersion\",\n \"standaloneMode\",\n ]),\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@1.0.0 */ 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\";\nimport { getHistory } from \"@next-core/brick-kit\";\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\nexport interface 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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 { 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): React.ReactElement {\n const [recentlyVisitedList] = useState(launchpadService.getAllVisitors());\n const [favoriteList, setFavoriteList] = useState([]);\n const [isLoading, setIsLoading] = useState(!launchpadService.favoritesLoaded);\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 (eager?: boolean): Promise<void> => {\n const favoriteList = await launchpadService.fetchFavoriteList(eager);\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 = (): void => {\n getFavoriteList(true);\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 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\n const renderMyFavorites = useMemo(() => {\n return (\n <div className={classNames([styles.section, styles.favorites])}>\n {isLoading && (\n <Spin\n indicator={<LoadingOutlined style={{ fontSize: \"2.5rem\" }} />}\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]);\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 ref={deskContainerRef}\n style={{\n flex: 1,\n padding: `0 ${\n props.desktopCount ? props.arrowWidthPercent / props.desktopCount : 10\n }%`,\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 {\n MicroApp,\n DesktopData,\n DesktopItemCustom,\n} 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\ntype appItem = MicroApp & { type?: \"app\" | \"custom\" };\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 = true;\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 mapItemToDesktop = (apps: appItem[]): DesktopData => ({\n name: \"-\",\n items: apps.map((app) => {\n if (app.type === \"custom\") {\n return {\n id: app.id,\n name: app.name,\n url: app.homepage,\n type: \"custom\",\n app,\n };\n }\n return {\n type: \"app\",\n id: app.id,\n app,\n };\n }),\n });\n\n const transformCustomItem = (item: DesktopItemCustom): appItem => ({\n id: item.id,\n localeName: item.name,\n name: item.name,\n homepage: item.url,\n ...item,\n type: \"custom\",\n });\n\n let desktops: DesktopData[] = [];\n let validItems = props.microApps;\n\n if (typeof props?.desktops === \"object\" && props.desktops.length > 0) {\n validItems = [];\n\n const id2app = props.microApps.reduce((acc, app) => {\n acc.set(app.id, app);\n return acc;\n }, new Map<string, appItem>());\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 validItems.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 validItems.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 validItems.push(transformCustomItem(item));\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 validItems.push(transformCustomItem(item));\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 if (!props.desktops) {\n // 如果没有定义桌面列表(例如本地开发模式),则自动按数量切割。\n desktops = chunk(props.microApps, columns * rows).map(mapItemToDesktop);\n }\n let filteredDesktop: DesktopData;\n if (props.q) {\n const lowerQ = props.q.toLowerCase();\n filteredDesktop = mapItemToDesktop(\n validItems\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 = desktops.length;\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[desktopCursor - 1];\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 = desktops.length + 1;\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 {[...[{ name: <HomeFilled /> }], ...desktops].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={desktopCursor - 1 === index ? appCursor : -1}\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 { launchpadService } from \"../LaunchpadService\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\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 const { settings, desktops } = launchpadService.getBaseInfo();\n\n const getFilterMicroApps = (): MicroApp[] =>\n // 过滤掉状态为开发中的小产品\n launchpadService\n .getBaseInfo()\n .microApps // 兼容较老版本接口未返回 `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 const [loading, setLoading] = React.useState(\n !!window.STANDALONE_MICRO_APPS && !launchpadService.loaded\n );\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\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await launchpadService.fetchLaunchpadInfo();\n setLoading(false);\n setMicroApps(getFilterMicroApps());\n } catch (error) {\n props.onWillClose();\n handleHttpError(error);\n }\n };\n if (window.STANDALONE_MICRO_APPS) {\n startFetchLaunchpadInfo();\n } else {\n launchpadService.init();\n pollingRunningAppStatus();\n }\n\n return (): void => {\n clearTimeout(timer);\n };\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 {loading ? (\n <div className={styles.loadingWrapper}>\n <GeneralIcon\n icon={{\n lib: \"antd\",\n icon: \"loading\",\n theme: \"outlined\",\n color: \"cyan\",\n }}\n style={{\n fontSize: 58,\n }}\n />\n </div>\n ) : (\n <>\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 </>\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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.10.1 \n * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies. \n * \n * Copyright (c) 2022 kenny wong <wowohoo@qq.com> \n * http://jaywcjlove.github.io/hotkeys \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, useCapture) {\n if (object.addEventListener) {\n object.addEventListener(event, method, useCapture);\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 '⌫': 8,\n tab: 9,\n clear: 12,\n enter: 13,\n '↩': 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 winListendFocus = false; // window是否已经监听了focus事件\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\nvar getKey = function getKey(x) {\n return Object.keys(_keyMap).find(function (k) {\n return _keyMap[k] === x;\n });\n};\n\nvar getModifier = function getModifier(x) {\n return Object.keys(_modifier).find(function (k) {\n return _modifier[k] === x;\n });\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}\n\nfunction getPressedKeyString() {\n return _downKeys.map(function (c) {\n return getKey(c) || getModifier(c) || String.fromCharCode(c);\n });\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 (typeof keysInfo === 'undefined') {\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].filter(function (record) {\n // 通过函数判断,是否解除绑定,函数相等直接返回\n var isMatchingMethod = method ? record.method === method : true;\n return !(isMatchingMethod && record.scope === scope && compareArray(record.mods, mods));\n });\n });\n}; // 对监听对应快捷键的回调函数进行处理\n\n\nfunction eventHandler(event, handler, scope, element) {\n if (handler.element !== element) {\n return;\n }\n\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, element) {\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, element);\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, element);\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 var capture = false; // 对为设定范围的判断\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 (option.capture !== undefined) capture = option.capture; // 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 element: element\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, element);\n }, capture);\n\n if (!winListendFocus) {\n winListendFocus = true;\n addEvent(window, 'focus', function () {\n _downKeys = [];\n }, capture);\n }\n\n addEvent(element, 'keyup', function (e) {\n dispatch(e, element);\n clearModifier(e);\n }, capture);\n }\n}\n\nfunction trigger(shortcut) {\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'all';\n Object.keys(_handlers).forEach(function (key) {\n var dataList = _handlers[key].filter(function (item) {\n return item.scope === scope && item.shortcut === shortcut;\n });\n\n dataList.forEach(function (data) {\n if (data && data.method) {\n data.method();\n }\n });\n });\n}\n\nvar _api = {\n getPressedKeyString: getPressedKeyString,\n setScope: setScope,\n getScope: getScope,\n deleteScope: deleteScope,\n getPressedKeyCodes: getPressedKeyCodes,\n isPressed: isPressed,\n filter: filter,\n trigger: trigger,\n unbind: unbind,\n keyMap: _keyMap,\n modifier: _modifier,\n modifierMap: modifierMap\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 { hotkeys as default };\n","import React, { useCallback, useEffect, 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\";\nimport { launchpadService } from \"../LaunchpadService\";\n\nexport function LaunchpadButton(): React.ReactElement {\n const [visible, setVisible] = useState(false);\n const openLaunchpad = (): void => {\n setVisible(true);\n };\n\n const handleLaunchpadClose = (): void => {\n setVisible(false);\n };\n const handleLaunchpadWillClose = useCallback((): void => {\n getRuntime().toggleLaunchpadEffect(false);\n }, []);\n\n useEffect(() => {\n const unlisten = getHistory().listen(() => {\n // 当切换页面时,关闭 Launchpad。\n handleLaunchpadWillClose();\n setVisible(false);\n });\n return unlisten;\n }, [handleLaunchpadWillClose]);\n\n 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 }, [handleLaunchpadWillClose]);\n\n useEffect(() => {\n // 当打开/关闭 Launchpad 时,切换背景模糊,切换悬浮展开模式;\n getRuntime().toggleLaunchpadEffect(visible);\n }, [visible]);\n\n useEffect(() => {\n launchpadService.preFetchLaunchpadInfo();\n launchpadService.preFetchFavorites();\n }, []);\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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, SidebarMenu } from \"@next-core/brick-types\";\nimport { useRecentApps } from \"@next-core/brick-kit\";\nimport { Link, GeneralIcon } from \"@next-libs/basic-components\";\nimport styles from \"./AppBarBreadcrumb.module.css\";\nimport classnames from \"classnames\";\n\nexport interface BasicBreadcrumbProps {\n breadcrumb?: BreadcrumbItemConf[];\n className?: string;\n separator?: string;\n noCurrentApp?: boolean;\n showCurrentAppIcon?: boolean;\n menu?: Partial<SidebarMenu>;\n}\n\nexport function AppBarBreadcrumb(\n props: BasicBreadcrumbProps\n): React.ReactElement {\n const { currentApp } = useRecentApps();\n const {\n items: breadcrumbItems,\n noCurrentApp: breadcrumbNoCurrentApp,\n useCurrentMenuTitle,\n } = currentApp?.breadcrumb || {};\n const noCurrentApp = props.noCurrentApp ?? breadcrumbNoCurrentApp;\n\n return (\n <div className={classnames(styles.breadcrumbContainer, props.className)}>\n <Breadcrumb separator={props.separator || \">\"}>\n {breadcrumbItems &&\n breadcrumbItems.map((item: BreadcrumbItemConf, index: number) => {\n return (\n <Breadcrumb.Item key={index}>\n {index === 0 && <HomeOutlined />}\n {item.to ? <Link to={item.to}>{item.text}</Link> : item.text}\n </Breadcrumb.Item>\n );\n })}\n {currentApp && !noCurrentApp ? (\n <Breadcrumb.Item>\n {!breadcrumbItems?.length &&\n (props.showCurrentAppIcon ? (\n <GeneralIcon icon={currentApp.menuIcon} size={14} />\n ) : (\n <HomeOutlined />\n ))}\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 {useCurrentMenuTitle && props.menu ? (\n <Breadcrumb.Item>\n <GeneralIcon icon={props.menu.icon} size={14} />\n <span>\n <Link to={props.menu.link}>{props.menu.title}</Link>\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--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 \"nav\"\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?: \"xs\" | \"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 buttonStyle?: React.CSSProperties;\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 buttonStyle,\n}: LegacyGeneralButtonProps): React.ReactElement {\n if (!buttonIcon && buttonProps?.icon) {\n buttonIcon = buttonProps.icon;\n }\n const { placement, arrowPointAtCenter, overlayStyle, overlayInnerStyle } =\n tooltipConfig || {};\n const getButtonNode = () => (\n <Button\n className={classNames(styles.iconButton, {\n [styles.fadedText]: fadedText && buttonType === \"text\",\n [styles.navIcon]: buttonType === \"nav\",\n })}\n style={{\n ...(buttonSize == \"xs\" && buttonType !== \"nav\"\n ? { height: \"22px\", lineHeight: \"11px\", fontSize: \"11px\" }\n : null),\n ...buttonStyle,\n ...(disabled\n ? {\n pointerEvents: \"none\",\n }\n : null),\n }}\n shape={buttonType !== \"nav\" ? buttonShape : null}\n size={buttonSize !== \"xs\" && buttonType !== \"nav\" ? buttonSize : null}\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 overlayInnerStyle={overlayInnerStyle}\n overlayStyle={overlayStyle}\n >\n {buttonUrl || buttonHref ? (\n <Link\n to={buttonUrl}\n target={target}\n href={buttonHref}\n disabled={disabled}\n >\n {getButtonNode()}\n </Link>\n ) : (\n getButtonNode()\n )}\n </Tooltip>\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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\";\nimport { GeneralButton } from \"../../general-button/GeneralButton\";\nimport styles from \"./AppDocumentLink.module.css\";\n\ninterface AppDocumentLinkProps {\n documentId?: string;\n iconStyle?: React.CSSProperties;\n buttonStyle?: React.CSSProperties;\n isInNavbar?: boolean;\n}\n\nexport function AppDocumentLink({\n documentId,\n iconStyle,\n isInNavbar,\n buttonStyle,\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 isInNavbar ? (\n <GeneralButton\n buttonType=\"nav\"\n buttonIcon=\"question-circle\"\n tooltip={t(K.HELP)}\n buttonUrl={docLink}\n buttonStyle={buttonStyle}\n />\n ) : (\n <div className={styles.docLinkContainer}>\n <Tooltip title={t(K.HELP)} placement=\"bottom\">\n <Link to={docLink} target=\"_blank\">\n <QuestionCircleOutlined style={iconStyle} />\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./AppSetting.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 { useTranslation } from \"react-i18next\";\nimport i18next from \"i18next\";\nimport { DownOutlined, UserOutlined } from \"@ant-design/icons\";\nimport { Button, Menu, Dropdown, Avatar, Tooltip } from \"antd\";\nimport { AvatarProps } from \"antd/lib/avatar\";\nimport {\n getAuth,\n getHistory,\n getRuntime,\n useCurrentApp,\n getCurrentTheme,\n batchSetAppsLocalTheme,\n} from \"@next-core/brick-kit\";\nimport { Link, GeneralIcon } from \"@next-libs/basic-components\";\nimport { UserAdminApi_getUserInfoV2 } from \"@next-sdk/user-service-sdk\";\nimport { NS_BASIC_BRICKS, K } from \"../../i18n/constants\";\nimport styles from \"./AppSetting.module.css\";\n\nexport function AppSetting(props: {\n usernameStyle: React.CSSProperties;\n dropdownIconStyle: React.CSSProperties;\n}): React.ReactElement {\n const { t } = useTranslation(NS_BASIC_BRICKS);\n const currentApp = useCurrentApp();\n const username = getAuth().username;\n const userShowValue = getAuth().userShowValue;\n const currentLang = i18next.language?.split(\"-\")[0];\n const { appsTheme }: Record<string, any> = getRuntime().getMiscSettings();\n const theme = getCurrentTheme();\n const featureFlags = getRuntime().getFeatureFlags();\n const userShowValueFlag = featureFlags[\"user-show-value\"];\n\n const [avatarSrc, setAvatarSrc] = React.useState<string>();\n const [accountEntryEnabled, setAccountEntry] = React.useState<boolean>(false);\n\n const avatarProps: AvatarProps = {\n size: \"small\",\n style: {\n marginRight: 8,\n },\n };\n\n React.useEffect(() => {\n const { favicon } = getRuntime().getBrandSettings();\n // istanbul ignore else\n if (favicon) {\n const link = document.querySelector(\n \"link[rel~='icon']\"\n ) as HTMLLinkElement;\n link && (link.href = favicon);\n }\n const hideMyAccountEnabled =\n getRuntime().getFeatureFlags()[\"next-hide-my-account\"];\n const isEnable =\n !hideMyAccountEnabled &&\n (window.STANDALONE_MICRO_APPS ||\n getRuntime()\n .getMicroApps()\n .some((item) => {\n return item.id === \"cmdb-account-setting\";\n }));\n setAccountEntry(isEnable);\n }, []);\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 if (avatarSrc) {\n avatarProps.src = avatarSrc;\n } else {\n avatarProps.icon = <UserOutlined />;\n avatarProps.style.backgroundColor = \"var(--color-brand)\";\n }\n\n const getCustomizedLogOutLink = React.useCallback(() => {\n const logOutPage =\n currentApp?.config?.customizedLogOutPageInNoAuthGuardMode;\n return logOutPage ? <Link to={logOutPage}>{t(K.LOGOUT)}</Link> : null;\n }, [currentApp, t]);\n\n const themeText = React.useMemo(\n () => (theme === \"light\" ? t(K.DARK_THEME) : t(K.LIGHT_THEME)),\n [t, theme]\n );\n\n const ssoEnabled = React.useMemo(\n () => getRuntime().getFeatureFlags()[\"sso-enabled\"],\n []\n );\n\n const hideLogoutEnabled = React.useMemo(\n () => getRuntime().getFeatureFlags()[\"next-hide-logout\"],\n []\n );\n\n const switchLanguageEnabled = React.useMemo(\n () => getRuntime().getFeatureFlags()[\"switch-language\"],\n []\n );\n\n const switchThemeEnable = React.useMemo(() => {\n return (\n getRuntime().getFeatureFlags()[\"switch-theme\"] &&\n appsTheme?.supportedApps?.includes(currentApp?.id)\n );\n }, [appsTheme, currentApp]);\n\n const handleLogout = (): void => {\n // store the logout url\n sessionStorage.setItem(\n \"easyops-auth-logoutFromUrlFull\",\n window.location.pathname + window.location.search\n );\n sessionStorage.setItem(\n \"easyops-auth-logoutFromUrl\",\n getHistory().location.pathname + getHistory().location.search\n );\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 const handleSwitchTheme = (): void => {\n const data = appsTheme?.supportedApps?.reduce(\n (obj: Record<string, string>, app: string) => ({\n ...obj,\n [app]: theme === \"light\" ? \"dark-v2\" : \"light\",\n }),\n {}\n );\n batchSetAppsLocalTheme(data);\n location.reload();\n };\n\n const DropdownIconStyle = React.useMemo(\n () => ({\n minWidth: \"12px\",\n marginRight: \"8px\",\n fontSize: \"12px\",\n verticalAlign: \"-0.1em\",\n }),\n []\n );\n\n const getUsername = () => {\n if (userShowValue?.length && userShowValueFlag) {\n return (\n userShowValue[0] +\n (userShowValue[1] ? \"(\" + userShowValue[1] + \")\" : \"\")\n );\n }\n return username;\n };\n return (\n <div>\n {window.NO_AUTH_GUARD ? (\n getCustomizedLogOutLink()\n ) : username ? (\n <Dropdown\n overlay={\n <Menu>\n {accountEntryEnabled && (\n <Menu.Item\n onClick={handleRedirectToMe}\n className={styles.dropdownMenuItem}\n data-testid=\"menu-account-entry\"\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 {!hideLogoutEnabled && (\n <Menu.Item\n className={styles.dropdownMenuItem}\n onClick={ssoEnabled ? handleSSOLogout : handleLogout}\n data-testid=\"menu-item-logout\"\n >\n <GeneralIcon\n icon={{\n lib: \"easyops\",\n category: \"default\",\n icon: \"logout\",\n }}\n />\n {t(K.LOGOUT)}\n </Menu.Item>\n )}\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 <div className={styles.dropdownBtn}>\n <GeneralIcon\n icon={{\n lib: \"easyops\",\n icon: \"language\",\n category: \"default\",\n }}\n style={DropdownIconStyle}\n />\n {currentLang === \"en\" ? \"中文\" : \"English\"}\n </div>\n </Tooltip>\n </Menu.Item>\n </>\n )}\n {switchThemeEnable && (\n <Menu.Item\n className={styles.dropdownMenuItem}\n onClick={handleSwitchTheme}\n >\n <Tooltip title={t(K.SWITCH_THEME)} placement=\"left\">\n <div className={styles.dropdownBtn}>\n <GeneralIcon\n icon={{\n lib: \"easyops\",\n icon:\n theme === \"light\" ? \"dark-theme\" : \"light-theme\",\n category: \"default\",\n }}\n style={DropdownIconStyle}\n />\n {themeText}\n </div>\n </Tooltip>\n </Menu.Item>\n )}\n </Menu>\n }\n trigger={[\"click\"]}\n >\n <Button type=\"link\">\n <Avatar {...avatarProps}>{username.substr(0, 1)}</Avatar>\n <span data-id=\"username-text\" style={props.usernameStyle}>\n {getUsername()}\n </span>\n <DownOutlined style={props.dropdownIconStyle} />\n </Button>\n </Dropdown>\n ) : (\n <Link to=\"/auth/login\">{t(K.LOGIN)}</Link>\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 { getCurrentTheme } from \"@next-core/brick-kit\";\nimport { JsonStorage } from \"@next-core/brick-utils\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport moment from \"moment\";\nimport React from \"react\";\n\ninterface AppBarTipsProps {\n text: string;\n tipKey: string;\n info?: {\n label: string;\n url: string;\n };\n isCenter?: boolean;\n backgroundColor?: string;\n closable?: boolean;\n onClose: (targetKey: string) => void;\n}\nconst storage = new JsonStorage(localStorage);\n\nexport function AppBarTips({\n text,\n tipKey,\n info,\n isCenter,\n backgroundColor,\n closable,\n onClose,\n}: AppBarTipsProps): React.ReactElement {\n const closeBtnRef = React.createRef<HTMLDivElement>();\n const theme = getCurrentTheme();\n const handleClose = (): void => {\n // 1天内不再提示\n storage.setItem(tipKey, moment().unix() + 86400);\n onClose(tipKey);\n };\n\n React.useEffect(() => {\n const closeBtn = closeBtnRef.current;\n closeBtn?.addEventListener(\"click\", handleClose);\n\n return () => {\n closeBtn?.removeEventListener(\"click\", handleClose);\n };\n }, [closeBtnRef]);\n\n return (\n <div\n style={{ backgroundColor: theme === \"dark-v2\" ? \"#29292D\" : \"#ffffff\" }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: isCenter ? \"center\" : \"space-between\",\n boxSizing: \"border-box\",\n width: \"100%\",\n lineHeight: \"26px\",\n padding: \"3px 20px\",\n backgroundColor: backgroundColor,\n color: \"var(--antd-text-color)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n <div>\n {text}\n {info ? (\n <a\n style={{\n marginLeft: 10,\n color: \"#1A7AFF\",\n }}\n href={info.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {info.label}\n </a>\n ) : null}\n </div>\n {closable ? (\n <div\n ref={closeBtnRef}\n style={{\n paddingLeft: \"20px\",\n cursor: \"pointer\",\n color: \"#8C8C8C\",\n }}\n >\n <GeneralIcon\n icon={{ lib: \"antd\", icon: \"close\", theme: \"outlined\" }}\n style={{ display: \"flex\", alignItems: \"center\", height: \"100%\" }}\n />\n </div>\n ) : null}\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--15-1!../../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 React from \"react\";\nimport { Divider } from \"antd\";\nimport { BreadcrumbItemConf, NavTip } from \"@next-core/brick-types\";\nimport { getAuth, getRuntime, useCurrentMode } from \"@next-core/brick-kit\";\nimport { CustomerApi_getExpiration } from \"@next-sdk/air-admin-service-sdk\";\nimport { LaunchpadButton } from \"../LaunchpadButton/LaunchpadButton\";\nimport { AppBarBreadcrumb } from \"../AppBarBreadcrumb/AppBarBreadcrumb\";\nimport { AppDocumentLink } from \"../AppDocumentLink/AppDocumentLink\";\nimport { AppSetting } from \"../AppSetting/AppSetting\";\nimport { processLiscenseExpires } from \"../License-notification/LicenseNotification\";\nimport { AppBarTips } from \"../AppBarTips/AppBarTips\";\nimport styles from \"./AppBar.module.css\";\nimport { JsonStorage } from \"@next-core/brick-utils\";\nimport moment from \"moment\";\n\ninterface AppBarProps {\n pageTitle: string;\n breadcrumb?: BreadcrumbItemConf[];\n documentId?: string;\n noCurrentApp?: boolean;\n}\n\nexport function AppBar({\n pageTitle,\n breadcrumb,\n documentId,\n noCurrentApp,\n}: AppBarProps): React.ReactElement {\n const [tipList, setTipList] = React.useState<NavTip[]>([]);\n const mode = useCurrentMode();\n const storage = new JsonStorage(localStorage);\n\n const hideLaunchpadButton = React.useMemo(\n () => getRuntime().getFeatureFlags()[\"hide-launchpad-button\"],\n []\n );\n\n const licenseInfoEnabled = React.useMemo(\n () => getRuntime().getFeatureFlags()[\"license-expires-detection\"],\n []\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 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 handleShowTips = ((e: CustomEvent<NavTip[]>): void => {\n // 可关闭的tip,用户关闭后过一天才会重新显示\n const list = (e.detail ?? []).filter((item) => {\n const isTipClosing =\n item.closable &&\n storage.getItem(item.tipKey) &&\n moment().unix() <= storage.getItem(item.tipKey);\n return !isTipClosing;\n });\n setTipList(list);\n }) as EventListener;\n\n const handleCloseTips = (targetKey: string) => {\n const list = tipList.filter((item) => item.tipKey !== targetKey);\n setTipList(list);\n window.dispatchEvent(new CustomEvent(\"app.bar.tips\", { detail: list }));\n };\n\n React.useEffect(() => {\n let marginTop = \"\";\n const mainElement = document.getElementById(\"main-mount-point\");\n const iframeMainElement = document.getElementById(\n \"legacy-iframe-mount-point\"\n );\n if (tipList.length && mode !== \"dashboard\") {\n marginTop = `calc(var(--app-bar-height) + ${tipList.length * 32}px)`;\n }\n mainElement && (mainElement.style.marginTop = marginTop);\n iframeMainElement && (iframeMainElement.style.marginTop = marginTop);\n }, [tipList]);\n\n React.useEffect(() => {\n window.addEventListener(\"app.bar.tips\", handleShowTips);\n return () => {\n window.removeEventListener(\"app.bar.tips\", handleShowTips);\n };\n }, []);\n\n return (\n <div className={styles.appBar} id=\"app-bar\">\n {mode !== \"dashboard\" &&\n tipList.map((item: NavTip) => {\n return (\n <AppBarTips\n key={item.tipKey}\n tipKey={item.tipKey}\n text={item.text}\n info={item.info}\n isCenter={item.isCenter}\n backgroundColor={item.backgroundColor}\n closable={item.closable}\n onClose={handleCloseTips}\n />\n );\n })}\n <div className={styles.appBarContent}>\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\n breadcrumb={breadcrumb}\n noCurrentApp={noCurrentApp}\n />\n </div>\n <div className={styles.actionsContainer}>\n <AppDocumentLink documentId={documentId} />\n <AppSetting />\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\n/**\n * @id basic-bricks.basic-bricks.app-bar\n * @deprecated\n * @memo 该构件已迁移至 `nav-legacy` 包中维护,后续版本将不再维护该构件,请使用 `nav-legacy.app-bar` 构件\n */\n\nclass AppBarElement extends UpdatingElement {\n @property()\n pageTitle: string;\n\n @property()\n documentId: string;\n\n @property({\n type: Boolean,\n })\n noCurrentApp: boolean;\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 noCurrentApp={this.noCurrentApp}\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 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 overlayStyle?: React.CSSProperties;\n /**\n * 卡片内容区域的样式对象\n */\n overlayInnerStyle?: React.CSSProperties;\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) 和 [MenuIcon配置](/next-docs/docs/api-reference/brick-types.menuicon#menuicon-interface),另外如果是 antd 图标库可以直接引用图标名称配置 { \"lib\": \"antd\", \"icon\": \"edit\" }与 \"edit\"等价\n * @group basic\n */\n @property({\n attribute: false,\n })\n buttonIcon: any;\n\n /**\n * @kind ButtonType\n * @required false\n * @default -\n * @description 按钮类型 ButtonType(`\"link\" | \"default\" | \"primary\" | \"ghost\" | \"dashed\" | \"danger\" | \"icon\"| \"text\" | \"nav\"`)\n * @enums \"link\"|\"default\"|\"primary\"|\"ghost\"|\"dashed\"|\"danger\"|\"icon\"|\"text\"|\"nav\"\n * @group basic\n */\n @property()\n buttonType: ButtonType;\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 boolean\n * @required false\n * @default false\n * @description 是否禁用按钮\n * @group basic\n */\n @property({ type: Boolean })\n disabled: boolean;\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 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 advanced\n */\n @property()\n buttonHref: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 跳转的 target,例如可以设置为\"_blank\"\n * @group advanced\n */\n @property()\n target: string;\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default {}\n * @description 替代之前 detail 属性,用法相同。暂存的数据在事件传出时使用\n * @group advanced\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 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 boolean\n * @required false\n * @default false\n * @description 按钮加载动画\n * @group ui\n */\n @property({\n type: Boolean,\n })\n loading: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 设置危险按钮\n * @group ui\n */\n @property({ type: Boolean })\n buttonDanger: boolean;\n\n /**\n * @kind \"circle\" | \"round\"\n * @required false\n * @default -\n * @description 按钮形状,支持圆形、椭圆形,不设置为默认方形\n * @enums \"circle\"|\"round\"\n * @group ui\n */\n @property()\n buttonShape: \"circle\" | \"round\";\n\n /**\n * @kind xs | small | large\n * @required false\n * @default -\n * @description 按钮大小,支持大、小、较小、不设置为默认中\n * @enums \"xs\" | \"small\"| \"large\"\n * @group ui\n */\n @property()\n buttonSize: \"xs\" | \"small\" | \"large\";\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 淡化按钮文字,按钮类型为 text 时可以设置。默认 `false` 文字按钮颜色和平台的字体颜色一样,在一些希望弱化文字颜色的场景下可以设置为 `true`。\n * @group ui\n */\n @property({ type: Boolean })\n fadedText: boolean;\n\n /**\n * @kind React.CSSProperties\n * @required -\n * @default -\n * @description 适用于按钮某些场景下,需要自定义一些样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n buttonStyle: React.CSSProperties;\n\n /**\n * @kind any\n * @required false\n * @default {}\n * @deprecated\n * @description [已废弃]按钮点击事件传出的内容。当用于列表类构件,例如 `brick-table` 中,可通过传入传入 `detail` 来识别不通的行进行操作处理。\n */\n @property({\n attribute: false,\n })\n detail: Record<string, any> = {};\n\n /**\n * @detail `Record<string, 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 buttonStyle={this.buttonStyle}\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, { CSSProperties } from \"react\";\nimport {\n getIllustration,\n translateIllustrationConfig,\n IllustrationProps,\n} from \"@next-core/illustrations\";\nimport {\n useCurrentTheme,\n useFeatureFlags,\n getRuntime,\n useCurrentApp,\n} from \"@next-core/brick-kit\";\n\nexport enum IconSize {\n Small = \"small\",\n Middle = \"middle\",\n Large = \"large\",\n XLarge = \"xlarge\",\n Unset = \"unset\",\n}\n\nexport interface IllustrationWrapperProps {\n imageStyle?: CSSProperties;\n name?: string;\n category?: string;\n size?: IconSize;\n useNewIllustration?: boolean;\n}\n\nconst iconSizeMap: { [key in IconSize]: { maxWidth?: string } } = {\n [IconSize.Small]: {\n maxWidth: \"120px\",\n },\n [IconSize.Middle]: {\n maxWidth: \"250px\",\n },\n [IconSize.Large]: {\n maxWidth: \"500px\",\n },\n [IconSize.XLarge]: {\n maxWidth: \"1000px\",\n },\n [IconSize.Unset]: {},\n};\n\nexport function IllustrationWrapper(\n props: IllustrationWrapperProps\n): React.ReactElement {\n const {\n name,\n category,\n size = \"middle\",\n imageStyle,\n useNewIllustration,\n } = props;\n\n const app = useCurrentApp();\n const theme = useCurrentTheme();\n const [isFeatureFlag] = useFeatureFlags(\"support-new-illustrations\");\n const miscSettings = getRuntime().getMiscSettings();\n const isSupportedApp =\n ((miscSettings[\"supportedNewIllustrationApps\"] || []) as any).includes(\n app?.id\n ) || !!app?.config?.supportNewIllustrations;\n\n const image = React.useMemo(() => {\n let illustrationConfig: IllustrationProps = { name, category, theme };\n if (isFeatureFlag && isSupportedApp) {\n illustrationConfig = translateIllustrationConfig(\n useNewIllustration,\n illustrationConfig\n );\n }\n return getIllustration(illustrationConfig);\n }, [\n name,\n category,\n theme,\n useNewIllustration,\n isFeatureFlag,\n isSupportedApp,\n ]);\n\n return (\n <img\n src={image}\n style={{\n objectFit: \"contain\",\n ...iconSizeMap[size as IconSize],\n ...imageStyle,\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--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 { useTranslation } from \"react-i18next\";\nimport { NS_BASIC_BRICKS, K } from \"../i18n/constants\";\n// TODO 待抽取\nimport { BrickIllustration } from \"../../../presentational-bricks/src/brick-illustration/BrickIllustration\";\n\ninterface PageErrorProps {\n error: string;\n code: number;\n}\n\ninterface ItemHttpType {\n name: string;\n title: string;\n}\n\nenum HttpStatusCode {\n FORBIDDEN = 403,\n NOT_FOUND = 404,\n SERVER_ERROR = 500,\n}\n\ninterface CategoryType {\n [n: number]: ItemHttpType;\n}\n\n// 满足现有插画库所拥有的插画状态,如需添加请按照现有格式添加\nconst httpCodeIllustrationMap: CategoryType = {\n [HttpStatusCode.FORBIDDEN]: {\n name: \"http-403\",\n title: \"FORBIDDEN\",\n },\n [HttpStatusCode.NOT_FOUND]: {\n name: \"http-404\",\n title: \"NOT_FOUND\",\n },\n [HttpStatusCode.SERVER_ERROR]: {\n name: \"http-500\",\n title: \"SERVER_ERROR\",\n },\n};\n\nexport function PageError(props: PageErrorProps): React.ReactElement {\n const { t } = useTranslation(NS_BASIC_BRICKS);\n const httpCodeItem = httpCodeIllustrationMap[props.code];\n const isException = !!httpCodeItem;\n return (\n <div style={{ textAlign: \"center\", marginTop: 100 }}>\n {isException ? (\n <BrickIllustration\n mode=\"guide\"\n category=\"exception\"\n name={httpCodeItem.name}\n header={{ title: t(K[httpCodeItem.title]), description: props.error }}\n ></BrickIllustration>\n ) : (\n <>\n <p style={{ fontSize: \"150%\" }}>{t(K.PAGE_ERROR_TITLE)}</p>\n <p>{props.error}</p>\n </>\n )}\n </div>\n );\n}\n","import React, { CSSProperties, useMemo } from \"react\";\nimport {\n getIllustration,\n IllustrationProps,\n translateIllustrationConfig,\n} from \"@next-core/illustrations\";\nimport styles from \"./index.module.css\";\nimport classNames from \"classnames\";\nimport { Link } from \"@next-libs/basic-components\";\nimport { IllustrationFooter, IllustrationHeader } from \"./index\";\nimport {\n IconSize,\n IllustrationWrapper,\n} from \"../brick-result/components/IllustrationWrapper\";\n\ninterface BrickIllustrationProps extends IllustrationProps {\n mode: \"feedback\" | \"guide\";\n imageStyle?: CSSProperties;\n header?: IllustrationHeader;\n footer?: IllustrationFooter;\n useNewIllustration?: boolean;\n size?: IconSize;\n}\nexport function BrickIllustration({\n name,\n category,\n mode,\n header,\n footer,\n imageStyle,\n useNewIllustration,\n size,\n}: BrickIllustrationProps): React.ReactElement {\n const renderHeader = useMemo(() => {\n return (\n header && (\n <div className={styles.header}>\n <div className={styles.title}>{header?.title}</div>\n {header?.description && (\n <div className={styles.description}>{header?.description}</div>\n )}\n </div>\n )\n );\n }, [header]);\n\n const renderFooter = useMemo(() => {\n return (\n footer && (\n <div className={styles.footer}>\n <span className={styles.text}>{footer?.text}</span>\n <Link to={footer?.url}>{footer?.label} </Link>\n </div>\n )\n );\n }, [footer]);\n\n return (\n <div className={styles.illustrationWrapper}>\n <div\n className={classNames({\n [styles.feedback]: mode === \"feedback\",\n [styles.guide]: mode === \"guide\",\n })}\n >\n {renderHeader}\n <IllustrationWrapper\n {...{ name, useNewIllustration, category, imageStyle, size }}\n />\n {renderFooter}\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 { PageError } from \"./PageError\";\n\nclass PageErrorElement extends UpdatingElement {\n @property()\n error: string;\n\n @property({ type: Number })\n code: number;\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} code={this.code} />\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 * @required true\n * @default -\n * @description 页面标题\n * @group basic\n */\n @property()\n pageTitle: string;\n\n /**\n * @kind boolean\n * @default false\n * @description 是否以 dashboard 模式显示\n * @group basic\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 false\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 false\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\";\nimport { RuntimeApi_searchMicroAppStandalone } from \"@next-sdk/micro-app-standalone-sdk\";\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 false\n * @default -\n * @description 指定的应用 Id\n */\n @property()\n appId: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 指定的跳转 url\n */\n @property()\n redirectUrl: string;\n\n connectedCallback(): void {\n this._render();\n }\n\n protected async _render(): Promise<void> {\n if (this.isConnected && (this.appId || this.redirectUrl)) {\n // standalone 模式下,redirectUrl 优先级更高。普通模式下,appId 优先级更高\n if (window.STANDALONE_MICRO_APPS) {\n let realUrl = this.redirectUrl;\n if (!realUrl) {\n await RuntimeApi_searchMicroAppStandalone({\n query: { appId: this.appId, installStatus: { $ne: \"running\" } },\n fields: [\"appId\", \"homepage\", \"installStatus\"],\n })\n .then((result) => {\n if (result.list.length > 0) {\n realUrl = result.list[0].homepage;\n }\n })\n .catch((error) => {\n // Allow search micro app to fail, and\n // make it not crash when the backend service is not updated.\n // eslint-disable-next-line no-console\n console.error(\"get off site standalone micro app failed\", error);\n });\n }\n if (realUrl) {\n window.location.replace(realUrl.replace(/^\\/*/, \"\"));\n }\n } else {\n const apps = getRuntime().getMicroApps({ excludeInstalling: true });\n const app = apps.find((item) => item.id === this.appId);\n const appHomepage = app && app.homepage ? app.homepage : \"\";\n const realUrl = appHomepage || this.redirectUrl;\n if (realUrl) {\n getHistory().replace(realUrl);\n }\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--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 { isEmpty } from \"lodash\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport { OperationButton } from \"../interfaces\";\nimport classNames from \"classnames\";\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 compactMode?: boolean;\n cardContentWrapperStyle?: React.CSSProperties;\n}\n\nexport function GeneralCard({\n configProps,\n operationButtons,\n hasExtraSlot,\n cardTitle,\n fillVertical,\n verticalCenter,\n isFixedFooter,\n compactMode,\n cardContentWrapperStyle,\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={classNames(\"generalCardContainer\", {\n compactCardContainer: compactMode,\n generalCardContainerHoverable: configProps?.hoverable,\n })}\n >\n <div\n style={{\n ...(verticalCenter\n ? {\n height: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }\n : {}),\n ...cardContentWrapperStyle,\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 } from \"./GeneralCard\";\nimport { OperationButton } from \"../interfaces\";\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 * @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 ui\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 ui\n */\n @property({\n type: Boolean,\n })\n verticalCenter: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 卡片是否ui8.2的紧凑模式\n * @group ui\n */\n @property({\n type: Boolean,\n })\n compactMode: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否右上角有操作区 slot\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n hasExtraSlot: boolean;\n\n /**\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n hasFooter: 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 /**\n * @kind OperationButton[]\n * @required false\n * @default -\n * @description 右上角的操作按钮列表,可自定义指定该按钮的名字,按钮点击后发出的事件等\n * @group advanced\n */\n @property({ attribute: false }) operationButtons: OperationButton[] = [];\n\n /**\n * @kind map\n * @required false\n * @default -\n * @description 完全透传给 antd 的 Card 属性,详见:[Card](https://ant.design/components/card-cn/#Card)\n * @group advanced\n */\n @property({ attribute: false }) configProps: CardProps;\n\n /**\n * @description content slot外层元素样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n cardContentWrapperStyle: React.CSSProperties;\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 _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 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 const footerSlot = this._getFooterSlot();\n footerSlot?.removeEventListener(\"slotchange\", this._checkFooterSlot);\n ReactDOM.unmountComponentAtNode(this._mountPoint);\n }\n\n protected _render(): void {\n if (this.isConnected) {\n if (this.fillVertical) {\n this._mountPoint.style.height = \"100%\";\n }\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 compactMode={this.compactMode}\n cardContentWrapperStyle={this.cardContentWrapperStyle}\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\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--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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, UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { Tooltip } from \"antd\";\nimport { getRuntime } from \"@next-core/brick-kit\";\n\nconst featureFlags = getRuntime()?.getFeatureFlags();\ninterface SubMenuProps {\n dataSource: SidebarMenu;\n topOperationConf?: { useBrick: UseBrickConf };\n isThirdLevel?: boolean;\n}\n\nexport function SubMenu({\n dataSource,\n topOperationConf,\n isThirdLevel,\n}: SubMenuProps): React.ReactElement {\n const thirdLevelHeaderTitle = React.useRef();\n const enableCompactUi = featureFlags[\"support-ui-8.2-compact-layout\"];\n\n const [isShowTooltip, setIsShowTooltip] = React.useState(false);\n React.useEffect(() => {\n const thirdLevelHeaderTitleRef = thirdLevelHeaderTitle?.current;\n if (\n isThirdLevel &&\n thirdLevelHeaderTitleRef?.scrollHeight >\n thirdLevelHeaderTitleRef?.offsetHeight\n ) {\n setIsShowTooltip(true);\n }\n }, []);\n\n return (\n <div\n className={`${style.subMenuContainer} ${\n isThirdLevel ? style.isThirdLevel : \"\"\n } ${enableCompactUi ? style.isCompact : \"\"}`}\n >\n {(dataSource.icon || dataSource.title || topOperationConf?.useBrick) && (\n <div className={style.header}>\n <div>\n <GeneralIcon icon={dataSource.icon} />\n {isThirdLevel ? (\n <Tooltip\n placement=\"bottomLeft\"\n title={isShowTooltip ? dataSource.title : \"\"}\n >\n <span\n ref={thirdLevelHeaderTitle}\n className={style.isThirdLevelHeaderTitle}\n >\n {dataSource.title}\n </span>\n </Tooltip>\n ) : (\n <span className={style.headerTitle}>{dataSource.title}</span>\n )}\n </div>\n\n {topOperationConf?.useBrick && (\n <BrickAsComponent\n useBrick={topOperationConf.useBrick}\n ></BrickAsComponent>\n )}\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, UseBrickConf } 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\n /**\n * @kind { useBrick: UseBrickConf }\n * @required false\n * @default -\n * @description 菜单顶部操作按钮\n */\n @property({\n attribute: false,\n })\n topOperationConf: { useBrick: UseBrickConf };\n /**\n * @default\n * @required false\n * @description 是否作为页面三级菜单出现,如果为true,菜单高度为100%\n */\n @property({\n type: Boolean,\n })\n isThirdLevel: 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 if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <SubMenu\n dataSource={this.dataSource}\n topOperationConf={this.topOperationConf}\n isThirdLevel={this.isThirdLevel}\n />\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\";\nimport type { ModalStack } from \"@next-core/brick-kit\";\n\nconst fullscreenMargin = 20;\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\nexport type positionType = \"left\" | \"center\" | \"right\";\n\ndeclare type SrcIcon = {\n imgSrc?: string;\n imgStyle?: React.CSSProperties;\n};\ninterface GeneralModalProps {\n visible: boolean;\n configProps?: ModalProps;\n modalTitle: string;\n hideCancelButton?: boolean;\n enableFooterSlot?: boolean;\n titleAlign?: string;\n titleIcon?: MenuIcon | SrcIcon;\n fullscreen?: boolean;\n okDisabled?: boolean;\n confirmLoading?: boolean;\n footerPosition?: positionType;\n isHiddenBodyPadding?: boolean;\n isHiddenHeaderBorder?: boolean;\n isHiddenFooterColor?: boolean;\n isHiddenModalTitle?: boolean;\n isHiddenModalFooter?: boolean;\n isShowCustomHeader?: boolean;\n stack: ModalStack;\n stackable?: boolean;\n onAfterClose?: () => void;\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 onAfterClose,\n isHiddenBodyPadding,\n isHiddenHeaderBorder,\n isHiddenFooterColor,\n isHiddenModalTitle,\n isHiddenModalFooter,\n isShowCustomHeader,\n footerPosition = \"right\",\n stack,\n stackable,\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 const headerHeight =\n modalHeaderRef.current?.getBoundingClientRect().height || 0,\n footerHeight =\n modalFooterRef.current?.getBoundingClientRect().height || 0;\n setBodyHeight(\n window.innerHeight -\n fullscreenMargin * 2 -\n headerHeight -\n footerHeight\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 style={{ textAlign: `${footerPosition}` }}>\n <Button\n type=\"text\"\n className=\"cancelBtn\"\n {...configProps?.cancelButtonProps}\n >\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 {...configProps?.okButtonProps}\n >\n {configProps?.okText || t(K.OK)}\n </Button>\n </div>\n );\n\n if (enableFooterSlot) {\n footer = (\n <div\n className=\"footer-container\"\n style={{ justifyContent: titleAlignPropertyMap[footerPosition] }}\n >\n <slot name=\"footer\"></slot>\n <div></div>\n {configProps && configProps.footer !== null && defaultFooter}\n </div>\n );\n delete configProps?.footer;\n }\n\n let iconNode: JSX.Element = null;\n if (titleIcon) {\n if (\"imgSrc\" in titleIcon) {\n const mergedIcon: SrcIcon = {\n imgSrc: titleIcon.imgSrc,\n imgStyle: {\n marginRight: \"8px\",\n ...titleIcon.imgStyle,\n },\n };\n iconNode = <GeneralIcon icon={mergedIcon} size={20} />;\n } else {\n iconNode = (\n <GeneralIcon\n icon={titleIcon}\n style={{\n fontSize: \"20px\",\n marginRight: \"8px\",\n }}\n size={20}\n />\n );\n }\n }\n\n const [zIndex, setZIndex] = useState<number>(undefined);\n useEffect(\n () => {\n if (stack && stackable) {\n if (visible) {\n setZIndex(stack.push());\n } else {\n stack.pull();\n setZIndex(undefined);\n }\n }\n },\n // Only re-run the effect if visible changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [visible]\n );\n\n return (\n <Modal\n className={classnames({\n wrapper: hideCancelButton,\n headerWrapper: isHiddenHeaderBorder,\n bodyWrapper: isHiddenBodyPadding,\n footerWrapper: isHiddenFooterColor,\n titleWrapper: isHiddenModalTitle,\n customHeaderWrapper: isShowCustomHeader,\n })}\n title={\n isHiddenModalTitle\n ? \"\"\n : modalTitle && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: titleAlignPropertyMap[titleAlign],\n }}\n >\n {iconNode}\n {modalTitle}\n <span className=\"headerExtra\">\n <slot id=\"headerExtra\" name=\"headerExtra\"></slot>\n </span>\n </div>\n )\n }\n footer={isHiddenModalFooter ? null : footer || defaultFooter}\n width={fullscreen ? `calc(100% - ${fullscreenMargin * 2}px)` : undefined}\n bodyStyle={fullscreen ? { height: bodyHeight } : undefined}\n wrapClassName={classnames({ fullscreen })}\n zIndex={zIndex}\n {...configProps}\n afterClose={onAfterClose}\n cancelButtonProps={{ type: \"link\", ...configProps?.cancelButtonProps }}\n visible={visible}\n >\n {isShowCustomHeader ? (\n <div className={classnames({ headerWrapper: true })}>\n <span className=\"customLeftHeaderExtra\">\n <slot\n id=\"customLeftHeaderExtra\"\n name=\"customLeftHeaderExtra\"\n ></slot>\n </span>\n <span>\n <span className=\"customRightHeaderExtra\">\n <slot\n id=\"customRightHeaderExtra\"\n name=\"customRightHeaderExtra\"\n ></slot>\n </span>\n\n <GeneralIcon\n icon={{\n lib: \"antd\",\n icon: \"close-circle\",\n theme: \"filled\",\n color: \"rgba(255,255,255,0.45)\",\n }}\n style={{\n fontSize: \"24px\",\n cursor: \"pointer\",\n marginLeft: \"17px\",\n }}\n size={20}\n />\n </span>\n </div>\n ) : (\n <></>\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 instantiateModalStack,\n} from \"@next-core/brick-kit\";\nimport { GeneralModal, positionType } 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 * @groupI18N\n * {\n * \"buttonAndInteract\": {\"en\": \"Button/Interact\", \"zh\": \"按钮及交互\"}\n * }\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 // ----------------------- basic ----------------------------\n\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 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 // ----------------------- ui ----------------------------\n\n /**\n * @kind string | number\n * @required false\n * @default -\n * @description 模态框宽度\n * @group ui\n */\n @property({ attribute: false })\n width: string | number;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否启用 footer 插槽\n * @group ui\n */\n @property({ type: Boolean })\n enableFooterSlot: boolean;\n\n /**\n * @kind string\n * @required false\n * @default right\n * @description 按钮的位置 left | center | right\n * @group ui\n */\n @property()\n footerPosition: positionType;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否需要隐藏弹窗内容的padding\n * @group ui\n */\n @property({ attribute: false })\n isHiddenBodyPadding = false;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否需要隐藏弹窗头部的分割线\n * @group ui\n */\n @property({ attribute: false })\n isHiddenHeaderBorder = false;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否需要隐藏弹窗的title\n * @group ui\n */\n @property({ attribute: false })\n isHiddenModalTitle = false;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否需要隐藏弹窗的footer\n * @group ui\n */\n @property({ attribute: false })\n isHiddenModalFooter = false;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否需要显示自定义顶部header\n * @group ui\n */\n @property({ attribute: false })\n isShowCustomHeader = false;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否需要隐藏底部特殊的颜色\n * @group ui\n */\n @property({ attribute: false })\n isHiddenFooterColor = false;\n\n /**\n * @default false\n * @description 全屏模式\n * @group ui\n */\n @property({ type: Boolean })\n fullscreen?: boolean;\n\n // ----------------------- buttonAndInteract ----------------------------\n\n /**\n * @kind string\n * @required false\n * @default 确认\n * @description 确认按钮文字\n * @group buttonAndInteract\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 buttonAndInteract\n */\n @property()\n okType: ButtonType;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否禁用确认按钮\n * @group buttonAndInteract\n */\n @property({ type: Boolean })\n okDisabled: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 点击确定时,是否立即关闭模态框,如果设为`false`,则需要自行关闭。\n * @group basic\n */\n @property({ attribute: false })\n closeWhenOk = true;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 确定按钮 loading\n * @group buttonAndInteract\n */\n @property({ type: Boolean })\n confirmLoading: boolean;\n\n /**\n * @kind string\n * @required false\n * @default 取消\n * @description 取消按钮文字\n * @group buttonAndInteract\n */\n @property()\n cancelText: string;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否隐藏取消按钮\n * @group buttonAndInteract\n */\n @property({ type: Boolean })\n hideCancelButton: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 点击取消时,是否立即关闭模态框,如果设为`false`,则需要自行关闭。\n * @group buttonAndInteract\n */\n @property({ attribute: false })\n closeWhenCancel = true;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否点击背景关闭模态框\n * @group buttonAndInteract\n */\n @property({\n attribute: false,\n })\n maskClosable: boolean;\n\n // ----------------------- other ----------------------------\n\n /**\n * @kind object\n * @required false\n * @default -\n * @description 完全透传给 antd 的 Modal 属性,详见 [文档](https://ant.design/components/modal-cn#API)\n * @group other\n */\n @property({ attribute: false })\n configProps: ModalProps;\n\n /**\n * @kind {modalTitle: string}\n * @deprecated true\n * @required false\n * @default -\n * @description `已废弃` 字段映射, 跟 dataSource 一起使用来获得运行时 modalTitle\n * @group other\n */\n @property({\n attribute: false,\n __deprecated_and_for_compatibility_only: true,\n })\n fields: {\n modalTitle: string;\n };\n\n /**\n * @description 是否可堆叠,开启后每次打开抽屉会将新的抽屉置于上层(zIndex ++)。注意:仅初始设置有效。\n */\n @property({ type: Boolean })\n stackable: boolean;\n\n private _stack = instantiateModalStack?.();\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 handleAfterClose = (): void => {\n this.afterCloseModel.emit();\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 // 如果cascader在modal,点击关闭按钮会误关闭弹窗,这里过滤掉cascader.\n (clickNode.closest(\"svg\")?.getAttribute(\"data-icon\") ===\n \"close-circle\" &&\n !(\n (clickNode.parentNode as HTMLSpanElement)?.classList.contains(\n \"ant-cascader-picker-clear\"\n ) ||\n (\n clickNode.parentNode.parentNode as HTMLSpanElement\n )?.classList.contains(\"ant-cascader-picker-clear\")\n ))\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(this.dataSource);\n this.modalConfirm.emit(this.dataSource);\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.modalCancel.emit();\n if (this.closeWhenCancel) {\n this.close();\n }\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 this._stack?.pull();\n }\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 onAfterClose={this.handleAfterClose}\n footerPosition={this.footerPosition}\n isHiddenBodyPadding={this.isHiddenBodyPadding}\n isHiddenHeaderBorder={this.isHiddenHeaderBorder}\n isHiddenFooterColor={this.isHiddenFooterColor}\n isHiddenModalTitle={this.isHiddenModalTitle}\n isHiddenModalFooter={this.isHiddenModalFooter}\n isShowCustomHeader={this.isShowCustomHeader}\n stack={this._stack}\n stackable={this.stackable}\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 -\n * @description 当 modal 完全关闭后发出该事件\n */\n @event({ type: \"model.after.close\" }) afterCloseModel: EventEmitter;\n\n /**\n * @detail `Record<string, any>`\n * @deprecated 请使用`modal.cancel`代替\n * @description 当点击 modal 自带的取消按钮时发出该事件,detail来源为当前的dataSource属性值\n */\n @event({ type: \"basic-bricks.general-modal.cancel\" })\n generalModalCancel: EventEmitter<Record<string, any>>;\n\n /**\n * @detail `Record<string, any>`\n * @description 当点击 modal 自带的取消按钮时发出该事件,detail来源为当前的dataSource属性值\n */\n @event({ type: \"modal.cancel\" })\n modalCancel: EventEmitter;\n /**\n * @detail `Record<string, any>`\n * @deprecated 请使用`modal.confirm`代替\n * @description 当点击 modal 自带的确认按钮时发出该事件,detail来源为当前的dataSource属性值\n */\n @event({ type: \"basic-bricks.general-modal.confirm\" })\n generalModalConfirm: EventEmitter;\n /**\n * @detail `Record<string, any>`\n * @description 当点击 modal 自带的确认按钮时发出该事件,detail来源为当前的dataSource属性值\n */\n @event({ type: \"modal.confirm\" })\n modalConfirm: EventEmitter;\n}\n\ncustomElements.define(\"basic-bricks.general-modal\", GeneralModalElement);\n","import React, { useRef, useEffect, useState } from \"react\";\nimport { Drawer, Spin } from \"antd\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { DrawerProps } from \"antd/lib/drawer\";\nimport type { ModalStack } from \"@next-core/brick-kit\";\nimport { ICustomSwitchConfig } from \"./index\";\ninterface GeneralDrawerProps {\n visible: boolean;\n title?: string;\n width?: number | string;\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 isFloat?: boolean;\n hasOuterSwitch?: boolean;\n useBigOuterSwitch?: boolean;\n customSwitchConfig?: ICustomSwitchConfig;\n scrollToTopWhenOpen?: boolean;\n stack: ModalStack;\n stackable?: boolean;\n}\n\nexport function GeneralDrawer(props: GeneralDrawerProps): React.ReactElement {\n const { scrollToTopWhenOpen, stack, stackable } = props;\n\n const contentRef = useRef<HTMLDivElement>();\n\n const findDrawerBody = (ele: HTMLElement): HTMLElement => {\n if (ele) {\n if (ele.classList.contains(\"ant-drawer-body\")) return ele;\n return findDrawerBody(ele.parentElement);\n }\n };\n\n const [zIndex, setZIndex] = useState<number>(undefined);\n useEffect(\n () => {\n scrollToTopWhenOpen &&\n props.visible &&\n findDrawerBody(contentRef.current)?.scrollTo(0, 0);\n\n if (stack && stackable) {\n if (props.visible) {\n setZIndex(stack.push());\n } else {\n stack.pull();\n setZIndex(undefined);\n }\n }\n },\n // Only re-run the effect if visible changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.visible]\n );\n\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\n const footer = props.hasFooter && (\n <div className=\"footer\">\n <div className=\"footer-inner\">\n <slot id=\"footer\" name=\"footer\"></slot>\n </div>\n </div>\n );\n\n const classNameList = [];\n if (props.isFloat) {\n classNameList.push(\"floatDrawer\");\n }\n if (\n props.hasOuterSwitch &&\n (!props.configProps ||\n !props.configProps.placement ||\n props.configProps.placement === \"right\")\n ) {\n classNameList.push(\"switch\");\n }\n\n // istanbul ignore next\n const getOuterSwitchNode = () => {\n if (!props.useBigOuterSwitch) {\n const outerIcon = props.visible\n ? { lib: \"antd\", icon: \"right\", theme: \"outlined\" }\n : { lib: \"antd\", icon: \"left\", theme: \"outlined\" };\n return <GeneralIcon icon={outerIcon} />;\n } else {\n if (!props.customSwitchConfig) return;\n const outerIcon = props.visible\n ? props.customSwitchConfig.openIcon\n : props.customSwitchConfig.closeIcon;\n const outerText = props.visible\n ? props.customSwitchConfig.openText\n : props.customSwitchConfig.closeText;\n return outerIcon ? (\n <GeneralIcon icon={outerIcon} />\n ) : (\n <span className=\"outerText\">{outerText?.slice(0, 4)}</span>\n );\n }\n };\n\n return (\n <>\n <Drawer\n {...props.configProps}\n title={title}\n footer={footer}\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 forceRender={!!props.hasOuterSwitch}\n className={classNameList.join(\" \")}\n zIndex={zIndex}\n >\n {props.hasOuterSwitch && (\n <div\n className={\n props.useBigOuterSwitch\n ? \"outerBtn bigOuterBtn\"\n : \"outerBtn defaultOuterBtn\"\n }\n style={{\n top: props.useBigOuterSwitch\n ? props.customSwitchConfig?.top\n : null,\n }}\n >\n {getOuterSwitchNode()}\n </div>\n )}\n <Spin spinning={props.loading} tip=\"Loading...\">\n <div className=\"content\" ref={contentRef}>\n <slot id=\"content\" name=\"content\"></slot>\n </div>\n </Spin>\n </Drawer>\n </>\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 instantiateModalStack,\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 * 文字和图标只会显示其中一个,优先显示图标,文字最多显示4个字符。\n */\nexport interface ICustomSwitchConfig {\n openText?: string;\n openIcon?: any;\n closeText?: string;\n closeIcon?: any;\n top?: string;\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.60.0:`open` 和 `close` 方法新增 `noEvent` 选项\n * 1.34.0:新增插槽 `headerLeft`, `headerRight` 和 `footer`,新增 `general.drawer.open` 事件\n * 1.30.0:新增 `bodyStyle` 和 `drawerStyle` 配置\n * @memo\n * ### OpenCloseOption\n\n* | property | type | required | default | description |\n* | -------- | --------- | -------- | ------- | ----------- |\n* | noEvent | `boolean` | - | - | 不触发事件 |\n * @noInheritDoc\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 /**\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 number\n * @required false\n * @default -\n * @description 宽度\n * @group basic\n */\n @property({ attribute: false })\n width: number | string;\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 false\n * @description 是否提供 `footer` 插槽\n * @group basic\n */\n @property({ type: Boolean })\n hasFooter: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 是否显示loading效果\n * @group ui\n */\n @property({ type: Boolean })\n loading: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否展示遮罩\n * @group ui\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 ui\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 ui\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 ui\n */\n @property({\n attribute: false,\n })\n headerStyle: Record<string, any>;\n /**\n * @default false\n * @required false\n * @description 是否浮层样式,如果设为true,则抽屉边缘会有外边距,圆角和阴影\n * @group ui\n */\n @property({ type: Boolean })\n isFloat: boolean;\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 other\n */\n @property({ attribute: false })\n configProps: DrawerProps;\n\n hasOuterSwitch: boolean;\n useBigOuterSwitch: boolean;\n customSwitchConfig: ICustomSwitchConfig;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 打开抽屉时内容区是否自动滚动到顶部\n * @group other\n */\n @property({ attribute: false })\n scrollToTopWhenOpen = true;\n\n /**\n * @description 是否可堆叠,开启后每次打开抽屉会将新的抽屉置于上层(zIndex ++)。注意:仅初始设置有效。\n */\n @property({ type: Boolean })\n stackable: boolean;\n\n private _stack = instantiateModalStack?.();\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 && !this.hasOuterSwitch) {\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 !this.hasOuterSwitch &&\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 if (\n this.hasOuterSwitch &&\n dom.nodeName &&\n typeof dom.className === \"string\" &&\n dom.className.includes(\"outerBtn\")\n ) {\n e.stopPropagation();\n let node = dom.parentElement;\n while (node.className) {\n if (node.className.split(\" \").includes(\"ant-drawer\")) {\n if (node.className.includes(\"ant-drawer-open\")) {\n this.close();\n } else {\n this.open();\n }\n break;\n }\n node = node.parentElement;\n }\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 this._stack?.pull();\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 isFloat={this.isFloat}\n hasOuterSwitch={this.hasOuterSwitch}\n useBigOuterSwitch={this.useBigOuterSwitch}\n customSwitchConfig={this.customSwitchConfig}\n scrollToTopWhenOpen={this.scrollToTopWhenOpen}\n stack={this._stack}\n stackable={this.stackable}\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 * @description 抽屉内部内容上下滚动\n */\n @method() bodyScroll(top: number): void {\n this._mountPoint\n .querySelector(\".ant-drawer-body\")\n .scroll({ top, behavior: \"smooth\" });\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--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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, { useState } from \"react\";\nimport classNames from \"classnames\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\nimport { DownOutlined, SettingOutlined } 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 { useTranslation } from \"react-i18next\";\nimport { NS_BASIC_BRICKS, K } from \"../i18n/constants\";\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];\n\ninterface AdminButtonProps {\n buttons: CustomButton[];\n handleClick: (eventName: string, button: CustomButton) => void;\n dropdownBtnText?: string;\n dropdownBtnIcon?: MenuIcon | string;\n isMoreButton?: boolean;\n useButtonDataSource?: boolean;\n moreBtnIcon?: MenuIcon | string;\n moreButtonShape?: \"circle\" | \"rectangle\" | \"no\" | \"icon\";\n moreButtonType?: ButtonType;\n alignment?: \"start\" | \"center\" | \"end\" | \"stretch\";\n dropdownPlacement?: DropdownPlacement;\n dropdownBtnType?: \"default\" | \"link\";\n onDropdownVisibleChange: (visible: boolean) => void;\n moreButtonStyle?: React.CSSProperties;\n}\n\nconst AvailableButtonTypeSet = new Set([\n \"primary\",\n \"ghost\",\n \"dashed\",\n \"link\",\n \"text\",\n \"default\",\n \"danger\",\n]);\n\nexport function GeneralCustomButtons(\n props: AdminButtonProps\n): React.ReactElement {\n const { t } = useTranslation(NS_BASIC_BRICKS);\n const [dropdownVisible, setDropdownVisible] = useState(false);\n\n const handleMenuClick = (info: MenuInfo): void => {\n props.handleClick(\n info.key as string,\n (info.item as React.Component<any>).props[\"data-button\"]\n );\n };\n\n const onDropdownVisibleChange = (visible: boolean): void => {\n setDropdownVisible(visible);\n props.onDropdownVisibleChange(visible);\n };\n\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 moreButtonStyle,\n } = 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 disabled,\n disabledTooltip,\n tooltipPlacement,\n danger,\n testId,\n ...restProps\n } = button;\n const buttonComponent = (\n <Button\n className={classNames({\n [style.iconButton]: buttonType === \"icon\",\n })}\n icon={\n icon && typeof icon === \"string\" ? (\n <LegacyIcon type={icon} data-icon={icon} />\n ) : (\n icon && typeof icon === \"object\" && <GeneralIcon icon={icon} />\n )\n }\n onClick={() => {\n handleClick(eventName, button);\n }}\n style={{ color: disabled ? \"\" : color }}\n type={AvailableButtonTypeSet.has(buttonType) ? buttonType : undefined}\n shape={buttonShape}\n size={buttonSize}\n disabled={disabled}\n danger={danger}\n data-testid={testId}\n {...restProps}\n >\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={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={handleMenuClick}>\n {dropdownButtons.map((button, idx) => {\n const {\n isDivider,\n icon,\n text,\n buttonUrl,\n buttonHref,\n urlTarget,\n disabled,\n disabledTooltip,\n tooltip,\n tooltipPlacement,\n eventName,\n color,\n danger,\n testId,\n } = button;\n\n if (isDivider) {\n return <Menu.Divider key={idx} />;\n }\n\n const wrapIcon = (\n <span className={style.dropdownBtnIconContainer}>\n {icon &&\n (typeof icon === \"string\" ? (\n <LegacyIcon\n type={icon}\n className={style.menuIcon}\n data-icon={icon}\n />\n ) : (\n <GeneralIcon icon={icon} />\n ))}\n {text}\n </span>\n );\n const textNode = (\n <>\n {wrapIcon}\n {(buttonUrl || buttonHref) && (\n <Link\n href={buttonHref}\n to={buttonUrl}\n target={urlTarget}\n disabled={disabled}\n className={style.dropdownBtnLink}\n ></Link>\n )}\n </>\n );\n const tooltipNode = (\n <Tooltip\n title={disabled ? disabledTooltip : tooltip}\n placement={tooltipPlacement}\n >\n <div\n className={classNames(style.dropdownBtn, {\n [style.dropdownBtnNormal]: !disabled,\n })}\n >\n {textNode}\n </div>\n </Tooltip>\n );\n return (\n <Menu.Item\n className={style.dropdownMenuItem}\n key={eventName}\n style={{ color: disabled ? \"\" : color }}\n disabled={disabled}\n danger={disabled ? undefined : danger}\n data-button={button}\n data-testid={testId}\n >\n {tooltipNode}\n </Menu.Item>\n );\n })}\n </Menu>\n );\n dropdown = (\n <Dropdown\n overlay={menu}\n trigger={[\"click\"]}\n placement={dropdownPlacement ?? \"bottomRight\"}\n onVisibleChange={onDropdownVisibleChange}\n >\n {isMoreButton ? (\n <Button\n type={moreButtonType}\n style={{ ...moreButtonStyle }}\n icon={\n moreBtnIcon && typeof moreBtnIcon === \"string\" ? (\n <LegacyIcon type={moreBtnIcon} />\n ) : moreBtnIcon && typeof moreBtnIcon === \"object\" ? (\n <GeneralIcon icon={moreBtnIcon} />\n ) : (\n <GeneralIcon\n icon={{\n lib: \"easyops\",\n category: \"default\",\n icon: \"more\",\n }}\n />\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 [style.dropdown]: dropdownVisible,\n }\n )}\n data-testid=\"dropdown-trigger\"\n ></Button>\n ) : dropdownBtnType === \"link\" ? (\n <Button\n type=\"link\"\n className={style.dropdownBtnContainer}\n data-testid=\"dropdown-trigger\"\n >\n {dropdownBtnText || t(K.MANAGE)}\n </Button>\n ) : (\n <Button\n className={style.dropdownBtnContainer}\n icon={\n dropdownBtnIcon && typeof dropdownBtnIcon === \"string\" ? (\n <LegacyIcon type={dropdownBtnIcon} />\n ) : dropdownBtnIcon && typeof dropdownBtnIcon === \"object\" ? (\n <GeneralIcon icon={dropdownBtnIcon} />\n ) : (\n <SettingOutlined />\n )\n }\n data-testid=\"dropdown-trigger\"\n >\n {dropdownBtnText || t(K.MANAGE)} <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","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isEqual } from \"lodash\";\nimport {\n UpdatingElement,\n property,\n method,\n EventEmitter,\n event,\n} from \"@next-core/brick-kit\";\nimport { MenuIcon } from \"@next-core/brick-types\";\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图标库](/next/developers/icon),可直接复制图标图标的配置(antd、fa 及 easyops 三种库都支持),也可只取 icon 字段的值(仅支持 antd 库)。配置{ \"lib\": \"antd\", \"icon\": \"edit\" }与 \"edit\"等价\n */\n icon?: MenuIcon | string;\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 | \"icon\";\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 /**\n * 是否显示为危险样式\n */\n danger?: boolean;\n /**\n * 每个事件的数据源\n */\n dataSource?: any;\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 * @groupI18N\n * {\n * \"moreButton\": {\n * \"en\": \"MoreButton\",\n * \"zh\": \"更多按钮\"\n * },\n * \"dropdownButton\": {\n * \"en\": \"DropdownButton\",\n * \"zh\": \"含下拉选框的按钮\"\n * }\n * }\n * @author ice\n * @slots\n * @history\n * 1.72.0:新增属性 `loading`\n * 1.59.0:新增属性 `disableAfterClick`\n * 1.48.0:按钮新增 `hide` 属性\n * 1.45.0:新增 `dropdownPlacement` 属性, 按钮新增 `isDivider` 属性\n * 1.40.0:按钮新增 `buttonHref`, `tooltip`, `tooltipPlacement` 属性\n * 1.35.0:新增 `alignment` 属性\n * 1.30.0:按钮新增 `buttonSize`, `buttonUrl`, `urlTarget` 属性\n * 1.29.0:按钮新增 `buttonType`, `buttonShape` 属性\n * 1.28.0:新增 `updateButton` 方法,按钮新增 `id`, `disabled` 属性\n * @memo\n * @noInheritDoc\n */\nexport class GeneralCustomButtonsElement extends UpdatingElement {\n /**\n * @kind CustomButton[]\n * @description 自定义按钮组\n * @group basic\n */\n @property({ attribute: false })\n customButtons: CustomButton[];\n\n /**\n * @default \"center\"\n * @description 对齐方式\n * @enums \"start\"|\"center\"|\"end\"|\"stretch\n * @group basic\n */\n @property()\n alignment?: \"start\" | \"center\" | \"end\" | \"stretch\";\n\n /**\n * @description 按钮事件的 detail\n * @group advanced\n */\n @property({ attribute: false }) dataSource?: any;\n\n /**\n * @description 点击按钮后自动禁用\n * @group advanced\n */\n @property({ type: Boolean })\n disableAfterClick?: boolean;\n\n /**\n * @default false\n * @description 按钮组中 isDropdown 为 true 的按钮收纳成 dropdown。isMoreButton 为 true 时更多按钮显示纯icon样式,为 false 时显示icon+文字样式。\n * @group moreButton\n */\n @property({\n type: Boolean,\n })\n isMoreButton?: boolean;\n\n /**\n * @default false\n * @description 按钮组中 的按钮点击事件的detail返回按钮自身的dataSource,而不是整体的dataSource\n * @group moreButton\n */\n @property({\n type: Boolean,\n })\n useButtonDataSource?: boolean;\n\n /**\n * @description isMoreButton 为 true 时更多按钮的图标,默认为`...`\n * @group moreButton\n */\n @property({ attribute: false }) moreBtnIcon?: MenuIcon | string;\n\n /**\n * @description 更多按钮的类型\n * @group moreButton\n */\n @property()\n moreButtonType?: ButtonType;\n\n /**\n * @description isMoreButton 为 true 时更多按钮的样式,通常使用 icon 类型\n * @enums \"circle\"|\"no\"|\"rectangle\"|\"icon\"\n * @group moreButton\n */\n @property() moreButtonShape?: \"circle\" | \"no\" | \"rectangle\" | \"icon\";\n\n /**\n * @default \"管理\"\n * @description isMoreButton 为 false 时,按钮组中 isDropdown 为 true 的按钮收纳成 dropdown,收纳起来的按钮文字\n * @group dropdownButton\n */\n @property() dropdownBtnText?: string;\n\n /**\n * @description dropdown按钮的类型\n * @enums \"default\"|\"link\"\n * @group dropdownButton\n */\n @property({ attribute: false })\n dropdownBtnType?: \"default\" | \"link\" = \"default\";\n\n /**\n * @description isMoreButton 为 false 时,按钮组中 isDropdown 为 true 的按钮收纳成 dropdown,收纳起来的按钮 icon,支持[icon 图标库](/next/developers/icon),可直接复制图标图标的配置(antd、fa 及 easyops 三种库都支持),也可只取 icon 字段的值(仅支持 antd 库)。配置{ \"lib\": \"antd\", \"icon\": \"edit\" }与 \"edit\"等价\n * @group dropdownButton\n */\n @property({ attribute: false }) dropdownBtnIcon?: MenuIcon | string =\n \"setting\";\n\n /**\n * @default \"bottomRight\"\n * @description dropdown 的弹出位置\n * @enums \"bottomRight\"|\"topLeft\"|\"topCenter\"|\"topRight\"|\"bottomLeft\"|\"bottomCenter\"\n * @group dropdownButton\n */\n @property()\n dropdownPlacement?: DropdownPlacement;\n\n /**\n * @kind React.CSSProperties\n * @required -\n * @default -\n * @description 适用于按钮的isMoreButton为true时候,需要自定义一些样式更多按钮的样式。\n * @group ui\n */\n @property({\n attribute: false,\n })\n moreButtonStyle: React.CSSProperties;\n\n /**\n * @detail \"boolean\"\n * @description dropdown是否显示\n */\n @event({\n type: \"buttons.visible.change\",\n })\n onDropdownVisibleChange: EventEmitter<boolean>;\n\n constructor() {\n super();\n this.handleClick = this.handleClick.bind(this);\n }\n\n private handleClick(eventName: string, button: CustomButton): void {\n this.dispatchEvent(\n new CustomEvent(eventName, {\n detail: this.useButtonDataSource ? button.dataSource : this.dataSource,\n })\n );\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 handleDropdownVisibleChange = (visible: boolean) => {\n this.onDropdownVisibleChange.emit(visible);\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 useButtonDataSource={this.useButtonDataSource}\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 onDropdownVisibleChange={this.handleDropdownVisibleChange}\n moreButtonStyle={this.moreButtonStyle}\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 api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./gridLayout.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 { UpdatingElement, property } from \"@next-core/brick-kit\";\nimport styles from \"./gridLayout.module.css\";\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\nexport interface ResponsiveSettings {\n large?: GridSettings;\n medium?: GridSettings;\n small?: GridSettings;\n xSmall?: GridSettings;\n}\nexport interface 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 * ### 响应式布局说明\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 * @group basic\n */\n @property({\n type: Number,\n })\n columns?: number;\n\n /**\n * @kind number\n * @default auto\n * @description 自己在父级网格中所占列数\n * @group basic\n */\n @property({\n type: Number,\n })\n columnSpan?: number;\n\n /**\n * @kind number\n * @default 1\n * @description \t网格布局行数,通常不需设置,各行高度由内容决定。设置为 > 1 时,各行高度相同。\n * @group basic\n */\n @property({\n type: Number,\n })\n rows?: number;\n\n /**\n * @kind number\n * @default 1\n * @description 自己在父级网格中所占行数\n * @group basic\n */\n @property({\n type: Number,\n })\n rowSpan?: number;\n\n /**\n * @kind string\n * @default -\n * @description \t网格布局模板列,即 CSS 的 gridTemplateColumns,优先于 `columns`。\n * @group basic\n */\n @property()\n templateColumns?: string;\n\n /**\n * @kind ResponsiveSettings\n * @default 1\n * @description 响应式布局设置\n * @group basic\n */\n @property({\n attribute: false,\n })\n responsive?: ResponsiveSettings;\n\n /**\n * @kind string\n * @default \"var(--page-card-gap)\"\n * @description 子元素之间的间距\n * @group basic\n */\n @property()\n gap: string;\n\n /**\n * @kind Boolean\n * @default false\n * @description 网格布局边框\n * @group basic\n */\n @property({\n type: Boolean,\n })\n showGridBorder: boolean;\n\n /**\n * @kind string\n * @default #454547\n * @description 网格布局边框颜色\n */\n @property()\n gridBorderColor: string;\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\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._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 // Allow `responsive` to be set deferred or updated.\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\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 const gap = this.gap ?? \"var(--page-card-gap)\";\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._mountPoint.style.gridGap = gap;\n this._mountPoint.style.gap = gap;\n\n this.style.gridColumn = columnSpan === 1 ? \"\" : `span ${columnSpan}`;\n this.style.gridRow = rowSpan === 1 ? \"\" : `span ${rowSpan}`;\n if (this.showGridBorder) {\n this.style.setProperty(\n \"--grid-border-color\",\n this.gridBorderColor ?? \"#454547\"\n );\n this.classList.add(\n parseInt(this.gap) === 0\n ? styles.gridBorder\n : styles.gridBorderWithGap\n );\n } else {\n if (this.style.getPropertyValue(\"--grid-border-color\")) {\n this.style.removeProperty(\"--grid-border-color\");\n }\n const keys = Array.from(this.classList).filter(\n (item) =>\n item.startsWith(\"gridBorderWithGap\") ||\n item.startsWith(\"gridBorder\")\n );\n if (keys.length) {\n keys.forEach((item) => {\n this.classList.remove(item);\n });\n }\n }\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--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 itemKey?: string;\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 const { data, itemKey, gap, extraContainerStyle, useBrick } = props;\n\n if (!Array.isArray(data)) {\n return null;\n }\n\n let containerStyle: React.CSSProperties = props.containerStyle;\n if (!containerStyle) {\n containerStyle = {\n display: \"grid\",\n gap: gap ?? \"var(--card-content-gap)\",\n ...extraContainerStyle,\n };\n }\n\n return (\n <div\n className={classNames({\n [styles.listContainerAsGrid]: containerStyle.display === \"grid\",\n })}\n style={containerStyle}\n >\n {data.map((item, index) => (\n <BrickAsComponent\n key={(itemKey && item[itemKey]) ?? index}\n data={item}\n useBrick={useBrick}\n />\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.41.0:支持 `containerStyle` 配置\n * 1.20.0:新增构件\n * @memo\n * @noInheritDoc\n */\nexport class ListContainerElement extends UpdatingElement {\n /**\n * @kind `any[]`\n * @required true\n * @default []\n * @description 数据列表\n * @group basic\n */\n @property({\n attribute: false,\n })\n data: any[] = [];\n\n /**\n * @kind UseBrickConf\n * @required true\n * @default []\n * @description 使用的子构件配置,具体查阅[UseBrickConf](/next-docs/docs/micro-app/brick-use-brick)\n * @group basic\n */\n @property({\n attribute: false,\n })\n useBrick: UseBrickConf;\n\n /**\n * @kind Record<string, any>\n * @default -\n * @description 容器本身默认是 grid 布局,可以设置额外的样式。\n * @group basic\n */\n @property({\n attribute: false,\n })\n extraContainerStyle?: React.CSSProperties;\n\n /**\n * @description 数据项的 key,不设置默认使用 index\n * @group advanced\n */\n @property({\n attribute: false,\n })\n itemKey?: string;\n\n /**\n * @kind string | number\n * @default \"var(--card-content-gap)\"\n * @description 间距(配合extraContainerStyle使用)\n * @group ui\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 * @group ui\n */\n @property({\n attribute: false,\n })\n containerStyle?: 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 itemKey={this.itemKey}\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--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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, AlignType } 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 popoverTitleBrick?: {\n useBrick: UseBrickConf;\n };\n align?: AlignType;\n getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;\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 zIndex?: number;\n itemMouseEnter?: () => void;\n itemMouseLeave?: () => void;\n transferVisible?: 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 = React.useMemo(() => {\n let useBrick = props.popoverBrick?.useBrick;\n if (!useBrick) {\n return null;\n }\n if (props.transferVisible) {\n useBrick = [].concat(useBrick).map((v) => ({\n ...v,\n properties: { ...(v.properties ?? {}), useBrickVisible: visible },\n }));\n }\n return (\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={useBrick}\n parentRefForUseBrickInPortal={ref}\n />\n </div>\n );\n }, [props.popoverBrick, visible, props.transferVisible]);\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 [styles.displayBrickContainerFaded]:\n props.transferGraphAttrs && props.faded,\n })}\n ref={ref}\n onMouseEnter={props.itemMouseEnter}\n onMouseLeave={props.itemMouseLeave}\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 zIndex={props.zIndex ?? 1030}\n align={props.align}\n getPopupContainer={props.getPopupContainer}\n {...(props.popoverTitleBrick?.useBrick\n ? {\n title: (\n <BrickAsComponent\n useBrick={props.popoverTitleBrick.useBrick}\n data={props.data}\n />\n ),\n }\n : {})}\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, TooltipAlignConfig } from \"antd/lib/tooltip\";\nimport { ActionType, AlignType } 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 /**\n * @kind any\n * @required false\n * @default false\n * @description 整体数据,如果展示构件和弹出框构件数据都来自于同一个 provider,可以直接配置 data,如果来源不一样,可以分别配置 CustomBrick.data\n * @group basic\n */\n @property({\n attribute: false,\n })\n data: any;\n /**\n * @kind CustomBrick\n * @required true\n * @default -\n * @description 展示构件\n * @group basic\n */\n @property({\n attribute: false,\n })\n displayBrick: {\n useBrick: UseBrickConf;\n data?: any;\n };\n\n /**\n * @kind UseBrickConf\n * @description 弹出框title构件\n * @group basic\n */\n @property({\n attribute: false,\n })\n popoverTitleBrick: {\n useBrick: UseBrickConf;\n };\n\n /**\n * @kind AlignType\n * @description popover 的对其配置详情可查看 [AlignType](https://4x-ant-design.antgroup.com/components/tooltip-cn/)\n * @group basic\n */\n @property({\n attribute: false,\n })\n align: AlignType;\n\n /**\n * @kind CustomBrick\n * @required true\n * @default -\n * @description 弹出框构件\n * @group basic\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](/next-docs/docs/api-reference/brick-types.menuicon#menuicon-interface)\n * @group ui\n */\n @property({\n attribute: false,\n })\n popoverIcon: MenuIcon;\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 * @enums \"top\"|\"left\"|\"right\"|\"bottom\"|\"topLeft\"|\"topRight\"|\"bottomLeft\"|\"bottomRight\"|\"leftTop\"|\"leftBottom\"|\"rightTop\"|\"rightBottom\"\n * @group basic\n */\n @property({\n attribute: false,\n })\n placement: TooltipPlacement;\n\n /**\n * @required false\n * @default -\n * @description 触发方式\n * @group basic\n */\n @property({\n attribute: false,\n })\n trigger: ActionType | ActionType[];\n\n /**\n * @required false\n * @description 触发行为\n * @group basic\n */\n @property({\n attribute: false,\n })\n triggerByIcon = true;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示 popover 的默认背景\n * @group basic\n */\n @property({\n attribute: false,\n })\n showPopoverBg = true;\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 * @group basic\n */\n @property({\n attribute: false,\n })\n popoverContentStyle: Record<string, any>;\n\n /**\n * @kind \"always\"|\"hover\"|\"never\"\n * @required false\n * @default hover\n * @description 在什么时候显示 Icon\n * @enums \"always\"|\"hover\"|\"never\"\n * @group ui\n */\n @property({\n attribute: false,\n })\n showIcon: \"always\" | \"never\" | \"hover\" = \"hover\";\n\n /**\n * @kind number\n * @required false\n * @default 1030\n * @description popover的z轴顺序\n * @group ui\n */\n @property({\n attribute: false,\n })\n zIndex: number;\n\n /**\n * @kind {useBrick:UseBrickConf;data?:any}\n * @required false\n * @default false\n * @description 弹出框是否可见\n * @group ui\n */\n @property({\n type: Boolean,\n })\n visible: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否高亮,由[general-graph](developers/brick-book/brick/graph.general-graph)构件设置。\n * @group ui\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 * @group ui\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 * @group ui\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 * @group ui\n */\n @property({\n type: Boolean,\n })\n transferGraphAttrs: boolean;\n\n /**\n * @kind (triggerNode: HTMLElement) => HTMLElement;\n * @description 浮层渲染父节点,默认渲染到 body 上\n * @group ui\n */\n @property({\n attribute: false,\n })\n getPopupContainer: (triggerNode: HTMLElement) => HTMLElement;\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否透传 popover 构件的 visible给 popoverBrick 的子构件,以便用户对子构件做特殊处理\n * @group ui\n */\n @property({\n type: Boolean,\n })\n transferVisible: boolean;\n\n /**\n * @detail any\n * @description 鼠标移动到元素上发出的事件,事件详情为用户设置的 data\n */\n @event({ type: \"item.mouse.enter\", cancelable: true })\n itemMouseEnter: EventEmitter<any>;\n\n /**\n * @detail any\n * @description 鼠标离开元素发出的事件,事件详情为用户设置的 data\n */\n @event({ type: \"item.mouse.leave\", cancelable: true })\n itemMouseLeave: EventEmitter<any>;\n\n /* istanbul ignore next */\n private _itemMouseEnter = () => {\n this.itemMouseEnter.emit(this.data);\n };\n\n /* istanbul ignore next */\n private _itemMouseLeave = () => {\n this.itemMouseLeave.emit(this.data);\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 * @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 popoverTitleBrick={this.popoverTitleBrick}\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 zIndex={this.zIndex}\n align={this.align}\n getPopupContainer={this.getPopupContainer}\n itemMouseEnter={this._itemMouseEnter}\n itemMouseLeave={this._itemMouseLeave}\n transferVisible={this.transferVisible}\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--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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?: (detail: any) => void;\n selectable?: boolean;\n defaultActiveIndex?: number;\n notTriggerClickEventWhenInit?: boolean;\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 setActiveIndex(props.defaultActiveIndex || 0);\n const item = props.data.list[props.defaultActiveIndex];\n item &&\n !props.notTriggerClickEventWhenInit &&\n 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 * @group basic\n */\n @property({ attribute: false })\n data: AdvanceListContainerProps[\"data\"];\n /**\n * @kind {useBrick:UseBrickConf}\n * @required true\n * @default -\n * @description 列表项标题位置,相关类型[UseBrickConf](/next-docs/docs/api-reference/brick-types.usebrickconf)\n * @group basic\n */\n @property({ attribute: false })\n titleBrick: AdvanceListContainerProps[\"titleBrick\"];\n /**\n * @kind {useBrick:UseBrickConf}\n * @required false\n * @default -\n * @description 列表项 extra 位置(右边),相关类型[UseBrickConf](/next-docs/docs/api-reference/brick-types.usebrickconf)\n * @group basic\n */\n @property({ attribute: false })\n suffixBrick: AdvanceListContainerProps[\"suffixBrick\"];\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否展示 card\n * @group ui\n */\n @property({ attribute: false })\n showCard: boolean;\n /**\n * @kind number\n * @required false\n * @default -\n * @description 默认选中项\n * @group basic\n */\n @property({ attribute: false })\n defaultActiveIndex: number;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 设置`defaultActiveIndex`时,构件初始化时会默认触发item.click事件,如果item.click后需要刷新页面,则会造成构件不断render,页面不断重刷,为避免此情况,可将此项设为true\n * @group basic\n */\n @property({ type: Boolean })\n notTriggerClickEventWhenInit: boolean;\n\n /**\n * @required false\n * @default true\n * @description 选项是否可选\n * @group basic\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 notTriggerClickEventWhenInit={this.notTriggerClickEventWhenInit}\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\";\nimport { isEmpty } from \"lodash\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\n\ninterface FoldBrickV2Props {\n _id: string;\n foldName: string;\n hideFoldName?: boolean;\n foldStyle?: Record<string, string>;\n show: boolean;\n showDivider?: boolean;\n dividerOrientation?: \"left\" | \"right\" | \"center\";\n dividerDashed?: boolean;\n isShowFoldIcon?: boolean;\n foldIcon?: any;\n type?: \"normal\" | \"primary\";\n foldIconStyle?: React.CSSProperties;\n}\n\nexport function FoldBrickV2(props: FoldBrickV2Props): React.ReactElement {\n const { hideFoldName, foldIcon, foldIconStyle = {} } = props;\n\n const fold = (\n <div\n style={props.foldStyle}\n id={props._id}\n className={classNames(\"foldContainer\", {\n foldPrimaryActive: props.type === \"primary\",\n })}\n >\n {!hideFoldName && <span>{props.foldName}</span>}\n <>\n {props.isShowFoldIcon ? (\n isEmpty(foldIcon) ? (\n <UpOutlined\n rotate={props.show ? 0 : 180}\n style={{ marginLeft: \"2px\", lineHeight: \"0px\" }}\n />\n ) : (\n <GeneralIcon\n icon={foldIcon}\n style={{\n ...foldIconStyle,\n transform: props.show ? \"rotate(0deg)\" : \"rotate(180deg)\",\n }}\n />\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 {\n BrickWrapper,\n UpdatingElement,\n EventEmitter,\n property,\n event,\n} from \"@next-core/brick-kit\";\nimport { FoldBrickV2 } from \"./FoldBrickV2\";\nimport style from \"./style.shadow.less\";\nimport { uniqueId } from \"lodash\";\nimport { MenuIcon } from \"@next-core/brick-types\";\n\n/**\n * @id basic-bricks.fold-brick-v2\n * @name basic-bricks.fold-brick-v2\n * @docKind brick\n * @description 折叠容器,只折叠单个内容,支持slot\n * @groupI18N\n * {\n * \"divider\": {\n * \"en\": \"Divider\",\n * \"zh\": \"分割线\"\n * }\n * }\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 _id = uniqueId(\"foldBrickButton\");\n private _mountPoint: HTMLElement;\n private _shadowRoot: ShadowRoot;\n\n /**\n * @kind string\n * @required true\n * @default -\n * @description 折叠展示名称\n * @group basic\n */\n @property({\n attribute: false,\n })\n foldName: string;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 是否默认展开\n * @group basic\n */\n @property({\n attribute: false,\n })\n defaultShow?: boolean;\n\n /**\n * @kind \"normal\" | \"primary\"\n * @required false\n * @default \"normal\"\n * @description 折叠面板类型\n * @group basic\n */\n @property({\n attribute: false,\n })\n type: \"normal\" | \"primary\";\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示展开图标\n * @group ui\n */\n @property({\n attribute: false,\n })\n isShowFoldIcon = true;\n\n /**\n * @kind object\n * @required false\n * @default -\n * @description 折叠展示的样式编写\n * @group ui\n */\n @property({\n attribute: false,\n })\n foldStyle: Record<string, string>;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 是否展示分割线\n * @group divider\n */\n @property({\n type: Boolean,\n })\n showDivider: boolean;\n\n /**\n * @kind \"left\"|\"right\"|\"center\"\n * @required false\n * @default center\n * @description 分割线标题的位置\n * @group divider\n */\n @property({\n attribute: false,\n })\n dividerOrientation: \"left\" | \"right\" | \"center\";\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否虚线\n * @group divider\n */\n @property({\n type: Boolean,\n })\n dividerDashed: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default\n * @description 是否展开\n * @group divider\n */\n @property({\n type: Boolean,\n })\n show: boolean;\n\n /**\n * @private\n */\n @property({\n type: Boolean,\n })\n hideFoldName: boolean;\n\n /**\n * @private\n */\n @property({\n attribute: false,\n })\n foldIcon: MenuIcon;\n\n /**\n * @private\n */\n @property({\n attribute: false,\n })\n foldIconStyle: any;\n\n /**\n * @detail `Record<string, any>`\n * @description 切换折叠时触发, detail boolean\n */\n @event({ type: \"fold.change\", cancelable: true })\n foldChange: EventEmitter<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 === this._id) {\n this.show = !this.show;\n this.foldChange.emit(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 _id={this._id}\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 hideFoldName={this.hideFoldName}\n foldIcon={this.foldIcon}\n foldIconStyle={this.foldIconStyle}\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--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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, Link } 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\";\nimport { LocationDescriptor } from \"history\";\n\nexport interface SubMenuFilterSimpleItem {\n title: string;\n key: string;\n type?: \"item\";\n icon: MenuIcon;\n to?: LocationDescriptor;\n style?: React.CSSProperties;\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 onClick: (menuItem: SubMenuFilterItem) => void;\n onSearch: (query: string) => void;\n multiple: boolean;\n inlineIndent?: number;\n transparentBackground?: boolean;\n accordion?: boolean;\n suffixBrickTriggerByHover?: 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 onClick,\n onSearch,\n multiple,\n inlineIndent,\n transparentBackground,\n accordion,\n suffixBrickTriggerByHover,\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 <span\n className={classNames({\n [style.triggerByHover]: suffixBrickTriggerByHover,\n })}\n >\n <BrickAsComponent useBrick={suffixBrick.useBrick} data={item} />\n </span>\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} style={item.style}>\n {item.to ? (\n <Link to={item.to} className={style.blockLink}>\n <div className={style.menuItemMainPart}>\n {renderIcon(item)}\n <span className={style.menuItemText}>{item.title}</span>\n </div>\n {renderItemExtra(item)}\n </Link>\n ) : (\n <>\n <div className={style.menuItemMainPart}>\n {renderIcon(item)}\n <span className={style.menuItemText}>{item.title}</span>\n </div>\n {renderItemExtra(item)}\n </>\n )}\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 const _value = value?.trim();\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\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 const handleClick = ({ key }: { key: React.Key }): void => {\n onClick?.(getMenuItemByKey(rowMenuItem, key as string));\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 onClick={handleClick}\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* to?: LocationDescriptor\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 * @group basic\n */\n @property({\n attribute: false,\n })\n menuItems: SubMenuFilterItem[];\n\n /**\n * @kind {useBrick:UseBrickConf}\n * @required false\n * @default -\n * @description 列表项 extra 位置(右边),相关文档[UseBrickConf](/next-docs/docs/api-reference/brick-types.usebrickconf)\n * @group other\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 * @group basic\n */\n @property({\n type: Boolean,\n })\n unsearchable: boolean;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 搜索框 placeholder\n * @group basic\n */\n @property()\n placeholder: string;\n\n /**\n * @kind string[]\n * @required false\n * @default -\n * @description 初始选中的菜单项 key 数组\n * @group basic\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 * @group basic\n */\n @property({\n attribute: false,\n })\n defaultOpenKeys: string[];\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否允许选中\n * @group basic\n */\n @property({\n type: Boolean,\n })\n selectable: 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 multiple: boolean;\n\n /**\n * @kind number\n * @required false\n * @default 24\n * @description 菜单缩进宽度\n * @group ui\n */\n @property({\n attribute: false,\n })\n inlineIndent = 16;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否采用透明背景样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n transparentBackground = false;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 手风琴模式\n * @group basic\n */\n @property({\n attribute: false,\n })\n accordion = false;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description suffixBrick是否hover才显示\n * @group basic\n */\n @property({\n attribute: false,\n })\n suffixBrickTriggerByHover = 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 /**\n * @detail SubMenuFilterItem[]\n * @description -\n */\n @event({ type: \"menu.click\" }) menuClick: EventEmitter<SubMenuFilterItem>;\n\n handleSelect = (menuItem: SubMenuFilterItem[]) => {\n this.menuSelect.emit(menuItem);\n };\n\n handleClick = (menuItem: SubMenuFilterItem): void => {\n this.menuClick.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 onClick={this.handleClick}\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 suffixBrickTriggerByHover={this.suffixBrickTriggerByHover}\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 BrickAsComponent,\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\";\nimport type { UseBrickConf, MenuIcon } from \"@next-core/brick-types\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\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 */\ninterface DescriptionBrickprops {\n useBrick: UseBrickConf;\n}\n\ninterface BtnBrickprops {\n useBrick: UseBrickConf;\n}\n\nexport class GeneralNotificationElement extends UpdatingElement {\n /**\n * @kind string\n * @required true\n * @default -\n * @description 通知提醒标题,必选\n * @group basic\n */\n @property()\n message: string;\n\n /**\n * @kind string\n * @required true\n * @default -\n * @description 通知提醒内容,必选\n * @group basic\n */\n @property()\n description: string;\n\n /**\n * @kind DescriptionBrickprops\n * @required false\n * @default -\n * @description 自定义通知提醒内容\n * @group basic\n */\n @property({ attribute: false })\n descriptionBrick: DescriptionBrickprops;\n\n /**\n * @kind BtnBrickprops\n * @required false\n * @default -\n * @description 自定义通知提醒按钮\n * @group basic\n */\n @property({ attribute: false })\n btnBrick: BtnBrickprops;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 当前通知唯一标志\n * @group basic\n */\n @property()\n key: string;\n\n /**\n * @kind MenuIcon | string\n * @required false\n * @default -\n * @description icon\n */\n @property({\n attribute: false,\n })\n icon: MenuIcon | string;\n\n /**\n * @kind `topLeft` `topRight` `bottomLeft` `bottomRight`\n * @required false\n * @default topRight\n * @description 弹出位置,可选\n * @group ui\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 basic\n */\n @property({ type: Number })\n duration: number;\n\n /**\n * @required false\n * @default -\n * @description icon css 样式\n * @group ui\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 (\n this.icon && (\n <GeneralIcon\n icon={\n typeof this.icon === \"string\"\n ? { lib: \"antd\", icon: this.icon }\n : this.icon\n }\n style={this.iconStyle}\n />\n )\n );\n };\n renderDescription = () => {\n return this.descriptionBrick ? (\n <BrickAsComponent {...this.descriptionBrick} />\n ) : (\n this.description\n );\n };\n\n renderBtn = () => {\n return this.btnBrick ? <BrickAsComponent {...this.btnBrick} /> : null;\n };\n /**\n *\n * @params `success` | `error` | `info` | `warning` | `warn` | `open`\n * @description 显示通知栏,默认为`open`\n */\n @method()\n open(\n mtd: keyof Omit<NotificationApi, \"config\" | \"close\" | \"destroy\">,\n key?: string\n ) {\n typeof mtd !== \"string\" && (mtd = \"open\");\n if (mtd === (\"close\" as string)) {\n notification.close(key);\n return;\n }\n notification[mtd]({\n key: this.key,\n message: this.message,\n description: this.renderDescription(),\n duration: this.duration,\n icon: this.renderIcon(),\n placement: this.placement || \"topRight\",\n onClose: this.handleClose,\n onClick: this.handleClick,\n btn: this.renderBtn(),\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`和 `⌘`.\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 * @group basic\n */\n @property({\n attribute: false,\n })\n hotkeysConfig: HotkeysConfig[];\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @group basic\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 {\n property,\n BrickWrapper,\n UpdatingElement,\n method,\n} 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 * @group basic\n */\n @property()\n eventName: string;\n\n /**\n * @kind number\n * @required false\n * @default 60000\n * @description 定时间隔(单位:ms)\n * @group basic\n */\n @property()\n interval: number;\n\n /**\n * @default true\n * @required\n * @description 是否开启定时间隔\n */\n @property({\n attribute: false,\n })\n isInterval = true;\n\n /**\n * @kind any\n * @required false\n * @default -\n * @description 抛出事件的数据\n * @group basic\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 private _stopped = false;\n\n private defaultEventName = \"general-timer.timing-event\";\n private defaultInterval = 60000;\n\n /**\n *\n * @description 停止timer\n */\n @method() stopTimer(): void {\n this._stopped = true;\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._stopped = false;\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 if (!this._stopped && this.isInterval) {\n this.startTimeout();\n }\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 * @group basic\n */\n @property()\n fileName: string;\n\n /**\n * @kind object | string\n * @required -\n * @default -\n * @description \t导出的文件数据\n * @group basic\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 */\n @property()\n errorType: string;\n\n /**\n * @description 错误信息\n */\n @property()\n errorMessage: string;\n\n /**\n * @description 发生错误的构件名称\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 /**\n * @description 以键值对形式定义多个 [grid-area](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area)\n * @group basic\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 * @group basic\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 * @group basic\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 * @group basic\n */\n @property({ attribute: false })\n gridTemplateRows: string | string[];\n\n /**\n * @description 定义网格容器的样式\n * @group basic\n */\n @property({ attribute: false })\n containerStyle: React.CSSProperties;\n\n /**\n * @description 定义网格内各区域的样式\n * @group basic\n */\n @property({ attribute: false })\n styleByAreas: Record<string, React.CSSProperties>;\n\n private _shadowRoot: ShadowRoot;\n\n constructor() {\n super();\n\n // ** Create a shadow root to encapsulate styles. **\n // ** Create your shadow root in the constructor. **\n this._shadowRoot = this.attachShadow({ mode: \"open\" });\n }\n\n connectedCallback(): void {\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this._shadowRoot);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <>\n <style>{styles}</style>\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 </>,\n this._shadowRoot\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--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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, { useEffect, useRef, useState } from \"react\";\nimport { Anchor, AnchorProps } from \"antd\";\nimport { AnchorListType } from \"./index\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickAsComponent, getHistory } 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 initOffset?: number;\n handleClick?: (\n event: React.MouseEvent<HTMLElement, MouseEvent>,\n arg: AnchorListType\n ) => void;\n handleChange?: (currentActiveLink: string) => void;\n}\nexport function GeneralAnchor(props: GeneralAnchorProps): React.ReactElement {\n const { configProps, type, extraBrick, handleClick, handleChange } = props;\n const [scrollContainer, setScrollContainer] = useState(null);\n const { Link } = Anchor;\n\n const getHref = (hash: string) => {\n const isHash = (hash || \"\").startsWith(\"#\");\n if (!isHash) {\n return hash;\n }\n const history = getHistory();\n return history.createHref({\n ...history.location,\n hash,\n });\n };\n\n const activeLink = useRef(getHref(location.hash));\n const [anchorList, setAnchorList] = useState([]);\n const renderAnchorList = (\n anchorList: AnchorListType[],\n type?: \"default\" | \"radio\"\n ) => {\n return anchorList.map((item: AnchorListType, i: number) => {\n return (\n <span key={i} onClick={(e) => handleClick(e, item)}>\n <Link\n title={item.title}\n href={item.href}\n target={item.target}\n key={i}\n >\n {type === \"default\" &&\n item.children?.length &&\n renderAnchorList(item.children, type)}\n </Link>\n </span>\n );\n });\n };\n useEffect(() => {\n /* TODO(astrid): 初始锚点无法滚动到对应位置 */\n const sharpMatcherRegx = /#([\\S ]+)$/;\n const initHash =\n location.hash !== \"\"\n ? props?.anchorList?.find((item) => item.href.includes(location.hash))\n ?.href\n : \"\";\n // UI8.2需要修改锚点挂载dom\n const pageView = document.querySelector(\"eo-page-view\");\n const pageContainer = pageView?.shadowRoot?.querySelector(\n \".content\"\n ) as HTMLElement;\n const scrollContainer = pageContainer ?? null;\n\n setScrollContainer(scrollContainer);\n\n if (initHash) {\n const sharpLinkMatch = sharpMatcherRegx.exec(initHash.toString());\n const target = document.getElementById(sharpLinkMatch[1]);\n\n if (target) {\n setTimeout(() => {\n // istanbul ignore next\n if (!scrollContainer) {\n window.scrollTo({\n top:\n target.offsetTop + props.initOffset ??\n 0 - (configProps?.offsetTop ?? 56),\n });\n } else {\n target.scrollIntoView({\n behavior: \"auto\",\n block: \"start\",\n inline: \"start\",\n });\n }\n });\n handleChange(initHash);\n }\n }\n }, []);\n\n useEffect(() => {\n if (props?.anchorList?.length) {\n const anchorList = props.anchorList.map((anchor) => ({\n ...anchor,\n href: getHref(anchor.href),\n }));\n setAnchorList([...anchorList]);\n }\n }, [props?.anchorList]);\n\n return (\n <Anchor\n offsetTop={configProps?.offsetTop ?? 56}\n {...configProps}\n className={classnames([\n {\n [styles.anchorWrapper]: type !== \"default\",\n },\n ])}\n onChange={handleChange}\n getContainer={() => scrollContainer ?? window}\n // getCurrentAnchor={() => activeLink.current}\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 {\n BrickWrapper,\n property,\n UpdatingElement,\n event,\n EventEmitter,\n} 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 * @group basic\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 * @group basic\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 * @group basic\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 /**\n * @default false\n * @required false\n * @description 禁用默认跳转事件\n * @group basic\n */\n @property({ type: Boolean })\n disabledJump: boolean;\n /**\n * @default\n * @required false\n * @description 页面初始化时希望额外向上滚动的距离,例如在target有较大padding但是希望内容显示在上方时可设置。\n * @group ui\n */\n @property({ attribute: false })\n initOffset: number;\n /**\n * @detail { title: string; href: string }\n * @description 锚点点击事件\n */\n @event({ type: \"anchor.click\" })\n anchorClick: EventEmitter<Record<string, any>>;\n private _handleClick = (\n event: React.MouseEvent<HTMLElement, MouseEvent>,\n item: AnchorListType\n ): void => {\n event.stopPropagation();\n if (this.disabledJump) {\n event.preventDefault();\n }\n this.anchorClick.emit(item);\n };\n\n /**\n * @detail { currentActiveLink: string }\n * @description 锚点改变事件\n */\n @event({ type: \"anchor.change\" })\n anchorChange: EventEmitter<Record<string, any>>;\n private _handleChange = (currentActiveLink: string): void => {\n this.anchorChange.emit({ currentActiveLink });\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 ReactDOM.render(\n <BrickWrapper>\n <GeneralAnchor\n anchorList={this.anchorList}\n configProps={this.configProps}\n type={this.type || \"default\"}\n extraBrick={this.extraBrick}\n handleClick={this._handleClick}\n handleChange={this._handleChange}\n initOffset={this.initOffset}\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--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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 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\";\n\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}\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 other\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 other\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 other\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 other\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 other\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","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement } from \"@next-core/brick-kit\";\nimport { LaunchpadButton } from \"../app-bar/LaunchpadButton/LaunchpadButton\";\n\n/**\n * @id basic-bricks.launchpad-button\n * @author SailorF\n * @history\n * 1.x.0: 新增构件 `basic-bricks.launchpad-button`\n * @deprecated\n * @memo\n * 该构件已迁移至 `nav-legacy` 包中维护,后续版本将不再维护该构件,请使用 `nav-legacy.launchpad-button` 构件\n * @noInheritDoc\n */\nexport class LaunchpadButtonElement extends UpdatingElement {\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 <LaunchpadButton />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.launchpad-button\", LaunchpadButtonElement);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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, { useEffect } from \"react\";\nimport { getRuntime } from \"@next-core/brick-kit\";\nimport styles from \"./AppbarBreadcrumb.module.css\";\nimport * as originAppbarBreadcrumb from \"../app-bar/AppBarBreadcrumb/AppBarBreadcrumb\";\n\nexport function AppbarBreadcrumb(\n props: originAppbarBreadcrumb.BasicBreadcrumbProps\n): React.ReactElement {\n const containerData = getRuntime().getNavConfig();\n const [breadcrumb, setBreadCrumb] = React.useState(props.breadcrumb ?? []);\n\n useEffect(() => {\n if (props.breadcrumb.length === 0) {\n if (containerData) {\n setBreadCrumb(containerData.breadcrumb ?? []);\n }\n }\n }, []);\n\n return (\n <originAppbarBreadcrumb.AppBarBreadcrumb\n className={styles.appbarBreadcrumb}\n {...{\n ...props,\n breadcrumb,\n menu: props.menu || containerData.menu,\n separator: \"/\",\n showCurrentAppIcon: true,\n }}\n />\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { AppbarBreadcrumb } from \"./AppbarBreadcrumb\";\nimport { BreadcrumbItemConf, SidebarMenu } from \"@next-core/brick-types\";\n\n/**\n * @id basic-bricks.app-bar-breadcrumb\n * @author SailorF\n * @history\n * 1.x.0: 新增构件 `basic-bricks.app-bar-breadcrumb`\n * @docKind brick\n * @deprecated\n * @memo 该构件已迁移至 `nav-legacy` 包中维护,后续版本将不再维护该构件,请使用 `nav-legacy.app-bar-breadcrumb` 构件\n * @noInheritDoc\n */\nexport class AppbarBreadcrumbElement extends UpdatingElement {\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 /**\n * @default\n * @description 面包屑配置\n */\n @property({\n attribute: false,\n })\n breadcrumb: BreadcrumbItemConf[];\n\n /**\n * @default -\n * @description 是否隐藏当前应用名称\n */\n @property({ attribute: false })\n noCurrentApp: boolean;\n\n @property({\n attribute: false,\n })\n menu: Partial<SidebarMenu>;\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <AppbarBreadcrumb\n breadcrumb={this.breadcrumb ?? []}\n noCurrentApp={this.noCurrentApp}\n menu={this.menu}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"basic-bricks.app-bar-breadcrumb\",\n AppbarBreadcrumbElement\n);\n","import React from \"react\";\nimport { AppSetting } from \"../app-bar/AppSetting/AppSetting\";\n\nexport function AppBarSetting(props: {\n usernameStyle: React.CSSProperties;\n dropdownIconStyle: React.CSSProperties;\n}): React.ReactElement {\n return (\n <AppSetting\n usernameStyle={props.usernameStyle}\n dropdownIconStyle={props.dropdownIconStyle}\n />\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, property, UpdatingElement } from \"@next-core/brick-kit\";\nimport { AppBarSetting } from \"./AppBarSetting\";\n\n/**\n * @id basic-bricks.app-bar-setting\n * @author SheRunFeng\n * @history\n * 1.x.0: 新增构件 `basic-bricks.app-bar-setting`\n * @docKind brick\n * @deprecated\n * @memo\n * 该构件已迁移至 `nav-legacy` 包中维护,后续版本将不再维护该构件,请使用 `nav-legacy.app-bar-setting` 构件\n * @noInheritDoc\n */\nexport class AppBarSettingElement extends UpdatingElement {\n @property({\n attribute: false,\n })\n usernameStyle: React.CSSProperties;\n\n @property({\n attribute: false,\n })\n dropdownIconStyle: React.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 protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <AppBarSetting\n usernameStyle={this.usernameStyle}\n dropdownIconStyle={this.dropdownIconStyle}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.app-bar-setting\", AppBarSettingElement);\n","import {\n event,\n EventEmitter,\n method,\n UpdatingElement,\n} from \"@next-core/brick-kit\";\n\n/**\n * @id basic-bricks.event-agent\n * @author steve\n * @history\n * 1.171.0: 新增构件 `basic-bricks.event-agent`\n * @docKind brick\n * @noInheritDoc\n */\nexport class EventAgentElement extends UpdatingElement {\n /**\n * @detail `unknown`\n * @description 事件被触发。\n */\n @event({ type: \"event.trigger\" })\n private _eventTrigger: EventEmitter;\n\n /**\n * @description 触发一次事件,传递的参数为事件详情。\n */\n @method()\n trigger(detail: unknown): void {\n this._eventTrigger.emit(detail);\n }\n\n connectedCallback(): void {\n this.style.display = \"none\";\n }\n\n // istanbul ignore next\n protected _render(): void {\n // Do nothing.\n }\n}\n\ncustomElements.define(\"basic-bricks.event-agent\", EventAgentElement);\n","// istanbul ignore file: working in progress\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useRef,\n} from \"react\";\nimport { JsonStorage, debounceByAnimationFrame } from \"@next-core/brick-utils\";\nimport classNames from \"classnames\";\nimport { SimpleFunction } from \"@next-core/brick-types\";\n\nexport interface ResizableBoxProps {\n resizeDirection: ResizeDirection;\n storageKey?: string;\n defaultSize?: number;\n minSize?: number;\n minSpace?: number;\n boxStyle?: React.CSSProperties;\n boxStyleWhenNotResizing?: React.CSSProperties;\n resizable?: boolean;\n variant?: \"dashboard\" | \"default\";\n}\n\nexport type ResizeDirection = \"left\" | \"right\" | \"top\" | \"bottom\";\n\ninterface ResizerStatus {\n startWidth: number;\n startHeigh: number;\n startX: number;\n startY: number;\n}\n\nexport function ResizableBox({\n resizeDirection,\n storageKey,\n defaultSize,\n minSize,\n minSpace,\n boxStyle,\n boxStyleWhenNotResizing,\n resizable,\n variant,\n}: ResizableBoxProps): React.ReactElement {\n const storage = useMemo(\n () =>\n storageKey ? new JsonStorage<Record<string, number>>(localStorage) : null,\n [storageKey]\n );\n const refinedDefaultSize = useMemo(() => defaultSize ?? 200, [defaultSize]);\n const refinedMinSize = useMemo(\n () => minSize ?? refinedDefaultSize,\n [minSize, refinedDefaultSize]\n );\n const refinedMinSpace = useMemo(() => minSpace ?? 300, [minSpace]);\n const refBar = useRef<HTMLDivElement>();\n\n const initSize = useCallback(() => {\n return storageKey\n ? storage.getItem(storageKey) ?? refinedDefaultSize\n : null;\n }, [refinedDefaultSize, storageKey, storage]);\n\n const [size, setSize] = useState<number>(initSize());\n const [resized, setResized] = useState(false);\n const [resizeStatus, setResizerStatus] = useState<ResizerStatus>(null);\n const debouncedSetSize = useMemo(\n () => debounceByAnimationFrame(setSize as SimpleFunction),\n []\n );\n\n const isVerticalDirection = useMemo(\n () => [\"top\", \"bottom\"].includes(resizeDirection),\n [resizeDirection]\n );\n\n const handleResizerMouseDown = useCallback(\n (event: MouseEvent) => {\n if (!resizable) return;\n // Prevent text selecting.\n event.preventDefault();\n setResizerStatus({\n startWidth: size,\n startHeigh: size,\n startX: event.clientX,\n startY: event.clientY,\n });\n setResized(false);\n },\n [size, resizable]\n );\n\n useEffect(() => {\n const refBarCurrent = refBar.current;\n // shadowRoot 中不能直接在组件中绑定React事件, 会导致子节点事件冲突\n refBarCurrent.addEventListener(\"mousedown\", handleResizerMouseDown);\n return () => {\n refBarCurrent.removeEventListener(\"mousedown\", handleResizerMouseDown);\n };\n }, [handleResizerMouseDown]);\n\n useEffect(() => {\n setSize(initSize());\n }, [initSize]);\n\n useEffect(() => {\n if (!resizeStatus) {\n return;\n }\n\n const handleResizerMouseMove = (event: MouseEvent): void => {\n if (!resizable) return;\n\n const modifiedSize = isVerticalDirection\n ? Math.min(\n document.documentElement.clientHeight - refinedMinSpace,\n resizeStatus.startHeigh +\n (event.clientY - resizeStatus.startY) *\n (resizeDirection === \"top\" ? -1 : 1)\n )\n : Math.min(\n document.documentElement.clientWidth - refinedMinSpace,\n resizeStatus.startWidth +\n (event.clientX - resizeStatus.startX) *\n (resizeDirection === \"left\" ? -1 : 1)\n );\n setResized(true);\n debouncedSetSize(Math.max(refinedMinSize, modifiedSize));\n };\n\n const handleResizerMouseUp = (): void => {\n if (!resizable) return;\n setResizerStatus(null);\n };\n\n window.addEventListener(\"mousemove\", handleResizerMouseMove);\n window.addEventListener(\"mouseup\", handleResizerMouseUp);\n\n return () => {\n window.removeEventListener(\"mousemove\", handleResizerMouseMove);\n window.removeEventListener(\"mouseup\", handleResizerMouseUp);\n };\n }, [\n resizeDirection,\n refinedMinSize,\n refinedMinSpace,\n resizeStatus,\n debouncedSetSize,\n resizable,\n isVerticalDirection,\n ]);\n\n useEffect(() => {\n if (!resizeStatus && resized) {\n storage.setItem(storageKey, size);\n }\n }, [resized, resizeStatus, storage, size, storageKey]);\n\n return (\n <>\n <div\n className={classNames(\"box\", {\n resizing: !!resizeStatus,\n })}\n style={{\n ...(isVerticalDirection ? { height: size } : { width: size }),\n ...boxStyle,\n ...(resizeStatus ? null : boxStyleWhenNotResizing),\n }}\n >\n <slot name=\"content\" />\n </div>\n <div\n className={classNames(\n variant === \"dashboard\" ? \"dashboardBar\" : \"bar\",\n resizeDirection,\n {\n hoverBar: resizable,\n }\n )}\n ref={refBar}\n >\n {/* Use a fullscreen mask to keep cursor status when dragging the resizer. */}\n <div className=\"mask\" />\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, property, UpdatingElement } from \"@next-core/brick-kit\";\nimport { ResizableBox, type ResizeDirection } from \"./ResizableBox\";\n\nimport styles from \"./ResizableBox.shadow.css\";\n\n/**\n * @id basic-bricks.resizable-box\n * @author steve\n * @history\n * 1.x.0: 新增构件 `basic-bricks.resizable-box`\n * @docKind brick\n * @noInheritDoc\n */\nexport class ResizableBoxElement extends UpdatingElement {\n @property()\n resizeDirection: ResizeDirection;\n\n @property()\n storageKey: string;\n\n @property({ type: Number })\n defaultSize: number;\n\n @property({ type: Number })\n minSize: number;\n\n @property({ attribute: false })\n resizable = true;\n\n @property({ type: Number })\n minSpace: number;\n\n @property({ attribute: false })\n boxStyle: React.CSSProperties;\n\n @property({ attribute: false })\n boxStyleWhenNotResizing: React.CSSProperties;\n\n @property({ attribute: false })\n variant: \"dashboard\" | \"default\" = \"default\";\n\n private _shadowRoot: ShadowRoot;\n\n constructor() {\n super();\n\n // ** Create a shadow root to encapsulate styles. **\n // ** Create your shadow root in the constructor. **\n this._shadowRoot = this.attachShadow({ mode: \"open\" });\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 <>\n <style>{styles}</style>\n <BrickWrapper>\n <ResizableBox\n resizeDirection={this.resizeDirection ?? \"right\"}\n storageKey={this.storageKey}\n defaultSize={this.defaultSize}\n minSize={this.minSize}\n minSpace={this.minSpace}\n boxStyle={this.boxStyle}\n boxStyleWhenNotResizing={this.boxStyleWhenNotResizing}\n resizable={this.resizable}\n variant={this.variant}\n />\n </BrickWrapper>\n </>,\n this._shadowRoot\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.resizable-box\", ResizableBoxElement);\n","import React, { CSSProperties } from \"react\";\n\ninterface GeneralTextProps {\n text: string;\n color?: CSSProperties[\"color\"];\n fontSize?: CSSProperties[\"fontSize\"];\n fontWeight?: CSSProperties[\"fontWeight\"];\n lineHeight?: CSSProperties[\"lineHeight\"];\n display?: CSSProperties[\"display\"];\n textAlign?: CSSProperties[\"textAlign\"];\n customStyle?: CSSProperties;\n}\n\nexport function GeneralText(props: GeneralTextProps): React.ReactElement {\n return (\n <span\n style={{\n color: props.color,\n fontSize: props.fontSize,\n fontWeight: props.fontWeight,\n lineHeight: props.lineHeight,\n display: props.display,\n textAlign: props.textAlign,\n ...props.customStyle,\n }}\n >\n {props.text}\n </span>\n );\n}\n","import React, { CSSProperties } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { GeneralText } from \"./GeneralText\";\n\n/**\n * @id basic-bricks.general-text\n * @author SailorShe\n * @history\n * 1.x.0: 新增构件 `basic-bricks.general-text`\n * @docKind brick\n * @noInheritDoc\n */\nexport class GeneralTextElement extends UpdatingElement {\n /**\n * @default ''\n * @required false\n * @description 字体文本\n * @group basic\n */\n @property({ type: String })\n text: string;\n\n /**\n * @default 14px\n * @required false\n * @description 字体大小\n * @group basic\n */\n @property({ type: String })\n fontSize: CSSProperties[\"fontSize\"];\n\n /**\n * @default normal\n * @required false\n * @description 字体粗细\n * @group basic\n */\n @property({ type: String })\n fontWeight: CSSProperties[\"fontWeight\"];\n\n /**\n * @default black\n * @required false\n * @description 字体颜色\n * @group basic\n */\n @property({ type: String })\n color: CSSProperties[\"color\"];\n\n /**\n * @default 14px\n * @required false\n * @description 字体行高\n * @group basic\n */\n @property({ type: String })\n lineHeight: CSSProperties[\"lineHeight\"];\n\n /**\n * @default left\n * @required false\n * @description 字体对齐方式\n * @group basic\n */\n @property({ type: String })\n textAlign: CSSProperties[\"textAlign\"];\n\n /**\n * @default inline\n * @required false\n * @description 显示类型, 在文字构件中常用inline inline-block block,其余类型请查看[相关文档](https://developer.mozilla.org/zh-CN/docs/Web/CSS/display)\n * @group basic\n */\n @property({ type: String })\n display: CSSProperties[\"display\"];\n\n /**\n * @default 使用自定义样式,将会覆盖默认样式\n * @required false\n * @description 自定义样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n customStyle: CSSProperties;\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 <GeneralText\n fontSize={this.fontSize}\n fontWeight={this.fontWeight}\n color={this.color}\n lineHeight={this.lineHeight}\n text={this.text}\n display={this.display}\n customStyle={this.customStyle}\n textAlign={this.textAlign}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.general-text\", GeneralTextElement);\n","import React from \"react\";\nimport * as originAppDocumentLink from \"../app-bar/AppDocumentLink/AppDocumentLink\";\n\nexport function AppDocumentLink(props: {\n iconStyle: React.CSSProperties;\n buttonStyle: React.CSSProperties;\n isInNavbar?: boolean;\n}): React.ReactElement {\n return (\n <originAppDocumentLink.AppDocumentLink\n iconStyle={props.iconStyle}\n isInNavbar={props.isInNavbar}\n buttonStyle={props.buttonStyle}\n />\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { AppDocumentLink } from \"./AppDocumentLink\";\n\n/**\n * @id basic-bricks.app-bar-document-link\n * @author SheRunFeng\n * @history\n * 1.x.0: 新增构件 `basic-bricks.app-bar-document-link`\n * @docKind brick\n * @deprecated\n * @memo\n * 该构件已迁移至 `nav-legacy` 包中维护,后续版本将不再维护该构件,请使用 `nav-legacy.app-bar-document-link` 构件\n * @noInheritDoc\n */\nexport class AppBarDocumentLinkElement extends UpdatingElement {\n @property({\n attribute: false,\n })\n iconStyle: React.CSSProperties;\n\n @property({\n attribute: false,\n })\n buttonStyle: React.CSSProperties;\n /**\n * @default false\n * @required false\n * @description 是否在导航栏中显示,为true时显示为nav类型的通用按钮(高度为24px,圆角3px,hover颜色为灰色))\n */\n @property({\n type: Boolean,\n })\n isInNavbar: 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 <AppDocumentLink\n iconStyle={this.iconStyle}\n isInNavbar={this.isInNavbar}\n buttonStyle={this.buttonStyle}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"basic-bricks.app-document-link\",\n AppBarDocumentLinkElement\n);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { property, UpdatingElement } from \"@next-core/brick-kit\";\n\n/**\n * @id basic-bricks.flex-layout\n * @author kehua\n * @history\n * 1.0.0: 新增构件 `basic-bricks.flex-layout`\n * @docKind brick\n * @noInheritDoc\n */\n\nexport class FlexLayoutElement extends UpdatingElement {\n /**\n * @description 定义[flex-direction]:设置主轴方向\n * @group basic\n */\n @property({ type: String })\n flexDirection?: string;\n\n /**\n * @description 定义[justify-content]:设置主轴上子元素的排列方式\n * @group basic\n */\n @property({ type: String })\n justifyContent?: string;\n\n /**\n * @description 定义[align-items]:设置侧轴上的子元素排列方式(单行)\n * @group basic\n */\n @property({ type: String })\n alignItems?: string;\n\n /**\n * @description 定义[align-content]:设置侧轴上的子元素排列方式(多行)\n * @group basic\n */\n @property({ type: String })\n alignContent?: string;\n\n /**\n * @description 定义[flex-wrap]:设置换行方式\n * @group basic\n */\n @property({ type: String })\n flexWrap?: string;\n\n /**\n * @description 定义[gap]:设置元素间隙\n * @group basic\n */\n @property({ type: String })\n gap?: string;\n\n // Process user's input\n processString(str: string): string {\n return str.split(\";\")[0];\n }\n\n private _shadowRoot: ShadowRoot;\n\n constructor() {\n super();\n\n // ** Create a shadow root to encapsulate styles. **\n // ** Create your shadow root in the constructor. **\n this._shadowRoot = this.attachShadow({ mode: \"open\" });\n }\n\n connectedCallback(): void {\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this._shadowRoot);\n }\n\n protected _render(): void {\n // istanbul ignore else\n const _styles = `:host { display: flex; flex-direction: ${this.processString(\n this.flexDirection ?? \"row\"\n )}; flex-wrap: ${this.processString(\n this.flexWrap ?? \"nowrap\"\n )}; justify-content: ${this.processString(\n this.justifyContent ?? \"flex-start\"\n )}; align-items: ${this.processString(\n this.alignItems ?? \"stretch\"\n )}; align-content: ${this.processString(\n this.alignContent ?? \"stretch\"\n )}; gap: ${this.processString(this.gap ?? \"0\")}}`;\n\n if (this.isConnected) {\n ReactDOM.render(\n <>\n <style>{_styles}</style>\n <slot />\n </>,\n this._shadowRoot\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.flex-layout\", FlexLayoutElement);\n","import React, {\n useState,\n useEffect,\n useMemo,\n useRef,\n useCallback,\n} from \"react\";\nimport { JsonStorage, debounceByAnimationFrame } from \"@next-core/brick-utils\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport moment from \"moment\";\nimport { getCssPropertyValue } from \"@next-core/brick-kit\";\n\nexport enum OpenDirection {\n LeftTop = \"leftTop\",\n LeftBottom = \"leftBottom\",\n RightTop = \"rightTop\",\n RightBottom = \"rightBottom\",\n Center = \"center\",\n}\n\nexport interface GeneralPopupProps {\n popupId?: string;\n visible: boolean;\n popupTitle?: string;\n popupWidth?: React.CSSProperties[\"width\"];\n popupHeight?: React.CSSProperties[\"height\"];\n closePopup?: () => void;\n dragHeaderStyle?: Record<string, any>;\n dragWrapperStyle?: Record<string, any>;\n openDirection?: OpenDirection;\n resize?: boolean;\n}\n\nlet headerHeight = parseInt(getCssPropertyValue(\"--app-bar-height\")) || 56;\n\nexport function GeneralPopup({\n popupId,\n popupTitle,\n popupWidth,\n popupHeight,\n visible,\n dragHeaderStyle,\n dragWrapperStyle,\n openDirection,\n closePopup,\n resize,\n}: GeneralPopupProps): React.ReactElement {\n const popupRef = useRef<HTMLDivElement>();\n const headerRef = useRef<HTMLDivElement>();\n const [isMove, setIsMove] = useState(false);\n const curPointRef = useRef({\n offsetX: 0,\n offsetY: 0,\n });\n const [position, setPosition] = useState<Array<number>>([]);\n const jsonStorage = React.useMemo(() => new JsonStorage(localStorage), []);\n\n const storage = useMemo(\n () =>\n popupId\n ? new JsonStorage<Record<string, Array<number>>>(\n localStorage,\n \"general-popup-postion-\"\n )\n : null,\n [popupId]\n );\n\n const handleShowTips = ((e: CustomEvent<NavTip[]>): void => {\n const list = (e.detail ?? []).filter((item) => {\n const isTipClosing =\n item.closable &&\n jsonStorage.getItem(item.tipKey) &&\n moment().unix() <= jsonStorage.getItem(item.tipKey);\n return !isTipClosing;\n });\n headerHeight += list.length * 32;\n }) as EventListener;\n\n useEffect(() => {\n window.addEventListener(\"app.bar.tips\", handleShowTips);\n return () => {\n window.removeEventListener(\"app.bar.tips\", handleShowTips);\n };\n }, []);\n\n const debouncedSetPoint = useMemo(\n () => debounceByAnimationFrame(setPosition),\n []\n );\n\n const handleMouseDown = (e: MouseEvent): void => {\n const paths = e.composedPath() as HTMLElement[];\n for (const path of paths) {\n if (path.nodeName) {\n if (\n path.nodeName.toLowerCase() === \"span\" &&\n path.className.includes(\"general-popup-close-btn\")\n ) {\n closePopup?.();\n return;\n }\n if (\n path.nodeName.toLowerCase() === \"div\" &&\n path.className.includes(\"general-popup-header\")\n ) {\n setIsMove(true);\n curPointRef.current = {\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n };\n }\n }\n }\n };\n\n const handleMouseMove = useCallback(\n (e: MouseEvent): void => {\n if (isMove) {\n const { width, height } = popupRef.current.getBoundingClientRect();\n const { innerWidth, innerHeight } = window;\n const maxX = innerWidth - width;\n const maxY = innerHeight - height;\n const pointX = e.clientX - curPointRef.current.offsetX;\n const pointY = e.clientY - curPointRef.current.offsetY;\n debouncedSetPoint([\n pointX <= 0 ? 0 : pointX >= maxX ? maxX : pointX,\n pointY <= 0 ? 0 : pointY >= maxY ? maxY : pointY,\n ]);\n }\n },\n [debouncedSetPoint, isMove]\n );\n\n const handleMouseUp = useCallback((): void => {\n setIsMove(false);\n popupId && storage.setItem(popupId, [position[0], position[1]]);\n }, [popupId, position, storage]);\n\n const initPos = useCallback(() => {\n let initPostion: Array<number> = [];\n if (visible && popupRef.current) {\n const { innerWidth, innerHeight } = window;\n const { offsetWidth, offsetHeight } = popupRef.current;\n\n const map: { [key in OpenDirection]: Array<number> } = {\n [OpenDirection.LeftTop]: [0, headerHeight],\n [OpenDirection.LeftBottom]: [0, innerHeight - offsetHeight],\n [OpenDirection.RightTop]: [innerWidth - offsetWidth, headerHeight],\n\n [OpenDirection.RightBottom]: [\n innerWidth - offsetWidth,\n innerHeight - offsetHeight,\n ],\n\n [OpenDirection.Center]: [\n Math.floor((innerWidth - offsetWidth) / 2),\n Math.floor((innerHeight - offsetHeight) / 2),\n ],\n };\n\n initPostion = map[openDirection || OpenDirection.Center];\n return popupId ? storage.getItem(popupId) ?? initPostion : initPostion;\n }\n return initPostion;\n }, [visible, openDirection, popupId, storage]);\n\n useEffect(() => {\n const popupElement = popupRef.current;\n if (popupElement) {\n setPosition(initPos());\n /**\n * Antd Select构件在shadow dom会出现异常的情况\n * 具体可参见: https://github.com/ant-design/ant-design/issues/28012\n * 采用原生事件监听可避免该种情况发生\n */\n popupElement.addEventListener(\"mousedown\", handleMouseDown);\n }\n return () => {\n popupElement?.removeEventListener(\"mousedown\", handleMouseDown);\n };\n }, [visible, initPos]);\n\n useEffect(() => {\n if (!isMove) {\n return;\n }\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isMove, handleMouseUp, handleMouseMove]);\n\n return (\n visible && (\n <div\n className=\"GeneralPopup\"\n ref={popupRef}\n style={{\n transform: `translate(${position[0]}px, ${position[1]}px)`,\n ...dragWrapperStyle,\n }}\n >\n <div\n className=\"general-popup-header\"\n ref={headerRef}\n style={dragHeaderStyle}\n >\n <span className=\"title\">{popupTitle}</span>\n <span className=\"general-popup-close-btn\">\n <GeneralIcon\n icon={{\n icon: \"close\",\n lib: \"antd\",\n theme: \"outlined\",\n }}\n />\n </span>\n </div>\n <div\n className=\"content\"\n style={{\n width: popupWidth ?? \"500px\",\n ...(resize\n ? {\n resize: \"both\",\n height: popupHeight,\n }\n : { maxHeight: popupHeight }),\n }}\n >\n <slot name=\"content\" />\n </div>\n </div>\n )\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n UpdatingElement,\n property,\n method,\n} from \"@next-core/brick-kit\";\nimport styles from \"./style.shadow.css\";\nimport { GeneralPopup, OpenDirection } from \"./GeneralPopup\";\n\n/**\n * @id basic-bricks.general-popup\n * @author SheRunFeng\n * @history\n * 1.x.0: 新增构件 `basic-bricks.general-popup`\n * @docKind brick\n * @noInheritDoc\n */\nexport class GeneralPopupElement extends UpdatingElement {\n /**\n * @default -\n * @required false\n * @description 浮层Id, 如果有设置浮层id, 会开启位置记录功能\n */\n @property({ type: String })\n popupId: string;\n\n /**\n * @default 500\n * @required false\n * @description 弹窗宽度\n */\n @property({ type: String })\n popupWidth: React.CSSProperties[\"width\"];\n\n /**\n * @default -\n * @required false\n * @description 弹窗高度\n */\n @property({ type: String })\n popupHeight: React.CSSProperties[\"height\"];\n\n /**\n * @default -\n * @required false\n * @description 弹窗标题\n */\n @property({ type: String })\n popupTitle: string;\n\n /**\n * @default center\n * @required false\n * @description 弹窗打开位置\n */\n @property({ type: String })\n openDirection: OpenDirection;\n\n /**\n * @kind boolean\n * @required -\n * @default false\n * @description 是否显示模态框\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n isVisible: boolean;\n\n /**\n * @required false\n * @default -\n * @description 用于设置 popup head的样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n dragHeaderStyle: Record<string, any> = {};\n\n /**\n * @required false\n * @default -\n * @description 用于设置 popup wrapper的样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n dragWrapperStyle: Record<string, any> = {};\n\n /**\n * @description 是否可调整尺寸\n * @group ui\n */\n @property({\n type: Boolean,\n })\n resize?: boolean;\n\n /**\n * @description 显示弹窗\n */\n @method()\n open(): void {\n this.isVisible = true;\n }\n\n /**\n * @description 关闭弹窗\n */\n @method()\n close(): void {\n this.closePopup();\n }\n\n closePopup = (): void => {\n this.isVisible = false;\n };\n\n private _shadowRoot: ShadowRoot;\n\n constructor() {\n super();\n this._shadowRoot = this.attachShadow({ mode: \"open\" });\n }\n\n connectedCallback(): void {\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this._shadowRoot);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <>\n <style>{styles}</style>\n <BrickWrapper>\n <GeneralPopup\n popupId={this.popupId}\n popupWidth={this.popupWidth}\n popupHeight={this.popupHeight}\n popupTitle={this.popupTitle}\n visible={this.isVisible}\n closePopup={this.closePopup}\n openDirection={this.openDirection}\n dragHeaderStyle={this.dragHeaderStyle}\n dragWrapperStyle={this.dragWrapperStyle}\n resize={this.resize}\n />\n </BrickWrapper>\n </>,\n this._shadowRoot\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.general-popup\", GeneralPopupElement);\n","import React from \"react\";\nimport { LogoBar } from \"../menu-bar/LogoBar/LogoBar\";\n\nexport function AppBarLogo(): React.ReactElement {\n return <LogoBar />;\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement } from \"@next-core/brick-kit\";\nimport { AppBarLogo } from \"./AppBarLogo\";\n\n/**\n * @id basic-bricks.app-bar-logo\n * @author SheRunFeng\n * @history\n * 1.x.0: 新增构件 `basic-bricks.app-bar-logo`\n * @docKind brick\n * @deprecated\n * @memo\n * 该构件已迁移至 `nav-legacy` 包中维护,后续版本将不再维护该构件,请使用 `nav-legacy.app-bar-logo` 构件\n * @noInheritDoc\n */\nexport class AppBarLogoElement extends UpdatingElement {\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 <AppBarLogo />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.app-bar-logo\", AppBarLogoElement);\n","import React from \"react\";\nimport { NavTip } from \"@next-core/brick-types\";\nimport { JsonStorage } from \"@next-core/brick-utils\";\nimport { getAuth, getRuntime, useCurrentApp } from \"@next-core/brick-kit\";\nimport moment from \"moment\";\nimport { AppBarTips } from \"../app-bar/AppBarTips/AppBarTips\";\n\nconst storage = new JsonStorage(localStorage);\n\nexport function AppBarWrapper({\n isFixed = true,\n displayCenter = false,\n extraAppBarContentStyle = {},\n}): React.ReactElement {\n const [tipList, setTipList] = React.useState<NavTip[]>([]);\n const [appbarHeight, setAppbarHeight] = React.useState<string>(\n `var(--app-bar-height)`\n );\n const currentApp = useCurrentApp();\n\n const handleShowTips = React.useCallback<EventListener>((e): void => {\n const list = (e as CustomEvent<NavTip[]>).detail ?? [];\n // 可关闭的tip,用户关闭后过一天才会重新显示\n setTipList((previous) =>\n previous\n .filter((prev) => !list.some((item) => item.tipKey === prev.tipKey))\n .concat(\n list.filter((item) => {\n return !(\n item.closable &&\n storage.getItem(item.tipKey) &&\n moment().unix() <= storage.getItem(item.tipKey)\n );\n })\n )\n );\n }, []);\n\n const handleCloseTips = (targetKey: string): void => {\n const list = tipList.filter((item) => item.tipKey !== targetKey);\n setTipList(list);\n window.dispatchEvent(new CustomEvent(\"app.bar.tips\", { detail: list }));\n };\n\n React.useEffect(() => {\n const newHeight = tipList.length\n ? `calc(var(--app-bar-height) + ${tipList.length * 32}px)`\n : \"var(--app-bar-height)\";\n setAppbarHeight(newHeight);\n document.documentElement.style.setProperty(\n \"--app-bar-height-with-tips\",\n newHeight\n );\n }, [tipList]);\n\n React.useEffect(() => {\n const runtime = getRuntime();\n const isV3 = runtime.getFeatureFlags()[\"migrate-to-brick-next-v3\"];\n if (isV3) {\n const auth = getAuth();\n const validDaysLeft: number = auth.license?.validDaysLeft;\n if (validDaysLeft && validDaysLeft <= 15 && auth.isAdmin) {\n handleShowTips(\n new CustomEvent<NavTip[]>(\"app.bar.tips\", {\n detail: [\n {\n text: `离 License 过期还有 ${validDaysLeft} 天`,\n tipKey: `license:${auth.org}`,\n closable: true,\n isCenter: true,\n backgroundColor: \"var(--color-info-bg)\",\n },\n ],\n })\n );\n }\n return;\n }\n window.addEventListener(\"app.bar.tips\", handleShowTips);\n return () => {\n window.removeEventListener(\"app.bar.tips\", handleShowTips);\n };\n }, [handleShowTips]);\n\n React.useEffect(() => {\n const runtime = getRuntime();\n const isV3 = runtime.getFeatureFlags()[\"migrate-to-brick-next-v3\"];\n if (isV3) {\n const auth = getAuth();\n const handelRouteRender = (e: Event): void => {\n const renderTime = (e as CustomEvent<{ renderTime: number }>).detail\n .renderTime;\n const { loadTime, loadInfoPage } = runtime.getMiscSettings();\n if (currentApp.isBuildPush && loadTime > 0 && renderTime > loadTime) {\n const getSecond = (time: number): number =>\n Math.floor(time * 100) / 100;\n handleShowTips(\n new CustomEvent<NavTip[]>(\"app.bar.tips\", {\n detail: [\n {\n text: `您的页面存在性能问题, 当前页面渲染时间 ${getSecond(\n renderTime / 1000\n )} 秒, 规定阈值为: ${getSecond(\n (loadTime as number) / 1000\n )} 秒, 您已超过。请您针对该页面进行性能优化!`,\n closable: false,\n isCenter: true,\n tipKey: `render:${auth.org}`,\n backgroundColor: \"var(--color-warning-bg)\",\n ...(loadInfoPage\n ? {\n info: {\n label: \"建议解决思路\",\n url: loadInfoPage as string,\n },\n }\n : {}),\n },\n ],\n })\n );\n }\n };\n window.addEventListener(\"route.render\", handelRouteRender);\n return () => {\n window.removeEventListener(\"route.render\", handelRouteRender);\n };\n }\n }, [handleShowTips, currentApp]);\n\n React.useEffect(() => {\n const mainElement = document.getElementById(\"main-mount-point\");\n const iframeMainElement = document.getElementById(\n \"legacy-iframe-mount-point\"\n );\n mainElement && (mainElement.style.marginTop = \"\");\n iframeMainElement && (iframeMainElement.style.marginTop = \"\");\n }, []);\n\n return (\n <div\n className=\"app-bar-container\"\n style={{\n height: appbarHeight,\n }}\n >\n <div\n className=\"app-bar\"\n style={{\n position: isFixed ? \"fixed\" : \"absolute\",\n }}\n >\n {tipList.map((item: NavTip) => {\n return (\n <AppBarTips\n key={item.tipKey}\n tipKey={item.tipKey}\n text={item.text}\n info={item.info}\n isCenter={item.isCenter}\n backgroundColor={item.backgroundColor}\n closable={item.closable}\n onClose={handleCloseTips}\n />\n );\n })}\n <div\n className=\"app-bar-content\"\n style={{\n justifyContent: displayCenter ? \"space-around\" : \"space-between\",\n ...extraAppBarContentStyle,\n }}\n >\n <div className=\"leftContainer\">\n <slot name=\"leftContainer\"></slot>\n </div>\n <div className=\"rightContainer\">\n <slot name=\"rightContainer\"></slot>\n </div>\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 { AppBarWrapper } from \"./AppBarWrapper\";\nimport styles from \"./AppBarWrapper.shadow.css\";\n\n/**\n * @id basic-bricks.app-bar-wrapper\n * @author SheRunFeng\n * @history\n * 1.x.0: 新增构件 `basic-bricks.app-bar-wrapper`\n * @docKind brick\n * @deprecated\n * @memo\n * 该构件已迁移至 `nav-legacy` 包中维护,后续版本将不再维护该构件,请使用 `nav-legacy.app-bar-wrapper` 构件\n * @noInheritDoc\n */\nexport class AppBarWrapperElement extends UpdatingElement {\n private _shadowRoot: ShadowRoot;\n\n @property({\n type: Boolean,\n })\n isFixed: boolean;\n\n @property({\n type: Boolean,\n })\n displayCenter: boolean;\n\n @property({\n attribute: false,\n })\n extraAppBarContentStyle: 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 this._shadowRoot = this.attachShadow({ mode: \"open\" });\n }\n\n connectedCallback(): void {\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this._shadowRoot);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <>\n <style>{styles}</style>\n <BrickWrapper>\n <AppBarWrapper\n isFixed={this.isFixed}\n displayCenter={this.displayCenter}\n extraAppBarContentStyle={this.extraAppBarContentStyle}\n />\n </BrickWrapper>\n </>,\n this._shadowRoot\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.app-bar-wrapper\", AppBarWrapperElement);\n","import React, { CSSProperties } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { NS_BASIC_BRICKS, K } from \"../i18n/constants\";\n\ntype headType = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\ninterface GeneralHeaderProps {\n text: string;\n type?: headType;\n customStyle?: CSSProperties;\n}\n\nconst styleMap = {\n h1: {\n fontSize: \"40px\",\n },\n h2: {\n fontSize: \"32px\",\n },\n h3: {\n fontSize: \"28px\",\n },\n h4: {\n fontSize: \"24px\",\n },\n h5: {\n fontSize: \"20px\",\n },\n h6: {\n fontSize: \"16px\",\n },\n};\n\nexport function GeneralHeading(props: GeneralHeaderProps): React.ReactElement {\n const headerRender = () => {\n switch (props.type) {\n case \"h2\":\n return (\n <h2 style={{ ...styleMap[\"h2\"], ...props.customStyle }}>\n {props.text}\n </h2>\n );\n case \"h3\":\n return (\n <h3 style={{ ...styleMap[\"h3\"], ...props.customStyle }}>\n {props.text}\n </h3>\n );\n case \"h4\":\n return (\n <h4 style={{ ...styleMap[\"h4\"], ...props.customStyle }}>\n {props.text}\n </h4>\n );\n case \"h5\":\n return (\n <h5 style={{ ...styleMap[\"h5\"], ...props.customStyle }}>\n {props.text}\n </h5>\n );\n case \"h6\":\n return (\n <h6 style={{ ...styleMap[\"h6\"], ...props.customStyle }}>\n {props.text}\n </h6>\n );\n default:\n return (\n <h1 style={{ ...styleMap[\"h1\"], ...props.customStyle }}>\n {props.text}\n </h1>\n );\n }\n };\n\n return headerRender();\n}\n","import React, { CSSProperties } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { GeneralHeading } from \"./GeneralHeading\";\n\ntype headType = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n/**\n * @id basic-bricks.general-heading\n * @author MJmajiong\n * @history\n * 1.x.0: 新增构件 `basic-bricks.general-heading`\n * @docKind brick\n * @noInheritDoc\n */\nexport class GeneralHeadingElement extends UpdatingElement {\n /**\n * @default ''\n * @required true\n * @description 字体文本\n * @group basic\n */\n @property()\n text: string;\n\n /**\n * @default h1\n * @required true\n * @description 标题类型 h1-h6\n * @group basic\n */\n @property()\n type: headType;\n\n /**\n * @default 使用自定义样式,将会覆盖默认样式\n * @required false\n * @description 自定义样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n customStyle: 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 protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <GeneralHeading\n text={this.text}\n type={this.type}\n customStyle={this.customStyle}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.general-heading\", GeneralHeadingElement);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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, { useState, useEffect } from \"react\";\nimport styles from \"./index.module.css\";\nimport { StarOutlined, StarFilled } from \"@ant-design/icons\";\nimport { Tooltip } from \"antd\";\nimport { K, NS_BASIC_BRICKS } from \"../i18n/constants\";\nimport { useTranslation } from \"react-i18next\";\nimport { isNumber } from \"lodash\";\n\ninterface MenuTagProps {\n menu: Record<string, unknown>;\n handleCollect?: (item: Record<string, unknown>) => void;\n target?: string;\n handleMenuClick: (item: Record<string, unknown>) => void;\n handleMenuRemove: (item: Record<string, unknown>) => void;\n canCollect?: boolean;\n handleCollectFailed?: () => void;\n favouriteCount?: number;\n maxFavouriteCount?: number;\n}\nexport function MenuTag(props: MenuTagProps): React.ReactElement {\n const {\n menu,\n handleCollect,\n handleMenuClick,\n handleMenuRemove,\n favouriteCount,\n maxFavouriteCount,\n handleCollectFailed,\n } = props;\n const [selected, setSelected] = useState(false);\n const [canCollect, setCanCollect] = useState(true);\n const { t } = useTranslation(NS_BASIC_BRICKS);\n\n useEffect(() => {\n const { isFavourite } = menu;\n setSelected(isFavourite as boolean);\n }, [menu]);\n useEffect(() => {\n if (isNumber(maxFavouriteCount)) {\n setCanCollect(favouriteCount < maxFavouriteCount);\n }\n }, [favouriteCount]);\n const handleOnStarClick = () => {\n if (canCollect) {\n setSelected(true);\n handleCollect(menu);\n } else {\n handleCollectFailed();\n }\n };\n const handleOnTextClick = () => {\n handleMenuClick(menu);\n };\n const handleOnRemove = () => {\n setSelected(false);\n handleMenuRemove(menu);\n };\n const { text } = menu;\n return (\n <div className={styles.tag}>\n <div className={styles.textContainer} onClick={handleOnTextClick}>\n <Tooltip\n trigger={text?.length > 20 ? \"hover\" : []}\n title={text}\n mouseLeaveDelay={2}\n >\n {text}\n </Tooltip>\n </div>\n {!selected && (\n <div\n className={styles.operation}\n data-testid=\"collect-btn\"\n onClick={handleOnStarClick}\n >\n <Tooltip title={t(K.ADD_TO_QUICK_ACCESS)}>\n <StarOutlined className={styles.collectStar} />\n </Tooltip>\n </div>\n )}\n {selected && (\n <div\n className={styles.operation}\n data-testid=\"remove-btn\"\n onClick={handleOnRemove}\n >\n <Tooltip title={t(K.REMOVE_FROM_QUICK_ACCESS)}>\n <StarFilled className={styles.favouriteStar} />\n </Tooltip>\n </div>\n )}\n </div>\n );\n}\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { createRef, createElement, Component, createContext } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport invariant from 'invariant';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport PropTypes from 'prop-types';\n\nvar Manager = function () {\n function Manager() {\n _classCallCheck(this, Manager);\n\n _defineProperty(this, \"refs\", {});\n }\n\n _createClass(Manager, [{\n key: \"add\",\n value: function add(collection, ref) {\n if (!this.refs[collection]) {\n this.refs[collection] = [];\n }\n\n this.refs[collection].push(ref);\n }\n }, {\n key: \"remove\",\n value: function remove(collection, ref) {\n var index = this.getIndex(collection, ref);\n\n if (index !== -1) {\n this.refs[collection].splice(index, 1);\n }\n }\n }, {\n key: \"isActive\",\n value: function isActive() {\n return this.active;\n }\n }, {\n key: \"getActive\",\n value: function getActive() {\n var _this = this;\n\n return this.refs[this.active.collection].find(function (_ref) {\n var node = _ref.node;\n return node.sortableInfo.index == _this.active.index;\n });\n }\n }, {\n key: \"getIndex\",\n value: function getIndex(collection, ref) {\n return this.refs[collection].indexOf(ref);\n }\n }, {\n key: \"getOrderedRefs\",\n value: function getOrderedRefs() {\n var collection = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.active.collection;\n return this.refs[collection].sort(sortByIndex);\n }\n }]);\n\n return Manager;\n}();\n\nfunction sortByIndex(_ref2, _ref3) {\n var index1 = _ref2.node.sortableInfo.index;\n var index2 = _ref3.node.sortableInfo.index;\n return index1 - index2;\n}\n\nfunction arrayMove(array, from, to) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof console !== 'undefined') {\n console.warn(\"Deprecation warning: arrayMove will no longer be exported by 'react-sortable-hoc' in the next major release. Please install the `array-move` package locally instead. https://www.npmjs.com/package/array-move\");\n }\n }\n\n array = array.slice();\n array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);\n return array;\n}\nfunction omit(obj, keysToOmit) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (keysToOmit.indexOf(key) === -1) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\nvar events = {\n end: ['touchend', 'touchcancel', 'mouseup'],\n move: ['touchmove', 'mousemove'],\n start: ['touchstart', 'mousedown']\n};\nvar vendorPrefix = function () {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return '';\n }\n\n var styles = window.getComputedStyle(document.documentElement, '') || ['-moz-hidden-iframe'];\n var pre = (Array.prototype.slice.call(styles).join('').match(/-(moz|webkit|ms)-/) || styles.OLink === '' && ['', 'o'])[1];\n\n switch (pre) {\n case 'ms':\n return 'ms';\n\n default:\n return pre && pre.length ? pre[0].toUpperCase() + pre.substr(1) : '';\n }\n}();\nfunction setInlineStyles(node, styles) {\n Object.keys(styles).forEach(function (key) {\n node.style[key] = styles[key];\n });\n}\nfunction setTranslate3d(node, translate) {\n node.style[\"\".concat(vendorPrefix, \"Transform\")] = translate == null ? '' : \"translate3d(\".concat(translate.x, \"px,\").concat(translate.y, \"px,0)\");\n}\nfunction setTransitionDuration(node, duration) {\n node.style[\"\".concat(vendorPrefix, \"TransitionDuration\")] = duration == null ? '' : \"\".concat(duration, \"ms\");\n}\nfunction closest(el, fn) {\n while (el) {\n if (fn(el)) {\n return el;\n }\n\n el = el.parentNode;\n }\n\n return null;\n}\nfunction limit(min, max, value) {\n return Math.max(min, Math.min(value, max));\n}\n\nfunction getPixelValue(stringValue) {\n if (stringValue.substr(-2) === 'px') {\n return parseFloat(stringValue);\n }\n\n return 0;\n}\n\nfunction getElementMargin(element) {\n var style = window.getComputedStyle(element);\n return {\n bottom: getPixelValue(style.marginBottom),\n left: getPixelValue(style.marginLeft),\n right: getPixelValue(style.marginRight),\n top: getPixelValue(style.marginTop)\n };\n}\nfunction provideDisplayName(prefix, Component$$1) {\n var componentName = Component$$1.displayName || Component$$1.name;\n return componentName ? \"\".concat(prefix, \"(\").concat(componentName, \")\") : prefix;\n}\nfunction getScrollAdjustedBoundingClientRect(node, scrollDelta) {\n var boundingClientRect = node.getBoundingClientRect();\n return {\n top: boundingClientRect.top + scrollDelta.top,\n left: boundingClientRect.left + scrollDelta.left\n };\n}\nfunction getPosition(event) {\n if (event.touches && event.touches.length) {\n return {\n x: event.touches[0].pageX,\n y: event.touches[0].pageY\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n return {\n x: event.changedTouches[0].pageX,\n y: event.changedTouches[0].pageY\n };\n } else {\n return {\n x: event.pageX,\n y: event.pageY\n };\n }\n}\nfunction isTouchEvent(event) {\n return event.touches && event.touches.length || event.changedTouches && event.changedTouches.length;\n}\nfunction getEdgeOffset(node, parent) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n left: 0,\n top: 0\n };\n\n if (!node) {\n return undefined;\n }\n\n var nodeOffset = {\n left: offset.left + node.offsetLeft,\n top: offset.top + node.offsetTop\n };\n\n if (node.parentNode === parent) {\n return nodeOffset;\n }\n\n return getEdgeOffset(node.parentNode, parent, nodeOffset);\n}\nfunction getTargetIndex(newIndex, prevIndex, oldIndex) {\n if (newIndex < oldIndex && newIndex > prevIndex) {\n return newIndex - 1;\n } else if (newIndex > oldIndex && newIndex < prevIndex) {\n return newIndex + 1;\n } else {\n return newIndex;\n }\n}\nfunction getLockPixelOffset(_ref) {\n var lockOffset = _ref.lockOffset,\n width = _ref.width,\n height = _ref.height;\n var offsetX = lockOffset;\n var offsetY = lockOffset;\n var unit = 'px';\n\n if (typeof lockOffset === 'string') {\n var match = /^[+-]?\\d*(?:\\.\\d*)?(px|%)$/.exec(lockOffset);\n invariant(match !== null, 'lockOffset value should be a number or a string of a ' + 'number followed by \"px\" or \"%\". Given %s', lockOffset);\n offsetX = parseFloat(lockOffset);\n offsetY = parseFloat(lockOffset);\n unit = match[1];\n }\n\n invariant(isFinite(offsetX) && isFinite(offsetY), 'lockOffset value should be a finite. Given %s', lockOffset);\n\n if (unit === '%') {\n offsetX = offsetX * width / 100;\n offsetY = offsetY * height / 100;\n }\n\n return {\n x: offsetX,\n y: offsetY\n };\n}\nfunction getLockPixelOffsets(_ref2) {\n var height = _ref2.height,\n width = _ref2.width,\n lockOffset = _ref2.lockOffset;\n var offsets = Array.isArray(lockOffset) ? lockOffset : [lockOffset, lockOffset];\n invariant(offsets.length === 2, 'lockOffset prop of SortableContainer should be a single ' + 'value or an array of exactly two values. Given %s', lockOffset);\n\n var _offsets = _slicedToArray(offsets, 2),\n minLockOffset = _offsets[0],\n maxLockOffset = _offsets[1];\n\n return [getLockPixelOffset({\n height: height,\n lockOffset: minLockOffset,\n width: width\n }), getLockPixelOffset({\n height: height,\n lockOffset: maxLockOffset,\n width: width\n })];\n}\n\nfunction isScrollable(el) {\n var computedStyle = window.getComputedStyle(el);\n var overflowRegex = /(auto|scroll)/;\n var properties = ['overflow', 'overflowX', 'overflowY'];\n return properties.find(function (property) {\n return overflowRegex.test(computedStyle[property]);\n });\n}\n\nfunction getScrollingParent(el) {\n if (!(el instanceof HTMLElement)) {\n return null;\n } else if (isScrollable(el)) {\n return el;\n } else {\n return getScrollingParent(el.parentNode);\n }\n}\nfunction getContainerGridGap(element) {\n var style = window.getComputedStyle(element);\n\n if (style.display === 'grid') {\n return {\n x: getPixelValue(style.gridColumnGap),\n y: getPixelValue(style.gridRowGap)\n };\n }\n\n return {\n x: 0,\n y: 0\n };\n}\nvar KEYCODE = {\n TAB: 9,\n ESC: 27,\n SPACE: 32,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n};\nvar NodeType = {\n Anchor: 'A',\n Button: 'BUTTON',\n Canvas: 'CANVAS',\n Input: 'INPUT',\n Option: 'OPTION',\n Textarea: 'TEXTAREA',\n Select: 'SELECT'\n};\nfunction cloneNode(node) {\n var selector = 'input, textarea, select, canvas, [contenteditable]';\n var fields = node.querySelectorAll(selector);\n var clonedNode = node.cloneNode(true);\n\n var clonedFields = _toConsumableArray(clonedNode.querySelectorAll(selector));\n\n clonedFields.forEach(function (field, i) {\n if (field.type !== 'file') {\n field.value = fields[i].value;\n }\n\n if (field.type === 'radio' && field.name) {\n field.name = \"__sortableClone__\".concat(field.name);\n }\n\n if (field.tagName === NodeType.Canvas && fields[i].width > 0 && fields[i].height > 0) {\n var destCtx = field.getContext('2d');\n destCtx.drawImage(fields[i], 0, 0);\n }\n });\n return clonedNode;\n}\n\nfunction sortableHandle(WrappedComponent) {\n var _class, _temp;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n withRef: false\n };\n return _temp = _class = function (_React$Component) {\n _inherits(WithSortableHandle, _React$Component);\n\n function WithSortableHandle() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, WithSortableHandle);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(WithSortableHandle)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"wrappedInstance\", createRef());\n\n return _this;\n }\n\n _createClass(WithSortableHandle, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var node = findDOMNode(this);\n node.sortableHandle = true;\n }\n }, {\n key: \"getWrappedInstance\",\n value: function getWrappedInstance() {\n invariant(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableHandle() call');\n return this.wrappedInstance.current;\n }\n }, {\n key: \"render\",\n value: function render() {\n var ref = config.withRef ? this.wrappedInstance : null;\n return createElement(WrappedComponent, _extends({\n ref: ref\n }, this.props));\n }\n }]);\n\n return WithSortableHandle;\n }(Component), _defineProperty(_class, \"displayName\", provideDisplayName('sortableHandle', WrappedComponent)), _temp;\n}\nfunction isSortableHandle(node) {\n return node.sortableHandle != null;\n}\n\nvar AutoScroller = function () {\n function AutoScroller(container, onScrollCallback) {\n _classCallCheck(this, AutoScroller);\n\n this.container = container;\n this.onScrollCallback = onScrollCallback;\n }\n\n _createClass(AutoScroller, [{\n key: \"clear\",\n value: function clear() {\n if (this.interval == null) {\n return;\n }\n\n clearInterval(this.interval);\n this.interval = null;\n }\n }, {\n key: \"update\",\n value: function update(_ref) {\n var _this = this;\n\n var translate = _ref.translate,\n minTranslate = _ref.minTranslate,\n maxTranslate = _ref.maxTranslate,\n width = _ref.width,\n height = _ref.height;\n var direction = {\n x: 0,\n y: 0\n };\n var speed = {\n x: 1,\n y: 1\n };\n var acceleration = {\n x: 10,\n y: 10\n };\n var _this$container = this.container,\n scrollTop = _this$container.scrollTop,\n scrollLeft = _this$container.scrollLeft,\n scrollHeight = _this$container.scrollHeight,\n scrollWidth = _this$container.scrollWidth,\n clientHeight = _this$container.clientHeight,\n clientWidth = _this$container.clientWidth;\n var isTop = scrollTop === 0;\n var isBottom = scrollHeight - scrollTop - clientHeight === 0;\n var isLeft = scrollLeft === 0;\n var isRight = scrollWidth - scrollLeft - clientWidth === 0;\n\n if (translate.y >= maxTranslate.y - height / 2 && !isBottom) {\n direction.y = 1;\n speed.y = acceleration.y * Math.abs((maxTranslate.y - height / 2 - translate.y) / height);\n } else if (translate.x >= maxTranslate.x - width / 2 && !isRight) {\n direction.x = 1;\n speed.x = acceleration.x * Math.abs((maxTranslate.x - width / 2 - translate.x) / width);\n } else if (translate.y <= minTranslate.y + height / 2 && !isTop) {\n direction.y = -1;\n speed.y = acceleration.y * Math.abs((translate.y - height / 2 - minTranslate.y) / height);\n } else if (translate.x <= minTranslate.x + width / 2 && !isLeft) {\n direction.x = -1;\n speed.x = acceleration.x * Math.abs((translate.x - width / 2 - minTranslate.x) / width);\n }\n\n if (this.interval) {\n this.clear();\n this.isAutoScrolling = false;\n }\n\n if (direction.x !== 0 || direction.y !== 0) {\n this.interval = setInterval(function () {\n _this.isAutoScrolling = true;\n var offset = {\n left: speed.x * direction.x,\n top: speed.y * direction.y\n };\n _this.container.scrollTop += offset.top;\n _this.container.scrollLeft += offset.left;\n\n _this.onScrollCallback(offset);\n }, 5);\n }\n }\n }]);\n\n return AutoScroller;\n}();\n\nfunction defaultGetHelperDimensions(_ref) {\n var node = _ref.node;\n return {\n height: node.offsetHeight,\n width: node.offsetWidth\n };\n}\n\nfunction defaultShouldCancelStart(event) {\n var interactiveElements = [NodeType.Input, NodeType.Textarea, NodeType.Select, NodeType.Option, NodeType.Button];\n\n if (interactiveElements.indexOf(event.target.tagName) !== -1) {\n return true;\n }\n\n if (closest(event.target, function (el) {\n return el.contentEditable === 'true';\n })) {\n return true;\n }\n\n return false;\n}\n\nvar propTypes = {\n axis: PropTypes.oneOf(['x', 'y', 'xy']),\n contentWindow: PropTypes.any,\n disableAutoscroll: PropTypes.bool,\n distance: PropTypes.number,\n getContainer: PropTypes.func,\n getHelperDimensions: PropTypes.func,\n helperClass: PropTypes.string,\n helperContainer: PropTypes.oneOfType([PropTypes.func, typeof HTMLElement === 'undefined' ? PropTypes.any : PropTypes.instanceOf(HTMLElement)]),\n hideSortableGhost: PropTypes.bool,\n keyboardSortingTransitionDuration: PropTypes.number,\n lockAxis: PropTypes.string,\n lockOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]))]),\n lockToContainerEdges: PropTypes.bool,\n onSortEnd: PropTypes.func,\n onSortMove: PropTypes.func,\n onSortOver: PropTypes.func,\n onSortStart: PropTypes.func,\n pressDelay: PropTypes.number,\n pressThreshold: PropTypes.number,\n keyCodes: PropTypes.shape({\n lift: PropTypes.arrayOf(PropTypes.number),\n drop: PropTypes.arrayOf(PropTypes.number),\n cancel: PropTypes.arrayOf(PropTypes.number),\n up: PropTypes.arrayOf(PropTypes.number),\n down: PropTypes.arrayOf(PropTypes.number)\n }),\n shouldCancelStart: PropTypes.func,\n transitionDuration: PropTypes.number,\n updateBeforeSortStart: PropTypes.func,\n useDragHandle: PropTypes.bool,\n useWindowAsScrollContainer: PropTypes.bool\n};\nvar defaultKeyCodes = {\n lift: [KEYCODE.SPACE],\n drop: [KEYCODE.SPACE],\n cancel: [KEYCODE.ESC],\n up: [KEYCODE.UP, KEYCODE.LEFT],\n down: [KEYCODE.DOWN, KEYCODE.RIGHT]\n};\nvar defaultProps = {\n axis: 'y',\n disableAutoscroll: false,\n distance: 0,\n getHelperDimensions: defaultGetHelperDimensions,\n hideSortableGhost: true,\n lockOffset: '50%',\n lockToContainerEdges: false,\n pressDelay: 0,\n pressThreshold: 5,\n keyCodes: defaultKeyCodes,\n shouldCancelStart: defaultShouldCancelStart,\n transitionDuration: 300,\n useWindowAsScrollContainer: false\n};\nvar omittedProps = Object.keys(propTypes);\nfunction validateProps(props) {\n invariant(!(props.distance && props.pressDelay), 'Attempted to set both `pressDelay` and `distance` on SortableContainer, you may only use one or the other, not both at the same time.');\n}\n\nfunction _finallyRethrows(body, finalizer) {\n try {\n var result = body();\n } catch (e) {\n return finalizer(true, e);\n }\n\n if (result && result.then) {\n return result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n }\n\n return finalizer(false, value);\n}\nvar SortableContext = createContext({\n manager: {}\n});\nfunction sortableContainer(WrappedComponent) {\n var _class, _temp;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n withRef: false\n };\n return _temp = _class = function (_React$Component) {\n _inherits(WithSortableContainer, _React$Component);\n\n function WithSortableContainer(props) {\n var _this;\n\n _classCallCheck(this, WithSortableContainer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(WithSortableContainer).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {});\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleStart\", function (event) {\n var _this$props = _this.props,\n distance = _this$props.distance,\n shouldCancelStart = _this$props.shouldCancelStart;\n\n if (event.button === 2 || shouldCancelStart(event)) {\n return;\n }\n\n _this.touched = true;\n _this.position = getPosition(event);\n var node = closest(event.target, function (el) {\n return el.sortableInfo != null;\n });\n\n if (node && node.sortableInfo && _this.nodeIsChild(node) && !_this.state.sorting) {\n var useDragHandle = _this.props.useDragHandle;\n var _node$sortableInfo = node.sortableInfo,\n index = _node$sortableInfo.index,\n collection = _node$sortableInfo.collection,\n disabled = _node$sortableInfo.disabled;\n\n if (disabled) {\n return;\n }\n\n if (useDragHandle && !closest(event.target, isSortableHandle)) {\n return;\n }\n\n _this.manager.active = {\n collection: collection,\n index: index\n };\n\n if (!isTouchEvent(event) && event.target.tagName === NodeType.Anchor) {\n event.preventDefault();\n }\n\n if (!distance) {\n if (_this.props.pressDelay === 0) {\n _this.handlePress(event);\n } else {\n _this.pressTimer = setTimeout(function () {\n return _this.handlePress(event);\n }, _this.props.pressDelay);\n }\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"nodeIsChild\", function (node) {\n return node.sortableInfo.manager === _this.manager;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleMove\", function (event) {\n var _this$props2 = _this.props,\n distance = _this$props2.distance,\n pressThreshold = _this$props2.pressThreshold;\n\n if (!_this.state.sorting && _this.touched && !_this._awaitingUpdateBeforeSortStart) {\n var position = getPosition(event);\n var delta = {\n x: _this.position.x - position.x,\n y: _this.position.y - position.y\n };\n var combinedDelta = Math.abs(delta.x) + Math.abs(delta.y);\n _this.delta = delta;\n\n if (!distance && (!pressThreshold || combinedDelta >= pressThreshold)) {\n clearTimeout(_this.cancelTimer);\n _this.cancelTimer = setTimeout(_this.cancel, 0);\n } else if (distance && combinedDelta >= distance && _this.manager.isActive()) {\n _this.handlePress(event);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleEnd\", function () {\n _this.touched = false;\n\n _this.cancel();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cancel\", function () {\n var distance = _this.props.distance;\n var sorting = _this.state.sorting;\n\n if (!sorting) {\n if (!distance) {\n clearTimeout(_this.pressTimer);\n }\n\n _this.manager.active = null;\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handlePress\", function (event) {\n try {\n var active = _this.manager.getActive();\n\n var _temp6 = function () {\n if (active) {\n var _temp7 = function _temp7() {\n var index = _node.sortableInfo.index;\n var margin = getElementMargin(_node);\n var gridGap = getContainerGridGap(_this.container);\n\n var containerBoundingRect = _this.scrollContainer.getBoundingClientRect();\n\n var dimensions = _getHelperDimensions({\n index: index,\n node: _node,\n collection: _collection\n });\n\n _this.node = _node;\n _this.margin = margin;\n _this.gridGap = gridGap;\n _this.width = dimensions.width;\n _this.height = dimensions.height;\n _this.marginOffset = {\n x: _this.margin.left + _this.margin.right + _this.gridGap.x,\n y: Math.max(_this.margin.top, _this.margin.bottom, _this.gridGap.y)\n };\n _this.boundingClientRect = _node.getBoundingClientRect();\n _this.containerBoundingRect = containerBoundingRect;\n _this.index = index;\n _this.newIndex = index;\n _this.axis = {\n x: _axis.indexOf('x') >= 0,\n y: _axis.indexOf('y') >= 0\n };\n _this.offsetEdge = getEdgeOffset(_node, _this.container);\n\n if (_isKeySorting) {\n _this.initialOffset = getPosition(_objectSpread({}, event, {\n pageX: _this.boundingClientRect.left,\n pageY: _this.boundingClientRect.top\n }));\n } else {\n _this.initialOffset = getPosition(event);\n }\n\n _this.initialScroll = {\n left: _this.scrollContainer.scrollLeft,\n top: _this.scrollContainer.scrollTop\n };\n _this.initialWindowScroll = {\n left: window.pageXOffset,\n top: window.pageYOffset\n };\n _this.helper = _this.helperContainer.appendChild(cloneNode(_node));\n setInlineStyles(_this.helper, {\n boxSizing: 'border-box',\n height: \"\".concat(_this.height, \"px\"),\n left: \"\".concat(_this.boundingClientRect.left - margin.left, \"px\"),\n pointerEvents: 'none',\n position: 'fixed',\n top: \"\".concat(_this.boundingClientRect.top - margin.top, \"px\"),\n width: \"\".concat(_this.width, \"px\")\n });\n\n if (_isKeySorting) {\n _this.helper.focus();\n }\n\n if (_hideSortableGhost) {\n _this.sortableGhost = _node;\n setInlineStyles(_node, {\n opacity: 0,\n visibility: 'hidden'\n });\n }\n\n _this.minTranslate = {};\n _this.maxTranslate = {};\n\n if (_isKeySorting) {\n var _ref = _useWindowAsScrollContainer ? {\n top: 0,\n left: 0,\n width: _this.contentWindow.innerWidth,\n height: _this.contentWindow.innerHeight\n } : _this.containerBoundingRect,\n containerTop = _ref.top,\n containerLeft = _ref.left,\n containerWidth = _ref.width,\n containerHeight = _ref.height;\n\n var containerBottom = containerTop + containerHeight;\n var containerRight = containerLeft + containerWidth;\n\n if (_this.axis.x) {\n _this.minTranslate.x = containerLeft - _this.boundingClientRect.left;\n _this.maxTranslate.x = containerRight - (_this.boundingClientRect.left + _this.width);\n }\n\n if (_this.axis.y) {\n _this.minTranslate.y = containerTop - _this.boundingClientRect.top;\n _this.maxTranslate.y = containerBottom - (_this.boundingClientRect.top + _this.height);\n }\n } else {\n if (_this.axis.x) {\n _this.minTranslate.x = (_useWindowAsScrollContainer ? 0 : containerBoundingRect.left) - _this.boundingClientRect.left - _this.width / 2;\n _this.maxTranslate.x = (_useWindowAsScrollContainer ? _this.contentWindow.innerWidth : containerBoundingRect.left + containerBoundingRect.width) - _this.boundingClientRect.left - _this.width / 2;\n }\n\n if (_this.axis.y) {\n _this.minTranslate.y = (_useWindowAsScrollContainer ? 0 : containerBoundingRect.top) - _this.boundingClientRect.top - _this.height / 2;\n _this.maxTranslate.y = (_useWindowAsScrollContainer ? _this.contentWindow.innerHeight : containerBoundingRect.top + containerBoundingRect.height) - _this.boundingClientRect.top - _this.height / 2;\n }\n }\n\n if (_helperClass) {\n _helperClass.split(' ').forEach(function (className) {\n return _this.helper.classList.add(className);\n });\n }\n\n _this.listenerNode = event.touches ? event.target : _this.contentWindow;\n\n if (_isKeySorting) {\n _this.listenerNode.addEventListener('wheel', _this.handleKeyEnd, true);\n\n _this.listenerNode.addEventListener('mousedown', _this.handleKeyEnd, true);\n\n _this.listenerNode.addEventListener('keydown', _this.handleKeyDown);\n } else {\n events.move.forEach(function (eventName) {\n return _this.listenerNode.addEventListener(eventName, _this.handleSortMove, false);\n });\n events.end.forEach(function (eventName) {\n return _this.listenerNode.addEventListener(eventName, _this.handleSortEnd, false);\n });\n }\n\n _this.setState({\n sorting: true,\n sortingIndex: index\n });\n\n if (_onSortStart) {\n _onSortStart({\n node: _node,\n index: index,\n collection: _collection,\n isKeySorting: _isKeySorting,\n nodes: _this.manager.getOrderedRefs(),\n helper: _this.helper\n }, event);\n }\n\n if (_isKeySorting) {\n _this.keyMove(0);\n }\n };\n\n var _this$props3 = _this.props,\n _axis = _this$props3.axis,\n _getHelperDimensions = _this$props3.getHelperDimensions,\n _helperClass = _this$props3.helperClass,\n _hideSortableGhost = _this$props3.hideSortableGhost,\n updateBeforeSortStart = _this$props3.updateBeforeSortStart,\n _onSortStart = _this$props3.onSortStart,\n _useWindowAsScrollContainer = _this$props3.useWindowAsScrollContainer;\n var _node = active.node,\n _collection = active.collection;\n var _isKeySorting = _this.manager.isKeySorting;\n\n var _temp8 = function () {\n if (typeof updateBeforeSortStart === 'function') {\n _this._awaitingUpdateBeforeSortStart = true;\n\n var _temp9 = _finallyRethrows(function () {\n var index = _node.sortableInfo.index;\n return Promise.resolve(updateBeforeSortStart({\n collection: _collection,\n index: index,\n node: _node,\n isKeySorting: _isKeySorting\n }, event)).then(function () {});\n }, function (_wasThrown, _result) {\n _this._awaitingUpdateBeforeSortStart = false;\n if (_wasThrown) throw _result;\n return _result;\n });\n\n if (_temp9 && _temp9.then) return _temp9.then(function () {});\n }\n }();\n\n return _temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8);\n }\n }();\n\n return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);\n } catch (e) {\n return Promise.reject(e);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleSortMove\", function (event) {\n var onSortMove = _this.props.onSortMove;\n\n if (typeof event.preventDefault === 'function' && event.cancelable) {\n event.preventDefault();\n }\n\n _this.updateHelperPosition(event);\n\n _this.animateNodes();\n\n _this.autoscroll();\n\n if (onSortMove) {\n onSortMove(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleSortEnd\", function (event) {\n var _this$props4 = _this.props,\n hideSortableGhost = _this$props4.hideSortableGhost,\n onSortEnd = _this$props4.onSortEnd;\n var _this$manager = _this.manager,\n collection = _this$manager.active.collection,\n isKeySorting = _this$manager.isKeySorting;\n\n var nodes = _this.manager.getOrderedRefs();\n\n if (_this.listenerNode) {\n if (isKeySorting) {\n _this.listenerNode.removeEventListener('wheel', _this.handleKeyEnd, true);\n\n _this.listenerNode.removeEventListener('mousedown', _this.handleKeyEnd, true);\n\n _this.listenerNode.removeEventListener('keydown', _this.handleKeyDown);\n } else {\n events.move.forEach(function (eventName) {\n return _this.listenerNode.removeEventListener(eventName, _this.handleSortMove);\n });\n events.end.forEach(function (eventName) {\n return _this.listenerNode.removeEventListener(eventName, _this.handleSortEnd);\n });\n }\n }\n\n _this.helper.parentNode.removeChild(_this.helper);\n\n if (hideSortableGhost && _this.sortableGhost) {\n setInlineStyles(_this.sortableGhost, {\n opacity: '',\n visibility: ''\n });\n }\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n var _node2 = nodes[i];\n var el = _node2.node;\n _node2.edgeOffset = null;\n _node2.boundingClientRect = null;\n setTranslate3d(el, null);\n setTransitionDuration(el, null);\n _node2.translate = null;\n }\n\n _this.autoScroller.clear();\n\n _this.manager.active = null;\n _this.manager.isKeySorting = false;\n\n _this.setState({\n sorting: false,\n sortingIndex: null\n });\n\n if (typeof onSortEnd === 'function') {\n onSortEnd({\n collection: collection,\n newIndex: _this.newIndex,\n oldIndex: _this.index,\n isKeySorting: isKeySorting,\n nodes: nodes\n }, event);\n }\n\n _this.touched = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"autoscroll\", function () {\n var disableAutoscroll = _this.props.disableAutoscroll;\n var isKeySorting = _this.manager.isKeySorting;\n\n if (disableAutoscroll) {\n _this.autoScroller.clear();\n\n return;\n }\n\n if (isKeySorting) {\n var translate = _objectSpread({}, _this.translate);\n\n var scrollX = 0;\n var scrollY = 0;\n\n if (_this.axis.x) {\n translate.x = Math.min(_this.maxTranslate.x, Math.max(_this.minTranslate.x, _this.translate.x));\n scrollX = _this.translate.x - translate.x;\n }\n\n if (_this.axis.y) {\n translate.y = Math.min(_this.maxTranslate.y, Math.max(_this.minTranslate.y, _this.translate.y));\n scrollY = _this.translate.y - translate.y;\n }\n\n _this.translate = translate;\n setTranslate3d(_this.helper, _this.translate);\n _this.scrollContainer.scrollLeft += scrollX;\n _this.scrollContainer.scrollTop += scrollY;\n return;\n }\n\n _this.autoScroller.update({\n height: _this.height,\n maxTranslate: _this.maxTranslate,\n minTranslate: _this.minTranslate,\n translate: _this.translate,\n width: _this.width\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onAutoScroll\", function (offset) {\n _this.translate.x += offset.left;\n _this.translate.y += offset.top;\n\n _this.animateNodes();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleKeyDown\", function (event) {\n var keyCode = event.keyCode;\n var _this$props5 = _this.props,\n shouldCancelStart = _this$props5.shouldCancelStart,\n _this$props5$keyCodes = _this$props5.keyCodes,\n customKeyCodes = _this$props5$keyCodes === void 0 ? {} : _this$props5$keyCodes;\n\n var keyCodes = _objectSpread({}, defaultKeyCodes, customKeyCodes);\n\n if (_this.manager.active && !_this.manager.isKeySorting || !_this.manager.active && (!keyCodes.lift.includes(keyCode) || shouldCancelStart(event) || !_this.isValidSortingTarget(event))) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n if (keyCodes.lift.includes(keyCode) && !_this.manager.active) {\n _this.keyLift(event);\n } else if (keyCodes.drop.includes(keyCode) && _this.manager.active) {\n _this.keyDrop(event);\n } else if (keyCodes.cancel.includes(keyCode)) {\n _this.newIndex = _this.manager.active.index;\n\n _this.keyDrop(event);\n } else if (keyCodes.up.includes(keyCode)) {\n _this.keyMove(-1);\n } else if (keyCodes.down.includes(keyCode)) {\n _this.keyMove(1);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"keyLift\", function (event) {\n var target = event.target;\n var node = closest(target, function (el) {\n return el.sortableInfo != null;\n });\n var _node$sortableInfo2 = node.sortableInfo,\n index = _node$sortableInfo2.index,\n collection = _node$sortableInfo2.collection;\n _this.initialFocusedNode = target;\n _this.manager.isKeySorting = true;\n _this.manager.active = {\n index: index,\n collection: collection\n };\n\n _this.handlePress(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"keyMove\", function (shift) {\n var nodes = _this.manager.getOrderedRefs();\n\n var lastIndex = nodes[nodes.length - 1].node.sortableInfo.index;\n var newIndex = _this.newIndex + shift;\n var prevIndex = _this.newIndex;\n\n if (newIndex < 0 || newIndex > lastIndex) {\n return;\n }\n\n _this.prevIndex = prevIndex;\n _this.newIndex = newIndex;\n var targetIndex = getTargetIndex(_this.newIndex, _this.prevIndex, _this.index);\n var target = nodes.find(function (_ref2) {\n var node = _ref2.node;\n return node.sortableInfo.index === targetIndex;\n });\n var targetNode = target.node;\n var scrollDelta = _this.containerScrollDelta;\n var targetBoundingClientRect = target.boundingClientRect || getScrollAdjustedBoundingClientRect(targetNode, scrollDelta);\n var targetTranslate = target.translate || {\n x: 0,\n y: 0\n };\n var targetPosition = {\n top: targetBoundingClientRect.top + targetTranslate.y - scrollDelta.top,\n left: targetBoundingClientRect.left + targetTranslate.x - scrollDelta.left\n };\n var shouldAdjustForSize = prevIndex < newIndex;\n var sizeAdjustment = {\n x: shouldAdjustForSize && _this.axis.x ? targetNode.offsetWidth - _this.width : 0,\n y: shouldAdjustForSize && _this.axis.y ? targetNode.offsetHeight - _this.height : 0\n };\n\n _this.handleSortMove({\n pageX: targetPosition.left + sizeAdjustment.x,\n pageY: targetPosition.top + sizeAdjustment.y,\n ignoreTransition: shift === 0\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"keyDrop\", function (event) {\n _this.handleSortEnd(event);\n\n if (_this.initialFocusedNode) {\n _this.initialFocusedNode.focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleKeyEnd\", function (event) {\n if (_this.manager.active) {\n _this.keyDrop(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isValidSortingTarget\", function (event) {\n var useDragHandle = _this.props.useDragHandle;\n var target = event.target;\n var node = closest(target, function (el) {\n return el.sortableInfo != null;\n });\n return node && node.sortableInfo && !node.sortableInfo.disabled && (useDragHandle ? isSortableHandle(target) : target.sortableInfo);\n });\n\n var manager = new Manager();\n validateProps(props);\n _this.manager = manager;\n _this.wrappedInstance = createRef();\n _this.sortableContextValue = {\n manager: manager\n };\n _this.events = {\n end: _this.handleEnd,\n move: _this.handleMove,\n start: _this.handleStart\n };\n return _this;\n }\n\n _createClass(WithSortableContainer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n var useWindowAsScrollContainer = this.props.useWindowAsScrollContainer;\n var container = this.getContainer();\n Promise.resolve(container).then(function (containerNode) {\n _this2.container = containerNode;\n _this2.document = _this2.container.ownerDocument || document;\n var contentWindow = _this2.props.contentWindow || _this2.document.defaultView || window;\n _this2.contentWindow = typeof contentWindow === 'function' ? contentWindow() : contentWindow;\n _this2.scrollContainer = useWindowAsScrollContainer ? _this2.document.scrollingElement || _this2.document.documentElement : getScrollingParent(_this2.container) || _this2.container;\n _this2.autoScroller = new AutoScroller(_this2.scrollContainer, _this2.onAutoScroll);\n Object.keys(_this2.events).forEach(function (key) {\n return events[key].forEach(function (eventName) {\n return _this2.container.addEventListener(eventName, _this2.events[key], false);\n });\n });\n\n _this2.container.addEventListener('keydown', _this2.handleKeyDown);\n });\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this3 = this;\n\n if (this.helper && this.helper.parentNode) {\n this.helper.parentNode.removeChild(this.helper);\n }\n\n if (!this.container) {\n return;\n }\n\n Object.keys(this.events).forEach(function (key) {\n return events[key].forEach(function (eventName) {\n return _this3.container.removeEventListener(eventName, _this3.events[key]);\n });\n });\n this.container.removeEventListener('keydown', this.handleKeyDown);\n }\n }, {\n key: \"updateHelperPosition\",\n value: function updateHelperPosition(event) {\n var _this$props6 = this.props,\n lockAxis = _this$props6.lockAxis,\n lockOffset = _this$props6.lockOffset,\n lockToContainerEdges = _this$props6.lockToContainerEdges,\n transitionDuration = _this$props6.transitionDuration,\n _this$props6$keyboard = _this$props6.keyboardSortingTransitionDuration,\n keyboardSortingTransitionDuration = _this$props6$keyboard === void 0 ? transitionDuration : _this$props6$keyboard;\n var isKeySorting = this.manager.isKeySorting;\n var ignoreTransition = event.ignoreTransition;\n var offset = getPosition(event);\n var translate = {\n x: offset.x - this.initialOffset.x,\n y: offset.y - this.initialOffset.y\n };\n translate.y -= window.pageYOffset - this.initialWindowScroll.top;\n translate.x -= window.pageXOffset - this.initialWindowScroll.left;\n this.translate = translate;\n\n if (lockToContainerEdges) {\n var _getLockPixelOffsets = getLockPixelOffsets({\n height: this.height,\n lockOffset: lockOffset,\n width: this.width\n }),\n _getLockPixelOffsets2 = _slicedToArray(_getLockPixelOffsets, 2),\n minLockOffset = _getLockPixelOffsets2[0],\n maxLockOffset = _getLockPixelOffsets2[1];\n\n var minOffset = {\n x: this.width / 2 - minLockOffset.x,\n y: this.height / 2 - minLockOffset.y\n };\n var maxOffset = {\n x: this.width / 2 - maxLockOffset.x,\n y: this.height / 2 - maxLockOffset.y\n };\n translate.x = limit(this.minTranslate.x + minOffset.x, this.maxTranslate.x - maxOffset.x, translate.x);\n translate.y = limit(this.minTranslate.y + minOffset.y, this.maxTranslate.y - maxOffset.y, translate.y);\n }\n\n if (lockAxis === 'x') {\n translate.y = 0;\n } else if (lockAxis === 'y') {\n translate.x = 0;\n }\n\n if (isKeySorting && keyboardSortingTransitionDuration && !ignoreTransition) {\n setTransitionDuration(this.helper, keyboardSortingTransitionDuration);\n }\n\n setTranslate3d(this.helper, translate);\n }\n }, {\n key: \"animateNodes\",\n value: function animateNodes() {\n var _this$props7 = this.props,\n transitionDuration = _this$props7.transitionDuration,\n hideSortableGhost = _this$props7.hideSortableGhost,\n onSortOver = _this$props7.onSortOver;\n var containerScrollDelta = this.containerScrollDelta,\n windowScrollDelta = this.windowScrollDelta;\n var nodes = this.manager.getOrderedRefs();\n var sortingOffset = {\n left: this.offsetEdge.left + this.translate.x + containerScrollDelta.left,\n top: this.offsetEdge.top + this.translate.y + containerScrollDelta.top\n };\n var isKeySorting = this.manager.isKeySorting;\n var prevIndex = this.newIndex;\n this.newIndex = null;\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n var _node3 = nodes[i].node;\n var index = _node3.sortableInfo.index;\n var width = _node3.offsetWidth;\n var height = _node3.offsetHeight;\n var offset = {\n height: this.height > height ? height / 2 : this.height / 2,\n width: this.width > width ? width / 2 : this.width / 2\n };\n var mustShiftBackward = isKeySorting && index > this.index && index <= prevIndex;\n var mustShiftForward = isKeySorting && index < this.index && index >= prevIndex;\n var translate = {\n x: 0,\n y: 0\n };\n var edgeOffset = nodes[i].edgeOffset;\n\n if (!edgeOffset) {\n edgeOffset = getEdgeOffset(_node3, this.container);\n nodes[i].edgeOffset = edgeOffset;\n\n if (isKeySorting) {\n nodes[i].boundingClientRect = getScrollAdjustedBoundingClientRect(_node3, containerScrollDelta);\n }\n }\n\n var nextNode = i < nodes.length - 1 && nodes[i + 1];\n var prevNode = i > 0 && nodes[i - 1];\n\n if (nextNode && !nextNode.edgeOffset) {\n nextNode.edgeOffset = getEdgeOffset(nextNode.node, this.container);\n\n if (isKeySorting) {\n nextNode.boundingClientRect = getScrollAdjustedBoundingClientRect(nextNode.node, containerScrollDelta);\n }\n }\n\n if (index === this.index) {\n if (hideSortableGhost) {\n this.sortableGhost = _node3;\n setInlineStyles(_node3, {\n opacity: 0,\n visibility: 'hidden'\n });\n }\n\n continue;\n }\n\n if (transitionDuration) {\n setTransitionDuration(_node3, transitionDuration);\n }\n\n if (this.axis.x) {\n if (this.axis.y) {\n if (mustShiftForward || index < this.index && (sortingOffset.left + windowScrollDelta.left - offset.width <= edgeOffset.left && sortingOffset.top + windowScrollDelta.top <= edgeOffset.top + offset.height || sortingOffset.top + windowScrollDelta.top + offset.height <= edgeOffset.top)) {\n translate.x = this.width + this.marginOffset.x;\n\n if (edgeOffset.left + translate.x > this.containerBoundingRect.width - offset.width) {\n if (nextNode) {\n translate.x = nextNode.edgeOffset.left - edgeOffset.left;\n translate.y = nextNode.edgeOffset.top - edgeOffset.top;\n }\n }\n\n if (this.newIndex === null) {\n this.newIndex = index;\n }\n } else if (mustShiftBackward || index > this.index && (sortingOffset.left + windowScrollDelta.left + offset.width >= edgeOffset.left && sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top || sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top + height)) {\n translate.x = -(this.width + this.marginOffset.x);\n\n if (edgeOffset.left + translate.x < this.containerBoundingRect.left + offset.width) {\n if (prevNode) {\n translate.x = prevNode.edgeOffset.left - edgeOffset.left;\n translate.y = prevNode.edgeOffset.top - edgeOffset.top;\n }\n }\n\n this.newIndex = index;\n }\n } else {\n if (mustShiftBackward || index > this.index && sortingOffset.left + windowScrollDelta.left + offset.width >= edgeOffset.left) {\n translate.x = -(this.width + this.marginOffset.x);\n this.newIndex = index;\n } else if (mustShiftForward || index < this.index && sortingOffset.left + windowScrollDelta.left <= edgeOffset.left + offset.width) {\n translate.x = this.width + this.marginOffset.x;\n\n if (this.newIndex == null) {\n this.newIndex = index;\n }\n }\n }\n } else if (this.axis.y) {\n if (mustShiftBackward || index > this.index && sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top) {\n translate.y = -(this.height + this.marginOffset.y);\n this.newIndex = index;\n } else if (mustShiftForward || index < this.index && sortingOffset.top + windowScrollDelta.top <= edgeOffset.top + offset.height) {\n translate.y = this.height + this.marginOffset.y;\n\n if (this.newIndex == null) {\n this.newIndex = index;\n }\n }\n }\n\n setTranslate3d(_node3, translate);\n nodes[i].translate = translate;\n }\n\n if (this.newIndex == null) {\n this.newIndex = this.index;\n }\n\n if (isKeySorting) {\n this.newIndex = prevIndex;\n }\n\n var oldIndex = isKeySorting ? this.prevIndex : prevIndex;\n\n if (onSortOver && this.newIndex !== oldIndex) {\n onSortOver({\n collection: this.manager.active.collection,\n index: this.index,\n newIndex: this.newIndex,\n oldIndex: oldIndex,\n isKeySorting: isKeySorting,\n nodes: nodes,\n helper: this.helper\n });\n }\n }\n }, {\n key: \"getWrappedInstance\",\n value: function getWrappedInstance() {\n invariant(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableContainer() call');\n return this.wrappedInstance.current;\n }\n }, {\n key: \"getContainer\",\n value: function getContainer() {\n var getContainer = this.props.getContainer;\n\n if (typeof getContainer !== 'function') {\n return findDOMNode(this);\n }\n\n return getContainer(config.withRef ? this.getWrappedInstance() : undefined);\n }\n }, {\n key: \"render\",\n value: function render() {\n var ref = config.withRef ? this.wrappedInstance : null;\n return createElement(SortableContext.Provider, {\n value: this.sortableContextValue\n }, createElement(WrappedComponent, _extends({\n ref: ref\n }, omit(this.props, omittedProps))));\n }\n }, {\n key: \"helperContainer\",\n get: function get() {\n var helperContainer = this.props.helperContainer;\n\n if (typeof helperContainer === 'function') {\n return helperContainer();\n }\n\n return this.props.helperContainer || this.document.body;\n }\n }, {\n key: \"containerScrollDelta\",\n get: function get() {\n var useWindowAsScrollContainer = this.props.useWindowAsScrollContainer;\n\n if (useWindowAsScrollContainer) {\n return {\n left: 0,\n top: 0\n };\n }\n\n return {\n left: this.scrollContainer.scrollLeft - this.initialScroll.left,\n top: this.scrollContainer.scrollTop - this.initialScroll.top\n };\n }\n }, {\n key: \"windowScrollDelta\",\n get: function get() {\n return {\n left: this.contentWindow.pageXOffset - this.initialWindowScroll.left,\n top: this.contentWindow.pageYOffset - this.initialWindowScroll.top\n };\n }\n }]);\n\n return WithSortableContainer;\n }(Component), _defineProperty(_class, \"displayName\", provideDisplayName('sortableList', WrappedComponent)), _defineProperty(_class, \"defaultProps\", defaultProps), _defineProperty(_class, \"propTypes\", propTypes), _temp;\n}\n\nvar propTypes$1 = {\n index: PropTypes.number.isRequired,\n collection: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n disabled: PropTypes.bool\n};\nvar omittedProps$1 = Object.keys(propTypes$1);\nfunction sortableElement(WrappedComponent) {\n var _class, _temp;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n withRef: false\n };\n return _temp = _class = function (_React$Component) {\n _inherits(WithSortableElement, _React$Component);\n\n function WithSortableElement() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, WithSortableElement);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(WithSortableElement)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"wrappedInstance\", createRef());\n\n return _this;\n }\n\n _createClass(WithSortableElement, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.register();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.node) {\n if (prevProps.index !== this.props.index) {\n this.node.sortableInfo.index = this.props.index;\n }\n\n if (prevProps.disabled !== this.props.disabled) {\n this.node.sortableInfo.disabled = this.props.disabled;\n }\n }\n\n if (prevProps.collection !== this.props.collection) {\n this.unregister(prevProps.collection);\n this.register();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.unregister();\n }\n }, {\n key: \"register\",\n value: function register() {\n var _this$props = this.props,\n collection = _this$props.collection,\n disabled = _this$props.disabled,\n index = _this$props.index;\n var node = findDOMNode(this);\n node.sortableInfo = {\n collection: collection,\n disabled: disabled,\n index: index,\n manager: this.context.manager\n };\n this.node = node;\n this.ref = {\n node: node\n };\n this.context.manager.add(collection, this.ref);\n }\n }, {\n key: \"unregister\",\n value: function unregister() {\n var collection = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.collection;\n this.context.manager.remove(collection, this.ref);\n }\n }, {\n key: \"getWrappedInstance\",\n value: function getWrappedInstance() {\n invariant(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableElement() call');\n return this.wrappedInstance.current;\n }\n }, {\n key: \"render\",\n value: function render() {\n var ref = config.withRef ? this.wrappedInstance : null;\n return createElement(WrappedComponent, _extends({\n ref: ref\n }, omit(this.props, omittedProps$1)));\n }\n }]);\n\n return WithSortableElement;\n }(Component), _defineProperty(_class, \"displayName\", provideDisplayName('sortableElement', WrappedComponent)), _defineProperty(_class, \"contextType\", SortableContext), _defineProperty(_class, \"propTypes\", propTypes$1), _defineProperty(_class, \"defaultProps\", {\n collection: 0\n }), _temp;\n}\n\nexport { sortableContainer as SortableContainer, sortableContainer, sortableElement as SortableElement, sortableElement, sortableHandle as SortableHandle, sortableHandle, arrayMove };\n","import React, { useEffect, useState } from \"react\";\nimport { CloseOutlined } from \"@ant-design/icons\";\nimport styles from \"./index.module.css\";\nimport { removeItemFromList } from \"./QuickVisitMenu\";\nimport { Tooltip } from \"antd\";\nimport {\n SortableContainer,\n SortableElement,\n SortableHandle,\n} from \"react-sortable-hoc\";\nimport { K, NS_BASIC_BRICKS } from \"../i18n/constants\";\nimport { useTranslation } from \"react-i18next\";\nexport function arrayMoveImmutable(array, fromIndex, toIndex) {\n if (fromIndex === toIndex) {\n return array;\n }\n const newArray = [...array];\n const startIndex = fromIndex < 0 ? newArray.length + fromIndex : fromIndex;\n\n if (startIndex >= 0 && startIndex < newArray.length) {\n const endIndex = toIndex < 0 ? newArray.length + toIndex : toIndex;\n const [item] = newArray.splice(fromIndex, 1);\n newArray.splice(endIndex, 0, item);\n }\n return newArray;\n}\n\nexport function FavouriteMenu({\n menus,\n handleMenuRemove,\n handleMenuDrag,\n handleMenuClick,\n}): React.ReactElement {\n const [list, setList] = useState([]);\n const { t } = useTranslation(NS_BASIC_BRICKS);\n useEffect(() => {\n setList(menus);\n }, [menus]);\n\n const removeItem = (menu) => {\n const newList = removeItemFromList(list, menu);\n setList(newList);\n handleMenuRemove(newList);\n };\n const onSortEnd = ({ oldIndex, newIndex }) => {\n const newList = arrayMoveImmutable(list, oldIndex, newIndex);\n setList(newList);\n handleMenuDrag(newList, oldIndex, newIndex);\n };\n const SortableWrapper = SortableContainer(({ children }) => {\n return <div className={styles.container}>{children}</div>;\n });\n const DragHandle = SortableHandle(() => (\n <span className={styles.dragHandler}>:::</span>\n ));\n\n const SortableItem = SortableElement(({ menu, removeItem, clickItem }) => (\n <div className={styles.favouriteTag}>\n <div className={styles.textContainer} onClick={() => clickItem(menu)}>\n <Tooltip\n mouseLeaveDelay={2}\n trigger={menu.text?.length > 16 ? \"hover\" : []}\n title={menu.text}\n >\n {menu.text}\n </Tooltip>\n </div>\n <div className={styles.operation}>\n <Tooltip title={t(K.REMOVE_FROM_QUICK_ACCESS)}>\n <CloseOutlined\n className={styles.deleteBtn}\n onClick={() => removeItem(menu)}\n />\n </Tooltip>\n <DragHandle />\n </div>\n </div>\n ));\n return (\n <SortableWrapper\n onSortEnd={onSortEnd}\n helperClass=\"sortableHelper\"\n axis=\"xy\"\n useDragHandle\n >\n {list.map((menu, index) => (\n <SortableItem\n key={`item-${menu.text}`}\n index={index}\n menu={menu}\n removeItem={removeItem}\n clickItem={handleMenuClick}\n />\n ))}\n </SortableWrapper>\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Drawer, Input } from \"antd\";\nimport styles from \"./index.module.css\";\nimport { MenuTag } from \"./MenuTag\";\nimport { FavouriteMenu } from \"./FavouriteMenu\";\nimport { reject, isEmpty } from \"lodash\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { SearchOutlined, CloseCircleFilled } from \"@ant-design/icons\";\nimport { K, NS_BASIC_BRICKS } from \"../i18n/constants\";\nimport { useTranslation } from \"react-i18next\";\ninterface QuickVisitMenuProps {\n buttonName: string;\n searchPlaceholder?: string;\n menu: Record<string, unknown>;\n favouriteMenus?: Record<string, unknown>[];\n handleMenuDrag: (items: Record<string, unknown>[]) => void;\n handleMenuRemove: (items: Record<string, unknown>[]) => void;\n handleMenuAdd: (items: Record<string, unknown>[]) => void;\n handleMenuClick: (item: Record<string, unknown>) => void;\n handleCollectFailed?: () => void;\n maxFavouriteCount?: number;\n}\ninterface MenuContainerProps {\n searchPlaceholder?: string;\n allMenus: Record<string, unknown>[];\n favouriteMenus: Record<string, unknown>[];\n handleMenuDrag?: (items: Record<string, unknown>[]) => void;\n handleMenuRemove?: (items: Record<string, unknown>[]) => void;\n handleMenuAdd?: (items: Record<string, unknown>[]) => void;\n handleMenuClick?: (item: Record<string, unknown>) => void;\n handleCollectFailed?: () => void;\n maxFavouriteCount?: number;\n}\n\nexport function filterMenuTitle(title: string, key: string) {\n return title.toLowerCase().includes(key.trim().toLocaleLowerCase());\n}\nexport function flagFavourite(favouriteMenus: Record<string, unknown>[], menu) {\n return favouriteMenus.length\n ? !!favouriteMenus.find((item) => menuIsSame(item, menu))\n : false;\n}\nexport function flattenMenus(menu, favouriteMenus = []) {\n const allMenus = [];\n const { menuItems } = menu;\n menuItems.forEach((menuItem) => {\n const { items: secondItems = [] } = menuItem;\n secondItems.forEach((secondItem) => {\n if (!secondItem.items?.length) {\n allMenus.push({\n ...secondItem,\n categoryTitle: menuItem.title,\n isFavourite: flagFavourite(favouriteMenus, secondItem),\n });\n } else {\n const { items: thirdItems } = secondItem;\n allMenus.push(\n ...thirdItems.map((thirdItem) => {\n return {\n ...thirdItem,\n groupTitle: secondItem.title,\n categoryTitle: menuItem.title,\n isFavourite: flagFavourite(favouriteMenus, thirdItem),\n };\n })\n );\n }\n });\n });\n return allMenus;\n}\nexport function menuIsSame(menu1, menu2) {\n return (\n menu1.text === menu2.text &&\n (menu1.to === menu2.to || menu1.href === menu2.href)\n );\n}\nexport function removeItemFromList(list, item) {\n return reject(list, (menu) => menuIsSame(menu, item));\n}\nexport function searchMenu(menus, key: string) {\n if (key.trim() === \"\") {\n return [];\n }\n const result = menus.filter((menu) => {\n return (\n filterMenuTitle(menu.text, key) ||\n (menu.categoryTitle && filterMenuTitle(menu.categoryTitle, key)) ||\n (menu.groupTitle && filterMenuTitle(menu.groupTitle, key))\n );\n });\n return result;\n}\nexport function MenuContainer({\n searchPlaceholder,\n allMenus,\n favouriteMenus,\n handleMenuAdd,\n handleMenuRemove,\n handleMenuClick,\n handleMenuDrag,\n handleCollectFailed,\n maxFavouriteCount,\n}: MenuContainerProps): React.ReactElement {\n const [isSearching, setIsSearching] = useState(false);\n const [filterMenus, setFilterMenus] = useState([]);\n const [searchKey, setSearchKey] = useState(\"\");\n const [favouriteCount, setFavouriteCount] = useState(0);\n const { t } = useTranslation(NS_BASIC_BRICKS);\n useEffect(() => {\n setFavouriteCount(favouriteMenus?.length ?? 0);\n }, [favouriteMenus]);\n const onSearch = (event) => {\n setSearchKey(event.target.value);\n setIsSearching(!!event.target.value);\n const searchResult = searchMenu(allMenus, event.target.value);\n setFilterMenus(searchResult);\n };\n const handleCollect = (item) => {\n const newFavouriteList = [...favouriteMenus, item];\n handleMenuAdd(newFavouriteList);\n };\n const handleCollectMenuFailed = () => {\n handleCollectFailed();\n };\n const removeSingleMenu = (item) => {\n const newFavouriteList = removeItemFromList(favouriteMenus, item);\n handleMenuRemove(newFavouriteList);\n };\n const removeFavouriteItem = (newFavouriteList) => {\n handleMenuRemove(newFavouriteList);\n };\n const reorderFavouriteItem = (\n newFavouriteList,\n oldIndex: number,\n newIndex: number\n ) => {\n if (oldIndex !== newIndex) {\n handleMenuDrag(newFavouriteList);\n }\n };\n return (\n <div className={styles.outerWrapper}>\n <div className={styles.menuSearchContainer}>\n <Input\n className={styles.searchInput}\n prefix={<SearchOutlined className={styles.searchIcon} />}\n onChange={onSearch}\n placeholder={searchPlaceholder}\n value={searchKey}\n />\n {!isEmpty(searchKey) && (\n <CloseCircleFilled\n className={styles.clearBtn}\n onClick={() => {\n setSearchKey(\"\");\n onSearch({ target: { value: \"\" } });\n }}\n />\n )}\n </div>\n {!isSearching && (\n <div>\n <div className={styles.titleWrapper} data-testid=\"quick-visit\">\n <div className={styles.title}>{t(K.QUICK_ACCESS)}</div>\n </div>\n {favouriteMenus?.length ? (\n <FavouriteMenu\n menus={favouriteMenus}\n handleMenuRemove={removeFavouriteItem}\n handleMenuDrag={reorderFavouriteItem}\n handleMenuClick={handleMenuClick}\n />\n ) : (\n <div className={styles.favouriteEmpty}>{t(K.NO_VISIT_ACCESS)}</div>\n )}\n </div>\n )}\n {isSearching && (\n <div className={styles.titleWrapper}>\n <div className={styles.title}>{t(K.RECOMMEND_SEARCH)}</div>\n {!filterMenus?.length && isSearching && (\n <BrickAsComponent\n useBrick={{\n brick: \"presentational-bricks.brick-illustration\",\n properties: {\n name: \"no-content\",\n category: \"default\",\n footer: {\n text: t(K.SEARCH_RESULT_EMPTY),\n },\n },\n }}\n />\n )}\n <div className={styles.container}>\n {filterMenus.map((item) => (\n <MenuTag\n data-testid=\"menu-tag\"\n menu={item}\n key={item.text}\n handleCollect={handleCollect}\n handleMenuClick={handleMenuClick}\n handleMenuRemove={removeSingleMenu}\n favouriteCount={favouriteCount}\n maxFavouriteCount={maxFavouriteCount}\n handleCollectFailed={handleCollectMenuFailed}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\nexport function getContainer() {\n return document.getElementById(\"quickVisitContainer\");\n}\nexport function QuickVisitMenu(props: QuickVisitMenuProps): React.ReactElement {\n const {\n buttonName,\n menu,\n favouriteMenus,\n handleMenuDrag,\n handleMenuRemove,\n handleMenuAdd,\n handleMenuClick,\n searchPlaceholder,\n handleCollectFailed,\n maxFavouriteCount,\n } = props;\n\n const [allMenus, setAllMenus] = useState([]);\n const { t } = useTranslation(NS_BASIC_BRICKS);\n useEffect(() => {\n setAllMenus(flattenMenus(menu, favouriteMenus));\n }, [favouriteMenus, menu]);\n let timer;\n const [drawerVisible, setDrawerVisible] = useState(false);\n function triggerDrawerVisible(visible: boolean) {\n if (!visible && drawerVisible) {\n timer = setTimeout(() => {\n setDrawerVisible(false);\n }, 100);\n } else {\n setDrawerVisible(true);\n if (timer) {\n clearTimeout(timer);\n }\n }\n }\n\n const removeMenuItem = (favouriteList) => {\n handleMenuRemove(favouriteList);\n };\n\n return (\n <div\n data-testid=\"wrapper\"\n className={styles.menuPopover}\n onMouseEnter={() => triggerDrawerVisible(true)}\n onMouseLeave={() => {\n if (drawerVisible) {\n triggerDrawerVisible(false);\n }\n }}\n >\n <div className={styles.appNameWrapper}>\n <span data-testid=\"buttonName\" className={styles.appName}>\n {buttonName}\n </span>\n </div>\n <div id=\"quickVisitContainer\" className={styles.quickVisitContainer}>\n <Drawer\n visible={drawerVisible}\n title={null}\n placement=\"top\"\n maskClosable={true}\n closable={false}\n onClose={() => setDrawerVisible(false)}\n className={styles.popoverInMenu}\n getContainer={getContainer}\n height={\n window.innerHeight * 0.6 > 664\n ? 640\n : window.innerHeight * 0.6 < 240\n ? 226\n : window.innerHeight * 0.6 - 24\n }\n zIndex={-1}\n >\n <MenuContainer\n allMenus={allMenus}\n searchPlaceholder={searchPlaceholder ?? t(K.ENTER_KEY_WORDS)}\n favouriteMenus={favouriteMenus}\n handleMenuAdd={handleMenuAdd}\n handleMenuRemove={removeMenuItem}\n handleMenuDrag={handleMenuDrag}\n handleMenuClick={handleMenuClick}\n handleCollectFailed={handleCollectFailed}\n maxFavouriteCount={maxFavouriteCount}\n />\n </Drawer>\n </div>\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 { QuickVisitMenu } from \"./QuickVisitMenu\";\n\n/**\n * @id basic-bricks.quick-visit-menu\n * @author annzhang\n * @history\n * 1.x.0: 新增构件 `basic-bricks.quick-visit-menu`\n * @docKind brick\n * @deprecated\n * @memo\n * 该构件已迁移至 `nav-legacy` 包中维护,后续版本将不再维护该构件,请使用 `nav-legacy.menu-bar` 构件\n * @noInheritDoc\n */\nexport class QuickVisitMenuElement extends UpdatingElement {\n /**\n * @default\n * @required true\n * @description 菜单数据,可通过APP.getMenu(menuId)获取\n */\n @property({ attribute: false }) menu: Record<string, any>;\n /**\n * @default\n * @required true\n * @description 按钮文本\n */\n @property({ attribute: false }) buttonName: string;\n /**\n * @default false\n * @required false\n * @description 已添加到快捷访问中的菜单数组\n */\n @property({ attribute: false }) favouriteMenus: {\n text: string;\n to?: string;\n href?: string;\n }[];\n /**\n * @default 输入关键词搜索\n * @required false\n * @description 搜索框placeholder\n */\n @property({ attribute: false }) searchPlaceholder: string;\n /**\n * @detail 快捷访问全量菜单\n * @description 拖拽快捷访问的菜单标签时发出的事件\n */\n /**\n * @default\n * @required false\n * @description 支持收藏的最大数量\n */\n @property({ attribute: false }) maxFavouriteCount: number;\n @event({ type: \"menu.drag\" }) menuDragEvent: EventEmitter<\n Record<string, any>\n >;\n\n private _handleMenuDrag = (item) => {\n this.menuDragEvent.emit(item);\n };\n /**\n * @detail 快捷访问全量菜单\n * @description 移除快捷访问里的菜单时发出的事件\n */\n @event({ type: \"menu.remove\" }) menuRemoveEvent: EventEmitter<\n Record<string, any>\n >;\n\n private _handleMenuRemove = (item) => {\n this.menuRemoveEvent.emit(item);\n };\n /**\n * @detail 快捷访问全量菜单\n * @description 添加到快捷访问时发出的事件\n */\n @event({ type: \"menu.add\" }) menuAddEvent: EventEmitter<Record<string, any>>;\n private _handleMenuAdd = (item) => {\n this.menuAddEvent.emit(item);\n };\n /**\n * @detail 点击的菜单项,{text: 菜单标题,to/href: url}\n * @description 点击菜单标签时发出的事件,一般配置为history.push\n */\n @event({ type: \"menu.click\" }) menuClickEvent: EventEmitter<\n Record<string, any>\n >;\n\n private _handleMenuClick = (item) => {\n this.menuClickEvent.emit(item);\n };\n /**\n * @detail\n * @description 收藏超过最大数量时发出的事件\n */\n @event({ type: \"collect.failed\" }) menuCollectFailedEvent: EventEmitter<\n Record<string, any>\n >;\n private _handleCollectFailed = () => {\n this.menuCollectFailedEvent.emit({});\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 protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <QuickVisitMenu\n menu={this.menu}\n buttonName={this.buttonName}\n favouriteMenus={this.favouriteMenus}\n handleMenuDrag={this._handleMenuDrag}\n handleMenuRemove={this._handleMenuRemove}\n handleMenuAdd={this._handleMenuAdd}\n handleMenuClick={this._handleMenuClick}\n searchPlaceholder={this.searchPlaceholder}\n handleCollectFailed={this._handleCollectFailed}\n maxFavouriteCount={this.maxFavouriteCount}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"basic-bricks.quick-visit-menu\", QuickVisitMenuElement);\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--15-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--15-2!./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, {\n useState,\n useEffect,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from \"react\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { List, Empty } from \"antd\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport style from \"./style.module.css\";\nimport VirtualList from \"rc-virtual-list\";\nimport { uniqBy } from \"lodash\";\n\nexport interface VirtualListContainerProps {\n data: Record<string, any>[];\n titleBrick: { useBrick: UseBrickConf };\n suffixBrick?: { useBrick: UseBrickConf };\n oHeight: string;\n onScrollData?: any;\n total?: number;\n}\nexport function VirtualListContainer(\n props: VirtualListContainerProps,\n ref: any\n): React.ReactElement {\n const [height, setHeight] = useState(500);\n const [data, setData] = useState<any[]>([]);\n const domRef = useRef() as React.RefObject<any>;\n\n // istanbul ignore next\n useImperativeHandle(ref, () => ({\n refreshDomHeight() {\n setHeight(domRef?.current?.clientHeight ?? 500);\n },\n }));\n\n /* istanbul ignore next */\n const onScroll = (e: React.UIEvent<HTMLElement, UIEvent>) => {\n if (data.length >= props.total) {\n return;\n }\n if (e.currentTarget.scrollHeight - e.currentTarget.scrollTop === height) {\n props.onScrollData && props.onScrollData();\n }\n };\n\n useEffect(() => {\n if (props.data?.length) {\n setData(uniqBy([...props.data], \"uniqId\"));\n }\n }, [props.data]);\n\n return (\n <div\n className=\"virtualListContainer\"\n ref={domRef}\n style={{ height: props.oHeight }}\n >\n {props.data.length > 0 ? (\n <List>\n <VirtualList\n data={data}\n height={height}\n itemKey=\"instanceId\"\n onScroll={onScroll}\n >\n {(item: any) => (\n <List.Item key={item.instanceId}>\n <div className={style.itemContainer}>\n <div className={style.itemContainerInner}>\n <div className={style.itemIcon}>\n {props.titleBrick?.useBrick && (\n <BrickAsComponent\n useBrick={props.titleBrick.useBrick}\n data={item}\n ></BrickAsComponent>\n )}\n </div>\n <div className={style.itemContent}>\n {item.header && (\n <div className={style.itemContentHeader}>\n {item.header}\n </div>\n )}\n {item.title && (\n <div className={style.itemContentTitle}>\n {item.title}\n </div>\n )}\n {item.desc && (\n <div className={style.itemContentDesc}>{item.desc}</div>\n )}\n </div>\n </div>\n <div className={style.itemFooter}>\n {props?.suffixBrick?.useBrick && (\n <BrickAsComponent\n useBrick={props.suffixBrick.useBrick}\n data={item}\n ></BrickAsComponent>\n )}\n </div>\n </div>\n </List.Item>\n )}\n </VirtualList>\n </List>\n ) : (\n <Empty style={{ paddingTop: \"20px\" }} />\n )}\n </div>\n );\n}\n\nexport const VirtualListContainer2 = forwardRef(VirtualListContainer);\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 { UseBrickConf } from \"@next-core/brick-types\";\nimport { VirtualListContainer2 } from \"./VirtualListContainer\";\nexport interface itemData {\n list: Record<string, any>[];\n page_size?: number | string;\n page?: number | string;\n}\nexport interface VirtualListContainerProps {\n data: Record<string, any>[];\n titleBrick: { useBrick: UseBrickConf };\n suffixBrick?: { useBrick: UseBrickConf };\n oHeight: string;\n onScrollData?: any;\n total?: number;\n}\n\nexport class VirtualListContainerElement extends UpdatingElement {\n /**\n * @kind ItemData\n * @required true\n * @default -\n * @description 列表数据\n * @group basic\n */\n @property({ attribute: false })\n data: VirtualListContainerProps[\"data\"];\n /**\n * @kind {useBrick:UseBrickConf}\n * @required true\n * @default -\n * @description 列表项标题位置,相关类型[UseBrickConf](/next-docs/docs/api-reference/brick-types.usebrickconf)\n * @group basic\n */\n @property({ attribute: false })\n titleBrick: VirtualListContainerProps[\"titleBrick\"];\n /**\n * @kind {useBrick:UseBrickConf}\n * @required false\n * @default -\n * @description 列表项 extra 位置(右边),相关类型[UseBrickConf](/next-docs/docs/api-reference/brick-types.usebrickconf)\n * @group basic\n */\n @property({ attribute: false })\n suffixBrick: VirtualListContainerProps[\"suffixBrick\"];\n\n @property({ attribute: false })\n total: number;\n\n @property({ attribute: false })\n oHeight: string;\n\n ref: React.RefObject<any>;\n\n constructor() {\n super();\n this.ref = React.createRef();\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 /* istanbul ignore next */\n showVirtualList = (): void => {\n if (this.ref.current) {\n this.ref.current.refreshDomHeight();\n }\n };\n\n @event({ type: \"basic-bricks.scroll\" }) scrollEvent: EventEmitter<any>;\n private _onScrollData = () => {\n this.scrollEvent.emit();\n };\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <VirtualListContainer2\n ref={this.ref}\n data={this.data}\n titleBrick={this.titleBrick}\n suffixBrick={this.suffixBrick}\n oHeight={this.oHeight}\n onScrollData={this._onScrollData}\n total={this.total}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"basic-bricks.virtual-list-container\",\n VirtualListContainerElement\n);\n","import { createProviderClass } from \"@next-core/brick-utils\";\nimport { http, HttpCustomOptions, HttpParams } from \"@next-core/brick-http\";\nexport interface HttpRequestParams {\n url: string;\n method: \"GET\" | \"POST\";\n params?: HttpParams;\n data?: RequestInit[\"body\"];\n}\n\nexport function HttpRequest(\n httpRequestParams: HttpRequestParams\n): Promise<unknown> {\n const { url, method, data, params } = httpRequestParams;\n const init: RequestInit = {\n method: method,\n body: data,\n };\n const options: HttpCustomOptions = {\n params: params,\n };\n\n return http.request(url, init, options);\n}\n\ncustomElements.define(\n \"basic-bricks.provider-http-request\",\n createProviderClass(HttpRequest)\n);\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"KQm4\");","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-bar {\\n position: fixed;\\n right: 0;\\n left: 0;\\n top: 0;\\n z-index: 1000;\\n box-shadow: var(--top-nav-shadow);\\n}\\n\\n.app-bar-content {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n height: var(--app-bar-height);\\n background-color: var(--v8-top-navigation-bg);\\n padding: 0 16px;\\n transition: var(--launchpad-backdrop-transition);\\n}\\n\\n.leftContainer {\\n display: flex;\\n}\\n\\n.rightContainer {\\n display: flex;\\n justify-content: end;\\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___(function(i){return i[1]});\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","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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: 42px;\\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: 36px;\\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 opacity: 0.6;\\n}\\n\\n.appIcon--RPzLndbs {\\n width: 100%;\\n}\\n\\n.appName--j08CzuI2 {\\n display: -webkit-box;\\n font-size: 16px;\\n line-height: 1.5;\\n max-height: 48px;\\n text-align: center;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 2;\\n overflow: hidden;\\n text-overflow: ellipsis;\\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: 42px;\\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: 36px;\\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","\"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--18-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--18-1!../../../../node_modules/@next-core/brick-icons/dist/styles/index.css\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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: var(--antd-modal-mask-bg);\\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: var(--antd-icon-color-hover);\\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: var(--antd-modal-footer-bg);\\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: var(--antd-error-color);\\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-btn-default-border);\\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: var(--antd-btn-primary-color);\\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: var(--antd-btn-primary-color);\\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: var(--antd-btn-primary-color);\\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-btn-default-border);\\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-btn-default-border);\\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-btn-default-border);\\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-btn-default-border);\\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: var(--antd-btn-danger-color);\\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: var(--antd-btn-danger-color);\\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: var(--antd-btn-danger-color);\\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: var(--antd-error-color);\\n background: var(--antd-btn-default-bg);\\n border-color: var(--antd-error-color);\\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: #0d0c0c;\\n background: var(--antd-btn-default-bg);\\n border-color: #0d0c0c;\\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: #000000;\\n background: var(--antd-btn-default-bg);\\n border-color: #000000;\\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: var(--antd-btn-danger-color);\\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: var(--antd-btn-danger-color);\\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: var(--antd-btn-danger-color);\\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: var(--antd-error-color);\\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: #0d0c0c;\\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: #000000;\\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: var(--antd-error-color);\\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: #0d0c0c;\\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: #000000;\\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-btn-default-border);\\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-btn-default-border);\\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 border-radius: var(--antd-button-border-radius);\\n}\\n.ant-btn:hover,\\n.ant-btn:focus {\\n color: var(--antd-btn-default-hover-color);\\n border-color: var(--antd-btn-default-hover-border-color);\\n background: var(--antd-btn-default-bg);\\n}\\n.ant-btn.active,\\n.ant-btn:active {\\n color: var(--antd-btn-default-active-color);\\n border-color: var(--antd-btn-default-active-border-color);\\n background: var(--antd-btn-default-bg);\\n}\\n.ant-btn-primary {\\n background-image: var(--antd-btn-primary-bg-image);\\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 color: var(--antd-btn-primary-hover-color);\\n background-color: var(--antd-btn-primary-hover-bg);\\n border-color: var(--antd-btn-primary-hover-bg);\\n}\\n.ant-btn-primary.active,\\n.ant-btn-primary:active {\\n color: var(--antd-btn-primary-active-color);\\n background-color: var(--antd-btn-primary-active-bg);\\n border-color: var(--antd-btn-primary-active-bg);\\n}\\n.ant-btn-danger {\\n background-image: var(--antd-btn-danger-bg-image);\\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 color: var(--antd-btn-danger-hover-color);\\n background-color: var(--antd-btn-danger-hover-bg);\\n border-color: var(--antd-btn-danger-hover-bg);\\n}\\n.ant-btn-danger.active,\\n.ant-btn-danger:active {\\n color: var(--antd-btn-danger-active-color);\\n background-color: var(--antd-btn-danger-active-bg);\\n border-color: var(--antd-btn-danger-active-bg);\\n}\\n.ant-btn-default {\\n border-radius: var(--antd-button-border-radius);\\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 background: var(--antd-btn-default-bg);\\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 background: var(--antd-btn-default-bg);\\n}\\n.ant-btn-link:hover,\\n.ant-btn-link:focus {\\n color: var(--antd-btn-link-hover-color);\\n border-color: transparent;\\n background-color: transparent;\\n}\\n.ant-btn-link.active,\\n.ant-btn-link:active {\\n color: var(--antd-btn-link-active-color);\\n border-color: transparent;\\n background-color: transparent;\\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(--antd-btn-text-hover-color);\\n background-color: rgba(0, 0, 0, 0.018);\\n border-color: transparent;\\n}\\n.ant-btn-text.active,\\n.ant-btn-text:active {\\n color: var(--antd-btn-text-active-color);\\n background-color: rgba(0, 0, 0, 0.028);\\n border-color: transparent;\\n}\\n.ant-btn-dangerous {\\n color: var(--antd-btn-danger-bg-image);\\n border-color: var(--antd-btn-danger-bg-image);\\n background: var(--antd-btn-default-bg);\\n}\\n.ant-btn-dangerous:hover,\\n.ant-btn-dangerous:focus {\\n color: var(--antd-btn-danger-hover-bg);\\n border-color: var(--antd-btn-danger-hover-bg);\\n background: var(--antd-btn-danger-hover-color);\\n}\\n.ant-btn-dangerous.active,\\n.ant-btn-dangerous:active {\\n color: var(--antd-btn-danger-active-bg);\\n border-color: var(--antd-btn-danger-active-bg);\\n background: var(--antd-btn-danger-active-color);\\n}\\n.ant-btn-dangerous.ant-btn-primary {\\n background-image: var(--antd-btn-danger-bg-image);\\n}\\n.ant-btn-dangerous.ant-btn-primary[disabled] {\\n background-image: none;\\n}\\n.ant-btn-dangerous.ant-btn-primary:hover,\\n.ant-btn-dangerous.ant-btn-primary:focus {\\n color: var(--antd-btn-danger-hover-color);\\n background-color: var(--antd-btn-danger-hover-bg);\\n border-color: var(--antd-btn-danger-hover-bg);\\n}\\n.ant-btn-dangerous.ant-btn-primary.active,\\n.ant-btn-dangerous.ant-btn-primary:active {\\n color: var(--antd-btn-danger-active-color);\\n background-color: var(--antd-btn-danger-active-bg);\\n border-color: var(--antd-btn-danger-active-bg);\\n}\\n.ant-btn-dangerous.ant-btn-link:hover,\\n.ant-btn-dangerous.ant-btn-link:focus {\\n color: var(--antd-btn-danger-hover-bg);\\n border-color: transparent;\\n background-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-link.active,\\n.ant-btn-dangerous.ant-btn-link:active {\\n color: var(--antd-btn-danger-active-bg);\\n border-color: transparent;\\n background-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-text:hover,\\n.ant-btn-dangerous.ant-btn-text:focus {\\n color: var(--antd-btn-danger-hover-bg);\\n background-color: rgba(0, 0, 0, 0.018);\\n border-color: transparent;\\n}\\n.ant-btn-dangerous.ant-btn-text.active,\\n.ant-btn-dangerous.ant-btn-text:active {\\n color: var(--antd-btn-danger-active-bg);\\n background-color: rgba(0, 0, 0, 0.028);\\n border-color: transparent;\\n}\\n.ant-btn-circle {\\n border-radius: 50%;\\n}\\n.ant-btn-round {\\n border-radius: 32px;\\n}\\n.ant-btn-circle.ant-btn-sm {\\n min-width: 28px;\\n}\\n.ant-btn-sm {\\n line-height: 13px;\\n height: 26px;\\n font-size: 13px;\\n}\\nhtml[data-theme=\\\"dark\\\"] .ant-btn-primary {\\n background-image: none;\\n}\\n.ant-modal-footer {\\n background: var(--antd-modal-footer-bg);\\n}\\n.ant-modal-content {\\n border: var(--border-width-base) solid var(--color-border-divider-line);\\n border-radius: var(--medius-border-radius);\\n}\\n.wrapper .ant-modal-footer .ant-btn:first-child {\\n display: none;\\n}\\n.bodyWrapper .ant-modal-body {\\n padding: 0;\\n}\\n.customHeaderWrapper .ant-modal-body {\\n position: relative;\\n}\\n.customHeaderWrapper .ant-modal-body .headerWrapper {\\n position: absolute;\\n top: -36px;\\n width: 100%;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n}\\n.customHeaderWrapper .ant-modal-body .headerWrapper > span {\\n display: flex;\\n align-items: center;\\n}\\n.customHeaderWrapper .ant-modal-body .headerWrapper > span ::slotted([slot=\\\"customRightHeaderExtra\\\"]) {\\n border-right: 1px solid rgba(255, 255, 255, 0.12);\\n padding-right: 17px;\\n}\\n.headerWrapper .ant-modal-header {\\n border-bottom: 0;\\n}\\n.titleWrapper .ant-modal-close {\\n display: none;\\n}\\n.footerWrapper .ant-modal-footer {\\n background: var(--color-fill-bg-container-1);\\n}\\n.footer-container {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n}\\n.fullscreen .ant-modal {\\n margin: 20px;\\n padding: 0;\\n max-width: none;\\n top: 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","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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 gap: 1.7rem 4%;\\n }\\n}\\n\\n@media (max-height: 720px), (max-width: 1024px) {\\n .favoriteContainer--1AXIxGKL {\\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 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","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\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".dropdownMenuItem--16gbdCo- {\\n color: var(--app-bar-dropdown-menu-item-color);\\n}\\n .dropdownMenuItem--16gbdCo-:hover {\\n background-color: var(--app-bar-dropdown-menu-item-hover-bg);\\n }\\n .dropdownMenuItem--16gbdCo- .dropdownBtn---2KykUF1 {\\n margin: -5px -12px;\\n padding: 5px 12px;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"dropdownMenuItem\": \"dropdownMenuItem--16gbdCo-\",\n\t\"dropdownBtn\": \"dropdownBtn---2KykUF1\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"ODXe\");","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"AE1K\");","module.exports = __webpack_public_path__ + \"assets/default-app-icon.cc952ed5.png\";","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".cellWrapper--2OYGkPe3 {\\n display: flex;\\n justify-content: center;\\n /* https://stackoverflow.com/a/43312314 */\\n overflow: hidden;\\n align-items: center;\\n}\\n .cellWrapper--2OYGkPe3.positionLeft--37I2lSco {\\n justify-content: flex-start;\\n }\\n\\n.cellItem--2SC_hb3l {\\n padding: 10px;\\n min-width: 120px;\\n max-height: 150px;\\n display: flex;\\n align-items: center;\\n flex-direction: column;\\n gap: 10px;\\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 min-width: 100px;\\n justify-content: normal;\\n gap: 8px;\\n }\\n\\n .cellItem--2SC_hb3l.small--2iopoc-K {\\n min-width: 76px;\\n justify-content: normal;\\n }\\n}\\n\\n@media (max-height: 700px), (max-width: 1024px) {\\n .cellItem--2SC_hb3l {\\n min-width: 80px;\\n justify-content: normal;\\n gap: 6px;\\n }\\n\\n .cellItem--2SC_hb3l.small--2iopoc-K {\\n min-width: 60px;\\n justify-content: normal;\\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\"active\": \"active--WeFTsRRm\",\n\t\"small\": \"small--2iopoc-K\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"M7uQ\");","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\");","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--16-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--16-2!./AppBarWrapper.shadow.css\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\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\"))(\"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=\"","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"TSYQ\");","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--18-1!../../../../node_modules/less-loader/dist/cjs.js??ref--18-2!./style.shadow.less\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\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 \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".GeneralPopup {\\n position: fixed;\\n left: 0;\\n top: 0;\\n z-index: 1000;\\n box-shadow: 0px 21px 50px 0px rgba(0, 0, 0, 0.46);\\n border: 1px solid rgba(255, 255, 255, 0.5);\\n border-radius: 6px;\\n overflow: hidden;\\n}\\n\\n.general-popup-header {\\n display: flex;\\n justify-content: space-between;\\n background: var(--antd-modal-footer-bg);\\n padding: 12px;\\n border-bottom: 1px solid var(--theme-gray-color);\\n border-radius: 6px 6px 0 0;\\n font-size: 16px;\\n line-height: 16px;\\n cursor: move;\\n font-weight: var(--font-weight-500);\\n}\\n\\n.general-popup-close-btn {\\n cursor: pointer;\\n color: var(--antd-text-color-secondary);\\n}\\n\\n.general-popup-close-btn:hover {\\n color: var(--antd-icon-color-hover);\\n }\\n\\n.content {\\n overflow: auto;\\n background: var(--antd-dropdown-menu-bg);\\n padding: 20px;\\n margin-top: -1px;\\n height: calc(100vh - 100px);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___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___(function(i){return i[1]});\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","module.exports = dll;","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"XzT5\");","\n var result = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--18-1!../../../../node_modules/less-loader/dist/cjs.js??ref--18-2!./index.headerBar.less\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".anchorWrapper--a69PwwmW {\\n width: 100%;\\n background: var(--antd-component-background);\\n -webkit-backdrop-filter: blur(3px);\\n backdrop-filter: blur(3px);\\n padding: 5px 0;\\n overflow: unset;\\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: var(--antd-anchor-radio-type-bg);\\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: var(--antd-anchor-radio-type-title-color);\\n }\\n .anchorWrapper--a69PwwmW .anchorLinkContainer--2GE0pKbG .ant-anchor-link-active > .ant-anchor-link-title {\\n color: var(--color-brand);\\n background: var(--antd-anchor-radio-type-title-active-bg);\\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.ant-anchor-ink::before {\\n background-color: var(--antd-anchor-column-bar-bg);\\n }\\n\\n.ant-anchor-ink .ant-anchor-ink-ball {\\n background-color: var(--antd-anchor-link-ball-bg);\\n border-color: var(--antd-anchor-link-ball-color);\\n }\\n.ant-anchor-link-title {\\n font-size: var(--antd-anchor-title-font-size);\\n font-weight: var(--antd-anchor-title-font-weight);\\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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".illustrationWrapper--Pu7JIhry {\\n width: 100%;\\n height: 100%;\\n background-color: transparent;\\n text-align: center;\\n}\\n\\n.header--3jxNr95f {\\n padding-bottom: 20px;\\n}\\n.title--1FVzO_zQ {\\n color: var(--color-header-text);\\n font-size: 20px;\\n font-weight: 500;\\n line-height: 26px;\\n}\\n\\n.description--11EPsoAu {\\n padding-top: 20px;\\n font-weight: 400;\\n color: var(--color-auxiliary-text);\\n line-height: 20px;\\n}\\n\\n.footer--f0a8Xjcm {\\n padding-top: 20px;\\n}\\n.feedback--11GKENL3 {\\n padding-top: 52px;\\n}\\n.text--3VtBpAvr {\\n color: var(--color-secondary-text);\\n}\\n.guide--egnAp2pJ {\\n padding-top: 152px;\\n}\\n\\n@media (max-width: 1440px) {\\n .illustrationWrapper--Pu7JIhry img {\\n width: 240px;\\n }\\n}\\n\\n@media (min-width: 1440px) {\\n .illustrationWrapper--Pu7JIhry img {\\n width: 300px;\\n }\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"illustrationWrapper\": \"illustrationWrapper--Pu7JIhry\",\n\t\"header\": \"header--3jxNr95f\",\n\t\"title\": \"title--1FVzO_zQ\",\n\t\"description\": \"description--11EPsoAu\",\n\t\"footer\": \"footer--f0a8Xjcm\",\n\t\"feedback\": \"feedback--11GKENL3\",\n\t\"text\": \"text--3VtBpAvr\",\n\t\"guide\": \"guide--egnAp2pJ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"ZR4k\");","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___(function(i){return i[1]});\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","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"JxWY\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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 background: var(--app-bar-bg);\\n box-shadow: var(--app-bar-shadow);\\n}\\n\\n.appBarContent--2gipFxzf {\\n height: var(--app-bar-height);\\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// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"appBar\": \"appBar--3FVwevTx\",\n\t\"appBarContent\": \"appBarContent--2gipFxzf\",\n\t\"titleContainer\": \"titleContainer--3aTVex31\",\n\t\"actionsContainer\": \"actionsContainer--3_rbEHWR\"\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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host {\\n display: block;\\n position: relative;\\n}\\n\\n:host([hidden]) {\\n display: none;\\n}\\n\\n:host([resize-direction=\\\"left\\\"]),\\n:host([resize-direction=\\\"right\\\"]) {\\n height: 100%;\\n}\\n\\n*,\\n*::before,\\n*::after {\\n box-sizing: border-box;\\n}\\n\\n.box {\\n height: 100%;\\n}\\n/* default */\\n.bar {\\n position: absolute;\\n width: 4px;\\n top: 0;\\n bottom: 0;\\n}\\n\\n.top.bar,\\n.bottom.bar {\\n position: absolute;\\n height: 4px;\\n left: 0;\\n width: 100%;\\n}\\n\\n.top.bar {\\n top: -2px;\\n}\\n\\n.bottom.bar {\\n bottom: -2px;\\n top: 100%;\\n z-index: 1;\\n}\\n\\n.left.bar {\\n left: -2px;\\n}\\n\\n.right.bar {\\n right: -2px;\\n}\\n\\n.bar.hoverBar:hover {\\n cursor: col-resize;\\n background: #007fd4;\\n transition: background 0.1s 0.3ms ease-out;\\n}\\n\\n.bar.hoverBar:hover.top,\\n .bar.hoverBar:hover.bottom {\\n cursor: row-resize;\\n }\\n/* dashboard */\\n.dashboardBar {\\n width: 8px;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n}\\n.dashboardBar.top,\\n .dashboardBar.bottom {\\n position: absolute;\\n height: 8px;\\n left: 0;\\n width: 100%;\\n }\\n.dashboardBar.top {\\n top: -4px;\\n }\\n.dashboardBar.bottom {\\n bottom: -4px;\\n }\\n.dashboardBar.left {\\n left: -4px;\\n }\\n.dashboardBar.right {\\n right: -4px;\\n }\\n.dashboardBar::before {\\n content: \\\"\\\";\\n position: absolute;\\n transition: border-color 0.2s ease-in-out 0s;\\n }\\n.dashboardBar::after {\\n background: var(--color-text-divider-line);\\n content: \\\"\\\";\\n position: absolute;\\n transition: background 0.2s ease-in-out 0s;\\n border-radius: 4px;\\n }\\n.dashboardBar.left::before,\\n .dashboardBar.right::before {\\n border-left: 1px solid transparent;\\n height: 100%;\\n left: 50%;\\n transform: translateX(-50%);\\n }\\n.dashboardBar.left::after,\\n .dashboardBar.right::after {\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n height: 40%;\\n width: 4px;\\n }\\n.dashboardBar.top::before,\\n .dashboardBar.bottom::before {\\n border-top: 1px solid transparent;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n transform: translate(0%, 50%);\\n }\\n.dashboardBar.top::after,\\n .dashboardBar.bottom::after {\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n height: 4px;\\n width: 40%;\\n }\\n.dashboardBar.hoverBar:hover {\\n cursor: col-resize;\\n }\\n.dashboardBar.hoverBar:hover::before {\\n border-color: #007fd4;\\n }\\n.dashboardBar.hoverBar:hover::after {\\n background: rgba(0, 127, 212, 0.75);\\n }\\n.dashboardBar.hoverBar:hover.top,\\n .dashboardBar.hoverBar:hover.bottom {\\n cursor: row-resize;\\n }\\n\\n.mask {\\n position: fixed;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 2000;\\n display: none;\\n}\\n\\n.resizing + .bar .mask {\\n display: block;\\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___(function(i){return i[1]});\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: rgba(69, 69, 73, 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(18, 21, 26, 0.4);\\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","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"foSv\");","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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".activeItem--3WNd0Z3_ {\\n color: var(--theme-blue-color);\\n background: var(--checkbox-bg-hover);\\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\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".breadcrumbContainer--2uOYawcd {\\n display: flex;\\n height: 22px;\\n align-items: center;\\n}\\n\\n .breadcrumbContainer--2uOYawcd .ant-breadcrumb-link > img + span,\\n .breadcrumbContainer--2uOYawcd .ant-breadcrumb-link > img + a {\\n margin-left: 4px;\\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","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".searchIcon--PkznxmeF {\\n color: var(--color-auxiliary-text);\\n}\\n.appNameWrapper--2llWuAaJ {\\n width: -webkit-max-content;\\n width: -moz-max-content;\\n width: max-content;\\n margin-right: -6px;\\n cursor: pointer;\\n}\\n.appName--Lv3C3p3z {\\n color: var(--color-normal-text);\\n cursor: pointer;\\n padding: 4px 8px;\\n border-radius: 4px;\\n}\\n.appName--Lv3C3p3z:hover {\\n background: var(--color-fill-bg-base-1);\\n }\\n.popoverInMenu--2rjgr0yQ {\\n width: 100%;\\n padding-top: 15px;\\n top: auto;\\n}\\n.popoverInMenu--2rjgr0yQ .ant-popover-arrow {\\n display: none;\\n }\\n.popoverInMenu--2rjgr0yQ .ant-popover-inner {\\n border-radius: 0;\\n }\\n.menuPopover--2uj1JkKt {\\n position: relative;\\n}\\n.menuPopover--2uj1JkKt:hover .appName--Lv3C3p3z {\\n z-index: 1000;\\n background: var(--color-fill-bg-base-1);\\n }\\n.quickVisitContainer--3wpnSOmS {\\n position: absolute;\\n height: 50px;\\n top: -1px;\\n left: 0;\\n padding-top: 18px;\\n}\\n.outerWrapper--3u87lWaX {\\n padding: 5px 36px;\\n /* min-height: 178px; */\\n max-height: 592px;\\n}\\n\\n.menuSearchContainer--1ka6evQM .searchInput--KIHDCPi0:hover + .clearBtn--12CwHZQA {\\n visibility: visible;\\n }\\n\\n.menuSearchContainer--1ka6evQM .clearBtn--12CwHZQA {\\n position: absolute;\\n top: 9px;\\n right: 11px;\\n z-index: 1;\\n color: var(--text-color-disabled);\\n visibility: hidden;\\n }\\n\\n.menuSearchContainer--1ka6evQM .clearBtn--12CwHZQA:hover {\\n visibility: visible;\\n }\\n\\n.menuSearchContainer--1ka6evQM {\\n position: relative;\\n margin-bottom: 20px;\\n}\\n\\n.menuSearchContainer--1ka6evQM .searchIcon--PkznxmeF {\\n color: var(--color-auxiliary-text);\\n }\\n\\n.menuSearchContainer--1ka6evQM .ant-input-affix-wrapper {\\n border: none;\\n border-bottom: 1px solid var(--antd-input-border-color);\\n border-radius: 0;\\n }\\n\\n.menuSearchContainer--1ka6evQM .ant-input-affix-wrapper:focus {\\n box-shadow: none;\\n }\\n.container--291TxRV- {\\n display: flex;\\n gap: 8px;\\n flex-flow: wrap;\\n}\\n.favouriteEmpty--Embii7hA {\\n color: var(--color-secondary-text);\\n text-align: center;\\n padding: 16px 0 35px 0;\\n}\\n.sortableHelper.favouriteTag--Tk2YlzOI {\\n z-index: 9999;\\n background-color: var(--color-info-icon-bg);\\n}\\n.sortableHelper.favouriteTag--Tk2YlzOI .operation--3-A2IHqN {\\n visibility: visible;\\n }\\n.sortableHelper.favouriteTag--Tk2YlzOI .operation--3-A2IHqN .dragHandler--2DoPx-do {\\n color: var(--color-info);\\n }\\n.titleWrapper--3UdKzY4S {\\n font-weight: 500;\\n font-size: 14px;\\n color: var(--color-header-text);\\n position: relative;\\n height: 56px;\\n line-height: 56px;\\n}\\n.titleWrapper--3UdKzY4S .title--3KB8noUK {\\n margin-left: 12px;\\n }\\n.titleWrapper--3UdKzY4S .title--3KB8noUK:before {\\n content: \\\"\\\";\\n background: var(--color-secondary-text);\\n width: 4px;\\n height: 4px;\\n border-radius: 50%;\\n margin-right: 8px;\\n position: absolute;\\n top: 25px;\\n left: 0;\\n }\\n.favouriteTag--Tk2YlzOI {\\n background-color: var(--menu-submenu-group-active-bg);\\n width: 200px;\\n height: 24px;\\n color: var(--color-normal-text);\\n border-radius: 3px;\\n line-height: 24px;\\n padding-left: 6px;\\n cursor: pointer;\\n display: flex;\\n}\\n.favouriteTag--Tk2YlzOI .textContainer--1X2ElYJh {\\n width: 152px;\\n padding-left: 6px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n text-wrap: nowrap;\\n }\\n.favouriteTag--Tk2YlzOI .operation--3-A2IHqN {\\n visibility: hidden;\\n }\\n.favouriteTag--Tk2YlzOI .operation--3-A2IHqN .deleteBtn--2vrugUF1 {\\n font-size: 10px;\\n margin-right: 10px;\\n }\\n.favouriteTag--Tk2YlzOI .operation--3-A2IHqN .deleteBtn--2vrugUF1:hover {\\n color: var(--color-error);\\n }\\n.favouriteTag--Tk2YlzOI .operation--3-A2IHqN .dragHandler--2DoPx-do:hover {\\n color: var(--color-info);\\n }\\n.favouriteTag--Tk2YlzOI:hover {\\n background-color: var(--color-info-icon-bg);\\n }\\n.favouriteTag--Tk2YlzOI:hover .operation--3-A2IHqN {\\n visibility: visible;\\n }\\n.tag--2DhN9e_- {\\n background-color: var(--menu-submenu-group-active-bg);\\n /* display: inline-block; */\\n width: 200px;\\n height: 24px;\\n color: var(--color-normal-text);\\n border-radius: 3px;\\n line-height: 24px;\\n cursor: pointer;\\n display: flex;\\n}\\n.tag--2DhN9e_- .textContainer--1X2ElYJh {\\n padding-left: 6px;\\n width: 170px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n text-wrap: nowrap;\\n }\\n.tag--2DhN9e_-:hover {\\n background-color: var(--color-info-icon-bg);\\n }\\n.tag--2DhN9e_-:hover .operation--3-A2IHqN .collectStar--3SpyaubQ {\\n visibility: visible;\\n }\\n.tag--2DhN9e_- .operation--3-A2IHqN {\\n padding: 0 10px;\\n }\\n.tag--2DhN9e_- .operation--3-A2IHqN .collectStar--3SpyaubQ {\\n visibility: hidden;\\n font-size: 12px;\\n }\\n.tag--2DhN9e_- .operation--3-A2IHqN .collectStar--3SpyaubQ:hover {\\n color: var(--color-brand);\\n }\\n.tag--2DhN9e_- .operation--3-A2IHqN .favouriteStar--GEk6LWS1 {\\n font-size: 12px;\\n color: #fadb14;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"searchIcon\": \"searchIcon--PkznxmeF\",\n\t\"appNameWrapper\": \"appNameWrapper--2llWuAaJ\",\n\t\"appName\": \"appName--Lv3C3p3z\",\n\t\"popoverInMenu\": \"popoverInMenu--2rjgr0yQ\",\n\t\"menuPopover\": \"menuPopover--2uj1JkKt\",\n\t\"quickVisitContainer\": \"quickVisitContainer--3wpnSOmS\",\n\t\"outerWrapper\": \"outerWrapper--3u87lWaX\",\n\t\"menuSearchContainer\": \"menuSearchContainer--1ka6evQM\",\n\t\"searchInput\": \"searchInput--KIHDCPi0\",\n\t\"clearBtn\": \"clearBtn--12CwHZQA\",\n\t\"container\": \"container--291TxRV-\",\n\t\"favouriteEmpty\": \"favouriteEmpty--Embii7hA\",\n\t\"favouriteTag\": \"favouriteTag--Tk2YlzOI\",\n\t\"operation\": \"operation--3-A2IHqN\",\n\t\"dragHandler\": \"dragHandler--2DoPx-do\",\n\t\"titleWrapper\": \"titleWrapper--3UdKzY4S\",\n\t\"title\": \"title--3KB8noUK\",\n\t\"textContainer\": \"textContainer--1X2ElYJh\",\n\t\"deleteBtn\": \"deleteBtn--2vrugUF1\",\n\t\"tag\": \"tag--2DhN9e_-\",\n\t\"collectStar\": \"collectStar--3SpyaubQ\",\n\t\"favouriteStar\": \"favouriteStar--GEk6LWS1\"\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\");","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"lSNA\");","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".subMenuContainer--1NLRRYRs {\\n background: var(--antd-app-submenu-bg);\\n border-radius: 6px;\\n height: 100%;\\n padding: 20px 12px;\\n}\\n .subMenuContainer--1NLRRYRs .blockLink--26MGC_dp {\\n display: flex;\\n justify-content: space-between;\\n flex: 1;\\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: var(--color-header-text);\\n }\\n .subMenuContainer--1NLRRYRs .header--2So5Ep-2 i {\\n color: var(--color-secondary-text);\\n width: 24px;\\n text-align: center;\\n }\\n .subMenuContainer--1NLRRYRs .header--2So5Ep-2 > i + span {\\n margin-left: 5px;\\n }\\n .subMenuContainer--1NLRRYRs .header--2So5Ep-2 .headerTitle--1S_9PfHs {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n .subMenuContainer--1NLRRYRs > .ant-input-search {\\n margin-bottom: 0px;\\n }\\n .subMenuContainer--1NLRRYRs > .ant-menu {\\n background: transparent;\\n padding: 12px 0px;\\n }\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item-group .ant-menu-item-group-title {\\n padding: 8px 16px;\\n font-size: 12px;\\n }\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-sub.ant-menu-inline {\\n background-color: var(--sub-menu-filter-group-bg);\\n border-radius: 6px;\\n }\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item {\\n margin: 0;\\n border-radius: 6px;\\n }\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item:after {\\n content: none;\\n }\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item:not(.ant-menu-item-selected):hover {\\n background-color: var(--sub-menu-brick-item-hover-bg);\\n }\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item:not(.ant-menu-item-selected):active {\\n background-color: var(--sub-menu-brick-item-active-bg);\\n }\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item .triggerByHover--C_FUOkGK {\\n display: none;\\n }\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item:hover .triggerByHover--C_FUOkGK {\\n display: inline-block;\\n }\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-item-selected {\\n background-color: var(--app-submenu-active-bg);\\n }\\n .subMenuContainer--1NLRRYRs > .ant-menu .ant-menu-submenu-title {\\n margin: 0;\\n }\\n .subMenuContainer--1NLRRYRs .ant-menu-item-group-list .ant-menu-submenu-title .menuItemMainPart--1jfvaODg {\\n width: calc(100% - 20px);\\n }\\n .subMenuContainer--1NLRRYRs .ant-menu-item-only-child {\\n padding-right: 0 !important;\\n }\\n .subMenuContainer--1NLRRYRs .ant-menu-inline .ant-menu-item {\\n width: 100%;\\n }\\n\\nhtml[data-ui=\\\"v8-2\\\"] .subMenuContainer--1NLRRYRs {\\n padding: 0;\\n}\\n\\nhtml[data-ui=\\\"v8-2\\\"] .subMenuContainer--1NLRRYRs > .ant-input-search {\\n margin-bottom: 12px;\\n }\\n\\nhtml[data-ui=\\\"v8-2\\\"] .subMenuContainer--1NLRRYRs > .ant-menu {\\n padding: 0px 0px;\\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 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: var(--color-normal-text);\\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: var(--sub-menu-filter-transparent-type-item-hover-bg);\\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: var(--sub-menu-filter-transparent-type-group-selected-color);\\n }\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu.ant-menu-submenu-selected .ant-menu-submenu-title .menuItemMainPart--1jfvaODg > i {\\n color: var(--sub-menu-filter-transparent-type-group-selected-color);\\n }\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu.ant-menu-submenu-selected .ant-menu-submenu-title .ant-menu-submenu-arrow {\\n color: var(--sub-menu-filter-transparent-type-group-selected-color);\\n }\\n\\n/* subMenu-title 普通样式 */\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-submenu .ant-menu-submenu-title .ant-menu-submenu-arrow {\\n color: var(--color-disabled-text);\\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: var(--color-secondary-text);\\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: var(--sub-menu-filter-transparent-type-item-color);\\n }\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-item.ant-menu-item-selected {\\n background-color: var(\\n --sub-menu-filter-transparent-type-group-selected-bg\\n );\\n color: var(--sub-menu-filter-transparent-type-group-selected-color);\\n }\\n\\n.transparentBackground--RdFv0mVM .ant-menu .ant-menu-item:not(.ant-menu-item-selected):hover {\\n background-color: var(--sub-menu-filter-transparent-type-item-hover-bg);\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"subMenuContainer\": \"subMenuContainer--1NLRRYRs\",\n\t\"blockLink\": \"blockLink--26MGC_dp\",\n\t\"header\": \"header--2So5Ep-2\",\n\t\"headerTitle\": \"headerTitle--1S_9PfHs\",\n\t\"triggerByHover\": \"triggerByHover--C_FUOkGK\",\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\"))(\"md7G\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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: -webkit-box;\\n font-size: 16px;\\n line-height: 1.5;\\n height: 48px;\\n text-align: center;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 2;\\n overflow: hidden;\\n text-overflow: ellipsis;\\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: 42px;\\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: 36px;\\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","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".appbarBreadcrumb--3EoFsH92 .ant-breadcrumb {\\n font-size: 12px;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"appbarBreadcrumb\": \"appbarBreadcrumb--3EoFsH92\"\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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".logoBar--oqCw4Z63 {\\n position: relative;\\n width: 100%;\\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.ui8--1qnmpVl5 {\\n height: 100%;\\n padding: 0;\\n}\\n\\n.ui5--78SDuZAD {\\n height: var(--app-bar-height);\\n padding: 0 22px 0 24px;\\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\t\"ui8\": \"ui8--1qnmpVl5\",\n\t\"ui5\": \"ui5--78SDuZAD\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"q1tI\");","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"rePB\");","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___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".itemContainer--32Y2B3ie {\\n display: flex;\\n justify-content: space-between;\\n width: 100%;\\n}\\n.itemContainerInner--1Y-EdZe5 {\\n display: flex;\\n align-items: center;\\n}\\n.itemIcon--107c2fFx {\\n margin-right: 12px;\\n}\\n.itemContentTitle--g7Gka3Jp {\\n display: -webkit-box;\\n color: var(--antd-btn-default-color);\\n overflow: hidden;\\n text-overflow: ellipsis;\\n -webkit-line-clamp: 2;\\n -webkit-box-orient: vertical;\\n}\\n.itemContentHeader--1MP8B3gt {\\n font-size: 12px;\\n}\\n.itemContentDesc--VgUT2eD7 {\\n color: var(--antd-btn-fade-text-color);\\n font-size: 12px;\\n}\\n.itemFooter--2gvzeXjf {\\n display: flex;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"itemContainer\": \"itemContainer--32Y2B3ie\",\n\t\"itemContainerInner\": \"itemContainerInner--1Y-EdZe5\",\n\t\"itemIcon\": \"itemIcon--107c2fFx\",\n\t\"itemContentTitle\": \"itemContentTitle--g7Gka3Jp\",\n\t\"itemContentHeader\": \"itemContentHeader--1MP8B3gt\",\n\t\"itemContentDesc\": \"itemContentDesc--VgUT2eD7\",\n\t\"itemFooter\": \"itemFooter--2gvzeXjf\"\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___(function(i){return i[1]});\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\";\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___(function(i){return i[1]});\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: var(--antd-menu-bg);\\n box-shadow: var(--antd-menu-shadow);\\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","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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 color: var(--color-brand-hover) !important;\\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--18-1!../../../../node_modules/less-loader/dist/cjs.js??ref--18-2!./index.shadow.less\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\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--16-1!../../../../node_modules/postcss-loader/dist/cjs.js??ref--16-2!./MicroApp.shadow.css\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\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\"))(\"vpQ4\");","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"vuIU\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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_public_path__ + \"assets/print-helper.80b6b0b5.png\";","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"wd/R\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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.displayBrickContainerFaded--1us7ZCF6 {\\n opacity: 0.3;\\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\t\"displayBrickContainerFaded\": \"displayBrickContainerFaded--1us7ZCF6\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/basic-bricks:XuQu\"))(\"wx14\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\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: var(--antd-menu-title-bg);\\n color: var(--antd-menu-title-color);\\n font-size: 16px;\\n overflow: hidden;\\n transition: none;\\n}\\n\\n.menuTitleLink--2-9--bhs:hover {\\n color: var(--antd-menu-title-color);\\n background: var(--antd-menu-item-hover);\\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-inline .ant-menu-item-selected::after {\\n border-right-color: transparent;\\n }\\n\\n.appMenu--14qqCN6E .ant-menu-inline .ant-menu-item:after {\\n border-right-color: transparent;\\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: var(--antd-menu-item-hover);\\n }\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-item > a {\\n color: var(--antd-menu-color);\\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: var(--antd-menu-item-selected-bg);\\n }\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-item-selected > a {\\n color: var(--antd-menu-color);\\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: var(--antd-menu-color);\\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: var(--antd-menu-color);\\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: var(--ant-menu-submenu-selected-bg);\\n }\\n\\n.appMenu--14qqCN6E .ant-menu .ant-menu-item-group-title {\\n color: var(--ant-menu-item-group-title-color);\\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\"))(\"yXPU\");"],"sourceRoot":""}
|