@next-bricks/presentational-bricks 1.321.2 → 1.321.4
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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"DllOfReactDnd\"","webpack:///./bricks/presentational-bricks/src/brick-conditional-display/style.module.css","webpack:///delegated ./node_modules/lodash/isArguments.js from dll-reference dll","webpack:///delegated ./node_modules/@ant-design/compatible/es/index.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/table-transfer/index.module.css","webpack:///./bricks/presentational-bricks/src/entry-card-item/EntryCardItem.module.css","webpack:///delegated ./node_modules/prop-types/index.js from dll-reference DllOfAce","webpack:///./bricks/presentational-bricks/src/general-preview-image/components/Operations.module.css","webpack:///./bricks/presentational-bricks/src/brick-alert/style.module.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js from dll-reference dll","webpack:///delegated ./node_modules/lodash/_SetCache.js from dll-reference dll","webpack:///delegated ./node_modules/@babel/runtime/helpers/interopRequireWildcard.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/brick-tree/index.module.css","webpack:///./node_modules/lodash/_baseIsNaN.js","webpack:///./bricks/presentational-bricks/src/_/public-path.js","webpack:///./node_modules/lodash/isArrayLikeObject.js","webpack:///./node_modules/rc-util/lib/Dom/canUseDom.js","webpack:///./bricks/presentational-bricks/src/general-list/GeneralList.shadow.less?7c83","webpack:///delegated ./node_modules/@babel/runtime/helpers/objectSpread2.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/brick-quick-entries/brick-quick-entries.module.css","webpack:///./bricks/presentational-bricks/src/collapsible-card-item/index.shadow.css","webpack:///./bricks/presentational-bricks/src/general-video/style.module.css","webpack:///./bricks/presentational-bricks/src/text-collapse/text-collapse.module.css","webpack:///./bricks/presentational-bricks/src/general-list/GeneralList.shadow.less","webpack:///./node_modules/rc-util/lib/hooks/useState.js","webpack:///./bricks/presentational-bricks/src/brick-delete-confirm/index.module.css","webpack:///./bricks/presentational-bricks/src/brick-tag/index.module.css","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./bricks/presentational-bricks/src/i18n/locales/en.ts","webpack:///./bricks/presentational-bricks/src/i18n/locales/zh.ts","webpack:///./bricks/presentational-bricks/src/i18n/index.ts","webpack:///./bricks/presentational-bricks/src/interfaces/brick-tag.ts","webpack:///./bricks/presentational-bricks/src/brick-tag/index.module.css?683e","webpack:///./bricks/presentational-bricks/src/brick-tag/BrickTag.tsx","webpack:///./bricks/presentational-bricks/src/brick-tag/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-timeline/index.module.css?0b83","webpack:///./bricks/presentational-bricks/src/brick-timeline/TimelineCard.tsx","webpack:///./bricks/presentational-bricks/src/brick-timeline/BrickTimeline.tsx","webpack:///./bricks/presentational-bricks/src/brick-timeline/processor.ts","webpack:///./bricks/presentational-bricks/src/brick-timeline/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-descriptions/BrickDescriptions.module.css?1794","webpack:///./bricks/presentational-bricks/src/brick-descriptions/BrickDescriptions.tsx","webpack:///./bricks/presentational-bricks/src/brick-descriptions/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-tree/index.module.css?2b57","webpack:///./bricks/presentational-bricks/src/brick-tree/BrickTree.tsx","webpack:///./bricks/presentational-bricks/src/brick-tree/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-list/index.module.css?c7fb","webpack:///./bricks/presentational-bricks/src/brick-list/BrickList.tsx","webpack:///./bricks/presentational-bricks/src/brick-list/index.tsx","webpack:///./bricks/presentational-bricks/src/general-pagination/index.module.css?a6ed","webpack:///./bricks/presentational-bricks/src/brick-table/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-general-search/index.module.css?37a0","webpack:///./bricks/presentational-bricks/src/brick-general-search/BrickGeneralSearch.tsx","webpack:///./bricks/presentational-bricks/src/brick-general-search/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-button/BrickButton.tsx","webpack:///./bricks/presentational-bricks/src/brick-button/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-delete-confirm/index.module.css?3695","webpack:///./bricks/presentational-bricks/src/brick-delete-confirm/BrickDeleteConfirm.tsx","webpack:///./bricks/presentational-bricks/src/brick-delete-confirm/index.tsx","webpack:///./node_modules/@next-libs/datetime/src/i18n/constants.ts","webpack:///./node_modules/@next-libs/datetime/src/costTime.ts","webpack:///./node_modules/@next-libs/datetime/src/i18n/locales/en.ts","webpack:///./node_modules/@next-libs/datetime/src/i18n/locales/zh.ts","webpack:///./node_modules/@next-libs/datetime/src/i18n/index.ts","webpack:///./node_modules/@next-libs/datetime/src/humanizeTime.ts","webpack:///./bricks/presentational-bricks/src/brick-link/style.module.css?da09","webpack:///./bricks/presentational-bricks/src/brick-link/BrickLink.tsx","webpack:///./bricks/presentational-bricks/src/brick-humanize-time/BrickHumanizeTime.tsx","webpack:///./bricks/presentational-bricks/src/brick-humanize-time/index.tsx","webpack:///./bricks/presentational-bricks/src/general-pagination/GeneralPagination.tsx","webpack:///./bricks/presentational-bricks/src/general-pagination/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-link/index.tsx","webpack:///./bricks/presentational-bricks/src/template-breadcrumb/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-input/BrickInput.module.css?3241","webpack:///./bricks/presentational-bricks/src/brick-input/BrickInput.tsx","webpack:///./bricks/presentational-bricks/src/brick-input/index.tsx","webpack:///./node_modules/@next-libs/clipboard/src/i18n/constants.ts","webpack:///./node_modules/@next-libs/clipboard/src/Clipboard.tsx","webpack:///./bricks/presentational-bricks/src/brick-utils/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-value-mapping/style.module.css?1ea9","webpack:///./bricks/presentational-bricks/src/brick-value-mapping/BrickValueMapping.tsx","webpack:///./bricks/presentational-bricks/src/brick-value-mapping/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-cluster-type/BrickClusterType.tsx","webpack:///./bricks/presentational-bricks/src/brick-cluster-type/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-alert-level/BrickAlertLevel.tsx","webpack:///./bricks/presentational-bricks/src/brick-alert-level/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-alert-value/BrickAlertValue.tsx","webpack:///./bricks/presentational-bricks/src/brick-alert-value/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-display-structs/BrickDisplayStructs.tsx","webpack:///./bricks/presentational-bricks/src/brick-display-structs/index.tsx","webpack:///./node_modules/@next-libs/cmdb-utils/src/condition-helper/constants.ts","webpack:///./node_modules/@next-libs/cmdb-utils/src/condition-helper/conditionHelper.ts","webpack:///./bricks/presentational-bricks/src/brick-conditional-display/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-conditional-display/style.module.css?52cb","webpack:///./bricks/presentational-bricks/src/brick-conditional-display/BrickConditionalDisplay.tsx","webpack:///./bricks/presentational-bricks/src/brick-collection-instance-execution/BrickCollectionInstanceExecution.tsx","webpack:///./bricks/presentational-bricks/src/brick-collection-instance-execution/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-alert-number/BrickAlertNumber.tsx","webpack:///./bricks/presentational-bricks/src/brick-alert-number/index.tsx","webpack:///./node_modules/@next-sdk/user-service-sdk/src/api/user_service/user_admin/searchAllUsersInfo.ts","webpack:///./node_modules/@next-libs/hooks/src/useUserInfoByNameOrInstanceId/useUserInfoByNameOrInstanceId.ts","webpack:///./node_modules/@next-libs/hooks/src/avatar/useAvatar.tsx","webpack:///./bricks/presentational-bricks/src/brick-user/style.module.css?60c3","webpack:///./bricks/presentational-bricks/src/brick-user/BrickUser.tsx","webpack:///./bricks/presentational-bricks/src/brick-user/index.tsx","webpack:///./bricks/presentational-bricks/src/cost-time/i18n/constants.ts","webpack:///./bricks/presentational-bricks/src/cost-time/CostTime.tsx","webpack:///./bricks/presentational-bricks/src/cost-time/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-alert-status/BrickAlertStatus.tsx","webpack:///./bricks/presentational-bricks/src/brick-alert-status/index.tsx","webpack:///./node_modules/@next-libs/datetime-components/src/i18n/constants.ts","webpack:///./node_modules/@next-libs/datetime-components/src/i18n/locales/en.ts","webpack:///./node_modules/@next-libs/datetime-components/src/i18n/locales/zh.ts","webpack:///./node_modules/@next-libs/datetime-components/src/i18n/index.ts","webpack:///./node_modules/@next-libs/datetime-components/src/datetime-range/DatetimeRange.tsx","webpack:///./node_modules/@next-libs/datetime-components/src/processor/parseDatetimeRange.ts","webpack:///./bricks/presentational-bricks/src/datetime-selector/processor.ts","webpack:///./bricks/presentational-bricks/src/datetime-selector/DatetimeSelector.tsx","webpack:///./bricks/presentational-bricks/src/datetime-selector/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-alert/style.module.css?ef8b","webpack:///./bricks/presentational-bricks/src/images/info-circle-o.svg","webpack:///./bricks/presentational-bricks/src/images/error-circle-o.svg","webpack:///./bricks/presentational-bricks/src/images/success-circle-o.svg","webpack:///./bricks/presentational-bricks/src/images/warning-circle-o.svg","webpack:///./bricks/presentational-bricks/src/images/info-circle-dark.svg","webpack:///./bricks/presentational-bricks/src/images/error-circle-dark.svg","webpack:///./bricks/presentational-bricks/src/images/success-circle-dark.svg","webpack:///./bricks/presentational-bricks/src/images/warning-circle-dark.svg","webpack:///./bricks/presentational-bricks/src/brick-alert/BrickAlert.tsx","webpack:///./bricks/presentational-bricks/src/brick-alert/index.tsx","webpack:///./node_modules/@next-libs/basic-components/src/EmptyResultStatus.ts","webpack:///./bricks/presentational-bricks/src/interfaces/brick-result.ts","webpack:///./node_modules/@next-libs/storage/src/JsonStorage.ts","webpack:///./bricks/presentational-bricks/src/brick-result/components/IllustrationWrapper.tsx","webpack:///./bricks/presentational-bricks/src/brick-result/BrickResult.tsx","webpack:///./bricks/presentational-bricks/src/brick-result/index.tsx","webpack:///./bricks/presentational-bricks/src/dropdown-select/DropdownSelect.module.css?7002","webpack:///./bricks/presentational-bricks/src/dropdown-select/DropdownSelect.tsx","webpack:///./bricks/presentational-bricks/src/dropdown-select/index.tsx","webpack:///./bricks/presentational-bricks/src/button-wrapper/index.module.css?cfbd","webpack:///./bricks/presentational-bricks/src/button-wrapper/ButtonWrapper.tsx","webpack:///./bricks/presentational-bricks/src/button-wrapper/index.tsx","webpack:///./bricks/presentational-bricks/src/general-list/GeneralList.tsx","webpack:///./bricks/presentational-bricks/src/general-list/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-quick-entries/brick-quick-entries.module.css?4347","webpack:///./bricks/presentational-bricks/src/brick-quick-entries/BrickQuickEntries.tsx","webpack:///./bricks/presentational-bricks/src/brick-quick-entries/index.tsx","webpack:///./bricks/presentational-bricks/src/collapsible-card-item/CollapsibleCardItem.tsx","webpack:///./bricks/presentational-bricks/src/collapsible-card-item/index.tsx","webpack:///./bricks/presentational-bricks/src/general-carousel/index.module.css?5fdc","webpack:///./bricks/presentational-bricks/src/general-carousel/GeneralCarousel.tsx","webpack:///./bricks/presentational-bricks/src/general-carousel/index.tsx","webpack:///./bricks/presentational-bricks/src/agent-status/index.tsx","webpack:///./bricks/presentational-bricks/src/agent-status/AgentStatus.tsx","webpack:///./bricks/presentational-bricks/src/dynamic-content/index.tsx","webpack:///./bricks/presentational-bricks/src/entry-card-item/EntryCardItem.module.css?c73c","webpack:///./bricks/presentational-bricks/src/entry-card-item/EntryCardItem.tsx","webpack:///./bricks/presentational-bricks/src/entry-card-item/index.tsx","webpack:///./bricks/presentational-bricks/src/general-video/style.module.css?f9e7","webpack:///./bricks/presentational-bricks/src/general-video/GeneralVideo.tsx","webpack:///./bricks/presentational-bricks/src/general-video/index.tsx","webpack:///./bricks/presentational-bricks/src/log-display/index.module.css?3523","webpack:///./bricks/presentational-bricks/src/log-display/LogDisplay.tsx","webpack:///./bricks/presentational-bricks/src/log-display/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-divider/BrickDivider.module.css?ae98","webpack:///./bricks/presentational-bricks/src/brick-divider/BrickDivider.tsx","webpack:///./bricks/presentational-bricks/src/brick-divider/index.tsx","webpack:///./bricks/presentational-bricks/src/general-iframe/index.ts","webpack:///./bricks/presentational-bricks/src/general-tooltip/GeneralTooltip.module.css?f640","webpack:///./bricks/presentational-bricks/src/general-tooltip/GeneralTooltip.tsx","webpack:///./bricks/presentational-bricks/src/general-tooltip/index.tsx","webpack:///./bricks/presentational-bricks/src/general-transfer/style.module.css?3cfb","webpack:///./bricks/presentational-bricks/src/general-transfer/GeneralTransfer.tsx","webpack:///./bricks/presentational-bricks/src/general-transfer/index.tsx","webpack:///./bricks/presentational-bricks/src/general-label/GeneralLabel.module.css?4a7f","webpack:///./bricks/presentational-bricks/src/general-label/GeneralLabel.tsx","webpack:///./bricks/presentational-bricks/src/general-label/index.tsx","webpack:///./bricks/presentational-bricks/src/basic-progress/BasicProgress.tsx","webpack:///./bricks/presentational-bricks/src/basic-progress/style.module.css?d72d","webpack:///./bricks/presentational-bricks/src/basic-progress/index.tsx","webpack:///./bricks/presentational-bricks/src/copyable-text/index.module.css?eb8a","webpack:///./bricks/presentational-bricks/src/copyable-text/CopyableText.tsx","webpack:///./bricks/presentational-bricks/src/copyable-text/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-calendar/index.tsx","webpack:///./bricks/presentational-bricks/src/avatar-upload/style.module.css?ef96","webpack:///./bricks/presentational-bricks/src/avatar-upload/AvatarUpload.tsx","webpack:///./bricks/presentational-bricks/src/avatar-upload/index.tsx","webpack:///./node_modules/@next-libs/basic-components/src/Badge.tsx","webpack:///./bricks/presentational-bricks/src/general-badge/GeneralBadge.module.css?0741","webpack:///./bricks/presentational-bricks/src/general-badge/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-rate/BrickRate.tsx","webpack:///./bricks/presentational-bricks/src/brick-rate/index.tsx","webpack:///./bricks/presentational-bricks/src/general-image/GeneralImage.module.css?5bc5","webpack:///./bricks/presentational-bricks/src/general-image/GeneralImage.tsx","webpack:///./bricks/presentational-bricks/src/general-image/index.tsx","webpack:///./bricks/presentational-bricks/src/info-display-card-list/index.module.css?11ef","webpack:///./bricks/presentational-bricks/src/info-display-card-list/InfoDisplayCardList.tsx","webpack:///./bricks/presentational-bricks/src/info-display-card-list/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-illustration/index.module.css?4f0f","webpack:///./bricks/presentational-bricks/src/brick-illustration/BrickIllustration.tsx","webpack:///./bricks/presentational-bricks/src/brick-illustration/index.tsx","webpack:///./bricks/presentational-bricks/src/dynamic-grid-container/DynamicGridContainer.module.css?b4dd","webpack:///./bricks/presentational-bricks/src/dynamic-grid-container/DynamicGridContainer.tsx","webpack:///./bricks/presentational-bricks/src/dynamic-grid-container/index.tsx","webpack:///./bricks/presentational-bricks/src/general-slider/GeneralSlider.module.css?db89","webpack:///./bricks/presentational-bricks/src/general-slider/GeneralSlider.tsx","webpack:///./bricks/presentational-bricks/src/general-slider/index.tsx","webpack:///./bricks/presentational-bricks/src/custom-processors/flattenTreeDataListAndCalcRowSpan.ts","webpack:///./bricks/presentational-bricks/src/rank-table/RankTable.module.css?fb00","webpack:///./bricks/presentational-bricks/src/rank-table/RankTable.tsx","webpack:///./bricks/presentational-bricks/src/rank-table/RankTableHelper.tsx","webpack:///./bricks/presentational-bricks/src/rank-table/index.tsx","webpack:///./bricks/presentational-bricks/src/dropdown-button/DropdownButton.module.css?13b5","webpack:///./bricks/presentational-bricks/src/dropdown-button/DropdownButton.tsx","webpack:///./bricks/presentational-bricks/src/dropdown-button/index.tsx","webpack:///./bricks/presentational-bricks/src/lazy-bricks/index.ts","webpack:///./bricks/presentational-bricks/src/basic-icon/BasicIcon.module.css?3387","webpack:///./bricks/presentational-bricks/src/basic-icon/BasicIcon.tsx","webpack:///./bricks/presentational-bricks/src/basic-icon/index.tsx","webpack:///./bricks/presentational-bricks/src/text-collapse/text-collapse.module.css?4b23","webpack:///./bricks/presentational-bricks/src/text-collapse/TextCollapse.tsx","webpack:///./bricks/presentational-bricks/src/text-collapse/index.tsx","webpack:///./node_modules/react-sortable-hoc/dist/react-sortable-hoc.esm.js","webpack:///./bricks/presentational-bricks/src/table-transfer/index.module.css?d777","webpack:///./bricks/presentational-bricks/src/table-transfer/TableTransfer.tsx","webpack:///./bricks/presentational-bricks/src/table-transfer/index.tsx","webpack:///./bricks/presentational-bricks/src/collapse-info-list/CollapseInfoList.module.css?99b8","webpack:///./bricks/presentational-bricks/src/collapse-info-list/CollapseInfoList.tsx","webpack:///./bricks/presentational-bricks/src/collapse-info-list/index.tsx","webpack:///./bricks/presentational-bricks/src/digital-number/DigitalNumber.module.css?5d89","webpack:///./bricks/presentational-bricks/src/digital-number/DigitalNumber.tsx","webpack:///./bricks/presentational-bricks/src/digital-number/index.tsx","webpack:///./bricks/presentational-bricks/src/general-preview-image/index.tsx","webpack:///./bricks/presentational-bricks/src/brick-user-group/BrickUserGroup.tsx","webpack:///./bricks/presentational-bricks/src/brick-user-group/index.tsx","webpack:///./bricks/presentational-bricks/src/tree-transfer/treeShuttleBox/share.module.css?bf57","webpack:///./bricks/presentational-bricks/src/tree-transfer/treeShuttleBox/tool.ts","webpack:///./bricks/presentational-bricks/src/tree-transfer/treeShuttleBox/useTreeContext.tsx","webpack:///./bricks/presentational-bricks/src/tree-transfer/treeShuttleBox/TreeShuttleBoxLeft.tsx","webpack:///./bricks/presentational-bricks/src/tree-transfer/treeShuttleBox/TreeShuttleBoxRight.tsx","webpack:///./bricks/presentational-bricks/src/tree-transfer/treeShuttleBox/useTreeShuttle.ts","webpack:///./bricks/presentational-bricks/src/tree-transfer/treeShuttleBox/TreeShuttleBox.tsx","webpack:///./bricks/presentational-bricks/src/tree-transfer/treeShuttleBox/TreeShuttleButton.tsx","webpack:///./bricks/presentational-bricks/src/tree-transfer/TreeTransfer.tsx","webpack:///./bricks/presentational-bricks/src/tree-transfer/index.tsx","webpack:///./bricks/presentational-bricks/src/banner-display-card-list/BannerDisplayCardList.module.css?42a5","webpack:///./bricks/presentational-bricks/src/banner-display-card-list/BannerDisplayCardList.tsx","webpack:///./bricks/presentational-bricks/src/banner-display-card-list/index.tsx","webpack:///./bricks/presentational-bricks/src/images/card-bg-bottom-left.svg","webpack:///delegated ./node_modules/rc-motion/es/index.js from dll-reference dll","webpack:///delegated ./node_modules/process/browser.js from dll-reference dll","webpack:///delegated ./node_modules/react-i18next/dist/es/index.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/brick-value-mapping/style.module.css","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:///./node_modules/lodash/_isFlattenable.js","webpack:///delegated ./node_modules/lodash/_arrayPush.js from dll-reference dll","webpack:///./node_modules/lodash/_strictIndexOf.js","webpack:///./node_modules/@next-libs/cmdb-utils/src/parseTemplate.ts","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./bricks/presentational-bricks/src/tree-transfer/treeShuttleBox/share.module.css","webpack:///delegated ./node_modules/lodash/isObjectLike.js from dll-reference dll","webpack:///./node_modules/rc-util/lib/KeyCode.js","webpack:///./bricks/presentational-bricks/src/brick-general-search/index.module.css","webpack:///./node_modules/css-loader/dist/runtime/getUrl.js","webpack:///delegated ./node_modules/@fortawesome/react-fontawesome/index.es.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/brick-user/style.module.css","webpack:///delegated ./node_modules/react-dnd/dist/esm/index.js from dll-reference DllOfReactDnd","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/rc-util/lib/hooks/useEvent.js","webpack:///delegated ./node_modules/@babel/runtime/helpers/slicedToArray.js from dll-reference dll","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js from dll-reference dll","webpack:///external \"DllOfAce\"","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/inherits.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/brick-list/index.module.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/general-image/GeneralImage.module.css","webpack:///./node_modules/lodash/_baseFindIndex.js","webpack:///./bricks/presentational-bricks/src/brick-descriptions/BrickDescriptions.module.css","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///delegated ./node_modules/history/esm/history.js from dll-reference dll","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/lodash/_baseDifference.js","webpack:///delegated ./node_modules/lodash/lodash.js from dll-reference dll","webpack:///delegated ./node_modules/lodash/isArrayLike.js from dll-reference dll","webpack:///delegated ./node_modules/rc-util/es/Dom/canUseDom.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/general-preview-image/GeneralPreviewImage.module.css","webpack:///./bricks/presentational-bricks/src/images/card-bg-bottom-right.svg","webpack:///delegated ./node_modules/lodash/_defineProperty.js from dll-reference dll","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/info-display-card-list/index.module.css","webpack:///./bricks/presentational-bricks/src/dropdown-button/DropdownButton.module.css","webpack:///delegated ./node_modules/@next-core/brick-icons/dist/index.esm.js from dll-reference dll","webpack:///delegated ./node_modules/@next-core/illustrations/dist/index.esm.js from dll-reference dll","webpack:///delegated ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js from dll-reference dll","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/lodash/_baseIndexOf.js","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:///./bricks/presentational-bricks/src/brick-timeline/index.module.css","webpack:///./node_modules/immutability-helper/index.js","webpack:///delegated ./node_modules/rc-util/es/hooks/useLayoutEffect.js from dll-reference dll","webpack:///delegated ./node_modules/classnames/index.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/general-preview-image/components/PreviewGroup.tsx","webpack:///./node_modules/@rc-component/portal/es/Context.js","webpack:///./node_modules/@rc-component/portal/es/useDom.js","webpack:///./node_modules/rc-util/es/Dom/dynamicCSS.js","webpack:///./node_modules/@rc-component/portal/es/useScrollLocker.js","webpack:///./node_modules/@rc-component/portal/es/util.js","webpack:///./node_modules/@rc-component/portal/es/mock.js","webpack:///./node_modules/@rc-component/portal/es/Portal.js","webpack:///./node_modules/@rc-component/portal/es/index.js","webpack:///./bricks/presentational-bricks/src/general-preview-image/components/Operations.module.css?4e5a","webpack:///./bricks/presentational-bricks/src/general-preview-image/components/Operations.tsx","webpack:///./bricks/presentational-bricks/src/general-preview-image/components/previewConfig.ts","webpack:///./bricks/presentational-bricks/src/general-preview-image/components/hooks/useImageTransform.ts","webpack:///./bricks/presentational-bricks/src/general-preview-image/components/getFixScaleEleTransPosition.ts","webpack:///./bricks/presentational-bricks/src/general-preview-image/components/Preview.tsx","webpack:///./bricks/presentational-bricks/src/general-preview-image/components/Image.tsx","webpack:///./bricks/presentational-bricks/src/general-preview-image/GeneralPreviewImage.module.css?a195","webpack:///./bricks/presentational-bricks/src/general-preview-image/GeneralPreviewImage.tsx","webpack:///delegated ./node_modules/@babel/runtime/helpers/interopRequireDefault.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/general-label/GeneralLabel.module.css","webpack:///./node_modules/react-avatar-editor/dist/index.js","webpack:///./node_modules/@next-libs/basic-components/dist/esm/GeneralIcon.module.css","webpack:///./node_modules/lodash/_baseFlatten.js","webpack:///./bricks/presentational-bricks/src/general-transfer/style.module.css","webpack:///./node_modules/lodash/_arrayIncludesWith.js","webpack:///external \"dll\"","webpack:///./bricks/presentational-bricks/src/dynamic-grid-container/DynamicGridContainer.module.css","webpack:///delegated ./node_modules/i18next/dist/esm/i18next.js from dll-reference dll","webpack:///delegated ./node_modules/lodash/isArray.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/brick-illustration/index.module.css","webpack:///./node_modules/rc-util/lib/raf.js","webpack:///./bricks/presentational-bricks/src/general-badge/GeneralBadge.module.css","webpack:///./bricks/presentational-bricks/src/collapsible-card-item/index.shadow.css?b8ae","webpack:///delegated ./node_modules/rc-util/es/ref.js from dll-reference dll","webpack:///./node_modules/rc-util/lib/warning.js","webpack:///./bricks/presentational-bricks/src/button-wrapper/index.module.css","webpack:///./node_modules/lodash/constant.js","webpack:///delegated ./node_modules/@next-core/brick-http/dist/index.esm.js from dll-reference dll","webpack:///delegated ./node_modules/lodash/_arrayMap.js from dll-reference dll","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/banner-display-card-list/BannerDisplayCardList.module.css","webpack:///./bricks/presentational-bricks/src/brick-result/index.shadow.less","webpack:///delegated ./node_modules/antd/es/index.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/brick-divider/BrickDivider.module.css","webpack:///./bricks/presentational-bricks/src/brick-input/BrickInput.module.css","webpack:///./node_modules/lodash/_apply.js","webpack:///delegated ./node_modules/rc-dialog/es/index.js from dll-reference dll","webpack:///delegated ./node_modules/react-dom/index.js from dll-reference dll","webpack:///./node_modules/lodash/_arrayIncludes.js","webpack:///./node_modules/rc-util/lib/hooks/useMergedState.js","webpack:///delegated ./node_modules/rc-util/es/Dom/contains.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/general-slider/GeneralSlider.module.css","webpack:///./bricks/presentational-bricks/src/rank-table/RankTable.module.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/defineProperty.js from dll-reference dll","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/images/card-bg-top-right.svg","webpack:///./bricks/presentational-bricks/src/brick-table/BrickTable.module.css?1bf5","webpack:///./bricks/presentational-bricks/src/brick-table/BrickTable.tsx","webpack:///delegated ./node_modules/lodash/_Symbol.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/i18n/constants.ts","webpack:///./bricks/presentational-bricks/src/copyable-text/index.module.css","webpack:///./bricks/presentational-bricks/src/general-pagination/index.module.css","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./bricks/presentational-bricks/src/brick-link/style.module.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/extends.js from dll-reference dll","webpack:///./node_modules/rc-util/lib/Dom/css.js","webpack:///./bricks/presentational-bricks/src/basic-icon/BasicIcon.module.css","webpack:///delegated ./node_modules/react/index.js from dll-reference DllOfReactDnd","webpack:///./bricks/presentational-bricks/src/digital-number/DigitalNumber.module.css","webpack:///./bricks/presentational-bricks/src/basic-progress/style.module.css","webpack:///delegated ./node_modules/react-dnd-html5-backend/dist/esm/index.js from dll-reference DllOfReactDnd","webpack:///./bricks/presentational-bricks/src/brick-result/index.shadow.less?73b9","webpack:///delegated ./node_modules/rc-util/es/getScrollBarSize.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/collapse-info-list/CollapseInfoList.module.css","webpack:///./bricks/presentational-bricks/src/log-display/index.module.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/defineProperty.js from dll-reference dll","webpack:///./node_modules/rc-util/lib/Dom/addEventListener.js","webpack:///./bricks/presentational-bricks/src/brick-table/BrickTable.module.css","webpack:///./node_modules/@next-libs/basic-components/src/getExtendedLocationDescriptor.ts","webpack:///./node_modules/@next-libs/basic-components/src/Link.tsx","webpack:///delegated ./node_modules/lodash/_baseUnary.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/general-carousel/index.module.css","webpack:///./bricks/presentational-bricks/src/avatar-upload/style.module.css","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/objectSpread.js from dll-reference dll","webpack:///./node_modules/rc-util/lib/hooks/useLayoutEffect.js","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/createClass.js from dll-reference dll","webpack:///./node_modules/lodash/_setToString.js","webpack:///delegated ./node_modules/moment/moment.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/images/card-bg-top-left.svg","webpack:///delegated ./node_modules/@babel/runtime/helpers/esm/extends.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/dropdown-select/DropdownSelect.module.css","webpack:///./node_modules/@next-libs/basic-components/src/utils/transformColor.ts","webpack:///./bricks/presentational-bricks/src/brick-table/brickTableHelper.ts","webpack:///delegated ./node_modules/lodash/_cacheHas.js from dll-reference dll","webpack:///delegated ./node_modules/@babel/runtime/helpers/asyncToGenerator.js from dll-reference dll","webpack:///./bricks/presentational-bricks/src/general-tooltip/GeneralTooltip.module.css","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/difference.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","DllOfReactDnd","___CSS_LOADER_EXPORT___","locals","__webpack_public_path__","PUBLIC_ROOT","PUBLIC_ROOT_WITH_VERSION","isArrayLike","isObjectLike","default","result","toString","___CSS_LOADER_API_IMPORT___","_interopRequireWildcard","_interopRequireDefault","defaultValue","destroyRef","React","useRef","_React$useState","useState","_React$useState2","_slicedToArray2","setValue","useEffect","current","updater","ignoreDestroy","nativeNow","Date","now","func","count","lastCalled","stamp","remaining","arguments","apply","locale","K","AGENT_STATUS_NORMAL","AGENT_STATUS_ABNORMAL","AGENT_STATUS_NOT_INSTALLED","AGENT_STATUS_UNINSTALLED","AGENT_STATUS_UNDER_MAINTENANCE","ALERT_MSG_SENDED","ALERT_CONVERGED","ALERT_RECOVERED","ALERT_MANUAL_RECOVERED","ALERT_SHIELDED","PRESENTATIONAL_BRICKS","PAGINATION_TOTAL_TEXT","PAGINATION_TOTAL_UNIT","UNKNOWN_ERROR","NO_DATA","COLLECTION_INSTANCE_SYNCHRONIZE","COLLECTION_INSTANCE_EXECUTE","DELETE","CROP_TITLE","COPY","COPY_FAILED","COPIED","NO_TEXT_TO_COPY","CHOSEN_OPTIONS","CLEAR","SELECTED","SELECT_ALL","ITEMS","SELECTED_OPTIONS","FULL_TEXT_SEARCH","IP_SEARCH","SORT","PREVIEW","i18next","addResourceBundle","NS_PRESENTATIONAL_BRICKS","en","zh","Color","TagTypeProps","circleIcon","lib","icon","prefix","BrickTag","props","componentType","tagList","configProps","defaultCheckedTag","showTagCircle","color","closable","cancelable","tooltipProps","afterBrick","checkedTag","setCheckedTag","closedTag","setClosedTag","isArray","hoverTag","setHoverTag","onChange","item","checked","nextCheckedTag","multipleCheck","filter","nextCheckedItems","includes","handleOnChange","renderTag","TypeComponent","map","label","tooltip","itemColor","disabled","disabledTooltip","restProps","hover","Tag","style","tagStyle","tagHoverStyle","onClick","handleOnClick","tagCheckedStyle","specificColor","tagNode","className","classNames","grayTag","grayInverseTag","round","shape","closableTag","tagCircleIcon","colorTag","disabledTag","checkableTag","CheckableTag","onClose","newClosedTag","differenceBy","handleOnClose","onMouseEnter","onMouseLeave","marginRight","marginLeft","verticalAlign","fontSize","GeneralIcon","title","brickTag","tagTextOverflow","textEllipsis","tagsLabel","useBrick","BrickTagElement","attribute","Boolean","this","display","_render","ReactDOM","unmountComponentAtNode","mutableProps","dataSource","warn","fields","_initData","_handleOnChange","_handleOnClose","_handleOnClick","isConnected","render","showCard","_getBrickTagNode","tagClose","emit","items","checkedKeys","defaultAction","checkedUpdate","defaultActionV2","checkedUpdateV2","tag","tagClick","UpdatingElement","customElements","define","getTitle","link","Link","to","itemData","TimelineBaseCard","description","timestamp","highlight","itemContainer","leftArea","dateTime","format","TimelineExtensionCard","showLeftDate","position","rightArea","time","dateContainer","month","day","date","BrickTimeline","getGeneralProps","useCallback","pick","renderTimeline","list","existedDateTime","brickTimeline","index","timeType","moment","Item","statusMap","status","itemList","getComponent","timelineGroup","category","groupBy","entries","groupName","groupByMoth","BrickTimelineElement","clickEvent","_handleClick","BrickDescriptions","descriptionTitle","column","size","bordered","layout","hideGroups","extraBrick","hideGroupsSet","Set","concat","renderBrick","extra","styles","descriptionWrapper","has","group","idx","text","component","itemProps","id","descriptionItem","field","Array","brick","ref","el","assign","properties","renderLegacyComponent","isPlainObject","JSON","stringify","BrickDescriptionsElement","descriptionList","descriptionCardWrapper","_getBrickDescriptionsNode","DirectoryTree","Tree","compareFunMap","$eq","eq","$lt","lt","$lte","lte","$gt","gt","$gte","gte","$ne","value1","value2","getAllKeys","nodes","keys","forEach","node","children","disableCheckbox","checkable","nodeCheckable","getExpandedKeysBySearchValue","searchValue","expandedKeys","options","isHit","childrenLength","searchParent","toLocaleLowerCase","alsoSearchByKey","BrickTree","searchValueLength","selectedKeys","_selectedKeys","_expandedKeys","searchable","searchQ","placeholder","checkAllEnabled","checkedFilterConfig","operator","checkedNotRelevant","suffixBrick","suffixStopEvent","afterSearchBrick","showSpecificationTitleStyle","defaultExpandAll","deselectable","isFilter","onSearch","iconUseBrick","isDirectory","hideBackground","allChecked","setAllChecked","indeterminate","setIndeterminate","setSelectedKeys","filterCheckedKeys","setFilterCheckedKeys","setCheckedKeys","setExpandedKeys","setSearchValue","inputValue","setInputValue","treeContainerRef","nodeMatchedRef","defaultData","useMemo","getTreeNodes","_icon","isMenuIcon","uniqueId","filterTreeKeys","flat","arr","v","treeData","loop","filterTrees","cloneDeep","strTitle","_key","lowerCaseSearchValue","indexOf","kIndex","_checkedKeys","difference","intersection","checkedKeySet","every","getAllCheckedState","debounce","Search","marginBottom","data-testid","isEmpty","alignItems","_filterCheckedKeys","onCheck","i18n","hideSelectedNum","number","treeWrapper","withSuffix","titleSpace","getTreeElement","titleRender","_title","allOrDefaultFlag","beforeStr","substring","matchStr","afterStr","nodeEl","closest","treeContainerEl","scrollBy","getBoundingClientRect","top","matchTextTotal","matchText","allOrDefault","suffixBrickWrapper","stopPropagation","checkStrictly","onSelect","info","onExpand","image","Empty","PRESENTED_IMAGE_SIMPLE","BrickTreeElement","String","flexDirection","treeSelect","treeSelectV2","treeCheck","treeSearch","treeExpand","_handleSelect","_handleExpand","_handleCheck","_handleSearch","BrickList","isCardList","split","cardList","renderItem","meta","content","originItemProps","itemBrick","itemStyle","Meta","avatar","BrickListElement","HTMLElement","connectedCallback","disconnectedCallback","getBrickListNode","_configProps","_itemList","_itemBrick","_itemStyle","_isCardList","_showCard","_fields","restField","resultItem","k","set","BrickTableElement","__unstable_doNotDecorate","_columns","_isInSelect","_originalDataSource","_dataSource","_pureSource","stripEmptyExpandableChildren","columnName","expandable","childrenColumnName","stripEmptyExpandableChildrenByName","_total","total","page","pageSize","Number","x","__deprecated_and_for_compatibility_only","_finalConfigProps","getModifyColumns","ascend","descend","method","q","exactSearch","detail","trim","toLowerCase","shouldUpdateUrlParams","history","getHistory","urlSearchParams","URLSearchParams","location","search","qField","notify","frontSearch","delete","frontSearchQuery","columns","tempDataSource","handleFrontendFilterSource","order","isNil","handleFrontendSorter","columnKey","sort","handleFrontendFilters","filterKeys","frontSearchFilterKeys","dataIndex","filteredChildren","some","rowKey","parent","matchedParent","_findParentByChildKeyValue","selectedRowKeys","rows","_getRowKey","flattenedList","flatMapDeep","row","find","rowData","selectedRows","_findSelectedRowsByRowKeys","rowKeyRowMap","keyBy","_selected","_selectedRowKeys","_allChildren","child","rowKeyValue","autoSelectParentWhenAllChildrenSelected","_selectedRow","selectedRowKeySet","uniq","pullAll","extraRowKeyRowMap","extraRows","_selectedRows","_selectUpdateEventDetailField","_selectUpdateEventDetailKeys","merge","_selectUpdateEventDetailExtra","_selectUpdateEventName","dispatchEvent","CustomEvent","selectUpdate","selectRowKeysUpdate","_getSelectedRowsWithChildren","allChildren","selectAllChildren","_disabledChildrenKeys","storeCheckedByUrl","_updateUrlChecked","selected","changeRows","allParentKeys","changedParentRows","toChangedChildrenKeys","flatten","cr","checkedOptions","_getCheckedFromUrl","pull","pushQuery","join","pagination","filters","sorter","filterUpdate","newPage","pageUpdate","isSort","sortUpdate","columnFiltersUpdate","frontendSearch","shouldRenderWhenUrlParamsUpdate","role","direction","a","b","aValue","bValue","filtersArray","expanded","record","expandedRowKeys","pullKeys","recordChildren","keysToPull","rowExpand","expandedRows","expandRowsChange","rowDrag","allKeys","getKeysOfData","hiddenColumns","sortable","draggable","handleFrontendDataChange","_initConfigProps","wrapperConfig","BrickTable","emptyUseBrick","_error","showHeader","expandedRowBrick","expandIconAsCell","expandIconColumnIndex","expandRowByClick","defaultExpandAllRows","_handleOnExpand","onExpandedRowsChange","_handleOnExpandedRowsChange","tableDraggable","onDrag","_handleOnDrag","zebraPattern","expandIcon","scroll","scrollConfigs","optimizedColumns","ellipsisInfo","thTransparent","acceptType","showHeaderExpandAll","xSmallSizeTable","allRows","getRowsOfData","_getAllRows","rowDisabledConfig","defaultPagination","showSizeChanger","pageSizeOptions","showTotal","totals","paginationStyle","totalText","rowSelection","showSelectInfo","renderSelectInfo","defaultRowSelection","defaultSelectAll","_handleDefaultSelectAll","_handleOnSelect","onSelectAll","_handleSelectAll","_handleRowSelectChange","preserveSelectedRowKeys","getCheckboxProps","config","fun","rowSelec","sortOrder","filteredValue","filtered","f","sizeClassMap","small","input","btn","large","extraLarge","BrickGeneralSearch","forwardRef","query","setQuery","handleOnSearch","onUpdate","debounceValueEmit","debounceTime","searchTypeEnabled","selectSearchBox","searchBoxStyleTypeDefault","searchBoxStyleType","selectType","width","searchType","onSearchTypeChange","Option","selectSearchInputContainer","allowClear","searchInput","onPressEnter","autoFocus","disableAutofocus","onBlur","searchBtn","buttonStyle","searchInputContainer","roundSearchInputContainer","roundSmallSearchInputContainer","roundExtraLargeInputContainer","largeSearchInputContainer","inputStyle","BrickGeneralSearchElement","bubbles","blurEvent","inputRef","focus","blur","shouldTrimQuery","defaultArgs","queryChange","queryChangeV2","searchTypeChange","_handleUpdate","_handleSearchTypeChange","_handleBlur","BrickButton","BrickButtonElement","_text","CardTitle","highLight","CardBody","handleChange","BrickDeleteConfirm","setDisabled","setContent","deleteName","visible","onOk","onDelete","onCancel","handleCancel","okText","cancelText","okType","okButtonProps","loading","destroyOnClose","maskClosable","BrickDeleteConfirmElement","_isVisible","argsPath","_type","_keySeparator","_deleteName","_handleOnDelete","close","_loading","open","initData","updateData","updateLoading","costTime","cost","start","end","diff","milliseconds","Math","max","seconds","floor","minutes","hours","days","unit","MONTHS","DAYS","HOURS","MINUTES","SECONDS","MILL_SECONDS","findIndex","toFixed","chain","YESTERDAY","TODAY","FUTURE_AFTER","FORMAT_SHORT","FORMAT_SHORT_DAY","TEN_HOURS_TEN_MINUTES_TEST","OO_TWO_ONE_SECONDS","ONE_TWO_SECONDS","HumanizeTimeFormat","BrickLink","native","url","href","iconAlign","linkProps","labelEle","underLine","cssStyle","borderBottomColor","labelColor","linkContent","disabledLink","commonProps","handleClick","textLink","notToJumpWhenEmpty","hideExternalIcon","externalIcon","BrickHumanizeTime","ts","isMicrosecond","inputFormat","outputFormat","isCostTime","formatter","unix","auto","Infinity","add","fFull","fMedium","fShort","fShort24","fDefault","fHourMinute","getAccurateTime","year","isBefore","clone","isSame","full","relative","duration","min","humanize","future","accurate","humanizeTime","BrickHumanizeTimeElement","parseTemplate","detailUrlTemplate","GeneralPagination","useTranslation","onlyShowTotal","GeneralPaginationElement","shouldNotify","BrickLinkElement","linkClick","urlTemplate","labelField","TemplateBreadcrumbElement","_updateBreadcrumbs","appBar","getRuntime","_originalBreadcrumbs","element","breadcrumb","breadcrumbs","pathname","hash","setBreadcrumb","BrickInput","inputVal","setInputVal","handleValueEmit","handleValueChange","trigger","searchIcon","BrickInputElement","_defaultValKey","handleDefaultVal","val","_defaultValue","inputEmit","inputChange","handleValueNotify","copyToClipboard","success","listener","clipboard","clipboardData","clearData","setData","preventDefault","addEventListener","execCommand","textArea","body","select","removeChild","removeEventListener","log","BrickUtilsElement","handleHttpError","messages","dom","querySelector","copy","BrickValueMapping","mapping","triggerClickEvent","showBg","rules","ret","valueStr","rule","ok","match","getMatch","elem","wrapIconText","iconSize","placement","isTextEllipsis","customTag","wrapper","BrickValueMappingElement","valueMappingClick","gray","purple","green","blue","cyan","BrickClusterType","objectId","BrickClusterTypeElement","0","1","orange","2","red","warning","critical","BrickAlertLevel","BrickAlertLevelElement","BrickAlertValue","alertEvent","comparator","compareMapping","alertValue","level","bigger_than","smaller_than","isInteger","BrickAlertValueElement","BrickDisplayStructs","displayType","emptyText","isObject","separator","partField","BrickDisplayStructsElement","LogicalOperator","ConditionOperator","compareFuncMap","ne","BrickConditionalDisplay","condition","checkConditionSatisfied","and","logicalStatement","or","conditionOperator","isConditionSatisfied","backgroundColor","borderColor","background","renderDisplay","BrickConditionalDisplayElement","BrickCollectionInstanceExecution","buttonText","ids","BrickCollectionInstanceExecutionElement","collectionInstanceIds","_ids","updateSelectedCollectionInstances","BrickAlertNumber","alertNumber","BrickAlertNumberElement","UserAdminApi_searchAllUsersInfo","_ref","_asyncToGenerator","http","post","_x","_x2","getUserInfoByNameOrInstanceId","makeThrottledAggregation","$or","$in","instanceId","nickname","user_email","user_tel","user_icon","user_memo","useUserInfoByNameOrInstanceId","nameOrInstanceId","user","setUser","setLoading","isSubscribed","then","userInfo","finally","getAvatar","conf","useAvatar","setConf","updateConfig","Avatar","BrickUser","avatarSrc","setAvatarSrc","userName","setUserName","userNameOrId","nickName","setNickName","showKey","setShowKey","iconUrl","iconMargin","margin","showNicknameOrUsername","customTooltip","replace","hideAvatar","hideUsername","displayShowKey","BrickUserElement","username","showNickname","CostTime","startTime","endTime","unitStyle","CostTimeProcess","CostTimeElement","BrickAlertStatus","isRecover","recoverType","3","manualRecover","BrickAlertStatusElement","NEARLY_AN_HOUR","NEARLY_24_HOURS","LAST_7_DAYS","NEARLY_30_DAYS","SPECIFIED_RANGE","QUICK_SELECTION","CONFIRM","START_DATE","END_DATE","defaultRangeOptionList","range","DatetimeRange","Component","constructor","super","dateRange","setState","specifiedDate","dates","onConfirm","hide","state","from","selectNearDays","subtract","endOf","rangeDays","defaultInitRange","customInitRange","customTimeRange","initDateRange","rangeOptionList","getButtonText","labelStyle","lineHeight","fontWeight","Group","handleRangeChange","Button","RangePicker","showTime","onDateChange","disabledDate","onCalendarChange","calendarChange","save","onVisibleChange","handleVisibleChange","parseDatetimeRange","startOf","matches","exec","processResolution","resolution","transformMap","convertToSecond","DatetimeSelector","rangeList","datetimeSelected","DatetimeSelectorElement","datetimeSelectedEvent","datetimeSelectedV2Event","formatRange","transformToTimestamp","datetimeSelectedV3Event","SvgInfoCircleO","height","viewBox","xmlns","transform","fill","fillRule","stroke","strokeWidth","strokeLinecap","strokeLinejoin","cx","cy","rx","ry","SvgErrorCircleO","SvgSuccessCircleO","SvgWarningCircleO","SvgInfoCircleDark","opacity","SvgErrorCircleDark","fillOpacity","SvgSuccessCircleDark","SvgWarningCircleDark","BrickAlert","show","setShow","theme","useCurrentTheme","enableMessageSlot","foldDesc","messageStyle","cursor","foldDescLabel","rotate","action","enableActionSlot","desc","enableDescSlot","closeOnce","getThemeIcon","lightIcon","darkIcon","customIcon","iconRender","componentStyrle","classnames","noDescription","noBorderRadio","showIcon","closeText","EmptyResultStatus","BrickResultStatus","storage","setItem","getItem","parse","removeItem","clear","localStorage","BrickAlertElement","localStorageKey","stripLocalStorageUrlSuffix","eleMap","ele","slot","renderPseudoSlot","slotName","pseudoSlotMounted","parentNode","append","IconSize","iconSizeMap","Small","maxWidth","Middle","Large","XLarge","Unset","IllustrationWrapper","imageStyle","useNewIllustration","app","useCurrentApp","isFeatureFlag","useFeatureFlags","isSupportedApp","getMiscSettings","supportNewIllustrations","illustrationConfig","translateIllustrationConfig","getIllustration","objectFit","emptyResultStatusMap","BrowserTooOld","NoData","NoHistoryVersion","NoVisitRecord","SearchEmpty","WelcomeToCreate","BrickResult","emptyResultStatus","values","brickResultStatus","subTitle","emptyResultSize","illustrationsConfig","BrickResultElement","shadowRoot","attachShadow","styleElement","textContent","_mountPoint","customTitle","DropdownSelect","labelFontSize","optionTitle","optionContent","valuePath","selectTipText","selectBoxStyle","hideLabel","selectedItem","option","setVisible","_label","menu","heightFix","maxHeight","overflow","dropdownButtonType","menuBox","context","flex","multiSelectMenu","defaultSelectedKeys","selectable","multiple","onDeselect","minSelectedItemLength","emptyImage","padding","isNotEmptyArr","overlay","multipleSelect","dropdownTrigger","dropdownTriggerShape","buttonIcon","tipBrick","dropdownLabelBox","multipleLabel","dropdownArrow","dropdownTriggerStyle","dropdownLabel","DropdownSelectElement","selectChange","multipleSelectChange","_handleChange","_multipleSelectChange","ButtonWrapper","buttonWrapper","ButtonWrapperElement","_properties","GeneralList","cardListContainer","cardMinWidth","gridTemplateColumns","cardWidth","GeneralListElement","getGeneralListNode","BrickQuickEntries","useBricks","propsData","renderLink","col","links","linkWrapper","clickLink","multiCardEntranceWrapper","entranceWrapper","gridTemplateRows","containerStyle","elements","j","titleList","titleIconClick","left","divider","multiCardGeneralVerticalLine","verticalLine","horizontalLine","BrickQuickEntriesElement","quickEntries","_titleIconClick","bodyStyle","justifyContent","hoverable","CollapsibleCardItem","cardStyle","isActive","borderBottom","showSubscript","subscriptIconConfig","customHeader","iconStyle","cardTitle","cardDesc","hideOperate","operatingAreaStyle","contentStyle","CollapsibleCardItemElement","_shadowRoot","disableClickHeaderToOpen","disableClickHeaderToClose","composedPath","subscriptConfig","isEqual","isNotEqual","togglePanel","setSubscription","pickFields","fieldKey","collapseChange","GeneralCarousel","speed","slidesToShow","slidesToScroll","autoplay","dots","components","carouselStyle","pauseOnDotsHover","adaptiveHeight","infinite","responsive","onHandleClick","noDataDesc","arrows","dotsTheme","autoplaySpeed","dotPosition","useLazyLoad","comps","compact","setEleDisplay","selector","querySelectorAll","firstChild","carousel","prevArrow","nextArrow","onInit","beforeChange","currentSlide","nextSlide","afterChange","slideClickCallback","customContainer","renderCustomBrick","comp","renderCustomComp","generalCarousel","AgentStatusType","GeneralCarouselElement","curSlide","generalCarouselClick","handleClickEvent","AgentStatus","NORMAL","ABNORMAL","NOT_INSTALLED","UNINSTALLED","UNDER_MAINTENANCE","NORMAL_EN","ABNORMAL_EN","NOT_INSTALLED_EN","UNDER_MAINTENANCE_EN","UNINSTALLED_EN","AgentStatusElement","DynamicContentElement","dynamicContent","EntryCardItem","hoverHighLight","cardIcon","contentNode","cardContent","cardSmallAvatar","cardAvatar","iconColor","textContainer","smallCardTitle","cardNode","cardItem","tipNode","tip","EntryCardItemElement","GeneralVideo","source","tmp","videoType","pop","videoTitle","preview","rel","player","controls","GeneralVideoElement","LogDisplay","loadingIcon","hasBackspace","outputCharArr","charCount","backspaceLength","char","codePointAt","splice","handleBackspace","ellipsis","terminal","dangerouslySetInnerHTML","__html","escape","LogDisplayElement","BrickDivider","dashed","dividerStyle","orientation","plain","dividerTitle","DividerRadiation","DividerRadiationText","DividerRadiationTitle","proportion","ProportionText","BrickDividerElement","defaultStyle","border","minHeight","GeneralIframeElement","messageOrigin","origin","URL","iframe","iframeMessage","enableMessageSubscribe","onMessage","generalIframeLoaded","iframeStyle","GeneralTooltip","tipsElem","iconContainerStyle","tooltipConfig","triggerByIcon","displayBrick","arrowPointAtCenter","overlayStyle","descContainer","iconNode","iconContainer","getOffset","offset","popoverProps","align","renderElement","componentProps","onMouseOver","currentTarget","MouseEvent","Popover","Tooltip","GeneralTooltipElement","header","GeneralTransfer","container","lazy","targetKeys","moveKeys","maxSelected","Modal","onSelectChange","sourceSelectedKeys","targetSelectedKeys","onSelectedChange","listStyle","titles","operations","filterOption","showSearch","showSelectAll","footer","GeneralTransferElement","realDataSource","previousTargetKeys","dataDescriptor","updateDisable","generalTransferChange","realTimeNotification","notifyChange","getDataSource","handleSelectedChange","GeneralLabel","labelNode","labelWrapper","prefixIcon","suffixIcon","GeneralLabelElement","labelClick","BasicProgress","setColor","strokeColor","colorMap","curObj","progress","mainContainer","percent","showContainer","textColor","showValue","showDescription","BasicProgressElement","Text","Typography","CopyableText","tooltips","hiddenText","suffixCount","componentMap","custom","Paragraph","copyable","nextTypography","textClick","whiteSpace","typographyButton","readOnly","_suffixCount","suffix","CopyableTextElement","itemClick","_handleTextClick","BrickCalendarElement","formatData","_formatDate","_dateData","_monthData","formatDate","curData","getDataByMode","onSelectV2","onChangeV2","onPanelChange","cell","dateCell","getCustomComp","monthCell","fullscreen","dateCellRender","monthCellRender","handleSelect","handlePanelChange","AvatarUpload","imgSrc","setImgSrc","showSrc","setShowSrc","avatarRef","uploadRef","avatarProps","handleBeforeUpload","file","fileList","isJpgOrPng","isLt2M","avatarContainer","beforeUpload","showUploadList","avatarEditContainer","bottom","borderRadius","avatarEdit","textStyle","avatarEditor","canvas","getImage","toDataURL","toBlob","blob","formData","FormData","put","res","objectName","uploadSuccess","catch","modalOkText","AvatarUploadElement","changeEvent","_handleUploadSuccess","Badge","renderContent","shouldShowIcon","contentIcon","overflowCount","dot","showZero","GeneralBadgeElement","generalBadge","noPointerEvents","disablePointerEvents","BrickRate","rateStyle","resProps","rateRef","defaultIcon","rateIcon","colors","parentNodes","rate","childNodes","character","BrickRateElement","changEvent","allowHalf","GeneralImage","imgStyle","alt","fallback","extraContainerStyle","generalImage","extraContainer","GeneralImageElement","visibleChangeEventEmitter","imgWidth","imgHeight","imgAlt","_handleVisibleChange","InfoDisplayCardList","optionConf","titleBrickConf","iconBrickConf","detailOfDescBrickConf","titleFontSize","detailDescFontSize","isEmptyDetailOfDescBrickConf","isEmptyIconBrickConf","getCardItemDetail","infoCardDetailWrapper","detailBrickConf","getCardItem","infoCard","resultUrl","handleCardClick","infoCardWrapper","infoCardMain","bg","infoCardDetail","infoCardDetailDiv","infoCardRightSection","operateItemBrick","itemLayout","InfoDisplayCardListElement","BrickIllustration","renderHeader","renderFooter","illustrationWrapper","feedback","guide","BrickIllustrationElement","DynamicGridContainer","onRendered","dynamicGridContainer","DynamicGridContainerElement","GeneralSlider","marks","step","included","onlyShowMode","onAfterChange","bigMode","GeneralSliderElement","afterChangeEvent","_handleAfterChange","registerCustomProcessor","flattenTreeDataListAndCalcRowSpan","treeDataList","depth","flattenConfigs","omitChildrenInParent","flattenConfig","childrenKey","parentInChildKey","omit","RankTable","columnTitleBrickDataMapRef","Map","useBrickItemBrickDataMapRef","renderAwards","trend","awards","medalGold","medalSilver","medalBronze","normalAwards","topThree","rank","customColumns","itemBrickDataMap","valueSuffix","cellStatus","titleUseBrick","headerBrick","colSpanKey","rowSpanKey","columnConf","Awards","getCustomHeader","awardsComponent","brickData","cellData","columnIndex","valueKey","itemKey","indexKey","toPath","TrendBar","trendBar","yellowBar","blueBar","redBar","leftCell","rightCell","table","brickTable","rowClassName","brickTableOddRow","RankTableElement","DropdownButton","rightButtonIcon","leftButtonIcon","buttonName","handleMenuClick","renderIcon","RightButtonWrapper","textPlacement","RightButtonLabel","buttonsRender","leftButton","rightButton","DropdownButtonWrapper","LeftButtonLabel","DropdownButtonElement","registerLazyBricks","BasicIcon","renderBg","bgSize","bgBorderRadius","showWhenHover","iconControl","iconWrapper","BasicIconElement","_itemClick","TextCollapse","setEllipsis","main","line","icons","TextCollapseElement","Manager","collection","refs","getIndex","active","_this","sortableInfo","sortByIndex","_ref2","_ref3","obj","keysToOmit","reduce","acc","events","move","vendorPrefix","getComputedStyle","documentElement","pre","OLink","toUpperCase","substr","setInlineStyles","setTranslate3d","translate","y","setTransitionDuration","fn","limit","getPixelValue","stringValue","parseFloat","getElementMargin","right","marginTop","provideDisplayName","Component$$1","componentName","displayName","getScrollAdjustedBoundingClientRect","scrollDelta","boundingClientRect","getPosition","touches","pageX","pageY","changedTouches","isTouchEvent","getEdgeOffset","nodeOffset","offsetLeft","offsetTop","getTargetIndex","newIndex","prevIndex","oldIndex","getLockPixelOffset","lockOffset","offsetX","offsetY","isFinite","getLockPixelOffsets","offsets","_offsets","minLockOffset","maxLockOffset","getScrollingParent","computedStyle","overflowRegex","test","isScrollable","getContainerGridGap","gridColumnGap","gridRowGap","KEYCODE","NodeType","cloneNode","clonedNode","tagName","getContext","drawImage","isSortableHandle","sortableHandle","AutoScroller","onScrollCallback","interval","clearInterval","minTranslate","maxTranslate","acceleration","_this$container","scrollTop","scrollLeft","scrollHeight","scrollWidth","isTop","isBottom","clientHeight","isLeft","isRight","clientWidth","abs","isAutoScrolling","setInterval","propTypes","axis","oneOf","contentWindow","any","disableAutoscroll","bool","distance","getContainer","getHelperDimensions","helperClass","string","helperContainer","oneOfType","instanceOf","hideSortableGhost","keyboardSortingTransitionDuration","lockAxis","arrayOf","lockToContainerEdges","onSortEnd","onSortMove","onSortOver","onSortStart","pressDelay","pressThreshold","keyCodes","lift","drop","cancel","up","down","shouldCancelStart","transitionDuration","updateBeforeSortStart","useDragHandle","useWindowAsScrollContainer","defaultKeyCodes","defaultProps","offsetHeight","offsetWidth","contentEditable","omittedProps","validateProps","_finallyRethrows","finalizer","SortableContext","manager","propTypes$1","isRequired","omittedProps$1","filterDisabledDataSource","isNumber","TableTransfer","originDataSource","originColumns","originTargetKeys","change","sortChange","dragSortable","sortTitle","originSelectedKeys","searchPlaceholder","setDataSource","rightColumns","setRightColumns","setTargetKeys","modifiedDataSource","DragHandle","WrappedComponent","_class","_temp","withRef","_React$Component","WithSortableHandle","_getPrototypeOf2","_len","args","wrappedInstance","SortableHandle","nextTargetKeys","filterOptions","filteredItems","onItemSelect","onItemSelectAll","listSelectedKeys","listDisabled","treeSelectedKeys","diffKeys","transferData","hideSelectAll","SortableItem","WithSortableElement","register","prevProps","unregister","_this$props","remove","SortableElement","zIndex","SortableBody","WithSortableContainer","button","touched","nodeIsChild","sorting","_node$sortableInfo","handlePress","pressTimer","_this$props2","_awaitingUpdateBeforeSortStart","delta","combinedDelta","cancelTimer","getActive","_temp6","_temp7","_node","gridGap","containerBoundingRect","scrollContainer","dimensions","_getHelperDimensions","_collection","marginOffset","_axis","offsetEdge","initialOffset","_isKeySorting","initialScroll","initialWindowScroll","pageXOffset","pageYOffset","helper","boxSizing","pointerEvents","_hideSortableGhost","sortableGhost","visibility","_useWindowAsScrollContainer","innerWidth","innerHeight","containerTop","containerLeft","containerWidth","containerBottom","containerRight","_helperClass","classList","listenerNode","handleKeyEnd","handleKeyDown","eventName","handleSortMove","handleSortEnd","sortingIndex","_onSortStart","isKeySorting","getOrderedRefs","keyMove","_this$props3","_temp8","_temp9","_wasThrown","_result","updateHelperPosition","animateNodes","autoscroll","_this$props4","_this$manager","len","_node2","edgeOffset","autoScroller","scrollX","scrollY","update","keyCode","_this$props5","_this$props5$keyCodes","customKeyCodes","isValidSortingTarget","keyLift","keyDrop","_node$sortableInfo2","initialFocusedNode","lastIndex","targetIndex","targetNode","containerScrollDelta","targetBoundingClientRect","targetTranslate","targetPosition","shouldAdjustForSize","sizeAdjustment","ignoreTransition","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","Provider","SortableContainer","newData","array","fromIndex","toIndex","newArray","startIndex","endIndex","arrayMoveImmutable","onRow","itemDisabled","TableTransferElement","tableTransferChangeEvent","sortChangeEvent","searchChangeEvent","Panel","Collapse","CollapseInfoList","titleBrick","getPanelTitle","defaultActiveKey","collapseWrapper","CollapseInfoListElement","defaultNumberRange","_","DigitalNumber","decimals","decimal","maxLen","thousands","rest","numArr","setNumArr","fixedVal","splitArr","intNumber","_numArr","digitContainerCls","digitContainer","digitContainer_custom","digitWrapper","isNaN","digitDivider","Slice","digit","delaySpeed","easeSpeed","cellHeight","setCellHeight","setOffset","sliceRef","timerRef","digitBoxHeight","digitBox","digitSubBox","transition","digitCell","cellStyle","DigitalNumberElement","GeneralPreviewImageElement","GeneralPreviewImage","srcList","canPreview","previewCurrentIndex","customOperationPosition","BasicUser","userTooltip","setUserTooltip","BrickUserGroup","userNameOrIds","maxCount","setMaxCount","singleSize","setSingleSize","groupRef","groupParentElement","parentElement","firstElementChild","paddingRight","paddingLeft","maxStyle","BrickUserGroupElement","traverseTreeData","callback","parentId","replaceName","flatTree","flatArr","copyItem","searchTree","treeArr","searTreeArr","treeItem","chr","searchAllParents","sonParMap","allKey","nextKey","getRealCheckListKey","selectedRootKeys","selectedAllKeys","childItem","getTreeDataAllRootKeysSet","getRootKeys","allRootKeySet","getTreeDataAllKey","createNewTreeData","flatArray","rightAllKey","selectNode","treeList","arrayToTree","TreeShuttleContext","createContext","TreeProvider","useTreeContext","useContext","Input","useTreeShuttle","setSonParMap","setFlatArray","checkListLeft","setCheckListLeft","isBrightLeft","setIsBrightLeft","readOnlyAllKeyLeft","setReadOnlyAllKeyLeft","dataSourceLeft","setDataSourceLeft","checkListRight","setCheckListRight","dataSourceRight","setDataSourceRight","readOnlyAllKeyRight","setReadOnlyAllKeyRight","isBrightRight","setIsBrightRight","setSelectedRootKeys","setAllRootKeySet","TreeShuttleBox","replaceFields","_treeData","TreeShuttleBoxLeft","shownumItem","checkAll","setCheckAll","searchText","setSearchText","finVal","setFinVal","handleCheckBoxChange","shareStyle","CustomTransferBox","CustomTransferHead","CustomTransferHeadLeft","selectCount","CustomTransferHeadRight","CustomTransferBody","enterButton","CustomTransferTree","keyArr","TreeShuttleBoxRight","rightTreeData","TreeShuttleButton","handleClickToRight","treeData_","handleClickToLeft","rightSelectedRootKeys","newSelectedRootKeys","leftTreeData","CustomTransferButtonBox","CustomTransferButton","iconColorActive","TreeTransfer","TreeTransferElement","BannerDisplayCardList","cardWrapper","card","BannerDisplayCardListElement","isArguments","spreadableSymbol","isConcatSpreadable","template","skipUndefined","identity","overRest","setToString","KeyCode","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","PRINT_SCREEN","INSERT","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","QUESTION_MARK","A","B","C","D","E","F","G","H","I","J","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","META","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","WIN_IME","isTextModifyingKeyEvent","altKey","ctrlKey","metaKey","isCharacterKey","navigator","userAgent","_default","needQuotes","nativeMax","otherArgs","fnRef","_fnRef$current","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","_i","DllOfAce","predicate","fromRight","memo","isOldIE","atob","getTarget","styleTarget","HTMLIFrameElement","contentDocument","stylesInDom","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","base","css","media","sourceMap","references","addStyle","insertStyleElement","attributes","nonce","insert","textStore","replaceText","replacement","applyToSingletonTag","styleSheet","cssText","cssNode","createTextNode","insertBefore","applyToTag","removeAttribute","btoa","unescape","encodeURIComponent","singleton","singletonCounter","styleIndex","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","Colors","COLORS_MAP","geekblue","getColor","isGradientColor","startColor","endColor","reverseBgColor","showEmptyIcon","noPublicRoot","imageLoading","iconClassName","memoizedIcon","useDeepEqualMemo","getStyle","mergedStyle","getDefaultIcon","roundSquareBg","startsWith","getBasePath","iconType","migrateV3","getFeatureFlags","gradientColor","generalIconId","mergedStyleByBg","data-icon","faIcon","migrateProps","gradientIconDirection","x1","y1","x2","y2","aria-hidden","focusable","stopColor","SetCache","arrayIncludes","arrayIncludesWith","arrayMap","baseUnary","cacheHas","iteratee","isCommon","valuesLength","outer","computed","valuesIndex","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","argIndex","framesToPop","baseFindIndex","baseIsNaN","strictIndexOf","stringifiable","isProduction","process","invariant","getOwnPropertySymbols","getPrototypeOf","Context","commands","defaultCommands","extend","isEquals","newContext","configurable","directive","$spec","spec","$apply","nextObject","objectWasNextObject","nextValueForKey","nextObjectValue","$push","invariantPushAndUnshift","$unshift","$splice","originalObject","invariantSplice","invariantSplices","$set","_nextObject","invariantSet","$toggle","targets","invariantSpecArray","nextObjectCopy","$unset","_spec","$add","invariantMapOrSet","_a","$remove","$merge","specValue","original","defaultContext","command","typeOfTarget","previewUrls","setPreviewUrls","setCurrent","setShowPreview","setMousePosition","registerImage","rootClassName","getSafeIndex","previewPrefixCls","previewVisible","onPreviewVisibleChange","currentIndex","countRender","dialogProps","previewUrlsKeys","prevCurrent","useMergedState","prev","isShowPreview","prevVal","mousePosition","isControlled","currentControlledKey","canPreviewUrls","isPreviewGroup","unRegister","oldPreviewUrls","clonePreviewUrls","prefixCls","EMPTY_LIST","containerCache","getMark","mark","attachTo","getOrder","prepend","findStyles","injectCSS","csp","styleNode","innerHTML","existStyle","getAttribute","nextSibling","findExistNode","removeCSS","existNode","syncRealContainer","cachedRealContainer","placeholderStyle","UNIQUE_ID","uuid","useScrollLocker","lock","mergedLock","scrollbarSize","isOverflow","_option$csp","_option$csp2","_option$csp3","newNode","updateCSS","inline","autoLock","_props$autoDestroy","debug","autoDestroy","shouldRender","setShouldRender","mergedRender","_React$useState3","_React$useState4","innerContainer","setInnerContainer","customizeContainer","_useDom","appendedRef","queueCreate","queue","setQueue","mergedQueueCreate","appendFn","cleanup","_ele$parentElement","useDom","_useDom2","defaultContainer","mergedContainer","childRef","mergedRef","nextInline","renderInline","reffedChildren","Operations","maskTransitionName","showSwitch","showProgress","scale","onSwitchLeft","onSwitchRight","onZoomIn","onZoomOut","onRotateRight","onRotateLeft","onFlipX","onFlipY","rotateLeft","rotateRight","zoomIn","zoomOut","flipX","flipY","toolClassName","tools","operationsInBottom","tool","customOperations","motionName","customOperationsWrapper","initialTransform","fixPoint","startAddWidth","offsetStart","Preview","scaleStep","transitionName","imgRef","downPositionRef","deltaX","deltaY","transformX","transformY","isMoving","setMoving","previewGroupCount","currentPreviewIndex","combinationSrc","showLeftOrRightSwitches","showOperationsProgress","resetTransform","updateTransform","dispatchZoomChange","frame","setTransform","newTransform","raf","preState","memoState","queueState","ratio","clientX","clientY","newRatio","newScale","mergedClientX","mergedClientY","diffRatio","diffImgX","diffImgY","diffOffsetLeft","diffOffsetTop","newX","newY","mergedWidth","mergedHeight","getClientSize","useImageTransform","wrapClassName","onMouseUp","isRotate","fixState","fixPos","getFixScaleEleTransPosition","onMouseMove","onKeyDown","onTopMouseUpListener","onTopMouseMoveListener","onMouseUpListener","onMouseMoveListener","onKeyDownListener","self","keyboard","afterClose","onWheel","scaleRatio","onMouseDown","onDoubleClick","ImageInternal","onPreviewClose","onInitialPreviewClose","onError","wrapperClassName","wrapperStyle","crossOrigin","decoding","referrerPolicy","sizes","srcSet","useMap","otherProps","isCustomPlaceholder","previewSrc","getPreviewContainer","mask","previewMask","maskClassName","setStatus","isError","setGroupShowPreview","setGroupMousePosition","currentId","isLoaded","onLoad","img","isImageValid","isValid","wrapperClass","cn","mergedSrc","imgCommonProps","complete","naturalWidth","naturalHeight","PreviewGroup","defaultPreview","Image","previewGroupWrapper","vis","writable","u","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","h","setPrototypeOf","__proto__","ReferenceError","iterator","next","done","return","g","TypeError","w","msMaxTouchPoints","File","touch","react","mouseDown","drag","mouseMove","mouseUp","desktop","devicePixelRatio","Reflect","construct","sham","Proxy","my","mx","getInitialSize","resource","onImageReady","onLoadSuccess","clearRect","targetTouches","getCroppingRect","PI","cos","sin","getXScale","getYScale","onPositionChange","disableHiDPIScaling","loadImage","paint","passive","handleMouseMove","handleMouseUp","clearImage","paintImage","onImageChange","disableCanvasRotation","getBorders","isVertical","fillStyle","fillRect","getDimensions","disableBoundaryChecks","loadingImage","FileReader","readAsDataURL","handleImageReady","onLoadFailure","calculatePosition","globalCompositeOperation","restore","beginPath","rect","arc","lineTo","propertyIsEnumerable","touchAction","handleMouseDown","setCanvas","arrayPush","isFlattenable","baseFlatten","isStrict","dll","caf","num","requestAnimationFrame","handle","cancelAnimationFrame","rafUUID","rafIds","wrapperRaf","times","callRef","leftTimes","realId","note","noteOnce","valid","resetWarned","warned","warningOnce","thisArg","baseIndexOf","defaultStateValue","postState","_useState","_useState5","hasValue","_useState2","innerValue","setInnerValue","mergedValue","postMergedValue","onChangeFn","_useEvent","_useState3","_useState4","prevValue","setPrevValue","_useLayoutEffect","useLayoutUpdateEffect","triggerChange","downMenuIcon","rightMenuIcon","DraggableBodyRow","moveRow","isOver","dropClassName","useDrop","accept","collect","monitor","dragIndex","dropOverDownward","dropOverUpward","useDrag","isDragging","draggableRow","deleteEnabled","_expandable","setExpandedRowKeys","rowKeyExpandIconMapRef","itemExpandedRowBrickDataMapRef","treeToFlat","childrenName","ls","isParentOfTree","expandIconColumnIndexOffset","filterDropdownBrick","customFilterIcon","collapsedIcon","expandedIcon","expandIconSpan","filterDropdown","filterIcon","shouldCellUpdate","prevRecord","innerRender","colSpan","rowSpan","getCellStyle","ellipsisInfoCell","hoverIndex","dragRowKey","oldData","rowKeyField","recursion","subItems","dragRow","getNewDateAfterMoving","pickExpandProps","pickBy","expandedRowRender","rowIndex","expandIconCellHidden","customDropTable","tableThTransparent","zebraPatternTable","__acceptType","invalidRow","disabledRow","iconProps","backend","HTML5Backend","renderEmpty","sortBy","constant","baseSetToString","floatMap","getStyleValue","getDocSize","box","docElem","clientLeft","clientTop","getOuterHeight","getOuterWidth","getScroll","PIXEL_PATTERN","removePixel","cssFloat","styleFloat","float","nodeType","eventType","cb","_reactDom","unstable_batchedUpdates","getExtendedLocationDescriptor","_to","currentLocation","keepCurrentSearch","currentUrlSearchParams","newUrlSearchParams","innerRef","noEmptyHref","useNativeEvent","setCurrentLocation","linkRef","listen","loc","computedHref","createLocation","createHref","defaultPrevented","shiftKey","isModifiedEvent","useLayoutEffect","deps","firstMountRef","shortOut","fieldValue","$isEqual","$notEqual","$nin","$exists","isUndefined","finalValue","borderLeft","leftBorderColor","baseDifference","baseRest","isArrayLikeObject"],"mappings":"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","file":"index.e3a4861a.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"lazy-bricks/brick-code-display.dd92\":\"lazy-bricks/brick-code-display.dd92\",\"lazy-bricks/brick-collapse-card.dd92\":\"lazy-bricks/brick-collapse-card.dd92\",\"lazy-bricks/brick-placeholder.dd92\":\"lazy-bricks/brick-placeholder.dd92\",\"lazy-bricks/card-item.dd92\":\"lazy-bricks/card-item.dd92\",\"lazy-bricks/code-editor.dd92\":\"lazy-bricks/code-editor.dd92\",\"lazy-bricks/crontab-display.dd92\":\"lazy-bricks/crontab-display.dd92\",\"lazy-bricks/qrcode-download.dd92\":\"lazy-bricks/qrcode-download.dd92\",\"lazy-bricks/single-field-edit.dd92\":\"lazy-bricks/single-field-edit.dd92\",\"lazy-bricks/~bricks-use-form-and-markdown.dd92~lazy-bricks/~bricks-use-html-to-react.dd92\":\"lazy-bricks/~bricks-use-form-and-markdown.dd92~lazy-bricks/~bricks-use-html-to-react.dd92\",\"lazy-bricks/~bricks-use-form-and-markdown.dd92\":\"lazy-bricks/~bricks-use-form-and-markdown.dd92\",\"lazy-bricks/~bricks-use-html-to-react.dd92\":\"lazy-bricks/~bricks-use-html-to-react.dd92\"}[chunkId]||chunkId) + \".\" + {\"lazy-bricks/brick-code-display.dd92\":\"1e2639bb\",\"lazy-bricks/brick-collapse-card.dd92\":\"716adb42\",\"lazy-bricks/brick-placeholder.dd92\":\"4ee6a7c8\",\"lazy-bricks/card-item.dd92\":\"9aff641e\",\"lazy-bricks/code-editor.dd92\":\"1ac9cb6d\",\"lazy-bricks/crontab-display.dd92\":\"9404f865\",\"lazy-bricks/qrcode-download.dd92\":\"061d823b\",\"lazy-bricks/single-field-edit.dd92\":\"a7492a59\",\"lazy-bricks/~bricks-use-form-and-markdown.dd92~lazy-bricks/~bricks-use-html-to-react.dd92\":\"a5c459df\",\"lazy-bricks/~bricks-use-form-and-markdown.dd92\":\"0f72e872\",\"lazy-bricks/~bricks-use-html-to-react.dd92\":\"7f866e88\"}[chunkId] + \".js\"\n \t}\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\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 \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"bricks/presentational-bricks:8L6T\");\n","module.exports = DllOfReactDnd;","// 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, \".label--Wq9o7suD {\\n display: inline;\\n padding: 4px 10px;\\n border-radius: 6px;\\n line-height: 24px;\\n font-size: 12px;\\n font-weight: normal;\\n}\\n\\n.default--DSc8oniB {\\n padding: 2px 8px;\\n}\\n\\n.error--10Hjpotm {\\n color: #ff0016;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"label\": \"label--Wq9o7suD\",\n\t\"default\": \"default--DSc8oniB\",\n\t\"error\": \"error--10Hjpotm\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"03A+\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"0Cfi\");","// 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, \".row-dragging---wzlbi-w {\\n background: #fafafa;\\n border: 1px solid #ccc;\\n}\\n\\n.row-dragging---wzlbi-w td {\\n padding: 10px 30px;\\n}\\n\\n.row-dragging---wzlbi-w .drag-visible--25C13tiW {\\n visibility: visible;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"row-dragging\": \"row-dragging---wzlbi-w\",\n\t\"drag-visible\": \"drag-visible--25C13tiW\"\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, \".cardItem--3Z_mhOXf.ant-card {\\n background: var(--entry-card-item-bg);\\n }\\n .cardItem--3Z_mhOXf.ant-card-bordered {\\n border: 0;\\n border-radius: var(--entry-card-item-radius);\\n }\\n .cardItem--3Z_mhOXf.ant-card-hoverable:hover {\\n box-shadow: var(--entry-card-item-hover-shadow);\\n background-color: rgba(244, 245, 247, 1);\\n }\\n .cardItem--3Z_mhOXf.ant-card-hoverable:hover .cardTitle--3hV-HYNg {\\n color: rgba(26, 122, 255, 1);\\n }\\n .cardItem--3Z_mhOXf.ant-card-hoverable:hover .smallCardTitle--10EVWVlN {\\n color: rgba(26, 122, 255, 1);\\n }\\n .cardItem--3Z_mhOXf.ant-card:not(:hover) {\\n box-shadow: none;\\n }\\n\\n.cardContent--3FxNta_s {\\n display: grid;\\n justify-items: center;\\n padding: 14px 0 12px 0;\\n}\\n\\n.cardAvatar--IRvMLwAy {\\n display: grid;\\n font-size: 32px;\\n margin-bottom: 10px;\\n}\\n\\n.cardAvatar--IRvMLwAy .cardIcon--CN7CikOS {\\n display: grid;\\n font-size: 32px;\\n justify-self: center;\\n align-self: center;\\n }\\n\\n.cardAvatar--IRvMLwAy .cardIcon--CN7CikOS svg {\\n font-size: 28px;\\n }\\n\\n.cardSmallAvatar--NhDgFMdd {\\n display: grid;\\n font-size: 32px;\\n margin-bottom: 10px;\\n}\\n\\n.cardSmallAvatar--NhDgFMdd .cardIcon--CN7CikOS {\\n display: grid;\\n font-size: 32px;\\n justify-self: center;\\n align-self: center;\\n }\\n\\n.cardSmallAvatar--NhDgFMdd .cardIcon--CN7CikOS svg {\\n font-size: 20px;\\n }\\n\\n.textContainer--oKq7VX64 {\\n padding: 0 14px;\\n width: 100%;\\n text-align: center;\\n color: var(--text-color-default);\\n overflow: hidden;\\n}\\n\\n.textContainer--oKq7VX64:hover.hoverHighLight--16mi_FnI {\\n color: var(--entry-card-item-highlight-hover-color);\\n }\\n\\n.textContainer--oKq7VX64:hover:not(.hoverHighLight--16mi_FnI) {\\n color: var(--entry-card-item-default-hover-color);\\n }\\n\\n.textContainer--oKq7VX64 .cardTitle--3hV-HYNg {\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n }\\n\\n.textContainer--oKq7VX64 .smallCardTitle--10EVWVlN {\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n font-size: 12px;\\n }\\n\\n.textContainer--oKq7VX64 .description--1dmk6Plj {\\n overflow: hidden;\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 2;\\n }\\n\\n.purple--1a4ga2j6 {\\n background: #964dff;\\n}\\n\\n.red--35VdTxrf {\\n background: #f15b3e;\\n}\\n\\n.softOrange--2ojw1djh {\\n background: #fcb94c;\\n}\\n\\n.cyan--1fQQbcpI {\\n background: #2bacc3;\\n}\\n\\n.blue--32-lZrFY {\\n background: #4d8fff;\\n}\\n\\n.darkPurple--7SmZiqPV {\\n background: #a75da9;\\n}\\n\\n.lightCyan--JAQQCCGR {\\n background: #00acc3;\\n}\\n\\n.brightOrange--19fFrSMF {\\n background: #efa83b;\\n}\\n\\n.white--2UEmEAeE {\\n background: #fff;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"cardItem\": \"cardItem--3Z_mhOXf\",\n\t\"cardTitle\": \"cardTitle--3hV-HYNg\",\n\t\"smallCardTitle\": \"smallCardTitle--10EVWVlN\",\n\t\"cardContent\": \"cardContent--3FxNta_s\",\n\t\"cardAvatar\": \"cardAvatar--IRvMLwAy\",\n\t\"cardIcon\": \"cardIcon--CN7CikOS\",\n\t\"cardSmallAvatar\": \"cardSmallAvatar--NhDgFMdd\",\n\t\"textContainer\": \"textContainer--oKq7VX64\",\n\t\"hoverHighLight\": \"hoverHighLight--16mi_FnI\",\n\t\"description\": \"description--1dmk6Plj\",\n\t\"purple\": \"purple--1a4ga2j6\",\n\t\"red\": \"red--35VdTxrf\",\n\t\"softOrange\": \"softOrange--2ojw1djh\",\n\t\"cyan\": \"cyan--1fQQbcpI\",\n\t\"blue\": \"blue--32-lZrFY\",\n\t\"darkPurple\": \"darkPurple--7SmZiqPV\",\n\t\"lightCyan\": \"lightCyan--JAQQCCGR\",\n\t\"brightOrange\": \"brightOrange--19fFrSMF\",\n\t\"white\": \"white--2UEmEAeE\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:JYlb\"))(\"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, \".customOperationsWrapper--tM1uS3Of {\\n width: 100%;\\n height: 100%;\\n}\\n .customOperationsWrapper--tM1uS3Of:hover .customOperations--2SrgbgnL {\\n display: flex;\\n }\\n .customOperationsWrapper--tM1uS3Of .customOperations--2SrgbgnL {\\n display: none;\\n position: absolute;\\n bottom: 20px;\\n width: 100%;\\n justify-content: center;\\n align-items: center;\\n color: rgba(255, 255, 255, 0.85);\\n z-index: 1;\\n pointer-events: auto;\\n }\\n .customOperationsWrapper--tM1uS3Of .customOperations--2SrgbgnL ul {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n flex-direction: row-reverse;\\n margin: 0;\\n padding: 0;\\n background-color: #0d1a2d;\\n border-radius: 5px;\\n list-style: none;\\n }\\n .customOperationsWrapper--tM1uS3Of .ant-image-preview-operations-progress {\\n position: absolute;\\n left: 50%;\\n transform: translateX(-50%);\\n }\\n\\n[dir=\\\"ltr\\\"] .customOperationsWrapper--tM1uS3Of.ant-image-preview-operations-wrapper {\\n right: 0;\\n}\\n\\n[dir=\\\"rtl\\\"] .customOperationsWrapper--tM1uS3Of.ant-image-preview-operations-wrapper {\\n left: 0;\\n}\\n\\n.customOperationsWrapper--tM1uS3Of.ant-image-preview-operations-wrapper {\\n position: fixed;\\n top: 0;\\n z-index: 1081;\\n width: 100%;\\n}\\n\\n.customOperationsWrapper--tM1uS3Of.ant-image-preview-operations-wrapper .ant-image-preview-operations {\\n margin: 0;\\n padding: 0;\\n color: #fff;\\n font-size: 14px;\\n list-style: none;\\n display: flex;\\n flex-direction: row-reverse;\\n align-items: center;\\n background: rgba(0, 0, 0, 0.1);\\n pointer-events: auto;\\n }\\n\\n.customOperationsWrapper--tM1uS3Of.ant-image-preview-operations-wrapper .ant-image-preview-switch-left {\\n position: fixed;\\n top: 50%;\\n z-index: 1081;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 40px;\\n height: 40px;\\n margin-top: -20px;\\n color: #fff;\\n background: rgba(0, 0, 0, 0.1);\\n border-radius: 50%;\\n transform: translateY(-50%);\\n cursor: pointer;\\n transition: all 0.3s;\\n pointer-events: auto;\\n }\\n\\n[dir=\\\"ltr\\\"] .customOperationsWrapper--tM1uS3Of.ant-image-preview-operations-wrapper .ant-image-preview-switch-right {\\n right: 12px;\\n}\\n\\n[dir=\\\"rtl\\\"] .customOperationsWrapper--tM1uS3Of.ant-image-preview-operations-wrapper .ant-image-preview-switch-right {\\n left: 12px;\\n}\\n\\n.customOperationsWrapper--tM1uS3Of.ant-image-preview-operations-wrapper .ant-image-preview-switch-right {\\n position: fixed;\\n top: 50%;\\n z-index: 1081;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 40px;\\n height: 40px;\\n margin-top: -20px;\\n color: #fff;\\n background: rgba(0, 0, 0, 0.1);\\n border-radius: 50%;\\n transform: translateY(-50%);\\n cursor: pointer;\\n transition: all 0.3s;\\n pointer-events: auto;\\n }\\n\\n.customOperationsWrapper--tM1uS3Of.ant-image-preview-operations-wrapper .ant-image-preview-switch-left-disabled,\\n .customOperationsWrapper--tM1uS3Of.ant-image-preview-operations-wrapper .ant-image-preview-switch-right-disabled {\\n color: rgba(255, 255, 255, 0.25);\\n background: 0 0;\\n cursor: not-allowed;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"customOperationsWrapper\": \"customOperationsWrapper--tM1uS3Of\",\n\t\"customOperations\": \"customOperations--2SrgbgnL\"\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, \".ant-alert.ant-alert-closable.closeOnce--1JIW7qah {\\n padding-right: 96px;\\n}\\n.noBorderRadio--3w7EgTT8 {\\n border-radius: 0;\\n}\\n\\n.ant-alert {\\n border: none !important;\\n}\\n.ant-alert-message {\\n line-height: 22px;\\n font-size: var(--normal-font-size);\\n font-weight: var(--font-weight-400);\\n color: var(--color-normal-text);\\n}\\n\\n.ant-alert-description {\\n font-size: var(--normal-font-size);\\n font-weight: var(--font-weight-400);\\n color: var(--color-normal-text);\\n}\\n.noDescription--18zfeL8g .ant-alert-icon {\\n align-self: start;\\n margin-top: 4px;\\n }\\nhtml[data-ui=\\\"v8-2\\\"] .ant-alert-with-description {\\n padding: 10px;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"closeOnce\": \"closeOnce--1JIW7qah\",\n\t\"noBorderRadio\": \"noBorderRadio--3w7EgTT8\",\n\t\"noDescription\": \"noDescription--18zfeL8g\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"1OyB\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"1hJj\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"284h\");","// 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, \".treeWrapper--1GvHEj1y {\\n overflow: auto;\\n flex-grow: 1;\\n background: var(--color-fill-bg-container-1);\\n border-radius: var(--larger-border-radius);\\n}\\n\\n .treeWrapper--1GvHEj1y.withSuffix--2pbdPfVG .suffixBrickWrapper--2iGubNwI {\\n display: flex;\\n justify-content: space-between;\\n }\\n\\n .treeWrapper--1GvHEj1y.withSuffix--2pbdPfVG .suffixBrickWrapper--2iGubNwI > span:first-child {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n\\n .treeWrapper--1GvHEj1y.withSuffix--2pbdPfVG .ant-tree-list-holder-inner {\\n align-items: normal;\\n }\\n\\n .treeWrapper--1GvHEj1y.withSuffix--2pbdPfVG .ant-tree-node-content-wrapper {\\n display: flex;\\n }\\n\\n .treeWrapper--1GvHEj1y.withSuffix--2pbdPfVG .ant-tree-iconEle {\\n flex-shrink: 0;\\n }\\n\\n .treeWrapper--1GvHEj1y.withSuffix--2pbdPfVG .ant-tree-node-content-wrapper,\\n .treeWrapper--1GvHEj1y.withSuffix--2pbdPfVG .ant-tree-title {\\n flex-grow: 1;\\n min-width: 0;\\n }\\n\\n .treeWrapper--1GvHEj1y .ant-tree-directory .ant-tree-treenode-selected:hover::before,\\n .treeWrapper--1GvHEj1y .ant-tree-directory .ant-tree-treenode-selected::before {\\n background: var(--antd-item-hover-bg);\\n }\\n\\n .treeWrapper--1GvHEj1y .ant-tree-directory .ant-tree-treenode-selected .ant-tree-switcher,\\n .treeWrapper--1GvHEj1y .ant-tree-directory .ant-tree-treenode-selected .ant-tree-node-selected {\\n color: var(--antd-text-color) !important;\\n }\\n\\n.matchText--2KbPicAQ {\\n color: var(--color-brand);\\n background: var(--app-submenu-active-bg);\\n}\\n.matchTextTotal--1EnQl9d7 {\\n color: var(--color-brand);\\n}\\n.titleSpace--Bu3ftjKM .ant-tree-treenode:nth-child(2) {\\n margin-bottom: 8px;\\n }\\n.allOrDefault--1t1Nu6DR {\\n font-weight: 600;\\n}\\n.hideBackground--3S_xq5tB {\\n background: none;\\n}\\n.hideBackground--3S_xq5tB .ant-tree {\\n background: none;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"treeWrapper\": \"treeWrapper--1GvHEj1y\",\n\t\"withSuffix\": \"withSuffix--2pbdPfVG\",\n\t\"suffixBrickWrapper\": \"suffixBrickWrapper--2iGubNwI\",\n\t\"matchText\": \"matchText--2KbPicAQ\",\n\t\"matchTextTotal\": \"matchTextTotal--1EnQl9d7\",\n\t\"titleSpace\": \"titleSpace--Bu3ftjKM\",\n\t\"allOrDefault\": \"allOrDefault--1t1Nu6DR\",\n\t\"hideBackground\": \"hideBackground--3S_xq5tB\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","__webpack_public_path__ = `${window.PUBLIC_ROOT ?? \"\"}${\n window.PUBLIC_ROOT_WITH_VERSION\n ? \"bricks/presentational-bricks/1.321.4/dist/\"\n : \"bricks/presentational-bricks/dist/\"\n }`;","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = canUseDom;\nfunction canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\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!./GeneralList.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/presentational-bricks:XuQu\"))(\"3tO9\");","// 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, \".entranceWrapper--1xu12v2i,\\n.multiCardEntranceWrapper--3StF9zKf {\\n display: grid;\\n width: 100%;\\n height: 100%;\\n}\\n.entranceWrapper--1xu12v2i {\\n grid-gap: 12px;\\n}\\n.linkWrapper--2DDSztuV {\\n display: flex;\\n align-items: center;\\n}\\n\\n.link--2BFHyk1F {\\n margin: 5px 0;\\n width: 100%;\\n text-align: center;\\n color: var(--color-auxiliary-text);\\n}\\n\\n.link--2BFHyk1F:hover {\\n cursor: pointer;\\n}\\n\\n.link--2BFHyk1F:hover {\\n color: var(--antd-link-color);\\n}\\n\\n.icon--3Xz7cGhM {\\n font-size: 32px;\\n}\\n\\n.text--daHmIaPZ {\\n text-align: center;\\n font-size: 14px;\\n color: var(--color-normal-text);\\n}\\n.multiCardGeneralVerticalLine--ZpUdpnL9 {\\n margin: 20px 0;\\n border-left: 1px solid var(--color-text-divider-line);\\n opacity: 0.55;\\n}\\n.verticalLine--2lpOwHgm {\\n height: 100%;\\n border-left: 1px solid var(--color-border-divider-line);\\n}\\n\\n.horizontalLine--2Z3XDRI3 {\\n width: 100%;\\n border-top: 1px solid var(--color-border-divider-line);\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"entranceWrapper\": \"entranceWrapper--1xu12v2i\",\n\t\"multiCardEntranceWrapper\": \"multiCardEntranceWrapper--3StF9zKf\",\n\t\"linkWrapper\": \"linkWrapper--2DDSztuV\",\n\t\"link\": \"link--2BFHyk1F\",\n\t\"icon\": \"icon--3Xz7cGhM\",\n\t\"text\": \"text--daHmIaPZ\",\n\t\"multiCardGeneralVerticalLine\": \"multiCardGeneralVerticalLine--ZpUdpnL9\",\n\t\"verticalLine\": \"verticalLine--2lpOwHgm\",\n\t\"horizontalLine\": \"horizontalLine--2Z3XDRI3\"\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}\\n:host([hidden]) {\\n display: none;\\n}\\n.headerContainer {\\n display: grid;\\n grid-template-columns: auto auto;\\n justify-content: space-between;\\n padding: 16px 24px;\\n align-items: center;\\n position: relative;\\n}\\n.headerContainer.borderButtom {\\n border-bottom-width: var(--border-width-base);\\n border-bottom-color: var(--color-text-divider-line);\\n border-bottom-style: solid;\\n }\\n.headerContainer:hover {\\n cursor: pointer;\\n }\\n.headerContainer .subscriptContainer {\\n width: 60px;\\n height: 30px;\\n transform: rotate(40deg);\\n background: var(--theme-blue-color);\\n position: absolute;\\n right: -16px;\\n bottom: 41px;\\n }\\n.headerContainer .subscriptContainer svg {\\n color: #fff;\\n width: 16px;\\n position: absolute;\\n bottom: 4px;\\n right: 16px;\\n transform: rotate(-40deg);\\n }\\n.headerContainer .collapsibleCardItemInfo {\\n display: grid;\\n grid-gap: 16px;\\n justify-content: left;\\n grid-auto-flow: column;\\n align-items: center;\\n }\\n.headerContainer .collapsibleCardItemInfo .collapsibleCardItemIcon {\\n font-size: 32px;\\n width: 32px;\\n height: 32px;\\n line-height: 32px;\\n }\\n.headerContainer .collapsibleCardItemInfo .collapsibleTitle {\\n font-size: var(--card-title-font-size);\\n color: var(--color-normal-text);\\n font-weight: var(--font-weight-400);\\n }\\n\\n.brickCollapsibleCardContainer {\\n position: relative;\\n background: var(--color-fill-bg-container-1);\\n border-radius: var(--larger-border-radius);\\n overflow: hidden;\\n border-width: var(--border-width-base);\\n border-color: var(--color-border-divider-line);\\n border-style: solid;\\n}\\n\\n.brickCollapsibleCardContainer .operatingArea {\\n opacity: 0;\\n display: grid;\\n grid-gap: 10px;\\n justify-content: left;\\n grid-auto-flow: column;\\n align-items: center;\\n }\\n\\n.brickCollapsibleCardContainer.hoverable:hover {\\n border-radius: var(--larger-border-radius);\\n box-shadow: var(--hover-shadow);\\n }\\n\\n.brickCollapsibleCardContainer.hoverable:hover .operatingArea {\\n opacity: 1;\\n }\\n\\n.contentContainer {\\n padding: 32px 72px;\\n}\\n\\n.defaultTag {\\n position: absolute;\\n top: -4px;\\n right: -4px;\\n z-index: 1;\\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, \".title--18EPeww7 {\\n padding-bottom: 10px;\\n}\\n\\n.player--WYWwiyfG {\\n cursor: pointer;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"title\": \"title--18EPeww7\",\n\t\"player\": \"player--WYWwiyfG\"\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, \".main--BImL1TNz .icons--2w8ZmjjI {\\n width: 50px;\\n margin: 0 auto;\\n cursor: pointer;\\n visibility: hidden;\\n}\\n\\n.main--BImL1TNz:hover .icons--2w8ZmjjI {\\n visibility: visible;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"main\": \"main--BImL1TNz\",\n\t\"icons\": \"icons--2w8ZmjjI\"\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:host {\\n display: block;\\n}\\n:host([hidden]) {\\n display: none;\\n}\\n.listContainer {\\n display: grid;\\n grid-gap: 12px;\\n}\\n.cardListContainer {\\n grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\").default;\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = useSafeState;\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\nvar React = _interopRequireWildcard(require(\"react\"));\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nfunction useSafeState(defaultValue) {\n var destroyRef = React.useRef(false);\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),\n value = _React$useState2[0],\n setValue = _React$useState2[1];\n React.useEffect(function () {\n destroyRef.current = false;\n return function () {\n destroyRef.current = true;\n };\n }, []);\n function safeSetState(updater, ignoreDestroy) {\n if (ignoreDestroy && destroyRef.current) {\n return;\n }\n setValue(updater);\n }\n return [value, safeSetState];\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, \".highLight--N0YPFIwj {\\n background: #ffeeed;\\n color: #fc5043;\\n white-space: pre;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"highLight\": \"highLight--N0YPFIwj\"\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, \".brickTag--3528QmI2 {\\n margin: -5px 0;\\n}\\n\\n .brickTag--3528QmI2 .closableTag--8qHrNBTq:not(.disabledTag--25dAB1cu):hover {\\n background-color: var(--antd-tag-closable-hover-bg);\\n }\\n\\n .brickTag--3528QmI2 .closableTag--8qHrNBTq.disabledTag--25dAB1cu {\\n background-color: var(--antd-tag-closable-disabled-bg) !important;\\n }\\n\\n .brickTag--3528QmI2 .closableTag--8qHrNBTq.disabledTag--25dAB1cu {\\n color: var(--antd-tag-closable-disabled-color);\\n }\\n\\n .brickTag--3528QmI2 .closableTag--8qHrNBTq.disabledTag--25dAB1cu > span.ant-tag-close-icon {\\n display: none;\\n }\\n\\n .brickTag--3528QmI2 .round--33-BHEIV {\\n border-radius: 12px;\\n }\\n\\n .brickTag--3528QmI2 .ant-tag {\\n margin: 5px 4px;\\n }\\n\\n .brickTag--3528QmI2 .ant-tag:only-child {\\n margin: 5px 0px;\\n }\\n\\n .brickTag--3528QmI2 .tagsLabel--2cPD5HeG {\\n margin-right: 14px;\\n }\\n\\n .brickTag--3528QmI2.tagTextOverflow--3-fxrAou .ant-tag {\\n max-width: 100%;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding: 0 10px;\\n }\\n\\n .brickTag--3528QmI2 .tagCircleIcon--23BBauLz .anticon > .fa-circle {\\n width: 6px;\\n }\\n\\n .brickTag--3528QmI2 .grayTag--2LvSqLGI {\\n background-color: var(--tag-gray-background) !important;\\n border-color: var(--tag-gray-border-color) !important;\\n }\\n\\n .brickTag--3528QmI2 .grayTag--2LvSqLGI {\\n color: var(--tag-gray-color);\\n }\\n\\n .brickTag--3528QmI2 .grayInverseTag--2xLd9Zcw {\\n background: var(--tag-gray-inverse-color) !important;\\n }\\n\\n .brickTag--3528QmI2 .grayInverseTag--2xLd9Zcw {\\n color: var(--tag-inverse-text-color);\\n }\\n\\n .brickTag--3528QmI2 .colorTag--2b-J-n-x {\\n font-family: PingFangSC-Medium, PingFang SC;\\n font-weight: 500;\\n }\\n\\n .brickTag--3528QmI2 .colorTag--2b-J-n-x.ant-tag-has-color {\\n font-weight: 400;\\n }\\n\\n .brickTag--3528QmI2 .disabledTag--25dAB1cu {\\n cursor: not-allowed;\\n }\\n\\n .brickTag--3528QmI2 .checkableTag--2FQvQ3Tq:active {\\n color: #ffffff;\\n }\\n\\n .brickTag--3528QmI2 .ant-tag-checkable-checked.grayTag--2LvSqLGI {\\n background-color: var(--theme-blue-border-color) !important;\\n }\\n\\n .brickTag--3528QmI2 .ant-tag-checkable-checked.grayTag--2LvSqLGI {\\n color: #fff;\\n }\\n\\nhtml[data-theme=\\\"dark\\\"] .grayTag--2LvSqLGI {\\n border: 1px solid rgba(255,255,255,0.2) !important;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"brickTag\": \"brickTag--3528QmI2\",\n\t\"closableTag\": \"closableTag--8qHrNBTq\",\n\t\"disabledTag\": \"disabledTag--25dAB1cu\",\n\t\"round\": \"round--33-BHEIV\",\n\t\"tagsLabel\": \"tagsLabel--2cPD5HeG\",\n\t\"tagTextOverflow\": \"tagTextOverflow--3-fxrAou\",\n\t\"tagCircleIcon\": \"tagCircleIcon--23BBauLz\",\n\t\"grayTag\": \"grayTag--2LvSqLGI\",\n\t\"grayInverseTag\": \"grayInverseTag--2xLd9Zcw\",\n\t\"colorTag\": \"colorTag--2b-J-n-x\",\n\t\"checkableTag\": \"checkableTag--2FQvQ3Tq\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","import { Locale, K } from \"../constants\";\n\nconst locale: Locale = {\n [K.AGENT_STATUS_NORMAL]: \"Normal\",\n [K.AGENT_STATUS_ABNORMAL]: \"Abnormal\",\n [K.AGENT_STATUS_NOT_INSTALLED]: \"Not Installed\",\n [K.AGENT_STATUS_UNINSTALLED]: \"Uninstalled\",\n [K.AGENT_STATUS_UNDER_MAINTENANCE]: \"Under Maintenance\",\n [K.ALERT_MSG_SENDED]: \"Alert Message Sended\",\n [K.ALERT_CONVERGED]: \"Alert Converged\",\n [K.ALERT_RECOVERED]: \"Alert Recovered\",\n [K.ALERT_MANUAL_RECOVERED]: \"Alert Recovered Manually\",\n [K.ALERT_SHIELDED]: \"Alert Shielded\",\n [K.PRESENTATIONAL_BRICKS]: \"Presentational Bricks\",\n [K.PAGINATION_TOTAL_TEXT]: \"total\",\n [K.PAGINATION_TOTAL_UNIT]: \"items\",\n [K.UNKNOWN_ERROR]: \"unknown error\",\n [K.NO_DATA]: \"No Data\",\n [K.COLLECTION_INSTANCE_SYNCHRONIZE]: \"Synchronize\",\n [K.COLLECTION_INSTANCE_EXECUTE]: \"Execute\",\n [K.DELETE]: \"Delete\",\n [K.CROP_TITLE]: \"Crop your new profile picture\",\n [K.COPY]: \"Copy\",\n [K.COPY_FAILED]: \"Copy Failed\",\n [K.COPIED]: \"Copied\",\n [K.NO_TEXT_TO_COPY]: \"No text to copy\",\n [K.CHOSEN_OPTIONS]: \"Chosen {{count}} options\",\n [K.CLEAR]: \"Clear\",\n [K.SELECTED]: \"Selected\",\n [K.SELECT_ALL]: \"Select all\",\n [K.ITEMS]: \"options\",\n [K.SELECTED_OPTIONS]: \"Selected {{number}} options\",\n [K.FULL_TEXT_SEARCH]: \"Fulltext Search\",\n [K.IP_SEARCH]: \"IP Search \",\n [K.SORT]: \"Sort\",\n [K.PREVIEW]: \"Preview\",\n};\n\nexport default locale;\n","import { Locale, K } from \"../constants\";\n\nconst locale: Locale = {\n [K.AGENT_STATUS_NORMAL]: \"正常\",\n [K.AGENT_STATUS_ABNORMAL]: \"异常\",\n [K.AGENT_STATUS_NOT_INSTALLED]: \"未安装\",\n [K.AGENT_STATUS_UNINSTALLED]: \"已卸载\",\n [K.AGENT_STATUS_UNDER_MAINTENANCE]: \"维护中\",\n [K.ALERT_MSG_SENDED]: \"告警已发送\",\n [K.ALERT_CONVERGED]: \"告警被收敛\",\n [K.ALERT_RECOVERED]: \"告警已恢复\",\n [K.ALERT_MANUAL_RECOVERED]: \"人工恢复\",\n [K.ALERT_SHIELDED]: \"告警被屏蔽\",\n [K.PRESENTATIONAL_BRICKS]: \"Presentational Bricks\",\n [K.PAGINATION_TOTAL_TEXT]: \"共\",\n [K.PAGINATION_TOTAL_UNIT]: \"条\",\n [K.UNKNOWN_ERROR]: \"未知错误\",\n [K.NO_DATA]: \"暂无数据\",\n [K.COLLECTION_INSTANCE_SYNCHRONIZE]: \"同步实例\",\n [K.COLLECTION_INSTANCE_EXECUTE]: \"立即采集\",\n [K.DELETE]: \"删除\",\n [K.CROP_TITLE]: \"修改头像\",\n [K.COPY]: \"复制\",\n [K.COPIED]: \"复制成功\",\n [K.COPY_FAILED]: \"复制失败\",\n [K.NO_TEXT_TO_COPY]: \"没有可复制的文本\",\n [K.CHOSEN_OPTIONS]: \"已选择 {{count}} 项\",\n [K.SELECTED_OPTIONS]: \"已选 {{number}} 项\",\n [K.CLEAR]: \"清空\",\n [K.ITEMS]: \"项\",\n [K.SELECT_ALL]: \"全选\",\n [K.SELECTED]: \"已选\",\n [K.FULL_TEXT_SEARCH]: \"全文搜索\",\n [K.IP_SEARCH]: \"IP搜索 \",\n [K.SORT]: \"排序\",\n [K.PREVIEW]: \"预览\",\n};\n\nexport default locale;\n","import i18next from \"i18next\";\nimport { NS_PRESENTATIONAL_BRICKS } from \"./constants\";\nimport en from \"./locales/en\";\nimport zh from \"./locales/zh\";\n\ni18next.addResourceBundle(\"en\", NS_PRESENTATIONAL_BRICKS, en);\ni18next.addResourceBundle(\"zh\", NS_PRESENTATIONAL_BRICKS, zh);\n","import { MenuIcon } from \"@next-core/brick-types\";\n\nexport enum Color {\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 yellow = \"yellow\",\n \"green-inverse\" = \"green-inverse\",\n \"red-inverse\" = \"red-inverse\",\n \"blue-inverse\" = \"blue-inverse\",\n \"orange-inverse\" = \"orange-inverse\",\n \"cyan-inverse\" = \"cyan-inverse\",\n \"purple-inverse\" = \"purple-inverse\",\n \"geekblue-inverse\" = \"geekblue-inverse\",\n \"gray-inverse\" = \"gray-inverse\",\n \"yellow-inverse\" = \"yellow-inverse\",\n}\n\nexport enum TagTypeProps {\n Tag = \"Tag\",\n CheckableTag = \"CheckableTag\",\n}\n\nexport type TagListType = {\n key: string;\n label: string;\n tooltip?: string;\n icon?: string | MenuIcon;\n checked?: boolean;\n color?: string | Color;\n disabled?: boolean;\n disabledTooltip?: string;\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, { useState, useEffect } from \"react\";\nimport { Tag, Tooltip, TooltipProps } from \"antd\";\nimport { TagProps } from \"antd/lib/tag\";\nimport { CheckableTagProps } from \"antd/lib/tag/CheckableTag\";\nimport classNames from \"classnames\";\nimport style from \"./index.module.css\";\nimport { isArray, differenceBy } from \"lodash\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { TagTypeProps, TagListType } from \"../interfaces/brick-tag\";\nexport { Color } from \"../interfaces/brick-tag\";\n\nexport const circleIcon: MenuIcon = {\n lib: \"fa\",\n icon: \"circle\",\n prefix: \"fas\",\n};\n\nexport interface BrickTagProps extends TagProps {\n componentType?: TagTypeProps;\n configProps?: TagProps | CheckableTagProps;\n tagList: TagListType[];\n textEllipsis?: boolean;\n tagStyle?: React.CSSProperties;\n tagCheckedStyle?: React.CSSProperties;\n tagHoverStyle?: React.CSSProperties;\n handleOnChange?: (items: TagListType[]) => void;\n handleOnClose?: (current, tagList: TagListType[]) => void;\n handleOnClick?: (tag: TagListType) => void;\n multipleCheck?: boolean;\n label?: string;\n defaultCheckedTag?: string | string[];\n showTagCircle?: boolean;\n shape?: \"default\" | \"round\";\n closable?: boolean;\n disabledTooltip?: string;\n cancelable?: boolean;\n tooltipProps?: TooltipProps;\n afterBrick?: {\n useBrick: UseBrickConf;\n data?: any;\n };\n}\n\nexport function BrickTag(props: BrickTagProps): React.ReactElement {\n const {\n componentType,\n tagList,\n configProps,\n defaultCheckedTag,\n showTagCircle,\n color,\n closable,\n cancelable,\n tooltipProps,\n afterBrick,\n } = props;\n\n const [checkedTag, setCheckedTag] = useState([]);\n const [closedTag, setClosedTag] = useState(tagList);\n\n useEffect(() => {\n setCheckedTag(\n defaultCheckedTag\n ? isArray(defaultCheckedTag)\n ? defaultCheckedTag\n : [defaultCheckedTag]\n : []\n );\n }, [defaultCheckedTag]);\n\n const [hoverTag, setHoverTag] = useState(null);\n\n const onChange = (item, checked) => {\n const key = item.key;\n let nextCheckedTag: string[];\n if (props.multipleCheck) {\n nextCheckedTag = checked\n ? [...checkedTag, key]\n : checkedTag.filter((t) => t !== key);\n } else {\n if (!cancelable && !checked) {\n return;\n }\n nextCheckedTag = checked ? [key] : [];\n }\n const nextCheckedItems = tagList?.filter((item) =>\n nextCheckedTag?.includes(item.key)\n );\n props.handleOnChange(nextCheckedItems);\n };\n\n const onClose = (item) => {\n const newClosedTag = differenceBy(closedTag, [item], \"key\");\n setClosedTag(newClosedTag);\n props?.handleOnClose(item, newClosedTag);\n };\n\n const onClick = (item) => {\n props?.handleOnClick(item);\n };\n\n const onMouseEnter = (item, e) => {\n setHoverTag(item.key);\n };\n\n const onMouseLeave = (item, e) => {\n setHoverTag(null);\n };\n\n const renderTag = (TypeComponent: any, tagList: TagListType[]) =>\n tagList.map((item) => {\n const {\n key,\n label,\n tooltip,\n icon,\n color: itemColor,\n disabled,\n disabledTooltip,\n } = item;\n let restProps: any = {};\n const hover = hoverTag === key;\n if (TypeComponent === Tag) {\n restProps = {\n style: {\n ...props.tagStyle,\n ...(hover ? props.tagHoverStyle : {}),\n },\n onClick: () => {\n onClick(item);\n },\n };\n } else {\n const checked = checkedTag.includes(key);\n restProps = {\n style: {\n ...props.tagStyle,\n ...(checked ? props.tagCheckedStyle : {}),\n ...(hover ? props.tagHoverStyle : {}),\n },\n checked,\n onChange: (c) => onChange(item, c),\n };\n }\n const specificColor = itemColor || color;\n const tagNode = (\n <TypeComponent\n key={key}\n className={classNames({\n [style.grayTag]: specificColor === \"gray\" || disabled,\n [style.grayInverseTag]: specificColor === \"gray-inverse\",\n [style.round]: props.shape === \"round\",\n [style.closableTag]: closable && TypeComponent === Tag,\n [style.tagCircleIcon]: showTagCircle,\n [style.colorTag]:\n specificColor && !closable && TypeComponent === Tag,\n [style.disabledTag]: disabled,\n [style.checkableTag]: TypeComponent === Tag.CheckableTag,\n })}\n closable={closable}\n {...(closable ? { onClose: () => onClose(item) } : {})}\n color={!closable && specificColor}\n {...configProps}\n {...restProps}\n onMouseEnter={(e) => onMouseEnter(item, e)}\n onMouseLeave={(e) => onMouseLeave(item, e)}\n >\n {!showTagCircle &&\n icon &&\n (typeof icon === \"string\" ? (\n <LegacyIcon\n type={icon}\n style={{\n marginRight: \"7px\",\n marginLeft: 0,\n verticalAlign: \"middle\",\n fontSize: \"6px\",\n }}\n />\n ) : (\n typeof icon === \"object\" && (\n <GeneralIcon\n icon={icon}\n style={{\n marginRight: \"7px\",\n marginLeft: 0,\n verticalAlign: \"middle\",\n fontSize: \"6px\",\n }}\n />\n )\n ))}\n {showTagCircle && (\n <GeneralIcon\n icon={circleIcon}\n style={{\n marginRight: \"7px\",\n marginLeft: 0,\n verticalAlign: \"middle\",\n fontSize: \"6px\",\n }}\n />\n )}\n {label}\n </TypeComponent>\n );\n return tooltip ||\n (disabled && (props.disabledTooltip || disabledTooltip)) ? (\n <Tooltip\n key={key}\n title={disabled ? disabledTooltip || props.disabledTooltip : tooltip}\n {...tooltipProps}\n >\n {tagNode}\n </Tooltip>\n ) : (\n tagNode\n );\n });\n\n return (\n <div\n className={classNames(style.brickTag, {\n [style.tagTextOverflow]: props.textEllipsis,\n })}\n >\n {props.label && <span className={style.tagsLabel}>{props.label}</span>}\n {componentType === TagTypeProps.CheckableTag\n ? renderTag(Tag.CheckableTag, tagList)\n : renderTag(Tag, tagList)}\n {afterBrick && afterBrick.useBrick && (\n <BrickAsComponent\n useBrick={afterBrick.useBrick}\n data={afterBrick.data}\n ></BrickAsComponent>\n )}\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 { BrickTag } from \"./BrickTag\";\nimport { Card, TooltipProps } from \"antd\";\nimport { Color, TagTypeProps, TagListType } from \"../interfaces/brick-tag\";\nimport { get, map } from \"lodash\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\n/**\n * @id presentational-bricks.brick-tag\n * @name presentational-bricks.brick-tag\n * @editor shared-editors.general-tag--editor\n * @docKind brick\n * @description 进行标记和分类的小标签,同时支持基本标签和可选中标签\n * @author lynette\n * @slots\n * @history\n * 1.167.1:新增属性 `disabledTooltip`;在 TagListType 中新增 `color`,`disabled`,`disabledTooltip` 字段,支持对特定标签设置特殊颜色、禁用、禁用文案。\n * 1.97.0:属性`default`支持数组,新增事件`checked.update.v2`\n * 1.65.0:新增属性`shape`,支持大圆角\n * 1.60.0:新增 `color` 属性代替 `configProps.color` 的使用方式\n * @memo\n * @noInheritDoc\n */\nexport class BrickTagElement extends UpdatingElement {\n /**\n * @description 选中的 tag 的 key\n */\n @event({ type: \"checked.update\", cancelable: true })\n checkedUpdate: EventEmitter<string[]>;\n\n /**\n * @description 选中的 tag\n */\n @event({ type: \"checked.update.v2\", cancelable: true })\n checkedUpdateV2: EventEmitter<{ label: string; key: string }[]>;\n\n /**\n * @description 当前关闭的 tag 和剩余的tagList\n */\n @event({ type: \"tag.close\" }) tagClose: EventEmitter<{\n current: Record<string, any>;\n tagList: Record<string, any>[];\n }>;\n\n /**\n * @detail TagListType\n * @description 当前点击的tag\n */\n @event({ type: \"tag.click\" }) tagClick: EventEmitter<TagListType>;\n\n /**\n * @description 标签前的 label\n * @group basic\n */\n @property()\n label?: string;\n\n /**\n * @description 标签列表\n * @group basic\n */\n @property({\n attribute: false,\n })\n tagList?: TagListType[] | string[];\n\n /**\n * @default false\n * @description 是否在标签内显示小圆点\n * @group basic\n */\n @property({\n type: Boolean,\n })\n showTagCircle?: boolean;\n\n /**\n * @description 是否显示卡片\n * @group basic\n */\n @property({\n attribute: false,\n })\n showCard? = true;\n\n /**\n * @description 标签的颜色配置,当 `componentType=Tag` 且 `closable!=true` 时才有效,除了提供内置八种主题色,也支持直接赋色值(如 `#f5f5f5`)使用\n * @group basic\n */\n @property()\n color?: string | Color;\n\n /**\n * @description 是否能多选,多选场景下右上角会有小圆点提示\n * @group basic\n */\n @property({\n attribute: false,\n })\n multipleCheck? = true;\n\n /**\n * @description 数据源,通过 useResolves 从后台接口获取\n * @deprecated\n * @group advanced\n */\n @property({\n attribute: false,\n })\n dataSource?: Record<string, any>;\n\n /**\n * @default false\n * @description 标签是否可以关闭\n * @group basic\n */\n @property({\n type: Boolean,\n })\n closable?: boolean;\n\n /**\n * @default \"Tag\"\n * @description 组件类型,对应 ant-design 中的基本标签和可选中标签\n * @group advanced\n */\n @property({\n attribute: false,\n })\n componentType?: TagTypeProps;\n\n /**\n * @description componentType 为`CheckableTag`的时候默认选中的标签 key\n * @group advanced\n */\n @property({\n attribute: false,\n })\n default?: string | string[];\n\n /**\n * @description 标签是否可以取消单选,在 `componentType` 为 `CheckableTag` 且 `multipleCheck` 为 `false` 时生效。\n * @group advanced\n */\n @property({\n attribute: false,\n })\n cancelable? = true;\n\n /**\n * @description ant-design 相关配置项, [具体查阅](https://ant.design/components/tag-cn/#Tag) ,只有在 componentType=Tag 时才有效\n * @group advanced\n */\n @property({\n attribute: false,\n })\n configProps?: Record<string, any>;\n\n /**\n * @description 禁用标签的 tooltip\n * @group basic\n */\n @property()\n disabledTooltip?: string;\n\n /**\n * @description 标签的 tooltip 相关配置项, [具体查阅](https://ant.design/components/tooltip-cn/#API)\n * @group advanced\n */\n @property({\n attribute: false,\n })\n tooltipProps?: TooltipProps;\n\n /**\n * @description 这里可以规定从 dataSource 中的哪个字段取标签渲染的数据,例如 dataSource 返回的数据为 [{key:\"1\"},{key:\"2\"}],则可写成 {label: \"key\", key: \"key\"}\n * @deprecated\n * @group advanced\n */\n @property({\n attribute: false,\n })\n fields?: {\n label: string;\n key: string;\n icon?: string;\n tagList?: string;\n } = {\n label: \"label\",\n key: \"key\",\n icon: \"icon\",\n };\n\n /**\n * @default false\n * @description 文字是否超出省略\n * @group ui\n */\n @property({\n type: Boolean,\n })\n textEllipsis?: boolean;\n\n /**\n * @description 标签的自定义样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n tagStyle?: React.CSSProperties;\n\n /**\n * @description 标签选中的自定义样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n tagCheckedStyle?: React.CSSProperties;\n\n /**\n * @description 标签 Hover 的自定义样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n tagHoverStyle?: React.CSSProperties;\n\n /**\n * @description 最后一个tag后面使用子构件,具体查看 [UseBrickConf](/next-docs/docs/api-reference/brick-types.usesinglebrickconf)\n * @group advanced\n */\n @property({\n attribute: false,\n })\n afterBrick?: {\n useBrick: UseBrickConf;\n data: unknown;\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 private _getBrickTagNode(): React.ReactElement {\n const mutableProps = {\n tagList: this.tagList,\n };\n if (this.dataSource) {\n // eslint-disable-next-line no-console\n console.warn(\n \"`dataSource` and `fields` of `<presentational-bricks.brick-tag>` are deprecated, use `transform` instead.\"\n );\n mutableProps.tagList = this.fields.tagList\n ? get(this.dataSource, this.fields.tagList)\n : this.dataSource;\n }\n this._initData(mutableProps);\n return (\n <BrickTag\n componentType={this.componentType}\n shape=\"default\"\n tagList={mutableProps.tagList as TagListType[]}\n configProps={this.configProps}\n textEllipsis={this.textEllipsis}\n tagStyle={this.tagStyle}\n handleOnChange={this._handleOnChange}\n handleOnClose={this._handleOnClose}\n handleOnClick={this._handleOnClick}\n tagCheckedStyle={this.tagCheckedStyle}\n tagHoverStyle={this.tagHoverStyle}\n multipleCheck={this.multipleCheck}\n label={this.label}\n defaultCheckedTag={this.default}\n showTagCircle={this.showTagCircle}\n color={this.color}\n closable={this.closable}\n disabledTooltip={this.disabledTooltip}\n cancelable={this.cancelable}\n tooltipProps={this.tooltipProps}\n afterBrick={this.afterBrick}\n />\n );\n }\n\n private _initData(mutableProps: {\n tagList: Record<string, any>[] | string[];\n }): void {\n mutableProps.tagList = map(mutableProps.tagList, (item) => {\n if (typeof item === \"string\") {\n return {\n label: item,\n key: item,\n };\n } else {\n return {\n ...(item as Record<string, any>),\n label: get(item, this.fields.label),\n key: get(item, this.fields.key),\n icon: get(item, this.fields.icon),\n };\n }\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>{this._getBrickTagNode()}</Card>\n ) : (\n this._getBrickTagNode()\n )}\n </BrickWrapper>,\n this\n );\n }\n }\n\n private _handleOnClose = (current, tagList: TagListType[]): void => {\n this.tagClose.emit({ current, tagList });\n };\n\n private _handleOnChange = (items: TagListType[]): void => {\n const checkedKeys = map(items, \"key\");\n const defaultAction = this.checkedUpdate.emit(checkedKeys);\n const defaultActionV2 = this.checkedUpdateV2.emit(items);\n\n if (defaultAction && defaultActionV2) {\n this.default = checkedKeys;\n }\n };\n\n private _handleOnClick = (tag: { label: string; key: string }): void => {\n this.tagClick.emit(tag);\n };\n}\n\ncustomElements.define(\"presentational-bricks.brick-tag\", BrickTagElement);\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 moment from \"moment\";\nimport { Link } from \"@next-libs/basic-components\";\nimport classNames from \"classnames\";\nimport style from \"./index.module.css\";\nimport { ItemProps } from \"./BrickTimeline\";\n\nexport interface TimelineCardProps {\n title: string;\n description: string;\n timestamp: moment.Moment;\n link?: string;\n showLeftDate?: boolean;\n highlight?: boolean;\n itemData?: ItemProps;\n onClick?: (data: ItemProps) => void;\n}\n\nfunction getTitle(props: TimelineCardProps): React.ReactElement {\n const { title, link, onClick } = props;\n return link ? (\n <Link to={link} className={style.link}>\n {title}\n </Link>\n ) : (\n <span className={style.link} onClick={() => onClick?.(props.itemData)}>\n {title}\n </span>\n );\n}\n\nexport function TimelineBaseCard(props: TimelineCardProps): React.ReactElement {\n const { description, timestamp, highlight } = props;\n\n return (\n <div className={style.itemContainer}>\n <div className={style.leftArea}>\n <p\n className={classNames(style.title, { [style.highlight]: highlight })}\n >\n {getTitle(props)}\n </p>\n <p className={style.description}>{description}</p>\n <p className={style.dateTime}>{timestamp.format(\"YYYY/MM/DD HH:mm\")}</p>\n </div>\n </div>\n );\n}\n\nexport function TimelineExtensionCard(\n props: TimelineCardProps\n): React.ReactElement {\n const { description, timestamp, showLeftDate, highlight } = props;\n return (\n <div className={style.itemContainer} style={{ position: \"relative\" }}>\n <div className={style.leftArea}>\n <p\n className={classNames(style.title, { [style.highlight]: highlight })}\n >\n {getTitle(props)}\n </p>\n <p className={style.description}>{description}</p>\n </div>\n\n <div className={style.rightArea}>\n <span className={style.time}>{timestamp.format(\"HH:mm:ss\")}</span>\n {showLeftDate && (\n <div className={style.dateContainer}>\n <p className={style.month}>{timestamp.month() + 1}月</p>\n <p className={style.day}>{timestamp.date()}</p>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport moment from \"moment\";\nimport { get, pick } from \"lodash\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { Timeline, Card } from \"antd\";\nimport { TimelineBaseCard, TimelineExtensionCard } from \"./TimelineCard\";\nimport { groupByMoth } from \"./processor\";\nimport style from \"./index.module.css\";\nimport { StatusColor, TimelineItem } from \"./index\";\n\nexport type TimeType = \"second\" | \"default\";\n\nexport type ItemProps = TimelineItem | Record<string, any>;\n\nexport interface BrickTimelineProps {\n itemList: ItemProps[];\n useBrick?: UseBrickConf;\n statusMap?: Record<string, StatusColor>;\n type?: \"base\" | \"extension\";\n timeType?: TimeType;\n showCard?: boolean;\n mode?: \"left\" | \"right\" | \"alternate\";\n onClick?: (data: ItemProps) => void;\n}\n\nexport function BrickTimeline(props: BrickTimelineProps): React.ReactElement {\n const getGeneralProps = React.useCallback(\n (item: TimelineItem): Omit<TimelineItem, \"status\" | \"time\"> =>\n pick(item, [\"title\", \"description\", \"link\"]),\n []\n );\n\n const renderTimeline = (list: ItemProps[] = []): React.ReactElement => {\n const existedDateTime: Record<string, boolean> = {};\n return (\n <Timeline\n mode={props.useBrick ? props.mode : \"left\"}\n className={style.brickTimeline}\n >\n {list?.map((item, index) => {\n // 根据不同时间类型统一转化为时间戳处理\n let timestamp: moment.Moment;\n if (props.timeType === \"second\") {\n timestamp = moment(item.time * 1000);\n } else {\n timestamp = moment(item.time);\n }\n\n // 判断该时间点对应的日期是否首次出现,是的话需要显示在时间轴左侧\n let showLeftDate: boolean;\n const date = moment(timestamp).format(\"YYYY-MM-DD\");\n if (!existedDateTime[date]) {\n showLeftDate = true;\n existedDateTime[date] = true;\n }\n\n return (\n <Timeline.Item\n key={index}\n color={get(props.statusMap, item.status)}\n >\n {props.useBrick ? (\n <BrickAsComponent\n useBrick={props.useBrick}\n data={{ item, index, list: props.itemList }}\n />\n ) : props.type === \"extension\" ? (\n <TimelineExtensionCard\n {...getGeneralProps(item as TimelineItem)}\n timestamp={timestamp}\n showLeftDate={showLeftDate}\n onClick={props.onClick}\n itemData={item}\n />\n ) : (\n <TimelineBaseCard\n {...getGeneralProps(item as TimelineItem)}\n timestamp={timestamp}\n onClick={props.onClick}\n itemData={item}\n />\n )}\n </Timeline.Item>\n );\n })}\n </Timeline>\n );\n };\n\n const getComponent = (): React.ReactElement => {\n if (props.type === \"extension\") {\n // 根据月份分组\n const timelineGroup = groupByMoth(props.itemList, props.timeType);\n return (\n <>\n {timelineGroup.map((item) => (\n <div key={item.groupName}>\n <div className={style.groupName}>{item.groupName}</div>\n {renderTimeline(item.list)}\n </div>\n ))}\n </>\n );\n } else {\n return renderTimeline(props.itemList);\n }\n };\n\n return props.showCard ? <Card>{getComponent()}</Card> : getComponent();\n}\n","import { ItemProps, TimeType } from \"./BrickTimeline\";\nimport { groupBy } from \"lodash\";\nimport moment from \"moment\";\n\nexport function groupByMoth(\n list: ItemProps[] = [],\n timeType?: TimeType\n): Array<{ groupName: string; list: ItemProps[] }> {\n const category = groupBy(list, (item) =>\n moment(timeType === \"second\" ? item.time * 1000 : item.time).format(\n \"YYYY-MM\"\n )\n );\n\n return Object.entries(category).map(([key, list]) => ({\n groupName: key,\n list,\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 { BrickTimeline, BrickTimelineProps, ItemProps } from \"./BrickTimeline\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\n\nexport type StatusColor = \"green\" | \"red\" | \"gray\" | \"blue\";\n\nexport interface TimelineItem {\n title: string;\n description: string;\n time: string | number;\n status: string;\n link: string;\n}\n\n/**\n * @id presentational-bricks.brick-timeline\n * @name presentational-bricks.brick-timeline\n * @docKind brick\n * @description 垂直展示的时间流信息,常用于变更历史、工作动态等\n * @author jo\n * @slots\n * @history\n * @memo\n * ## useBrick\n *\n * 自定义展示子构件时,子构件收到的数据格式为:\n *\n * ```js\n * export interface Data {\n * item: object; // 单项数据\n * index: number; // 序号\n * list: object[]; // 所有数据\n * }\n * ```\n *\n * ## StatusColor\n * ```js\n * // 根据时间轴UI规范不同颜色代表不同的状态,通常绿色表示已完成或者成功状态的,红色表示告警或者错误状态,蓝色表示正在进行的当前状态,灰色表示普通状态\n * export type StatusColor = \"green\" | \"red\" | \"gray\" | \"blue\";\n * ```\n *\n * ## TimelineItem\n * ```js\n * export interface TimelineItem {\n * title: string;\n * description: string;\n * time: string | number;\n * status: string;\n * link?: string;\n * [key: string]: any\n * }\n * ```\n * @noInheritDoc\n */\nexport class BrickTimelineElement extends UpdatingElement {\n /**\n * @kind TimelineItem[]|Record<string, any>[]\n * @required true\n * @default -\n * @description 数据源\n */\n @property({\n attribute: false,\n })\n itemList: BrickTimelineProps[\"itemList\"];\n\n /**\n * @kind [UseBrickConf](http://docs.developers.easyops.cn/docs/api-reference/brick-types.usebrickconf)\n * @required true\n * @default -\n * @description 自定义构件\n */\n @property({\n attribute: false,\n })\n useBrick: UseBrickConf;\n\n /**\n * @kind Record<string, StatusColor>\n * @required false\n * @default -\n * @description 根据数据源状态值映射到相应的颜色\n */\n @property({\n attribute: false,\n })\n statusMap: BrickTimelineProps[\"statusMap\"];\n\n /**\n * @kind base | extension\n * @required false\n * @default base\n * @description 平台内置的标准时间轴类型,支持内置的基本类型和内置的扩展类型,不使用 `useBrick` 配置第三方构件时,该字段才有效\n */\n @property({\n attribute: false,\n })\n type: BrickTimelineProps[\"type\"] = \"base\";\n\n /**\n * @kind second | default\n * @required false\n * @default default\n * @description 时间轴时间的具体配置,值为`default`时可以是格式化的字符串 `date` 对象或者毫秒级的时间戳等,除了时间是秒为单位的,其他单位都可不用设置该属性\n */\n @property({\n attribute: false,\n })\n timeType: BrickTimelineProps[\"timeType\"] = \"default\";\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示 card 边框\n */\n @property({\n attribute: false,\n })\n showCard = true;\n\n /**\n * @kind left | right | alternate\n * @required false\n * @default left\n * @description 时间轴和内容的相对位置,注意内置的标准时间轴类型不支持该字段的配置,只有使用 `useBrick` 配置第三方构件时可用\n */\n @property()\n mode: BrickTimelineProps[\"mode\"];\n\n /**\n * @detail Record<string, any>\n * @description 标题点击事件,事件详情为所对应的该项的数据(当配置该点击事件时,不要再配置 `TimelineItem` 中的跳转链接 `link` 属性,否则该点击事件无效会优先响应url跳转)\n */\n @event({ type: \"item.click\" }) clickEvent: EventEmitter<ItemProps>;\n private _handleClick = (data: ItemProps) => {\n this.clickEvent.emit(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 protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickTimeline\n itemList={this.itemList}\n useBrick={this.useBrick}\n showCard={this.showCard}\n statusMap={this.statusMap}\n type={this.type}\n timeType={this.timeType}\n mode={this.mode}\n onClick={this._handleClick}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-timeline\",\n BrickTimelineElement\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!./BrickDescriptions.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 { Descriptions } from \"antd\";\nimport { DescriptionsProps } from \"antd/lib/descriptions\";\nimport { isPlainObject } from \"lodash\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickDescriptionsItemProps } from \"./index\";\n\nimport styles from \"./BrickDescriptions.module.css\";\n\nexport interface BrickDescriptionsProps {\n configProps?: DescriptionsProps;\n itemList: BrickDescriptionsItemProps[];\n dataSource?: any;\n descriptionTitle?: string;\n column?: number;\n size?: \"default\" | \"middle\" | \"small\";\n bordered?: boolean;\n layout?: \"horizontal\" | \"vertical\";\n hideGroups?: string[] | string;\n extraBrick?: {\n useBrick: UseBrickConf;\n };\n}\n\nexport function BrickDescriptions(\n props: BrickDescriptionsProps\n): React.ReactElement {\n const {\n descriptionTitle,\n column,\n size,\n bordered,\n layout,\n dataSource,\n configProps,\n itemList,\n hideGroups,\n extraBrick,\n } = props;\n\n const hideGroupsSet = new Set([].concat(hideGroups).filter(Boolean));\n // istanbul ignore next\n const renderLegacyComponent = (\n item: BrickDescriptionsItemProps\n ): React.ReactElement => {\n // eslint-disable-next-line no-console\n console.warn(\n \"`<presentational-bricks.brick-descriptions>.itemList[].component` are deprecated, use `useBrick` instead.\"\n );\n const { field, component } = item;\n if (field && Array.isArray(dataSource[field])) {\n return dataSource[field].map((data: any, i: number) => (\n <component.brick\n key={`${item.id}-${i}`}\n ref={(el: any) => {\n el &&\n Object.assign(el, {\n item,\n dataSource: data,\n ...component.properties,\n });\n }}\n />\n ));\n } else {\n return (\n <component.brick\n key={item.id}\n ref={(el: any) => {\n el &&\n Object.assign(el, {\n item,\n dataSource: dataSource,\n ...component.properties,\n });\n }}\n />\n );\n }\n };\n\n // istanbul ignore next\n const renderBrick = (item: {\n useBrick?: UseBrickConf;\n }): React.ReactElement => {\n return <BrickAsComponent useBrick={item.useBrick} data={dataSource} />;\n };\n\n return (\n <Descriptions\n title={descriptionTitle}\n column={column}\n size={size}\n bordered={bordered}\n layout={layout}\n extra={extraBrick && renderBrick(extraBrick)}\n className={styles.descriptionWrapper}\n {...configProps}\n >\n {itemList\n ?.filter((item) => !hideGroupsSet.has(item.group))\n .map((item, idx) => {\n const { text, component, useBrick, ...itemProps } = item;\n return (\n <Descriptions.Item\n key={item.id || idx}\n {...itemProps}\n className={styles.descriptionItem}\n >\n {useBrick\n ? renderBrick(item)\n : component\n ? renderLegacyComponent(item)\n : isPlainObject(text)\n ? JSON.stringify(text)\n : text}\n </Descriptions.Item>\n );\n })}\n </Descriptions>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { BrickDescriptions } from \"./BrickDescriptions\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { Card } from \"antd\";\nimport { get, map } from \"lodash\";\nimport { DescriptionsProps } from \"antd/lib/descriptions\";\nimport { DescriptionsItemProps } from \"antd/lib/descriptions/Item\";\nimport styles from \"./BrickDescriptions.module.css\";\n\nexport interface BrickDescriptionsItemProps\n extends Partial<DescriptionsItemProps> {\n /**\n * 内容\n */\n text: string;\n id?: string;\n /**\n * 所属分组\n */\n group?: string;\n /**\n * 该 item 的 text 取自 dataSource 的哪个字段\n */\n field?: string;\n /**\n * 支持为某项自定义展示构件 [#UseBrickConf](#usebrickconf)\n */\n useBrick?: UseBrickConf;\n /**\n * [已废弃]自定义该 item 的展示构件\n */\n component?: {\n brick?: string;\n properties?: any;\n };\n}\nexport interface DescriptionListProps {\n itemList: BrickDescriptionsItemProps[];\n descriptionTitle: string;\n configProps?: DescriptionsProps;\n column?: number;\n size?: SizeType;\n bordered?: boolean;\n layout?: LayoutType;\n hideGroups?: string[] | string;\n extraBrick?: {\n useBrick: UseBrickConf;\n };\n}\n\nexport type LayoutType = \"horizontal\" | \"vertical\";\nexport type SizeType = \"default\" | \"middle\" | \"small\";\n\n/**\n * @id presentational-bricks.brick-descriptions\n * @name presentational-bricks.brick-descriptions\n * @docKind brick\n * @description 常用于概要信息的描述,2~3列\n * @author lynette\n * @slots\n * @history\n * 1.59.0:新增属性:`descriptionTitle`、`column`、`size`、`bordered`、`layout`\n * @memo\n * ### UseBrickConf\n *\n * | property | type | required | default | description |\n * | ------------- | -------------- | -------- | ------- | -------------------------------------------------- |\n * | brick | string | true | - | 构件名称 |\n * | properties | object | - | - | 构件属性 |\n * | events | BrickEventsMap | - | - | 事件 |\n * | transform | string\\|object | - | - | 属性数据转换 |\n * | transformFrom | string | - | - | 属性数据转换来自数据源的哪个字段,不填则为整个数据 |\n * @noInheritDoc\n */\nexport class BrickDescriptionsElement extends UpdatingElement {\n /**\n * @kind string\n * @required false\n * @default -\n * @description 描述列表的标题,显示在最顶部\n * @group basic\n */\n @property()\n descriptionTitle: string;\n\n /**\n * @kind any[]\n * @required false\n * @default -\n * @description 多个描述列表时的数据入口\n * @group basic\n */\n @property({\n attribute: false,\n })\n descriptionList: DescriptionListProps[];\n\n /**\n * @kind BrickDescriptionsItemProps[]\n * @required false\n * @default -\n * @description 描述列表项,扩展自 ant-design DescriptionItem 相关配置项,额外扩展项如下,其他项查阅:[DescriptionItem](https://ant.design/components/descriptions-cn/#DescriptionItem)\n * @group basic\n */\n @property({\n attribute: false,\n })\n itemList: BrickDescriptionsItemProps[];\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示卡片\n * @group basic\n */\n @property({\n attribute: false,\n })\n showCard = true;\n\n /**\n * @kind number|object\n * @required false\n * @default 3\n * @description 一行的 DescriptionItems 数量,可以写成像素值或支持响应式的对象写法 { xs: 8, sm: 16, md: 24}\n * @group basic\n */\n @property({\n attribute: false,\n })\n column: number;\n\n /**\n * @kind LayoutType\n * @required false\n * @default horizontal\n * @description 描述布局\n * @enums \"horizontal\"|\"vertical\"\n * @group ui\n */\n @property({\n attribute: false,\n })\n layout: LayoutType;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否展示边框\n * @group ui\n */\n @property({\n type: Boolean,\n })\n bordered: boolean;\n\n /**\n * @kind SizeType\n * @required false\n * @default -\n * @description 设置列表的大小。可以设置为 middle 、small, 或不填(只有设置 bordered={true} 生效)\n * @enums \"default\"|\"middle\"|\"small\"\n * @group ui\n */\n @property({\n attribute: false,\n })\n size: SizeType;\n\n /**\n * @kind DescriptionsProps\n * @required false\n * @default -\n * @description ant-design 相关配置项,具体查阅:[Descriptions](https://ant.design/components/descriptions-cn/#Descriptions)\n */\n @property({\n attribute: false,\n })\n configProps: DescriptionsProps;\n\n /**\n * @kind string[] | string\n * @required false\n * @default -\n * @description 设置需要隐藏的描述列表项。请先在 itemList 中定义列表项所属 group\n */\n @property({\n attribute: false,\n })\n hideGroups: string[] | string;\n\n /**\n * @required false\n * @description 描述列表的操作区域构件配置,显示在右上方\n */\n extraBrick?: {\n useBrick: UseBrickConf;\n };\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default -\n * @deprecated\n * @description [已废弃]数据来源,通常来源于后台\n */\n @property({\n attribute: false,\n })\n dataSource: Record<string, 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 // istanbul ignore next\n protected _getBrickDescriptionsNode(): React.ReactElement {\n const mutableProps = {\n itemList: this.itemList,\n };\n if (this.dataSource) {\n // eslint-disable-next-line no-console\n console.warn(\n \"`dataSource` and `fields` of `<presentational-bricks.brick-descriptions>` are deprecated, use `transform` instead.\"\n );\n mutableProps.itemList = map(mutableProps.itemList, (item) => {\n return {\n ...item,\n ...(item.field ? { text: get(this.dataSource, item.field) } : {}),\n };\n });\n }\n return (\n <>\n {this.descriptionList?.length ? (\n <div className={styles.descriptionList}>\n {this.descriptionList.map((description, index) => (\n <BrickDescriptions\n key={index}\n itemList={description.itemList}\n descriptionTitle={description.descriptionTitle}\n configProps={description.configProps || this.configProps}\n column={description.column || this.column}\n size={description.size || this.size}\n bordered={description.bordered || this.bordered}\n layout={description.layout || this.layout}\n hideGroups={description.hideGroups || this.hideGroups}\n extraBrick={description.extraBrick || this.extraBrick}\n />\n ))}\n </div>\n ) : (\n <BrickDescriptions\n itemList={mutableProps.itemList}\n configProps={this.configProps}\n dataSource={this.dataSource}\n descriptionTitle={this.descriptionTitle}\n column={this.column}\n size={this.size}\n bordered={this.bordered}\n layout={this.layout}\n hideGroups={this.hideGroups}\n extraBrick={this.extraBrick}\n />\n )}\n </>\n );\n }\n\n protected _render(): void {\n if (this.isConnected) {\n // istanbul ignore next\n ReactDOM.render(\n <BrickWrapper>\n {this.showCard ? (\n <Card bordered={false} className={styles.descriptionCardWrapper}>\n {this._getBrickDescriptionsNode()}\n </Card>\n ) : (\n this._getBrickDescriptionsNode()\n )}\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-descriptions\",\n BrickDescriptionsElement\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, {\n useState,\n useRef,\n useEffect,\n useMemo,\n useCallback,\n} from \"react\";\nimport Icon from \"@ant-design/icons\";\nimport { Tree, Input, Checkbox, Empty } from \"antd\";\nimport { TreeProps, DataNode } from \"antd/lib/tree\";\nimport { CheckboxChangeEvent } from \"antd/lib/checkbox\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { TreeIcon, BrickTreeNodeProps } from \"./index\";\nimport { checkedFilterProps } from \"../interfaces/brick-tree\";\nimport {\n uniqueId,\n isEmpty,\n eq,\n lt,\n lte,\n gt,\n gte,\n get,\n difference,\n intersection,\n debounce,\n cloneDeep,\n} from \"lodash\";\nimport { EventDataNode } from \"rc-tree/lib/interface\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport styles from \"./index.module.css\";\nimport classNames from \"classnames\";\nimport i18n from \"i18next\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\n\nconst { DirectoryTree } = Tree;\n\nexport const compareFunMap: Record<string, any> = {\n $eq: eq,\n $lt: lt,\n $lte: lte,\n $gt: gt,\n $gte: gte,\n $ne: (value1: any, value2: any): boolean => !eq(value1, value2),\n};\n\nfunction flat(arr: BrickTreeNodeProps[]): BrickTreeNodeProps[] {\n return [].concat(\n ...arr.map((item: BrickTreeNodeProps) =>\n item.children ? [].concat(item, ...flat(item?.children)) : [item]\n )\n );\n}\n\nfunction isMenuIcon(icon: TreeIcon): icon is MenuIcon {\n return (icon as MenuIcon).lib !== undefined;\n}\n\nfunction getTreeNodes(\n list: BrickTreeNodeProps[],\n iconUseBrick: { useBrick: UseBrickConf }\n): DataNode[] {\n return list.map((item) => {\n const { children, icon: _icon, key, ...itemProps } = item;\n let icon: React.ReactNode;\n\n if (iconUseBrick) {\n icon = <BrickAsComponent useBrick={iconUseBrick.useBrick} data={item} />;\n } else if (_icon) {\n if (isMenuIcon(_icon)) {\n icon = <GeneralIcon icon={_icon} />;\n } else {\n icon = <Icon component={_icon} />;\n }\n }\n\n return {\n ...itemProps,\n icon,\n key: key ?? uniqueId(\"tree-node-\"),\n children: children && getTreeNodes(children, iconUseBrick),\n };\n });\n}\n\nfunction nodeCheckable(node: DataNode): boolean {\n return !node.disabled && !node.disableCheckbox && node.checkable !== false;\n}\n\nfunction getAllKeys(nodes: DataNode[], keys?: React.Key[]): React.Key[] {\n if (!keys) {\n keys = [];\n }\n\n nodes.forEach((node) => {\n const children = node.children;\n\n if (nodeCheckable(node)) {\n keys.push(node.key);\n }\n\n if (children?.length) {\n getAllKeys(children, keys);\n }\n });\n\n return keys;\n}\n\n// istanbul ignore next\nfunction getAllCheckedState(\n treeData: DataNode[],\n checkedKeySet: Set<React.Key>\n): boolean {\n return treeData\n .filter((v) => !v.disabled)\n .every((node) =>\n checkedKeySet.has(node.key)\n ? true\n : node.children && node.children.filter((v) => !v.disabled).length !== 0\n ? getAllCheckedState(node.children, checkedKeySet)\n : false\n );\n}\n\nconst getExpandedKeysBySearchValue = (\n nodes: DataNode[],\n searchValue: string,\n expandedKeys: React.Key[],\n options?: { searchParent?: boolean; alsoSearchByKey?: boolean }\n): boolean => {\n let isHit = false;\n\n nodes.forEach((node) => {\n const childrenLength = node.children?.length;\n if (childrenLength ? options?.searchParent : true) {\n if (\n (typeof node.title === \"string\" &&\n node.title?.toLocaleLowerCase()?.includes(searchValue)) ||\n (options?.alsoSearchByKey &&\n node.key.toString()?.toLocaleLowerCase()?.includes(searchValue))\n ) {\n isHit = true;\n }\n }\n\n if (\n childrenLength &&\n getExpandedKeysBySearchValue(\n node.children,\n searchValue,\n expandedKeys,\n options\n )\n ) {\n expandedKeys.push(node.key);\n isHit = true;\n }\n });\n\n return isHit;\n};\n\nexport interface BrickTreeProps {\n selectedKeys?: React.Key[];\n checkedKeys?: React.Key[];\n expandedKeys?: React.Key[];\n configProps?: Omit<\n TreeProps,\n \"selectedKeys\" | \"checkedKeys\" | \"expandedKeys\"\n >;\n dataSource: BrickTreeNodeProps[];\n searchable?: boolean;\n searchQ?: string;\n placeholder?: string;\n searchParent?: boolean;\n checkAllEnabled?: boolean;\n checkedFilterConfig?: checkedFilterProps;\n checkedNotRelevant?: boolean;\n onSelect?(\n selectedKeys: React.Key[],\n info: {\n event: \"select\";\n selected: boolean;\n node: EventDataNode;\n selectedNodes: DataNode[];\n nativeEvent: MouseEvent;\n }\n ): void;\n onCheck?(\n checkedKeys:\n | React.Key[]\n | { checked: React.Key[]; halfChecked: React.Key[] }\n ): void;\n onExpand?(expandedKeys: React.Key[]): void;\n onSearch?(value: string): void;\n suffixBrick?: { useBrick: UseBrickConf };\n suffixStopEvent?: boolean;\n afterSearchBrick?: { useBrick: UseBrickConf };\n showSpecificationTitleStyle?: boolean;\n defaultExpandAll?: boolean;\n deselectable?: boolean;\n alsoSearchByKey?: boolean;\n isFilter?: boolean;\n iconUseBrick?: { useBrick: UseBrickConf };\n isDirectory?: boolean;\n hideSelectedNum?: boolean;\n hideBackground?: boolean;\n}\n\nexport function BrickTree(props: BrickTreeProps): React.ReactElement {\n const {\n selectedKeys: _selectedKeys,\n expandedKeys: _expandedKeys,\n configProps = {},\n dataSource = [],\n searchable = false,\n searchParent = false,\n searchQ = \"\",\n placeholder = \"\",\n checkAllEnabled,\n checkedFilterConfig: { field, value, operator } = {},\n checkedNotRelevant,\n suffixBrick,\n suffixStopEvent,\n afterSearchBrick,\n showSpecificationTitleStyle,\n defaultExpandAll,\n deselectable,\n alsoSearchByKey,\n isFilter,\n onSearch,\n iconUseBrick,\n isDirectory,\n hideBackground,\n } = props;\n const [allChecked, setAllChecked] = useState(false);\n const [indeterminate, setIndeterminate] = useState(false);\n const [selectedKeys, setSelectedKeys] = useState<React.Key[]>();\n const [filterCheckedKeys, setFilterCheckedKeys] = useState<React.Key[]>();\n const [checkedKeys, setCheckedKeys] = useState<\n React.Key[] | { checked: React.Key[]; halfChecked: React.Key[] }\n >();\n const [expandedKeys, setExpandedKeys] = useState<React.Key[]>();\n const [searchValue, setSearchValue] = useState<string>(searchQ);\n const [inputValue, setInputValue] = useState<string>(searchQ);\n const treeContainerRef = useRef<HTMLDivElement>();\n const nodeMatchedRef = useRef<boolean>(false);\n\n const defaultData = useMemo(\n () => getTreeNodes(dataSource, iconUseBrick),\n [dataSource]\n );\n const filterTreeKeys = useMemo(\n () =>\n flat(dataSource)\n .filter((v) => compareFunMap[operator]?.(value, get(v, field)))\n .map((v) => v.key) || [],\n [dataSource]\n );\n const treeData = useMemo(() => {\n const loop = (data: DataNode[]): DataNode[] => {\n const filterTrees: DataNode[] = [];\n for (let i = 0; i < data.length; i++) {\n const node = cloneDeep(data[i]);\n let children: DataNode[] = [];\n if (node.children) {\n node.children = children = loop(node.children);\n }\n const strTitle = node.title as string;\n const _key = node.key as string;\n const lowerCaseSearchValue = searchValue.toLocaleLowerCase();\n const index = strTitle\n .toLocaleLowerCase()\n .indexOf(lowerCaseSearchValue);\n const kIndex = alsoSearchByKey\n ? _key.toString()?.toLocaleLowerCase().indexOf(lowerCaseSearchValue)\n : -1;\n if (index != -1 || kIndex != -1 || children.length)\n filterTrees.push(node);\n }\n return filterTrees;\n };\n const data = searchValue ? loop(defaultData) : defaultData;\n return data;\n }, [searchValue, defaultData]);\n\n useEffect(() => {\n setSelectedKeys(_selectedKeys);\n }, [_selectedKeys]);\n // istanbul ignore next\n useEffect(() => {\n const _checkedKeys = props.checkedKeys ?? [];\n setCheckedKeys(_checkedKeys);\n setFilterCheckedKeys(difference(_checkedKeys, filterTreeKeys));\n if (\n _checkedKeys.length === 0 ||\n intersection(_checkedKeys, getAllKeys(defaultData))?.length === 0\n ) {\n setAllChecked(false);\n setIndeterminate(false);\n } else {\n const checkedKeySet = new Set(_checkedKeys);\n let allChecked;\n if (!checkedNotRelevant) {\n allChecked = getAllCheckedState(defaultData, checkedKeySet);\n } else {\n const allKeys = getAllKeys(defaultData);\n allChecked = allKeys.every((key) => checkedKeySet.has(key));\n }\n setAllChecked(allChecked);\n setIndeterminate(!allChecked);\n }\n }, [props.checkedKeys]);\n useEffect(() => {\n setExpandedKeys(_expandedKeys);\n }, [_expandedKeys]);\n useEffect(() => {\n nodeMatchedRef.current = false;\n }, [searchValue]);\n\n let searchValueLength: number;\n\n if (searchValue) {\n searchValueLength = searchValue.length;\n }\n\n const onChange = useCallback(\n debounce((value: string) => {\n // 等到 expandedKeys 更新后,也就是展开状态改变后,再触发跳转到第一个匹配项\n setTimeout(() => {\n setSearchValue(value);\n });\n if (value) {\n const expandedKeys: React.Key[] = [];\n\n getExpandedKeysBySearchValue(\n defaultData,\n value.toLocaleLowerCase(),\n expandedKeys,\n {\n searchParent,\n alsoSearchByKey,\n }\n );\n setExpandedKeys(expandedKeys);\n }\n if (isFilter) {\n onSearch(value);\n }\n }, 300),\n [defaultData, searchParent, alsoSearchByKey]\n );\n const handleOnChange = (value: string) => {\n onChange(value);\n setInputValue(value);\n };\n\n const onCheckAllChange = (e: CheckboxChangeEvent) => {\n const checked = e.target.checked;\n const checkedKeys = checked ? getAllKeys(defaultData) : [];\n let _filterCheckedKeys: React.Key[] = [];\n if (props.checkedFilterConfig) {\n _filterCheckedKeys = difference(checkedKeys, filterTreeKeys);\n setFilterCheckedKeys(_filterCheckedKeys);\n }\n setAllChecked(checked);\n setIndeterminate(false);\n setCheckedKeys(checkedKeys);\n props.onCheck?.(\n props.checkedFilterConfig ? _filterCheckedKeys : checkedKeys\n );\n };\n\n const onSelect = (\n selectedKeys: React.Key[],\n info: {\n event: \"select\";\n selected: boolean;\n node: EventDataNode;\n selectedNodes: DataNode[];\n nativeEvent: MouseEvent;\n }\n ) => {\n if (!deselectable && selectedKeys.length === 0) {\n return;\n }\n\n setSelectedKeys(selectedKeys);\n props.onSelect?.(selectedKeys, info);\n };\n\n const onCheck = (\n checkedKeys:\n | React.Key[]\n | { checked: React.Key[]; halfChecked: React.Key[] }\n ) => {\n const _checkedKeys =\n \"checked\" in checkedKeys ? checkedKeys.checked : checkedKeys;\n let _filterCheckedKeys: React.Key[] = [];\n if (props.checkedFilterConfig) {\n _filterCheckedKeys = difference(_checkedKeys, filterTreeKeys);\n setFilterCheckedKeys(_filterCheckedKeys);\n }\n setCheckedKeys(_checkedKeys);\n\n if (_checkedKeys.length === 0) {\n setAllChecked(false);\n setIndeterminate(false);\n } else {\n const checkedKeySet = new Set(_checkedKeys);\n let allChecked;\n if (!checkedNotRelevant) {\n allChecked = defaultData.every((node) => checkedKeySet.has(node.key));\n } else {\n const allKeys = getAllKeys(defaultData);\n allChecked = allKeys.every((key) => checkedKeySet.has(key));\n }\n setAllChecked(allChecked);\n setIndeterminate(!allChecked);\n }\n\n props.onCheck?.(\n props.checkedFilterConfig ? _filterCheckedKeys : _checkedKeys\n );\n };\n\n const onExpand = (expandedKeys: React.Key[]) => {\n setExpandedKeys(expandedKeys);\n props.onExpand(expandedKeys);\n };\n\n const titleRender = (node: any) => {\n const { title: _title, children, key: _key } = node;\n let title: React.ReactNode = _title;\n //根据ui规范,全部或者默认的节点,字体加粗,间距加宽\n const allOrDefaultFlag =\n (title === \"全部\" || title === \"默认\") && !children;\n if (\n typeof _title === \"string\" &&\n searchValue &&\n (searchParent ? true : !children?.length)\n ) {\n const lowerCaseSearchValue = searchValue.toLocaleLowerCase();\n const index = _title.toLocaleLowerCase().indexOf(lowerCaseSearchValue);\n const kIndex = alsoSearchByKey\n ? _key.toString()?.toLocaleLowerCase().indexOf(lowerCaseSearchValue)\n : -1;\n\n if (index >= 0) {\n const beforeStr = _title.substring(0, index);\n const matchStr = _title.substring(index, searchValueLength + index);\n const afterStr = _title.substring(searchValueLength + index);\n\n title = (\n <span\n ref={(() => {\n if (!nodeMatchedRef.current) {\n nodeMatchedRef.current = true;\n\n return (el: HTMLElement) => {\n if (el) {\n const nodeEl = el.closest(\".ant-tree-treenode\") || el;\n const treeContainerEl = treeContainerRef.current;\n\n treeContainerEl?.scrollBy(\n undefined,\n nodeEl.getBoundingClientRect().top -\n treeContainerEl.getBoundingClientRect().top\n );\n }\n };\n } else {\n return null;\n }\n })()}\n >\n {alsoSearchByKey ? (\n // 如果也按key搜索,就整体高亮(因为key不会展示)\n <span className={styles.matchTextTotal}>{_title}</span>\n ) : (\n <>\n {beforeStr}\n <span className={styles.matchText}>{matchStr}</span>\n {afterStr}\n </>\n )}\n </span>\n );\n } else if (kIndex >= 0) {\n title = (\n <span\n ref={(() => {\n if (!nodeMatchedRef.current) {\n nodeMatchedRef.current = true;\n\n return (el: HTMLElement) => {\n if (el) {\n const nodeEl = el.closest(\".ant-tree-treenode\") || el;\n const treeContainerEl = treeContainerRef.current;\n\n treeContainerEl.scrollBy(\n undefined,\n nodeEl.getBoundingClientRect().top -\n treeContainerEl.getBoundingClientRect().top\n );\n }\n };\n } else {\n return null;\n }\n })()}\n >\n <span className={styles.matchTextTotal}>{_title}</span>\n </span>\n );\n }\n }\n\n if (!isEmpty(suffixBrick?.useBrick)) {\n return (\n <div className={styles.suffixBrickWrapper}>\n <span\n className={\n showSpecificationTitleStyle && allOrDefaultFlag\n ? styles.allOrDefault\n : null\n }\n >\n {title}\n </span>\n <span\n onClick={(e) => {\n suffixStopEvent && e.stopPropagation();\n }}\n >\n <BrickAsComponent useBrick={suffixBrick.useBrick} data={node} />\n </span>\n </div>\n );\n }\n\n return showSpecificationTitleStyle && allOrDefaultFlag ? (\n <span className={styles.allOrDefault}>{title}</span>\n ) : (\n title\n );\n };\n\n const getTreeElement = (props: any): React.ReactNode =>\n isDirectory ? <DirectoryTree {...props} /> : <Tree {...props} />;\n\n return (\n <>\n {searchable && (\n <div style={{ display: \"flex\" }}>\n <Input.Search\n placeholder={placeholder}\n onChange={(e) => handleOnChange(e.target.value)}\n value={inputValue}\n style={{ marginBottom: 8 }}\n data-testid=\"search-input\"\n />\n {!isEmpty(afterSearchBrick?.useBrick) && (\n <BrickAsComponent\n useBrick={afterSearchBrick?.useBrick}\n ></BrickAsComponent>\n )}\n </div>\n )}\n {configProps.checkable && checkAllEnabled && (\n <div style={{ marginBottom: 6, display: \"flex\", alignItems: \"center\" }}>\n <Checkbox\n checked={allChecked}\n indeterminate={indeterminate}\n onChange={onCheckAllChange}\n data-testid=\"check-all-checkbox\"\n >\n {i18n.t(`${NS_PRESENTATIONAL_BRICKS}:${K.SELECT_ALL}`)}\n </Checkbox>\n {!props.hideSelectedNum && (\n <span style={{ marginLeft: \"auto\" }} className=\"checkedNum\">\n {i18n.t(`${NS_PRESENTATIONAL_BRICKS}:${K.SELECTED_OPTIONS}`, {\n number: props.checkedFilterConfig\n ? filterCheckedKeys?.length\n : (Array.isArray(checkedKeys) && checkedKeys?.length) || 0,\n })}\n </span>\n )}\n </div>\n )}\n <div\n className={classNames(styles.treeWrapper, {\n [styles.withSuffix]: !isEmpty(suffixBrick?.useBrick),\n [styles.titleSpace]: showSpecificationTitleStyle,\n [styles.hideBackground]: hideBackground,\n })}\n ref={treeContainerRef}\n >\n {treeData?.length ? (\n getTreeElement({\n ...configProps,\n ...(expandedKeys ? { expandedKeys: expandedKeys } : {}),\n treeData,\n titleRender,\n checkedKeys,\n checkStrictly: checkedNotRelevant,\n selectedKeys,\n defaultExpandAll,\n onSelect,\n onCheck,\n onExpand,\n })\n ) : (\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />\n )}\n </div>\n </>\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 { BrickTree, BrickTreeProps } from \"./BrickTree\";\nimport { TreeProps, AntTreeNodeProps, DataNode } from \"antd/lib/tree\";\nimport { checkedFilterProps } from \"../interfaces/brick-tree\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { EventDataNode } from \"rc-tree/lib/interface\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\n\nexport type TreeIcon =\n | MenuIcon\n | React.ComponentType<React.SVGAttributes<SVGElement>>;\n\nexport type BrickTreeNodeProps = Omit<AntTreeNodeProps, \"children\"> & {\n title?: string;\n icon?: TreeIcon;\n key?: React.Key;\n children?: BrickTreeNodeProps[];\n};\n\n/**\n * @id presentational-bricks.brick-tree\n * @name presentational-bricks.brick-tree\n * @docKind brick\n * @description 常用于展示应用业务树、模型树等,可以完整展现其中层级关系,并具有展开收起选择等交互功能\n * @author jo\n * @slots\n * @history\n * 1.145.0:新增事件 `tree.selectV2`\n * @memo\n * @noInheritDoc\n */\nexport class BrickTreeElement extends UpdatingElement {\n /**\n * @detail string[]\n * @description 选择事件\n */\n @event({ type: \"tree.select\", cancelable: true }) treeSelect: EventEmitter<\n string[]\n >;\n\n /**\n * @detail {selectedKeys: string[]; info: {event: string; selected: boolean; node: EventDataNode[]; nativeEvent: MouseEvent;}}\n * @description 选择事件,输出`selectedKeys`及`当前选中节点信息`\n */\n @event({ type: \"tree.selectV2\", cancelable: true })\n treeSelectV2: EventEmitter<{\n selectedKeys: string[];\n info: {\n event: \"select\";\n selected: boolean;\n node: EventDataNode;\n selectedNodes: DataNode[];\n nativeEvent: MouseEvent;\n };\n }>;\n\n /**\n * @detail string[]| {checked: string[]; halfChecked: string[]}\n * @description 勾选事件\n */\n @event({ type: \"tree.check\", cancelable: true }) treeCheck: EventEmitter<\n string[] | { checked: string[]; halfChecked: string[] }\n >;\n\n /**\n * @detail string[]| {checked: string[]; halfChecked: string[]}\n * @description 搜索事件\n */\n @event({ type: \"tree.search\", cancelable: true })\n treeSearch: EventEmitter<string>;\n\n /**\n * @detail React.Key[]\n * @description 展开事件\n */\n @event({ type: \"tree.expand\", cancelable: true }) treeExpand: EventEmitter<\n React.Key[]\n >;\n\n /**\n * @kind BrickTreeNodeProps[]\n * @required true\n * @default -\n * @description 树列表项,具体项见下表\n */\n @property({ attribute: false }) dataSource: BrickTreeNodeProps[];\n\n /**\n * @kind string[]\n * @required false\n * @default -\n * @description 选择项\n */\n @property({ attribute: false }) selectedKeys: string[];\n\n /**\n * @kind string[]\n * @required false\n * @default -\n * @description 选中项\n */\n @property({ attribute: false }) checkedKeys: string[];\n\n /**\n * @kind string[]\n * @required false\n * @default -\n * @description 展开项\n */\n @property({ attribute: false }) expandedKeys: string[];\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 搜索功能\n */\n @property({ type: Boolean }) searchable: boolean;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 搜索字符\n */\n @property({ type: String }) searchQ: string;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 搜索的功能是否需要过滤\n */\n @property({ type: Boolean }) isFilter: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否目录树\n */\n @property({ type: Boolean }) isDirectory: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 是否也根据key值搜索,启用后匹配项会整体高亮\n */\n @property({ attribute: false }) alsoSearchByKey: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否根据ui规范控制title中的样式,仅在树的title中含‘全部’和‘默认’时使用\n */\n @property({ type: Boolean }) showSpecificationTitleStyle: boolean;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 搜索框 placeholder\n */\n @property({ type: String }) placeholder: string;\n\n /**\n * @kind object\n * @required false\n * @default -\n * @description ant-design 的 tree 的相关配置项(除 selectedKeys、checkedKeys 和 expandedKeys),具体查阅:[https://ant.design/components/tree-cn/#Tree-props](https://ant.design/components/tree-cn/#Tree-props)\n * @group advanced\n */\n @property({ attribute: false }) configProps: TreeProps;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否搜索父节点\n * @group advanced\n */\n @property({ type: Boolean }) searchParent: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 全选功能,只有当 `configProps.checkable` 为 `true` 时生效\n * @group advanced\n */\n @property({ type: Boolean }) checkAllEnabled: boolean;\n\n /**\n * @kind checkedFilterProps\n * @required false\n * @default -\n * @description `tree.check`事件和全选计数中是否过滤掉某些节点,其中 `filed` 表示数据源中的字段路径, `value` 表示与其字段比较的值, `operator` 表示两者比较的方法。仅在设置 `configProps.checkable` 为 `true` 时生效\n */\n @property({\n attribute: false,\n })\n checkedFilterConfig: checkedFilterProps;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 父子节点选中状态是否不关联\n */\n @property({\n type: Boolean,\n })\n checkedNotRelevant: boolean;\n\n /**\n * @kind {useBrick:[UseBrickConf](http://docs.developers.easyops.cn/docs/api-reference/brick-types.usebrickconf)}\n * @required false\n * @default -\n * @description 树的最右边自定义项\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 advanced\n */\n @property({ type: Boolean }) suffixStopEvent: boolean;\n\n /**\n * @kind {useBrick:[UseBrickConf](http://docs.developers.easyops.cn/docs/api-reference/brick-types.usebrickconf)}\n * @required false\n * @default -\n * @description 搜索框右边的自定义项,当`searchable`为true时生效\n */\n @property({\n attribute: false,\n })\n afterSearchBrick: { useBrick: UseBrickConf };\n\n /**\n * @kind boolean\n * @required false\n * @default `false`\n * @description 默认展开所有树节点\n * @group advanced\n */\n @property({ type: Boolean }) defaultExpandAll: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default `true`\n * @description 是否可取消选择\n * @group advanced\n */\n @property({ attribute: false }) deselectable = true;\n\n /**\n * @kind {useBrick:UseBrickConf}\n * @default -\n * @description 自定义节点icon\n * @group basic\n */\n @property({ attribute: false })\n iconUseBrick?: BrickTreeProps[\"iconUseBrick\"];\n\n /**\n * @kind\n * @default -\n * @description 是否展示已选择数量\n * @group basic\n */\n @property({ attribute: false })\n hideSelectedNum?: boolean;\n\n /**\n * @kind\n * @default -\n * @description 隐藏背景颜色\n * @group basic\n */\n @property({ attribute: false })\n hideBackground?: boolean;\n\n connectedCallback(): void {\n this.style.display = \"flex\";\n this.style.flexDirection = \"column\";\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n private _handleSelect = (\n selectedKeys: string[],\n info: {\n event: \"select\";\n selected: boolean;\n node: EventDataNode;\n selectedNodes: DataNode[];\n nativeEvent: MouseEvent;\n }\n ) => {\n this.treeSelect.emit(selectedKeys);\n this.treeSelectV2.emit({ selectedKeys, info });\n };\n\n private _handleCheck = (\n checkedKeys: string[] | { checked: string[]; halfChecked: string[] }\n ) => {\n this.treeCheck.emit(checkedKeys);\n };\n\n private _handleSearch = (value: string) => {\n this.treeSearch.emit(value);\n };\n\n private _handleExpand = (expandedKeys: React.Key[]) => {\n this.treeExpand.emit(expandedKeys);\n };\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickTree\n dataSource={this.dataSource}\n selectedKeys={this.selectedKeys}\n checkedKeys={this.checkedKeys}\n expandedKeys={this.expandedKeys}\n configProps={this.configProps}\n searchable={this.searchable}\n searchQ={this.searchQ}\n placeholder={this.placeholder}\n searchParent={this.searchParent}\n checkAllEnabled={this.checkAllEnabled}\n onSelect={this._handleSelect}\n onExpand={this._handleExpand}\n onCheck={this._handleCheck}\n onSearch={this._handleSearch}\n checkedFilterConfig={this.checkedFilterConfig}\n checkedNotRelevant={this.checkedNotRelevant}\n suffixBrick={this.suffixBrick}\n suffixStopEvent={this.suffixStopEvent}\n afterSearchBrick={this.afterSearchBrick}\n showSpecificationTitleStyle={this.showSpecificationTitleStyle}\n defaultExpandAll={this.defaultExpandAll}\n deselectable={this.deselectable}\n alsoSearchByKey={this.alsoSearchByKey}\n isFilter={this.isFilter}\n iconUseBrick={this.iconUseBrick}\n isDirectory={this.isDirectory}\n hideSelectedNum={this.hideSelectedNum}\n hideBackground={this.hideBackground}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"presentational-bricks.brick-tree\", BrickTreeElement);\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 { List, Avatar } from \"antd\";\nimport { ListProps, ListItemProps, ListItemMetaProps } from \"antd/lib/List\";\nimport { ItemBrick } from \"./index\";\nimport classNames from \"classnames\";\nimport styles from \"./index.module.css\";\n\nexport interface MetaProps extends ListItemMetaProps {\n src: string;\n title: string;\n description: string;\n}\n\nexport interface ItemProps extends ListItemProps {\n meta: MetaProps;\n content: string;\n}\n\nexport interface BrickListProps {\n configProps?: ListProps<any>;\n itemList: ItemProps[];\n itemBrick?: ItemBrick;\n itemStyle?: any;\n isCardList?: boolean;\n}\n\nexport function BrickList(props: BrickListProps): React.ReactElement {\n const { configProps, itemList = [], isCardList } = props;\n\n return (\n <List\n split={!isCardList}\n {...configProps}\n dataSource={itemList}\n className={classNames({\n [styles.cardList]: isCardList\n })}\n renderItem={item => {\n const { meta, content, ...originItemProps } = item;\n return (\n <>\n {props.itemBrick ? (\n <List.Item style={props.itemStyle}>\n <props.itemBrick.brick\n ref={(el: any) => {\n el &&\n Object.assign(el, {\n dataSource: item,\n ...props.itemBrick.properties\n });\n }}\n />\n </List.Item>\n ) : (\n <List.Item {...originItemProps} style={props.itemStyle}>\n {meta && (\n <List.Item.Meta\n {...(item.meta.src && {\n avatar: <Avatar src={item.meta.src} />\n })}\n title={item.meta.title}\n description={item.meta.description}\n />\n )}\n <div>{content}</div>\n </List.Item>\n )}\n </>\n );\n }}\n />\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper } from \"@next-core/brick-kit\";\nimport { BrickList, ItemProps } from \"./BrickList\";\nimport { ListProps } from \"antd/lib/list\";\nimport { get, forEach, set } from \"lodash\";\nimport { Card } from \"antd\";\n\nexport interface ItemBrick {\n brick: string | any;\n properties?: Record<string, any>;\n}\n\nclass BrickListElement extends HTMLElement {\n private _showCard = true;\n private _itemList: ItemProps[];\n private _configProps: ListProps<any>;\n private _fields: {\n list?: string;\n content?: string;\n title?: string;\n description?: string;\n header?: string;\n footer?: string;\n };\n private _itemBrick: ItemBrick;\n private _itemStyle: any;\n private _isCardList = false;\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 getBrickListNode() {\n return (\n <BrickList\n configProps={this._configProps}\n itemList={this._itemList}\n itemBrick={this._itemBrick}\n itemStyle={this._itemStyle}\n isCardList={this._isCardList}\n />\n );\n }\n\n private _render(): void {\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n {this._showCard ? (\n <Card bordered={false}>{this.getBrickListNode()}</Card>\n ) : (\n this.getBrickListNode()\n )}\n </BrickWrapper>,\n this\n );\n }\n }\n\n set showCard(value: boolean) {\n this._showCard = value;\n this._render();\n }\n\n set itemList(value: ItemProps[]) {\n this._itemList = value;\n this._render();\n }\n\n set configProps(value: ListProps<any>) {\n this._configProps = value;\n this._render();\n }\n\n set fields(value: any) {\n this._fields = value;\n this._render();\n }\n\n set dataSource(value: any) {\n if (this._fields) {\n const { list, ...restField } = this._fields;\n const data = list ? get(value, list) : value;\n if (this._itemBrick) {\n this._itemList = data;\n } else {\n this._itemList = data.map((item) => {\n const resultItem: any = {};\n forEach(restField, (v, k) => {\n if ([\"title\", \"description\"].includes(k)) {\n set(resultItem, [\"meta\", k], get(item, v));\n } else {\n resultItem[k] = get(item, v);\n }\n });\n return resultItem;\n });\n }\n } else {\n this._itemList = value;\n }\n this._render();\n }\n\n set itemBrick(value: ItemBrick) {\n this._itemBrick = value;\n this._render();\n }\n\n set itemStyle(value: any) {\n this._itemStyle = value;\n this._render();\n }\n\n set isCardList(value: boolean) {\n this._isCardList = value;\n this._render();\n }\n}\n\ncustomElements.define(\"presentational-bricks.brick-list\", BrickListElement);\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 ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n property,\n UpdatingElement,\n event,\n EventEmitter,\n method,\n} from \"@next-core/brick-kit\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nimport i18n from \"i18next\";\nimport paginationStyle from \"../general-pagination/index.module.css\";\nimport { BrickTable } from \"./BrickTable\";\nimport {\n get,\n map,\n set,\n isEmpty,\n merge,\n isNil,\n forEach,\n cloneDeep,\n isArray,\n uniq,\n pullAll,\n every,\n find,\n pull,\n filter,\n flatten,\n keyBy,\n flatMapDeep,\n} from \"lodash\";\nimport { TablePaginationConfig, TableProps } from \"antd/lib/table\";\nimport {\n TableRowSelection,\n SorterResult,\n RowSelectionType,\n ExpandableConfig,\n} from \"antd/lib/table/interface\";\nimport {\n compareFunMap,\n getKeysOfData,\n getRowsOfData,\n stripEmptyExpandableChildrenByName,\n} from \"./brickTableHelper\";\nimport { getHistory } from \"@next-core/brick-kit\";\nimport { BrickEventsMap, UseBrickConf } from \"@next-core/brick-types\";\nimport { SortOrder } from \"antd/lib/table/interface\";\nimport { ColumnProps } from \"antd/lib/table\";\nimport { DataIndex } from \"rc-table/lib/interface\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { BrickWrapperConfig } from \"../interfaces\";\nimport { SizeType } from \"antd/lib/config-provider/SizeContext\";\nexport interface RowDisabledProps {\n field: string;\n value: any;\n operator:\n | \"$eq\"\n | \"$ne\"\n | \"$lt\"\n | \"$lte\"\n | \"$gt\"\n | \"$gte\"\n | \"$isEqual\"\n | \"$notEqual\"\n | \"$in\"\n | \"$nin\"\n | \"$exists\";\n}\n\nexport interface CustomColumnComponent {\n /** 构件名称 */\n brick: string | any;\n /** 字段值、列表项和 index 对应所用构件的属性的 key */\n fields?: {\n value?: string;\n item?: string;\n index?: string;\n };\n /** 构件属性 */\n properties?: Record<string, any>;\n /** 事件 */\n events?: BrickEventsMap;\n}\n\nexport interface CustomColumn extends ColumnProps<Record<string, any>> {\n /**\n * 支持为某列自定义展示构件\n */\n useBrick?: UseBrickConf;\n /**\n * 字段的值展示时的后缀\n */\n valueSuffix?: string;\n /**\n * 支持为某列的表头自定义展示构件,可通过 DATA.title 获取标题文本\n */\n headerBrick?: {\n useBrick: UseBrickConf;\n };\n /**\n * 在渲染自定义构件的场景下额外设置单元格的状态样式, `dataIndex` 表示取哪一列的字段值作为判断数据,不填的话默认取当前列的字段,`mapping` 表示判断的条件,条件被成功匹配时用当前的样式。目前仅支持单元格 `leftBorderColor` 属性的设置\n */\n cellStatus?: CellStatusProps;\n /**\n * 设置列的每个单元格样式\n */\n cellStyle?: React.CSSProperties;\n /**\n * [已废弃]支持为某列的标题自定义展示构件,可通过 DATA.title 获取标题文本\n */\n titleUseBrick?: UseBrickConf;\n /**\n * [已废弃]支持为某列自定义展示构件\n */\n component?: CustomColumnComponent;\n /**\n * 单元格内元素的垂直对齐方式\n */\n verticalAlign?: \"top\" | \"bottom\";\n /**\n * 每条记录的控制列合并的值的 key\n */\n colSpanKey?: string;\n /**\n * 每条记录的控制行合并的值的 key\n */\n rowSpanKey?: string;\n /**\n * 自定义筛选菜单\n */\n filterDropdownBrick?: {\n useBrick: UseBrickConf;\n };\n /**\n * 自定义筛选图标\n */\n customFilterIcon?: MenuIcon;\n}\n\nexport interface CellStatusProps {\n dataIndex?: string;\n mapping: Array<{\n leftBorderColor: string;\n value: any;\n }>;\n}\n\n/**\n * @id presentational-bricks.brick-table\n * @name presentational-bricks.brick-table\n * @docKind brick\n * @description 当需要对数据进行排序、搜索、分页、自定义操作等复杂行为时\n * @groupI18N\n * {\n * \"paginationAndFilter\": {\"en\": \"Pagination/Order/Filter\", \"zh\": \"分页/排序及搜索\"},\n * \"expand\": {\"en\": \"Expand/Collapse\", \"zh\": \"展开/折叠\"},\n * \"rowSelection\": {\"en\": \"RowSelection\", \"zh\": \"行选择配置(rowSelection)\"}\n * }\n * @author lynette\n * @slots\n * @history\n * 1.257.2:新增 `select.row.keys.update` 事件\n * 1.230.0:新增属性 `exactSearch` 在开启前端搜索的情况下可以配置精确搜索\n * 1.168.0:新增属性 `optimizedColumns`\n * 1.153.0:`columns` 属性新增 `headerBrick`、废弃 `titleUseBrick`\n * 1.145.0:新增`stripEmptyExpandableChildren`属性\n * 1.143.0:新增属性 `selectedRowKeys`\n * 1.111.0:新增属性 `sortable`\n * 1.105.0:新增属性 `zebraPattern` ,`columns` 属性新增 `titleUseBrick`\n * 1.102.0:新增属性`hiddenColumns`\n * 1.94.0:新增属性`tableDraggable`,预废弃属性 `draggable`\n * 1.92.0:新增属性 `filters`\n * 1.72.0:新增属性 `draggable`,新增事件`row.drag`\n * 1.70.0:新增 `qField` 属性\n * 1.68.0:新增属性 `childrenColumnName`、`selectAllChildren`\n * 1.67.0:新增 `rowKey` 属性\n * 1.63.0:新增行展开功能,新增属性`expandedRowBrick`,`expandedRowBrick`,`expandIconAsCell`,`expandIconColumnIndex`,`expandRowByClick`,`defaultExpandAllRows`,`expandedRowKeys`,新增事件`row.expand`,`expand.rows.change`\n * 1.60.0:新增 `cellStatus` 属性\n * 1.59.0:新增 `rowDisabledConfig` 属性\n * 1.57.1:新增 `shouldUpdateUrlParams` 属性和 `sort.update` 事件\n * @memo\n * > Tips: 在 react 中,boolean 类型的值是合法的子元素,但是不会被渲染出来。如果希望 boolean 值在表格单元格中展示成 `true`|`false`,可以使用平台管道进行转换,例如`@{someProperties|string}`。更多场景下可以结合 [基本数值映射构件](developers/brick-book/brick/presentational-bricks.brick-value-mapping) 把 boolean 类型的值转换成有意义的文本进行展示。\n\n * `<presentational-bricks.brick-table>` 为某列自定义展示构件传递的数据源为:\n *\n * | field | type | description |\n * | ----------- | ------ | ----------- |\n * | cellData | any | 单元格数据 |\n * | rowData | any | 整行数据 |\n * | columnIndex | number | 列序号 |\n *\n * `<presentational-bricks.brick-table>` 为自定义行展开的构件传递的数据源为:\n *\n * | field | type | description |\n * | -------- | ------ | ----------- |\n * | rowData | any | 整行数据 |\n * | rowIndex | number | 行序号 |\n *\n * ### pagination 默认配置\n *\n * 如果不希望分页,如下设置即可:\n *\n * ```\n * {\n * \"pagination\": false\n * }\n * ```\n *\n * 如果希望覆盖默认配置,覆盖对应项即可,相关配置项具体查阅:[pagination](https://ant.design/components/pagination-cn/#API)\n *\n * ```\n * {\n * \"pagination\": {\n * \"pageSizeOptions\": [\"10\",\"100\",\"1000\"]\n * }\n * }\n * ```\n *\n * | property | type | required | default | description |\n * | --------------- | -------- | -------- | ------------------ | ------------------------------------- |\n * | current | string | - | - | 页码,从 page properties 获取 |\n * | pageSize | string | - | - | 每页条数,从 pageSize properties 获取 |\n * | total | object | - | - | 总数,从 dataSource.total 获取 |\n * | showSizeChanger | boolean | - | true | 展示页码变化器 |\n * | pageSizeOptions | array | - | [\"10\", \"20\", \"50\"] | 每页条数选项 |\n * | showTotal | function | - | - | 渲染成\"共 xx 条\" |\n *\n *\n * ### rowSelection 默认配置\n *\n * 行选择默认为 false,不配置就不显示。如果要开启如下设置即可,这时 brick-table 会默认配置 onChange 事件:\n *\n * ```\n * {\n * \"rowSelection\": true\n * }\n * ```\n *\n * 如果希望覆盖或者扩展默认配置,覆盖对应项即可,相关配置项具体查阅:[rowSelection](https://ant.design/components/table-cn/#rowSelection)\n *\n * ```\n * {\n * \"rowSelection\": {\n * \"columnWidth\": \"88px\"\n * }\n * }\n * ```\n *\n * | property | type | required | default | description |\n * | -------- | -------- | -------- | ------- | --------------------------------- |\n * | onChange | function | - | - | 选择行,会抛出事件\"select.update\" |\n *\n * ### 排序\n *\n * 如果某一列希望排序,则可以设对应列 `sorter:true`,例如:\n *\n * ```\n * {\n * \"columns\": [\n * {\n * \"title\": \"主机\",\n * \"key\": \"hostname\",\n * \"dataIndex\": \"hostname\",\n * \"sorter\": true\n * }\n * ]\n * }\n * ```\n *\n * ## flattenTreeDataListAndCalcRowSpan 自定义加工函数\n *\n * 将树形数据列表按照 `options.flattenConfigs` 进行展平,并生成相应的行合并数据\n *\n * ### Params\n *\n * | param | type | required | default | description |\n * | ------------ | ------------------------------------------ | -------- | ------- | ------------------------------------------------------------------------ |\n * | treeDataList | Record<string, unknown>[] | ✔️ | - | 树形数据列表 |\n * | options | FlattenTreeDataListAndCalcRowSpanOptions | ✔️ | - | 函数选项 |\n * | depth | number | - | 0 | 当前展平的深度,用于确定 `options.flattenConfigs` 中的当前层级的展平配置 |\n *\n * ### Returns\n *\n * | type | description |\n * | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |\n * | Record<string, unknown>[] | 展平后的列表,除了按照 `options.flattenConfigs` 进行展平外,还会生成相应层级以 `options.flattenConfigs[].parentInChildKey + \"RowSpan\"` 为 key 的行合并数据 |\n *\n * ### FlattenTreeDataListAndCalcRowSpanOptions\n *\n * | property | type | required | default | description |\n * | -------------------- | ----------------- | -------- | ------- | ---------------------------------------- |\n * | flattenConfigs | FlattenConfig[] | ✔️ | - | 展平配置列表,按照由父到子的顺序一一对应 |\n * | omitChildrenInParent | boolean | - | - | 展平后,是否省略父级里的子列表 |\n *\n * ### FlattenConfig\n *\n * | property | type | required | default | description |\n * | ---------------- | -------- | -------- | ------- | ------------------------ |\n * | childrenKey | string | ✔️ | - | 对应层级子列表的 key |\n * | parentInChildKey | string | ✔️ | - | 展平后,父级在子级的 key |\n *\n *\n * @noInheritDoc\n */\nexport class BrickTableElement extends UpdatingElement {\n /**\n * @detail {[pagePath]: xxx}\n * @description 页码变化,pagePath 可在 fields.page 中设置,默认为 page\n */\n @event({ type: \"page.update\" }) pageUpdate: EventEmitter<\n Record<string, number>\n >;\n\n /**\n * @detail {[pagePath]:1,[pageSizePath]:xxx}\n * @description 每页条数变化 ,pagePath 可在 fields.page 中设置,pageSizePath 可在 fields.pageSize 中设置,默认为 pageSize\n */\n @event({ type: \"filter.update\" }) filterUpdate: EventEmitter<\n Record<string, number>\n >;\n\n /**\n * @detail Record<string,any>[]\n * @description【谨慎使用】 勾选框变化,detail 中为所选的行数据,这个事件在后台分页的情况下,可能返回undefined\n */\n @event({ type: \"select.update\" }) selectUpdate: EventEmitter<\n Record<string, any>[]\n >;\n\n /**\n * @detail Record<string,any>[]\n * @description 勾选框变化,detail 中为所选的行key集合\n */\n @event({ type: \"select.row.keys.update\" }) selectRowKeysUpdate: EventEmitter<\n string[]\n >;\n\n /**\n * @detail {sort:string;order:string|number}\n * @description 排序变化,detail 中的 sort 为对应排序列的 key/dataIndex,order 为升序/降序\n */\n @event({ type: \"sort.update\", cancelable: true }) sortUpdate: EventEmitter<{\n sort: string;\n order: string | number;\n }>;\n\n /**\n * @detail {expanded:boolean;record:Record<string,any>}\n * @description 点击展开图标时触发的事件,事件详情中`expanded`为是否展开,`record`被点击的行信息\n */\n @event({ type: \"row.expand\" }) rowExpand: EventEmitter<{\n expanded: boolean;\n record: Record<string, any>;\n }>;\n\n /**\n * @detail {expandedRows:string[]| number[]}\n * @description 展开的行变化时触发的事件,事件详情为当前展开的所有行的`rowKey`集合\n */\n @event({ type: \"expand.rows.change\" }) expandRowsChange: EventEmitter<{\n expandedRows: React.Key[];\n }>;\n\n /**\n * @detail {data:Record<string,any>[]}\n * @description 表格行拖拽结束发生的事件,事件详情为拖拽后重新排序的所有行数据\n */\n @event({ type: \"row.drag\" }) rowDrag: EventEmitter<{\n data: Record<string, any>[];\n }>;\n\n /**\n * @description 表头过滤变化的事件\n */\n @event({ type: \"column.filters.update\" }) columnFiltersUpdate: EventEmitter<\n Record<string, string[]>\n >;\n\n /**\n * @kind CustomColumn[]\n * @required false\n * @default -\n * @description 扩展自 ant-design 的 Column 相关配置项,具体查阅:[Column](https://ant.design/components/table-cn/#Column)\n * @group basic\n */\n @property({\n __unstable_doNotDecorate: true,\n })\n set columns(value: CustomColumn[]) {\n this._columns = value;\n this._render();\n }\n get columns(): CustomColumn[] {\n return this._columns;\n }\n\n /**\n * @kind any[]\n * @required false\n * @default -\n * @description 数据源,通过 useResolves 从后台接口获取或者直接在 storyboard 中配置\n * @group basic\n */\n @property({\n __unstable_doNotDecorate: true,\n })\n set dataSource(value: Record<string, any>[]) {\n this._isInSelect = false;\n this._originalDataSource = value;\n this._dataSource = cloneDeep(\n this._fields.dataSource ? get(value, this._fields.dataSource) : value\n );\n // 前端搜索需要保留一个干净的数据\n this._pureSource = cloneDeep(this._dataSource);\n if (this.stripEmptyExpandableChildren) {\n const columnName =\n this.configProps?.expandable?.childrenColumnName || \"children\";\n stripEmptyExpandableChildrenByName(columnName, this._dataSource);\n }\n this._total = get(value, this._fields.total);\n this.page = get(value, \"page\") ?? this.page ?? 1;\n this.pageSize =\n get(value, \"page_size\") ?? get(value, \"pageSize\") ?? this.pageSize ?? 10;\n this._render();\n }\n\n /**\n * @required false\n * @default true\n * @description 是否显示外层卡片\n * @group basic\n */\n @property({\n attribute: false,\n })\n showCard = true;\n\n /**\n * @required false\n * @default -\n * @description 表格行是否可选择,具体查阅:[rowSelection](https://ant.design/components/table-cn/#rowSelection)\n * @group basic\n */\n @property({\n attribute: false,\n })\n rowSelection: false | TableRowSelection<any>;\n\n /**\n * @required false\n * @default \"key\"\n * @description 指定每一行的 key,不指定则默认为索引 index。强烈建议设置该属性,否则在某些情况下可能行为不如预期。\n * @group basic\n */\n @property()\n rowKey: string;\n\n /**\n * @required false\n * @default -\n * @description 隐藏相应列(输入对应的 dataIndex 或者 key 即可)\n * @group basic\n */\n @property({\n attribute: false,\n })\n hiddenColumns: Array<string | number>;\n\n /**\n * @required false\n * @default false\n * @description 是否显示已选择信息和清除按钮。仅在设置了`rowSelection`时有效。默认不显示\n * @group rowSelection\n */\n @property({\n attribute: false,\n })\n showSelectInfo = false;\n\n // 表头过滤的 filters\n /**\n * @required false\n * @default -\n * @description 表头过滤的过滤项,key 为 column 的 dataIndex,value 为过滤值集合。\n * @group paginationAndFilter\n */\n @property({\n attribute: false,\n })\n filters: Record<string, string[]>;\n\n /**\n * @required false\n * @default -\n * @description ant-design 的 Table 相关配置项,具体查阅:[Table](https://ant.design/components/table-cn/#Table),其中分页配置和行选择配值在构件中设置了常用的默认配置,也可自行覆盖,具体描述见下表\n * @group other\n */\n @property({\n attribute: false,\n })\n configProps: any;\n\n /**\n * @required false\n * @default -\n * @description 被排序列的 dataIndex。通常来自于 url 参数,可以设置成 ${QUERY.sort}。\n * @group paginationAndFilter\n */\n @property()\n sort: string;\n\n /**\n * @required false\n * @default -\n * @description 升序/降序,可以设置成 ${QUERY.order}。\n * @group paginationAndFilter\n */\n @property({\n attribute: false,\n })\n order: string | number;\n\n /**\n * @required false\n * @default -\n * @description 配置每一行是否禁用,其中 `field` 表示数据源中的字段路径, `value` 表示与其字段比较的值, `operator` 表示两者比较的方法,结果为 `true` 时会禁用当前行, 需要注意的是该配置需要在 `rowSelection: true` 的前提下使用,并且设置 `rowKey` 属性赋予每行唯一的 key,防止顺序变化时造成的错误勾选(如上 demo 所示)\n * @group rowSelection\n */\n @property({\n attribute: false,\n })\n rowDisabledConfig: RowDisabledProps | RowDisabledProps[];\n\n // start -- 行展开相关属性\n /**\n * @kind ExpandableConfig<Record<string, unknown>> | false\n * @required false\n * @default -\n * @description 展开配置,详见 [expandable](https://4x.ant.design/components/table-cn/#expandable),为 false 时禁用展开\n * @group expand\n */\n @property({\n attribute: false,\n })\n expandable?: ExpandableConfig<Record<string, unknown>> | false;\n\n /**\n * @kind {useBrick:UseBrickConf}\n * @required false\n * @default -\n * @description 自定义行展开的构件 [UseBrickConf](/next-docs/docs/api-reference/brick-types.usesinglebrickconf)\n * @group expand\n */\n @property({\n attribute: false,\n })\n expandedRowBrick: {\n useBrick?: UseBrickConf;\n };\n\n /**\n * @kind {useBrick:UseBrickConf}\n * @required false\n * @default -\n * @description 自定义空状态的构件\n * @group expand\n */\n @property({\n attribute: false,\n })\n emptyUseBrick: {\n useBrick?: UseBrickConf;\n };\n\n /**\n * @kind { collapsedIcon: MenuIcon,expandedIcon: MenuIcon}\n * @required false\n * @default {collapsedIcon:{lib:'antd',icon:'down',theme:'outlined'},expandedIcon:{lib:'antd',icon:'right',theme:'outlined'}}\n * @description 自定义展开图标。\n * @group expand\n */\n @property({\n attribute: false,\n })\n expandIcon: {\n collapsedIcon: MenuIcon;\n expandedIcon: MenuIcon;\n };\n\n /**\n * @required false\n * @default true\n * @description 展开的图标是否为一个单元格,默认显示在第一列;设置为 false 的时候,可以通过`expandIconColumnIndex`属性设置展开的图标在哪一列\n * @group expand\n */\n @property({\n attribute: false,\n })\n expandIconAsCell = true;\n\n /**\n * @required false\n * @default -\n * @description 展开的图标显示在哪一列,如果没有 rowSelection,默认显示在第一列,否则显示在选择框后面。当`expandIconAsCell`为 false 时,该属性生效。\n * @group expand\n */\n @property({\n type: Number,\n })\n expandIconColumnIndex: number;\n\n /**\n * @required false\n * @default false\n * @description 通过点击行来展开子行\n * @group expand\n */\n @property({\n type: Boolean,\n })\n expandRowByClick: boolean;\n\n /**\n * @required false\n * @default -\n * @description 优化渲染的列(输入对应的 dataIndex),针对配置了 useBrick 的列。当前 antd 在更新 state 的时候,会全量渲染单元格,如果确定某一列在后续操作中不需要重新渲染,例如仅作为展示的单元格,可通过该属性设置以优化性能。注意,在树形表格中,当某一列内包含展开/收起按钮,则不应该设置该列。\n * @group advanced\n */\n @property({\n attribute: false,\n })\n optimizedColumns: Array<string | number>;\n\n /**\n * @default -\n * @required false\n * @description 设置容器空状态时显示`empty`构件属性\n * @group ui\n */\n @property({ attribute: false })\n wrapperConfig: BrickWrapperConfig = {};\n\n /**\n * @required false\n * @default false\n * @description 树形数据展示时是否需要去除空数组\n * @group expand\n */\n @property({\n attribute: false,\n })\n stripEmptyExpandableChildren = false;\n\n /**\n * @required false\n * @default false\n * @description 初始时,是否展开所有行\n * @group expand\n */\n @property({\n type: Boolean,\n })\n defaultExpandAllRows: boolean;\n\n /**\n * @required false\n * @default -\n * @description 展开的行的 rowKey\n * @group expand\n */\n @property({\n attribute: false,\n })\n expandedRowKeys: string[];\n\n // end -- 行展开相关属性\n\n /**\n * @required false\n * @default false\n * @description 表格树形数据展示的时候,行选择父节点的时候是否同步勾选/取消勾选所有子节点,并且被同步勾选的子节点不能单独取消。注意,该属性必须设置 `rowKey` 属性。\n * @group expand\n */\n @property({\n type: Boolean,\n })\n selectAllChildren: boolean;\n\n /**\n * @required false\n * @default false\n * @description 是否默认选择所有行。注意,该属性必须设置 `rowKey` 属性。\n * @group expand\n */\n @property({\n type: Boolean,\n })\n defaultSelectAll: boolean;\n\n /**\n * @required false\n * @default false\n * @description 是否显示省略信息\n * @group basic\n */\n @property({ type: Boolean })\n ellipsisInfo: boolean;\n\n private _disabledChildrenKeys: React.Key[] = [];\n\n /**\n * @required false\n * @default children\n * @description 指定树形结构的列名\n * @group expand\n */\n @property({\n attribute: false,\n })\n childrenColumnName = \"children\";\n\n /**\n * @required false\n * @default true\n * @description 是否支持排序。默认开启,当对应列的sorter设置成true时则可排序。sortable为false时则排序都不生效。\n * @group paginationAndFilter\n */\n @property({\n attribute: false,\n })\n sortable = true;\n\n /**\n * @kind object\n * @required false\n * @default -\n * @description 设置相关字段取自哪里,具体描述见下表\n * @group advanced\n */\n @property({\n __unstable_doNotDecorate: true,\n })\n set fields(value: any) {\n this._fields = { ...this._fields, ...value };\n this._render();\n }\n\n /**\n * @required false\n * @default false\n * @description 是否前端进行搜索,配合`presentational-bricks.brick-input`使用\n * @group paginationAndFilter\n */\n @property({\n type: Boolean,\n })\n frontSearch: boolean;\n\n /**\n * @required false\n * @default -\n * @description 前端搜索参数\n * @group paginationAndFilter\n */\n @property({\n attribute: false,\n })\n frontSearchQuery = \"\";\n\n /**\n * @required false\n * @default false\n * @description 是否精确搜索\n * @group paginationAndFilter\n */\n @property({\n type: Boolean,\n })\n exactSearch: boolean;\n\n /**\n * @required false\n * @default -\n * @description 进行前端搜索的字段,支持嵌套的写法如[\"name\",\"value.a\"],不配置的时候默认为对所有 columns 的 dataIndex[]进行前端搜索\n * @group paginationAndFilter\n */\n @property({\n attribute: false,\n })\n frontSearchFilterKeys: string[];\n\n /**\n * @required false\n * @default -\n * @description 页码。后台搜索的时候一般不需要配置,列表接口返回格式通常为{list:[],page:1,pageSize:10,total:20},即默认取自 page;前台搜索的时候,一般配置成 \"${query.page=1|number}\"\n * @group paginationAndFilter\n */\n @property({\n attribute: false,\n })\n page: number;\n\n /**\n * @required false\n * @default -\n * @description 页码条数。后台搜索的时候一般不需要配置,列表接口返回格式通常为{list:[],page:1,pageSize:10,total:20},即默认取自 pageSize/page_size;前台搜索的时候,一般配置成 \"${query.pageSize=10|number}\"\n * @group paginationAndFilter\n */\n @property({\n attribute: false,\n })\n pageSize: number;\n\n /**\n * @kind {\n * x?: string | number | true;\n * y?: number | string;\n * } & {\n * scrollToFirstRowOnChange?: boolean;\n * }\n * @required false\n * @default { x: true }\n * @description 表格是否可滚动,也可以指定滚动区域的宽、高,配置项。详见 [scroll](https://ant.design/components/table-cn/#scroll)\n * @group other\n */\n @property({\n attribute: false,\n })\n scrollConfigs: TableProps<unknown>[\"scroll\"] = { x: true };\n\n /**\n * @required false\n * @default \"q\"\n * @description 把过滤条件更新到 url 时的字段名\n * @group paginationAndFilter\n */\n @property({ attribute: false })\n qField = \"q\";\n\n /**\n * @required false\n * @default false\n * @description 表格行是否可拖拽,注意,如果是树形数据的表格,则各行需要设置__acceptType,并保证同层级的__acceptType值相同\n * [ { id: \"parent1\", __acceptType: \"level-1\", children: [ { id: \"sub1\", __acceptType: \"parent1-sub\" }, { id: \"sub2\", __acceptType: \"parent1-sub\" } ] }, { id: \"parent2\", __acceptType: \"level-1\", children: [ { id: \"sub3\", __acceptType: \"parent2-sub\" } ] } ]\n * @group basic\n */\n @property({\n type: Boolean,\n })\n tableDraggable: boolean;\n\n /**\n * @required false\n * @default \"DraggableBodyRow\"\n * @description 指定元素的类型,只有类型相同的元素才能进行drop操作\n * @group basic\n */\n @property({\n attribute: false,\n })\n acceptType: string;\n\n /**\n * @required false\n * @default false\n * @description 是否展示斑马纹\n * @group ui\n */\n @property({\n type: Boolean,\n })\n zebraPattern: boolean;\n\n /**\n * @required false\n * @default false\n * @description 翻页时是否记住之前选中的项。注意,选中项的rowKey将保存在url中,如果不设置rowKey,该设置不生效。如果选择太多可能会造成url过长,请谨慎使用\n * @group other\n */\n @property({ type: Boolean })\n storeCheckedByUrl: boolean;\n\n /**\n * @required false\n * @default -\n * @description 额外的行,通常为跨页勾选时,不在当前页的行\n * @group other\n */\n @property({ attribute: false })\n extraRows: Record<string, unknown>[] = [];\n\n /**\n * @required false\n * @default false\n * @description [已废弃]请用 tableDraggable 代替\n * @group other\n */\n @property({\n __deprecated_and_for_compatibility_only: true,\n })\n draggable: boolean;\n\n /**\n * @required false\n * @default false\n * @description 当所有子节点选中时,自动选中父节点\n * @group expand\n */\n @property({ type: Boolean })\n autoSelectParentWhenAllChildrenSelected: boolean;\n\n /**\n * @required -\n * @default -\n * @description 表格表头是否透明\n * @group ui\n */\n @property({ attribute: false })\n thTransparent: boolean;\n\n /**\n * @required false\n * @default true\n * @description 是否显示表头\n * @group ui\n */\n @property({\n attribute: false,\n })\n showHeader = true;\n\n /**\n * @required false\n * @default -\n * @description 是否显示分页\n * @group paginationAndFilter\n */\n @property({\n attribute: false,\n })\n pagination: false | TablePaginationConfig;\n\n /**\n * @required false\n * @default -\n * @description 表格大小(antd原生size)\n * @group ui\n */\n @property({\n attribute: false,\n })\n size: SizeType | \"x-small\";\n\n /**\n * @required false\n * @default -\n * @description 选框类型(单选/多选)\n * @group rowSelection\n */\n @property({\n attribute: false,\n })\n type: RowSelectionType;\n\n /**\n * @required false\n * @default true\n * @description 是否更新 url 参数。设置为否之后,如果是后台进行分页/排序等功能,则需要结合事件进行编排。如果是前台进行分页/排序,则不需要。\n * @group other\n */\n @property({\n attribute: false,\n })\n shouldUpdateUrlParams = true;\n\n /**\n * @required false\n * @default true\n * @description 更新 url 参数时是否触发页面重新渲染。仅在`shouldUpdateUrlParams`为true时有效。\n * @group other\n */\n @property({\n attribute: false,\n })\n shouldRenderWhenUrlParamsUpdate = true;\n\n // 对外获取内部 _dataSource 的值\n // istanbul ignore next\n get processedDataSource() {\n return this._dataSource;\n }\n\n // 对外获取内部 _finalConfigProps 的值\n // istanbul ignore next\n get processConfigProps() {\n return this._finalConfigProps;\n }\n\n // 对外获取内部 _columns 的值\n // istanbul ignore next\n get processedColumns() {\n return this.getModifyColumns();\n }\n\n private _originalDataSource: Record<string, any>[];\n private _dataSource: Record<string, any>[];\n private _pureSource: Record<string, any>[];\n private _columns: CustomColumn[];\n private _finalConfigProps: any = {}; //处理过的配置,主要处理分页和rowSelect\n private _error: any;\n\n private _total: number;\n\n private _selectUpdateEventName = \"\";\n private _selectUpdateEventDetailKeys: string[] = [];\n private _selectUpdateEventDetailField = \"\";\n private _selectUpdateEventDetailExtra: any = {};\n\n private _fields: {\n dataSource?: string; // 指定 dataSource 从哪里来,默认为列表接口返回格式是{list:[],page:1,pageSize:10,total:20},即默认取自 list\n total?: string; // 指定 total 从哪里来,默认为列表接口返回格式是{list:[],page:1,pageSize:10,total:20},即默认取自 total\n rowKey?: string; // 指定每一行的 key,不指定则默认为 index\n page?: string; // 指定请求后台 page 参数 path\n pageSize?: string; // 指定请求后台 pageSize 参数 path\n ascend?: string | number; // 指定 ascend 排序对应字段,例如有些后台对应为 1 ,有些对应为 \"asc\"。这里默认为 \"ascend\"。\n descend?: string | number; // 指定 descend 排序对应字段,例如有些后台对应为 0 ,有些对应为 \"desc\"。这里默认为 \"descend\"。\n } = {\n page: \"page\",\n pageSize: \"pageSize\",\n dataSource: \"list\",\n total: \"total\",\n ascend: \"ascend\",\n descend: \"descend\",\n };\n\n /**\n * @default []\n * @required false\n * @description 指定选中项的 key 数组\n * @group rowSelection\n */\n @property({\n attribute: false,\n })\n selectedRowKeys: React.Key[] = [];\n\n /**\n * @required false\n * @default false\n * @description 是否显示展开全部\n * @group other\n */\n @property({\n type: Boolean,\n })\n showHeaderExpandAll: boolean;\n\n private _selected = false;\n private _selectedRow: Record<string, unknown>;\n private _selectedRows: Record<string, any>[] = [];\n private _allChildren: Record<string, any>[] = [];\n private _isInSelect = false;\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 * @description 搜索过滤\n */\n @method()\n filterSourceData(event: CustomEvent): void {\n const q = this.exactSearch\n ? event.detail.q.trim()\n : event.detail.q.trim().toLowerCase();\n if (this.shouldUpdateUrlParams) {\n const history = getHistory();\n const urlSearchParams = new URLSearchParams(history.location.search);\n urlSearchParams.set(\"page\", \"1\");\n if (q) {\n urlSearchParams.set(this.qField, q);\n history.push(`?${urlSearchParams}`, { notify: !this.frontSearch });\n } else {\n urlSearchParams.delete(this.qField);\n history.push(`?${urlSearchParams}`, { notify: !this.frontSearch });\n }\n this.page = 1;\n }\n this.frontSearchQuery = q;\n }\n\n handleFrontendDataChange(\n data: Record<string, any>[] = [],\n columns: CustomColumn[] = []\n ): Record<string, any>[] {\n if (this.shouldUpdateUrlParams) {\n const history = getHistory();\n const urlSearchParams = new URLSearchParams(history.location.search);\n this.frontSearchQuery = urlSearchParams.get(this.qField);\n }\n let tempDataSource: Record<string, any>[] = [];\n tempDataSource = this.handleFrontendFilterSource(\n data,\n this.frontSearchQuery || \"\",\n columns\n );\n const order = isNil(this.order)\n ? null\n : this._fields.ascend === this.order\n ? \"ascend\"\n : \"descend\";\n tempDataSource = this.handleFrontendSorter(tempDataSource, {\n columnKey: this.sort,\n order,\n });\n tempDataSource = this.handleFrontendFilters(tempDataSource);\n this._total = tempDataSource.length;\n return tempDataSource;\n }\n\n // 前端过滤\n handleFrontendFilterSource(\n data: Record<string, any>[],\n q: string,\n columns: CustomColumn[],\n filterKeys?: DataIndex[]\n ): Record<string, any>[] {\n if (!q) {\n return data;\n }\n\n const dataSource: Record<string, any>[] = [];\n\n if (!filterKeys) {\n filterKeys =\n this.frontSearchFilterKeys || columns.map((column) => column.dataIndex);\n }\n\n data.forEach((item) => {\n const children = item[this.childrenColumnName];\n\n if (children) {\n const filteredChildren = this.handleFrontendFilterSource(\n children,\n q,\n columns,\n filterKeys\n );\n\n if (filteredChildren.length > 0) {\n dataSource.push({\n ...item,\n [this.childrenColumnName]: filteredChildren,\n });\n return;\n }\n }\n\n const valid = filterKeys.some((key) => {\n const value = get(item, key);\n if (isNil(value)) {\n return false;\n }\n if (this.exactSearch) {\n return value === q;\n }\n return JSON.stringify(value).toLowerCase().includes(q);\n });\n\n if (valid) {\n dataSource.push(item);\n }\n });\n return dataSource;\n }\n\n private _getRowKey = (): string =>\n this.rowKey ?? this._fields.rowKey ?? this.configProps?.rowKey ?? \"key\";\n\n private _findParentByChildKeyValue = (\n value: string,\n rowKey: string,\n list: Record<string, unknown>[],\n parent?: Record<string, unknown>\n ): Record<string, unknown> => {\n let matchedParent: Record<string, unknown>;\n\n list.some((item) => {\n if (item[rowKey] === value) {\n matchedParent = parent;\n } else {\n const children = item[this.childrenColumnName] as Record<\n string,\n unknown\n >[];\n\n if (children) {\n matchedParent = this._findParentByChildKeyValue(\n value,\n rowKey,\n children,\n item\n );\n }\n }\n\n return matchedParent ? true : false;\n });\n\n return matchedParent;\n };\n\n private _findSelectedRowsByRowKeys = (\n selectedRowKeys: string[],\n rows: any[]\n ) => {\n const rowKey = this._getRowKey();\n const flattenedList = flatMapDeep(this._pureSource, (row) =>\n (row.children || []).concat(row)\n );\n const selectedRows = selectedRowKeys.map(\n (key, index) =>\n flattenedList.find((rowData) => rowData[rowKey] === key) || rows[index]\n );\n return selectedRows;\n };\n // istanbul ignore next\n private _handleRowSelectChange = (\n selectedRowKeys: string[],\n rows: any[]\n ): void => {\n const rowKey = this._getRowKey();\n // 这里统一前端搜索的selectedRows,antd事件吐出来的会存在undefined(原选中的数据不在过滤之后的dataSource里面)\n const selectedRows = this._findSelectedRowsByRowKeys(selectedRowKeys, rows);\n const rowKeyRowMap = keyBy(selectedRows, rowKey);\n\n if (this._selected) {\n const _selectedRowKeys = [...selectedRowKeys];\n this._allChildren.forEach((child) => {\n const rowKeyValue = child[rowKey];\n _selectedRowKeys.push(rowKeyValue);\n rowKeyRowMap[rowKeyValue] = child;\n });\n if (this.autoSelectParentWhenAllChildrenSelected && this._selectedRow) {\n const selectedRowKeySet = new Set(selectedRowKeys);\n const parent = this._findParentByChildKeyValue(\n this._selectedRow[rowKey] as string,\n rowKey,\n this._dataSource\n );\n\n if (\n parent &&\n (parent[this.childrenColumnName] as Record<string, unknown>[]).every(\n (item) => selectedRowKeySet.has(item[rowKey] as string)\n )\n ) {\n const rowKeyValue = parent[rowKey] as string;\n _selectedRowKeys.push(rowKeyValue);\n rowKeyRowMap[rowKeyValue] = parent;\n }\n }\n this.selectedRowKeys = uniq(_selectedRowKeys);\n } else {\n let parent: Record<string, unknown>;\n\n if (this.autoSelectParentWhenAllChildrenSelected && this._selectedRow) {\n parent = this._findParentByChildKeyValue(\n this._selectedRow[rowKey] as string,\n rowKey,\n this._dataSource\n );\n }\n this.selectedRowKeys = pullAll(\n selectedRowKeys,\n map(this._allChildren.concat(parent), rowKey)\n );\n }\n this._selectedRow = undefined;\n const extraRowKeyRowMap = keyBy(this.extraRows, rowKey);\n this._selectedRows = this.selectedRowKeys.map(\n (key) => rowKeyRowMap[key] || extraRowKeyRowMap[key]\n );\n\n let detail = null;\n const data = isEmpty(this._selectUpdateEventDetailField)\n ? this._selectedRows\n : map(this._selectedRows, (row) =>\n get(row, this._selectUpdateEventDetailField)\n );\n detail =\n isEmpty(this._selectUpdateEventDetailKeys) || isEmpty(data)\n ? data\n : set({}, this._selectUpdateEventDetailKeys, data);\n if (!isEmpty(detail)) {\n detail = merge(detail, this._selectUpdateEventDetailExtra);\n }\n if (!this._selectUpdateEventName) {\n this.selectUpdate.emit(detail);\n } else {\n this.dispatchEvent(\n new CustomEvent(this._selectUpdateEventName, { detail })\n );\n }\n this.selectRowKeysUpdate.emit(selectedRowKeys);\n };\n\n // istanbul ignore next\n private _getSelectedRowsWithChildren = (\n row: Record<string, any>\n ): Record<string, any>[] => {\n const result: Record<string, any>[] = [];\n if (\n !isEmpty(row[this.childrenColumnName]) &&\n isArray(row[this.childrenColumnName])\n ) {\n forEach(row[this.childrenColumnName], (item) => {\n result.push(item);\n result.push(...this._getSelectedRowsWithChildren(item));\n });\n }\n return result;\n };\n\n // istanbul ignore next\n private _handleOnSelect = (\n row: Record<string, any>,\n checked: boolean,\n selectedRows: Record<string, any>[]\n ): void => {\n this._selected = checked;\n this._selectedRow = row;\n this._isInSelect = true;\n const rowKey = this._getRowKey();\n const allChildren = this.selectAllChildren\n ? this._getSelectedRowsWithChildren(row)\n : [];\n\n this._allChildren = allChildren;\n if (!this.autoSelectParentWhenAllChildrenSelected) {\n if (checked) {\n this._disabledChildrenKeys = uniq([\n ...this._disabledChildrenKeys,\n ...map(allChildren, rowKey),\n ]);\n } else {\n this._disabledChildrenKeys = pullAll(this._disabledChildrenKeys, [\n ...map(allChildren, rowKey),\n ]);\n }\n }\n if (this.storeCheckedByUrl && !!rowKey) {\n this._updateUrlChecked([row[rowKey]], checked);\n }\n };\n\n // istanbul ignore next\n private _handleSelectAll = (\n selected: boolean,\n selectedRows: Record<string, any>[],\n changeRows: Record<string, any>[]\n ): void => {\n this._selected = selected;\n this._isInSelect = true;\n const rowKey = this._getRowKey();\n if (this.selectAllChildren) {\n const allParentKeys = map(this._dataSource, rowKey);\n const changedParentRows = changeRows.filter((v) =>\n allParentKeys.includes(v[rowKey])\n );\n const toChangedChildrenKeys = flatten(\n map(changedParentRows, (r) =>\n map(this._getSelectedRowsWithChildren(r), (cr) => cr[rowKey])\n )\n );\n const allChildren = flatten(\n map(changedParentRows, (r) =>\n map(this._getSelectedRowsWithChildren(r), (cr) => cr)\n )\n );\n this._allChildren = allChildren;\n\n if (!this.autoSelectParentWhenAllChildrenSelected) {\n if (selected) {\n this._disabledChildrenKeys = uniq(\n this._disabledChildrenKeys.concat(toChangedChildrenKeys)\n );\n } else {\n // disabled children in changeRows should be removed\n this._disabledChildrenKeys = this._disabledChildrenKeys.filter(\n (v) => !toChangedChildrenKeys.includes(v)\n );\n }\n }\n }\n if (this.storeCheckedByUrl && !!rowKey) {\n this._updateUrlChecked(map(changeRows, rowKey), selected);\n }\n };\n\n private _getCheckedFromUrl = () => {\n const history = getHistory();\n const urlSearchParams = new URLSearchParams(history.location.search);\n const checked = urlSearchParams.get(\"checked\");\n return isEmpty(checked) ? [] : checked.split(\",\");\n };\n\n private _updateUrlChecked = (options: any[], checked) => {\n const history = getHistory();\n let checkedOptions: string[] = this._getCheckedFromUrl();\n if (checked) {\n checkedOptions = [...checkedOptions, ...options];\n } else {\n pull(checkedOptions, ...options);\n }\n if (this.shouldUpdateUrlParams) {\n history.pushQuery(\n { checked: checkedOptions.join(\",\") },\n { notify: false }\n );\n }\n };\n private _handleOnChange = (\n pagination: TablePaginationConfig,\n filters: Record<string, string[]>,\n sorter: SorterResult<Record<string, any>>\n ): void => {\n const history = getHistory();\n const urlSearchParams = new URLSearchParams(history.location.search);\n\n // 分页\n if (!isEmpty(pagination)) {\n if (pagination.pageSize !== this.pageSize) {\n pagination.current = 1;\n urlSearchParams.set(\"page\", \"1\");\n urlSearchParams.set(\"pageSize\", pagination.pageSize.toString());\n this.filterUpdate.emit({\n [this._fields.pageSize]: pagination.pageSize,\n [this._fields.page]: 1,\n });\n this.page = 1;\n this.pageSize = pagination.pageSize;\n } else if (pagination.current !== this.page) {\n const newPage = pagination.current || 1;\n urlSearchParams.set(\"page\", newPage.toString());\n this.pageUpdate.emit({\n [this._fields.page]: newPage, // 可配置的 path\n });\n this.page = newPage;\n }\n }\n\n let isSort = false;\n // 排序: 切换分页和页码的时候不应该触发sort.update事件 排序触发/取消的时候,order的类型 'descend' | 'ascend' | null,没触发是false\n if (\n !isEmpty(sorter) &&\n (sorter.order || isNil(sorter.order)) &&\n (sorter.columnKey !== this.sort ||\n this._fields[sorter.order] !== this.order)\n ) {\n isSort = true;\n\n if (sorter.columnKey && sorter.order) {\n urlSearchParams.set(\"sort\", sorter.columnKey as string);\n urlSearchParams.set(\"order\", this._fields[sorter.order].toString());\n this.sort = sorter.columnKey as string;\n this.order = this._fields[sorter.order];\n } else {\n urlSearchParams.delete(\"sort\");\n urlSearchParams.delete(\"order\");\n this.sort = null;\n this.order = null;\n }\n this.sortUpdate.emit({\n sort: this.sort,\n order: this.order,\n });\n }\n\n this.filters = filters;\n // 过滤\n if (!isSort && !isEmpty(filters)) {\n forEach(filters, (value: any, key) => {\n isNil(value) || value.length === 0\n ? urlSearchParams.delete(key)\n : urlSearchParams.set(key, value);\n });\n this.columnFiltersUpdate.emit(filters);\n }\n\n if (this.frontSearch) {\n if (this.shouldUpdateUrlParams) {\n history.push(`?${urlSearchParams}`, { notify: false });\n }\n this.frontendSearch(pagination, filters, sorter);\n } else {\n if (this.shouldUpdateUrlParams) {\n history.push(`?${urlSearchParams}`, {\n notify: !!this.shouldRenderWhenUrlParamsUpdate,\n });\n }\n }\n };\n\n // istanbul ignore next\n private renderSelectInfo = () => {\n // eslint-disable-next-line react/display-name\n return (\n <span style={{ marginLeft: 20 }}>\n <span>\n {i18n.t(`${NS_PRESENTATIONAL_BRICKS}:${K.CHOSEN_OPTIONS}`, {\n count: this.selectedRowKeys.length,\n })}\n </span>\n <a\n role=\"button\"\n style={{ marginLeft: \"10px\" }}\n onClick={() => {\n this.selectedRowKeys = [];\n this._selectedRows = [];\n this._disabledChildrenKeys = [];\n this._allChildren = [];\n if (!this._selectUpdateEventName) {\n this.selectUpdate.emit([]);\n } else {\n this.dispatchEvent(\n new CustomEvent(this._selectUpdateEventName, { detail: [] })\n );\n }\n this.selectRowKeysUpdate.emit([]);\n }}\n >\n {i18n.t(`${NS_PRESENTATIONAL_BRICKS}:${K.CLEAR}`)}\n </a>\n </span>\n );\n };\n\n // 对前端搜索数据进行排序\n private handleFrontendSorter(\n dataSource: Record<string, any>[],\n sorter: Partial<SorterResult<Record<string, any>>>\n ): Record<string, any>[] {\n const tempDataSource: Record<string, any>[] = dataSource || [];\n const { columnKey, order } = sorter;\n\n if (!columnKey || !order) {\n return dataSource;\n }\n\n let direction: 1 | -1;\n\n if (order === \"descend\") {\n direction = -1;\n } else if (order === \"ascend\") {\n direction = 1;\n }\n\n if (direction !== undefined) {\n tempDataSource.sort((a, b) => {\n const aValue = get(a, columnKey);\n const bValue = get(b, columnKey);\n\n if (isNil(aValue)) {\n if (!isNil(bValue)) {\n return 1;\n }\n } else {\n if (isNil(bValue)) {\n return -1;\n }\n }\n\n if (aValue == bValue) {\n return 0;\n }\n\n if (aValue > bValue) {\n return direction;\n }\n\n return -direction;\n });\n tempDataSource.forEach((item) => {\n const children = item[this.childrenColumnName];\n\n if (children) {\n this.handleFrontendSorter(children, sorter);\n }\n });\n }\n\n return tempDataSource;\n }\n\n // 对前端搜索数据进行表头筛选项过滤\n private handleFrontendFilters(\n dataSource: Record<string, any>[]\n ): Record<string, any>[] {\n let tempDataSource: Record<string, any>[] = dataSource || [];\n const filtersArray = map(this.filters, (item, k) => ({\n key: k,\n value: item,\n })).filter((item) => !isNil(item.value) && item.value.length !== 0);\n tempDataSource = tempDataSource.filter((item) => {\n return every(filtersArray, (filter) => {\n return filter.value?.includes(get(item, filter.key)) ?? true;\n });\n });\n return tempDataSource;\n }\n\n // istanbul ignore next\n private frontendSearch(\n pagination: TablePaginationConfig,\n filters: Record<string, string[]>,\n sorter: SorterResult<Record<string, any>>\n ): void {\n this.sort = isNil(sorter.order) ? null : (sorter.columnKey as string);\n this.order = isNil(sorter.order) ? null : this._fields[sorter.order];\n }\n\n // 点击展开图标时触发的事件\n // istanbul ignore next\n private _handleOnExpand = (\n expanded: boolean,\n record: Record<string, any>\n ): void => {\n if (this.expandedRowKeys) {\n const rowKey = this._getRowKey();\n const pullKeys: string[] = [get(record, rowKey)];\n const recordChildren = get(record, this.childrenColumnName);\n if (!isEmpty(recordChildren)) {\n const keysToPull = map(\n filter(recordChildren, (c) =>\n isEmpty(get(c, this.childrenColumnName))\n ),\n rowKey\n );\n pullKeys.push(...keysToPull);\n }\n this.expandedRowKeys = expanded\n ? [...this.expandedRowKeys, ...pullKeys]\n : pull(this.expandedRowKeys, ...pullKeys);\n this._render();\n }\n this.rowExpand.emit({\n expanded,\n record,\n });\n };\n\n // 展开的行变化时触发的事件\n // istanbul ignore next\n private _handleOnExpandedRowsChange = (expandedRows: React.Key[]): void => {\n this.expandRowsChange.emit({\n expandedRows,\n });\n };\n\n // 拖拽排序后触发的事件\n // istanbul ignore next\n private _handleOnDrag = (data: Record<string, any>[]): void => {\n this.rowDrag.emit({\n data,\n });\n };\n\n /**\n * @description 展开所有行\n */\n @method()\n expandAll() {\n const allKeys: string[] = [];\n const rowKey = this._getRowKey();\n getKeysOfData(this._dataSource, rowKey, this.childrenColumnName, allKeys);\n this.expandedRowKeys = allKeys;\n }\n\n getModifyColumns(): CustomColumn[] {\n let columns = this._columns;\n if (this._columns && this.hiddenColumns) {\n columns = this._columns.filter((column) => {\n return !this.hiddenColumns.includes(\n (column.dataIndex as string) ?? column.key\n );\n });\n }\n if (this.sortable === false) {\n columns = map(columns, (column) => {\n column.sorter = false;\n return column;\n });\n }\n return columns;\n }\n\n protected _render(): void {\n if (this.isConnected) {\n if (this.draggable) {\n // eslint-disable-next-line no-console\n console.warn(\n \"`draggable` of `<presentational-bricks.brick-table>` is deprecated, use `tableDraggable` instead.\"\n );\n }\n // 前端搜索的参数处理\n if (this.frontSearch) {\n this._dataSource = this.handleFrontendDataChange(\n this._pureSource,\n this._columns\n );\n }\n this._initConfigProps();\n ReactDOM.render(\n <BrickWrapper wrapperConfig={this.wrapperConfig}>\n <BrickTable\n emptyUseBrick={this.emptyUseBrick}\n dataSource={this._dataSource}\n columns={this.getModifyColumns()}\n configProps={this._finalConfigProps}\n error={this._error}\n onChange={this._handleOnChange}\n showCard={this.showCard}\n showHeader={this.showHeader}\n expandable={this.expandable}\n expandedRowBrick={this.expandedRowBrick}\n expandIconAsCell={this.expandIconAsCell}\n expandIconColumnIndex={this.expandIconColumnIndex}\n expandRowByClick={this.expandRowByClick}\n defaultExpandAllRows={this.defaultExpandAllRows}\n onExpand={this._handleOnExpand}\n onExpandedRowsChange={this._handleOnExpandedRowsChange}\n expandedRowKeys={this.expandedRowKeys}\n rowKey={this._getRowKey()}\n childrenColumnName={this.childrenColumnName}\n tableDraggable={this.tableDraggable || this.draggable}\n onDrag={this._handleOnDrag}\n zebraPattern={this.zebraPattern}\n expandIcon={this.expandIcon}\n scroll={this.scrollConfigs}\n optimizedColumns={this.optimizedColumns}\n ellipsisInfo={this.ellipsisInfo}\n thTransparent={this.thTransparent}\n acceptType={this.acceptType}\n showHeaderExpandAll={this.showHeaderExpandAll}\n xSmallSizeTable={this.size == \"x-small\"}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n\n // istanbul ignore next\n private _getAllRows = (): Record<string, any>[] => {\n const allRows: Record<string, any>[] = [];\n getRowsOfData(this._dataSource, this.childrenColumnName, allRows);\n return allRows;\n };\n\n // istanbul ignore next\n private _handleDefaultSelectAll = () => {\n this._isInSelect = true;\n const rowKey = this._getRowKey();\n this._selectedRows = this._getAllRows();\n this.selectedRowKeys = map(this._selectedRows, rowKey);\n return this.selectedRowKeys;\n };\n\n private _initConfigProps = () => {\n // 默认分页配置\n const defaultPagination: TablePaginationConfig = {\n current: this.page,\n pageSize: this.pageSize,\n total: this._total,\n showSizeChanger: true,\n pageSizeOptions: [\"10\", \"20\", \"50\"],\n // eslint-disable-next-line react/display-name\n showTotal: (totals) => (\n <>\n <span className={paginationStyle.totalText}>\n {i18n.t(`${NS_PRESENTATIONAL_BRICKS}:${K.PAGINATION_TOTAL_TEXT}`)}{\" \"}\n <strong className={paginationStyle.total}>{totals}</strong>{\" \"}\n {i18n.t(`${NS_PRESENTATIONAL_BRICKS}:${K.PAGINATION_TOTAL_UNIT}`)}\n </span>\n {(this.configProps?.rowSelection || this.rowSelection) &&\n this.showSelectInfo &&\n this.selectedRowKeys.length !== 0 &&\n this.renderSelectInfo()}\n </>\n ),\n };\n\n const rowKey = this._getRowKey();\n let rowDisabledConfig: RowDisabledProps[];\n\n if (this.rowDisabledConfig) {\n rowDisabledConfig = Array.isArray(this.rowDisabledConfig)\n ? this.rowDisabledConfig\n : [this.rowDisabledConfig];\n }\n\n // 当 rowSelection 为 true 或者有相关配置的时候的默认行选择配置\n const defaultRowSelection: TableRowSelection<any> = {\n ...(rowKey\n ? {\n selectedRowKeys: this._isInSelect\n ? this.selectedRowKeys\n : this.storeCheckedByUrl\n ? this._getCheckedFromUrl()\n : this.defaultSelectAll\n ? this._handleDefaultSelectAll()\n : this.selectedRowKeys,\n onSelect: this._handleOnSelect,\n onSelectAll: this._handleSelectAll,\n onChange: this._handleRowSelectChange,\n preserveSelectedRowKeys: true,\n }\n : {\n // 当用户没有设置rowKey时的兼容处理\n onChange: this._handleRowSelectChange,\n preserveSelectedRowKeys: true,\n }),\n getCheckboxProps: (record: any) => {\n if (\n !isEmpty(this._disabledChildrenKeys) &&\n this._disabledChildrenKeys.includes(get(record, rowKey))\n ) {\n return {\n disabled: true,\n };\n }\n if (!rowDisabledConfig) return {};\n\n return {\n disabled: rowDisabledConfig.some((config) => {\n const { field, value, operator } = config;\n const fun = compareFunMap[operator];\n\n return fun?.(value, get(record, field));\n }),\n };\n },\n };\n if (this.configProps) {\n this._finalConfigProps = cloneDeep(this.configProps);\n if (this.configProps.pagination !== false) {\n this._finalConfigProps.pagination = {\n ...defaultPagination,\n ...this.pagination,\n ...this.configProps.pagination,\n };\n if (\n (this.configProps.pagination === undefined ||\n this.configProps.pagination === null) &&\n this.pagination === false\n ) {\n this._finalConfigProps.pagination = false;\n }\n }\n if (!this.configProps.size) {\n this._finalConfigProps.size = this.size;\n }\n } else {\n this._finalConfigProps = {};\n this._finalConfigProps.pagination =\n this.pagination !== false ? defaultPagination : false;\n this._finalConfigProps.size = this.size;\n }\n const rowSelec = this.configProps?.rowSelection ?? this.rowSelection;\n if (rowSelec) {\n if (rowSelec === true) {\n this._finalConfigProps.rowSelection = {\n ...defaultRowSelection,\n type: this.type ?? \"checkbox\",\n };\n } else {\n this._finalConfigProps.rowSelection = {\n ...defaultRowSelection,\n type: this.type ?? \"checkbox\",\n ...rowSelec,\n ...(defaultRowSelection.selectedRowKeys\n ? { selectedRowKeys: defaultRowSelection.selectedRowKeys }\n : {}),\n };\n }\n } else if (this.type) {\n this._finalConfigProps.rowSelection = {\n ...defaultRowSelection,\n type: this.type,\n };\n } else {\n this._finalConfigProps.rowSelection = false;\n }\n\n // 初始化列排序\n if (this._columns) {\n this._columns = this._columns.map((item) => {\n if (isNil(item.key)) {\n item.key = item.dataIndex as string;\n }\n if (item.sorter) {\n item.sortOrder = (this.sort === item.key &&\n !isNil(this.order) &&\n (this._fields.ascend === this.order\n ? \"ascend\"\n : \"descend\")) as SortOrder;\n }\n // 初始化表头过滤值\n if (item.filters) {\n const history = getHistory();\n const urlSearchParams = new URLSearchParams(history.location.search);\n const filteredValue =\n urlSearchParams.get(item.key as string) ??\n get(this.filters, item.key)?.join(\",\");\n if (!isNil(filteredValue) && !isEmpty(filteredValue)) {\n item.filtered = true;\n item.filteredValue = filteredValue\n .split(\",\")\n .map(\n (v) =>\n find(item.filters, (f) => String(f.value) === v)?.value ?? v\n );\n } else {\n item.filtered = false;\n item.filteredValue = [];\n }\n }\n return item;\n });\n }\n };\n\n _test_only_getOriginalDataSource(): Record<string, any>[] {\n return this._originalDataSource;\n }\n\n updateData(event: CustomEvent): void {\n this._dataSource = event.detail;\n this._error = null;\n this._render();\n }\n\n updateError(event: CustomEvent): void {\n this._error = event.detail;\n this._render();\n }\n\n set selectUpdateEventName(value: string) {\n this._selectUpdateEventName = value;\n }\n\n set selectUpdateEventDetailKeys(value: string[]) {\n this._selectUpdateEventDetailKeys = value;\n }\n\n set selectUpdateEventDetailField(value: string) {\n this._selectUpdateEventDetailField = value;\n }\n\n set selectUpdateEventDetailExtra(value: any) {\n this._selectUpdateEventDetailExtra = value;\n }\n}\n\ncustomElements.define(\"presentational-bricks.brick-table\", BrickTableElement);\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, forwardRef, useCallback } from \"react\";\nimport { SearchOutlined, CloseCircleOutlined } from \"@ant-design/icons\";\nimport { Input, Button, Select } from \"antd\";\nimport style from \"./index.module.css\";\nimport { Size, Shape } from \"./index\";\nimport classNames from \"classnames\";\nimport { debounce } from \"lodash\";\nimport i18next from \"i18next\";\nimport { K, NS_PRESENTATIONAL_BRICKS } from \"../i18n/constants\";\n\ninterface TestGeneralSearchProps {\n onUpdate: (value: string) => void;\n onChange: (value: string) => void;\n query: string;\n size: Size;\n shape: Shape;\n placeholder: string;\n inputStyle?: any;\n buttonStyle?: any;\n disableAutofocus?: boolean;\n debounceTime?: number;\n searchTypeEnabled?: boolean;\n searchType?: \"all\" | \"ip\";\n onSearchTypeChange?: (value: string) => void;\n searchBoxStyleType?: \"defalut\" | \"round\";\n allowClear?: boolean;\n onBlur?: (value: string) => void;\n}\n\nconst sizeClassMap = {\n small: {\n default: {\n input: \"small\",\n btn: \"small\",\n },\n round: {\n input: \"small\",\n btn: \"small\",\n },\n },\n default: {\n default: {\n input: \"default\",\n btn: \"default\",\n },\n round: {\n input: \"default\",\n btn: \"small\",\n },\n },\n large: {\n default: {\n input: \"large\",\n btn: \"large\",\n },\n round: {\n input: \"large\",\n btn: \"default\",\n },\n },\n extraLarge: {\n default: {\n input: \"large\",\n btn: \"large\",\n },\n round: {\n input: \"large\",\n btn: \"large\",\n },\n },\n};\n\nexport const BrickGeneralSearch = forwardRef<Input, TestGeneralSearchProps>(\n function BrickGeneralSearch(props, ref): React.ReactElement {\n const [query, setQuery] = useState(props.query);\n\n const handleOnSearch = () => {\n props.onUpdate(query);\n };\n\n const debounceValueEmit = useCallback(\n props.debounceTime\n ? debounce((value: string): void => {\n props.onChange(value);\n }, props.debounceTime)\n : props.onChange,\n [props.debounceTime]\n );\n\n const handleOnChange = (e) => {\n debounceValueEmit(e.target.value);\n setQuery(e.target.value);\n };\n\n useEffect(() => {\n if (props.query !== query) {\n debounceValueEmit(props.query);\n setQuery(props.query);\n }\n }, [props.query]);\n\n return (\n <>\n {!props.searchTypeEnabled ? (\n <span\n className={classNames(style.searchInputContainer, {\n [style.roundSearchInputContainer]: props.shape === \"round\",\n [style.roundSmallSearchInputContainer]:\n props.shape === \"round\" && props.size === \"small\",\n [style.roundExtraLargeInputContainer]:\n props.shape === \"round\" && props.size === \"extraLarge\",\n [style.largeSearchInputContainer]:\n props.shape === \"default\" && props.size === \"large\",\n })}\n >\n <Input\n ref={ref}\n allowClear={props.allowClear}\n className={style.searchInput}\n size={sizeClassMap[props.size][props.shape].input as any}\n onPressEnter={handleOnSearch}\n value={query}\n onChange={handleOnChange}\n placeholder={props.placeholder}\n style={props.inputStyle}\n autoFocus={!props.disableAutofocus}\n onBlur={() => props?.onBlur(query)}\n />\n <Button\n type=\"link\"\n {...(props.shape === \"round\" && { shape: \"circle\" })}\n icon={<SearchOutlined />}\n size={sizeClassMap[props.size][props.shape].btn as any}\n onClick={handleOnSearch}\n className={style.searchBtn}\n style={props.buttonStyle}\n />\n </span>\n ) : (\n <span\n className={classNames(style.selectSearchBox, {\n [style.searchBoxStyleTypeDefault]:\n props.searchBoxStyleType === \"defalut\",\n })}\n >\n <Select\n bordered={false}\n className={style.selectType}\n style={{ width: \"120px\" }}\n defaultValue={props.searchType}\n onChange={props.onSearchTypeChange}\n >\n <Select.Option value=\"all\">\n {i18next.t(`${NS_PRESENTATIONAL_BRICKS}:${K.FULL_TEXT_SEARCH}`)}\n </Select.Option>\n <Select.Option value=\"ip\">\n {i18next.t(`${NS_PRESENTATIONAL_BRICKS}:${K.IP_SEARCH}`)}\n </Select.Option>\n </Select>\n <span className={style.selectSearchInputContainer}>\n <Input\n allowClear={props.allowClear}\n bordered={false}\n className={style.searchInput}\n size={sizeClassMap[props.size][props.shape].input as any}\n onPressEnter={handleOnSearch}\n value={query}\n onChange={handleOnChange}\n placeholder={props.placeholder}\n autoFocus={!props.disableAutofocus}\n onBlur={() => props?.onBlur(query)}\n />\n <Button\n type=\"link\"\n {...(props.shape === \"round\" && { shape: \"circle\" })}\n icon={<SearchOutlined />}\n size={sizeClassMap[props.size][props.shape].btn as any}\n onClick={handleOnSearch}\n className={style.searchBtn}\n style={props.buttonStyle}\n />\n </span>\n </span>\n )}\n </>\n );\n }\n);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickGeneralSearch } from \"./BrickGeneralSearch\";\nimport {\n getHistory,\n UpdatingElement,\n property,\n event,\n EventEmitter,\n BrickWrapper,\n} from \"@next-core/brick-kit\";\nimport { forEach } from \"lodash\";\nimport { Input } from \"antd\";\n\nexport type Size = \"small\" | \"default\" | \"large\" | \"extraLarge\";\nexport type Shape = \"round\" | \"default\";\n\n/**\n * @id presentational-bricks.brick-general-search\n * @name presentational-bricks.brick-general-search\n * @editor shared-editors.general-search--editor\n * @docKind brick\n * @description 搜索框,满足大部分的搜索需求\n * @author lynette\n * @slots\n * @history\n * 1.180.0:新增事件 `query.change.v2`,新增属性 `debounceTime`\n * 1.68.0:新增属性 `qField`\n * @memo\n * @noInheritDoc\n */\nexport class BrickGeneralSearchElement extends UpdatingElement {\n /**\n * @kind string\n * @required false\n * @default -\n * @description 提示语\n * @group basic\n */\n @property()\n placeholder: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 输入的搜索关键字,常用于回填搜索框,如\\${query.q}\n * @group basic\n */\n @property({\n attribute: false,\n })\n q = \"\";\n\n /**\n * @kind {field: string;value: any;}[]\n * @required false\n * @default -\n * @description 进行搜索的时候需重置的其他默认参数,如[{\"field\": \"page\", \"value\": 1}]即表示搜索的时候需要把页码重置成 1\n * @group basic\n */\n @property({\n attribute: false,\n })\n defaultArgs: { field: string; value: any }[];\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否更新 url 参数\n * @group advanced\n */\n @property({\n attribute: false,\n })\n shouldUpdateUrlParams = true;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否对输入框剔除前后空格\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n shouldTrimQuery: boolean;\n\n /**\n * @kind string\n * @required false\n * @default \"q\"\n * @description 当 `shouldUpdateUrlParams` 为真时,将以该值为 key 更新到 url 上\n * @group advanced\n */\n @property()\n qField: string;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否禁用自动聚焦\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n disableAutofocus: boolean;\n\n /**\n * @kind \"all\"|\"ip\"\n * @required false\n * @default 'all'\n * @description 搜索类型\n * @group advanced\n */\n @property({\n attribute: false,\n })\n searchType: \"all\" | \"ip\" = \"all\";\n\n /**\n * @kind boolean\n * @required false\n * @description 是否支持ip搜索\n * @group basic\n */\n @property({ type: Boolean })\n searchTypeEnabled: boolean;\n\n /**\n * @kind number\n * @required false\n * @default 0\n * @description 默认延迟时间\n * @group advanced\n */\n @property({\n attribute: false,\n })\n debounceTime = 0;\n\n /**\n * @kind Size\n * @required false\n * @default default\n * @description 尺寸大小,可选`default、small、large、extraLarge`\n * @enums \"small\"|\"default\"|\"large\"|\"extraLarge\"\n * @group ui\n */\n @property({\n attribute: false,\n })\n size: Size = \"default\";\n\n /**\n * @kind Shape\n * @required false\n * @default default\n * @description 形状,可选`default、round`\n * @enums \"round\"|\"default\";\n * @group ui\n */\n @property({\n attribute: false,\n })\n shape: Shape = \"default\";\n\n /**\n * @kind Record<string,any>\n * @required false\n * @default -\n * @description 输入框样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n inputStyle: Record<string, any>;\n\n /**\n * @kind Record<string,any>\n * @required false\n * @default -\n * @description 按钮样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n buttonStyle: Record<string, any>;\n\n /**\n * @kind \"defalut\"|\"radio\"\n * @required \"defalut\"\n * @default true\n * @description 按类型搜索框样式\n * @enums \"defalut\"|\"radio\"\n * @group ui\n */\n @property({\n attribute: false,\n })\n searchBoxStyleType: \"defalut\" | \"round\" = \"defalut\";\n\n /**\n * @description 可以点击清除图标删除内容\n * @group ui\n */\n @property({\n type: Boolean,\n })\n allowClear?: boolean;\n\n /**\n * @kind string\n * @required false\n * @default query\n * @deprecated\n * @description [已废弃]filter.update 中 detail 的字段名\n */\n @property({\n attribute: false,\n })\n field = \"query\";\n\n /**\n * @detail Record<string,any>\n * @description 更新的数据,包括 defaultArgs 和输入框的组合,注意在事件中 q 的 field 为 query。点击搜索时触发\n */\n @event({ type: \"filter.update\", bubbles: true }) filterUpdate: EventEmitter<\n Record<string, any>\n >;\n\n /**\n * @detail string\n * @description 输入的搜索字符,输入变化时触发\n */\n @event({ type: \"query.change\", bubbles: true })\n queryChange: EventEmitter<string>;\n\n /**\n * @detail {q:string}\n * @description 当搜索框的值变化时发出的事件,事件内容为{q: value},其中 value 为输入的字符。可直接和 brick-table 的前端搜索方法 filterSourceData 搭配使用。\n */\n @event({ type: \"query.change.v2\", bubbles: true })\n queryChangeV2: EventEmitter<{ q: string }>;\n\n /**\n * @detail string\n * @description 搜索类型变化时触发\n */\n @event({ type: \"search.type.change\", bubbles: true })\n searchTypeChange: EventEmitter<string>;\n\n /**\n * @detail string\n * @description 失焦时触发, 而且会传出当前输入框当前值\n */\n @event({ type: \"input.blur\" }) blurEvent: EventEmitter<string>;\n\n private _handleBlur = (value: string): void => {\n this.blurEvent.emit(value);\n };\n\n inputRef: Input;\n\n focus(): void {\n if (this.inputRef) {\n this.inputRef.focus();\n }\n }\n\n blur(): void {\n if (this.inputRef) {\n this.inputRef.blur();\n }\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 // istanbul ignore next\n private _handleUpdate = (value: string): void => {\n value = this.shouldTrimQuery ? value.trim() : value;\n const history = getHistory();\n const urlSearchParams = new URLSearchParams(history.location.search);\n const detail = {\n [this.field]: value,\n };\n if (this.defaultArgs) {\n forEach(this.defaultArgs, (item) => {\n detail[`${item.field}`] = item.value;\n if (this.shouldUpdateUrlParams) {\n urlSearchParams.set(item.field, item.value);\n }\n });\n }\n this.filterUpdate.emit(detail);\n if (this.shouldUpdateUrlParams) {\n urlSearchParams.set(this.qField ?? \"q\", value);\n history.push(`?${urlSearchParams}`);\n }\n };\n\n private _handleOnChange = (value: string): void => {\n this.queryChange.emit(value);\n this.queryChangeV2.emit({ q: value });\n this.q = value;\n };\n private _handleSearchTypeChange = (value: string): void => {\n this.searchTypeChange.emit(value);\n };\n protected _render(): void {\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickGeneralSearch\n onUpdate={this._handleUpdate}\n onChange={this._handleOnChange}\n query={this.q}\n size={this.size}\n placeholder={this.placeholder}\n shape={this.shape}\n inputStyle={this.inputStyle}\n buttonStyle={this.buttonStyle}\n debounceTime={this.debounceTime}\n disableAutofocus={this.disableAutofocus}\n allowClear={this.allowClear}\n ref={(ref) => {\n this.inputRef = ref;\n }}\n searchTypeEnabled={this.searchTypeEnabled}\n searchType={this.searchType}\n onSearchTypeChange={this._handleSearchTypeChange}\n searchBoxStyleType={this.searchBoxStyleType}\n onBlur={this._handleBlur}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-general-search\",\n BrickGeneralSearchElement\n);\n","import React from \"react\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\nimport { Button } from \"antd\";\nimport { ButtonProps } from \"antd/lib/button\";\n\ninterface BrickButtonProps {\n text: string;\n configProps?: ButtonProps & { icon?: string };\n onClick?: (event: React.MouseEvent) => void;\n}\n\nexport function BrickButton(props: BrickButtonProps): React.ReactElement {\n const icon = props.configProps?.icon;\n return (\n <Button\n onClick={props.onClick}\n {...props.configProps}\n icon={icon && <LegacyIcon type={icon} />}\n >\n {props.text}\n </Button>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper } from \"@next-core/brick-kit\";\nimport { BrickButton } from \"./BrickButton\";\nimport { ButtonProps } from \"antd/lib/button\";\n\nclass BrickButtonElement extends HTMLElement {\n private _text: string;\n private _configProps: ButtonProps & { icon?: 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 private _handleOnClick = (e: React.MouseEvent): void => {\n this.dispatchEvent(new CustomEvent(\"button.click\", e));\n };\n\n private _render(): void {\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickButton\n text={this._text}\n configProps={this._configProps}\n onClick={this._handleOnClick}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n\n set text(value: string) {\n this._text = value;\n this._render();\n }\n\n set configProps(value: ButtonProps & { icon?: string }) {\n this._configProps = value;\n this._render();\n }\n}\n\ncustomElements.define(\"presentational-bricks.brick-button\", BrickButtonElement);\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, { ChangeEvent, useState } from \"react\";\nimport { Input, Modal } from \"antd\";\nimport { ButtonProps } from \"antd/lib/button\";\nimport style from \"./index.module.css\";\n\nexport interface LegacyBrickDeleteConfirmProps {\n deleteName: string;\n originBtnProps?: ButtonProps;\n onDelete: () => void;\n className?: any;\n visible?: boolean;\n loading: boolean;\n handleCancel?: () => void;\n}\n\nexport interface CardBodyProps {\n name: string;\n content: string;\n handleChange: (value: string) => void;\n}\n\nexport interface CardBodyState {\n value: string;\n}\n\nconst CardTitle = ({ name }: { name: string }) => {\n return (\n <div>\n 确认要删除 <span className={style.highLight}>{name}</span> 吗?\n </div>\n );\n};\nexport function CardBody(props: CardBodyProps): React.ReactElement {\n const [value, setValue] = useState(props.content);\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value);\n props.handleChange(e.target.value);\n };\n\n return (\n <div>\n <div style={{ marginBottom: 15 }}>\n 该删除操作将抹除所有与其相关的数据,请确认后在下方输入{\" \"}\n <span className={style.highLight}>{props.name}</span> 来解锁确定按钮。\n </div>\n <Input\n name=\"deleteName\"\n size=\"small\"\n value={value}\n onChange={handleChange}\n />\n </div>\n );\n}\n\nexport function BrickDeleteConfirm(\n props: LegacyBrickDeleteConfirmProps\n): React.ReactElement {\n const [disabled, setDisabled] = useState(true);\n const [content, setContent] = useState(\"\");\n\n const handleChange = (value: string) => {\n setContent(value);\n setDisabled(value !== props.deleteName);\n };\n\n const handleOk = () => {\n props.onDelete && props.onDelete();\n };\n\n const handleCancel = () => {\n setDisabled(true);\n setContent(\"\");\n props.handleCancel();\n };\n\n return (\n <>\n <Modal\n title={<CardTitle name={props.deleteName} />}\n visible={props.visible}\n onOk={handleOk}\n onCancel={handleCancel}\n okText=\"确定\"\n cancelText=\"取消\"\n okType=\"danger\"\n okButtonProps={{ disabled: disabled, loading: props.loading }}\n destroyOnClose={true}\n maskClosable={false}\n width={416}\n >\n {\n <CardBody\n name={props.deleteName}\n content={content}\n handleChange={value => handleChange(value)}\n />\n }\n </Modal>\n </>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickDeleteConfirm } from \"./BrickDeleteConfirm\";\nimport { BrickWrapper } from \"@next-core/brick-kit\";\n\nclass BrickDeleteConfirmElement extends HTMLElement {\n private _deleteName = \"\";\n private _fields: {\n name?: string;\n key?: string;\n argsPath?: string;\n };\n private _type: \"array\" | \"object\" | \"string\";\n private _dataSource: any;\n private _keySeparator: string;\n\n private _isVisible = false;\n private _loading = false;\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 private _render() {\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickDeleteConfirm\n deleteName={this._deleteName}\n onDelete={this._handleOnDelete}\n handleCancel={this.close}\n visible={this._isVisible}\n loading={this._loading}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n open() {\n this._isVisible = true;\n this._render();\n }\n\n private close = () => {\n this._isVisible = false;\n this._render();\n };\n\n private _handleOnDelete = () => {\n const { key, argsPath } = this._fields;\n let detail;\n if (this._type === \"array\") {\n detail = key\n ? this._dataSource.map((item: any) => item[key])\n : this._dataSource;\n if (this._keySeparator) {\n detail = detail.join(this._keySeparator);\n }\n } else if (this._type === \"object\") {\n detail = this._dataSource[key];\n } else {\n detail = this._dataSource;\n }\n this.dispatchEvent(\n new CustomEvent(\"confirm.delete\", {\n detail: argsPath ? { [argsPath]: detail } : detail\n })\n );\n };\n\n private initData(value: any) {\n this._dataSource = value;\n const { name } = this._fields;\n\n if (this._type === \"array\") {\n this._deleteName = name\n ? value.map((item: any) => item[name]).toString()\n : value.toString();\n } else if (this._type === \"object\") {\n this._deleteName = value[name];\n } else {\n this._deleteName = value;\n }\n }\n\n updateData(event: CustomEvent): void {\n this.initData(event.detail);\n this._render();\n }\n\n updateLoading(value: boolean): void {\n this._loading = value;\n this._render();\n }\n\n set dataSource(value: any) {\n this.initData(value);\n this._render();\n }\n\n set deleteName(value: string) {\n this._deleteName = value;\n this._render();\n }\n\n set fields(value: any) {\n this._fields = value;\n this._render();\n }\n\n set keySeparator(value: string) {\n this._keySeparator = value;\n this._render();\n }\n\n set type(value: \"array\" | \"object\" | \"string\") {\n this._type = value;\n this._render();\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-delete-confirm\",\n BrickDeleteConfirmElement\n);\n","export const NS_LIBS_DATETIME = \"libs-datetime\";\n\nexport enum K {\n TODAY = \"TODAY\",\n YESTERDAY = \"YESTERDAY\",\n FUTURE_AFTER = \"FUTURE_AFTER\",\n FORMAT_SHORT = \"FORMAT_SHORT\",\n FORMAT_SHORT_DAY = \"FORMAT_SHORT_DAY\",\n SECONDS = \"SECONDS\",\n MILL_SECONDS = \"MILL_SECONDS\",\n MINUTES = \"MINUTES\",\n HOURS = \"HOURS\",\n DAYS = \"DARS\",\n MONTHS = \"MONTHS\",\n TEN_HOURS_TEN_MINUTES_TEST = \"TEN_HOURS_TEN_MINUTES_TEST\",\n ONE_TWO_SECONDS = \"ONE_TWO_SECONDS\",\n OO_TWO_ONE_SECONDS = \"OO_TWO_ONE_SECONDS\",\n}\n\nexport type Locale = { [key in K]: string };\n","import { isNil, findIndex, chain } from \"lodash\";\nimport moment from \"moment\";\nimport { NS_LIBS_DATETIME, K } from \"./i18n/constants\";\nimport i18n from \"i18next\";\nexport const costTime = (cost: number, start?: any, end?: any) => {\n // 某些后台接口任务初始时 `end` 为 \"0001-01-01T00:00:00Z\"\n if (isNil(cost) && (isNil(end) || end === \"0001-01-01T00:00:00Z\")) {\n return \"\";\n }\n\n if (isNil(cost)) {\n cost = moment(end).diff(start);\n }\n\n cost = Math.max(cost, 0);\n\n const milliseconds = cost % 1000;\n const seconds = Math.floor(cost / 1000) % 60;\n const minutes = Math.floor(cost / 60000) % 60;\n const hours = Math.floor(cost / 3600000) % 24;\n const days = Math.floor(cost / 86400000) % 30;\n const months = Math.floor(cost / (86400000 * 30));\n\n const list = [\n {\n count: months,\n unit: i18n.t(`${NS_LIBS_DATETIME}:${K.MONTHS}`),\n },\n {\n count: days,\n unit: i18n.t(`${NS_LIBS_DATETIME}:${K.DAYS}`),\n },\n {\n count: hours,\n unit: i18n.t(`${NS_LIBS_DATETIME}:${K.HOURS}`),\n },\n {\n count: minutes,\n unit: i18n.t(`${NS_LIBS_DATETIME}:${K.MINUTES}`),\n },\n {\n count: seconds,\n unit: i18n.t(`${NS_LIBS_DATETIME}:${K.SECONDS}`),\n },\n {\n count: milliseconds,\n unit: i18n.t(`${NS_LIBS_DATETIME}:${K.MILL_SECONDS}`),\n },\n ];\n\n const index = findIndex(list, function (item) {\n return item.count > 0;\n });\n\n // 如果小于 1 分钟,统一只显示 `秒`\n if (index >= 4 || index === -1) {\n // 如果小于 0.1 秒,取 3 位小数,否则取 1 位小数\n return (\n +(cost / 1000).toFixed(cost >= 100 ? 1 : 3) +\n \" \" +\n i18n.t(`${NS_LIBS_DATETIME}:${K.SECONDS}`)\n );\n }\n // 否则,统一显示为最大的两个且不为 0 的单位\n return chain(list.slice(index, index + 2))\n .filter(function (item) {\n return item.count > 0;\n })\n .map(function (item) {\n return item.count + \" \" + item.unit;\n })\n .value()\n .join(\" \");\n};\n","import { Locale, K } from \"../constants\";\n\nconst locale: Locale = {\n [K.YESTERDAY]: \"Yesterday\",\n [K.TODAY]: \"Today\",\n [K.FUTURE_AFTER]: \"After {{time}}\",\n [K.FORMAT_SHORT]: \"MMM D ah:mm\",\n [K.FORMAT_SHORT_DAY]: \"MMM D HH:mm\",\n [K.MONTHS]: \"Months\",\n [K.HOURS]: \"Hours\",\n [K.SECONDS]: \"Seconds\",\n [K.MILL_SECONDS]: \"Millseconds\",\n [K.DAYS]: \"Days\",\n [K.MINUTES]: \"Minutes\",\n [K.TEN_HOURS_TEN_MINUTES_TEST]: \"0.2 Seconds\",\n [K.OO_TWO_ONE_SECONDS]: \"0.021 Seconds\",\n [K.ONE_TWO_SECONDS]: \"1.2 秒\",\n};\n\nexport default locale;\n","import { Locale, K } from \"../constants\";\n\nconst locale: Locale = {\n [K.YESTERDAY]: \"昨天\",\n [K.TODAY]: \"今天\",\n [K.FUTURE_AFTER]: \"{{time}}后\",\n [K.FORMAT_SHORT]: \"MMMD日 ah:mm\",\n [K.FORMAT_SHORT_DAY]: \"MMMD日 HH:mm\",\n [K.MONTHS]: \"个月\",\n [K.HOURS]: \"小时\",\n [K.SECONDS]: \"秒\",\n [K.MILL_SECONDS]: \"毫秒\",\n [K.DAYS]: \"天\",\n [K.MINUTES]: \"分钟\",\n [K.TEN_HOURS_TEN_MINUTES_TEST]: \"0.2 秒\",\n [K.ONE_TWO_SECONDS]: \"1.2 秒\",\n [K.OO_TWO_ONE_SECONDS]: \"0.021 秒\",\n};\n\nexport default locale;\n","import i18next from \"i18next\";\nimport { NS_LIBS_DATETIME } from \"./constants\";\nimport en from \"./locales/en\";\nimport zh from \"./locales/zh\";\n\nexport function addResourceBundle(): void {\n i18next.addResourceBundle(\"en\", NS_LIBS_DATETIME, en);\n i18next.addResourceBundle(\"zh\", NS_LIBS_DATETIME, zh);\n}\n","import moment from \"moment\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_DATETIME, K } from \"./i18n/constants\";\nimport { addResourceBundle } from \"./i18n\";\naddResourceBundle();\n\nconst TIME_OFFSET = 0;\n\nexport enum HumanizeTimeFormat {\n full = \"full\",\n default = \"default\",\n relative = \"relative\",\n future = \"future\",\n accurate = \"accurate\",\n auto = \"auto\",\n}\n\nexport const humanizeTime = (\n time: moment.MomentInput,\n format: HumanizeTimeFormat = HumanizeTimeFormat.auto\n): string | null => {\n if (\n time === undefined ||\n time === null ||\n time === -Infinity ||\n time === Infinity\n ) {\n return null;\n }\n const m = moment(time);\n const now = moment().add(TIME_OFFSET);\n const fFull = \"LL HH:mm\";\n const fMedium = \"LL ah:mm\";\n const fShort = i18n.t(`${NS_LIBS_DATETIME}:${K.FORMAT_SHORT}`);\n const fShort24 = i18n.t(`${NS_LIBS_DATETIME}:${K.FORMAT_SHORT_DAY}`);\n const fDefault = \"LL HH:mm:ss\";\n const fHourMinute = \"HH:mm\";\n let text;\n\n /* 用于精确显示时间的参数\n * 今天与昨天,显示:今天(昨天)x:x的格式,如:今天12:21、昨天16:33\n * 昨天以前的时间,显示:x月x日x时:x分,如:11月23日11:22\n * 今年以前的时间,显示:x年x月x日x时:x分,如:2016年11月11日11:11\n */\n const getAccurateTime = () => {\n const diff = +m.diff(now, \"days\", true).toFixed(1);\n let _text = \"\";\n const retVal =\n m.year() < now.year()\n ? \"lastYear\"\n : diff < -2 || m.isBefore(now.clone().add(-1, \"day\"), \"day\")\n ? \"twoDaysBefore\"\n : m.isSame(now.clone().add(-1, \"day\"), \"day\")\n ? \"yesterday\"\n : m.isSame(now, \"day\")\n ? \"sameDay\"\n : diff < 2 && m.isSame(now.clone().add(1, \"day\"), \"day\")\n ? \"nextDay\"\n : diff < 7\n ? \"nextWeek\"\n : \"default\";\n switch (retVal) {\n case \"sameDay\":\n _text =\n i18n.t(`${NS_LIBS_DATETIME}:${K.TODAY}`) +\n \" \" +\n m.format(fHourMinute);\n break;\n case \"yesterday\":\n _text =\n i18n.t(`${NS_LIBS_DATETIME}:${K.YESTERDAY}`) +\n \" \" +\n m.format(fHourMinute);\n break;\n case \"lastYear\":\n _text = m.format(fFull);\n break;\n case \"twoDaysBefore\":\n _text = m.format(fShort24);\n break;\n default:\n _text = m.format(fFull);\n }\n\n return _text;\n };\n\n switch (format) {\n case HumanizeTimeFormat.full:\n text = m.format(fFull);\n break;\n case HumanizeTimeFormat.default:\n text = m.format(fDefault);\n break;\n case HumanizeTimeFormat.relative:\n text = moment.duration(Math.min(+m - +now, 0)).humanize(true);\n break;\n case HumanizeTimeFormat.future:\n text = i18n.t(`${NS_LIBS_DATETIME}:${K.FUTURE_AFTER}`, {\n time: moment.duration(Math.max(+m - +now, 0)).humanize(),\n });\n break;\n case HumanizeTimeFormat.accurate:\n text = getAccurateTime();\n break;\n default:\n text = m.format(m.year() === now.year() ? fShort : fMedium);\n }\n return text;\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 from \"react\";\nimport { Tooltip } from \"antd\";\nimport { Link, LinkProps, GeneralIcon } from \"@next-libs/basic-components\";\nimport cssStyle from \"./style.module.css\";\nimport { isEmpty } from \"lodash\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport classNames from \"classnames\";\n\nexport interface BrickLinkProps extends Pick<LinkProps, \"replace\" | \"target\"> {\n native?: boolean;\n label?: string;\n url?: string;\n href?: string;\n disabled?: boolean;\n tooltip?: string;\n tooltipProps?: Record<string, any>;\n handleClick?: () => void;\n notToJumpWhenEmpty?: boolean;\n icon?: MenuIcon;\n type?: \"link\" | \"text\";\n iconAlign?: \"left\" | \"right\";\n hideExternalIcon?: boolean;\n underLine?: boolean;\n labelColor?: string;\n}\n\nexport function BrickLink(props: BrickLinkProps): React.ReactElement {\n const {\n native = false,\n label,\n url,\n href,\n tooltip,\n tooltipProps,\n type,\n iconAlign = \"left\",\n ...linkProps\n } = props;\n if (native) {\n // eslint-disable-next-line no-console\n console.warn(\n \"presentational-bricks.brick-link `native` is deprecated, Please use `href` instead\"\n );\n }\n\n const icon = props.icon ? (\n <GeneralIcon\n icon={props.icon}\n style={{\n ...(props.disabled && { color: \"var(--color-disabled-text)\" }),\n ...(label\n ? iconAlign === \"left\"\n ? { marginRight: 6 }\n : { marginLeft: 6 }\n : {}),\n }}\n />\n ) : null;\n\n let link;\n const labelEle = (\n <span\n className={props.underLine ? cssStyle.underLine : null}\n style={{\n borderBottomColor: props.labelColor,\n ...(props.labelColor ? { color: props.labelColor } : {}),\n }}\n >\n {label}\n </span>\n );\n const linkContent =\n iconAlign === \"left\" ? (\n <>\n {icon}\n {labelEle}\n </>\n ) : (\n <>\n {labelEle}\n {icon}\n </>\n );\n\n if (props.disabled) {\n link = <span className={cssStyle.disabledLink}>{linkContent}</span>;\n } else {\n const commonProps = {\n onClick: props.handleClick,\n className: classNames({\n [cssStyle.textLink]: type === \"text\",\n }),\n };\n if (props.notToJumpWhenEmpty && isEmpty(url)) {\n link = <a {...commonProps}>{linkContent}</a>;\n } else {\n link = native ? (\n <a href={url} {...linkProps} {...commonProps}>\n {linkContent}\n </a>\n ) : (\n <Link to={url} href={href} {...linkProps} {...commonProps}>\n {linkContent}\n </Link>\n );\n }\n\n if (props.target === \"_blank\" && !props.hideExternalIcon) {\n link = (\n <span>\n {link}\n <span className={cssStyle.externalIcon}>\n <GeneralIcon icon={{ lib: \"fa\", icon: \"external-link-alt\" }} />\n </span>\n </span>\n );\n }\n }\n\n return tooltip ? (\n <Tooltip {...tooltipProps} title={tooltip}>\n {link}\n </Tooltip>\n ) : (\n link\n );\n}\n","import React from \"react\";\nimport {\n humanizeTime,\n HumanizeTimeFormat,\n costTime,\n} from \"@next-libs/datetime\";\nimport { BrickLink } from \"../brick-link/BrickLink\";\nimport moment from \"moment\";\nimport { isNil } from \"lodash\";\n\ninterface BrickHumanizeTimeProps {\n value: number | string;\n isMicrosecond?: boolean;\n formatter?: HumanizeTimeFormat;\n isCostTime?: boolean;\n inputFormat?: string;\n outputFormat?: string;\n link?: {\n url: string;\n target?: string;\n };\n}\n\nexport function BrickHumanizeTime(\n props: BrickHumanizeTimeProps\n): React.ReactElement {\n const {\n value,\n isMicrosecond,\n inputFormat,\n outputFormat,\n isCostTime,\n formatter,\n link,\n } = props;\n\n if (isNil(value)) {\n return <span>-</span>;\n }\n\n let ts;\n if (typeof value === \"number\") {\n ts = isMicrosecond ? value : Number(value) * 1000;\n } else {\n const time = moment(value, inputFormat);\n ts = time.unix() * 1000;\n }\n\n let label: string;\n if (outputFormat) {\n label = moment(ts).format(outputFormat);\n } else {\n label = isCostTime\n ? costTime(ts)\n : humanizeTime(ts, HumanizeTimeFormat[formatter]);\n }\n\n if (link) {\n return <BrickLink url={link.url} target={link.target} label={label} />;\n }\n\n return <span>{label}</span>;\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isNil, get } from \"lodash\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { HumanizeTimeFormat } from \"@next-libs/datetime\";\nimport { parseTemplate } from \"@next-libs/cmdb-utils\";\nimport { BrickHumanizeTime } from \"./BrickHumanizeTime\";\n\nexport interface LinkInfo {\n detailUrlTemplate: string;\n target?: string;\n}\n\n/**\n * @id presentational-bricks.brick-humanize-time\n * @name presentational-bricks.brick-humanize-time\n * @docKind brick\n * @description 如:3天前、过去2小时等。也可显示消耗时间,如1小时2分钟,也可显示为链接\n * @author ice\n * @slots\n * @history\n * 1.65.0:新属性 `inputFormat` 和 `outputFormat`\n * @memo\n * @noInheritDoc\n */\nexport class BrickHumanizeTimeElement extends UpdatingElement {\n /**\n * @required false\n * @description 时间截,或字符串,当为字符串时,应提供时间格式 `inputFormat`\n * @group basic\n */\n @property({\n attribute: false,\n })\n value: number | string;\n /**\n * @required false\n * @description 字符串的时间格式,如 \"YYYY-MM-DD\", [时间格式参照表](https://dayjs.gitee.io/docs/zh-CN/parse/string-format)\n * @group basic\n */\n @property()\n inputFormat: string;\n\n /**\n * @required false\n * @description 展示时间格式,如 \"YYYY-MM-DD\",当设置该属性时,属性 `formatter` 无效 [时间格式参照表](https://dayjs.gitee.io/docs/zh-CN/parse/string-format)\n * @group basic\n */\n @property()\n outputFormat: string;\n\n /**\n * @required false\n * @default false\n * @description 是否展示为耗费时间,例如:'1 个月 20 天'\n * @group basic\n */\n @property({\n type: Boolean,\n })\n isCostTime: 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 let value = this.value;\n // istanbul ignore else\n if (isNil(this.value) && this.dataSource && this.fields) {\n // eslint-disable-next-line no-console\n console.warn(\n \"`dataSource` and `fields` of `<presentational-bricks.brick-humanize-time>` are deprecated, use `transform` instead.\"\n );\n value = get(this.dataSource, this.fields.value);\n }\n let link: { url: string; target?: string };\n // istanbul ignore next\n if (this.link && this.dataSource) {\n // eslint-disable-next-line no-console\n console.warn(\n \"`dataSource` and `fields` of `<presentational-bricks.brick-humanize-time>` are deprecated, use `transform` instead.\"\n );\n const url = parseTemplate(this.link.detailUrlTemplate, this.dataSource);\n const target = this.link.target;\n link = { url, target };\n }\n ReactDOM.render(\n <BrickWrapper>\n <BrickHumanizeTime\n value={value}\n formatter={this.formatter}\n isMicrosecond={this.isMicrosecond}\n isCostTime={this.isCostTime}\n link={link}\n inputFormat={this.inputFormat}\n outputFormat={this.outputFormat}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n\n /**\n * @required false\n * @description [已废弃]数据来源\n * @deprecated\n * @group other\n */\n @property({\n attribute: false,\n })\n dataSource: Record<string, any>;\n\n /**\n * @required false\n * @description [已废弃]字段映射, 跟 dataSource 一起使用来获得运行时对应字段的值\n * @deprecated\n * @group other\n */\n @property({\n attribute: false,\n })\n fields: { value: string };\n\n /**\n * @kind \"full\" | \"default\" | \"relative\" | \"future\" | \"accurate\" | \"auto\"\n * @required false\n * @description 枚举值:full, default, relative, future, accurate, auto [类型链接](https://github.com/easyops-cn/next-libs/blob/207fe7ee3ac010ab860c23cd062216c8ca612f0c/libs/datetime/src/humanizeTime.ts#L9)\n * @group basic\n */\n @property({\n attribute: false,\n })\n formatter: HumanizeTimeFormat;\n\n /**\n * @required false\n * @default false\n * @description value 值的单位是否为毫秒\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n isMicrosecond: boolean;\n\n /**\n * @required false\n * @description 跳转链接,默认为空\n * @group advanced\n */\n @property({\n attribute: false,\n })\n link: LinkInfo;\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-humanize-time\",\n BrickHumanizeTimeElement\n);\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nimport { Pagination } from \"antd\";\nimport { PaginationProps } from \"antd/lib/pagination\";\nimport style from \"./index.module.css\";\nimport classNames from \"classnames\";\n\ninterface GeneralPaginationProps {\n configProps?: PaginationProps;\n onlyShowTotal?: boolean;\n page: number;\n pageSize: number;\n total: number;\n handleOnChange: (page: number, size: number) => void;\n}\n\nexport function GeneralPagination(\n props: GeneralPaginationProps\n): React.ReactElement {\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n\n const showTotal = (totals: number): React.ReactElement => {\n return (\n <span className={style.totalText}>\n {t(K.PAGINATION_TOTAL_TEXT)}{\" \"}\n <strong className={style.total}>{totals}</strong>{\" \"}\n {t(K.PAGINATION_TOTAL_UNIT)}\n </span>\n );\n };\n\n // 默认分页配置\n const defaultPagination: PaginationProps = {\n showTotal,\n current: props.page ?? 1,\n pageSize: props.pageSize ?? 10,\n total: props.total,\n showSizeChanger: true,\n pageSizeOptions: [\"10\", \"20\", \"50\"],\n onChange: props.handleOnChange,\n };\n\n const configProps = { ...defaultPagination, ...(props.configProps || {}) };\n\n return (\n <Pagination\n {...configProps}\n className={classNames({\n [style.onlyShowTotal]: props.onlyShowTotal,\n })}\n />\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 { GeneralPagination } from \"./GeneralPagination\";\nimport { PaginationProps } from \"antd/lib/pagination\";\nimport { get } from \"lodash\";\nimport { getHistory } from \"@next-core/brick-kit\";\n\n/**\n * @id presentational-bricks.general-pagination\n * @name presentational-bricks.general-pagination\n * @docKind brick\n * @description 通用分页构件\n * @author lynette\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class GeneralPaginationElement extends UpdatingElement {\n /**\n * @detail {page: number}\n * @description 页码变化\n */\n @event({ type: \"page.update\" })\n pageUpdate: EventEmitter<{ page: number }>;\n\n /**\n * @detail {page:1,pageSize:number}\n * @description 每页条数变化\n */\n @event({ type: \"filter.update\" })\n filterUpdate: EventEmitter<{ page: 1; pageSize: 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 private _handleOnChange = (page: number, pageSize: number) => {\n // istanbul ignore else\n if (pageSize !== this.pageSize) {\n this.page = 1;\n this.pageSize = pageSize;\n this.filterUpdate.emit({\n pageSize,\n page: 1,\n });\n } else if (page !== this.page) {\n this.page = page;\n this.pageSize = pageSize;\n this.pageUpdate.emit({ page });\n }\n if (this.shouldUpdateUrlParams) {\n const history = getHistory();\n const urlSearchParams = new URLSearchParams(history.location.search);\n urlSearchParams.set(\"page\", this.page as any);\n urlSearchParams.set(\"pageSize\", this.pageSize as any);\n history.push(`?${urlSearchParams}`, { notify: this.shouldNotify });\n }\n };\n\n protected _render(): void {\n if (this.isConnected) {\n const mutableProps = {\n total: this.total,\n };\n // istanbul ignore next\n if (this.dataSource) {\n const { total } = this.fields;\n if (total) {\n mutableProps.total = get(this.dataSource, this.fields.total);\n }\n }\n ReactDOM.render(\n <BrickWrapper>\n <GeneralPagination\n configProps={this.configProps}\n page={this.page}\n pageSize={this.pageSize}\n total={mutableProps.total}\n handleOnChange={this._handleOnChange}\n onlyShowTotal={this.onlyShowTotal}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n\n /**\n * @kind number\n * @required true\n * @default -\n * @description 页码,一般配置成 \"${query.page=1|number}\"\n */\n @property({\n attribute: false,\n })\n page = 1;\n\n /**\n * @kind number\n * @required true\n * @default -\n * @description 页码条数,一般配置成 \"${query.pageSize=10|number}\"\n */\n @property({\n attribute: false,\n })\n pageSize = 10;\n\n /**\n * @kind number\n * @required false\n * @default -\n * @description 一般来自于 dataSource\n */\n @property({\n attribute: false,\n })\n total: number;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否只显示 total\n */\n @property({\n type: Boolean,\n })\n onlyShowTotal: boolean;\n\n /**\n * @kind Record<string,any>\n * @required false\n * @default -\n * @description [已废弃]数据源,通过 useResolves 从后台接口获取或者直接在 storyboard 中配置,这个分页器主要用来获取 total 数据\n */\n @property({\n attribute: false,\n })\n dataSource: Record<string, any>;\n\n /**\n * @kind object\n * @required false\n * @default -\n * @description ant-design 的 Pagination 相关配置项,具体查阅:[https://ant.design/components/pagination-cn/#API](https://ant.design/components/pagination-cn/#API)\n * @group advanced\n */\n @property({\n attribute: false,\n })\n configProps: PaginationProps;\n\n /**\n * @kind Record<string,any>\n * @required false\n * @default { total: \"total\" }\n * @description [已废弃]指定 total 从哪里来,默认为列表接口返回格式是{list:[],page:1,pageSize:10,total:20},即默认取自 total\n * @deprecated\n * @group advanced\n */\n @property({\n attribute: false,\n })\n fields = {\n total: \"total\",\n };\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否更新 url 参数\n */\n @property({\n attribute: false,\n })\n shouldUpdateUrlParams = true;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否在更新 url 参数时刷新页面, 默认为true\n */\n @property({\n attribute: false,\n })\n shouldNotify = true;\n}\n\ncustomElements.define(\n \"presentational-bricks.general-pagination\",\n GeneralPaginationElement\n);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isNil, get, isEmpty } from \"lodash\";\nimport {\n BrickWrapper,\n UpdatingElement,\n property,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { parseTemplate } from \"@next-libs/cmdb-utils\";\nimport { BrickLink } from \"./BrickLink\";\nimport { MenuIcon } from \"@next-core/brick-types\";\n\n/**\n * @id presentational-bricks.brick-link\n * @name presentational-bricks.brick-link\n * @docKind brick\n * @description 将值渲染成跳转链接,支持url模板配置\n * @author lynette\n * @slots\n * @history\n * 1.169.0:新增属性`type`\n * 1.89.11:使用 `dataSource` 代替之前 `detail`\n * 1.78.0:新增属性`detail`\n * 1.73.0:新增属性`disabled`,`tooltip`,`notToJumpWhenEmpty`,新增事件`link.click`\n * @groupI8N\n * {\n * \"basic\": {\"en\": \"Basic\", \"zh\": \"常用\"},\n * \"ui\": {\"en\": \"UI\", \"zh\": \"外观\"}\n * }\n * @memo\n * @noInheritDoc\n */\nexport class BrickLinkElement extends UpdatingElement {\n /**\n * @kind string\n * @required false\n * @default -\n * @description 链接的文字\n * @group basic\n */\n @property()\n label: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 链接的 URL\n * @group basic\n */\n @property()\n url: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 是否使用原生 <a> 标签,通常用于外链的跳转\n * @group basic\n */\n @property()\n href: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 当将其配置成 `_blank` 时,默认在 label 后添加 external-link-alt icon\n * @group basic\n */\n @property()\n target: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 提示\n * @group basic\n */\n @property()\n tooltip: 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 tooltipProps: Record<string, any>;\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default -\n * @description `link.click` 事件传出的数据, 替代之前的 `detail`\n * @group basic\n */\n @property({\n attribute: false,\n })\n dataSource: Record<string, any>;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description label颜色\n * @group ui\n */\n @property()\n labelColor: string;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 鼠标进入label时显示下划线\n * @group ui\n */\n @property({ type: Boolean })\n underLine: boolean;\n\n /**\n * @kind MenuIcon\n * @required false\n * @default -\n * @description 图标 [MenuIcon](http://docs.developers.easyops.cn/docs/brick-next/icon)\n * @group ui\n */\n @property({\n attribute: false,\n })\n icon: MenuIcon;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否禁用\n * @group basic\n */\n @property({\n type: Boolean,\n })\n disabled: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否隐藏target为_blank时label后的icon\n * @group ui\n */\n @property({\n type: Boolean,\n })\n hideExternalIcon: boolean;\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description url 为空时不跳转,但是会发出`link.click`点击事件\n * @group basic\n */\n @property({\n type: Boolean,\n })\n notToJumpWhenEmpty: boolean;\n\n /**\n * @default link\n * @required false\n * @description 链接类型:默认链接 - link 和 文本链接 - text\n * @group ui\n */\n @property({\n attribute: false,\n })\n type: \"link\" | \"text\" = \"link\";\n\n /**\n * @default left\n * @required false\n * @description 链接图标位置:左边 - left 右边 - right\n * @group ui\n */\n @property({\n attribute: false,\n })\n iconAlign: \"left\" | \"right\" = \"left\";\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description [已废弃]是否使用原生 <a> 标签, 为了跟平台规范一致准备废弃该属性,统一采用 href 属性表示原生标签跳转。\n * @deprecated\n * @group basic\n */\n @property({\n type: Boolean,\n })\n native: boolean;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description [已废弃]链接的文字在数据源上的字段\n * @deprecated\n * @group basic\n */\n @property()\n labelField: string;\n\n /**\n * @kind any\n * @required false\n * @default false\n * @description [已废弃]`link.click`事件的详情\n * @deprecated\n * @group basic\n */\n @property({\n attribute: false,\n })\n detail: any;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description [已废弃]链接的 URL 的模板,可使用 #{a.b} 的标记使用数据源里的属性值\n * @deprecated\n * @group basic\n */\n @property()\n urlTemplate: string;\n\n /**\n * @detail Record<string, any>\n * @description 点击 link 触发的事件,事件 detail 为传入的 dataSource\n */\n @event({ type: \"link.click\", cancelable: true }) linkClick: EventEmitter<any>;\n\n connectedCallback(): void {\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n // istanbul ignore next\n private _handleClick = (): void => {\n // istanbul ignore if\n if (!isEmpty(this.detail)) {\n // eslint-disable-next-line no-console\n console.warn(\n `\\`detail\\` of <presentational-bricks.brick-link> is deprecated, use \\`dataSource\\` instead`\n );\n }\n this.linkClick.emit(this.dataSource ?? this.detail);\n };\n\n protected _render(): void {\n if (this.isConnected) {\n const mutableProps = {\n url: this.url,\n label: this.label,\n };\n // istanbul ignore next\n if (isNil(mutableProps.url) && this.dataSource && this.urlTemplate) {\n mutableProps.url = parseTemplate(this.urlTemplate, this.dataSource);\n }\n // istanbul ignore next\n if (isNil(mutableProps.label) && this.dataSource && this.labelField) {\n mutableProps.label = get(this.dataSource, this.labelField);\n }\n ReactDOM.render(\n <BrickWrapper>\n <BrickLink\n native={this.native}\n label={mutableProps.label}\n url={mutableProps.url}\n target={this.target}\n href={this.href}\n handleClick={this._handleClick}\n disabled={this.disabled}\n tooltip={this.tooltip}\n tooltipProps={this.tooltipProps}\n notToJumpWhenEmpty={this.notToJumpWhenEmpty}\n icon={this.icon}\n type={this.type}\n iconAlign={this.iconAlign}\n hideExternalIcon={this.hideExternalIcon}\n underLine={this.underLine}\n labelColor={this.labelColor}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"presentational-bricks.brick-link\", BrickLinkElement);\n","import { getRuntime, property } from \"@next-core/brick-kit\";\nimport { BreadcrumbItemConf } from \"@next-core/brick-types\";\nimport { parseTemplate } from \"@next-libs/cmdb-utils\";\n\n/**\n * @id presentational-bricks.template-breadcrumb\n * @name presentational-bricks.template-breadcrumb\n * @docKind brick\n * @description\n * @author william\n * @slots\n * @history\n * @memo\n * 在 storyboard 中我们可以很方便的配置面包屑,而且面包屑会自动串联层级。有些时候我们需要在面包屑显示动态的名称,比如模型名称。这时候,我们可以配置面包屑为如下格式:\n *\n * ```json\n * {\n * \"path\": \"${APP.homepage}/:objectId\",\n * \"menu\": {\n * \"breadcrumb\": {\n * \"items\": [\n * {\n * \"text\": \"#{name}\",\n * \"to\": \"${APP.homepage}/${objectId}\"\n * }\n * ]\n * }\n * },\n * \"bricks\": [\n * {\n * \"brick\": \"presentational-bricks.template-breadcrumb\",\n * \"injectDeep\": true,\n * \"lifeCycle\": {\n * \"useResolves\": [\n * {\n * \"provider\": \"providers-of-cmdb\\\\.cmdb-object-api-get-detail\",\n * \"args\": [\"${objectId}\"],\n * \"transform\": {\n * \"dataSource\": {\n * \"name\": \"@{name}\"\n * }\n * }\n * }\n * ]\n * }\n * },\n * ...\n * ]\n * }\n * ```\n *\n * 注意上面示例,我们将`text`标记为`\"#{name}\"`,然后在该路由对应的`bricks[]`配置本构件,在`dataSource`赋值`name`字段即可动态渲染文本。\n *\n * 综上,此构件让面包屑的配置支持`#{variableName}`格式的模板标记,使用`dataSource`上的`variableName`的实际值,并支持`a.b`的多层嵌套。\n * @noInheritDoc\n */\nexport class TemplateBreadcrumbElement extends HTMLElement {\n private _originalBreadcrumbs: BreadcrumbItemConf[];\n private _dataSource: Record<string, any>;\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default -\n * @description 解析模板时的数据源\n */\n @property({\n __unstable_doNotDecorate: true,\n })\n set dataSource(value: Record<string, any>) {\n if (this._dataSource !== value) {\n this._dataSource = value;\n this._updateBreadcrumbs();\n }\n }\n\n connectedCallback(): void {\n const { appBar } = getRuntime();\n\n this.style.display = \"none\";\n this._originalBreadcrumbs = appBar.element.breadcrumb;\n this._updateBreadcrumbs();\n }\n\n private _updateBreadcrumbs(): void {\n // istanbul ignore else\n if (this.isConnected) {\n const { appBar } = getRuntime();\n const breadcrumbs = this._originalBreadcrumbs.map((breadcrumb) => {\n breadcrumb = { ...breadcrumb };\n // 多层template-breadcrumb的时候,需要互不干扰\n // 所以假如解析后的是undefined,则继续保留模板变量\n breadcrumb.text = parseTemplate(\n breadcrumb.text,\n this._dataSource,\n true\n );\n\n if (breadcrumb.to) {\n if (typeof breadcrumb.to === \"string\") {\n breadcrumb.to = parseTemplate(breadcrumb.to, this._dataSource);\n } else {\n breadcrumb.to = { ...breadcrumb.to };\n\n // istanbul ignore else\n if (breadcrumb.to.pathname) {\n breadcrumb.to.pathname = parseTemplate(\n breadcrumb.to.pathname,\n this._dataSource\n );\n }\n\n // istanbul ignore else\n if (breadcrumb.to.search) {\n breadcrumb.to.search = parseTemplate(\n breadcrumb.to.search,\n this._dataSource\n );\n }\n\n // istanbul ignore else\n if (breadcrumb.to.hash) {\n breadcrumb.to.hash = parseTemplate(\n breadcrumb.to.hash,\n this._dataSource\n );\n }\n }\n }\n\n return breadcrumb;\n });\n\n appBar.setBreadcrumb(breadcrumbs);\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.template-breadcrumb\",\n TemplateBreadcrumbElement\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!./BrickInput.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, useMemo } from \"react\";\nimport { SearchOutlined } from \"@ant-design/icons\";\nimport { Input } from \"antd\";\nimport style from \"./BrickInput.module.css\";\nimport { debounce } from \"lodash\";\n\nexport interface BrickInputProps {\n defaultValue?: string;\n value?: string;\n handleValueEmit: any;\n handleValueChange: any;\n placeholder?: string;\n trigger?: \"change\" | \"enter\";\n debounceTime: number;\n}\n\nexport function BrickInput(props: BrickInputProps): React.ReactElement {\n const [inputVal, setInputVal] = useState(props.defaultValue);\n\n const debounceValueEmit = useMemo(\n () =>\n debounce((value: string): void => {\n props.handleValueEmit(value);\n }, props.debounceTime),\n [props.debounceTime]\n );\n\n useEffect(() => {\n props.handleValueChange && props.handleValueChange(props.value);\n setInputVal(props.value);\n }, [props.value]);\n\n const handleChange = ({ target: { value } }: any) => {\n setInputVal(value);\n if (props.trigger !== \"enter\") {\n debounceValueEmit(value);\n }\n props.handleValueChange && props.handleValueChange(value);\n };\n\n const handleValEmit = () => {\n if (props.trigger === \"enter\") {\n props.handleValueEmit(inputVal);\n }\n };\n\n return (\n <div style={{ position: \"relative\" }}>\n <Input\n placeholder={props.placeholder}\n className={style.searchInput}\n value={inputVal}\n onChange={handleChange}\n onPressEnter={handleValEmit}\n ></Input>\n <SearchOutlined className={style.searchIcon} />\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n getHistory,\n UpdatingElement,\n property,\n event,\n EventEmitter,\n BrickWrapper,\n} from \"@next-core/brick-kit\";\nimport { BrickInput } from \"./BrickInput\";\n\n/**\n * @id presentational-bricks.brick-input\n * @name presentational-bricks.brick-input\n * @editor forms.general-input--editor\n * @docKind brick\n * @description 输入框,只发起事件不更新url,注意与brick-general-search的区别\n * @author momo\n * @slots\n * @history\n * 1.58.0:新增 `debounceTime`、`value` 属性和 `input.change` 事件\n * @memo\n * @noInheritDoc\n */\nexport class BrickInputElement extends UpdatingElement {\n /**\n * @detail Record<string,any>\n * @description 事件内容为{q: value},其中 value 为输入的字符\n */\n @event({ type: \"input.emit\", cancelable: true }) inputEmit: EventEmitter<\n Record<string, any>\n >;\n\n /**\n * @detail Record<string,any>\n * @description 当搜索框的值变化时发出的事件,事件内容为{q: value},其中 value 为输入的字符\n */\n @event({ type: \"input.change\" }) inputChange: EventEmitter<\n Record<string, any>\n >;\n\n _defaultValKey: string;\n _defaultValue: 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 /**\n * @kind string\n * @required false\n * @default -\n * @description 指定 key,从 url 获取默认值\n */\n set defaultValKey(value: string) {\n this._defaultValKey = value;\n this.handleDefaultVal(value);\n }\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 输入提示语\n */\n @property()\n placeholder: string;\n\n /**\n * @kind \"change\" | \"enter\"\n * @required false\n * @default change\n * @description 触发方式,可选`change、enter`\n */\n @property({\n attribute: false,\n })\n trigger: \"change\" | \"enter\";\n\n /**\n * @kind string\n * @required false\n * @default \"\"\n * @description 搜索框的值\n */\n @property({\n attribute: false,\n })\n value = \"\";\n\n /**\n * @kind number\n * @required false\n * @default 500\n * @description 默认延迟时间\n */\n @property({\n attribute: false,\n })\n debounceTime = 500;\n\n // istanbul ignore next\n handleDefaultVal = (val: string) => {\n const history = getHistory();\n const urlSearchParams = new URLSearchParams(history.location.search);\n this._defaultValue = urlSearchParams.get(val) || \"\";\n this.value = this._defaultValue;\n this._render();\n };\n\n // istanbul ignore next\n handleValueNotify = (val: string) => {\n this.inputEmit.emit({\n q: val,\n });\n };\n\n // istanbul ignore next\n handleValueChange = (val: string) => {\n this.inputChange.emit({\n q: val,\n });\n this.value = val;\n this._render();\n };\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickInput\n trigger={this.trigger}\n defaultValue={this._defaultValue}\n value={this.value}\n handleValueEmit={this.handleValueNotify}\n handleValueChange={this.handleValueChange}\n placeholder={this.placeholder}\n debounceTime={this.debounceTime}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"presentational-bricks.brick-input\", BrickInputElement);\n","export const NS_CLIPBOARD = \"clipboard\";\n\nexport enum K {\n COPY_SUCCESS = \"COPY_SUCCESS\",\n COPY_FAILED = \"COPY_FAILED\",\n}\n\nexport type Locale = { [key in K]: string };\n","import React, { PropsWithChildren, ReactElement } from \"react\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\nimport { IconProps } from \"@ant-design/compatible/lib/icon\";\nimport { message } from \"antd\";\nimport { useTranslation } from \"react-i18next\";\nimport { NS_CLIPBOARD, K } from \"./i18n/constants\";\n\nexport interface ClipboardProps {\n text: string;\n onCopy?: (text: string, result: boolean) => void;\n icon?: IconProps;\n}\n\nexport const copyToClipboard = (text: string): boolean => {\n let success = false;\n try {\n const listener = (e: ClipboardEvent) => {\n e.stopPropagation();\n const clipboard = e.clipboardData;\n clipboard.clearData();\n clipboard.setData(\"text\", text);\n e.preventDefault();\n };\n\n document.addEventListener(\"copy\", listener);\n success = document.execCommand(\"copy\");\n\n // document.execCommand(\"copy\") only triggers if there is a selection\n // Refs https://bugs.webkit.org/show_bug.cgi?id=156529\n // Ref https://stackoverflow.com/questions/40147676/javascript-copy-to-clipboard-on-safari\n if (!success) {\n const textArea = document.createElement(\"textArea\") as HTMLInputElement;\n textArea.value = text;\n document.body.appendChild(textArea);\n textArea.select();\n success = document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n if (!success) {\n throw new Error(\"copy command was unsuccessful!\");\n }\n document.removeEventListener(\"copy\", listener);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log(\"unable copy to using execCommand\", err);\n\n try {\n // for IE supported only\n (window as any).clipboardData.setData(\"text\", text);\n success = true;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"unable to copy using clipboardData: \", e);\n }\n }\n\n return success;\n};\n\nexport function Clipboard(\n props: PropsWithChildren<ClipboardProps>\n): React.ReactElement {\n const { t } = useTranslation(NS_CLIPBOARD);\n const { onCopy, icon, children, ...restProps } = props;\n const defaultIconProps = {\n theme: \"filled\",\n type: \"copy\",\n };\n\n const onCopyButtonClick = () => {\n const success = copyToClipboard(props.text);\n onCopy\n ? onCopy(props.text, success)\n : success\n ? message.success(t(K.COPY_SUCCESS))\n : message.error(t(K.COPY_FAILED));\n };\n\n return (\n <>\n {!props.children ? (\n <LegacyIcon\n {...Object.assign({}, defaultIconProps, icon)}\n onClick={onCopyButtonClick}\n />\n ) : (\n React.cloneElement(\n React.Children.only(props.children) as ReactElement,\n {\n ...restProps,\n onClick: onCopyButtonClick,\n }\n )\n )}\n </>\n );\n}\n","import {\n handleHttpError,\n UpdatingElement,\n method,\n property,\n} from \"@next-core/brick-kit\";\nimport { message as m } from \"antd\";\nimport { MessageApi } from \"antd/lib/message\";\nimport { copyToClipboard } from \"@next-libs/clipboard\";\nimport i18next from \"i18next\";\nimport { K, NS_PRESENTATIONAL_BRICKS } from \"../i18n/constants\";\n\n/**\n * @id presentational-bricks.brick-utils\n * @name presentational-bricks.brick-utils\n * @docKind brick\n * @description 在构件提供一些常用的工具函数可以直接方便使用\n * @author jo\n * @slots\n * @history\n * 1.74.0:新增方法 `copy`, `copyTargetProperty`\n * @memo\n * @noInheritDoc\n */\nexport class BrickUtilsElement extends UpdatingElement {\n handleHttpError(event: CustomEvent): void {\n // eslint-disable-next-line no-console\n console.warn(\n \"Deprecated, please use action `handleHttpError` provided by next-core instead\"\n );\n handleHttpError(event.detail);\n }\n\n message(method: keyof MessageApi, text: string): void {\n // eslint-disable-next-line no-console\n console.warn(\n \"Deprecated, please use action `message.success/error/info/warn` provided by next-core instead\"\n );\n m[method](text as any);\n }\n /**\n * @required false\n * @description 复制成功/失败时的提示,默认为“复制成功/失败”\n * @group basic\n */\n @property({ attribute: false }) messages: { success: string; error: string };\n /**\n * @params string\n * @description 复制到系统粘贴\n */\n @method()\n copy(text: string): void {\n const success = copyToClipboard(text);\n if (success) {\n m.success(\n this.messages?.success ??\n i18next.t(`${NS_PRESENTATIONAL_BRICKS}:${K.COPIED}`)\n );\n } else {\n m.error(\n this.messages?.error ??\n i18next.t(`${NS_PRESENTATIONAL_BRICKS}:${K.COPY_FAILED}`)\n );\n }\n }\n\n /**\n * @params (target: string, property: string)\n * @description 找到目标 DOM, 复制其属性\n */\n @method()\n copyTargetProperty(target: string, property: string): void {\n const dom = document.querySelector(target) as any;\n let text;\n if (dom) {\n text = dom[property];\n }\n if (text) {\n this.copy(text);\n } else {\n m.warn(i18next.t(`${NS_PRESENTATIONAL_BRICKS}:${K.NO_TEXT_TO_COPY}`));\n }\n }\n\n // istanbul ignore next\n protected _render(): void {\n // do nothing\n }\n}\n\ncustomElements.define(\"presentational-bricks.brick-utils\", BrickUtilsElement);\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, { useMemo } from \"react\";\nimport { Tag, Tooltip } from \"antd\";\nimport { isNil, isEmpty } from \"lodash\";\nimport classNames from \"classnames\";\nimport { GeneralIcon, Link, LinkProps } from \"@next-libs/basic-components\";\nimport { MappingValue } from \"./index\";\nimport { Color } from \"../interfaces/brick-tag\";\nexport { Color } from \"../interfaces/brick-tag\";\nimport cssStyle from \"./style.module.css\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { getRuntime } from \"@next-core/brick-kit\";\n\nexport const circleIcon: MenuIcon = {\n lib: \"fa\",\n icon: \"circle\",\n prefix: \"fas\",\n};\n\ninterface BrickValueMappingProps {\n value: string | number;\n showBg?: boolean;\n mapping: Record<string | number, MappingValue>;\n showTagCircle?: boolean;\n shape?: \"default\" | \"round\";\n link?: LinkProps;\n triggerClickEvent?: boolean;\n isTextEllipsis?: boolean;\n handleClick?: () => void;\n}\n\nfunction getMatch(\n rules: Record<string | number, MappingValue>,\n value: string | number\n): MappingValue {\n let ret: MappingValue = null;\n if (isNil(rules) || isNil(value)) return ret;\n ret = rules[value];\n if (!ret) {\n const entries = Object.entries(rules);\n const valueStr = value.toString();\n for (const [key, rule] of entries) {\n let ok = false;\n try {\n ok = !!valueStr.match(key);\n } catch (err) {\n // eslint-disable-next-line\n console.warn(\"BrickValueMapping:\", err.message);\n continue;\n }\n if (ok) {\n ret = rule;\n break;\n }\n }\n }\n return ret;\n}\n\nexport function BrickValueMapping(\n props: BrickValueMappingProps\n): React.ReactElement {\n const { mapping, value, shape, showTagCircle, link, triggerClickEvent } =\n props;\n const showBg = props.showBg !== false;\n const map = useMemo(() => getMatch(mapping, value), [mapping, value]);\n const match = !!map;\n const color = (match && (Color as any)[map.color]) || \"\";\n const text = (match && map.text) || value;\n\n const render = () => {\n if (match && map.icon) {\n return (\n <span\n className={cssStyle.wrapIconText}\n style={{ color: `var(--theme-${color}-color)` }}\n >\n <span\n style={{ fontSize: map.iconSize, marginRight: map.text ? 8 : 0 }}\n >\n <GeneralIcon icon={map.icon} />\n </span>\n <span>{map.text}</span>\n </span>\n );\n }\n\n if (color === \"\" || !showBg) {\n return <span>{text}</span>;\n }\n\n return (\n <Tooltip placement=\"bottomLeft\" title={props.isTextEllipsis ? text : \"\"}>\n <Tag\n color={color}\n className={classNames(\n cssStyle.customTag,\n cssStyle.colorTag,\n props.isTextEllipsis && cssStyle.textEllipsis,\n {\n [cssStyle.grayTag]: color === \"gray\",\n [cssStyle.grayInverseTag]: color === \"gray-inverse\",\n [cssStyle.round]: shape === \"round\",\n [cssStyle.tagCircleIcon]: showTagCircle,\n }\n )}\n >\n {showTagCircle && (\n <GeneralIcon\n icon={circleIcon}\n style={{\n marginRight: \"8px\",\n marginLeft: 0,\n verticalAlign: \"0.1rem\",\n fontSize: \"6px\",\n }}\n />\n )}\n {text}\n </Tag>\n </Tooltip>\n );\n };\n\n const elem = render();\n const handleClick = (event: React.MouseEvent) => {\n if (triggerClickEvent) {\n event.preventDefault();\n props.handleClick?.();\n }\n };\n\n return isEmpty(link) ? (\n <span\n className={classNames({ [cssStyle.wrapper]: triggerClickEvent })}\n onClick={handleClick}\n >\n {elem}\n </span>\n ) : (\n <Link {...link} onClick={handleClick}>\n {elem}\n </Link>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isNil, get, isEmpty } from \"lodash\";\nimport { Color } from \"../interfaces/brick-tag\";\nimport { LinkProps } from \"@next-libs/basic-components\";\nimport {\n BrickWrapper,\n UpdatingElement,\n property,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { BrickValueMapping } from \"./BrickValueMapping\";\nimport { MenuIcon } from \"@next-core/brick-types\";\n\nexport interface MappingValue {\n /** 展示文本 */\n text?: string;\n /** 标签颜色 */\n color?: Color;\n /**\n * [MenuIcon](http://docs.developers.easyops.cn/docs/brick-next/icon)\n */\n icon?: MenuIcon;\n /** 图标大小 */\n iconSize?: number;\n}\n\n/**\n * @id presentational-bricks.brick-value-mapping\n * @name presentational-bricks.brick-value-mapping\n * @editor shared-editors.general-tag--editor\n * @docKind brick\n * @description 适用于将基本类型的数值转换成有意义的文本进行展示\n * @author ice\n * @slots\n * @history\n * 1.89.11:使用 `dataSource` 代替之前 `data`\n * 1.83.0:新增 `triggerClickEvent`, `link`, `data` 属性\n * 1.65.0:新增属性`shape`,支持大圆角\n * 1.52.0:新增特性,支持正则匹配\n * 1.48.0:新增特性,映射成 icon\n * @memo\n * ## 注意\n * > 如果需要区间的条件规则映射,比如大于、小于等,请使用[条件展示](developers/brick-book/brick/presentational-bricks.brick-conditional-display)\n *\n * ## LinkProps\n * ```typescript\n * interface LinkProps {\n * to?: string;\n * href?: string;\n * innerRef?: string;\n * replace?: boolean;\n * target?: string;\n * }\n * ```\n * ## 映射规则说明\n *\n * 映射支持正则匹配,匹配规则如下:\n *\n * 1. 首先以 `value` 为 key 来获取映射,若成功匹配则使用该规则来展示;若不成功,则走下一步\n * 2. 将 `映射规则` 中的 key 作为正则,来匹配 `value`, 使用成功匹配的第一个规则\n *\n * 例如\n *\n * ```typescript\n * // 以下将展示 `hi`\n * const mapping = { hello: { text: \"hi\" }, \".*\": { text: \"anything else\" } };\n * const value = \"hello\";\n *\n * // 以下将展示 `anything else`\n * const mapping = {\n * www: { text: \"world wide web\" },\n * \".*\": { text: \"anything else\" },\n * };\n * const value = \"hello\";\n * ```\n * @noInheritDoc\n */\nexport class BrickValueMappingElement extends UpdatingElement {\n /**\n * @description 点击事件\n */\n @event({ type: \"brick-value-mapping.click\" })\n valueMappingClick: EventEmitter<{ data: any; value: string | number }>;\n\n /**\n * @description 原始值\n * @group basic\n */\n @property() value?: string | number;\n\n /**\n * @description [已废弃]字段映射, 跟 dataSource 一起使用来获得运行时 value\n * @deprecated\n * @group other\n */\n @property({ attribute: false }) fields?: {\n value: string;\n };\n /**\n * @description 映射规则\n * @group basic\n */\n @property({ attribute: false }) mapping: Record<\n string | number,\n MappingValue\n >;\n /**\n * @description 显示文字旁边的小圈圈,按照平台规范通常表示状态的标签可设置为 true\n * @group basic\n */\n @property({\n type: Boolean,\n })\n showTagCircle?: boolean;\n\n /**\n * @description 替代 `data` 属性,click 事件时传出的数据\n * @group basic\n */\n @property({ attribute: false }) dataSource?: Record<string, any>;\n\n /**\n * @default false\n * @description 是否触发点击事件\n * @group other\n */\n @property({ type: Boolean })\n triggerClickEvent?: boolean;\n\n /**\n * @default false\n * @description 文案是否超出隐藏\n * @group other\n */\n @property({ type: Boolean })\n isTextEllipsis?: boolean;\n\n /**\n * @description 配置跳转链接,在 `triggerClickEvent` 为 false 生效\n * @group other\n */\n @property({ attribute: false })\n link?: LinkProps;\n\n /**\n * @description [已废弃]可用于接收 useBrick 传递过来的数据\n * @deprecated\n * @group other\n */\n @property({ attribute: false })\n data?: any;\n\n connectedCallback(): void {\n this.style.display = this.style.display || \"block\";\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n handleClick = () => {\n // istanbul ignore if\n if (!isEmpty(this.data)) {\n // eslint-disable-next-line no-console\n console.warn(\n \"`data` of `<presentational-bricks.brick-value-mapping>` are deprecated, use `dataSource` instead.\"\n );\n }\n this.valueMappingClick.emit({\n data: !isEmpty(this.dataSource) ? this.dataSource : this.data,\n value: this.value,\n });\n };\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n const mutableProps = {\n value: this.value,\n };\n // istanbul ignore else\n if (isNil(this.value) && this.dataSource && this.fields) {\n mutableProps.value = get(this.dataSource, this.fields.value);\n }\n ReactDOM.render(\n <BrickWrapper>\n <BrickValueMapping\n value={mutableProps.value}\n mapping={this.mapping}\n showTagCircle={this.showTagCircle}\n shape=\"default\"\n triggerClickEvent={this.triggerClickEvent}\n link={this.link}\n isTextEllipsis={this.isTextEllipsis}\n handleClick={this.handleClick}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-value-mapping\",\n BrickValueMappingElement\n);\n","import React from \"react\";\n\nimport {\n BrickValueMapping,\n Color,\n MappingValue\n} from \"../brick-value-mapping/BrickValueMapping\";\n\nconst mapping: { [key: string]: MappingValue } = {\n \"-1\": {\n text: \"无\",\n color: Color.gray\n },\n \"0\": {\n text: \"开发\",\n color: Color.purple\n },\n \"1\": {\n text: \"测试\",\n color: Color.green\n },\n \"2\": {\n text: \"生产\",\n color: Color.blue\n },\n \"3\": {\n text: \"预发布\",\n color: Color.cyan\n }\n};\n\ninterface BrickClusterTypeProps {\n objectId?: string;\n value: \"-1\" | \"0\" | \"1\" | \"2\" | \"3\";\n showBg?: boolean;\n}\n\nexport function BrickClusterType(\n props: BrickClusterTypeProps\n): React.ReactElement {\n if (!props.objectId || props.objectId === \"CLUSTER\") {\n return (\n <BrickValueMapping\n value={props.value}\n mapping={mapping}\n showBg={props.showBg}\n />\n );\n } else {\n return <div>{props.value}</div>;\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { get, isNil } from \"lodash\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { BrickClusterType } from \"./BrickClusterType\";\n\nexport type ClusterType = \"-1\" | \"0\" | \"1\" | \"2\" | \"3\";\n\n/**\n * @id presentational-bricks.brick-cluster-type\n * @name presentational-bricks.brick-cluster-type\n * @docKind brick\n * @description 集群类型专用展示:开发、测试、预发布、生产\n * @author ice\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class BrickClusterTypeElement extends UpdatingElement {\n /**\n * @kind string\n * @required false\n * @default -\n * @description objectId\n */\n @property({ attribute: false })\n objectId: string;\n\n /**\n * @kind ClusterType\n * @required true\n * @default -\n * @description 集群类型: '-1' - 无, 0' - 开发, '1' - 测试, '2' - 生产, '3' - 预发布\n */\n @property({ attribute: false })\n value: ClusterType;\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default -\n * @description [已废弃]数据来源\n */\n @property({\n attribute: false,\n })\n dataSource: Record<string, any>;\n\n /**\n * @kind { value: string }\n * @required false\n * @default -\n * @description [已废弃]字段映射, 跟 dataSource 一起使用来获得运行时 value\n */\n @property({\n attribute: false,\n })\n fields: { value: string };\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示背景\n */\n @property({ attribute: false })\n showBg = true;\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 const value =\n isNil(this.value) && this.dataSource && this.fields\n ? get(this.dataSource, this.fields.value)\n : this.value;\n\n ReactDOM.render(\n <BrickWrapper>\n <BrickClusterType\n objectId={this.objectId}\n value={value}\n showBg={this.showBg}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-cluster-type\",\n BrickClusterTypeElement\n);\n","import React from \"react\";\n\nimport {\n BrickValueMapping,\n MappingValue,\n Color,\n} from \"../brick-value-mapping/BrickValueMapping\";\nimport { AlertLevel } from \"./index\";\n\nconst mapping: { [key: string]: MappingValue } = {\n 0: {\n text: \"通知\",\n color: Color.blue,\n },\n 1: {\n text: \"警告\",\n color: Color.orange,\n },\n 2: {\n text: \"紧急\",\n color: Color.red,\n },\n info: {\n text: \"通知\",\n color: Color.blue,\n },\n warning: {\n text: \"警告\",\n color: Color.orange,\n },\n critical: {\n text: \"紧急\",\n color: Color.red,\n },\n};\n\ninterface BrickAlertLevelProps {\n value: AlertLevel;\n}\n\nexport function BrickAlertLevel(\n props: BrickAlertLevelProps\n): React.ReactElement {\n return (\n <BrickValueMapping\n value={props.value}\n mapping={mapping}\n ></BrickValueMapping>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isNil, get } from \"lodash\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { BrickAlertLevel } from \"./BrickAlertLevel\";\n\nexport type AlertLevel = 0 | 1 | 2 | \"info\" | \"warning\" | \"critical\";\n\n/**\n * @id presentational-bricks.brick-alert-level\n * @name presentational-bricks.brick-alert-level\n * @docKind brick\n * @description 将数值渲染成通用告警等级显示方式\n * @author ice\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class BrickAlertLevelElement extends UpdatingElement {\n /**\n * @kind AlertLevel\n * @required false\n * @default -\n * @description 告警等级: 0 - 通知, 1 - 警告, 2 - 紧急\n */\n @property({\n attribute: false,\n })\n value: AlertLevel;\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default -\n * @description [已废弃]数据来源\n */\n @property({\n attribute: false,\n })\n dataSource: Record<string, any>;\n\n /**\n * @kind { value: string }\n * @required false\n * @default -\n * @description [已废弃]字段映射, 跟 dataSource 一起使用来获得运行时 value\n */\n @property({\n attribute: false,\n })\n fields: { value: 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 if (this.isConnected) {\n const mutableProps = {\n value: this.value,\n };\n if (isNil(this.value) && this.dataSource && this.fields) {\n mutableProps.value = get(this.dataSource, this.fields.value);\n }\n ReactDOM.render(\n <BrickWrapper>\n <BrickAlertLevel value={mutableProps.value} />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-alert-level\",\n BrickAlertLevelElement\n);\n","import React from \"react\";\nimport { get, find } from \"lodash\";\n\nimport { MonitorModels } from \"@next-sdk/monitor-sdk\";\n\ninterface BrickAlertValueProps {\n alertEvent: MonitorModels.ModelAlertEvent;\n}\n\nfunction computeAlertValue(alertEvent: MonitorModels.ModelAlertEvent): string {\n const unit = get(alertEvent, \"alert_conditions.unit\", \"\");\n const comparator = get(\n find(get(alertEvent, \"alert_conditions.comparators\", []), {\n level: alertEvent.level\n }),\n \"type\"\n );\n\n const compareMapping: any = {\n bigger_than: \"↑\",\n smaller_than: \"↓\"\n };\n const map: string = compareMapping[comparator]\n ? compareMapping[comparator]\n : \"\";\n\n if (typeof alertEvent.value !== \"number\") {\n return alertEvent.value;\n }\n\n return (\n (Number.isInteger(alertEvent.value)\n ? alertEvent.value\n : alertEvent.value.toFixed(2)) +\n unit +\n \" \" +\n map\n );\n}\n\nexport function BrickAlertValue(\n props: BrickAlertValueProps\n): React.ReactElement {\n const alertValue = computeAlertValue(props.alertEvent);\n\n return <span>{alertValue}</span>;\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { MonitorModels } from \"@next-sdk/monitor-sdk\";\nimport { BrickAlertValue } from \"./BrickAlertValue\";\n\n/**\n * @id presentational-bricks.brick-alert-value\n * @name presentational-bricks.brick-alert-value\n * @docKind brick\n * @description 将告警数值组合触发条件,显示成 90%↑ 的模式\n * @author ice\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class BrickAlertValueElement extends UpdatingElement {\n /**\n * @kind monitor-sdk/MonitorModels.ModelAlertEvent\n * @required true\n * @default -\n * @description 告警事件\n */\n @property({\n attribute: false,\n })\n dataSource: MonitorModels.ModelAlertEvent;\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 <BrickAlertValue alertEvent={this.dataSource} />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-alert-value\",\n BrickAlertValueElement\n);\n","import React from \"react\";\nimport { get, isObject } from \"lodash\";\nimport { useTranslation } from \"react-i18next\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nimport { FieldToDisplay } from \"./index\";\n\ninterface BrickDisplayStructsProps {\n // object or array\n value: any;\n displayType: \"stringify\" | FieldToDisplay;\n emptyText: string;\n}\n\nfunction stringify(value: any): string {\n return JSON.stringify(value);\n}\n\nfunction partField(\n value: any,\n displayType: FieldToDisplay,\n emptyText: string,\n error: string\n): string {\n let result = \"\";\n\n if (value === undefined) {\n return emptyText || error;\n } else if (Array.isArray(value)) {\n result = value\n .map((item) => {\n return displayType.field\n ? get(item, displayType.field, error)\n : isObject(item)\n ? stringify(item)\n : item;\n })\n .join(displayType.separator);\n } else {\n result = get(value, displayType.field, error);\n }\n\n return result;\n}\n\nexport function BrickDisplayStructs(\n props: BrickDisplayStructsProps\n): React.ReactElement {\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n const error = t(K.UNKNOWN_ERROR);\n\n const text =\n props.displayType === \"stringify\"\n ? stringify(props.value)\n : partField(props.value, props.displayType, props.emptyText, error);\n\n return <span>{text}</span>;\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { get } from \"lodash\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { BrickDisplayStructs } from \"./BrickDisplayStructs\";\n\nexport interface FieldToDisplay {\n field?: string;\n separator: string;\n}\n\n/**\n * @id presentational-bricks.brick-display-structs\n * @name presentational-bricks.brick-display-structs\n * @docKind brick\n * @description 可将结构体(数组)数据以字符串的形式展示,或只展示其中的一个字段\n * @author ice\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class BrickDisplayStructsElement extends UpdatingElement {\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 const mutableProps = {\n value: this.value,\n };\n if (this.dataSource && this.fields) {\n mutableProps.value = get(this.dataSource, this.fields.value);\n }\n ReactDOM.render(\n <BrickWrapper>\n <BrickDisplayStructs\n value={mutableProps.value}\n displayType={this.displayType}\n emptyText={this.emptyText}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default -\n * @description [已废弃]数据来源\n */\n @property({\n attribute: false,\n })\n dataSource: Record<string, any>;\n\n /**\n * @kind { value: string }\n * @required false\n * @default -\n * @description 字[已废弃]段映射, 跟 dataSource 一起使用来获得运行时 value\n */\n @property({\n attribute: false,\n })\n fields: { value: string };\n\n /**\n * @kind 结构体或数组\n * @required false\n * @default -\n * @description 要展示的值\n */\n @property({\n attribute: false,\n })\n value: any;\n\n /**\n * @kind 'stringify' | FieldToDisplay\n * @required true\n * @default -\n * @description 展示类型, 定义类型如下\n */\n @property({\n attribute: false,\n })\n displayType: \"stringify\" | FieldToDisplay;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 空文案\n */\n @property({\n attribute: false,\n })\n emptyText = \"\";\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-display-structs\",\n BrickDisplayStructsElement\n);\n","export enum LogicalOperator {\n and = \"$and\",\n or = \"$or\"\n}\n\nexport enum ConditionOperator {\n eq = \"$eq\",\n ne = \"$ne\",\n gt = \"$gt\",\n gte = \"$gte\",\n lt = \"$lt\",\n lte = \"$lte\"\n}\n","import { keys, some, every } from \"lodash\";\nimport { isObject } from \"@next-core/brick-utils\";\n\nimport { ConditionOperator, LogicalOperator } from \"./constants\";\n\nconst compareFuncMap: {\n [conditionOperator in ConditionOperator]: (\n value1: any,\n value2: any\n ) => boolean;\n} = {\n [ConditionOperator.eq]: (value1: any, value2: any) => value1 === value2,\n [ConditionOperator.ne]: (value1: any, value2: any) => value1 !== value2,\n [ConditionOperator.lt]: (value1: any, value2: any) => value1 < value2,\n [ConditionOperator.lte]: (value1: any, value2: any) => value1 <= value2,\n [ConditionOperator.gt]: (value1: any, value2: any) => value1 > value2,\n [ConditionOperator.gte]: (value1: any, value2: any) => value1 >= value2,\n};\n\nexport type DataType = boolean | number | string | Record<string, any>;\n\nexport type ConditionType =\n | boolean\n | number\n | string\n | Record<string | ConditionOperator, any>\n | LogicalCondition;\nexport interface LogicalCondition\n extends Record<string | LogicalOperator, ConditionType[]> {}\n\nexport const isConditionSatisfied = (\n data: DataType,\n condition: ConditionType\n): boolean => {\n const checkConditionSatisfied = (\n data: DataType,\n condition: ConditionType\n ): boolean => {\n try {\n if (!isObject(condition)) {\n return compareFuncMap[ConditionOperator.eq](data, condition);\n }\n\n return every(keys(condition), (key: string) => {\n if (key === LogicalOperator.and) {\n return every(\n condition[LogicalOperator.and],\n (logicalStatement: any) =>\n checkConditionSatisfied(data, logicalStatement)\n );\n }\n\n if (key === LogicalOperator.or) {\n return some(condition[LogicalOperator.or], (logicalStatement: any) =>\n checkConditionSatisfied(data, logicalStatement)\n );\n }\n\n if (!isObject(data)) {\n if (compareFuncMap[key as ConditionOperator] !== undefined) {\n return compareFuncMap[key as ConditionOperator](\n data,\n condition[key]\n );\n } else {\n return false;\n }\n }\n\n if (!isObject(condition[key])) {\n return compareFuncMap[ConditionOperator.eq](\n data[key],\n condition[key]\n );\n }\n\n return every(\n keys(condition[key]),\n (conditionOperator: ConditionOperator) => {\n if (compareFuncMap[conditionOperator] !== undefined) {\n return compareFuncMap[conditionOperator as ConditionOperator](\n data[key],\n condition[key][conditionOperator]\n );\n }\n return true;\n }\n );\n });\n } catch (error) {\n return false;\n }\n };\n\n return checkConditionSatisfied(data, condition);\n};\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isObject, get } from \"lodash\";\nimport { ConditionType } from \"@next-libs/cmdb-utils\";\n\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\n\nimport {\n BrickConditionalDisplay,\n DisplayType,\n} from \"./BrickConditionalDisplay\";\n\nexport interface RuleProps {\n condition: ConditionType;\n style?: {\n color?: string;\n backgroundColor?: string;\n borderColor?: string;\n };\n label?: string;\n}\nexport type DataType = string | number | Record<string, any>;\n\nexport enum ConditionOperator {\n eq = \"$eq\",\n ne = \"$ne\",\n gt = \"$gt\",\n gte = \"$gte\",\n lt = \"$lt\",\n lte = \"$lte\",\n}\n\nexport enum LogicalOperator {\n and = \"$and\",\n or = \"$or\",\n}\n\n// export type ConditionType =\n// | boolean\n// | number\n// | string\n// | Record<string | ConditionOperator, any>\n// | LogicalCondition;\n\nexport interface LogicalCondition\n extends Record<string | LogicalOperator, ConditionType[]> {}\n\n/**\n * @id presentational-bricks.brick-conditional-display\n * @name presentational-bricks.brick-conditional-display\n * @docKind brick\n * @description 按不同条件渲染,比如告警数为0是绿色,大于1时显示黄色\n * @author cyril\n * @slots\n * @history\n * @memo\n * 这个构件的配置相对复杂,适用于区间的条件规则,比如大于、小于等,如果是一些明确的值映射,请使用[基本数值映射](developers/brick-book/brick/presentational-bricks.brick-value-mapping)\n * ```typescript\n * enum ConditionOperator {\n * eq = \"$eq\",\n * ne = \"$ne\",\n * gt = \"$gt\",\n * gte = \"$gte\",\n * lt = \"$lt\",\n * lte = \"$lte\",\n * }\n *\n * enum LogicalOperator {\n * and = \"$and\",\n * or = \"$or\",\n * }\n *\n * type ConditionType =\n * | boolean\n * | number\n * | string\n * | Record<string | ConditionOperator, any>\n * | LogicalCondition;\n *\n * interface LogicalCondition\n * extends Record<string | LogicalOperator, ConditionType[]> {}\n * ```\n *\n * @noInheritDoc\n */\nexport class BrickConditionalDisplayElement extends UpdatingElement {\n /**\n * @required false\n * @description 展示规则, 具体请查看[Mongodb条件操作符](https://www.mongodb.com/docs/manual/reference/operator/query/)\n * @group basic\n */\n @property({\n attribute: false,\n })\n rules: RuleProps[] = [];\n\n /**\n * @required false\n * @description [已废弃]显示的字段值,支持通过 path 指定\n * @deprecated\n * @group other\n */\n @property({\n attribute: false,\n })\n fields: { value: string };\n\n /**\n * @required true\n * @description 数据\n * @group basic\n */\n @property({\n attribute: false,\n })\n dataSource: DataType;\n\n /**\n * @kind \"default\" | \"label\"\n * @required false\n * @default \"label\"\n * @description 展示类型,label 表示通过标签的风格展示相关内容,default 表示默认的风格展示(display: block)\n * @group basic\n */\n @property({\n attribute: false,\n })\n type: DisplayType = \"label\";\n\n connectedCallback(): void {\n this.style.display = this.style.display || \"block\";\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 value =\n isObject(this.dataSource) && this.fields\n ? get(this.dataSource, this.fields.value)\n : this.dataSource;\n ReactDOM.render(\n <BrickWrapper>\n <BrickConditionalDisplay\n data={this.dataSource}\n value={value}\n rules={this.rules}\n type={this.type}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-conditional-display\",\n BrickConditionalDisplayElement\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 from \"react\";\nimport { merge } from \"lodash\";\n\nimport { DataType, isConditionSatisfied } from \"@next-libs/cmdb-utils\";\nimport { RuleProps } from \"./index\";\nimport cssStyle from \"./style.module.css\";\n\nexport type DisplayType = \"label\" | \"default\";\n\nexport interface BrickConditionalDisplayProps {\n data: DataType;\n value: number | string;\n rules: RuleProps[];\n type: DisplayType;\n}\n\nexport function BrickConditionalDisplay(\n props: BrickConditionalDisplayProps\n): React.ReactElement {\n const renderDisplay = (\n data: DataType,\n value: number | string,\n rules: RuleProps[]\n ) => {\n if (data === null) {\n return <span className={cssStyle.error}>参数“dataSource”为空</span>;\n } else {\n let display = <div className={cssStyle[props.type]}>{value}</div>;\n rules.forEach((rule) => {\n if (isConditionSatisfied(data, rule.condition)) {\n const style = merge(\n {\n backgroundColor: \"rgba(47, 194, 91, 1)\",\n color: \"rgba(255, 255, 255, 1)\",\n borderColor: \"rgba(47, 194, 91, 1)\",\n },\n rule.style\n );\n\n display = (\n <div\n className={cssStyle[props.type]}\n style={{\n borderColor: style.borderColor,\n background: style.backgroundColor,\n color: style.color,\n }}\n >\n {rule.label || value}\n </div>\n );\n }\n });\n return display;\n }\n };\n\n return renderDisplay(props.data, props.value, props.rules);\n}\n","import React from \"react\";\nimport { PlayCircleOutlined } from \"@ant-design/icons\";\nimport { Button } from \"antd\";\n\nimport { useTranslation } from \"react-i18next\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\n\ninterface BrickCollectionInstanceExecutionProps {\n ids: string[];\n onClick: () => void;\n}\n\nexport function BrickCollectionInstanceExecution(\n props: BrickCollectionInstanceExecutionProps\n): React.ReactElement {\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n const buttonText = t(K.COLLECTION_INSTANCE_EXECUTE);\n\n return (\n <Button disabled={props.ids.length === 0} onClick={props.onClick}>\n <PlayCircleOutlined /> {buttonText}\n </Button>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport { BrickWrapper } from \"@next-core/brick-kit\";\n\nimport { BrickCollectionInstanceExecution } from \"./BrickCollectionInstanceExecution\";\n\nclass BrickCollectionInstanceExecutionElement extends HTMLElement {\n private _ids: 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 private _handleClick = () => {\n this.dispatchEvent(\n new CustomEvent(\"collection-instance-execution.click\", {\n detail: {\n collectionInstanceIds: this._ids\n }\n })\n );\n };\n\n updateSelectedCollectionInstances(event: CustomEvent) {\n this._ids = event.detail;\n this._render();\n }\n\n private _render(): void {\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickCollectionInstanceExecution\n ids={this._ids}\n onClick={this._handleClick}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-collection-instance-execution\",\n BrickCollectionInstanceExecutionElement\n);\n","import React from \"react\";\nimport {\n RuleProps,\n BrickConditionalDisplay,\n} from \"../brick-conditional-display/BrickConditionalDisplay\";\n\ninterface BrickAlertNumberProps {\n alertNumber: number;\n}\n\nconst rules: RuleProps[] = [\n {\n condition: { $eq: 0 },\n style: {\n backgroundColor: \"var(--color-success)\",\n color: \"white\",\n },\n },\n {\n condition: { $gte: 1 },\n style: {\n backgroundColor: \"var(--color-warning)\",\n color: \"white\",\n },\n },\n];\n\nexport function BrickAlertNumber(\n props: BrickAlertNumberProps\n): React.ReactElement {\n return (\n <BrickConditionalDisplay\n data={props.alertNumber}\n value={props.alertNumber}\n rules={rules}\n type={null}\n />\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { BrickAlertNumber } from \"./BrickAlertNumber\";\n\n/**\n * @id presentational-bricks.brick-alert-number\n * @name presentational-bricks.brick-alert-number\n * @docKind brick\n * @description 数值 0 将带有绿色背景,1 带有黄色背景\n * @author ice\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class BrickAlertNumberElement extends UpdatingElement {\n /**\n * @kind number\n * @required true\n * @default -\n * @description 告警数量\n */\n @property({\n attribute: false,\n })\n value: 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 if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickAlertNumber alertNumber={this.value} />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-alert-number\",\n BrickAlertNumberElement\n);\n","import { http, HttpOptions } from \"@next-core/brick-http\";\nimport { ResponseBodyWrapper } from \"../../../wrapper\";\n\nexport interface UserAdminApi_SearchAllUsersInfoRequestBody {\n /** e.g.: { name: { $like: '%q%' } }, { $or: [{ name: { $like: '%q%' }}] } */\n query?: Record<string, any>;\n\n /** e.g.: { instanceId: true, name: true } */\n fields: Record<string, any>;\n\n /** 按字段排序, 留空默认按照实例ID降序排序(1表示升序, -1表示降序) e.g.: { instanceId: 1 } */\n sort?: Record<string, any>;\n}\n\nexport interface UserAdminApi_SearchAllUsersInfoResponseBody {\n /** 用户列表 */\n list?: Record<string, any>[];\n}\n\n/**\n * @description 搜索所有用户信息列表\n * @endpoint POST /api/v1/users/all\n */\nexport const UserAdminApi_searchAllUsersInfo = async (\n data: UserAdminApi_SearchAllUsersInfoRequestBody,\n options?: HttpOptions\n): Promise<UserAdminApi_SearchAllUsersInfoResponseBody> =>\n /**! @contract easyops.api.user_service.user_admin.SearchAllUsersInfo@1.0.0 */ (\n await http.post<\n ResponseBodyWrapper<UserAdminApi_SearchAllUsersInfoResponseBody>\n >(\n \"api/gateway/user_service.user_admin.SearchAllUsersInfo/api/v1/users/all\",\n data,\n options\n )\n ).data;\n","import { UserInfo } from \"@next-core/brick-types\";\nimport { makeThrottledAggregation } from \"@next-core/brick-utils\";\nimport {\n UserAdminApi_searchAllUsersInfo,\n type UserAdminApi_SearchAllUsersInfoResponseBody,\n} from \"@next-sdk/user-service-sdk\";\nimport { useEffect, useState } from \"react\";\n\nconst getUserInfoByNameOrInstanceId = makeThrottledAggregation(\n \"getUserInfoByNameOrInstanceId\",\n (ids: string[]) =>\n UserAdminApi_searchAllUsersInfo({\n query: {\n $or: [\n {\n name: {\n $in: ids,\n },\n },\n {\n instanceId: {\n $in: ids,\n },\n },\n ],\n },\n fields: {\n name: true,\n nickname: true,\n user_email: true,\n user_tel: true,\n user_icon: true,\n user_memo: true,\n \"#showKey\": true,\n },\n }),\n ({ list }: UserAdminApi_SearchAllUsersInfoResponseBody, id: string) =>\n list.find(\n (item) => item.instanceId === id || item.name === id\n ) as UserInfo & { showKey: string[] }\n);\ntype UseUserInfoByNameOrInstanceIdReturn = {\n user: UserInfo;\n loading: boolean;\n};\nexport function useUserInfoByNameOrInstanceId(\n nameOrInstanceId: string\n): UseUserInfoByNameOrInstanceIdReturn {\n const [user, setUser] = useState<UserInfo & { showKey: string[] }>(null);\n const [loading, setLoading] = useState(false);\n useEffect(() => {\n setUser(null);\n if (!nameOrInstanceId) {\n return;\n }\n let isSubscribed = true;\n setLoading(true);\n getUserInfoByNameOrInstanceId(nameOrInstanceId)\n .then(\n (userInfo) => {\n if (isSubscribed) {\n setUser(userInfo);\n }\n },\n (err) => {\n // eslint-disable-next-line no-console\n console.error(\"Load user info failed:\", err);\n }\n )\n .finally(() => {\n setLoading(false);\n });\n return () => {\n isSubscribed = false;\n };\n }, [nameOrInstanceId]);\n\n return {\n user,\n loading,\n };\n}\n","import { Avatar as AAvatar, AvatarProps } from \"antd\";\nimport React, { ReactElement, useMemo, useRef, useState } from \"react\";\nimport { UserInfo } from \"@next-core/brick-types\";\nimport { useUserInfoByNameOrInstanceId } from \"../useUserInfoByNameOrInstanceId/useUserInfoByNameOrInstanceId\";\n\ntype UseAvatarConfig = AvatarProps;\ntype useAvatarReturnType = {\n user: UserInfo;\n loading: boolean;\n Avatar: ReactElement<AvatarProps, typeof AAvatar>;\n updateConfig: (config: UseAvatarConfig) => void;\n};\n\n/**\n *\n * @param nameOrInstanceId\n * @param config\n * @return useAvatarReturnType\n * @example\n * function Todo () {\n * const {Avatar, loading, user, updateConfig} = useAvatar(\"fakeName\")\n *\n * return (\n * <div>\n * {Avatar}\n * </div>\n * )\n * }\n */\nexport const getAvatar = (user: UserInfo, conf: UseAvatarConfig = {}) => (\n <AAvatar\n src={user?.user_icon}\n style={{\n backgroundColor: user?.user_icon ? undefined : \"rgb(0, 113, 235)\",\n }}\n {...conf}\n >\n {(user?.name || \"\")?.slice(0, 2)}\n </AAvatar>\n);\n\nexport default function useAvatar(\n nameOrInstanceId: string,\n config: UseAvatarConfig = {}\n): useAvatarReturnType {\n const [conf, setConf] = useState(config);\n const { user, loading } = useUserInfoByNameOrInstanceId(nameOrInstanceId);\n const updateConfig = (config: UseAvatarConfig) => {\n setConf({ ...conf, ...config });\n };\n const Avatar = useMemo(() => {\n return getAvatar(user, conf);\n }, [user, conf]);\n\n return {\n Avatar,\n user,\n loading,\n updateConfig,\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!./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 from \"react\";\nimport classNames from \"classnames\";\nimport { Tooltip } from \"antd\";\nimport { useAvatar } from \"@next-libs/hooks\";\n\nimport cssStyle from \"./style.module.css\";\n\ninterface BrickUserProps {\n userNameOrId: string;\n shape?: \"circle\" | \"square\";\n size?: \"large\" | \"small\" | \"default\" | number;\n iconUrl?: string;\n hideAvatar?: boolean;\n hideUsername?: boolean;\n showNicknameOrUsername?: boolean;\n displayShowKey?: boolean;\n iconMargin?: string | number;\n customTooltip?: string;\n}\n\nexport function BrickUser(props: BrickUserProps): React.ReactElement {\n const [avatarSrc, setAvatarSrc] = React.useState<string>();\n const [userName, setUserName] = React.useState(props.userNameOrId);\n const [nickName, setNickName] = React.useState(\"\");\n const [showKey, setShowKey] = React.useState<string>();\n const {\n Avatar,\n user: userInfo,\n updateConfig,\n } = useAvatar(props.userNameOrId);\n\n React.useEffect(() => {\n if (userInfo) {\n setUserName(userInfo.name);\n setNickName(userInfo.nickname);\n if ((userInfo as any)[\"#showKey\"]?.length) {\n const [name, showKey] = (userInfo as any)[\"#showKey\"] as [\n string,\n string | undefined\n ];\n setShowKey(showKey ? `${name}(${showKey})` : `${name}`);\n }\n } else {\n setUserName(props.userNameOrId);\n }\n }, [props.userNameOrId, userInfo]);\n\n React.useEffect(() => {\n if (props.iconUrl) {\n setAvatarSrc(props.iconUrl);\n } else {\n setAvatarSrc(userInfo?.user_icon);\n }\n }, [props.iconUrl, userInfo]);\n\n React.useEffect(() => {\n const { shape, size, iconMargin } = props;\n const conf = {\n shape,\n size,\n style: {\n backgroundColor: avatarSrc ? undefined : \"rgb(0, 113, 235)\",\n margin: iconMargin,\n },\n src: avatarSrc,\n };\n updateConfig(conf);\n }, [props.shape, props.size, props.iconMargin, avatarSrc]);\n\n if (!props.userNameOrId) return null;\n\n const name = props.showNicknameOrUsername\n ? nickName\n ? nickName\n : userName\n : userName;\n\n const tooltip = props.customTooltip\n ? props.customTooltip.replace(\"#{name}\", name)\n : name;\n\n return (\n <Tooltip title={tooltip} placement=\"topLeft\">\n <span className={cssStyle.user}>\n {!props.hideAvatar && Avatar}\n {!props.hideUsername && (\n <span data-testid=\"username\">\n {props?.displayShowKey ? showKey : name}\n </span>\n )}\n </span>\n </Tooltip>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { BrickUser } from \"./BrickUser\";\n\n/**\n * @id presentational-bricks.brick-user\n * @name presentational-bricks.brick-user\n * @docKind brick\n * @description 展示用户头像加用户名\n * @author ice\n * @slots\n * @history\n * 1.152.0:新属性 `shwNickname`\n * 1.62.0:新属性 `userNameOrId`\n * 1.47.0:新属性 `size`, `shape`\n * @memo\n * @noInheritDoc\n */\nexport class BrickUserElement extends UpdatingElement {\n /**\n * @kind string\n * @required true\n * @default -\n * @deprecated\n * @description [已废弃]用户名 (废弃属性,请使用 `userNameOrId`)\n */\n @property()\n username: string;\n\n /**\n * @kind string\n * @required true\n * @default -\n * @description 用户名或用户 instanceId\n * @group basic\n */\n @property({ attribute: false })\n userNameOrId: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 用户头像 url\n * @group ui\n */\n @property()\n iconUrl: string;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否隐藏头像\n * @group basic\n */\n @property({ type: Boolean })\n hideAvatar: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否隐藏用户名\n * @group basic\n */\n @property({ type: Boolean })\n hideUsername: boolean;\n\n /**\n * @kind \"large\" | \"small\" | \"default\"\n * @required false\n * @default \"default\"\n * @description 设置头像的大小\n * @enums \"large\"|\"small\"|\"default\"\n * @group ui\n */\n @property({ attribute: false })\n size: \"large\" | \"small\" | \"default\" = \"default\";\n\n /**\n * @kind \"circle\" | \"square\"\n * @required false\n * @default \"circle\"\n * @description 指定头像的形状\n * @enums \"circle\"|\"square\"\n * @group ui\n */\n @property()\n shape: \"circle\" | \"square\";\n\n /**\n * @kind \"boolean\"\n * @required false\n * @default false\n * @deprecated\n * @description [已废弃,最新用法以showNicknameOrUsername为准]是否展示昵称,当用户不含昵称昵称时不展示\n */\n @property({ type: Boolean })\n showNickname: boolean;\n /**\n * @kind \"boolean\"\n * @required false\n * @default false\n * @description 当有昵称时显示昵称,无昵称时显示用户名\n */\n @property({ type: Boolean })\n showNicknameOrUsername: boolean;\n\n /**\n * @kind \"boolean\"\n * @required false\n * @default false\n * @description 是否显示 `showKey` ,如果有则显示`alan(hero)` or `alan`\n */\n @property({ type: Boolean })\n displayShowKey: boolean;\n /**\n * @kind \"number\" | \"string\"\n * @required false\n * @default 0\n * @description icon间距\n * @group ui\n */\n @property({ attribute: false })\n iconMargin: number | string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 自定义toolTip替换字符串 例如:\"发起人:#{name}\"\n * @group basic\n */\n @property({ attribute: false })\n customTooltip: 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 <BrickUser\n userNameOrId={this.userNameOrId ?? this.username}\n size={this.size}\n shape={this.shape}\n iconUrl={this.iconUrl}\n hideAvatar={this.hideAvatar}\n hideUsername={this.hideUsername}\n showNicknameOrUsername={\n this.showNicknameOrUsername ?? this.showNickname\n }\n iconMargin={this.iconMargin}\n displayShowKey={this.displayShowKey}\n customTooltip={this.customTooltip}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"presentational-bricks.brick-user\", BrickUserElement);\n","export const NS_LIBS_DATETIME = \"libs-datetime\";\n\nexport enum K {\n TODAY = \"TODAY\",\n YESTERDAY = \"YESTERDAY\",\n FUTURE_AFTER = \"FUTURE_AFTER\",\n FORMAT_SHORT = \"FORMAT_SHORT\",\n FORMAT_SHORT_DAY = \"FORMAT_SHORT_DAY\",\n SECONDS = \"SECONDS\",\n MILL_SECONDS = \"MILL_SECONDS\",\n MINUTES = \"MINUTES\",\n HOURS = \"HOURS\",\n DAYS = \"DARS\",\n MONTHS = \"MONTHS\",\n TEN_HOURS_TEN_MINUTES_TEST = \"TEN_HOURS_TEN_MINUTES_TEST\",\n ONE_TWO_SECONDS = \"ONE_TWO_SECONDS\",\n OO_TWO_ONE_SECONDS = \"OO_TWO_ONE_SECONDS\",\n}\n\nexport type Locale = { [key in K]: string };\n","import React from \"react\";\nimport { costTime } from \"@next-libs/datetime\";\nimport { isNil, findIndex } from \"lodash\";\nimport moment from \"moment\";\nimport { NS_LIBS_DATETIME, K } from \"./i18n/constants\";\nimport i18n from \"i18next\";\ninterface CostTimeProps {\n startTime?: string | number;\n endTime?: string | number;\n cost?: number;\n unitStyle?: React.CSSProperties;\n}\n\nexport function CostTime({\n cost,\n startTime,\n endTime,\n unitStyle,\n}: CostTimeProps): React.ReactElement {\n const CostTimeProcess = (cost: number, start?: any, end?: any) => {\n // 某些后台接口任务初始时 `end` 为 \"0001-01-01T00:00:00Z\"\n if (isNil(cost) && (isNil(end) || end === \"0001-01-01T00:00:00Z\")) {\n return \"\";\n }\n\n if (isNil(cost)) {\n cost = moment(end).diff(start);\n }\n\n cost = Math.max(cost, 0);\n\n const milliseconds = cost % 1000;\n const seconds = Math.floor(cost / 1000) % 60;\n const minutes = Math.floor(cost / 60000) % 60;\n const hours = Math.floor(cost / 3600000) % 24;\n const days = Math.floor(cost / 86400000) % 30;\n const months = Math.floor(cost / (86400000 * 30));\n\n const list = [\n {\n count: months,\n unit: i18n.t(`${NS_LIBS_DATETIME}:${K.MONTHS}`),\n },\n {\n count: days,\n unit: i18n.t(`${NS_LIBS_DATETIME}:${K.DAYS}`),\n },\n {\n count: hours,\n unit: i18n.t(`${NS_LIBS_DATETIME}:${K.HOURS}`),\n },\n {\n count: minutes,\n unit: i18n.t(`${NS_LIBS_DATETIME}:${K.MINUTES}`),\n },\n {\n count: seconds,\n unit: i18n.t(`${NS_LIBS_DATETIME}:${K.SECONDS}`),\n },\n {\n count: milliseconds,\n unit: i18n.t(`${NS_LIBS_DATETIME}:${K.MILL_SECONDS}`),\n },\n ];\n\n const index = findIndex(list, function (item) {\n return item.count > 0;\n });\n\n // 如果小于 1 分钟,统一只显示 `秒`\n if (index >= 4 || index === -1) {\n // 如果小于 0.1 秒,取 3 位小数,否则取 1 位小数\n return (\n <span>\n <span>{+(cost / 1000).toFixed(cost >= 100 ? 1 : 3) + \" \"}</span>\n <span style={unitStyle}>\n {i18n.t(`${NS_LIBS_DATETIME}:${K.SECONDS}`)}\n </span>\n </span>\n );\n }\n return list\n .slice(index, index + 2)\n .filter(function (item) {\n return item.count > 0;\n })\n .map((r: any, i: number) => (\n <span key={i}>\n <span>{r.count + \" \"}</span>\n <span style={unitStyle}>{r.unit + \" \"}</span>\n </span>\n ));\n };\n return unitStyle ? (\n <span>{CostTimeProcess(cost, startTime, endTime)}</span>\n ) : (\n <span>{costTime(cost, startTime, endTime)}</span>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { CostTime } from \"./CostTime\";\nimport { get } from \"lodash\";\n\n/**\n * @id presentational-bricks.cost-time\n * @name presentational-bricks.cost-time\n * @docKind brick\n * @description 如:15秒、1天\n * @author lynette\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class CostTimeElement extends UpdatingElement {\n connectedCallback(): void {\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n if (this.isConnected) {\n if (this.dataSource) {\n // eslint-disable-next-line no-console\n console.warn(\n \"`dataSource` and `fields` of `<presentational-bricks.cost-time>` are deprecated, use `transform` instead.\"\n );\n this._initData();\n }\n ReactDOM.render(\n <BrickWrapper>\n <CostTime\n cost={this.cost}\n startTime={this.startTime}\n endTime={this.endTime}\n unitStyle={this.unitStyle}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n\n private _initData(): void {\n if (this.fields) {\n const { cost, startTime, endTime } = this.fields;\n if (cost) {\n this.cost = get(this.dataSource, cost);\n }\n if (startTime) {\n this.startTime = get(this.dataSource, startTime);\n }\n if (endTime) {\n this.endTime = get(this.dataSource, endTime);\n }\n }\n }\n\n /**\n * @required false\n * @description 消耗时间(毫秒级)\n * @group basic\n */\n @property({\n type: Number,\n })\n cost: number;\n\n /**\n * @required false\n * @description 起始时间\n * @group basic\n */\n @property({\n attribute: false,\n })\n startTime: string | number;\n\n /**\n * @required false\n * @description 结束时间\n * @group basic\n */\n @property({\n attribute: false,\n })\n endTime: string | number;\n\n /**\n * @required false\n * @description 单位样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n unitStyle: React.CSSProperties;\n\n /**\n * @required false\n * @description [已废弃]数据源\n * @deprecated\n * @group other\n */\n @property({\n attribute: false,\n })\n dataSource: any;\n\n /**\n * @required false\n * @description [已废弃]字段映射, 跟 dataSource 一起使用来获得运行时对应字段\n * @deprecated\n * @group other\n */\n @property({ attribute: false }) fields: {\n cost?: string;\n startTime?: string;\n endTime?: string;\n };\n}\n\ncustomElements.define(\"presentational-bricks.cost-time\", CostTimeElement);\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n BrickValueMapping,\n MappingValue\n} from \"../brick-value-mapping/BrickValueMapping\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\n\ninterface BrickAlertStatusProps {\n status: number;\n recoverType: string;\n isRecover: boolean;\n}\n\nexport function BrickAlertStatus(\n props: BrickAlertStatusProps\n): React.ReactElement {\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n const value = props.isRecover\n ? props.recoverType === \"manual\"\n ? \"manualRecover\"\n : 2\n : props.status;\n const mapping: { [key: string]: MappingValue } = {\n 0: {\n text: t(K.ALERT_MSG_SENDED)\n },\n 1: {\n text: t(K.ALERT_CONVERGED)\n },\n 2: {\n text: t(K.ALERT_RECOVERED)\n },\n 3: {\n text: t(K.ALERT_SHIELDED)\n },\n manualRecover: {\n text: t(K.ALERT_MANUAL_RECOVERED)\n }\n };\n\n return <BrickValueMapping value={value} mapping={mapping} />;\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isNil, get } from \"lodash\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { BrickAlertStatus } from \"./BrickAlertStatus\";\n\n/**\n * @id presentational-bricks.brick-alert-status\n * @name presentational-bricks.brick-alert-status\n * @docKind brick\n * @description 将告警状态转换成文字表述\n * @author ice\n * @slots\n * @history\n * 1.74.0:新属性 `isRecover`\n * @memo\n * @noInheritDoc\n */\nexport class BrickAlertStatusElement extends UpdatingElement {\n /**\n * @kind enum[0, 1, 2, 3]\n * @required false\n * @default -\n * @description 告警状态\n */\n @property({ type: Number })\n status: number;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 告警恢复类型\n */\n @property()\n recoverType: string;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 是否已恢复告警\n */\n @property({ type: Boolean })\n isRecover: boolean;\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default -\n * @description [已废弃]数据来源\n */\n @property({ attribute: false })\n dataSource: any;\n\n /**\n * @kind { status: string, recoverType: string, isRecover: string }\n * @required false\n * @default -\n * @description [已废弃]字段映射, 跟 dataSource 一起使用来获得运行时 status 和 recoverType\n */\n @property({ attribute: false })\n fields: { status: string; recoverType: string; isRecover: 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 let status = this.status;\n let recoverType = this.recoverType;\n let isRecover = this.isRecover;\n\n if (isNil(status) && this.dataSource && this.fields) {\n status = get(this.dataSource, this.fields.status);\n recoverType = get(this.dataSource, this.fields.recoverType);\n isRecover = get(this.dataSource, this.fields.isRecover);\n }\n\n ReactDOM.render(\n <BrickWrapper>\n <BrickAlertStatus\n status={status}\n recoverType={recoverType}\n isRecover={isRecover}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-alert-status\",\n BrickAlertStatusElement\n);\n","export const NS_LIBS_DATETIME_COMPONENTS = \"libs-datetime-components\";\n\nexport enum K {\n NEARLY_AN_HOUR = \"NEARLY_AN_HOUR\",\n NEARLY_24_HOURS = \"NEARLY_24_HOURS\",\n TODAY = \"TODAY\",\n LAST_7_DAYS = \"LAST_7_DAYS\",\n NEARLY_30_DAYS = \"NEARLY_30_DAYS\",\n CONFIRM = \"CONFIRM\",\n SPECIFIED_RANGE = \"SPECIFIED_RANGE\",\n QUICK_SELECTION = \"QUICK_SELECTION\",\n START_DATE = \"START_DATE\",\n END_DATE = \"END_DATE\",\n}\n\nexport type Locale = { [key in K]: string };\n","import { Locale, K } from \"../constants\";\n\nconst locale: Locale = {\n [K.NEARLY_AN_HOUR]: \"Nearly an hour\",\n [K.NEARLY_24_HOURS]: \"Nearly 24 hours\",\n [K.TODAY]: \"Today\",\n [K.LAST_7_DAYS]: \"Last 7 days\",\n [K.NEARLY_30_DAYS]: \"Nearly 30 days\",\n [K.SPECIFIED_RANGE]: \"Specified range\",\n [K.QUICK_SELECTION]: \"Quick selection\",\n [K.CONFIRM]: \"Confirm\",\n [K.START_DATE]: \"Start date\",\n [K.END_DATE]: \"End date\",\n};\n\nexport default locale;\n","import { Locale, K } from \"../constants\";\n\nconst locale: Locale = {\n [K.NEARLY_AN_HOUR]: \"近1小时\",\n [K.NEARLY_24_HOURS]: \"近24小时\",\n [K.TODAY]: \"今天\",\n [K.LAST_7_DAYS]: \"近7天\",\n [K.NEARLY_30_DAYS]: \"近30天\",\n [K.SPECIFIED_RANGE]: \"指定范围\",\n [K.QUICK_SELECTION]: \"快速选择\",\n [K.CONFIRM]: \"确定\",\n [K.START_DATE]: \"开始日期\",\n [K.END_DATE]: \"结束日期\",\n};\n\nexport default locale;\n","import i18next from \"i18next\";\nimport { NS_LIBS_DATETIME_COMPONENTS } from \"./constants\";\nimport en from \"./locales/en\";\nimport zh from \"./locales/zh\";\n\nexport function addResourceBundle() {\n i18next.addResourceBundle(\"en\", NS_LIBS_DATETIME_COMPONENTS, en);\n i18next.addResourceBundle(\"zh\", NS_LIBS_DATETIME_COMPONENTS, zh);\n}\n","import React from \"react\";\nimport { ClockCircleOutlined } from \"@ant-design/icons\";\nimport { Popover, Button, Radio, DatePicker } from \"antd\";\nimport { find, get } from \"lodash\";\nimport { RadioChangeEvent } from \"antd/lib/radio\";\nimport { TooltipPlacement } from \"antd/lib/tooltip\";\nimport moment from \"moment\";\nimport { RangeValue } from \"rc-picker/lib/interface\";\nimport { ButtonSize } from \"antd/lib/button\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_DATETIME_COMPONENTS, K } from \"../i18n/constants\";\nimport { addResourceBundle } from \"../i18n\";\naddResourceBundle();\n\nexport type DateRangeType = \"dateRange\";\nexport const DATE_RANGE = \"dateRange\";\nexport type SpecifiedDateType = \"specifiedDate\";\nexport const SPECIFIED_DATE = \"specifiedDate\";\n\nexport interface SpecifiedDateValue {\n from: number;\n to: number;\n}\n\nexport interface DateRange {\n type: DateRangeType;\n value: string;\n}\nexport interface SpecifiedDateRange {\n type: SpecifiedDateType;\n value: SpecifiedDateValue;\n}\n\nexport type RangeType = \"default\" | \"custom\";\n\nexport interface DatatimeRangeProps {\n initDateRange?: DateRange | SpecifiedDateRange;\n onConfirm?(dateRange: DateRange | SpecifiedDateRange): void;\n format?: string;\n type?: RangeType;\n customTimeRange?: RangeText[];\n placement?: TooltipPlacement;\n size?: ButtonSize;\n selectNearDays?: number;\n rangeDays?: number;\n}\n\nexport interface DatatimeRangeState {\n dateRange: DateRange | SpecifiedDateRange;\n type: SpecifiedDateType | DateRangeType;\n range: string | null;\n specifiedDate: RangeValue<moment.Moment> | null;\n visible: boolean;\n format: string;\n dates?: RangeValue<moment.Moment> | null;\n}\n\nexport interface RangeText {\n range: string;\n text: string;\n}\n\nexport const defaultRangeOptionList: RangeText[] = [\n {\n range: \"now-1h\",\n text: i18n.t(`${NS_LIBS_DATETIME_COMPONENTS}:${K.NEARLY_AN_HOUR}`),\n },\n {\n range: \"now-1d\",\n text: i18n.t(`${NS_LIBS_DATETIME_COMPONENTS}:${K.NEARLY_24_HOURS}`),\n },\n {\n range: \"now/d\",\n text: i18n.t(`${NS_LIBS_DATETIME_COMPONENTS}:${K.TODAY}`),\n },\n {\n range: \"now-7d\",\n text: i18n.t(`${NS_LIBS_DATETIME_COMPONENTS}:${K.LAST_7_DAYS}`),\n },\n {\n range: \"now-30d\",\n text: i18n.t(`${NS_LIBS_DATETIME_COMPONENTS}:${K.NEARLY_30_DAYS}`),\n },\n];\n\nexport class DatetimeRange extends React.Component<\n DatatimeRangeProps,\n DatatimeRangeState\n> {\n static defaultProps = {\n type: \"default\",\n customTimeRange: [] as RangeText[],\n };\n\n rangeOptionList: RangeText[];\n constructor(props: DatatimeRangeProps) {\n super(props);\n\n const defaultInitRange = {\n type: DATE_RANGE,\n value: \"now-7d\",\n };\n\n const customInitRange = {\n type: DATE_RANGE,\n value: get(this.props.customTimeRange, \"[0].range\"),\n };\n const initDateRange: DateRange | SpecifiedDateRange =\n this.props.initDateRange ||\n ((this.props.type === \"default\"\n ? defaultInitRange\n : customInitRange) as DateRange);\n\n this.rangeOptionList =\n this.props.type === \"default\"\n ? defaultRangeOptionList\n : this.props.customTimeRange;\n this.state = {\n dateRange: initDateRange,\n type: initDateRange.type,\n range: initDateRange.type === DATE_RANGE ? initDateRange.value : null,\n specifiedDate:\n initDateRange.type === SPECIFIED_DATE\n ? [moment(initDateRange.value.from), moment(initDateRange.value.to)]\n : null,\n visible: false,\n format: this.props.format || \"YYYY-MM-DD HH:mm:ss\",\n dates: null,\n };\n }\n\n getButtonText() {\n if (this.state.dateRange.type === DATE_RANGE) {\n return find(this.rangeOptionList, [\"range\", this.state.dateRange.value])\n .text;\n } else {\n return (\n moment(this.state.dateRange.value.from).format(this.state.format) +\n \" - \" +\n moment(this.state.dateRange.value.to).format(this.state.format)\n );\n }\n }\n\n handleRangeChange = (e: RadioChangeEvent) => {\n const dateRange: DateRange = {\n type: DATE_RANGE,\n value: e.target.value,\n };\n this.setState({\n dateRange,\n type: DATE_RANGE,\n range: e.target.value,\n specifiedDate: null,\n dates: null,\n });\n if (this.props.onConfirm) {\n this.props.onConfirm(dateRange);\n }\n this.hide();\n };\n\n handleVisibleChange = (visible: boolean) => {\n this.setState({ visible });\n };\n\n hide = () => {\n this.setState({\n visible: false,\n });\n };\n\n save = () => {\n let dateRange: DateRange | SpecifiedDateRange;\n if (this.state.type === DATE_RANGE) {\n dateRange = {\n type: this.state.type,\n value: this.state.range,\n };\n } else {\n dateRange = {\n type: this.state.type,\n value: {\n from: +this.state.specifiedDate[0],\n to: +this.state.specifiedDate[1],\n },\n };\n }\n this.setState({ dateRange });\n this.props.onConfirm?.(dateRange);\n this.hide();\n };\n\n onDateChange = (v: RangeValue<moment.Moment>) => {\n this.setState({\n type: SPECIFIED_DATE,\n range: null,\n specifiedDate: v,\n });\n };\n calendarChange = (value: RangeValue<moment.Moment>) => {\n this.setState({ dates: value });\n };\n disabledDate = (current: moment.Moment) => {\n if (this.props.selectNearDays) {\n const tooSelectNearDays =\n current <= moment().subtract(this.props.selectNearDays, \"days\") ||\n current > moment().endOf(\"day\");\n return !!tooSelectNearDays;\n } else if (this.props.rangeDays) {\n const { dates } = this.state;\n if (!dates) {\n return false;\n }\n const startTime = dates[0];\n const start =\n startTime &&\n startTime.format(\"YYYY-MM-DD\") > current.format(\"YYYY-MM-DD\");\n const end =\n startTime &&\n moment(startTime)\n .add(this.props.rangeDays, \"days\")\n .format(\"YYYY-MM-DD\") < current.format(\"YYYY-MM-DD\");\n return start || end;\n } else {\n return false;\n }\n };\n\n render(): React.ReactNode {\n const labelStyle = {\n display: \"block\",\n color: \"var(--datetime-selector-label-color, var(--text-color-title))\",\n lineHeight: \"24px\",\n fontSize: \"16px\",\n fontWeight: 500,\n marginBottom: \"10px\",\n };\n const radioGroupStyle = {\n marginBottom: \"20px\",\n };\n const datePickerStyle = {\n marginBottom: \"30px\",\n };\n const contentStyle = {\n margin: \"16px\",\n };\n const content = (\n <div style={contentStyle}>\n <div style={labelStyle}>\n {i18n.t(`${NS_LIBS_DATETIME_COMPONENTS}:${K.QUICK_SELECTION}`)}:\n </div>\n <Radio.Group\n value={this.state.range}\n onChange={this.handleRangeChange}\n style={radioGroupStyle}\n buttonStyle=\"solid\"\n className=\"btnGroup\"\n >\n {this.rangeOptionList.map((item) => (\n <Radio.Button\n value={item.range}\n key={item.range}\n className={item.range}\n >\n {item.text}\n </Radio.Button>\n ))}\n </Radio.Group>\n <div style={labelStyle}>\n {i18n.t(`${NS_LIBS_DATETIME_COMPONENTS}:${K.SPECIFIED_RANGE}`)}:\n </div>\n <div style={datePickerStyle}>\n <DatePicker.RangePicker\n showTime={{\n defaultValue: [moment(), moment()],\n }}\n format={this.state.format}\n style={{ width: \"380px\" }}\n placeholder={[\n i18n.t(`${NS_LIBS_DATETIME_COMPONENTS}:${K.START_DATE}`),\n i18n.t(`${NS_LIBS_DATETIME_COMPONENTS}:${K.END_DATE}`),\n ]}\n value={this.state.specifiedDate}\n onChange={this.onDateChange}\n allowClear={false}\n disabledDate={this.disabledDate}\n onCalendarChange={this.calendarChange}\n />\n </div>\n <Button type=\"primary\" onClick={this.save}>\n {i18n.t(`${NS_LIBS_DATETIME_COMPONENTS}:${K.CONFIRM}`)}\n </Button>\n </div>\n );\n return (\n <Popover\n placement={this.props.placement ?? \"bottom\"}\n content={content}\n trigger=\"click\"\n visible={this.state.visible}\n onVisibleChange={this.handleVisibleChange}\n >\n <Button size={this.props.size}>\n <ClockCircleOutlined style={{ verticalAlign: \"middle\" }} />{\" \"}\n {this.getButtonText()}\n </Button>\n </Popover>\n );\n }\n}\n","import moment, { DurationInputArg2 } from \"moment\";\n\nexport const parseDatetimeRange = (range: string) => {\n if (range === \"now/d\") {\n return {\n from: +moment().startOf(\"day\"),\n to: +moment()\n };\n }\n\n if (range === \"now/y\") {\n return {\n from: +moment().startOf(\"year\"),\n to: +moment()\n };\n }\n\n const reg = /^now-(\\d+)(\\w+)/;\n\n const matches = reg.exec(range);\n\n if (matches !== null) {\n const [, value, unit] = matches;\n return {\n from: +moment().subtract(value, unit as DurationInputArg2),\n to: +moment()\n };\n }\n\n return {\n from: \"\",\n to: \"\"\n };\n};\n","import {\n DateRange,\n SpecifiedDateRange,\n SpecifiedDateValue,\n parseDatetimeRange,\n} from \"@next-libs/datetime-components\";\nimport { ResolutionProps } from \"./DatetimeSelector\";\n\nexport type TimeRange = DateRange | SpecifiedDateRange;\n\nexport function transformToTimestamp(\n range: TimeRange,\n resolution?: ResolutionProps\n) {\n if (range.type === \"specifiedDate\")\n return { from: range.value.from, to: range.value.to };\n\n const formatRange = processResolution(\n {\n value: parseDatetimeRange(range.value) as SpecifiedDateValue,\n type: \"specifiedDate\",\n },\n resolution,\n { s: (value) => convertToSecond(value) }\n ) as SpecifiedDateRange;\n\n return { from: formatRange.value.from, to: formatRange.value.to };\n}\n\nexport function formatTimeRange(range: TimeRange) {\n if (range.type === \"specifiedDate\")\n return { from: range.value.from, to: range.value.to };\n return {\n from: range.value,\n };\n}\n\nexport function processResolution(\n range: TimeRange,\n resolution: ResolutionProps,\n transformMap: Record<string, (value: number) => any>\n): TimeRange {\n if (range.type === \"specifiedDate\") {\n return {\n ...range,\n value: {\n from: transformMap[resolution]?.(range.value.from) || range.value.from,\n to: transformMap[resolution]?.(range.value.to) || range.value.to,\n },\n };\n }\n\n return range;\n}\n\nexport function convertToSecond(value: number): number {\n return Math.floor(value / 1000);\n}\n","import React from \"react\";\nimport { TooltipPlacement } from \"antd/lib/tooltip\";\n\nimport {\n DatetimeRange,\n DateRange,\n SpecifiedDateRange,\n RangeText,\n RangeType,\n defaultRangeOptionList,\n} from \"@next-libs/datetime-components\";\nimport { processResolution, convertToSecond } from \"./processor\";\nimport { ButtonSize } from \"antd/lib/button\";\n\nexport type ResolutionProps = \"ms\" | \"s\";\ntype DateRangeProps = SpecifiedDateRange | DateRange;\n\nexport interface DatetimeSelectorProps {\n from?: string;\n to?: string;\n datetimeSelected?: (dateRange: any) => void;\n type?: RangeType;\n customTimeRange?: RangeText[];\n placement?: TooltipPlacement;\n resolution?: ResolutionProps;\n size?: ButtonSize;\n selectNearDays?: number;\n rangeDays?: number;\n format?: string;\n}\n\nexport function DatetimeSelector(\n props: DatetimeSelectorProps\n): React.ReactElement {\n const { customTimeRange = [], type = \"default\", resolution, size } = props;\n const getInitDateRange = (): DateRangeProps => {\n const rangeList =\n type === \"default\"\n ? defaultRangeOptionList.map((item) => item.range)\n : customTimeRange.map((item) => item.range);\n if (props.from) {\n return rangeList.includes(props.from)\n ? {\n type: \"dateRange\",\n value: props.from,\n }\n : processResolution(\n {\n type: \"specifiedDate\",\n value: {\n from: +props.from,\n to: +props.to,\n },\n },\n resolution,\n {\n s: (value) => value * 1000,\n }\n );\n } else {\n return null;\n }\n };\n\n const handleConfirm = (dateRange: DateRangeProps): void => {\n const range = processResolution(dateRange, resolution, {\n s: (value) => convertToSecond(value),\n });\n props?.datetimeSelected(range);\n };\n\n return (\n <DatetimeRange\n type={type}\n customTimeRange={customTimeRange}\n onConfirm={handleConfirm}\n initDateRange={getInitDateRange()}\n placement={props.placement}\n size={size}\n selectNearDays={props.selectNearDays}\n rangeDays={props.rangeDays}\n format={props.format}\n />\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n getHistory,\n UpdatingElement,\n property,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\n\nimport { RangeType } from \"@next-libs/datetime-components\";\nimport { RangeText } from \"@next-libs/datetime-components\";\n\nimport { DatetimeSelector, ResolutionProps } from \"./DatetimeSelector\";\nimport { transformToTimestamp, formatTimeRange } from \"./processor\";\nimport { ButtonSize } from \"antd/lib/button\";\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\";\n/**\n * @id presentational-bricks.datetime-selector\n * @name presentational-bricks.datetime-selector\n * @docKind brick\n * @description 常用于时间的过滤,支持快速选择时间区间和自定义,例如图表或表格的时间过滤\n * @author jo\n * @slots\n * @history\n * 1.63.0:新属性 `placement`\n * 1.80.0:新增事件 `datetime.selected.v2, datetime.selected.v3`\n * 1.105.0:新增属性 `resolution`\n * @memo\n *\n * > Tips: 第一个示例 demo 由于 shouldUpdateUrlParams=true 会更新 url 中的参数,会导致第二个示例时间选择器也会跟着变化, 而第二个示例 shouldUpdateUrlParams=false, 不会改变 url 所以第一示例不受它的影响,特作此说明。\n *\n * ```typescript\n * from to 书写规范如下:\n * now-15m 近 15 分钟\n * now-30m 近 30 分钟\n * now-1h 近 1 小时\n * now-12h 近 12 小时\n * now-24h 近 24 小时\n * now/d 今天(今天0时到现在的时间)\n * now-7d 近 7 天\n * now-30d 近 30 天\n * now-6M 近 6 月\n * now/y 今年(今年第一天开始到今天的时间)\n * now-1y 近 1 年\n * ```\n *\n * > Tips: 对于时间段范围的时间,组件封装了 parseDatetimeRange 的解析函数,统一转化为时间戳处理,不必额外再写转换函数, [github链接](https://github.com/easyops-cn/next-libs/blob/207fe7ee3ac010ab860c23cd062216c8ca612f0c/libs/datetime-components/src/processor/parseDatetimeRange.ts#L3)\n *\n * @noInheritDoc\n */\nexport class DatetimeSelectorElement extends UpdatingElement {\n /**\n * @detail { type: \"dateRange\"; value: \"now/d\" } | { type: \"specifiedDate\"; value: { from: number; to: number }}\n * @description [已废弃]选择时间\n */\n @event({ type: \"datetime.selected\" })\n datetimeSelectedEvent: EventEmitter<\n | { type: \"dateRange\"; value: \"now/d\" }\n | { type: \"specifiedDate\"; value: { from: number; to: number } }\n >;\n\n /**\n * @detail { from: number; to: number }\n * @description 选择当前时间戳,与 `datetime.selected` 不同的是会把时间统一转换成时间戳的形式输出\n */\n @event({ type: \"datetime.selected.v2\" })\n datetimeSelectedV2Event: EventEmitter<{ from: number; to: number }>;\n\n /**\n * @detail { from: number; to: number } | { from: string }\n * @description 选择当前时间,与 `datetime.selected` 不同的是虽然还是区分时间戳和时间段两种类型,但是调整了输出字段格式, 这样更利于某些监控场景的使用和编排\n */\n @event({ type: \"datetime.selected.v3\" })\n datetimeSelectedV3Event: EventEmitter<\n { from: number; to: number } | { from: string }\n >;\n\n /**\n * @required true\n * @default \"now-1d\"\n * @description 默认起始时间,支持任意时间范围,相关规则请按下列规则书写(\"now-1h\", \"now-1d\", \"now/d\", \"now-7d\", \"now-30d\") [正则表达式](https://github.com/easyops-cn/next-libs/blob/207fe7ee3ac010ab860c23cd062216c8ca612f0c/libs/datetime-components/src/processor/parseDatetimeRange.ts#L18) 注意当通过 \\${query.from=now/d} 赋默认值给 form 属性时,由于 [placeholder 占位符语法](https://admin.easyops.local/next-docs/docs/brick-next/evaluate-placeholders) 不支持 `/` 的特殊字符解析,所以该值需要用字符串的形式来书写(如 demo 所示)。\n * @group basic\n */\n @property()\n from: string;\n\n /**\n * @required false\n * @description 默认结束时间, 相关规则请参照from属性\n * @group basic\n */\n @property()\n to: string;\n\n /**\n * @required false\n * @default true\n * @description 是否更新 url 参数并刷新页面\n * @group basic\n */\n @property({\n attribute: false,\n })\n shouldUpdateUrlParams = true;\n\n /**\n * @kind \"default\" | \"custom\"\n * @required false\n * @default \"default\"\n * @description 时间选择器支持两种类型,一种是默认的,固定显示常用的几种时间范围,一种是自定义的,可根据需求定制特定时间范围\n * @group basic\n */\n @property({\n attribute: false,\n })\n type = \"default\" as RangeType;\n\n /**\n * @kind {range: string, text: string}\n * @required false\n * @description 当 type 为 custom 时,配置定制的时间范围,目前暂支持如下时间点,当 type 为 default 时,该配置项无效\n * @group basic\n */\n @property({\n attribute: false,\n })\n customTimeRange: RangeText[];\n\n /**\n * @required false\n * @default \"bottom\"\n * @description 弹出位置\n * @group other\n */\n @property()\n placement: TooltipPlacement;\n\n /**\n * @kind \"ms\" | \"s\"\n * @required false\n * @default \"ms\"\n * @description 指定时间戳的单位,目前支持秒和毫秒,默认为毫秒,切换为秒时,url 和事件传出的时间戳都会调整成以秒为单位\n * @group other\n */\n @property({\n attribute: false,\n })\n resolution: ResolutionProps = \"ms\";\n\n /**\n * @kind \"default\" | \"large\" | \"small\"\n * @required false\n * @description 打开选择器的按钮的大小\n * @group other\n */\n @property()\n size: ButtonSize;\n\n /**\n * @kind number\n * @required false\n * @description 限制选择近n天\n * @group other\n */\n @property()\n selectNearDays: number;\n\n /**\n * @kind number\n * @required false\n * @description 日期格式\n * @group other\n */\n @property()\n format: string;\n\n /**\n * @kind number\n * @required false\n * @description 限制选择范围天数\n * @group other\n */\n @property()\n rangeDays: 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 private datetimeSelected = (dateRange: any): void => {\n this.datetimeSelectedEvent.emit(dateRange);\n this.datetimeSelectedV2Event.emit(\n transformToTimestamp(dateRange, this.resolution)\n );\n this.datetimeSelectedV3Event.emit(formatTimeRange(dateRange));\n\n if (this.shouldUpdateUrlParams) {\n const history = getHistory();\n const urlSearchParams = new URLSearchParams(history.location.search);\n if (dateRange.type === \"dateRange\") {\n urlSearchParams.delete(\"to\");\n urlSearchParams.set(\"from\", dateRange.value);\n history.replace(`?${urlSearchParams}`);\n } else {\n urlSearchParams.set(\"from\", dateRange.value.from);\n urlSearchParams.set(\"to\", dateRange.value.to);\n history.replace(`?${urlSearchParams}`);\n }\n }\n };\n\n protected _render(): void {\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <DatetimeSelector\n type={this.type}\n customTimeRange={this.customTimeRange}\n from={this.from}\n to={this.to}\n datetimeSelected={this.datetimeSelected}\n placement={this.placement}\n resolution={this.resolution}\n size={this.size}\n selectNearDays={this.selectNearDays}\n rangeDays={this.rangeDays}\n format={this.format}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.datetime-selector\",\n DatetimeSelectorElement\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 * as React from \"react\";\nfunction SvgInfoCircleO(props) {\n return <svg width={42} height={42} viewBox=\"0 0 42 42\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g transform=\"translate(2 2)\" fill=\"none\" fillRule=\"evenodd\"><ellipse stroke=\"#0071EB\" strokeWidth={2} fill=\"#FFF\" strokeLinecap=\"round\" strokeLinejoin=\"round\" cx={18.86} cy={19} rx={19.711} ry={19.218} /><path d=\"M27.632 2.904c5.913 3.061 9.939 9.12 9.939 16.096 0 10.062-8.377 18.218-18.711 18.218-4.5 0-8.628-1.546-11.856-4.123a19.032 19.032 0 008.775 2.123c10.333 0 18.71-8.156 18.71-18.218 0-5.639-2.63-10.68-6.763-14.021z\" fill=\"#EBF3FD\" /><g fill=\"#0071EB\" fillRule=\"nonzero\"><path d=\"M17 12a2 2 0 104 0 2 2 0 00-4 0zM19.846 16.49h-1.5c-.137 0-.25.163-.25.362V29.13c0 .198.113.36.25.36h1.5c.138 0 .25-.162.25-.36V16.852c0-.199-.112-.361-.25-.361z\" /></g></g></svg>;\n}\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDJweCIgaGVpZ2h0PSI0MnB4IiB2aWV3Qm94PSIwIDAgNDIgNDIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+RTQzODNGRjYtMzVCNC00NTdDLUIwOEItMkQ0RDkzNEFBMkRDPC90aXRsZT4KICAgIDxnIGlkPSI2LjIiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSLlkYrorabmj5DnpLoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMDAuMDAwMDAwLCAtNDMzNS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IuW4puWbvuaghyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTc5LjAwMDAwMCwgNDAxMy4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSLlj43ppogvMS5BbGVydOitpuWRiuaPkOekui/lpKct5o+Q56S6LSMyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1LjAwMDAwMCwgMzA2LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJpbmZvLWNpcmNsZS1vIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNi4wMDAwMDAsIDE2LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2iIiBmaWxsPSIjRDhEOEQ4IiBvcGFjaXR5PSIwIiB4PSIwIiB5PSIwIiB3aWR0aD0iNDIiIGhlaWdodD0iNDIiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IumAmueUqOWbvuaghy9pbmZvLWNpcmNsZS1vIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyLjAwMDAwMCwgMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFs5aSH5Lu9IiBzdHJva2U9IiMwMDcxRUIiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0iI0ZGRkZGRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjeD0iMTguODU5OTUwOSIgY3k9IjE5IiByeD0iMTkuNzEwNTY1MSIgcnk9IjE5LjIxODE4MTgiPjwvZWxsaXBzZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy42MzE5NjIyLDIuOTAzOTU3NjggQzMzLjU0NDY0NjUsNS45NjUyNDgzMyAzNy41NzA1MTYsMTIuMDI0ODUwMyAzNy41NzA1MTYsMTkgQzM3LjU3MDUxNiwyOS4wNjE2MjQgMjkuMTkzNTEwNiwzNy4yMTgxODE4IDE4Ljg1OTk1MDksMzcuMjE4MTgxOCBDMTQuMzYwMjUxNywzNy4yMTgxODE4IDEwLjIzMTUzOTgsMzUuNjcxNTk2MiA3LjAwMzkyNTI5LDMzLjA5NDU4NDkgQzkuNjIwOTc3MjQsMzQuNDUwMDggMTIuNjA3Nzk5MywzNS4yMTgxODE4IDE1Ljc3ODg2OTgsMzUuMjE4MTgxOCBDMjYuMTEyNDI5NSwzNS4yMTgxODE4IDM0LjQ4OTQzNDksMjcuMDYxNjI0IDM0LjQ4OTQzNDksMTcgQzM0LjQ4OTQzNDksMTEuMzYxMDY3OSAzMS44NTgyODAzLDYuMzIwNTAyNzQgMjcuNzI2MTYyMywyLjk3ODc1MzgzIFoiIGlkPSLlvaLnirbnu5PlkIgiIGZpbGw9IiNFQkYzRkQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSLnvJbnu4QtMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTYuMDk2MzE0LCA5LjQ5MDkwOSkiIGZpbGw9IiMwMDcxRUIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTAuOTAzNjg1NTA0LDIuNTA5MDkwOTEgQzAuOTAzNjg1NTA0LDMuNjEzNjYwNDEgMS43OTkxMTYsNC41MDkwOTA5MSAyLjkwMzY4NTUsNC41MDkwOTA5MSBDNC4wMDgyNTUsNC41MDkwOTA5MSA0LjkwMzY4NTUsMy42MTM2NjA0MSA0LjkwMzY4NTUsMi41MDkwOTA5MSBDNC45MDM2ODU1LDEuNDA0NTIxNDEgNC4wMDgyNTUsMC41MDkwOTA5MDkgMi45MDM2ODU1LDAuNTA5MDkwOTA5IEMxLjc5OTExNiwwLjUwOTA5MDkwOSAwLjkwMzY4NTUwNCwxLjQwNDUyMTQxIDAuOTAzNjg1NTA0LDIuNTA5MDkwOTEgWiIgaWQ9Iui3r+W+hCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjc1LDcgTDIuMjUsNyBDMi4xMTI1LDcgMiw3LjE2MjUgMiw3LjM2MTExMTExIEwyLDE5LjYzODg4ODkgQzIsMTkuODM3NSAyLjExMjUsMjAgMi4yNSwyMCBMMy43NSwyMCBDMy44ODc1LDIwIDQsMTkuODM3NSA0LDE5LjYzODg4ODkgTDQsNy4zNjExMTExMSBDNCw3LjE2MjUgMy44ODc1LDcgMy43NSw3IFoiIGlkPSLot6/lvoQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgInfoCircleO as ReactComponent };","import * as React from \"react\";\nfunction SvgErrorCircleO(props) {\n return <svg width={42} height={42} viewBox=\"0 0 42 42\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g transform=\"translate(3 3)\" fill=\"none\" fillRule=\"evenodd\"><circle stroke=\"#F0493C\" strokeWidth={2} fill=\"#FFF\" strokeLinecap=\"round\" strokeLinejoin=\"round\" cx={18} cy={18} r={19} /><path d=\"M26.423 2.088C32.12 5.11 36 11.102 36 18c0 9.941-8.059 18-18 18a17.926 17.926 0 01-11.424-4.09A17.917 17.917 0 0015 34c9.941 0 18-8.059 18-18a17.961 17.961 0 00-6.403-13.767z\" fill=\"#FDF0EF\" fillRule=\"nonzero\" /><path d=\"M19.177 18.03l5.956-7.1a.18.18 0 00-.139-.297h-1.81a.37.37 0 00-.28.13l-4.912 5.855-4.912-5.856a.363.363 0 00-.28-.13h-1.81a.18.18 0 00-.138.298l5.956 7.1-5.956 7.1a.18.18 0 00.138.297h1.81a.37.37 0 00.28-.13l4.912-5.856 4.913 5.856c.068.082.17.13.279.13h1.81a.18.18 0 00.139-.298l-5.956-7.1z\" fill=\"#F0493C\" fillRule=\"nonzero\" /></g></svg>;\n}\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDJweCIgaGVpZ2h0PSI0MnB4IiB2aWV3Qm94PSIwIDAgNDIgNDIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+MjIyRUQ3QzAtMDQ4NC00RkMwLUEzM0MtODM5MUE1NjNFRDU0PC90aXRsZT4KICAgIDxnIGlkPSI2LjIiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSLlkYrorabmj5DnpLoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjkuMDAwMDAwLCAtNDM4NS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IuW4puWbvuaghyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTI5LjAwMDAwMCwgNDAxMy4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSLlj43ppogvMS5BbGVydOitpuWRiuaPkOekui/lpKct5o+Q56S6LSMyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMjczLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJlcnJvci1jaXJjbGUtbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDk5LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2iIiBmaWxsPSIjRDhEOEQ4IiBvcGFjaXR5PSIwIiB4PSIwIiB5PSIwIiB3aWR0aD0iNDIiIGhlaWdodD0iNDIiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IumAmueUqOWbvuaghy9pbmZvLWNpcmNsZS1vIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjAwMDAwMCwgMy4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWzlpIfku70iIHN0cm9rZT0iI0YwNDkzQyIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSIjRkZGRkZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGN4PSIxOCIgY3k9IjE4IiByPSIxOSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjYuNDIzMjczOSwyLjA4ODQzNjMgQzMyLjExOTkzNDcsNS4xMTA0MDY2MyAzNiwxMS4xMDIwODQ0IDM2LDE4IEMzNiwyNy45NDExMjU1IDI3Ljk0MTEyNTUsMzYgMTgsMzYgQzEzLjY2MjY5MjYsMzYgOS42ODM2ODUxNSwzNC40NjU5MzUyIDYuNTc1OTYzMjUsMzEuOTEwNzkxMiBDOS4wODk1NDg1NywzMy4yNDQ2ODA0IDExLjk1NjU2NzEsMzQgMTUsMzQgQzI0Ljk0MTEyNTUsMzQgMzMsMjUuOTQxMTI1NSAzMywxNiBDMzMsMTAuNDc3MTUyNSAzMC41MTI2OTMxLDUuNTM1MjQ2NjcgMjYuNTk3MTcxLDIuMjMzMzc0MzIgWiIgaWQ9IuW9oueKtue7k+WQiCIgZmlsbD0iI0ZERjBFRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iY2xvc2UiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguMDAwMDAwLCA4LjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0iIzAwMDAwMCIgb3BhY2l0eT0iMCIgeD0iMCIgeT0iMCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIj48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExLjE3NjU5MTEsMTAuMDI5NjY0MiBMMTcuMTMyNjQ1LDIuOTMwMDQ3OTUgQzE3LjIzMjQ3OTgsMi44MTIwNjEzNiAxNy4xNDg1Mjc4LDIuNjMyODEyNSAxNi45OTQyMzc3LDIuNjMyODEyNSBMMTUuMTgzNTk3MywyLjYzMjgxMjUgQzE1LjA3Njk1NTYsMi42MzI4MTI1IDE0Ljk3NDg1MTgsMi42ODA0NjA5MyAxNC45MDQ1MTM2LDIuNzYyMTQzOTYgTDkuOTkyMTg3MjgsOC42MTgzNjMwMyBMNS4wNzk4NjA5MywyLjc2MjE0Mzk2IEM1LjAxMTc5MTc1LDIuNjgwNDYwOTMgNC45MDk2ODc5NywyLjYzMjgxMjUgNC44MDA3NzcyNywyLjYzMjgxMjUgTDIuOTkwMTM2ODksMi42MzI4MTI1IEMyLjgzNTg0NjczLDIuNjMyODEyNSAyLjc1MTg5NDczLDIuODEyMDYxMzYgMi44NTE3Mjk1NCwyLjkzMDA0Nzk1IEw4LjgwNzc4MzQyLDEwLjAyOTY2NDIgTDIuODUxNzI5NTQsMTcuMTI5MjgwNCBDMi43NTE4OTQ3MywxNy4yNDcyNjcgMi44MzU4NDY3MywxNy40MjY1MTU5IDIuOTkwMTM2ODksMTcuNDI2NTE1OSBMNC44MDA3NzcyNywxNy40MjY1MTU5IEM0LjkwNzQxODk5LDE3LjQyNjUxNTkgNS4wMDk1MjI3NywxNy4zNzg4Njc0IDUuMDc5ODYwOTMsMTcuMjk3MTg0NCBMOS45OTIxODcyOCwxMS40NDA5NjUzIEwxNC45MDQ1MTM2LDE3LjI5NzE4NDQgQzE0Ljk3MjU4MjgsMTcuMzc4ODY3NCAxNS4wNzQ2ODY2LDE3LjQyNjUxNTkgMTUuMTgzNTk3MywxNy40MjY1MTU5IEwxNi45OTQyMzc3LDE3LjQyNjUxNTkgQzE3LjE0ODUyNzgsMTcuNDI2NTE1OSAxNy4yMzI0Nzk4LDE3LjI0NzI2NyAxNy4xMzI2NDUsMTcuMTI5MjgwNCBMMTEuMTc2NTkxMSwxMC4wMjk2NjQyIFoiIGlkPSLot6/lvoQiIGZpbGw9IiNGMDQ5M0MiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgErrorCircleO as ReactComponent };","import * as React from \"react\";\nfunction SvgSuccessCircleO(props) {\n return <svg width={42} height={42} viewBox=\"0 0 42 42\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g transform=\"translate(3 3)\" fill=\"none\" fillRule=\"evenodd\"><circle stroke=\"#2FC25B\" strokeWidth={2} fill=\"#FFF\" strokeLinecap=\"round\" strokeLinejoin=\"round\" cx={18} cy={18} r={19} /><path d=\"M26.423 2.088C32.12 5.11 36 11.102 36 18c0 9.941-8.059 18-18 18a17.926 17.926 0 01-11.424-4.09A17.917 17.917 0 0015 34c9.941 0 18-8.059 18-18a17.961 17.961 0 00-6.403-13.767z\" fill=\"#EAF8EC\" fillRule=\"nonzero\" /><path d=\"M27.191 10.969h-1.606a.732.732 0 00-.577.28L15.534 23.25l-4.542-5.756a.735.735 0 00-.577-.28H8.81a.183.183 0 00-.145.296l6.294 7.974a.738.738 0 001.156 0l11.222-14.221a.182.182 0 00-.145-.294z\" fill=\"#2FC25B\" fillRule=\"nonzero\" /></g></svg>;\n}\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDJweCIgaGVpZ2h0PSI0MnB4IiB2aWV3Qm94PSIwIDAgNDIgNDIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+MjM1MjI0MDItNTgxNi00MDkyLUJFNDMtQzJFNDg1MDE0NTk0PC90aXRsZT4KICAgIDxnIGlkPSI2LjIiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSLlkYrorabmj5DnpLoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjkuMDAwMDAwLCAtNDMzNS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IuW4puWbvuaghyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTI5LjAwMDAwMCwgNDAxMy4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSLlj43ppogvMS5BbGVydOitpuWRiuaPkOekui/lpKct5o+Q56S6LSMyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMjczLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJzdWNjZXNzLWNpcmNsZS1vIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgNDkuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIGZpbGw9IiNEOEQ4RDgiIG9wYWNpdHk9IjAiIHg9IjAiIHk9IjAiIHdpZHRoPSI0MiIgaGVpZ2h0PSI0MiI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0i6YCa55So5Zu+5qCHL2luZm8tY2lyY2xlLW8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAzLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbOWkh+S7vSIgc3Ryb2tlPSIjMkZDMjVCIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9IiNGRkZGRkYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY3g9IjE4IiBjeT0iMTgiIHI9IjE5Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi40MjMyNzM5LDIuMDg4NDM2MyBDMzIuMTE5OTM0Nyw1LjExMDQwNjYzIDM2LDExLjEwMjA4NDQgMzYsMTggQzM2LDI3Ljk0MTEyNTUgMjcuOTQxMTI1NSwzNiAxOCwzNiBDMTMuNjYyNjkyNiwzNiA5LjY4MzY4NTE1LDM0LjQ2NTkzNTIgNi41NzU5NjMyNSwzMS45MTA3OTEyIEM5LjA4OTU0ODU3LDMzLjI0NDY4MDQgMTEuOTU2NTY3MSwzNCAxNSwzNCBDMjQuOTQxMTI1NSwzNCAzMywyNS45NDExMjU1IDMzLDE2IEMzMywxMC40NzcxNTI1IDMwLjUxMjY5MzEsNS41MzUyNDY2NyAyNi41OTcxNzEsMi4yMzMzNzQzMiBaIiBpZD0i5b2i54q257uT5ZCIIiBmaWxsPSIjRUFGOEVDIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJjaGVjayIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC4wMDAwMDAsIDguMDAwMDAwKSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2iIiBmaWxsPSIjMDAwMDAwIiBvcGFjaXR5PSIwIiB4PSIwIiB5PSIwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTkuMTkxMDU5NCwyLjk2ODc1IEwxNy41ODQ5MjE3LDIuOTY4NzUgQzE3LjM1OTc0MDgsMi45Njg3NSAxNy4xNDYwNDg2LDMuMDcyMTQ5NDIgMTcuMDA4MTgyNywzLjI0OTA3NzMyIEw3LjUzNDQ5ODAxLDE1LjI1MDMwMzQgTDIuOTkxODE2NzksOS40OTQ0MDIzNCBDMi44NTE2NTMxMyw5LjMxNzQ3NDQ0IDIuNjQwMjU4NzYsOS4yMTQwNzUwMiAyLjQxNTA3NzgsOS4yMTQwNzUwMiBMMC44MDg5NDAxMjUsOS4yMTQwNzUwMiBDMC42NTQ5ODk4NzcsOS4yMTQwNzUwMiAwLjU2OTk3MjU3NSw5LjM5MTAwMjkyIDAuNjY0MTgwOTM2LDkuNTEwNDg2NjkgTDYuOTU3NzU5MDIsMTcuNDgzNzMwOSBDNy4yNTE4NzI5MywxNy44NTU5Njg4IDcuODE3MTIzMSwxNy44NTU5Njg4IDguMTEzNTM0NzcsMTcuNDgzNzMwOSBMMTkuMzM1ODE4NiwzLjI2Mjg2MzkxIEMxOS40MzAwMjY5LDMuMTQ1Njc3OSAxOS4zNDUwMDk2LDIuOTY4NzUgMTkuMTkxMDU5NCwyLjk2ODc1IFoiIGlkPSLot6/lvoQiIGZpbGw9IiMyRkMyNUIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgSuccessCircleO as ReactComponent };","import * as React from \"react\";\nfunction SvgWarningCircleO(props) {\n return <svg width={42} height={42} viewBox=\"0 0 42 42\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g transform=\"translate(3 3)\" fill=\"none\" fillRule=\"evenodd\"><circle stroke=\"#FFA235\" strokeWidth={2} fill=\"#FFF\" strokeLinecap=\"round\" strokeLinejoin=\"round\" cx={18} cy={18} r={19} /><path d=\"M26.423 2.088C32.12 5.11 36 11.102 36 18c0 9.941-8.059 18-18 18a17.926 17.926 0 01-11.424-4.09A17.917 17.917 0 0015 34c9.941 0 18-8.059 18-18a17.961 17.961 0 00-6.403-13.767z\" fill=\"#FFF5EA\" fillRule=\"nonzero\" /><g fill=\"#FFA235\" fillRule=\"nonzero\"><path d=\"M15.904 24.49a2 2 0 114 0 2 2 0 01-4 0zM18.75 20h-1.5c-.138 0-.25-.162-.25-.361V7.36c0-.198.112-.361.25-.361h1.5c.138 0 .25.163.25.361V19.64c0 .199-.112.361-.25.361z\" /></g></g></svg>;\n}\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDJweCIgaGVpZ2h0PSI0MnB4IiB2aWV3Qm94PSIwIDAgNDIgNDIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+NzExRjAxRDUtRDQ5OC00QzdELUFGMEItQTQyMkI3MzBFN0FGPC90aXRsZT4KICAgIDxnIGlkPSI2LjIiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSLlkYrorabmj5DnpLoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjkuMDAwMDAwLCAtNDI4Ni4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9IuW4puWbvuaghyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTI5LjAwMDAwMCwgNDAxMy4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJ3YXJpbmctY2lyY2xlLW8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLCAyNzMuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0iI0Q4RDhEOCIgb3BhY2l0eT0iMCIgeD0iMCIgeT0iMCIgd2lkdGg9IjQyIiBoZWlnaHQ9IjQyIj48L3JlY3Q+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IumAmueUqOWbvuaghy9pbmZvLWNpcmNsZS1vIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjAwMDAwMCwgMy4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbOWkh+S7vSIgc3Ryb2tlPSIjRkZBMjM1IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9IiNGRkZGRkYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY3g9IjE4IiBjeT0iMTgiIHI9IjE5Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI2LjQyMzI3MzksMi4wODg0MzYzIEMzMi4xMTk5MzQ3LDUuMTEwNDA2NjMgMzYsMTEuMTAyMDg0NCAzNiwxOCBDMzYsMjcuOTQxMTI1NSAyNy45NDExMjU1LDM2IDE4LDM2IEMxMy42NjI2OTI2LDM2IDkuNjgzNjg1MTUsMzQuNDY1OTM1MiA2LjU3NTk2MzI1LDMxLjkxMDc5MTIgQzkuMDg5NTQ4NTcsMzMuMjQ0NjgwNCAxMS45NTY1NjcxLDM0IDE1LDM0IEMyNC45NDExMjU1LDM0IDMzLDI1Ljk0MTEyNTUgMzMsMTYgQzMzLDEwLjQ3NzE1MjUgMzAuNTEyNjkzMSw1LjUzNTI0NjY3IDI2LjU5NzE3MSwyLjIzMzM3NDMyIFoiIGlkPSLlvaLnirbnu5PlkIgiIGZpbGw9IiNGRkY1RUEiIGZpbGwtcnVsZT0ibm9uemVybyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0i57yW57uELTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjUwMDAwMCwgMTYuNTAwMDAwKSBzY2FsZSgxLCAtMSkgdHJhbnNsYXRlKC0xNy41MDAwMDAsIC0xNi41MDAwMDApIHRyYW5zbGF0ZSgxNS4wMDAwMDAsIDYuMDAwMDAwKSIgZmlsbD0iI0ZGQTIzNSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLjkwMzY4NTUwNCwyLjUwOTA5MDkxIEMwLjkwMzY4NTUwNCwzLjYxMzY2MDQxIDEuNzk5MTE2LDQuNTA5MDkwOTEgMi45MDM2ODU1LDQuNTA5MDkwOTEgQzQuMDA4MjU1LDQuNTA5MDkwOTEgNC45MDM2ODU1LDMuNjEzNjYwNDEgNC45MDM2ODU1LDIuNTA5MDkwOTEgQzQuOTAzNjg1NSwxLjQwNDUyMTQxIDQuMDA4MjU1LDAuNTA5MDkwOTA5IDIuOTAzNjg1NSwwLjUwOTA5MDkwOSBDMS43OTkxMTYsMC41MDkwOTA5MDkgMC45MDM2ODU1MDQsMS40MDQ1MjE0MSAwLjkwMzY4NTUwNCwyLjUwOTA5MDkxIFoiIGlkPSLot6/lvoQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjc1LDcgTDIuMjUsNyBDMi4xMTI1LDcgMiw3LjE2MjUgMiw3LjM2MTExMTExIEwyLDE5LjYzODg4ODkgQzIsMTkuODM3NSAyLjExMjUsMjAgMi4yNSwyMCBMMy43NSwyMCBDMy44ODc1LDIwIDQsMTkuODM3NSA0LDE5LjYzODg4ODkgTDQsNy4zNjExMTExMSBDNCw3LjE2MjUgMy44ODc1LDcgMy43NSw3IFoiIGlkPSLot6/lvoQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgWarningCircleO as ReactComponent };","import * as React from \"react\";\nfunction SvgInfoCircleDark(props) {\n return <svg width={42} height={42} viewBox=\"0 0 42 42\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g fillRule=\"nonzero\" fill=\"none\"><path d=\"M21 1C9.954 1 1 9.954 1 21s8.954 20 20 20 20-8.954 20-20S32.046 1 21 1zm0 2c9.941 0 18 8.059 18 18s-8.059 18-18 18S3 30.941 3 21 11.059 3 21 3z\" fill=\"#3F75DD\" /><path d=\"M29.423 5.088C35.12 8.11 39 14.102 39 21c0 9.941-8.059 18-18 18a17.926 17.926 0 01-11.424-4.09A17.917 17.917 0 0018 37c9.941 0 18-8.059 18-18a17.961 17.961 0 00-6.403-13.767z\" fill=\"#FFF\" opacity={0.04} /><g fill=\"#3F75DD\"><path d=\"M19 14a2 2 0 104 0 2 2 0 00-4 0zM21.846 18.49h-1.5c-.137 0-.25.163-.25.362V31.13c0 .198.113.36.25.36h1.5c.138 0 .25-.162.25-.36V18.852c0-.199-.112-.361-.25-.361z\" /></g></g></svg>;\n}\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDJweCIgaGVpZ2h0PSI0MnB4IiB2aWV3Qm94PSIwIDAgNDIgNDIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+6YCa55So5Zu+5qCHL2luZm88L3RpdGxlPgogICAgPGcgaWQ9IuaOp+S7tiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IjUu5Y+N6aaILzQuQWxlcnTorablkYrmj5DnpLov5pqX6ImyL+W4pumTvuaOpS3mj5DnpLo0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYuMDAwMDAwLCAtMTYuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSLpgJrnlKjlm77moIcvaW5mbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTYuMDAwMDAwLCAxNi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIGZpbGw9IiNGRkZGRkYiIG9wYWNpdHk9IjAiIHg9IjAiIHk9IjAiIHdpZHRoPSI0MiIgaGVpZ2h0PSI0MiI+PC9yZWN0PgogICAgICAgICAgICAgICAgPGcgaWQ9IumAmueUqOWbvuaghy9pbmZvLWNpcmNsZS1vIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjAwMDAwMCwgMS4wMDAwMDApIiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMCwwIEM4Ljk1NDMwNSwwIDAsOC45NTQzMDUgMCwyMCBDMCwzMS4wNDU2OTUgOC45NTQzMDUsNDAgMjAsNDAgQzMxLjA0NTY5NSw0MCA0MCwzMS4wNDU2OTUgNDAsMjAgQzQwLDguOTU0MzA1IDMxLjA0NTY5NSwwIDIwLDAgWiBNMjAsMiBDMjkuOTQxMTI1NSwyIDM4LDEwLjA1ODg3NDUgMzgsMjAgQzM4LDI5Ljk0MTEyNTUgMjkuOTQxMTI1NSwzOCAyMCwzOCBDMTAuMDU4ODc0NSwzOCAyLDI5Ljk0MTEyNTUgMiwyMCBDMiwxMC4wNTg4NzQ1IDEwLjA1ODg3NDUsMiAyMCwyIFoiIGlkPSJPdmFs5aSH5Lu9IiBmaWxsPSIjM0Y3NUREIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI4LjQyMzI3MzksNC4wODg0MzYzIEMzNC4xMTk5MzQ3LDcuMTEwNDA2NjMgMzgsMTMuMTAyMDg0NCAzOCwyMCBDMzgsMjkuOTQxMTI1NSAyOS45NDExMjU1LDM4IDIwLDM4IEMxNS42NjI2OTI2LDM4IDExLjY4MzY4NTEsMzYuNDY1OTM1MiA4LjU3NTk2MzI1LDMzLjkxMDc5MTIgQzExLjA4OTU0ODYsMzUuMjQ0NjgwNCAxMy45NTY1NjcxLDM2IDE3LDM2IEMyNi45NDExMjU1LDM2IDM1LDI3Ljk0MTEyNTUgMzUsMTggQzM1LDEyLjQ3NzE1MjUgMzIuNTEyNjkzMSw3LjUzNTI0NjY3IDI4LjU5NzE3MSw0LjIzMzM3NDMyIFoiIGlkPSLlvaLnirbnu5PlkIgiIGZpbGw9IiNGRkZGRkYiIG9wYWNpdHk9IjAuMDQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0i57yW57uELTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4LjAwMDAwMCwgMTEuMDAwMDAwKSIgZmlsbD0iIzNGNzVERCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLDIgQzAsMy4xMDQ1Njk1IDAuODk1NDMwNSw0IDIsNCBDMy4xMDQ1Njk1LDQgNCwzLjEwNDU2OTUgNCwyIEM0LDAuODk1NDMwNSAzLjEwNDU2OTUsMCAyLDAgQzAuODk1NDMwNSwwIDAsMC44OTU0MzA1IDAsMiBaIiBpZD0i6Lev5b6EIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yLjg0NjMxNDUsNi40OTA5MDkwOSBMMS4zNDYzMTQ1LDYuNDkwOTA5MDkgQzEuMjA4ODE0NSw2LjQ5MDkwOTA5IDEuMDk2MzE0NSw2LjY1MzQwOTA5IDEuMDk2MzE0NSw2Ljg1MjAyMDIgTDEuMDk2MzE0NSwxOS4xMjk3OTggQzEuMDk2MzE0NSwxOS4zMjg0MDkxIDEuMjA4ODE0NSwxOS40OTA5MDkxIDEuMzQ2MzE0NSwxOS40OTA5MDkxIEwyLjg0NjMxNDUsMTkuNDkwOTA5MSBDMi45ODM4MTQ1LDE5LjQ5MDkwOTEgMy4wOTYzMTQ1LDE5LjMyODQwOTEgMy4wOTYzMTQ1LDE5LjEyOTc5OCBMMy4wOTYzMTQ1LDYuODUyMDIwMiBDMy4wOTYzMTQ1LDYuNjUzNDA5MDkgMi45ODM4MTQ1LDYuNDkwOTA5MDkgMi44NDYzMTQ1LDYuNDkwOTA5MDkgWiIgaWQ9Iui3r+W+hCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgInfoCircleDark as ReactComponent };","import * as React from \"react\";\nfunction SvgErrorCircleDark(props) {\n return <svg width={42} height={42} viewBox=\"0 0 42 42\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><path d=\"M21 1C9.954 1 1 9.954 1 21s8.954 20 20 20 20-8.954 20-20S32.046 1 21 1zm0 2c9.941 0 18 8.059 18 18s-8.059 18-18 18S3 30.941 3 21 11.059 3 21 3z\" fill=\"#D2593F\" /><path d=\"M29.423 5.088C35.12 8.11 39 14.102 39 21c0 9.941-8.059 18-18 18a17.926 17.926 0 01-11.424-4.09A17.917 17.917 0 0018 37c9.941 0 18-8.059 18-18a17.961 17.961 0 00-6.403-13.767z\" fillOpacity={0.04} fill=\"#FFF\" fillRule=\"nonzero\" /><path d=\"M22.177 21.03l5.956-7.1a.18.18 0 00-.139-.297h-1.81a.37.37 0 00-.28.13l-4.912 5.855-4.912-5.856a.363.363 0 00-.28-.13h-1.81a.18.18 0 00-.138.298l5.956 7.1-5.956 7.1a.18.18 0 00.138.297h1.81a.37.37 0 00.28-.13l4.912-5.856 4.913 5.856c.068.082.17.13.279.13h1.81a.18.18 0 00.139-.298l-5.956-7.1z\" fill=\"#D2593F\" /></g></svg>;\n}\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDJweCIgaGVpZ2h0PSI0MnB4IiB2aWV3Qm94PSIwIDAgNDIgNDIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+6YCa55So5Zu+5qCHL2Vycm9yPC90aXRsZT4KICAgIDxnIGlkPSLmjqfku7YiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSLpgJrnlKjlm77moIcvZXJyb3IiPgogICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2iIiBmaWxsPSIjRDhEOEQ4IiBvcGFjaXR5PSIwIiB4PSIwIiB5PSIwIiB3aWR0aD0iNDIiIGhlaWdodD0iNDIiPjwvcmVjdD4KICAgICAgICAgICAgPGcgaWQ9IumAmueUqOWbvuaghy9pbmZvLWNpcmNsZS1vIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjAwMDAwMCwgMS4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMCwwIEM4Ljk1NDMwNSwwIDAsOC45NTQzMDUgMCwyMCBDMCwzMS4wNDU2OTUgOC45NTQzMDUsNDAgMjAsNDAgQzMxLjA0NTY5NSw0MCA0MCwzMS4wNDU2OTUgNDAsMjAgQzQwLDguOTU0MzA1IDMxLjA0NTY5NSwwIDIwLDAgWiBNMjAsMiBDMjkuOTQxMTI1NSwyIDM4LDEwLjA1ODg3NDUgMzgsMjAgQzM4LDI5Ljk0MTEyNTUgMjkuOTQxMTI1NSwzOCAyMCwzOCBDMTAuMDU4ODc0NSwzOCAyLDI5Ljk0MTEyNTUgMiwyMCBDMiwxMC4wNTg4NzQ1IDEwLjA1ODg3NDUsMiAyMCwyIFoiIGlkPSJPdmFs5aSH5Lu9IiBmaWxsPSIjRDI1OTNGIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjguNDIzMjczOSw0LjA4ODQzNjMgQzM0LjExOTkzNDcsNy4xMTA0MDY2MyAzOCwxMy4xMDIwODQ0IDM4LDIwIEMzOCwyOS45NDExMjU1IDI5Ljk0MTEyNTUsMzggMjAsMzggQzE1LjY2MjY5MjYsMzggMTEuNjgzNjg1MSwzNi40NjU5MzUyIDguNTc1OTYzMjUsMzMuOTEwNzkxMiBDMTEuMDg5NTQ4NiwzNS4yNDQ2ODA0IDEzLjk1NjU2NzEsMzYgMTcsMzYgQzI2Ljk0MTEyNTUsMzYgMzUsMjcuOTQxMTI1NSAzNSwxOCBDMzUsMTIuNDc3MTUyNSAzMi41MTI2OTMxLDcuNTM1MjQ2NjcgMjguNTk3MTcxLDQuMjMzMzc0MzIgWiIgaWQ9IuW9oueKtue7k+WQiCIgZmlsbC1vcGFjaXR5PSIwLjA0IiBmaWxsPSIjRkZGRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxnIGlkPSJjbG9zZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuMDAwMDAwLCAxMC4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2iIiBmaWxsPSIjMDAwMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIG9wYWNpdHk9IjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4xNzY1OTExLDEwLjAyOTY2NDIgTDE3LjEzMjY0NSwyLjkzMDA0Nzk1IEMxNy4yMzI0Nzk4LDIuODEyMDYxMzYgMTcuMTQ4NTI3OCwyLjYzMjgxMjUgMTYuOTk0MjM3NywyLjYzMjgxMjUgTDE1LjE4MzU5NzMsMi42MzI4MTI1IEMxNS4wNzY5NTU2LDIuNjMyODEyNSAxNC45NzQ4NTE4LDIuNjgwNDYwOTMgMTQuOTA0NTEzNiwyLjc2MjE0Mzk2IEw5Ljk5MjE4NzI4LDguNjE4MzYzMDMgTDUuMDc5ODYwOTMsMi43NjIxNDM5NiBDNS4wMTE3OTE3NSwyLjY4MDQ2MDkzIDQuOTA5Njg3OTcsMi42MzI4MTI1IDQuODAwNzc3MjcsMi42MzI4MTI1IEwyLjk5MDEzNjg5LDIuNjMyODEyNSBDMi44MzU4NDY3MywyLjYzMjgxMjUgMi43NTE4OTQ3MywyLjgxMjA2MTM2IDIuODUxNzI5NTQsMi45MzAwNDc5NSBMOC44MDc3ODM0MiwxMC4wMjk2NjQyIEwyLjg1MTcyOTU0LDE3LjEyOTI4MDQgQzIuNzUxODk0NzMsMTcuMjQ3MjY3IDIuODM1ODQ2NzMsMTcuNDI2NTE1OSAyLjk5MDEzNjg5LDE3LjQyNjUxNTkgTDQuODAwNzc3MjcsMTcuNDI2NTE1OSBDNC45MDc0MTg5OSwxNy40MjY1MTU5IDUuMDA5NTIyNzcsMTcuMzc4ODY3NCA1LjA3OTg2MDkzLDE3LjI5NzE4NDQgTDkuOTkyMTg3MjgsMTEuNDQwOTY1MyBMMTQuOTA0NTEzNiwxNy4yOTcxODQ0IEMxNC45NzI1ODI4LDE3LjM3ODg2NzQgMTUuMDc0Njg2NiwxNy40MjY1MTU5IDE1LjE4MzU5NzMsMTcuNDI2NTE1OSBMMTYuOTk0MjM3NywxNy40MjY1MTU5IEMxNy4xNDg1Mjc4LDE3LjQyNjUxNTkgMTcuMjMyNDc5OCwxNy4yNDcyNjcgMTcuMTMyNjQ1LDE3LjEyOTI4MDQgTDExLjE3NjU5MTEsMTAuMDI5NjY0MiBaIiBpZD0i6Lev5b6EIiBmaWxsPSIjRDI1OTNGIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\";\nexport { SvgErrorCircleDark as ReactComponent };","import * as React from \"react\";\nfunction SvgSuccessCircleDark(props) {\n return <svg width={42} height={42} viewBox=\"0 0 42 42\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><path d=\"M21 1C9.954 1 1 9.954 1 21s8.954 20 20 20 20-8.954 20-20S32.046 1 21 1zm0 2c9.941 0 18 8.059 18 18s-8.059 18-18 18S3 30.941 3 21 11.059 3 21 3z\" fill=\"#27C346\" /><path d=\"M29.423 5.088C35.12 8.11 39 14.102 39 21c0 9.941-8.059 18-18 18a17.926 17.926 0 01-11.424-4.09A17.917 17.917 0 0018 37c9.941 0 18-8.059 18-18a17.961 17.961 0 00-6.403-13.767z\" fillOpacity={0.04} fill=\"#FFF\" fillRule=\"nonzero\" /><path d=\"M30.191 13.969h-1.606a.732.732 0 00-.577.28L18.534 26.25l-4.542-5.756a.735.735 0 00-.577-.28H11.81a.183.183 0 00-.145.296l6.294 7.974a.738.738 0 001.156 0l11.222-14.221a.182.182 0 00-.145-.294z\" fill=\"#27C346\" /></g></svg>;\n}\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDJweCIgaGVpZ2h0PSI0MnB4IiB2aWV3Qm94PSIwIDAgNDIgNDIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+6YCa55So5Zu+5qCHL3N1Y2Nlc3M8L3RpdGxlPgogICAgPGcgaWQ9IuaOp+S7tiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IumAmueUqOWbvuaghy9zdWNjZXNzIj4KICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0iI0Q4RDhEOCIgb3BhY2l0eT0iMCIgeD0iMCIgeT0iMCIgd2lkdGg9IjQyIiBoZWlnaHQ9IjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIGlkPSLpgJrnlKjlm77moIcvaW5mby1jaXJjbGUtbyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS4wMDAwMDAsIDEuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjAsMCBDOC45NTQzMDUsMCAwLDguOTU0MzA1IDAsMjAgQzAsMzEuMDQ1Njk1IDguOTU0MzA1LDQwIDIwLDQwIEMzMS4wNDU2OTUsNDAgNDAsMzEuMDQ1Njk1IDQwLDIwIEM0MCw4Ljk1NDMwNSAzMS4wNDU2OTUsMCAyMCwwIFogTTIwLDIgQzI5Ljk0MTEyNTUsMiAzOCwxMC4wNTg4NzQ1IDM4LDIwIEMzOCwyOS45NDExMjU1IDI5Ljk0MTEyNTUsMzggMjAsMzggQzEwLjA1ODg3NDUsMzggMiwyOS45NDExMjU1IDIsMjAgQzIsMTAuMDU4ODc0NSAxMC4wNTg4NzQ1LDIgMjAsMiBaIiBpZD0iT3ZhbOWkh+S7vSIgZmlsbD0iIzI3QzM0NiI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTI4LjQyMzI3MzksNC4wODg0MzYzIEMzNC4xMTk5MzQ3LDcuMTEwNDA2NjMgMzgsMTMuMTAyMDg0NCAzOCwyMCBDMzgsMjkuOTQxMTI1NSAyOS45NDExMjU1LDM4IDIwLDM4IEMxNS42NjI2OTI2LDM4IDExLjY4MzY4NTEsMzYuNDY1OTM1MiA4LjU3NTk2MzI1LDMzLjkxMDc5MTIgQzExLjA4OTU0ODYsMzUuMjQ0NjgwNCAxMy45NTY1NjcxLDM2IDE3LDM2IEMyNi45NDExMjU1LDM2IDM1LDI3Ljk0MTEyNTUgMzUsMTggQzM1LDEyLjQ3NzE1MjUgMzIuNTEyNjkzMSw3LjUzNTI0NjY3IDI4LjU5NzE3MSw0LjIzMzM3NDMyIFoiIGlkPSLlvaLnirbnu5PlkIgiIGZpbGwtb3BhY2l0eT0iMC4wNCIgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8ZyBpZD0iY2hlY2siIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwLjAwMDAwMCwgMTAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIiBvcGFjaXR5PSIwIiB4PSIwIiB5PSIwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTkuMTkxMDU5NCwyLjk2ODc1IEwxNy41ODQ5MjE3LDIuOTY4NzUgQzE3LjM1OTc0MDgsMi45Njg3NSAxNy4xNDYwNDg2LDMuMDcyMTQ5NDIgMTcuMDA4MTgyNywzLjI0OTA3NzMyIEw3LjUzNDQ5ODAxLDE1LjI1MDMwMzQgTDIuOTkxODE2NzksOS40OTQ0MDIzNCBDMi44NTE2NTMxMyw5LjMxNzQ3NDQ0IDIuNjQwMjU4NzYsOS4yMTQwNzUwMiAyLjQxNTA3NzgsOS4yMTQwNzUwMiBMMC44MDg5NDAxMjUsOS4yMTQwNzUwMiBDMC42NTQ5ODk4NzcsOS4yMTQwNzUwMiAwLjU2OTk3MjU3NSw5LjM5MTAwMjkyIDAuNjY0MTgwOTM2LDkuNTEwNDg2NjkgTDYuOTU3NzU5MDIsMTcuNDgzNzMwOSBDNy4yNTE4NzI5MywxNy44NTU5Njg4IDcuODE3MTIzMSwxNy44NTU5Njg4IDguMTEzNTM0NzcsMTcuNDgzNzMwOSBMMTkuMzM1ODE4NiwzLjI2Mjg2MzkxIEMxOS40MzAwMjY5LDMuMTQ1Njc3OSAxOS4zNDUwMDk2LDIuOTY4NzUgMTkuMTkxMDU5NCwyLjk2ODc1IFoiIGlkPSLot6/lvoQiIGZpbGw9IiMyN0MzNDYiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\";\nexport { SvgSuccessCircleDark as ReactComponent };","import * as React from \"react\";\nfunction SvgWarningCircleDark(props) {\n return <svg width={42} height={42} viewBox=\"0 0 42 42\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><path d=\"M21 1C9.954 1 1 9.954 1 21s8.954 20 20 20 20-8.954 20-20S32.046 1 21 1zm0 2c9.941 0 18 8.059 18 18s-8.059 18-18 18S3 30.941 3 21 11.059 3 21 3z\" fill=\"#D5A21D\" /><path d=\"M29.423 5.088C35.12 8.11 39 14.102 39 21c0 9.941-8.059 18-18 18a17.926 17.926 0 01-11.424-4.09A17.917 17.917 0 0018 37c9.941 0 18-8.059 18-18a17.961 17.961 0 00-6.403-13.767z\" fillOpacity={0.04} fill=\"#FFF\" fillRule=\"nonzero\" /><g fill=\"#D5A21D\"><path d=\"M18.904 27.49a2 2 0 114 0 2 2 0 01-4 0zM21.75 23h-1.5c-.137 0-.25-.162-.25-.361V10.36c0-.198.113-.361.25-.361h1.5c.138 0 .25.163.25.361V22.64c0 .199-.112.361-.25.361z\" /></g></g></svg>;\n}\nexport default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDJweCIgaGVpZ2h0PSI0MnB4IiB2aWV3Qm94PSIwIDAgNDIgNDIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+6YCa55So5Zu+5qCHL3dhcm5pbmc8L3RpdGxlPgogICAgPGcgaWQ9IuaOp+S7tiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IumAmueUqOWbvuaghy93YXJuaW5nIj4KICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0iI0Q4RDhEOCIgb3BhY2l0eT0iMCIgeD0iMCIgeT0iMCIgd2lkdGg9IjQyIiBoZWlnaHQ9IjQyIj48L3JlY3Q+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMDAwMDAwLCAxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTIwLDAgQzguOTU0MzA1LDAgMCw4Ljk1NDMwNSAwLDIwIEMwLDMxLjA0NTY5NSA4Ljk1NDMwNSw0MCAyMCw0MCBDMzEuMDQ1Njk1LDQwIDQwLDMxLjA0NTY5NSA0MCwyMCBDNDAsOC45NTQzMDUgMzEuMDQ1Njk1LDAgMjAsMCBaIE0yMCwyIEMyOS45NDExMjU1LDIgMzgsMTAuMDU4ODc0NSAzOCwyMCBDMzgsMjkuOTQxMTI1NSAyOS45NDExMjU1LDM4IDIwLDM4IEMxMC4wNTg4NzQ1LDM4IDIsMjkuOTQxMTI1NSAyLDIwIEMyLDEwLjA1ODg3NDUgMTAuMDU4ODc0NSwyIDIwLDIgWiIgaWQ9Ik92YWzlpIfku70iIGZpbGw9IiNENUEyMUQiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC40MjMyNzM5LDQuMDg4NDM2MyBDMzQuMTE5OTM0Nyw3LjExMDQwNjYzIDM4LDEzLjEwMjA4NDQgMzgsMjAgQzM4LDI5Ljk0MTEyNTUgMjkuOTQxMTI1NSwzOCAyMCwzOCBDMTUuNjYyNjkyNiwzOCAxMS42ODM2ODUxLDM2LjQ2NTkzNTIgOC41NzU5NjMyNSwzMy45MTA3OTEyIEMxMS4wODk1NDg2LDM1LjI0NDY4MDQgMTMuOTU2NTY3MSwzNiAxNywzNiBDMjYuOTQxMTI1NSwzNiAzNSwyNy45NDExMjU1IDM1LDE4IEMzNSwxMi40NzcxNTI1IDMyLjUxMjY5MzEsNy41MzUyNDY2NyAyOC41OTcxNzEsNC4yMzMzNzQzMiBaIiBpZD0i5b2i54q257uT5ZCIIiBmaWxsLW9wYWNpdHk9IjAuMDQiIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+PC9wYXRoPgogICAgICAgICAgICAgICAgPGcgaWQ9Iue8lue7hC0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOS45MDM2ODYsIDE4Ljc0NTQ1NSkgc2NhbGUoMSwgLTEpIHRyYW5zbGF0ZSgtMTkuOTAzNjg2LCAtMTguNzQ1NDU1KSB0cmFuc2xhdGUoMTcuOTAzNjg2LCA5LjAwMDAwMCkiIGZpbGw9IiNENUEyMUQiPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLDIgQzAsMy4xMDQ1Njk1IDAuODk1NDMwNSw0IDIsNCBDMy4xMDQ1Njk1LDQgNCwzLjEwNDU2OTUgNCwyIEM0LDAuODk1NDMwNSAzLjEwNDU2OTUsMCAyLDAgQzAuODk1NDMwNSwwIDAsMC44OTU0MzA1IDAsMiBaIiBpZD0i6Lev5b6EIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIuODQ2MzE0NSw2LjQ5MDkwOTA5IEwxLjM0NjMxNDUsNi40OTA5MDkwOSBDMS4yMDg4MTQ1LDYuNDkwOTA5MDkgMS4wOTYzMTQ1LDYuNjUzNDA5MDkgMS4wOTYzMTQ1LDYuODUyMDIwMiBMMS4wOTYzMTQ1LDE5LjEyOTc5OCBDMS4wOTYzMTQ1LDE5LjMyODQwOTEgMS4yMDg4MTQ1LDE5LjQ5MDkwOTEgMS4zNDYzMTQ1LDE5LjQ5MDkwOTEgTDIuODQ2MzE0NSwxOS40OTA5MDkxIEMyLjk4MzgxNDUsMTkuNDkwOTA5MSAzLjA5NjMxNDUsMTkuMzI4NDA5MSAzLjA5NjMxNDUsMTkuMTI5Nzk4IEwzLjA5NjMxNDUsNi44NTIwMjAyIEMzLjA5NjMxNDUsNi42NTM0MDkwOSAyLjk4MzgxNDUsNi40OTA5MDkwOSAyLjg0NjMxNDUsNi40OTA5MDkwOSBaIiBpZD0i6Lev5b6EIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\";\nexport { SvgWarningCircleDark as ReactComponent };","import React, { CSSProperties, useCallback } from \"react\";\nimport classnames from \"classnames\";\nimport { useCurrentTheme } from \"@next-core/brick-kit\";\nimport Icon, {\n CheckCircleFilled,\n CloseCircleFilled,\n CloseOutlined,\n ExclamationCircleFilled,\n InfoCircleFilled,\n InfoCircleOutlined,\n UpOutlined,\n} from \"@ant-design/icons\";\nimport { Alert } from \"antd\";\nimport cssStyle from \"./style.module.css\";\nimport { AlertType } from \"./index\";\nimport { ReactComponent as BigInfoCircleOutlined } from \"../images/info-circle-o.svg\";\nimport { ReactComponent as BigErrorCircleOutlined } from \"../images/error-circle-o.svg\";\nimport { ReactComponent as BigSuccessCircleOutlined } from \"../images/success-circle-o.svg\";\nimport { ReactComponent as BigWarningCircleOutlined } from \"../images/warning-circle-o.svg\";\n\nimport { ReactComponent as BigInfoCircleOutlinedDark } from \"../images/info-circle-dark.svg\";\nimport { ReactComponent as BigErrorCircleOutlinedDark } from \"../images/error-circle-dark.svg\";\nimport { ReactComponent as BigSuccessCircleOutlinedDark } from \"../images/success-circle-dark.svg\";\nimport { ReactComponent as BigWarningCircleOutlinedDark } from \"../images/warning-circle-dark.svg\";\n\ninterface BrickAlertProps {\n message: string;\n type: AlertType;\n showIcon?: boolean;\n closable?: boolean;\n description?: string;\n enableDescSlot?: boolean;\n closeOnce?: boolean;\n onClose?: () => void;\n noBorderRadio?: boolean;\n enableMessageSlot?: boolean;\n enableActionSlot?: boolean;\n iconSize?: \"big\" | \"small\" | \"default\";\n messageStyle?: CSSProperties;\n foldDesc?: boolean;\n foldDescLabel?: string;\n}\n\nexport function BrickAlert(props: BrickAlertProps): React.ReactElement {\n const [show, setShow] = React.useState<boolean>(false);\n const theme = useCurrentTheme();\n const onClose = () => {\n props.onClose?.();\n };\n // istanbul ignore next\n const message = props.enableMessageSlot ? (\n <>\n {props.foldDesc ? (\n <>\n <span style={{ ...props.messageStyle }}>\n <slot name=\"message\"></slot>\n </span>\n <span\n onClick={() => {\n setShow(!show);\n }}\n style={{\n marginLeft: \"5px\",\n color: \"var(--bg-color-button-link)\",\n cursor: \"pointer\",\n }}\n >\n <span style={{ ...props.messageStyle }}>\n {props.foldDescLabel ?? \"故障排查\"}\n <UpOutlined\n rotate={show ? 0 : 180}\n style={{\n marginLeft: \"4px\",\n lineHeight: \"0px\",\n fontSize: \"12px\",\n }}\n />\n </span>\n </span>\n </>\n ) : (\n <div>\n <slot name=\"message\"></slot>\n </div>\n )}\n </>\n ) : (\n <span style={{ ...props.messageStyle }}>{props.message}</span>\n );\n const action = props.enableActionSlot ? (\n <div>\n <slot name=\"action\"></slot>\n </div>\n ) : null;\n\n let desc = props.enableDescSlot ? (\n <div>\n <slot name=\"description\"></slot>\n </div>\n ) : (\n props.description\n );\n if (props.foldDesc) {\n desc = <div style={{ display: show ? \"block\" : \"none\" }}>{desc}</div>;\n }\n\n const text =\n props.closeOnce && props.closable ? (\n <span style={{ color: \"var(--text-color-link)\" }}>\n 不再提示 <CloseOutlined style={{ color: \"var(--text-color-link)\" }} />\n </span>\n ) : (\n \"\"\n );\n // istanbul ignore next\n\n const getThemeIcon = useCallback(\n (\n lightIcon: React.ReactElement,\n darkIcon: React.ReactElement\n ): React.ReactElement => {\n return theme == \"dark-v2\" ? darkIcon : lightIcon;\n },\n [theme]\n );\n const customIcon = () => {\n let icon: React.ReactNode;\n let iconRender: any;\n if (props.iconSize === \"big\") {\n switch (props.type) {\n case \"info\":\n iconRender = getThemeIcon(\n <BigInfoCircleOutlined />,\n <BigInfoCircleOutlinedDark />\n );\n break;\n case \"success\":\n iconRender = getThemeIcon(\n <BigSuccessCircleOutlined />,\n <BigSuccessCircleOutlinedDark />\n );\n break;\n case \"warning\":\n iconRender = getThemeIcon(\n <BigWarningCircleOutlined />,\n <BigWarningCircleOutlinedDark />\n );\n break;\n case \"error\":\n iconRender = getThemeIcon(\n <BigErrorCircleOutlined />,\n <BigErrorCircleOutlinedDark />\n );\n break;\n }\n icon = <Icon component={() => iconRender} />;\n }\n if (props.iconSize === \"small\") {\n const iconStyle: CSSProperties = { position: \"relative\", top: \"5px\" };\n const componentStyrle: CSSProperties = { fontSize: \"14px\" };\n switch (props.type) {\n case \"info\":\n iconRender = <InfoCircleFilled style={componentStyrle} />;\n break;\n case \"success\":\n iconRender = <CheckCircleFilled style={componentStyrle} />;\n break;\n case \"warning\":\n iconRender = <ExclamationCircleFilled style={componentStyrle} />;\n break;\n case \"error\":\n iconRender = <CloseCircleFilled style={componentStyrle} />;\n break;\n }\n icon = <Icon style={iconStyle} component={() => iconRender} />;\n }\n return icon;\n };\n return (\n <Alert\n className={classnames(\n {\n [cssStyle.closeOnce]: props.closeOnce && props.closable,\n [cssStyle.noDescription]: !props.description && !props.enableDescSlot,\n },\n props.noBorderRadio ? cssStyle.noBorderRadio : null\n )}\n type={props.type}\n message={message}\n showIcon={props.showIcon}\n closable={props.closable}\n onClose={onClose}\n description={desc}\n closeText={text}\n action={action}\n {...(customIcon() ? { icon: customIcon() } : {})}\n />\n );\n}\n","import React, { CSSProperties } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n UpdatingElement,\n property,\n getHistory,\n} from \"@next-core/brick-kit\";\nimport { JsonStorage } from \"@next-libs/storage\";\nimport { BrickAlert } from \"./BrickAlert\";\n\nconst storage = new JsonStorage(localStorage);\nconst LOCAL_STORAGE_PREFIX = \"brick-alert\";\n\nexport type AlertType = \"success\" | \"error\" | \"info\" | \"warning\";\n\n/**\n * @id presentational-bricks.brick-alert\n * @name presentational-bricks.brick-alert\n * @docKind brick\n * @description 警告提示,可配置颜色类型,描述和是否显示图标\n * @author ice\n * @slots\n * description:仅当 `enableDescSlot` 为真,才存在该插槽\n * @history\n * 1.159.0:新增属性:`stripLocalStorageUrlSuffix`\n * 1.155.0:新增属性: `enableMessageSlot` `noBorderRadio` `iconSize` `messageStyle` `foldDesc` `enableActionSlot`\n * 1.96.0:新增属性:`enableDescSlot`\n * 1.72.0:新增属性:`localStorageKey`\n * @memo\n * @noInheritDoc\n */\nexport class BrickAlertElement 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 CSSProperties\n * @required false\n * @default -\n * @description 标题样式,对message插槽有效\n * @group ui\n */\n @property({ attribute: false })\n messageStyle: CSSProperties = {};\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 警告提示的辅助性文字介绍\n * @group basic\n */\n @property()\n description: string;\n\n /**\n * @kind AlertType\n * @required true\n * @default -\n * @description 指定警告提示的样式,有四种选择 success、info、warning、error\n * @editor radio\n * @editorProps {\n * \"optionType\": \"button\",\n * \"options\": [\n * {\n * \"value\": \"success\",\n * \"icon\": {\n * \"lib\": \"antd\",\n * \"icon\": \"check-circle\",\n * \"theme\": \"outlined\"\n * }\n * },\n * {\n * \"value\": \"error\",\n * \"icon\": {\n * \"lib\": \"antd\",\n * \"icon\": \"close-circle\",\n * \"theme\": \"outlined\"\n * }\n * },\n * {\n * \"value\": \"info\",\n * \"icon\": {\n * \"lib\": \"antd\",\n * \"icon\": \"exclamation-circle\",\n * \"theme\": \"outlined\"\n * }\n * },\n * {\n * \"value\": \"warning\",\n * \"icon\": {\n * \"lib\": \"antd\",\n * \"icon\": \"warning\",\n * \"theme\": \"outlined\"\n * }\n * }\n * ]\n * }\n * @group basic\n */\n @property()\n type: AlertType;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 是否显示辅助图标\n * @group basic\n */\n @property({ type: Boolean })\n showIcon: boolean;\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 是否启用 description 插槽点,启用后属性 `description` 无效\n * @group advanced\n */\n @property({ type: Boolean })\n enableDescSlot: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否启用 message 插槽点,启用后属性 `message` 无效\n * @group advanced\n */\n @property({ type: Boolean })\n enableMessageSlot: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否启用 action 插槽点\n * @group advanced\n */\n @property({ type: Boolean })\n enableActionSlot: boolean;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 当设置该属性时,且 `closable` 为真,用户点击关闭后写入 localStorage(浏览器存储), 之后就不再显示该警告提示。以页面 url 为命名空间,注意同一页面下该值的唯一性。\n * @group advanced\n */\n @property()\n localStorageKey: string;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 搭配`localStorageKey`使用,为true时,关闭localStorageKey的url命名空间。\n * @group advanced\n */\n @property({ type: Boolean })\n stripLocalStorageUrlSuffix: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default -\n * @description 描述区折叠模式,仅`enableMessageSlot`为true时可用\n * @group advanced\n */\n @property({ attribute: false })\n foldDesc: boolean;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 设置描述区折叠模式的标签文案\n * @group advanced\n */\n @property({ type: String })\n foldDescLabel: string;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否关闭圆角\n * @group advanced\n */\n @property({ type: Boolean })\n noBorderRadio: boolean;\n\n /**\n * @kind \"big\"|\"small\"|\"default\"\n * @required false\n * @default -\n * @description icon大小,为big时使用大图标,否则为根据是否有描述来渲染大小的默认图标\n * @enums \"big\"|\"small\"|\"default\"\n * @group advanced\n */\n @property()\n iconSize: \"big\" | \"small\" | \"default\";\n\n private key = \"\";\n private pseudoSlotMounted = {\n message: false,\n description: false,\n action: false,\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 onClose = () => {\n if (this.key) {\n storage.setItem(this.key, true);\n this._render();\n }\n };\n\n protected _render(): void {\n const key = this.localStorageKey;\n if (key) {\n const url = getHistory().location.pathname;\n this.key = this.stripLocalStorageUrlSuffix\n ? `${LOCAL_STORAGE_PREFIX}-${key}`\n : `${LOCAL_STORAGE_PREFIX}-${key}-${url}`;\n const hide = storage.getItem(this.key);\n if (hide) {\n this.style.display = \"none\";\n }\n }\n if (this.style.display === \"none\") return;\n const eleMap: Record<string, any> = {\n message: [],\n action: [],\n description: [],\n };\n for (const ele of this.children) {\n if (ele.slot === \"message\") eleMap.message.push(ele);\n if (ele.slot === \"action\") eleMap.action.push(ele);\n if (ele.slot === \"description\") eleMap.description.push(ele);\n }\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickAlert\n type={this.type}\n message={this.message}\n showIcon={this.showIcon}\n closable={this.closable}\n description={this.description}\n onClose={this.onClose}\n closeOnce={!!this.localStorageKey}\n enableDescSlot={this.enableDescSlot}\n noBorderRadio={this.noBorderRadio}\n enableMessageSlot={this.enableMessageSlot}\n enableActionSlot={this.enableActionSlot}\n iconSize={this.iconSize}\n messageStyle={this.messageStyle}\n foldDesc={this.foldDesc}\n foldDescLabel={this.foldDescLabel}\n />\n </BrickWrapper>,\n this,\n // istanbul ignore next\n () => {\n if (this.enableMessageSlot) {\n this.renderPseudoSlot(eleMap.message, \"message\");\n }\n if (this.enableActionSlot) {\n this.renderPseudoSlot(eleMap.action, \"action\");\n }\n if (this.enableDescSlot) {\n this.renderPseudoSlot(eleMap.description, \"description\");\n }\n }\n );\n }\n }\n // istanbul ignore next\n private renderPseudoSlot = (\n nodes: Element[],\n slotName: \"message\" | \"action\" | \"description\"\n ) => {\n if (this.pseudoSlotMounted[slotName]) return;\n this.pseudoSlotMounted[slotName] = true;\n\n if (nodes) {\n const slot = this.querySelector(`slot[name=${slotName}]`);\n if (slot) {\n const div = slot.parentNode;\n div.append(...nodes);\n }\n }\n };\n}\n\ncustomElements.define(\"presentational-bricks.brick-alert\", BrickAlertElement);\n","export enum EmptyResultStatus {\n BrowserTooOld = \"browser-too-old\",\n Empty = \"empty\",\n NoData = \"no-data\",\n NoHistoryVersion = \"no-history-version\",\n NoVisitRecord = \"no-visit-record\",\n SearchEmpty = \"search-empty\",\n WelcomeToCreate = \"welcome-to-create\",\n}\n","import { CSSProperties } from \"react\";\nimport { IconSize } from \"../brick-result/components/IllustrationWrapper\";\nexport enum BrickResultStatus {\n Success = \"success\",\n Error = \"error\",\n Info = \"info\",\n Warning = \"warning\",\n E404 = \"404\",\n E403 = \"403\",\n E500 = \"500\",\n}\n\nexport enum EmptyResultStatus {\n BrowserTooOld = \"browser-too-old\",\n Empty = \"empty\",\n NoData = \"no-data\",\n NoHistoryVersion = \"no-history-version\",\n NoVisitRecord = \"no-visit-record\",\n SearchEmpty = \"search-empty\",\n WelcomeToCreate = \"welcome-to-create\",\n}\n\nexport type IllustrationsStatus = \"illustrations\";\n\nexport interface IllustrationsConfig {\n imageStyle?: CSSProperties;\n name?: string;\n category?: string;\n size?: IconSize;\n}\n","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, { 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 React, { CSSProperties } from \"react\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\nimport { Result } from \"antd\";\nimport { ResultStatusType } from \"antd/lib/result\";\nimport { EmptyResultStatus } from \"@next-libs/basic-components/EmptyResultStatus\";\nimport {\n BrickResultStatus,\n IllustrationsStatus,\n} from \"../interfaces/brick-result\";\nimport {\n IconSize,\n IllustrationWrapper,\n} from \"./components/IllustrationWrapper\";\nexport interface IllustrationsConfig {\n imageStyle?: CSSProperties;\n name?: string;\n category?: string;\n size?: IconSize;\n}\n\ninterface BrickResultProps {\n status: BrickResultStatus | EmptyResultStatus | IllustrationsStatus;\n title?: string;\n subTitle?: string;\n icon?: string;\n illustrationsConfig?: IllustrationsConfig;\n useNewIllustration?: boolean;\n emptyResultSize?: IconSize;\n}\n\nconst emptyResultStatusMap: {\n [key in EmptyResultStatus]: { name: string; category: string };\n} = {\n [EmptyResultStatus.BrowserTooOld]: {\n name: \"browser-version-low\",\n category: \"easyops2\",\n },\n [EmptyResultStatus.NoData]: { name: \"no-content\", category: \"easyops2\" },\n [EmptyResultStatus.Empty]: { name: \"create-content\", category: \"easyops2\" },\n [EmptyResultStatus.NoHistoryVersion]: {\n name: \"no-history\",\n category: \"easyops2\",\n },\n [EmptyResultStatus.NoVisitRecord]: {\n name: \"search-no-content-dynamic\",\n category: \"easyops2\",\n },\n [EmptyResultStatus.SearchEmpty]: {\n name: \"search-empty\",\n category: \"easyops2\",\n },\n [EmptyResultStatus.WelcomeToCreate]: {\n name: \"add-app\",\n category: \"easyops2\",\n },\n};\n\nexport function BrickResult(props: BrickResultProps): React.ReactElement {\n const emptyResultStatus = Object.values(EmptyResultStatus);\n const brickResultStatus = Object.values(BrickResultStatus);\n const icon = props.icon ? <LegacyIcon type={props.icon} /> : \"\";\n\n return emptyResultStatus.includes(props.status as EmptyResultStatus) ? (\n <Result\n title={props.title}\n subTitle={props.subTitle}\n icon={\n <IllustrationWrapper\n useNewIllustration={props.useNewIllustration}\n size={props.emptyResultSize || IconSize.Middle}\n {...emptyResultStatusMap[props.status as EmptyResultStatus]}\n />\n }\n >\n <slot id=\"content\" name=\"content\"></slot>\n </Result>\n ) : props.status === \"illustrations\" ? (\n <Result\n title={props.title}\n subTitle={props.subTitle}\n status={props.status as ResultStatusType}\n icon={\n <IllustrationWrapper\n useNewIllustration={props.useNewIllustration}\n {...(props.illustrationsConfig || {})}\n />\n }\n >\n <slot id=\"content\" name=\"content\"></slot>\n </Result>\n ) : brickResultStatus.includes(props.status as BrickResultStatus) ? (\n <Result\n title={props.title}\n subTitle={props.subTitle}\n status={props.status as ResultStatusType}\n {...(icon ? { icon } : {})}\n >\n <slot id=\"content\" name=\"content\"></slot>\n </Result>\n ) : null;\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { BrickResult } from \"./BrickResult\";\nimport style from \"./index.shadow.less\";\nimport {\n BrickResultStatus,\n EmptyResultStatus,\n IllustrationsStatus,\n IllustrationsConfig,\n} from \"../interfaces/brick-result\";\nimport { IconSize } from \"./components/IllustrationWrapper\";\n/**\n * @id presentational-bricks.brick-result\n * @name presentational-bricks.brick-result\n * @docKind brick\n * @description 结果页面,可配置其状态,标题,次要标题和自定义图标\n * @author ice\n * @slots\n * content: 提供 content 插槽\n * @history\n * 1.54.0:新增状态,`EmptyResultStatus`, 与规范对齐\n * @memo\n * @noInheritDoc\n */\n\nexport class BrickResultElement extends UpdatingElement {\n private _mountPoint: HTMLElement;\n\n /**\n * @required true\n * @default -\n * @description 结果的状态, 决定图标和颜色;设置的值必须符合类型要求,否则返回空元素\n * @group basic\n */\n @property({ type: String })\n status: BrickResultStatus | EmptyResultStatus | IllustrationsStatus;\n\n /**\n * @required false\n * @description 主标题文字\n * @group basic\n */\n @property()\n customTitle: string;\n\n /**\n * @required false\n * @description 次标题文字\n * @group basic\n */\n @property()\n subTitle: string;\n\n /**\n * @required false\n * @default -\n * @description [自定义图标](https://ant.design/components/icon-cn/), 仅当 status 为 `BrickResultStatus` 时有效\n * @group ui\n */\n @property()\n icon: string;\n\n /**\n * @required false\n * @default {}\n * @description 自定义插画配置,size默认为middle,推荐使用size控制插画尺寸,可通过imageStyle覆盖size实现自定义大小(不推荐)\n * @group other\n */\n @property({ attribute: false })\n illustrationsConfig: IllustrationsConfig = {};\n\n /**\n * @default true\n * @required false\n * @description 在插画库的default分类下,使用新版本的图标替换default分类下图标\n * @group other\n */\n @property({ attribute: false })\n useNewIllustration = true;\n\n /**\n * @required false\n * @description status为EmptyResultStatus时,设置插画的尺寸\n * @group other\n */\n @property()\n emptyResultSize: IconSize;\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._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 <BrickResult\n title={this.customTitle}\n status={this.status as BrickResultStatus}\n subTitle={this.subTitle}\n icon={this.icon}\n illustrationsConfig={this.illustrationsConfig}\n useNewIllustration={this.useNewIllustration}\n emptyResultSize={this.emptyResultSize}\n />\n </BrickWrapper>,\n this._mountPoint\n );\n }\n }\n}\n\ncustomElements.define(\"presentational-bricks.brick-result\", BrickResultElement);\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!./DropdownSelect.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, { useCallback, useMemo, useState } from \"react\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\nimport { Menu, Dropdown, Popover } from \"antd\";\nimport { parseTemplate } from \"@next-libs/cmdb-utils\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { get, isArray, isEmpty } from \"lodash\";\nimport styles from \"./DropdownSelect.module.css\";\nimport { Option } from \"../interfaces\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { BrickAsComponent, EasyopsEmpty } from \"@next-core/brick-kit\";\nimport classnames from \"classnames\";\ninterface DropdownSelectProps {\n dataSource?: any[];\n value?: any;\n label?: string;\n labelFontSize?: string;\n placeholder?: string;\n optionTitle?: string;\n optionContent?: string;\n valuePath?: string;\n options?: Option[];\n onChange?(value: any, item: any): void;\n selectedKeys?: string[];\n defaultSelectedKeys?: string[];\n multipleSelect?: boolean;\n onSelect?: (keys: any) => void;\n buttonIcon?: any;\n multipleLabel?: string;\n dropdownButtonType?: \"default\" | \"shape\";\n disabled?: boolean;\n heightFix?: boolean;\n tipBrick?: { useBrick: UseBrickConf };\n minSelectedItemLength?: number;\n selectTipText?: string;\n selectBoxStyle?: React.CSSProperties;\n dropdownTriggerStyle?: React.CSSProperties;\n hideLabel?: boolean;\n}\n\nexport function DropdownSelect(props: DropdownSelectProps): React.ReactElement {\n let {\n dataSource,\n value,\n labelFontSize,\n placeholder,\n optionTitle,\n optionContent,\n valuePath,\n options,\n selectTipText,\n selectBoxStyle,\n hideLabel,\n } = props;\n if (!dataSource) {\n dataSource = [];\n }\n if (!optionTitle) {\n optionTitle = \"#{item}\";\n }\n if (!valuePath) {\n valuePath = \"item\";\n }\n const [selectedKeys, setSelectedKeys] = React.useState<any[]>(\n props.selectedKeys\n );\n const selectedItem = useMemo(\n () =>\n options\n ? options.find((option) => option.value === value)\n : dataSource.find((item) => get({ item }, valuePath) === value),\n [value]\n );\n const [visible, setVisible] = useState(false);\n\n const onClick = (item: any) => {\n if (props.onChange) {\n props.onChange(options ? item.value : get({ item }, valuePath), item);\n }\n\n setVisible(false);\n };\n\n const label = useMemo(() => {\n if (selectedItem) {\n if (options) {\n return selectedItem.label;\n } else {\n let _label = props.label;\n\n if (!_label) {\n _label = optionTitle;\n }\n\n return parseTemplate(_label, { item: selectedItem });\n }\n } else {\n return \"\";\n }\n }, [selectedItem, props.label, optionTitle]);\n const menu = useMemo(\n () => (\n <Menu\n style={{\n ...(props.heightFix\n ? { maxHeight: \"300px\", overflow: \"scroll\" }\n : {}),\n ...selectBoxStyle,\n }}\n className={props.dropdownButtonType === \"shape\" && styles.menuBox}\n >\n {selectTipText && (\n <div className={styles.selectTipText}>{selectTipText}</div>\n )}\n {options\n ? options.map((option) => (\n <Menu.Item\n className={option === selectedItem ? \"active\" : undefined}\n onClick={(e) => onClick(option)}\n key={String(option.value)}\n >\n <h4 className={styles.optionTitle}>\n <GeneralIcon\n style={{ marginRight: \"7px\" }}\n icon={option.icon}\n />\n {option.label}\n </h4>\n {option.content && (\n <p className={styles.optionContent}>{option.content}</p>\n )}\n </Menu.Item>\n ))\n : dataSource.map((item, index) => {\n const context = { item };\n\n return (\n <Menu.Item\n className={item === selectedItem ? \"active\" : undefined}\n onClick={(e) => onClick(item)}\n key={String(get(context, valuePath))}\n >\n <div style={{ display: \"flex\" }}>\n <div style={{ flex: 1 }}>\n <h4 className={styles.optionTitle}>\n {parseTemplate(optionTitle, context)}\n </h4>\n {optionContent && (\n <p className={styles.optionContent}>\n {parseTemplate(optionContent, context)}\n </p>\n )}\n </div>\n {props.dropdownButtonType === \"shape\" &&\n item === selectedItem && (\n <div style={{ width: \"20px\", margin: \"auto 0\" }}>\n <GeneralIcon\n style={{ marginRight: \"7px\" }}\n icon={{\n lib: \"antd\",\n icon: \"check\",\n theme: \"outlined\",\n color: \"#167be0\",\n }}\n />\n </div>\n )}\n </div>\n </Menu.Item>\n );\n })}\n </Menu>\n ),\n [options, dataSource, selectedItem, optionTitle, optionContent]\n );\n const multiSelectMenu = useMemo(() => {\n return (\n <Menu\n style={{ maxHeight: \"300px\", overflow: \"scroll\", ...selectBoxStyle }}\n selectedKeys={props.selectedKeys}\n defaultSelectedKeys={props.selectedKeys}\n selectable\n multiple={true}\n onSelect={\n // istanbul ignore next\n (e) => {\n setSelectedKeys(e.selectedKeys);\n props.onSelect(e.selectedKeys);\n }\n }\n onDeselect={\n // istanbul ignore next\n (e) => {\n setSelectedKeys(e.selectedKeys);\n props.onSelect(e.selectedKeys);\n }\n }\n className={props.dropdownButtonType === \"shape\" && styles.menuBox}\n >\n {selectTipText && (\n <div className={styles.selectTipText}>{selectTipText}</div>\n )}\n {options\n ? options.map((option) => (\n <Menu.Item key={option.value}>\n <h4 className={styles.optionTitle}>{option.label}</h4>\n {option.content && (\n <p className={styles.optionContent}>{option.content}</p>\n )}\n </Menu.Item>\n ))\n : dataSource.map((item, index) => {\n const context = { item };\n return (\n <Menu.Item\n disabled={\n selectedKeys?.length <= props.minSelectedItemLength &&\n selectedKeys?.includes(\n item[\n valuePath && valuePath?.split(\".\")?.[1]\n ? valuePath?.split(\".\")?.[1]\n : \"value\"\n ]\n )\n }\n key={String(get(context, valuePath))}\n >\n <div style={{ display: \"flex\" }}>\n <div style={{ flex: 1 }}>\n <h4 className={styles.optionTitle}>\n {parseTemplate(optionTitle, context)}\n </h4>\n {optionContent && (\n <p className={styles.optionContent}>\n {parseTemplate(optionContent, context)}\n </p>\n )}\n </div>\n {props.dropdownButtonType === \"shape\" &&\n selectedKeys.includes(\n item[\n valuePath && valuePath?.split(\".\")?.[1]\n ? valuePath?.split(\".\")?.[1]\n : \"value\"\n ]\n ) && (\n <div style={{ width: \"20px\", margin: \"auto 0\" }}>\n <GeneralIcon\n style={{ marginRight: \"7px\" }}\n icon={{\n lib: \"antd\",\n icon: \"check\",\n theme: \"outlined\",\n color: \"#167be0\",\n }}\n />\n </div>\n )}\n </div>\n </Menu.Item>\n );\n })}\n </Menu>\n );\n }, [\n options,\n dataSource,\n selectedItem,\n optionTitle,\n optionContent,\n props.selectedKeys,\n props.defaultSelectedKeys,\n ]);\n const emptyImage = useMemo(() => {\n return (\n <div\n style={{\n padding: \"10px 0\",\n background: \"var(--color-fill-bg-container-4)\",\n }}\n >\n <EasyopsEmpty></EasyopsEmpty>\n </div>\n );\n }, []);\n const isNotEmptyArr = useCallback((arr): boolean => {\n if (!isArray(arr)) return false;\n return !isEmpty(arr);\n }, []);\n return (\n <Dropdown\n overlay={\n isNotEmptyArr(props.options) || isNotEmptyArr(props.dataSource)\n ? props.multipleSelect\n ? multiSelectMenu\n : menu\n : emptyImage\n }\n trigger={[\"click\"]}\n disabled={props.disabled}\n visible={visible}\n onVisibleChange={(visible) => {\n setVisible(visible);\n }}\n placement={\"bottomLeft\"}\n >\n {props.dropdownButtonType === \"shape\" ? (\n <div\n className={classnames(\n styles.dropdownTrigger,\n styles.dropdownTriggerShape\n )}\n style={{\n backgroundColor: props.disabled\n ? \"var(--dropdown-select-shape-type-disable-bg)\"\n : \"var(--color-fill-bg-container-1)\",\n }}\n data-testid=\"dropdown-trigger-multiple\"\n >\n {props.buttonIcon && (\n <GeneralIcon\n style={{ marginRight: \"7px\" }}\n icon={props.buttonIcon}\n />\n )}\n <div style={{ height: \"50px\" }}>\n <div className={styles.placeholder}>\n <span>{placeholder}</span>\n <span\n onClick={(e) => {\n // istanbul ignore next\n e.stopPropagation();\n }}\n >\n {props.tipBrick?.useBrick && (\n <Popover\n content={\n <div style={{ width: \"300px\" }}>\n <BrickAsComponent\n useBrick={props.tipBrick?.useBrick}\n ></BrickAsComponent>\n </div>\n }\n >\n <span\n style={{\n margin: \"0 10px\",\n display: \"inline-block\",\n cursor: \"pointer\",\n }}\n >\n <GeneralIcon\n style={{ marginRight: \"7px\" }}\n icon={{\n lib: \"antd\",\n icon: \"question - circle\",\n theme: \"filled\",\n color: \"rgb(140, 140, 140)\",\n }}\n />\n </span>\n </Popover>\n )}\n </span>\n </div>\n <div className={styles.dropdownLabelBox}>\n {props.multipleSelect ? props.multipleLabel : label}\n </div>\n </div>\n <LegacyIcon\n type={visible ? \"caret-up\" : \"caret-down\"}\n className={styles.dropdownArrow}\n />\n </div>\n ) : (\n <div\n className={styles.dropdownTrigger}\n style={{\n fontSize: labelFontSize,\n ...props.dropdownTriggerStyle,\n }}\n data-testid=\"dropdown-trigger\"\n >\n {!hideLabel && (\n <div className={styles.dropdownLabel}>\n {label || (\n <span className={styles.placeholder}>{placeholder}</span>\n )}\n </div>\n )}\n <LegacyIcon\n type={visible ? \"caret-up\" : \"caret-down\"}\n className={styles.dropdownArrow}\n />\n </div>\n )}\n </Dropdown>\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 { UseBrickConf } from \"@next-core/brick-types\";\nimport { DropdownSelect } from \"./DropdownSelect\";\nimport { Option } from \"../interfaces\";\n\n/**\n * @id presentational-bricks.dropdown-select\n * @name presentational-bricks.dropdown-select\n * @docKind brick\n * @description 用于菜单项较多时收纳相关菜单项\n * @author jo\n * @slots\n * @history\n * 1.122.0:新增 `labelFontSize` 属性\n * @memo\n * @noInheritDoc\n */\nexport class DropdownSelectElement extends UpdatingElement {\n /**\n * @detail {value: any; item: any}\n * @description 选项改变事件\n */\n @event({ type: \"select.change\", cancelable: true })\n selectChange: EventEmitter<{ value: any; item: any }>;\n\n /**\n * @detail {value: any}\n * @description 多选选项选中事件\n */\n @event({ type: \"multiple.select.change\", cancelable: true })\n multipleSelectChange: EventEmitter<{ value: any }>;\n\n /**\n * @required false\n * @description 选项列表,不能与 dataSource + label + optionTitle + optionContent + valuePath 同时使用\n * @group basic\n */\n @property({ attribute: false }) options: Option[];\n\n /**\n * @required false\n * @default []\n * @description 数据源\n * @group other\n * @deprecated\n */\n @property({ attribute: false }) dataSource: any[];\n\n /**\n * @required false\n * @description 选中项的值,跟 `valuePath` 搭配使用,根据指定的字段路径与 value 的值得出当前选中项\n * @group basic\n */\n @property({ attribute: false }) value: any[];\n\n /**\n * @required false\n * @default 使用 optionTitle 的值\n * @description 选中项显示的 label,支持模板替换,替换上下文为当前项 `item` 使用时需要带上 item 前缀 `#{item.xxx}`\n * @group other\n * @deprecated\n */\n @property() label?: string;\n\n /**\n * @required false\n * @default false\n * @description 是否禁用\n * @group basic\n */\n @property({ type: Boolean }) disabled?: boolean;\n\n /**\n * @required false\n * @default false\n * @description 单选时,下拉内容区高度是否固定\n * @group basic\n */\n @property({ type: Boolean }) heightFix?: boolean;\n\n /**\n * @kind MenuIcon\n * @required false\n * @description 按钮 icon,支持[icon 图标库](developers/icon),可直接复制图标图标的配置(antd、fa 及 easyops 三种库都支持),也可只取 icon 字段的值(仅支持 antd 库)。配置{ \"lib\": \"antd\", \"icon\": \"edit\" }与 \"edit\"等价 [类型定义](https://github.com/easyops-cn/next-core/blob/34a0808712ecaa925d0860d281ab23cf3bec7317/packages/brick-types/src/menu.ts#L104)\n * @group basic\n */\n @property({\n attribute: false,\n })\n buttonIcon: any;\n\n /**\n * @required false\n * @default \"default\"\n * @description 设置下拉选择器按钮样式\n * @group ui\n */\n @property()\n dropdownButtonType: \"default\" | \"shape\";\n\n /**\n * @required false\n * @description label 的 fontSize\n * @group ui\n */\n @property() labelFontSize?: string;\n\n /**\n * @required false\n * @description placeholder, 当没有当前项选中时显示\n * @group basic\n */\n @property() placeholder?: string;\n\n /**\n * @required false\n * @default #{item}\n * @description 选项的标题,支持模板替换,使用跟 label 字段一样\n * @group other\n * @deprecated\n */\n @property() optionTitle?: string;\n\n /**\n * @required false\n * @description 选项的内容,支持模板替换,使用跟 label 字段一样\n * @group other\n * @deprecated\n */\n @property() optionContent?: string;\n\n /**\n * @required false\n * @default item\n * @description 依据当前项 `item`,指定选项值的 path\n * @group other\n * @deprecated\n */\n @property() valuePath?: string;\n\n /**\n * @required false\n * @default false\n * @description 是否支持多选,支持多选时,单选的value属性失效\n * @group basic\n */\n @property({ type: Boolean }) multipleSelect?: boolean;\n\n /**\n * @required false\n * @default []\n * @description 多选的选中项\n * @group basic\n */\n @property({ attribute: false }) selectedKeys?: string[] = [];\n\n /**\n * @required false\n * @default -\n * @description 下拉框提示信息\n */\n @property({ attribute: false })\n selectTipText: string;\n\n /**\n * @required false\n * @description 下拉框样式\n */\n @property({ attribute: false })\n selectBoxStyle: React.CSSProperties;\n\n /**\n * @required false\n * @default []\n * @description 多选的默认选中项\n * @group basic\n */\n @property({ attribute: false }) defaultSelectedKeys?: string[] = [];\n\n /**\n * @required false\n * @description 最小选择数量(多选)\n * @group basic\n */\n @property({ type: Number }) minSelectedItemLength?: number;\n\n /**\n * @required false\n * @description 多选时,当前label仅支持显示从构件外部传入,multipleLabel属性仅在dropdownButtonType为multiple时生效\n * @group basic\n */\n @property() multipleLabel?: string;\n\n /**\n * @required false\n * @description 提示构件\n * @group other\n */\n @property({\n attribute: false,\n })\n tipBrick: { useBrick: UseBrickConf };\n\n /**\n * @required false\n * @description 不展示label\n * @group other\n */\n @property({\n attribute: false,\n })\n hideLabel: boolean;\n\n /**\n * @required false\n * @description 额外的下拉开关样式\n * @group other\n */\n @property({\n attribute: false,\n })\n dropdownTriggerStyle: React.CSSProperties;\n\n connectedCallback(): void {\n this.style.display = \"inline-block\";\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n // istanbul ignore next\n private _handleChange = (value: any, item: any) => {\n this.value = value;\n this.selectChange.emit({ value, item });\n };\n // istanbul ignore next\n private _multipleSelectChange = (value: any) => {\n this.selectedKeys = value;\n this.multipleSelectChange.emit({ value });\n };\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <DropdownSelect\n options={this.options}\n dataSource={this.dataSource}\n value={this.value}\n label={this.label}\n labelFontSize={this.labelFontSize}\n placeholder={this.placeholder}\n optionTitle={this.optionTitle}\n optionContent={this.optionContent}\n valuePath={this.valuePath}\n onChange={this._handleChange}\n selectedKeys={this.selectedKeys}\n defaultSelectedKeys={this.defaultSelectedKeys}\n multipleSelect={this.multipleSelect}\n onSelect={this._multipleSelectChange}\n buttonIcon={this.buttonIcon}\n multipleLabel={this.multipleLabel}\n dropdownButtonType={this.dropdownButtonType}\n disabled={this.disabled}\n heightFix={this.heightFix}\n tipBrick={this.tipBrick}\n minSelectedItemLength={this.minSelectedItemLength}\n selectTipText={this.selectTipText}\n selectBoxStyle={this.selectBoxStyle}\n hideLabel={this.hideLabel}\n dropdownTriggerStyle={this.dropdownTriggerStyle}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.dropdown-select\",\n DropdownSelectElement\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\";\n\nimport styles from \"./index.module.css\";\n\nexport interface ButtonWrapperProps {\n description: string;\n brick: string | any;\n properties: any;\n}\n\nexport function ButtonWrapper(props: ButtonWrapperProps): React.ReactElement {\n return (\n <div className={styles.buttonWrapper}>\n <p>{props.description}</p>\n <props.brick\n ref={(element: HTMLElement) => {\n if (element) {\n Object.assign(element, props.properties);\n }\n }}\n ></props.brick>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { ButtonWrapper } from \"./ButtonWrapper\";\n\nclass ButtonWrapperElement extends UpdatingElement {\n @property()\n description: string;\n @property()\n brick: string;\n\n private _properties: any;\n\n set properties(value: any) {\n this._properties = value;\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 <ButtonWrapper\n description={this.description}\n brick={this.brick}\n properties={this._properties}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.button-wrapper\",\n ButtonWrapperElement\n);\n","import React from \"react\";\nimport classNames from \"classnames\";\n\ninterface GeneralListProps {\n isCardList: boolean;\n cardWidth?: string;\n cardMinWidth?: string;\n}\n\nexport function GeneralList(props: GeneralListProps): React.ReactElement {\n return (\n <div\n className={classNames(\"listContainer\", {\n cardListContainer: props.isCardList\n })}\n style={\n props.cardMinWidth\n ? {\n gridTemplateColumns: `repeat(auto-fill,minmax(${props.cardMinWidth}, 1fr))`\n }\n : props.cardWidth\n ? {\n gridTemplateColumns: `repeat(auto-fill,${props.cardWidth})`\n }\n : {}\n }\n >\n <slot id=\"itemsSlot\" name=\"items\" />\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { GeneralList } from \"./GeneralList\";\nimport { Card } from \"antd\";\nimport styles from \"./GeneralList.shadow.less\";\n\n/**\n * @id presentational-bricks.general-list\n * @name presentational-bricks.general-list\n * @docKind brick\n * @description 可配置具体每个item构件,常用于卡片列表\n * @author lynette\n * @slots\n * items:每个子项的 slot,例如可以搭配\"presentational-bricks.card-item\"使用。\n * @history\n * 1.19.0:新属性 `cardMinWidth`\n * @memo\n * ## 描述\n *\n * 通用列表,可以配置每个 item 构件。通常不会单独使用,而是搭配 dynamic template 使用,具体参考\"general-list.general-card-list\"中,具体事例看同[general-card-list](developers/brick-book/template/general-list.general-card-list)。\n * @noInheritDoc\n */\nexport class GeneralListElement extends UpdatingElement {\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否卡片列表\n */\n @property({\n type: Boolean,\n })\n isCardList: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否在外层包一层卡片\n */\n @property({\n type: Boolean,\n })\n showCard: boolean;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 卡片项的宽度,非响应式卡片可设置该属性\n */\n @property()\n cardWidth: string;\n\n /**\n * @kind string\n * @required false\n * @default 260px\n * @description 卡片项的最小宽度,响应式卡片可设置该属性\n */\n @property()\n cardMinWidth: string;\n\n private _mountPoint: HTMLElement;\n\n constructor() {\n super();\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._mountPoint);\n }\n\n private getGeneralListNode() {\n return (\n <GeneralList\n isCardList={this.isCardList}\n cardWidth={this.cardWidth}\n cardMinWidth={this.cardMinWidth}\n />\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.getGeneralListNode()}</Card>\n ) : (\n this.getGeneralListNode()\n )}\n </BrickWrapper>,\n this._mountPoint\n );\n }\n }\n}\n\ncustomElements.define(\"presentational-bricks.general-list\", GeneralListElement);\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!./brick-quick-entries.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 { isEmpty } from \"lodash\";\nimport { getHistory, BrickAsComponent } from \"@next-core/brick-kit\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { Tooltip } from \"antd\";\nimport { LinkProps, TitleConfig } from \"./index\";\n\nimport style from \"./brick-quick-entries.module.css\";\n\nexport interface BrickQuickEntriesProps {\n row: number;\n column: number;\n links?: LinkProps[];\n useBricks?: UseBrickConf;\n data?: any[];\n containerStyle?: React.CSSProperties;\n mode?: \"multiCardGeneral\" | \"multiCardNoLine\" | \"default\";\n titleList?: TitleConfig[];\n titleIconClick?: (r: any) => void;\n divider?: boolean;\n}\n\nexport function BrickQuickEntries(\n props: BrickQuickEntriesProps\n): React.ReactElement {\n const clickLink = (link: LinkProps) => {\n const history = getHistory();\n history.push(link.target);\n };\n const useBricks = Array.isArray(props.useBricks)\n ? props.useBricks\n : [props.useBricks];\n const propsData = Array.isArray(props.data) ? props.data : [props.data];\n\n const renderLink = (row: number, col: number): React.ReactNode => {\n const index = row * props.column + col;\n const link = props.links[index];\n return link ? (\n <div\n key={index}\n className={style.linkWrapper}\n onClick={() => clickLink(link)}\n >\n <div className={style.link}>\n <div className={style.icon}>\n <GeneralIcon icon={link.icon}></GeneralIcon>\n </div>\n <div className={style.text}>{link.text}</div>\n </div>\n </div>\n ) : (\n <div key={index} className={style.link}></div>\n );\n };\n\n const renderBrick = (row: number, col: number): React.ReactNode => {\n const index = row * props.column + col;\n const brick = useBricks[index];\n return brick ? (\n <BrickAsComponent key={index} useBrick={brick} data={propsData[index]} />\n ) : (\n <div key={index} className={style.link}></div>\n );\n };\n\n const render = (): HTMLElement[] => {\n const elements: any[] = [];\n let key = 1000;\n\n for (let i = 0; i < props.row; ++i) {\n for (let j = 0; j < props.column; ++j) {\n let elem = isEmpty(props.useBricks)\n ? renderLink(i, j)\n : renderBrick(i, j);\n if (props.titleList) {\n elem = (\n <div>\n <div\n style={{\n padding: \"5px 15px\",\n fontWeight: 600,\n display: \"flex\",\n }}\n >\n <span style={{ flex: \"1\" }}>\n {props.titleList[i * props.column + j]?.title}\n </span>\n <div\n onClick={() => {\n // istanbul ignore next\n props.titleIconClick(props.titleList[i * props.column + j]);\n }}\n style={{\n position: \"relative\",\n width: \"20px\",\n cursor: \"pointer\",\n }}\n >\n {props.titleList[i * props.column + j]?.tooltip ? (\n <Tooltip\n title={props.titleList[i * props.column + j]?.tooltip}\n >\n <div>\n <GeneralIcon\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%,-50%)\",\n }}\n icon={props.titleList[i * props.column + j]?.icon}\n ></GeneralIcon>\n </div>\n </Tooltip>\n ) : (\n <GeneralIcon\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%,-50%)\",\n }}\n icon={props.titleList[i * props.column + j]?.icon}\n ></GeneralIcon>\n )}\n </div>\n </div>\n {elem}\n </div>\n );\n }\n elements.push(elem);\n if (j !== props.column - 1) {\n elements.push(\n <div\n style={{ opacity: props.divider ? 1 : 0 }}\n key={key++}\n className={\n props.mode === \"multiCardGeneral\"\n ? style.multiCardGeneralVerticalLine\n : props.mode === \"multiCardNoLine\"\n ? \"\"\n : style.verticalLine\n }\n ></div>\n );\n }\n }\n if (i !== props.row - 1) {\n for (let j = 0; j < props.column; ++j) {\n elements.push(\n <div\n style={{ opacity: props.divider ? 1 : 0 }}\n key={key++}\n className={\n props.mode === \"multiCardGeneral\" ||\n props.mode === \"multiCardNoLine\"\n ? \"\"\n : style.horizontalLine\n }\n ></div>\n );\n if (j !== props.column - 1) {\n elements.push(<div key={key++}></div>);\n }\n }\n }\n }\n\n return elements;\n };\n\n return (\n <div\n className={\n props.mode === \"multiCardGeneral\" || props.mode === \"multiCardNoLine\"\n ? style.multiCardEntranceWrapper\n : style.entranceWrapper\n }\n style={{\n gridTemplateRows: Array(props.row).fill(\"1fr\").join(\" 1px \"),\n gridTemplateColumns: Array(props.column).fill(\"1fr\").join(\" 1px \"),\n ...props.containerStyle,\n }}\n >\n {render()}\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Card } from \"antd\";\nimport {\n BrickWrapper,\n UpdatingElement,\n property,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { MenuIcon, UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickQuickEntries } from \"./BrickQuickEntries\";\n\nexport interface LinkProps {\n icon: MenuIcon;\n target: string;\n text: string;\n}\nexport interface TitleConfig {\n icon?: MenuIcon;\n title?: string;\n value?: string;\n tooltip?: string;\n}\n/**\n * @id presentational-bricks.brick-quick-entries\n * @name presentational-bricks.brick-quick-entries\n * @docKind brick\n * @description 展示多个快捷入口\n * @author cyril\n * @slots\n * @history\n * 1.145.4:删除 `mode` 属性\n * 1.142.0:新增 `mode` 属性\n * 1.122.0:新增 `useBrick` 和 `containerStyle` 属性\n * 1.87.0:新增 `showCard` 属性\n * 1.84.0:新增 `useBricks` 属性\n * @memo\n *\n * ```typescript\n * declare type MenuIcon = AntdIcon | FaIcon | EasyopsIcon;\n *\n * interface AntdIcon {\n * lib: \"antd\";\n * type: string;\n * theme?: ThemeType;\n * }\n *\n * interface FaIcon {\n * lib: \"fa\";\n * icon: IconName;\n * prefix?: IconPrefix;\n * }\n *\n * interface EasyopsIcon {\n * lib: \"easyops\";\n * icon: string;\n * category?: string;\n * }\n * ```\n *\n * @noInheritDoc\n */\nexport class BrickQuickEntriesElement extends UpdatingElement {\n /**\n * @kind number\n * @required false\n * @default 1\n * @description 列数\n */\n @property({\n attribute: false,\n })\n column = 1;\n\n /**\n * @kind number\n * @required false\n * @default 1\n * @description 行数\n */\n @property({\n attribute: false,\n })\n row = 1;\n\n /**\n * @kind LinkProps[]\n * @required false\n * @default []\n * @description 快捷入口设置\n */\n @property({\n attribute: false,\n })\n links: LinkProps[] = [];\n\n /**\n * @kind [UseBrickConf](http://docs.developers.easyops.cn/docs/api-reference/brick-types.usebrickconf)\n * @required false\n * @default -\n * @description 使用的子构件配置\n */\n @property({ attribute: false })\n useBrick: UseBrickConf;\n\n /**\n * @kind any[]\n * @required false\n * @default -\n * @description 传递给子构件的数据,应与 `useBrick` 一一对应\n */\n @property({ attribute: false })\n data: any[];\n\n /**\n * @kind TitleConfig[]\n * @required false\n * @default -\n * @description 为每个入口配置标题\n */\n @property({ attribute: false })\n titleList: TitleConfig[];\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示卡片\n */\n @property({\n type: Boolean,\n attribute: false,\n })\n showCard = true;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示分隔线\n */\n @property({\n attribute: false,\n })\n divider = true;\n\n /**\n * @required false\n * @default -\n * @description 子项的容器的样式\n * @group advanced\n */\n @property({ attribute: false })\n containerStyle: React.CSSProperties;\n\n /**\n * @required false\n * @default \"default\"\n * @description (已废弃)值为 `multiCardGeneral`或 `multiCardNoLine`时为多卡片模式,`multiCardGeneral` 含分隔线,`multiCardNoLine` 无分隔线,样例见构件统计卡片 `general-charts.statistic-card`\n * @deprecated\n * @group advanced\n */\n @property({ attribute: false })\n mode: \"multiCardGeneral\" | \"multiCardNoLine\" | \"default\" = \"default\";\n\n /**\n * @kind [UseBrickConf](http://docs.developers.easyops.cn/docs/api-reference/brick-types.usebrickconf)\n * @required false\n * @default -\n * @description 使用的子构件配置(已废弃,请使用 useBrick 替代)\n * @deprecated\n * @group advanced\n */\n @property({ attribute: false, __deprecated_and_for_compatibility_only: true })\n useBricks: UseBrickConf;\n\n /**\n * @detail any\n * @description 节点弹窗内容项点击事件\n */\n @event({ type: \"title.icon.click\", cancelable: true })\n titleIconClick: EventEmitter<any>;\n\n // istanbul ignore next\n private _titleIconClick = (value: any) => {\n this.titleIconClick.emit(value);\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 const quickEntries = (\n <BrickQuickEntries\n row={this.row}\n column={this.column}\n links={this.links}\n useBricks={this.useBrick || this.useBricks}\n data={this.data}\n containerStyle={this.containerStyle}\n mode={this.mode}\n titleList={this.titleList}\n titleIconClick={this._titleIconClick}\n divider={this.divider}\n />\n );\n\n const elem = this.showCard ? (\n <Card\n bodyStyle={{\n display: \"flex\",\n height: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: this.mode === \"multiCardGeneral\" ? \"0\" : \"20px\",\n }}\n style={{ height: \"100%\" }}\n hoverable={false}\n bordered={false}\n >\n {quickEntries}\n </Card>\n ) : (\n quickEntries\n );\n\n ReactDOM.render(<BrickWrapper>{elem}</BrickWrapper>, this);\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-quick-entries\",\n BrickQuickEntriesElement\n);\n","import React, { CSSProperties } from \"react\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport classNames from \"classnames\";\n\ninterface CollapsibleCardItemProps {\n cardTitle: string;\n cardDesc?: string;\n isActive?: boolean;\n icon?: MenuIcon;\n iconStyle?: Record<string, any>;\n customHeader?: boolean;\n contentStyle?: Record<string, any>;\n showSubscript?: boolean;\n subscriptIconConfig?: MenuIcon;\n hideOperate?: boolean;\n hoverable?: boolean;\n cardStyle?: CSSProperties;\n operatingAreaStyle?: React.CSSProperties;\n}\n\nexport function CollapsibleCardItem(\n props: CollapsibleCardItemProps\n): React.ReactElement {\n return (\n <div\n className={classNames(\"brickCollapsibleCardContainer\", {\n [\"hoverable\"]: props.hoverable,\n })}\n style={props.cardStyle}\n >\n <div\n className={classNames(\n \"headerContainer\"\n // props.isActive ? \"borderButtom\" : null\n )}\n style={\n props.isActive\n ? {\n borderBottom:\n \"var(--border-width-base) solid var(--color-text-divider-line)\",\n }\n : {}\n }\n >\n {props.showSubscript && (\n <div className=\"subscriptContainer\">\n <GeneralIcon icon={props.subscriptIconConfig}></GeneralIcon>\n </div>\n )}\n <div className=\"collapsibleCardItemInfo\">\n {props.customHeader ? (\n <slot id=\"headerSlot\" name=\"header\" />\n ) : (\n <>\n {props.icon && (\n <i style={props.iconStyle} className=\"collapsibleCardItemIcon\">\n <GeneralIcon icon={props.icon} />\n </i>\n )}\n <div className=\"collapsibleTitle\">\n {props.cardTitle}\n {props.cardDesc && <>({props.cardDesc})</>}\n </div>\n </>\n )}\n </div>\n {!props.hideOperate && (\n <div className=\"operatingArea\" style={props.operatingAreaStyle}>\n <slot id=\"operateSlot\" name=\"operate\" />\n </div>\n )}\n </div>\n {props.isActive && (\n <div className=\"contentContainer\" style={props.contentStyle}>\n <slot id=\"contentSlot\" name=\"content\" />\n </div>\n )}\n </div>\n );\n}\n","import React, { CSSProperties } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n UpdatingElement,\n property,\n method,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { CollapsibleCardItem } from \"./CollapsibleCardItem\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport style from \"./index.shadow.css\";\nimport { get, pick, forEach, set, find, isEqual } from \"lodash\";\n\n/**\n * @id presentational-bricks.collapsible-card-item\n * @name presentational-bricks.collapsible-card-item\n * @docKind brick\n * @description 长条形可折叠卡片,里面可以放表单/description等构件\n * @author lynette\n * @slots\n * content:卡片展开的内容\n * header:header 自定义构件,需要同时把 customHeader 设置成 true\n * operate:操作区的构件\n * @history\n * 1.179.0: 新增`hoverable`,`cardStyle`属性\n * @memo\n * @noInheritDoc\n */\nexport class CollapsibleCardItemElement extends UpdatingElement {\n /**\n * @kind string\n * @required false\n * @default -\n * @description 卡片 title\n */\n @property()\n cardTitle: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 卡片描述信息\n */\n @property()\n cardDesc: string;\n\n /**\n * @required false\n * @default true\n * @description 是否展示hover效果\n */\n @property({ attribute: false })\n hoverable?: boolean = true;\n\n /**\n * @required false\n * @default -\n * @description 卡片样式\n */\n @property({ attribute: false })\n cardStyle?: CSSProperties;\n\n /**\n * @kind MenuIcon\n * @required false\n * @default -\n * @description 卡片 icon\n */\n @property({\n attribute: false,\n })\n icon: MenuIcon;\n\n /**\n * @kind Record<string, any>\n * @required false\n * @default -\n * @description 卡片右下角的 icon 的样式,例如需要调整 opacity、right、bottom 的时候可以使用\n */\n @property({\n attribute: false,\n })\n iconStyle: Record<string, any>;\n\n /**\n * @kind Record<string, any>\n * @required true\n * @default -\n * @description 卡片信息数据源\n */\n @property({\n attribute: false,\n })\n dataSource: Record<string, any>;\n\n /**\n * @kind { cardTitle?: string;icon?:string; }\n * @required true\n * @default -\n * @description 字段映射, 跟 dataSource 一起使用来获得运行时 cardTitle、icon\n */\n @property({\n attribute: false,\n })\n fields: {\n cardTitle?: string;\n cardDesc?: string;\n icon?: string;\n };\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 卡片是否默认展开\n */\n @property({\n type: Boolean,\n })\n isActive: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否禁止点击卡片头部展开(有些场景不希望用户点击头部展开,而希望定制点击按钮展开时,可设置为 true)\n */\n @property({\n type: Boolean,\n })\n disableClickHeaderToOpen: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否自定义头部\n */\n @property({\n type: Boolean,\n })\n customHeader: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否禁止点击卡片头部折叠(有些场景不希望用户点击头部折叠,而希望定制点击按钮折叠时,可设置为 true)\n */\n @property({\n type: Boolean,\n })\n disableClickHeaderToClose: boolean;\n\n /**\n * @kind Record<string,any>\n * @required false\n * @default -\n * @description 内容区样式,目前内容区有默认 padding:32px 72px。当里面的构件自己带有边距的时候需要自行调整到理想样式效果。\n */\n @property({\n attribute: false,\n })\n contentStyle: Record<string, any>;\n @property({\n attribute: false,\n })\n subscriptConfig: any;\n\n @property({\n attribute: false,\n })\n operatingAreaStyle: React.CSSProperties;\n\n /**\n * @detail boolean\n * @description 折叠状态改变\n */\n @event({ type: \"collapse.change\" }) collapseChange: EventEmitter<boolean>;\n\n private _mountPoint: HTMLElement;\n private _shadowRoot: ShadowRoot;\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 togglePanel(e: Event) {\n if (!this.disableClickHeaderToOpen || !this.disableClickHeaderToClose) {\n const foundHeader = find(e.composedPath(), {\n className: \"headerContainer\",\n }) as HTMLElement;\n if (foundHeader) {\n if (!this.disableClickHeaderToOpen && !this.isActive) {\n this.open();\n } else if (!this.disableClickHeaderToClose && this.isActive) {\n this.close();\n }\n }\n }\n }\n setSubscription(subscriptConfig, dataSource) {\n let showSubscript = isEqual(\n get(dataSource, subscriptConfig.field),\n subscriptConfig.value\n );\n const { type } = subscriptConfig;\n const defaultConfig = {\n lib: \"fa\",\n icon: \"star\",\n prefix: \"fas\",\n };\n const checkedConfig = {\n lib: \"fa\",\n icon: \"check\",\n prefix: \"fas\",\n };\n const subscriptIconConfig =\n type === \"custom\" && subscriptConfig.subscriptIconConfig\n ? subscriptConfig.subscriptIconConfig\n : type === \"checked\"\n ? checkedConfig\n : defaultConfig;\n if (subscriptConfig.isNotEqual) {\n showSubscript = !showSubscript;\n }\n return {\n showSubscript,\n subscriptIconConfig,\n };\n }\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this.style.width = \"100%\";\n this.addEventListener(\"click\", (e) => {\n const foundOperatingArea = find(e.composedPath(), {\n className: \"operatingArea\",\n }) as HTMLElement;\n if (foundOperatingArea) {\n e.preventDefault();\n } else {\n this.togglePanel(e);\n }\n });\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 let subscriptConfig;\n let hideOperate = false;\n const mutableProps = {\n cardTitle: this.cardTitle,\n cardDesc: this.cardDesc,\n icon: this.icon,\n };\n if (this.fields && this.dataSource) {\n this.initData(mutableProps);\n }\n if (this.dataSource && this.subscriptConfig) {\n subscriptConfig = this.setSubscription(\n this.subscriptConfig,\n this.dataSource\n );\n hideOperate =\n subscriptConfig.showSubscript && this.subscriptConfig.hideOperate;\n }\n ReactDOM.render(\n <BrickWrapper>\n <CollapsibleCardItem\n customHeader={this.customHeader}\n cardTitle={mutableProps.cardTitle}\n cardDesc={mutableProps.cardDesc}\n cardStyle={this.cardStyle}\n hoverable={this.hoverable}\n icon={mutableProps.icon}\n isActive={this.isActive}\n iconStyle={this.iconStyle}\n contentStyle={this.contentStyle}\n {...subscriptConfig}\n hideOperate={hideOperate}\n operatingAreaStyle={this.operatingAreaStyle}\n />\n </BrickWrapper>,\n this._mountPoint\n );\n }\n }\n\n private initData(mutableProps: { cardTitle: string; icon: MenuIcon }): void {\n const pickFields = pick(this.fields, [\"cardTitle\", \"cardDesc\", \"icon\"]);\n forEach(pickFields, (fieldKey, field: string) => {\n set(mutableProps, field, get(this.dataSource, fieldKey));\n });\n }\n\n /**\n * @description 展开卡片\n */\n @method()\n open(): void {\n this.isActive = true;\n this.collapseChange.emit(true);\n }\n\n /**\n * @description 折叠卡片\n */\n @method()\n close(): void {\n this.isActive = false;\n this.collapseChange.emit(false);\n }\n\n /**\n * @description 切换展开折叠卡片\n */\n @method()\n toggle(): void {\n this.isActive = !this.isActive;\n this.collapseChange.emit(this.isActive);\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.collapsible-card-item\",\n CollapsibleCardItemElement\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, { useCallback, useState } from \"react\";\nimport { compact } from \"lodash\";\nimport classNames from \"classnames\";\nimport { LeftOutlined, RightOutlined } from \"@ant-design/icons\";\nimport { Carousel, Empty } from \"antd\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport style from \"./index.module.css\";\nimport { CustomCompProps } from \"./index\";\n\nexport interface GeneralCarouselProps {\n autoplay?: boolean;\n dots?: boolean;\n components: CustomCompProps | CustomCompProps[];\n carouselStyle?: React.CSSProperties;\n speed?: number;\n slidesToShow?: number;\n slidesToScroll?: number;\n pauseOnDotsHover?: boolean;\n onHandleClick: (index: number) => void;\n infinite?: boolean;\n adaptiveHeight?: boolean;\n responsive?: any[];\n noDataDesc?: string;\n arrows?: boolean;\n dotsTheme?: \"light\" | \"dark\";\n useBrick: UseBrickConf;\n dataSource: any[];\n autoplaySpeed?: number;\n dotPosition?: \"top\" | \"bottom\" | \"left\" | \"right\";\n useLazyLoad?: boolean;\n}\n\nexport function renderCustomComp(\n components: CustomCompProps[],\n slideClickCallback: (index: number) => void\n) {\n return components.map((comp, index) => {\n return (\n <div\n key={index}\n className={style.customContainer}\n onClick={() => slideClickCallback(index)}\n >\n <BrickAsComponent useBrick={comp} />\n </div>\n );\n });\n}\nexport function renderCustomBrick(\n useBrick: UseBrickConf,\n dataSource: any[],\n slideClickCallback: (index: number) => void\n) {\n return dataSource.map((data, index) => {\n return (\n <div\n key={index}\n className={style.customContainer}\n onClick={() => slideClickCallback(index)}\n >\n <BrickAsComponent useBrick={useBrick} data={data}></BrickAsComponent>\n </div>\n );\n });\n}\n\nexport function GeneralCarousel({\n speed,\n slidesToShow,\n slidesToScroll,\n autoplay,\n dots,\n components,\n carouselStyle,\n pauseOnDotsHover,\n adaptiveHeight,\n infinite,\n responsive,\n onHandleClick,\n noDataDesc,\n arrows,\n dotsTheme,\n useBrick,\n dataSource,\n autoplaySpeed,\n dotPosition,\n useLazyLoad,\n}: GeneralCarouselProps): React.ReactElement {\n const comps = Array.isArray(components) ? components : compact([components]);\n const data = Array.isArray(dataSource) ? dataSource : compact([dataSource]);\n const setEleDisplay = useCallback((selector, display) => {\n const slickSlideEles = document.querySelectorAll(selector);\n slickSlideEles.forEach((ele) => {\n (ele.firstChild as HTMLElement).style.display = display;\n });\n }, []);\n const carousel = (\n <Carousel\n className={classNames({\n \"carousel-dots-dark\": dotsTheme === \"dark\",\n })}\n style={carouselStyle}\n autoplay={autoplay}\n dots={dots}\n speed={speed}\n autoplaySpeed={autoplaySpeed}\n slidesToShow={slidesToShow}\n slidesToScroll={slidesToScroll}\n pauseOnDotsHover={pauseOnDotsHover}\n arrows={arrows}\n infinite={infinite}\n adaptiveHeight={adaptiveHeight}\n responsive={responsive}\n prevArrow={<LeftOutlined />}\n nextArrow={<RightOutlined />}\n dotPosition={dotPosition}\n onInit={() =>\n useLazyLoad &&\n setEleDisplay(\n `.slick-slide:not([data-index=\"0\"]):not([data-index=\"${data.length}\"])`,\n \"none\"\n )\n }\n beforeChange={(currentSlide, nextSlide) =>\n useLazyLoad &&\n setEleDisplay(`.slick-slide[data-index=\"${nextSlide}\"]`, \"block\")\n }\n afterChange={(currentSlide) =>\n useLazyLoad &&\n setEleDisplay(`.slick-slide[data-index=\"${--currentSlide}\"]`, \"none\")\n }\n >\n {useBrick\n ? renderCustomBrick(useBrick, data, onHandleClick)\n : renderCustomComp(comps, onHandleClick)}\n </Carousel>\n );\n\n return (\n <div className={style.generalCarousel}>\n {useBrick ? (\n data.length !== 0 ? (\n carousel\n ) : (\n <Empty description={noDataDesc} />\n )\n ) : comps.length !== 0 ? (\n carousel\n ) : (\n <Empty description={noDataDesc} />\n )}\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 { GeneralCarousel, GeneralCarouselProps } from \"./GeneralCarousel\";\nimport { BrickEventsMap } from \"@next-core/brick-types\";\n\nexport interface CustomCompProps {\n brick: string | any;\n properties?: any;\n events?: BrickEventsMap;\n}\n\n/**\n * @id presentational-bricks.general-carousel\n * @name presentational-bricks.general-carousel\n * @docKind brick\n * @description 通用的轮播图\n * @author jo\n * @slots\n * @history\n * @memo\n * ### CustomCompProps\n * ```typescript\n * export interface CustomCompProps {\n * brick: string;\n * properties?: any;\n * events?: BrickEventsMap;\n * }\n * ```\n * @noInheritDoc\n */\nexport class GeneralCarouselElement extends UpdatingElement {\n /**\n * @detail number\n * @description 传出当前所点击的轮播序列号\n */\n @event({ type: \"general.carousel.click\" })\n generalCarouselClick: EventEmitter<number>;\n\n /**\n * @kind UseBrickConf\n * @required false\n * @default -\n * @description 统一定义轮播图显示的内容, 相当于自定义构件\n */\n @property({\n attribute: false,\n })\n useBrick: GeneralCarouselProps[\"useBrick\"];\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否播放轮播图\n */\n @property({\n type: Boolean,\n })\n autoplay: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示面板指示点\n */\n @property({\n attribute: false,\n })\n dots = true;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示左右翻页按钮\n */\n @property({\n attribute: false,\n })\n arrows = true;\n\n /**\n * @kind any[]\n * @required false\n * @default -\n * @description 配合useBrick使用,轮播图根据dataSource数组数量来决定轮播数量\n */\n @property({\n attribute: false,\n })\n dataSource: GeneralCarouselProps[\"dataSource\"];\n /**\n * @kind any\n * @required false\n * @default -\n * @description 轮播样式\n */\n @property({\n attribute: false,\n })\n carouselStyle = {};\n\n /**\n * @kind number\n * @required false\n * @default 1\n * @description 一次轮播同时显示多少组内容,跟 slidesToScroll 搭配使用表示轮播一次同时显示 N 组件内容,滑动也是 N 组内容\n */\n @property({\n attribute: false,\n })\n slidesToShow = 1;\n\n /**\n * @kind number\n * @required false\n * @default 1\n * @description 一次切换多少组内容\n */\n @property({\n attribute: false,\n })\n slidesToScroll = 1;\n\n /**\n * @kind number\n * @required false\n * @default 500\n * @description 动效播放速度\n * @group advanced\n */\n @property({\n attribute: false,\n })\n speed = 500;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 鼠标移上去是否停止自动切换\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n pauseOnDotsHover: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 自适应轮播内容高度\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n adaptiveHeight: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 内容是否循环轮播\n * @group advanced\n */\n @property({\n attribute: false,\n })\n infinite = true;\n\n /**\n * @kind number\n * @required false\n * @default 3000\n * @description 自定义轮播项的停留时间\n * @group advanced\n */\n @property({\n attribute: false,\n })\n autoplaySpeed = 3000;\n\n /**\n * @kind any[]\n * @required false\n * @default -\n * @description 相应式布局设置\n * @group advanced\n */\n @property({\n attribute: false,\n })\n responsive: any[];\n\n /**\n * @kind string\n * @required false\n * @default 暂无数据\n * @description 没有轮播内容时显示的提示语\n * @group advanced\n */\n @property({\n attribute: false,\n })\n noDataDesc: string;\n\n /**\n * @kind light | dark\n * @required false\n * @default light\n * @description 面板指示点的主题样式分为浅色和深色,浅色的图片对应深色的面板指示点样式\n * @group advanced\n */\n @property({\n attribute: false,\n })\n dotsTheme: GeneralCarouselProps[\"dotsTheme\"] = \"light\";\n\n /**\n * @kind top | bottom | left | right\n * @required false\n * @default bottom\n * @description 面板指示点的位置,走马灯的滑动方向,“top、bottom\"为从左至右,“left 、right”为从上至下\n * @group advanced\n */\n @property({ attribute: false })\n dotPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"bottom\";\n\n /**\n * @kind CustomCompProps|CustomCompProps[]\n * @required false\n * @default -\n * @deprecated\n * @description 定义轮播图显示的内容, 相当于自定义构件, 请使用 useBrick\n * @group advanced\n */\n @property({\n attribute: false,\n })\n components: GeneralCarouselProps[\"components\"];\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 幻灯片懒加载(目前保持渲染首尾以及当前的幻灯片)\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n useLazyLoad: boolean;\n\n connectedCallback(): void {\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n setComponent(value: GeneralCarouselProps[\"components\"]): void {\n this.components = value;\n this._render();\n }\n\n handleClickEvent = (curSlide: number) => {\n this.generalCarouselClick.emit(curSlide);\n };\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <GeneralCarousel\n carouselStyle={this.carouselStyle}\n autoplay={this.autoplay}\n dots={this.dots}\n slidesToShow={this.slidesToShow}\n slidesToScroll={this.slidesToScroll}\n speed={this.speed}\n components={this.components}\n useBrick={this.useBrick}\n dataSource={this.dataSource}\n infinite={this.infinite}\n adaptiveHeight={this.adaptiveHeight}\n pauseOnDotsHover={this.pauseOnDotsHover}\n responsive={this.responsive}\n onHandleClick={this.handleClickEvent}\n noDataDesc={this.noDataDesc}\n arrows={this.arrows}\n dotsTheme={this.dotsTheme}\n autoplaySpeed={this.autoplaySpeed}\n dotPosition={this.dotPosition}\n useLazyLoad={this.useLazyLoad}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.general-carousel\",\n GeneralCarouselElement\n);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { get } from \"lodash\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { AgentStatus } from \"./AgentStatus\";\n\nexport enum AgentStatusType {\n NORMAL = \"正常\",\n ABNORMAL = \"异常\",\n NOT_INSTALLED = \"未安装\",\n UNINSTALLED = \"已卸载\",\n UNDER_MAINTENANCE = \"维护中\",\n NORMAL_EN = \"Normal\",\n ABNORMAL_EN = \"Abnormal\",\n NOT_INSTALLED_EN = \"Not Installed\",\n UNINSTALLED_EN = \"Uninstalled\",\n UNDER_MAINTENANCE_EN = \"Under Maintenance\",\n}\n\n/**\n * @id presentational-bricks.agent-status\n * @name presentational-bricks.agent-status\n * @docKind brick\n * @description 以标签的方式来展示 agent 状态\n * @author ice\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class AgentStatusElement extends UpdatingElement {\n /**\n * @kind any\n * @required -️\n * @default -\n * @description (已废弃)数据源\n */\n @property({ attribute: false })\n dataSource: any;\n\n /**\n * @kind { value: string }\n * @required -️\n * @default -\n * @description (已废弃)字段映射, 跟 dataSource 一起使用来获得运行时 value\n */\n @property({ attribute: false })\n fields: { value: string };\n\n /**\n * @kind AgentStatusType\n * @required -️\n * @default -\n * @description agent 状态\n */\n @property()\n value: AgentStatusType;\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 let value = this.value;\n if (this.fields && this.dataSource) {\n value = get(this.dataSource, this.fields.value);\n }\n ReactDOM.render(\n <BrickWrapper>\n <AgentStatus value={value} />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"presentational-bricks.agent-status\", AgentStatusElement);\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nimport { AgentStatusType } from \"./index\";\n\nimport {\n BrickValueMapping,\n MappingValue,\n Color,\n} from \"../brick-value-mapping/BrickValueMapping\";\n\ninterface AgentStatusProps {\n value: AgentStatusType;\n}\n\nexport function AgentStatus(props: AgentStatusProps): React.ReactElement {\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n const mapping: { [key: string]: MappingValue } = {\n [AgentStatusType.NORMAL]: {\n text: t(K.AGENT_STATUS_NORMAL),\n color: Color.green,\n },\n [AgentStatusType.ABNORMAL]: {\n text: t(K.AGENT_STATUS_ABNORMAL),\n color: Color.red,\n },\n [AgentStatusType.NOT_INSTALLED]: {\n text: t(K.AGENT_STATUS_NOT_INSTALLED),\n color: Color.gray,\n },\n [AgentStatusType.UNINSTALLED]: {\n text: t(K.AGENT_STATUS_UNINSTALLED),\n color: Color.gray,\n },\n [AgentStatusType.UNDER_MAINTENANCE]: {\n text: t(K.AGENT_STATUS_UNDER_MAINTENANCE),\n color: Color.orange,\n },\n [AgentStatusType.NORMAL_EN]: {\n text: \"Normal\",\n color: Color.green,\n },\n [AgentStatusType.ABNORMAL_EN]: {\n text: \"Abnormal\",\n color: Color.red,\n },\n [AgentStatusType.NOT_INSTALLED_EN]: {\n text: \"Not Installed\",\n color: Color.gray,\n },\n [AgentStatusType.UNDER_MAINTENANCE_EN]: {\n text: \"Under Maintenance\",\n color: Color.orange,\n },\n [AgentStatusType.UNINSTALLED_EN]: {\n text: \"Uninstalled\",\n color: Color.gray,\n },\n };\n\n return (\n <BrickValueMapping\n value={props.value}\n mapping={mapping}\n showTagCircle={true}\n />\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { parseTemplate } from \"@next-libs/cmdb-utils\";\nimport { isNil } from \"lodash\";\n\n/**\n * @id presentational-bricks.dynamic-content\n * @name presentational-bricks.dynamic-content\n * @docKind brick\n * @description 支持解析模版的动态内容构件,例如:共 #{total} 条\n * @author lynette\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class DynamicContentElement extends UpdatingElement {\n /**\n * @kind Record<string, any>\n * @required true\n * @default -\n * @description 数据来源\n */\n @property({ attribute: false })\n dataSource: Record<string, any>;\n\n /**\n * @kind string\n * @required true\n * @default -\n * @description 动态模板内容。例如:共 #{total} 条。用`#{}`表示变量。\n */\n @property()\n dynamicContent: 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 const content =\n !isNil(this.dynamicContent) &&\n !isNil(this.dataSource) &&\n parseTemplate(this.dynamicContent, this.dataSource);\n ReactDOM.render(\n <BrickWrapper>\n <>{content}</>\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.dynamic-content\",\n DynamicContentElement\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!./EntryCardItem.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 { MenuIcon } from \"@next-core/brick-types\";\nimport { Link, GeneralIcon } from \"@next-libs/basic-components\";\nimport { Card, Avatar, Tooltip } from \"antd\";\nimport classNames from \"classnames\";\nimport styles from \"./EntryCardItem.module.css\";\n\nexport type Size = \"small\" | \"default\";\nexport type Color =\n | \"purple\"\n | \"red\"\n | \"softOrange\"\n | \"cyan\"\n | \"blue\"\n | \"darkPurple\"\n | \"lightCyan\"\n | \"brightOrange\"\n | \"white\";\n\ninterface EntryCardItemProps {\n cardTitle?: string;\n iconSize?: Size;\n icon?: MenuIcon;\n url?: string;\n iconColor?: Color;\n target?: string;\n showCard?: boolean;\n description?: string;\n cardStyle?: React.CSSProperties;\n hoverHighLight?: boolean;\n disabled?: boolean;\n tip?: string;\n}\n\nexport function EntryCardItem(props: EntryCardItemProps): React.ReactElement {\n const {\n cardStyle,\n description,\n hoverHighLight,\n iconSize = \"default\",\n } = props;\n\n // 卡片图标\n const cardIcon = (\n <div className={styles.cardIcon}>\n <GeneralIcon icon={props.icon} />\n </div>\n );\n // 卡片图标带圆底\n const avatarIcon = (size: number): React.ReactElement => (\n <Avatar\n icon={cardIcon}\n size={size}\n className={classNames(\n iconSize === \"small\" ? styles.cardSmallAvatar : styles.cardAvatar,\n props.iconColor && styles[props.iconColor]\n )}\n ></Avatar>\n );\n\n const contentNode = (\n <div className={styles.cardContent}>\n {avatarIcon(iconSize === \"small\" ? 36 : 48)}\n <div\n className={classNames(styles.textContainer, {\n [styles.hoverHighLight]: hoverHighLight,\n })}\n >\n <div\n className={\n iconSize === \"small\" ? styles.smallCardTitle : styles.cardTitle\n }\n title={props.cardTitle}\n >\n {props.cardTitle}\n </div>\n {description && <div className={styles.description}>{description}</div>}\n </div>\n </div>\n );\n\n const cardNode = props.showCard ? (\n <Card\n hoverable\n className={styles.cardItem}\n bodyStyle={{ padding: 0 }}\n style={{ width: 126, ...cardStyle }}\n >\n {contentNode}\n </Card>\n ) : (\n contentNode\n );\n const tipNode = props.tip ? (\n <Tooltip title={props.tip}>{cardNode}</Tooltip>\n ) : (\n cardNode\n );\n\n const link = props.target ? (\n <Link target={props.target} href={props.url}>\n {tipNode}\n </Link>\n ) : (\n <Link to={props.url}>{tipNode}</Link>\n );\n\n return <>{props.url && !props.disabled ? link : tipNode}</>;\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { EntryCardItem, Color, Size } from \"./EntryCardItem\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { get, pick, forEach, set } from \"lodash\";\nimport { parseTemplate } from \"@next-libs/cmdb-utils\";\n\n/**\n * @id presentational-bricks.entry-card-item\n * @name presentational-bricks.entry-card-item\n * @docKind brick\n * @description 可配置icon和title的卡片项\n * @author lynette\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class EntryCardItemElement extends UpdatingElement {\n /**\n * @kind Record<string, any>\n * @required true\n * @default -\n * @description 卡片信息数据源\n */\n @property({\n attribute: false,\n })\n dataSource: Record<string, any>;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 卡片 title\n */\n @property()\n cardTitle: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 卡片 description\n */\n @property()\n description: string;\n\n /**\n * @kind { cardTitle?: string; icon?:string;iconColor?:string; }\n * @required true\n * @default -\n * @description 字段映射, 跟 dataSource 一起使用来获得运行时 cardTitle、 icon、iconColor\n */\n @property({\n attribute: false,\n })\n fields: {\n cardTitle?: string;\n icon?: string;\n iconColor?: string;\n };\n\n /**\n * @kind MenuIcon\n * @required false\n * @default -\n * @description 卡片 icon\n */\n @property({\n attribute: false,\n })\n icon: MenuIcon;\n\n /**\n * @kind 'purple'/'red'/'softOrange'/'cyan'/'blue'/'darkPurple'/'lightCyan'/'brightOrange'/'white'\n * @required false\n * @default -\n * @description icon 颜色\n */\n @property()\n iconColor: Color;\n\n /**\n * @kind 'small/default'\n * @required false\n * @default -\n * @description icon 大小\n */\n @property()\n iconSize: Size;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description url target,如_blank\n */\n @property()\n target: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 卡片跳转 url\n */\n @property()\n url: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 卡片跳转 url 模板,支持模版变量\n */\n @property()\n urlTemplate: string;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description hover文字效果,`true`为蓝字高亮,`false`为黑字加粗\n */\n @property({ attribute: false })\n hoverHighLight = true;\n\n /**\n * @required false\n * @default true\n * @description 是否用 Card 包裹\n */\n @property({\n attribute: false,\n })\n showCard = true;\n\n /**\n * @kind object\n * @required false\n * @default -\n * @description card样式\n */\n @property({\n attribute: false,\n })\n cardStyle: React.CSSProperties;\n\n /**\n * @required false\n * @default false\n * @description 是否禁用\n */\n @property({\n attribute: false,\n })\n disabled = false;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 鼠标悬浮的提示\n */\n @property() tip: 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 const mutableProps = {\n target: this.target,\n url: this.urlTemplate,\n cardTitle: this.cardTitle,\n icon: this.icon,\n iconColor: this.iconColor,\n };\n if (this.dataSource && this.urlTemplate) {\n mutableProps.url = parseTemplate(this.urlTemplate, this.dataSource);\n }\n if (this.fields && this.dataSource) {\n this.initData(mutableProps);\n }\n ReactDOM.render(\n <BrickWrapper>\n <EntryCardItem\n cardTitle={mutableProps.cardTitle}\n icon={mutableProps.icon}\n iconColor={mutableProps.iconColor}\n target={mutableProps.target}\n url={this.url || mutableProps.url}\n showCard={this.showCard}\n description={this.description}\n cardStyle={this.cardStyle}\n hoverHighLight={this.hoverHighLight}\n disabled={this.disabled}\n tip={this.tip}\n iconSize={this.iconSize}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n\n private initData(mutableProps: {\n cardTitle: string;\n icon: MenuIcon;\n iconColor: Color;\n }): void {\n const pickFields = pick(this.fields, [\"cardTitle\", \"icon\", \"iconColor\"]);\n forEach(pickFields, (fieldKey, field: string) => {\n set(mutableProps, field, get(this.dataSource, fieldKey));\n });\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.entry-card-item\",\n EntryCardItemElement\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 from \"react\";\nimport cssStyle from \"./style.module.css\";\nimport { Link } from \"@next-libs/basic-components\";\n\ninterface GeneralVedioProps {\n source: string;\n videoTitle?: string;\n preview: boolean;\n height: number;\n}\n\nexport function getTitle(title: string, source: string): string {\n if (title === null) {\n const tmp = source\n .split(\"/\")\n .pop()\n .split(\".\");\n tmp.pop();\n title = tmp.join(\".\");\n }\n return title;\n}\n\nexport function getVideoType(source: string): string {\n const tmp = source.split(\".\");\n if (tmp.length >= 2) {\n return `video/${tmp.pop()}`;\n } else {\n return \"video/mp4\";\n }\n}\n\nexport function GeneralVideo(props: GeneralVedioProps): React.ReactElement {\n const videoType = getVideoType(props.source);\n const title = getTitle(props.videoTitle, props.source);\n\n return (\n <div>\n {props.preview ? (\n <>\n <div className={cssStyle.title}>{title}</div>\n <a target=\"_blank\" href={props.source} rel=\"noopener noreferrer\">\n <video height={props.height} className={cssStyle.player}>\n <source src={props.source} type={videoType} />\n Your browser does not support the video tag.\n </video>\n </a>\n </>\n ) : (\n <video controls height={props.height} className={cssStyle.player}>\n <source src={props.source} type={videoType} />\n Your browser does not support the video tag.\n </video>\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 { GeneralVideo } from \"./GeneralVideo\";\n\n/**\n * @id presentational-bricks.general-video\n * @name presentational-bricks.general-video\n * @docKind brick\n * @description 播放视频或预览视频\n * @author alren\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class GeneralVideoElement extends UpdatingElement {\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 true\n * @default -\n * @description 视频的链接地址\n */\n @property()\n source: string;\n\n /**\n * @kind bool\n * @required true\n * @default -\n * @description 预览模式还是播放模式\n */\n @property({\n type: Boolean,\n })\n preview: boolean;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 预览模式(preview=true)下的标题,如果不设置则从视频链接地址获取文件名字,如果设置为空字符串则表示不显示标题\n */\n @property()\n videoTitle: string;\n\n /**\n * @kind number\n * @required true\n * @default -\n * @description 播放器高度\n */\n @property()\n height: number;\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <GeneralVideo\n source={this.source}\n videoTitle={this.videoTitle}\n preview={this.preview}\n height={this.height}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.general-video\",\n GeneralVideoElement\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, { useMemo } from \"react\";\nimport style from \"./index.module.css\";\nimport { isNil, escape } from \"lodash\";\n\nfunction handleBackspace(value?: string, i = 0): string {\n if (!isNil(value)) {\n const outputCharArr: string[] = [];\n let charCount = 0;\n let backspaceLength = 0;\n\n for (const char of value) {\n charCount++;\n\n if (char.codePointAt(0) === 8) {\n backspaceLength++;\n } else {\n if (backspaceLength) {\n outputCharArr.splice(-backspaceLength, backspaceLength);\n backspaceLength = 0;\n }\n\n outputCharArr.push(char);\n }\n }\n\n return charCount === outputCharArr.length ? value : outputCharArr.join(\"\");\n } else {\n return value;\n }\n}\n\nexport interface LogDisplayProps {\n value: string;\n loadingIcon?: boolean;\n hasBackspace?: boolean;\n containerStyle?: React.CSSProperties;\n}\n\nexport function LogDisplay(props: LogDisplayProps): React.ReactElement {\n const { loadingIcon = true, hasBackspace, containerStyle } = props;\n const value = useMemo(\n () => (hasBackspace ? handleBackspace(props.value) : props.value),\n [props.value, hasBackspace]\n );\n\n const ellipsis = (\n <div className={style.ellipsis}>\n <span />\n <span />\n <span />\n <span />\n </div>\n );\n\n return (\n <pre className={style.terminal} style={containerStyle}>\n <div dangerouslySetInnerHTML={{ __html: escape(value) }}></div>\n {loadingIcon && ellipsis}\n </pre>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { LogDisplay } from \"./LogDisplay\";\n\n/**\n * @id presentational-bricks.log-display\n * @name presentational-bricks.log-display\n * @editor shared-editors.general-code--editor\n * @docKind brick\n * @description 显示日志相关信息\n * @author jo\n * @slots\n * @history\n * 1.93.0:新增属性 `hasBackspace`\n * @memo\n * @noInheritDoc\n */\nexport class LogDisplayElement extends UpdatingElement {\n /**\n * @kind string\n * @required true\n * @default -\n * @description 日志的信息\n */\n @property()\n value: string;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否显示信息拉取中的状态图标\n */\n @property({\n type: Boolean,\n })\n loadingIcon: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 信息是否可能包含退格键,为 `true` 时自动处理退格键,以符合控制台的实际输出\n */\n @property({ type: Boolean }) hasBackspace: boolean;\n\n /**\n * @kind React.CSSProperties\n * @required false\n * @default -\n * @description 容器的样式\n */\n @property({ attribute: false })\n containerStyle: React.CSSProperties;\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 <LogDisplay\n containerStyle={this.containerStyle}\n value={this.value}\n loadingIcon={this.loadingIcon}\n hasBackspace={this.hasBackspace}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"presentational-bricks.log-display\", LogDisplayElement);\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!./BrickDivider.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_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nimport { Divider } from \"antd\";\nimport styles from \"./BrickDivider.module.css\";\n\ninterface BrickDividerProps {\n type?: \"horizontal\" | \"vertical\" | \"radiation\";\n dashed?: boolean;\n dividerStyle?: React.CSSProperties;\n dividerTitle?: string;\n orientation?: \"center\" | \"left\" | \"right\";\n plain?: boolean;\n proportion?: number[];\n}\n\nexport function BrickDivider(props: BrickDividerProps): React.ReactElement {\n const renderProportion = (): React.ReactNode => {\n return (\n <span className={styles.ProportionText}>\n <strong>{props.proportion[0]}</strong>\n {props.proportion[1] && `/${props.proportion[1]}`}\n </span>\n );\n };\n\n return props.type !== \"radiation\" ? (\n <Divider\n type={props.type}\n dashed={props.dashed}\n style={props.dividerStyle}\n orientation={props.orientation}\n plain={props.plain}\n >\n {props.dividerTitle}\n </Divider>\n ) : (\n <div className={styles.DividerRadiation}>\n <div className={styles.DividerRadiationText}>\n <span className={styles.DividerRadiationTitle}>\n {props.dividerTitle}\n </span>\n {props.proportion && renderProportion()}\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 { BrickDivider } from \"./BrickDivider\";\n\n/**\n * @id presentational-bricks.brick-divider\n * @name presentational-bricks.brick-divider\n * @docKind brick\n * @description 分割线\n * @author dophi\n * @slots\n * @history\n * 1.60.0:新属性 `dividerTitle` 和 `orientation`\n * 1.204.0: 新属性 `plain` 和 `type`增加`radiation`\n * @memo\n * @noInheritDoc\n */\nexport class BrickDividerElement extends UpdatingElement {\n /**\n * @required false\n * @description 标题\n * @group basic\n */\n @property()\n dividerTitle: string;\n\n /**\n * @required false\n * @default \"horizontal\"\n * @description 水平|垂直|放射类型,注意`radiation`是个特殊的类型,该样式是特定的\n * @group basic\n */\n @property() type: \"horizontal\" | \"vertical\" | \"radiation\";\n\n /**\n * @required false\n * @default false\n * @description 是否虚线\n * @group basic\n */\n @property({ type: Boolean }) dashed: boolean;\n\n /**\n * @required false\n * @description 分割线自定义样式\n * @group basic\n */\n @property({\n attribute: false,\n })\n dividerStyle: React.CSSProperties;\n\n /**\n * @kind \"center\" | \"left\" | \"right\"\n * @required false\n * @default \"center\"\n * @description 标题位置\n * @group basic\n */\n @property()\n orientation: \"center\" | \"left\" | \"right\";\n\n /**\n * @required false\n * @default false\n * @description 文字是否显示为普通正文样式\n * @group ui\n */\n @property({ type: Boolean })\n plain: boolean;\n\n /**\n * @required false\n * @description 当用于数值显示的情况,eg: 如果要展示\"1/3\",那么传入就是[1,3], 该字段只适配于 type 为 `radiation`\n * @group basic\n */\n @property({ attribute: false })\n proportion: 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 if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickDivider\n type={this.type || \"horizontal\"}\n dashed={this.dashed}\n dividerStyle={this.dividerStyle}\n orientation={this.orientation || \"center\"}\n dividerTitle={this.dividerTitle}\n plain={this.plain}\n proportion={this.proportion}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-divider\",\n BrickDividerElement\n);\n","import {\n UpdatingElement,\n property,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\n\nconst defaultStyle = {\n border: \"0\",\n margin: \"0\",\n width: \"100%\",\n minHeight: \"calc(100vh - 56px)\",\n verticalAlign: \"top\",\n};\n\n/**\n * @id presentational-bricks.general-iframe\n * @name 普通 iframe\n * @docKind brick\n * @description 可嵌入外部网站通用构件\n * @author jo\n * @slots\n * @history\n * @memo\n * @noInheritDoc\n */\nexport class GeneralIframeElement extends UpdatingElement {\n /**\n * @detail any\n * @description iframe 加载完成时触发\n */\n @event({ type: \"general-iframe.loaded\" })\n generalIframeLoaded: EventEmitter<any>;\n\n /**\n * @detail any\n * @description iframe 接收到消息触发事件\n */\n @event({ type: \"iframe.message\" })\n iframeMessage: EventEmitter<unknown>;\n\n /**\n * @kind string\n * @required true\n * @default -\n * @description 被嵌入网站的 url\n */\n @property()\n src: string;\n\n /**\n * @kind Record<string,any>\n * @required false\n * @default -\n * @description iframe 相关样式\n */\n @property({\n attribute: false,\n })\n iframeStyle = {};\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否开启消息监听,开启后会收到消息会触发 iframe.message 事件\n */\n @property({\n type: Boolean,\n })\n enableMessageSubscribe: boolean;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 只对特定源接收信息,防止收到无相关的消息,不配置的话默认取的是 iframe.src 作为值\n */\n @property()\n messageOrigin: string;\n\n private iframe: HTMLIFrameElement;\n\n private onMessage = (event: MessageEvent): void => {\n // istanbul ignore else\n if (\n (this.messageOrigin && this.messageOrigin === event.origin) ||\n (!this.messageOrigin && event.origin === new URL(this.iframe.src).origin)\n ) {\n this.iframeMessage.emit(event.data);\n }\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 if (this.enableMessageSubscribe) {\n window.addEventListener(\"message\", this.onMessage);\n }\n }\n\n disconnectedCallback(): void {\n window.removeEventListener(\"message\", this.onMessage);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected && this.src) {\n if (!this.iframe) {\n this.iframe = document.createElement(\"iframe\");\n this.appendChild(this.iframe);\n\n this.iframe.addEventListener(\"load\", () => {\n this.generalIframeLoaded.emit();\n });\n }\n\n Object.assign(this.iframe.style, defaultStyle, this.iframeStyle);\n this.iframe.src = this.src;\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.general-iframe\",\n GeneralIframeElement\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!./GeneralTooltip.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 { Popover, Tooltip } from \"antd\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { UseBrickConf, MenuIcon } from \"@next-core/brick-types\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport style from \"./GeneralTooltip.module.css\";\nimport { TooltipConfig } from \".\";\nimport classnames from \"classnames\";\n\nexport interface GeneralTooltipProps {\n icon?: MenuIcon;\n iconContainerStyle?: React.CSSProperties;\n content: string | string[];\n title?: string;\n type: \"tooltip\" | \"popover\";\n text?: string;\n tooltipConfig?: TooltipConfig;\n triggerByIcon?: boolean;\n displayBrick?: {\n useBrick: UseBrickConf;\n data?: any;\n };\n textEllipsis?: boolean;\n}\n\nexport function GeneralTooltip(props: GeneralTooltipProps): React.ReactElement {\n const {\n icon,\n iconContainerStyle,\n content,\n type,\n title,\n text,\n tooltipConfig,\n triggerByIcon,\n displayBrick,\n textEllipsis,\n } = props;\n let element: React.ReactElement;\n const { placement, arrowPointAtCenter, overlayStyle } = tooltipConfig || {};\n\n let tipsElem;\n if (Array.isArray(content)) {\n tipsElem = (\n <ul className={style.descContainer}>\n {content.map((desc, index) => (\n <li key={index}>{desc}</li>\n ))}\n </ul>\n );\n } else {\n tipsElem = content;\n }\n const iconNode = (\n <span\n className={style.iconContainer}\n style={iconContainerStyle}\n data-testid=\"trigger-container\"\n >\n {<GeneralIcon icon={icon} />}\n </span>\n );\n const getOffset = (position: string) => {\n let offset: number[];\n switch (position) {\n case \"top\":\n offset = [0, 1];\n break;\n case \"topRight\":\n offset = [20, 1];\n break;\n case \"topLeft\":\n offset = [-20, 1];\n break;\n case \"bottom\":\n offset = [0, -1];\n break;\n case \"bottomRight\":\n offset = [20, 1];\n break;\n case \"bottomLeft\":\n offset = [-20, 1];\n break;\n case \"left\":\n offset = [-1, 0];\n break;\n case \"leftTop\":\n offset = [-1, -12];\n break;\n case \"leftBottom\":\n offset = [-1, 12];\n break;\n case \"right\":\n offset = [1, 0];\n break;\n case \"rightTop\":\n offset = [1, -12];\n break;\n case \"rightBottom\":\n offset = [1, 12];\n break;\n }\n return offset;\n };\n\n const popoverProps = {\n align: {\n offset: placement ? getOffset(placement) : [0, 1],\n },\n placement,\n arrowPointAtCenter,\n overlayStyle,\n title,\n content: tipsElem,\n };\n const tooltipProps = {\n align: {\n offset: placement ? getOffset(placement) : [0, 1],\n },\n placement,\n arrowPointAtCenter,\n overlayStyle,\n title: tipsElem,\n };\n\n const renderElement = (Component: any, componentProps: any) =>\n displayBrick?.useBrick ? (\n <Component {...componentProps}>\n <div className=\"contentContainer\">\n <div\n onMouseOver={(e) => {\n e.currentTarget?.parentNode?.dispatchEvent(\n new MouseEvent(\"mouseover\", {\n bubbles: true,\n })\n );\n }}\n >\n <BrickAsComponent\n data={displayBrick.data}\n useBrick={displayBrick.useBrick}\n />\n </div>\n </div>\n </Component>\n ) : (\n <>\n {triggerByIcon && text && <span className={style.text}>{text}</span>}\n <Component {...componentProps}>\n {!triggerByIcon && text && (\n <span\n className={classnames(style.text, {\n [style.textEllipsis]: textEllipsis,\n })}\n >\n {text}\n </span>\n )}\n {iconNode}\n </Component>\n </>\n );\n\n switch (type) {\n case \"popover\":\n element = renderElement(Popover, popoverProps);\n break;\n default:\n element = renderElement(Tooltip, tooltipProps);\n }\n\n return element;\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { GeneralTooltip, GeneralTooltipProps } from \"./GeneralTooltip\";\n\nexport interface DisplayBrick {\n useBrick: UseBrickConf;\n data?: any;\n}\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 * @id presentational-bricks.general-tooltip\n * @name presentational-bricks.general-tooltip\n * @docKind brick\n * @description 普通的 tooltip\n * @author jo\n * @slots\n * @history\n * 1.153.0:新增属性 `text`\n * 1.59.2:新增构件 `presentational-bricks.general-tooltip`\n * @memo\n * @noInheritDoc\n */\nexport class GeneralTooltipElement extends UpdatingElement {\n /**\n * @kind string | string[]\n * @required true\n * @description 提示内容, 数组表示多行显示, 可根据平台提供的 transform 机制转换成所需的提示内容\n * @group basic\n */\n @property({\n attribute: false,\n })\n content: GeneralTooltipProps[\"content\"];\n\n /**\n * @kind MenuIcon\n * @required true\n * @description 图标配置 [MenuIcon](http://docs.developers.easyops.cn/docs/brick-next/icon)\n * @group basic\n */\n @property({\n attribute: false,\n })\n icon: GeneralTooltipProps[\"icon\"];\n\n /**\n * @required false\n * @description 文案\n * @group basic\n */\n @property()\n text: string;\n\n /**\n * @required false\n * @description 图标容器相关样式\n * @group ui\n */\n @property({\n attribute: false,\n })\n iconContainerStyle: React.CSSProperties;\n\n /**\n * @kind tooltip | popover\n * @required false\n * @default tooltip\n * @description 类型设置\n * @group basic\n */\n @property({\n attribute: false,\n })\n type: GeneralTooltipProps[\"type\"] = \"tooltip\";\n\n /**\n * @required false\n * @description 提示内容的标题, 当 type = popover 时才生效\n * @group basic\n */\n @property()\n header: string;\n\n /**\n * @required false\n * @description tooltip的配置,配置属性见TooltipConfig\n * @group other\n */\n @property({ attribute: false })\n tooltipConfig: TooltipConfig;\n\n /**\n * @required false\n * @default true\n * @description 是否只在icon上hover才显示tooltip,仅在不设置`displayBrick`时有效\n * @group other\n */\n @property({\n attribute: false,\n })\n triggerByIcon = true;\n\n /**\n * @required false\n * @description 自定义展示内容构件,设置后`icon`和`text`会无效\n * @group basic\n */\n @property({\n attribute: false,\n })\n displayBrick: DisplayBrick;\n\n /**\n * @required false\n * @description 内容是否收起以省略号展示\n * @group other\n */\n @property({ type: Boolean })\n textEllipsis: boolean;\n\n connectedCallback(): void {\n this.style.display = \"inline-block\";\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 <GeneralTooltip\n icon={this.icon}\n text={this.text}\n iconContainerStyle={this.iconContainerStyle}\n content={this.content}\n title={this.header}\n type={this.type}\n tooltipConfig={this.tooltipConfig}\n triggerByIcon={this.triggerByIcon}\n displayBrick={this.displayBrick}\n textEllipsis={this.textEllipsis}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.general-tooltip\",\n GeneralTooltipElement\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 from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Modal, Transfer } from \"antd\";\nimport { TransferItem, TransferLocale } from \"antd/lib/transfer\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nimport cssStyle from \"./style.module.css\";\n\ninterface GeneralTransferProps {\n dataSource: TransferItem[];\n targetKeys?: string[];\n onChange: (targetKeys: string[]) => void;\n onSelectedChange?: (\n sourceSelectedKeys: string[],\n targetSelectedKeys: string[]\n ) => void;\n maxSelected?: number;\n\n locale?: Partial<TransferLocale>;\n listStyle?: React.CSSProperties;\n titles?: string[];\n operations?: string[];\n selectedKeys?: string[];\n disabled?: boolean;\n showSearch?: boolean;\n showSelectAll?: boolean;\n}\n\nexport function GeneralTransfer(\n props: GeneralTransferProps\n): React.ReactElement {\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n\n const onChange = (\n targetKeys: string[],\n direction: \"left\" | \"right\",\n moveKeys: string[]\n ): void => {\n if (\n direction === \"left\" ||\n !props.maxSelected ||\n targetKeys.length <= props.maxSelected\n ) {\n props.onChange(targetKeys);\n } else {\n Modal.warning({\n title: \"提示\",\n content: `所选数量超过最大限制(${props.maxSelected}),请重新选择`,\n okText: \"知道了\",\n });\n }\n };\n\n const onSelectChange = (\n sourceSelectedKeys: string[],\n targetSelectedKeys: string[]\n ): void => {\n props.onSelectedChange?.(sourceSelectedKeys, targetSelectedKeys);\n };\n\n const filterOption = (inputValue: string, item: TransferItem): boolean => {\n const q = inputValue.trim().toLowerCase();\n return item.title.toLowerCase().includes(q);\n };\n\n const footer = (): React.ReactNode => {\n return (\n <div className={cssStyle.footer}>最多选择 {props.maxSelected} 个</div>\n );\n };\n\n return (\n <div className={cssStyle.container}>\n <Transfer\n lazy={false}\n dataSource={props.dataSource}\n render={(item) => item.title}\n targetKeys={props.targetKeys}\n onChange={onChange}\n onSelectChange={onSelectChange}\n locale={props.locale}\n listStyle={props.listStyle}\n titles={props.titles}\n operations={props.operations}\n selectedKeys={props.selectedKeys}\n disabled={props.disabled}\n filterOption={filterOption}\n showSearch={props.showSearch}\n showSelectAll={props.showSelectAll}\n footer={props.maxSelected && footer}\n />\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isEmpty, get, isEqual } from \"lodash\";\nimport { TransferItem, TransferLocale } from \"antd/lib/transfer\";\nimport {\n BrickWrapper,\n UpdatingElement,\n property,\n method,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { GeneralTransfer } from \"./GeneralTransfer\";\nimport { BrickWrapperConfig } from \"../interfaces\";\n\n/**\n * @id presentational-bricks.general-transfer\n * @name presentational-bricks.general-transfer\n * @docKind brick\n * @description 双栏穿梭选择框\n * @author ice\n * @slots\n * @history\n * 1.77.0:新增构件 `presentational-bricks.general-transfer`\n * @memo\n * ### DEFAULT_LOCALE\n *\n * ```typescript\n * const DEFAULT_LOCALE = {\n * searchPlaceholder: \"请输入搜索内容\",\n * itemUnit: \"项\",\n * itemsUnit: \"项\",\n * };\n * ```\n * @noInheritDoc\n */\nexport class GeneralTransferElement extends UpdatingElement {\n /**\n * @kind any[]\n * @required true\n * @default -\n * @description 数据源,其中的数据将会被渲染到左边一栏中,targetKeys 中指定的除外\n */\n @property({ attribute: false })\n dataSource: any[];\n\n /**\n * @kind CSSProperties\n * @required false\n * @default -\n * @description 两个穿梭框的自定义样式,常用来设置宽高\n */\n @property({ attribute: false })\n listStyle: React.CSSProperties;\n\n /**\n * @kind string[]\n * @required false\n * @default -\n * @description 设置哪些项应该被选中\n */\n @property({ attribute: false })\n selectedKeys: string[];\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否禁用\n */\n @property({ type: Boolean })\n disabled: boolean;\n\n /**\n * @kind number\n * @required false\n * @default -\n * @description 最多选择数,当 `dataSource` 个数大于该值时,不显示全勾选框\n */\n @property({ type: Number })\n maxSelected: number;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否显示搜索框\n */\n @property({ type: Boolean })\n showSearch: boolean;\n\n /**\n * @default -\n * @required false\n * @description 设置容器空状态时显示`empty`构件属性\n * @group advanced\n */\n @property({ attribute: false })\n wrapperConfig: BrickWrapperConfig = {};\n\n /**\n * @kind { key: string, title: string }\n * @required false\n * @default -\n * @description 当 `dataSource` 中的每一项没有 key 或 title 字段时,须设置该属性。`key` 和 `title` 均须设置\n * @group advanced\n */\n @property({ attribute: false })\n dataDescriptor: { [k in keyof TransferItem]: string };\n\n /**\n * @kind string[]\n * @required false\n * @default -\n * @description 显示在右侧框数据的 key 集合\n * @group advanced\n */\n @property({ attribute: false })\n targetKeys: string[] = [];\n\n /**\n * @kind [string, string]\n * @required false\n * @default -\n * @description 标题集合,顺序从左至右\n * @group advanced\n */\n @property({ attribute: false })\n titles: string[];\n\n /**\n * @kind [string, string]\n * @required false\n * @default -\n * @description 操作文案集合,顺序从上至下\n * @group advanced\n */\n @property({ attribute: false })\n operations: string[];\n\n /**\n * @kind { itemUnit: string, itemsUnit: string, searchPlaceholder: string }\n * @required false\n * @default [DEFAULT_LOCALE](#default_locale)\n * @description 文案\n * @group advanced\n */\n @property({ attribute: false })\n locale: Partial<TransferLocale>;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 当选项发生转移时,是否需要实时发出 `general.transfer.change` 事件\n * @group advanced\n */\n @property({ attribute: false })\n realTimeNotification = true;\n\n /**\n * @detail string[]\n * @description 右侧框数据的 key 集合\n */\n @event({ type: \"general.transfer.change\" })\n generalTransferChange: EventEmitter<string[]>;\n\n private realDataSource: TransferItem[];\n private previousTargetKeys: 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 private getDataSource(): TransferItem[] {\n if (\n this.realDataSource &&\n isEqual(this.targetKeys, this.previousTargetKeys)\n )\n return this.realDataSource;\n this.previousTargetKeys = this.targetKeys;\n let dataSource = [...this.dataSource];\n if (!isEmpty(this.dataDescriptor)) {\n dataSource = dataSource.map((item) => ({\n key: get(item, this.dataDescriptor.key),\n title: get(item, this.dataDescriptor.title),\n }));\n }\n this.realDataSource = dataSource;\n if (this.maxSelected) this.updateDisable();\n return this.realDataSource;\n }\n\n private updateDisable() {\n if (this.targetKeys.length >= this.maxSelected) {\n this.realDataSource = this.realDataSource.map((item) => {\n if (!this.targetKeys.includes(item.key)) {\n item.disabled = true;\n }\n return item;\n });\n } else {\n this.realDataSource = this.realDataSource.map((item) => {\n item.disabled = false;\n return item;\n });\n }\n }\n\n /**\n * @description 当 `realTimeNotification` 为 false 时,可以调用该方法来发出事件\n */\n @method()\n notifyChange(): void {\n this.generalTransferChange.emit(this.targetKeys);\n }\n\n handleChange = (targetKeys: string[]): void => {\n this.targetKeys = targetKeys;\n if (this.realTimeNotification) {\n this.notifyChange();\n }\n if (this.maxSelected) {\n this.updateDisable();\n this._render();\n }\n };\n\n handleSelectedChange = (\n sourceSelectedKeys: string[],\n targetSelectedKeys: string[]\n ): void => {\n if (this.maxSelected) {\n if (\n sourceSelectedKeys.length + this.targetKeys.length >=\n this.maxSelected\n ) {\n this.realDataSource = this.realDataSource.map((item) => {\n if (\n !sourceSelectedKeys.includes(item.key) &&\n !this.targetKeys.includes(item.key)\n ) {\n item.disabled = true;\n }\n return item;\n });\n } else {\n this.realDataSource = this.realDataSource.map((item) => {\n item.disabled = false;\n return item;\n });\n }\n }\n this.selectedKeys = [...sourceSelectedKeys, ...targetSelectedKeys];\n };\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected && this.dataSource) {\n const dataSource = this.getDataSource();\n const showSelectAll = this.maxSelected\n ? this.maxSelected >= dataSource.length\n : true;\n ReactDOM.render(\n <BrickWrapper wrapperConfig={this.wrapperConfig}>\n <GeneralTransfer\n dataSource={dataSource}\n targetKeys={this.targetKeys}\n onChange={this.handleChange}\n onSelectedChange={this.handleSelectedChange}\n maxSelected={this.maxSelected}\n locale={this.locale}\n listStyle={this.listStyle}\n titles={this.titles}\n operations={this.operations}\n selectedKeys={this.selectedKeys}\n disabled={this.disabled}\n showSearch={this.showSearch}\n showSelectAll={showSelectAll}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.general-transfer\",\n GeneralTransferElement\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!./GeneralLabel.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 { MenuIcon } from \"@next-core/brick-types\";\nimport { Link, GeneralIcon } from \"@next-libs/basic-components\";\nimport styles from \"./GeneralLabel.module.css\";\nimport { isNil } from \"lodash\";\n\ninterface GeneralLabelProps {\n prefixIcon?: MenuIcon;\n suffixIcon?: MenuIcon;\n text?: string;\n url?: string;\n href?: string;\n handleClick?: () => void;\n}\n\nexport function GeneralLabel(props: GeneralLabelProps): React.ReactElement {\n const iconNode = (icon: MenuIcon) => {\n return (\n <>\n {icon && (\n <span>\n <GeneralIcon icon={icon} />\n </span>\n )}\n </>\n );\n };\n\n const labelNode = (\n <span className={styles.labelWrapper} onClick={props.handleClick}>\n {iconNode(props.prefixIcon)}\n {props.text}\n {iconNode(props.suffixIcon)}\n </span>\n );\n\n const link = (\n <Link to={props.url} href={props.href}>\n {labelNode}\n </Link>\n );\n\n return (\n <>\n {isNil(props.url) && isNil(props.href) ? <>{labelNode}</> : <>{link}</>}\n </>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isEmpty } from \"lodash\";\nimport {\n BrickWrapper,\n UpdatingElement,\n property,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { GeneralLabel } from \"./GeneralLabel\";\nimport { MenuIcon } from \"@next-core/brick-types\";\n\n/**\n * @id presentational-bricks.general-label\n * @name presentational-bricks.general-label\n * @docKind brick\n * @description 可用来展示基本文案、前后缀图标,可配置点击事件和 url 的通用 label 构件\n * @author lynette\n * @slots\n * @history\n * 1.81.0:新增构件 `presentational-bricks.general-label`\n * 1.89.11:使用 `dataSource` 代替之前 `data`\n * @memo\n * @noInheritDoc\n */\nexport class GeneralLabelElement extends UpdatingElement {\n /**\n * @required false\n * @description 文字内容\n * @group basic\n */\n @property()\n text: string;\n\n /**\n * @required false\n * @description 前缀图标\n * @group basic\n */\n @property({\n attribute: false,\n })\n prefixIcon: MenuIcon;\n\n /**\n * @required false\n * @description 后缀图标\n * @group basic\n */\n @property({\n attribute: false,\n })\n suffixIcon: MenuIcon;\n\n /**\n * @required false\n * @description 链接的 URL\n * @group basic\n */\n @property()\n url: string;\n\n /**\n * @required false\n * @description 是否使用原生 <a> 标签,通常用于外链的跳转\n * @group advanced\n */\n @property()\n href: string;\n\n /**\n * @detail any\n * @description 点击 label 触发的事件,详情为编排者输入的 dataSource\n * @group advanced\n */\n @event({ type: \"label.click\" })\n labelClick: EventEmitter<any>;\n\n /**\n * @required false\n * @description `label.click`事件的传出的数据\n * @group advanced\n */\n @property({\n attribute: false,\n })\n dataSource: any;\n\n /**\n * @required false\n * @description `label.click`事件的详情\n * @deprecated\n * @group advanced\n */\n @property({\n attribute: false,\n })\n data: any;\n\n connectedCallback(): void {\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n private _handleClick = (): void => {\n // istanbul ignore if\n if (!isEmpty(this.data)) {\n // eslint-disable-next-line no-console\n console.warn(\n \"`data` of `<presentational-bricks.general-label>` are deprecated, use `dataSource` instead.\"\n );\n }\n this.labelClick.emit(this.dataSource ?? this.data);\n };\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <GeneralLabel\n prefixIcon={this.prefixIcon}\n suffixIcon={this.suffixIcon}\n text={this.text}\n url={this.url}\n href={this.href}\n handleClick={this._handleClick}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.general-label\",\n GeneralLabelElement\n);\n","import React, { useEffect, useState } from \"react\";\nimport { Progress } from \"antd\";\n\nimport { ColorObj } from \"./index\";\nimport style from \"./style.module.css\";\n\ninterface BasicProgressProps {\n value: number;\n description: string;\n colorMap?: ColorObj[];\n configProps?: Record<string, any>;\n type: \"line\" | \"circle\" | \"dashboard\";\n text: string;\n fontSize: string;\n textColor?: string;\n}\n\nexport enum Color {\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 slategray = \"slategray\",\n doderblue = \"doderblue\",\n royalblue = \"royalblue\",\n lightorange = \"lightorange\",\n goldenrod = \"goldenrod\",\n jewelryblue = \"jewelryblue\",\n orangered = \"orangered\",\n springgreen = \"springgreen\",\n mediumpurple = \"mediumpurple\",\n skyblue = \"skyblue\",\n yellowgreen = \"yellowgreen\",\n lightpurple = \"lightpurple\",\n}\n\nexport function BasicProgress(props: BasicProgressProps): React.ReactElement {\n const [color, setColor] = useState(props.configProps?.strokeColor || \"blue\");\n\n useEffect(() => {\n if (props.colorMap) {\n const curObj = props.colorMap.find((item) => {\n return +item.progress >= +props.value;\n });\n const color = Object.values(Color).includes(curObj?.color)\n ? curObj.color\n : \"\";\n setColor(color);\n }\n }, [props.colorMap, props.value]);\n\n const format = (percent) => {\n return (\n <div className={style.showContainer} style={{ fontSize: props.fontSize }}>\n <span\n style={{ color: props.textColor ?? `var(--theme-${color}-color)` }}\n className={style.showValue}\n >\n {props.text}\n </span>\n <span className={style.showDescription}>{props.description}</span>\n </div>\n );\n };\n\n return (\n <div className={style.mainContainer}>\n <Progress\n type={props.type}\n strokeColor={`var(--theme-${color}-color)`}\n percent={props.value}\n format={format}\n {...props.configProps}\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!./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 from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { BasicProgress, Color } from \"./BasicProgress\";\n\nexport interface ColorObj {\n /**\n * 进度范围最大值,值(value)小于等于最大值则为该颜色\n */\n progress: string | number;\n /**\n * 颜色\n */\n color: Color;\n}\n\n/**\n * @id presentational-bricks.basic-progress\n * @name presentational-bricks.basic-progress\n * @docKind brick\n * @description 进度条展示\n * @author momo\n * @slots\n * @history\n * 1.90.0:新增 text 和 fontSIze 属性\n * 1.82.3:color 颜色选择标准化\n * 1.82.2:新增构件 `presentational-bricks.basic-progress`\n * @memo\n * ```typescript\n * export enum Color {\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 * slategray = \"slategray\",\n * doderblue = \"doderblue\",\n * royalblue = \"royalblue\",\n * lightorange = \"lightorange\",\n * goldenrod = \"goldenrod\",\n * jewelryblue = \"jewelryblue\",\n * orangered = \"orangered\",\n * springgreen = \"springgreen\",\n * mediumpurple = \"mediumpurple\",\n * skyblue = \"skyblue\",\n * yellowgreen = \"yellowgreen\",\n * lightpurple = \"lightpurple\",\n * }\n * ```\n * @noInheritDoc\n */\nexport class BasicProgressElement extends UpdatingElement {\n /**\n * @kind number\n * @required true\n * @description 进度值(只负责确定颜色的值)\n * @group basic\n */\n @property({ attribute: false })\n value: number;\n\n /**\n * @kind line | circle | dashboard\n * @required circle\n * @default dashboard\n * @description 类型\n * @group basic\n */\n @property({ attribute: false })\n type: \"line\" | \"circle\" | \"dashboard\";\n\n /**\n * @kind string\n * @required false\n * @description 展示内容\n * @group basic\n */\n @property({ attribute: false })\n text: string;\n\n /**\n * @kind string\n * @required false\n * @description 描述值\n * @group basic\n */\n @property({ attribute: false })\n description: string;\n\n /**\n * @kind string\n * @required false\n * @description 展示内容的颜色\n * @group ui\n */\n @property({ attribute: false })\n textColor: string;\n\n /**\n * @kind ColorObj[]\n * @required false\n * @description 颜色范围\n * @group ui\n */\n @property({ attribute: false })\n colorMap: ColorObj[];\n\n /**\n * @kind string\n * @required false\n * @description 设定展示内容大小\n * @group ui\n */\n @property({ attribute: false })\n fontSize: string;\n\n /**\n * @kind Record<string, any>\n * @required false\n * @description 透传[antd progress](https://3x.ant.design/components/progress-cn/)\n * @group other\n */\n @property({ attribute: false })\n configProps: Record<string, 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 <BasicProgress\n configProps={this.configProps}\n value={this.value}\n description={this.description}\n type={this.type}\n colorMap={this.colorMap}\n text={this.text}\n fontSize={this.fontSize}\n textColor={this.textColor}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.basic-progress\",\n BasicProgressElement\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 { Typography, Input, Button } from \"antd\";\nimport style from \"./index.module.css\";\nimport { useTranslation } from \"react-i18next\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nconst { Text } = Typography;\ninterface CopyableTextProps {\n text: string;\n tooltips?: string;\n hiddenText?: boolean;\n type?: \"custom\" | \"input\" | \"text\";\n dataSource?: Record<string, any>;\n textClick?: (detail: any) => void;\n suffixCount?: number;\n}\nexport function CopyableText(props: CopyableTextProps): React.ReactElement {\n const { text, tooltips, hiddenText, type, dataSource, suffixCount } = props;\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n const ParagraphCom = () => (\n <Typography.Paragraph\n copyable={{ tooltips: [tooltips ?? t(K.COPY), t(K.COPIED)], text }}\n className={style.nextTypography}\n >\n <span className={style.text} onClick={() => props?.textClick(dataSource)}>\n {hiddenText ? \"\" : text}\n </span>\n </Typography.Paragraph>\n );\n const InputCom = () => (\n <Input.Group compact style={{ width: \"100%\", whiteSpace: \"nowrap\" }}>\n <Button className={style.typographyButton}>\n <Typography.Paragraph\n copyable={{\n tooltips: [tooltips ?? t(K.COPY), t(K.COPIED)],\n text,\n }}\n className={style.nextTypography}\n ></Typography.Paragraph>\n </Button>\n <Input readOnly value={text} />\n </Input.Group>\n );\n const TextCom = () => {\n const _suffixCount = text.length < suffixCount ? text.length : suffixCount;\n const start = text.slice(0, text.length - _suffixCount).trim();\n const suffix = text?.slice(-_suffixCount).trim();\n return (\n <Text\n style={{ maxWidth: \"100%\" }}\n ellipsis={{ suffix }}\n copyable={{ tooltips: [tooltips ?? t(K.COPY), t(K.COPIED)], text }}\n >\n {start}\n </Text>\n );\n };\n const componentMap = {\n custom: ParagraphCom,\n input: InputCom,\n text: TextCom,\n };\n return <div>{type && componentMap[type]()}</div>;\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 { CopyableText } from \"./CopyableText\";\n\n/**\n * @id presentational-bricks.copyable-text\n * @name presentational-bricks.copyable-text\n * @docKind brick\n * @description 可复制文本\n * @author ann\n * @slots\n * @history\n * 1.99.0:新增构件 `presentational-bricks.copyable-text`\n * @memo\n * @noInheritDoc\n */\nexport class CopyableTextElement extends UpdatingElement {\n /**\n * @kind string\n * @required true\n * @default -\n * @description 要复制的文本\n */\n @property()\n text: string;\n /**\n * @kind string\n * @required false\n * @default 复制(copy)\n * @description 自定义提示文案\n */\n @property({ attribute: false })\n tooltips: string;\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否隐藏需要复制的文本,`input`样式下该设置无效\n */\n @property({ type: Boolean })\n hiddenText: boolean;\n /**\n * @kind string\n * @default custom\n * @required false\n * @description 构件样式,支持普通(`custom`)和输入框(`input`)和 中间省略(`text`) 样式(见示例)\n */\n @property({ attribute: false })\n type: \"custom\" | \"input\" | \"text\" = \"custom\";\n /**\n * @kind object\n * @required false\n * @default -\n * @description 数据源\n */\n @property({ attribute: false })\n dataSource: Record<string, any>;\n\n /**\n * @kind number\n * @required false\n * @default 10\n * @description 当`type: text`,中间省略时,保留文本末尾字段的的数量\n */\n @property({ attribute: false })\n suffixCount = 10;\n /**\n * @detail any\n * @description 文本点击时触发的事件\n */\n @event({ type: \"text.click\" })\n itemClick: EventEmitter<any>;\n private _handleTextClick = (data: any): void => {\n this.itemClick.emit(data);\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 <CopyableText\n text={this.text}\n tooltips={this.tooltips}\n hiddenText={this.hiddenText}\n type={this.type}\n dataSource={this.dataSource}\n textClick={this._handleTextClick}\n suffixCount={this.suffixCount}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.copyable-text\",\n CopyableTextElement\n);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickAsComponent,\n BrickWrapper,\n property,\n UpdatingElement,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { Calendar } from \"antd\";\nimport moment from \"moment\";\nimport { CalendarMode } from \"antd/lib/calendar/generateCalendar\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { groupBy } from \"lodash\";\n\n/** panelEvent */\nexport interface PanelEvent {\n /** 日期 */\n date: moment.Moment;\n /** 显示模式 month/year */\n mode: CalendarMode;\n}\n\n/**\n * @id presentational-bricks.calendar\n * @name 日历 calendar\n * @docKind brick\n * @description 按照日历形式展示数据的容器\n * @author Alex\n * @history\n * 1.101.0:新增构件 `presentational-bricks.brick-calendar`\n * @memo\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 BrickCalendarElement extends UpdatingElement {\n /**\n * @category property\n * @kind [moment](https://momentjs.com)\n * @required false\n * @default 当前日期\n * @description value 日历默认值.\n */\n @property({ attribute: false })\n value: moment.Moment = moment();\n\n /**\n * @category property\n * @anchor\n * @kind month/year\n * @required false\n * @default month\n * @description 初始模式.\n */\n @property({ attribute: false })\n mode: CalendarMode = \"month\";\n\n /**\n * @category property\n * @kind Boolean\n * @required true\n * @default true\n * @description 是否全屏展示\n */\n @property({\n attribute: false,\n })\n fullscreen = true;\n\n /**\n * @category property\n * @kind [UseBrickConf](#UseBrickConf)\n * @required -\n * @default -\n * @description 自定义 brick 渲染日期单元格,返回内容会被追加到单元格\n */\n @property({ attribute: false })\n dateCell: { useBrick: UseBrickConf };\n\n /**\n * @category property\n * @kind [UseBrickConf](#UseBrickConf)\n * @required true\n * @default -\n * @description 自定义 brick 渲染日期单元格,返回内容会被追加到单元格\n */\n @property({ attribute: false })\n monthCell: { useBrick: UseBrickConf };\n\n private _dateData: Record<string, any> = {};\n private _monthData: Record<string, any> = {};\n /**\n * @kind any[]\n * @required false\n * @default -\n * @description 数据源\n */\n @property({\n __unstable_doNotDecorate: true,\n })\n set data(value: any[]) {\n const formatData = value.map((item) => ({\n ...item,\n _formatDate: {\n date: moment(item.date).format(\"YYYY-MM-DD\"),\n month: moment(item.date).format(\"YYYY-MM\"),\n },\n }));\n this._dateData = groupBy(formatData, \"_formatDate.date\");\n this._monthData = groupBy(formatData, \"_formatDate.month\");\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 getDataByMode(date: moment.Moment, mode: CalendarMode): any[] {\n let data: Record<string, any> = {};\n let formatDate: string;\n switch (mode) {\n case \"month\":\n data = this._dateData;\n formatDate = date.format(\"YYYY-MM-DD\");\n break;\n case \"year\":\n data = this._monthData;\n formatDate = date.format(\"YYYY-MM\");\n break;\n }\n return data[formatDate];\n }\n\n /**\n * @detail [moment](https://momentjs.com)\n * @description 点击选择日期事件\n */\n @event({ type: \"presentational.calendar.onSelect\" })\n onSelect: EventEmitter<moment.Moment>;\n /**\n * @detail { date: [moment](https://momentjs.com); data: any }\n * @description 点击选择日期事件-v2\n */\n @event({ type: \"presentational.calendar.onSelect-v2\" })\n onSelectV2: EventEmitter<{ date: moment.Moment; data: any }>;\n\n handleSelect = (date?: moment.Moment) => {\n const curData = this.getDataByMode(date, this.mode);\n this.value = date;\n this.onSelect.emit(date);\n this.onSelectV2.emit({ date, data: curData });\n };\n\n /**\n * @detail [moment](https://momentjs.com)\n * @description 日期变化事件\n */\n @event({ type: \"presentational.calendar.onChange\" })\n onChange: EventEmitter<moment.Moment>;\n /**\n * @detail { date: [moment](https://momentjs.com); data: any }\n * @description 日期变化事件\n */\n @event({ type: \"presentational.calendar.onChange-v2\" })\n onChangeV2: EventEmitter<{ date: moment.Moment; data: any }>;\n\n handleChange = (date?: moment.Moment) => {\n const curData = this.getDataByMode(date, this.mode);\n this.value = date;\n this.onChange.emit(date);\n this.onChangeV2.emit({ date, data: curData });\n };\n\n /**\n * @detail PanelEvent\n * @description 日期面板变化回调\n */\n @event({ type: \"presentational.calendar.onPanelChange\" })\n onPanelChange: EventEmitter<PanelEvent>;\n handlePanelChange = (date: moment.Moment, mode: CalendarMode) => {\n this.mode = mode;\n this.onPanelChange.emit({ date: date, mode: mode } as PanelEvent);\n };\n\n getCustomComp = (cell: { useBrick: UseBrickConf }, mode: CalendarMode) => {\n const CustomComp = (date: moment.Moment) => {\n const curData = this.getDataByMode(date, mode);\n if (cell.useBrick) {\n return (\n <BrickAsComponent\n useBrick={cell.useBrick as any}\n data={{\n date,\n data: curData,\n }}\n />\n );\n }\n return null;\n };\n return CustomComp;\n };\n\n dateCellRender = (date: moment.Moment) => {\n return this.dateCell\n ? this.getCustomComp(this.dateCell, \"month\")(date)\n : null;\n };\n\n monthCellRender = (date: moment.Moment) => {\n return this.monthCell\n ? this.getCustomComp(this.monthCell, \"year\")(date)\n : null;\n };\n\n // antd design defaultValue实现逻辑有问题,故不加入defaultValue , so, value 就等于defaultValue\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <Calendar\n value={this.value}\n mode={this.mode}\n fullscreen={!!this.fullscreen}\n dateCellRender={this.dateCellRender}\n monthCellRender={this.monthCellRender}\n onSelect={this.handleSelect}\n onChange={this.handleChange}\n onPanelChange={this.handlePanelChange}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"presentational-bricks.calendar\", BrickCalendarElement);\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, useRef, useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Upload, Button, message, Avatar, Modal } from \"antd\";\nimport AvatarEditor from \"react-avatar-editor\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nimport { AvatarProps } from \"antd/lib/avatar\";\nimport { handleHttpError } from \"@next-core/brick-kit\";\nimport { http } from \"@next-core/brick-http\";\nimport style from \"./style.module.css\";\n\nconst action = `api/gateway/object_store.object_store.PutObject/api/v1/objectStore/bucket/avatar/object`;\n\ninterface UploadProps {\n uploadSuccess: (url: string) => void;\n imgSrc?: string;\n size: number;\n modalOkText: string;\n textStyle: Record<string, any>;\n}\nexport function AvatarUpload(props: UploadProps): React.ReactElement {\n const [visible, setVisible] = useState(false);\n const [imgSrc, setImgSrc] = useState(null);\n const [showSrc, setShowSrc] = useState(null);\n const avatarRef = useRef();\n const uploadRef = useRef();\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n\n useEffect(() => {\n if (props.imgSrc) {\n setShowSrc(props.imgSrc);\n }\n }, [props.imgSrc]);\n const handleBeforeUpload = (file, fileList) => {\n const isJpgOrPng = file.type === \"image/jpeg\" || file.type === \"image/png\";\n if (!isJpgOrPng) {\n message.error(\"请上传 JPG/PNG 格式!\");\n }\n const isLt2M = file.size / 1024 / 1024 < 2;\n if (!isLt2M) {\n message.error(\"图片大小超过2MB!\");\n }\n if (isJpgOrPng && isLt2M) {\n setVisible(true);\n setImgSrc(file);\n }\n return false;\n };\n\n const showAvatar = (src: string): React.ReactElement => {\n const avatarProps: AvatarProps = {\n size: props.size,\n style: {\n marginRight: 8,\n },\n };\n if (src) {\n avatarProps.src = src;\n } else {\n avatarProps.icon = \"user\";\n avatarProps.style.backgroundColor = \"var(--color-brand)\";\n }\n return (\n <div\n className={style.avatarContainer}\n style={{\n position: \"relative\",\n }}\n >\n <Upload\n ref={uploadRef}\n action={action}\n beforeUpload={handleBeforeUpload}\n showUploadList={false}\n >\n <Avatar {...avatarProps}></Avatar>\n <div\n className={style.avatarEditContainer}\n style={{\n position: \"absolute\",\n bottom: \"0px\",\n height: `${props.size / 2}px`,\n width: `${props.size}px`,\n backgroundColor: \"#f5f5f5\",\n opacity: 0.8,\n borderRadius: `0 0 ${props.size}px ${props.size}px`,\n }}\n >\n <span className={style.avatarEdit} style={props.textStyle}>\n 编辑\n </span>\n </div>\n </Upload>\n </div>\n );\n };\n\n const transformResponseToUrl = (objectName: string): string => {\n return `api/gateway/object_store.object_store.GetObject/api/v1/objectStore/bucket/avatar/object/${objectName}`;\n };\n\n const handleCropperImg = (): void => {\n const avatarEditor = avatarRef.current;\n // istanbul ignore else\n if (avatarEditor) {\n const canvas = (avatarEditor as AvatarEditor).getImage().toDataURL();\n setShowSrc(canvas);\n (avatarEditor as AvatarEditor).getImage().toBlob((blob) => {\n const formData = new FormData();\n formData.append(\"file\", blob);\n http\n .put(action, formData)\n .then((res) => {\n const url = transformResponseToUrl(res.data.objectName);\n props.uploadSuccess(url);\n })\n .catch((err) => {\n handleHttpError(err);\n });\n });\n }\n setVisible(false);\n };\n\n const handleCancel = (): void => {\n setVisible(false);\n };\n\n return (\n <div>\n <div style={{ display: \"flex\", alignItems: \"flex-end\" }}>\n {showAvatar(showSrc)}\n </div>\n <Modal\n title={t(K.CROP_TITLE)}\n width={400}\n bodyStyle={{ display: \"flex\", justifyContent: \"center\" }}\n visible={visible}\n onOk={handleCropperImg}\n onCancel={handleCancel}\n okText={props.modalOkText}\n >\n {imgSrc && (\n <AvatarEditor\n width={250}\n height={250}\n border={50}\n borderRadius={250}\n image={imgSrc}\n ref={avatarRef}\n ></AvatarEditor>\n )}\n </Modal>\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 { AvatarUpload } from \"./AvatarUpload\";\n\n/**\n * @id presentational-bricks.avatar-upload\n * @author momomo\n * @history\n * 1.x.0: 新增构件 `presentational-bricks.avatar-upload`\n * @docKind brick\n * @noInheritDoc\n */\nexport class AvatarUploadElement 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 * @detail `string`\n * @description \t上传图片成功发出事件,返回的是对应图片地址\n */\n @event({ type: \"avatar.upload.success\" })\n changeEvent: EventEmitter<any>;\n private _handleUploadSuccess = (url: string): void => {\n this.changeEvent.emit(url);\n };\n /**\n * @kind string\n * @required false\n * @default -\n * @description 展示图片的src\n */\n @property({ attribute: false })\n imgSrc: string;\n\n /**\n * @kind number\n * @required false\n * @default 150\n * @description 展示框大小\n */\n @property({ attribute: false })\n size = 150;\n\n /**\n * @kind number\n * @required false\n * @default 确定\n * @description 展示框大小\n */\n @property({ attribute: false })\n modalOkText = \"确定\";\n\n /**\n * @kind number\n * @required false\n * @default 14px\n * @description 展示框大小\n */\n @property({ attribute: false })\n textStyle = {};\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <AvatarUpload\n modalOkText={this.modalOkText}\n size={this.size}\n imgSrc={this.imgSrc}\n uploadSuccess={this._handleUploadSuccess}\n textStyle={this.textStyle}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.avatar-upload\",\n AvatarUploadElement\n);\n","import React from \"react\";\nimport { Badge as AntdBadge } from \"antd\";\nimport { BadgeProps as AntdBadgeProps } from \"antd/lib/badge\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { UseBrickConf, MenuIcon } from \"@next-core/brick-types\";\nimport { GeneralIcon } from \"./GeneralIcon\";\n\nexport interface BadgeProps extends AntdBadgeProps {\n dataSource?: any;\n content?: string | { useBrick: UseBrickConf; dataSource?: any };\n contentIcon?: MenuIcon;\n countColor?: string;\n color?: string;\n}\n\nexport function Badge(props: BadgeProps): React.ReactElement {\n const renderContent = (conf: UseBrickConf, data: any): React.ReactElement => {\n return <BrickAsComponent useBrick={conf} data={data} />;\n };\n\n const shouldShowIcon =\n props.contentIcon && typeof props.contentIcon === \"object\";\n return (\n <AntdBadge\n count={props.count}\n overflowCount={props.overflowCount}\n offset={props.offset}\n dot={props.dot}\n showZero={props.showZero}\n {...(props.dot === true\n ? { color: `var(--theme-${props.color}-color)` }\n : // antd Badge 的 color 属性对数字的圆圈不起作用, 手动用 background 覆盖\n {\n style: {\n background: `var(--theme-${props.color}-color)`,\n },\n })}\n >\n {shouldShowIcon && <GeneralIcon icon={props.contentIcon} />}\n {typeof props.content === \"string\" ? (\n <span style={shouldShowIcon && { marginLeft: \"5px\" }}>\n {props.content}\n </span>\n ) : typeof props.content === \"object\" &&\n props.content.dataSource !== undefined ? (\n renderContent(props.content.useBrick, props.content.dataSource)\n ) : typeof props.content === \"object\" ? (\n renderContent(props.content.useBrick, props.dataSource)\n ) : (\n \"\"\n )}\n </AntdBadge>\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!./GeneralBadge.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 ReactDOM from \"react-dom\";\nimport { BrickWrapper, property, UpdatingElement } from \"@next-core/brick-kit\";\nimport { Badge } from \"@next-libs/basic-components\";\nimport { MenuIcon, UseBrickConf } from \"@next-core/brick-types\";\nimport classNames from \"classnames\";\nimport styles from \"./GeneralBadge.module.css\";\n\n/**\n * @id presentational-bricks.general-badge\n * @author Jimmy\n * @history\n * 1.0.0: 新增构件 `presentational-bricks.general-badge`\n * @docKind brick\n * @noInheritDoc\n */\nexport class GeneralBadgeElement extends UpdatingElement {\n /**\n * @kind string | { useBrick: UseBrickConf, dataSource?: any }\n * @required false\n * @default -\n * @description 文字内容,可以使用自定义构件来做复杂的展示。不设置时单独使用徽标。\n */\n @property({\n attribute: false,\n })\n content: string | { useBrick: UseBrickConf; dataSource?: any };\n\n /**\n * @kind MenuIcon\n * @required false\n * @default -\n * @description 在内容中使用Icon\n */\n @property({\n attribute: false,\n })\n contentIcon: MenuIcon;\n\n /**\n * @required false\n * @default false\n * @description 数据源,content 的数据默认来自都来自于此,也可以在content中单独设置数据源。\n */\n @property({\n attribute: false,\n })\n dataSource: any;\n\n /**\n * @kind Color\n * @required false\n * @default red\n * @description 徽标的颜色\n */\n @property({\n attribute: false,\n })\n color = \"red\";\n\n /**\n * @required false\n * @default -\n * @description 展示的数字,大于 overflowCount 时显示为 ${overflowCount}+,为 0 时隐藏\n */\n @property({\n attribute: false,\n })\n count = 0;\n\n /**\n * @required false\n * @default 99\n * @description 展示封顶的数字值\n */\n @property({\n attribute: false,\n })\n overflowCount = 99;\n\n /**\n * @required false\n * @default false\n * @description 不展示数字,只有一个小圆点.\n * @group advanced\n */\n @property({\n type: Boolean,\n })\n dot: boolean;\n\n /**\n * @kind [number, number]\n * @required false\n * @default -\n * @description 设置状态点的位置偏移,格式为 [x, y]\n * @group advanced\n */\n @property({\n attribute: false,\n })\n offset: [number, number];\n\n /**\n * @required false\n * @default false\n * @description 当数值为 0 时,是否展示徽标\n */\n @property({\n type: Boolean,\n })\n showZero: boolean;\n\n /**\n * @required false\n * @default false\n * @description 是否禁用鼠标事件,通常配合按钮使用时设置\n */\n @property({\n type: Boolean,\n })\n disablePointerEvents: 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 <div\n className={classNames(styles.generalBadge, {\n [styles.noPointerEvents]: this.disablePointerEvents,\n })}\n >\n <Badge\n dataSource={this.dataSource}\n content={this.content}\n count={this.count}\n overflowCount={this.overflowCount}\n color={this.color}\n dot={this.dot}\n offset={this.offset}\n showZero={this.showZero}\n contentIcon={this.contentIcon}\n />\n </div>\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.general-badge\",\n GeneralBadgeElement\n);\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { StarOutlined } from \"@ant-design/icons\";\nimport { Rate } from \"antd\";\nimport { RateProps } from \"antd/lib/rate\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nexport interface BrickRateProps extends RateProps {\n onChange?: (value: number) => void;\n type?: string;\n rateStyle?: any;\n rateIcon?: MenuIcon;\n colors?: any[];\n}\nexport function BrickRate(props: BrickRateProps): React.ReactElement {\n const { rateStyle, ...resProps } = props;\n const rateRef = useRef();\n const [value, setValue] = useState<number>();\n const defaultIcon = <>{props.type ? props.type : <StarOutlined />}</>;\n const icon = (\n <>{props.rateIcon ? <GeneralIcon icon={props.rateIcon} /> : defaultIcon}</>\n );\n const handleChange = (value: number): void => {\n setValue(value);\n props.onChange?.(value);\n };\n useEffect(() => {\n if (props.colors && props.colors.length > 0) {\n const colors = props.colors;\n const parentNodes = rateRef.current.rate;\n if (parentNodes) {\n const childNodes = parentNodes.childNodes;\n childNodes.forEach((child: any, index: number) => {\n if (index <= props.colors.length - 1) {\n child.style.color = colors[index];\n }\n });\n }\n }\n }, [props.colors]);\n useEffect(() => {\n setValue(props.value);\n }, [props.value]);\n return (\n <Rate\n {...resProps}\n ref={rateRef}\n onChange={handleChange}\n character={icon}\n style={rateStyle}\n value={value}\n />\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 { BrickRate } from \"./BrickRate\";\n\n/**\n * @id presentational-bricks.brick-rate\n * @author astrid\n * @history\n * 1.130.0: 新增构件 `presentational-bricks.brick-rate`\n * 1.130.1: 构件功能优化\n * 1.189.2: 可通过value属性,渲染构件值\n * 1.196.0: 增加`tooltips`属性\n * @docKind brick\n * @noInheritDoc\n */\nexport class BrickRateElement extends UpdatingElement {\n /**\n * @kind number\n * @required false\n * @default 3\n * @description 等级级数\n */\n @property({ attribute: false }) count = 3;\n\n /**\n * @kind number\n * @required false\n * @default 0\n * @description 默认等级\n */\n @property({ attribute: false }) defaultValue = 0;\n\n /**\n * @kind number\n * @required false\n * @default -\n * @description 当前等级值\n */\n @property({ attribute: false }) value: number;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否禁用\n */\n @property({ attribute: false }) disabled = true;\n\n /**\n * @kind boolean\n * @required false\n *\n * @default -\n * @description 是否允许半选\n */\n @property({ attribute: false }) allowHalf: boolean;\n\n /**\n * @kind `any[]`\n * @required false\n * @default -\n * @description 等级颜色分类,每一级别对应的颜色\n */\n @property({ attribute: false }) colors: any[];\n\n /**\n * @kind \"string\"\n * @required false\n * @default -\n * @description 可选任意字符(非图标类)比如字母、数字、中文,表示等级图标\n */\n @property() type: string;\n\n /**\n * @kind Record<string,any>\n * @required false\n * @default\n * @description 设置样式\n */\n @property({ attribute: false }) rateStyle: Record<string, any>;\n\n /**\n * @kind MenuIcon\n * @required false\n * @default -\n * @description 等级icon,优先级高于type,支持[icon 图标库](developers/icon),可直接复制图标图标的配置(antd、fa 及 easyops 三种库都支持),也可只取 icon 字段的值(仅支持 antd 库)。配置{ \"lib\": \"antd\", \"icon\": \"edit\" }与 \"edit\"等价\n */\n @property({\n attribute: false,\n })\n rateIcon: any;\n\n /**\n * @kind string[]\n * @required false\n * @default -\n * @description 自定义每项的提示信息\n */\n @property({\n attribute: false,\n })\n tooltips: string[];\n\n @event({ type: \"rate.change\" }) changEvent: EventEmitter<Record<number, any>>;\n private _handleChange = (value: any): void => {\n this.changEvent.emit(value);\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 protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickRate\n count={this.count}\n type={this.type}\n onChange={this._handleChange}\n defaultValue={this.defaultValue}\n disabled={this.disabled}\n allowHalf={this.allowHalf}\n rateStyle={this.rateStyle}\n rateIcon={this.rateIcon}\n colors={this.colors}\n value={this.value}\n tooltips={this.tooltips}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"presentational-bricks.brick-rate\", BrickRateElement);\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!./GeneralImage.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 { Image } from \"antd\";\nimport { ImageProps } from \"rc-image\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { isNil } from \"lodash\";\n\nimport style from \"./GeneralImage.module.css\";\n\nexport interface GeneralImageProps extends ImageProps {\n dataSource?: Record<string, any>;\n imgStyle?: React.CSSProperties;\n extra?: {\n useBrick: UseBrickConf;\n };\n extraContainerStyle?: React.CSSProperties;\n visible?: boolean;\n onVisibleChange?(visible: boolean, prevVisible: boolean): void;\n}\n\nexport function GeneralImage(props: GeneralImageProps): React.ReactElement {\n const {\n width,\n height,\n imgStyle,\n src,\n alt,\n preview,\n visible,\n onVisibleChange,\n placeholder,\n fallback,\n extra,\n extraContainerStyle,\n dataSource,\n } = props;\n\n return (\n <div className={style.generalImage}>\n <Image\n width={width}\n height={height}\n src={src}\n alt={alt}\n style={imgStyle}\n preview={!isNil(visible) ? { visible, onVisibleChange } : preview}\n placeholder={placeholder}\n fallback={fallback}\n />\n {extra && (\n <div className={style.extraContainer} style={extraContainerStyle}>\n <BrickAsComponent useBrick={extra.useBrick} data={dataSource} />\n </div>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n UpdatingElement,\n property,\n method,\n event,\n EventEmitter,\n} from \"@next-core/brick-kit\";\nimport { GeneralImage, GeneralImageProps } from \"./GeneralImage\";\n\n/**\n * @id presentational-bricks.general-image\n * @author Lynette\n * @history\n * 1.134.0: 新增构件 `presentational-bricks.general-image`\n * @docKind brick\n * @noInheritDoc\n */\nexport class GeneralImageElement extends UpdatingElement {\n /**\n * @default -\n * @required\n * @description 图片地址\n */\n @property()\n imgSrc: string;\n\n /**\n * @default true\n * @required\n * @description 是否开启预览\n */\n @property({\n attribute: false,\n })\n preview = true;\n\n /**\n * @default -\n * @required\n * @description 图像高度\n */\n @property({\n attribute: false,\n })\n imgHeight: string | number;\n\n /**\n * @default -\n * @required\n * @description 图像样式\n */\n @property({\n attribute: false,\n })\n imgStyle: React.CSSProperties;\n\n /**\n * @default -\n * @required\n * @description 图像宽度\n */\n @property({\n attribute: false,\n })\n imgWidth: string | number;\n\n /**\n * @kind Record<string, any>\n * @default -\n * @required -\n * @description 数据源,搭配 extra 使用时会把该数据传入到自定义构件中使用\n */\n @property({\n attribute: false,\n })\n dataSource: GeneralImageProps[\"dataSource\"];\n\n /**\n * @default -\n * @required\n * @description 加载占位, 为 true 时使用默认占位\n * @group advanced\n */\n @property()\n placeholder: string;\n\n /**\n * @default -\n * @required\n * @description 图像描述\n * @group advanced\n */\n @property()\n imgAlt: string;\n\n /**\n * @default -\n * @required\n * @description 加载失败容错地址\n * @group advanced\n */\n @property()\n fallback: string;\n\n /**\n * @kind UseBrickConf\n * @default -\n * @required -\n * @description 支持在图片下方增加自定义构件\n * @group advanced\n */\n @property({\n attribute: false,\n })\n extra: GeneralImageProps[\"extra\"];\n\n /**\n * @kind Record<string, any>\n * @default -\n * @required -\n * @description 包裹自定义构件容器的样式\n * @group advanced\n */\n @property({\n attribute: false,\n })\n extraContainerStyle: React.CSSProperties;\n\n /**\n * @default -\n * @required\n * @description 是否显示预览\n * @group advanced\n */\n @property({ attribute: false }) visible: boolean;\n\n /**\n * @detail boolean\n * @description 是否显示预览改变事件\n */\n @event({ type: \"general-image.visible-change\" })\n visibleChangeEventEmitter: EventEmitter;\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 /**\n * @description 打开预览\n */\n @method() open(): void {\n this.visible = true;\n }\n\n /**\n * @description 关闭预览\n */\n @method() close(): void {\n this.visible = false;\n }\n\n private _handleVisibleChange = (visible: boolean): void => {\n this.visible = visible;\n this.visibleChangeEventEmitter.emit(visible);\n };\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <GeneralImage\n width={this.imgWidth}\n height={this.imgHeight}\n imgStyle={this.imgStyle}\n src={this.imgSrc}\n alt={this.imgAlt}\n preview={this.preview}\n placeholder={this.placeholder}\n fallback={this.fallback}\n dataSource={this.dataSource}\n extra={this.extra}\n extraContainerStyle={this.extraContainerStyle}\n visible={this.visible}\n onVisibleChange={this._handleVisibleChange}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.general-image\",\n GeneralImageElement\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 { List, Empty, Card, Tooltip } from \"antd\";\nimport { CardDetail, CardItem } from \"./index\";\nimport styles from \"./index.module.css\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { BrickAsComponent, getHistory } from \"@next-core/brick-kit\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { isEmpty } from \"lodash\";\nimport { parseTemplate } from \"@next-libs/cmdb-utils\";\n\ninterface InfoDisplayCardListProps {\n dataSource: CardItem[];\n showIcon?: boolean;\n optionConf?: { useBrick: UseBrickConf };\n titleBrickConf?: { useBrick: UseBrickConf };\n iconBrickConf?: { useBrick: UseBrickConf };\n detailOfDescBrickConf?: { useBrick: UseBrickConf };\n titleFontSize?: number | string;\n detailDescFontSize?: number | string;\n url?: string;\n urlTemplate?: string;\n target?: string;\n listStyle: React.CSSProperties;\n}\n\nexport function InfoDisplayCardList({\n dataSource,\n showIcon,\n optionConf,\n titleBrickConf,\n iconBrickConf,\n detailOfDescBrickConf,\n titleFontSize,\n detailDescFontSize,\n url,\n urlTemplate,\n target,\n listStyle,\n}: InfoDisplayCardListProps): React.ReactElement {\n const isEmptyDetailOfDescBrickConf = isEmpty(detailOfDescBrickConf?.useBrick);\n const isEmptyIconBrickConf = isEmpty(iconBrickConf?.useBrick);\n\n const getCardItemDetail = (\n item: CardDetail,\n index: number\n ): React.ReactNode => (\n <div className={styles.infoCardDetailWrapper} key={index}>\n <h5>{item.title}</h5>\n {(isEmptyDetailOfDescBrickConf || !item.useBrick) && item.desc && (\n <Tooltip title={item.desc}>\n <p\n style={{\n fontSize: detailDescFontSize ?? \"18px\",\n }}\n >\n {item.desc}\n </p>\n </Tooltip>\n )}\n {!isEmptyDetailOfDescBrickConf &&\n !!item.useBrick &&\n isEmpty(item.detailBrickConf?.useBrick) && (\n <BrickAsComponent\n useBrick={detailOfDescBrickConf.useBrick}\n data={item}\n ></BrickAsComponent>\n )}\n {!isEmpty(item.detailBrickConf?.useBrick) && (\n <BrickAsComponent\n useBrick={item.detailBrickConf?.useBrick}\n data={item}\n ></BrickAsComponent>\n )}\n </div>\n );\n const handleCardClick = (item: CardItem) => {\n const resultUrl = url || (urlTemplate && parseTemplate(urlTemplate, item));\n if (resultUrl) {\n const history = getHistory();\n if (target && target !== \"_self\") {\n window.open(resultUrl, target);\n } else {\n history.push(resultUrl);\n }\n }\n };\n\n const getCardItem = (item: CardItem): React.ReactNode => (\n <Card\n className={styles.infoCard}\n hoverable={true}\n onClick={(e) => handleCardClick(item)}\n >\n <div className={styles.infoCardWrapper}>\n <div className={styles.infoCardMain}>\n {isEmptyIconBrickConf && showIcon && (\n <div className={styles.cardIcon}>\n <GeneralIcon\n icon={\n item.icon || {\n lib: \"antd\",\n icon: \"question\",\n theme: \"outlined\",\n }\n }\n bg={true}\n shape=\"square\"\n size={40}\n />\n </div>\n )}\n {!isEmptyIconBrickConf && (\n <BrickAsComponent\n useBrick={iconBrickConf.useBrick}\n data={item}\n ></BrickAsComponent>\n )}\n <div className={styles.infoCardDetail}>\n <div className={styles.infoCardDetailDiv}>\n <h5\n style={{\n fontSize: titleFontSize ?? \"16px\",\n }}\n >\n {item.title}\n </h5>\n {!isEmpty(titleBrickConf?.useBrick) && (\n <BrickAsComponent\n useBrick={titleBrickConf.useBrick}\n data={item}\n ></BrickAsComponent>\n )}\n </div>\n <p>{item.desc}</p>\n </div>\n </div>\n <div className={styles.infoCardRightSection}>\n <div\n style={\n item.detail?.length >= 4\n ? {\n gridTemplateColumns: `repeat(${item.detail.length}, minmax(0, 1fr))`,\n }\n : { display: \"flex\", justifyContent: \"flex-end\" }\n }\n >\n {item.detail?.map(getCardItemDetail)}\n </div>\n {!isEmpty(optionConf?.useBrick) && (\n <div\n onClick={(e) => {\n e.stopPropagation();\n }}\n style={{ padding: \"15px 5px\" }}\n >\n <BrickAsComponent\n useBrick={optionConf.useBrick}\n data={item}\n ></BrickAsComponent>\n </div>\n )}\n {!isEmpty(item.operateItemBrick?.useBrick) && (\n <div style={{ padding: \"15px 5px\" }}>\n <BrickAsComponent\n useBrick={item.operateItemBrick?.useBrick}\n data={item}\n ></BrickAsComponent>\n </div>\n )}\n </div>\n </div>\n </Card>\n );\n\n return dataSource?.length > 0 ? (\n <List\n itemLayout=\"horizontal\"\n dataSource={dataSource}\n renderItem={(item) => getCardItem(item)}\n style={{ maxWidth: \"1300px\", ...listStyle }}\n />\n ) : (\n <Empty />\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { InfoDisplayCardList } from \"./InfoDisplayCardList\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\n\nexport interface CardDetail {\n title: string;\n desc: string;\n useBrick?: boolean;\n detailBrickConf?: { useBrick: UseBrickConf };\n}\n\nexport interface CardItem {\n title: string;\n desc: string;\n icon?: MenuIcon;\n detail?: CardDetail[];\n operateItemBrick?: { useBrick: UseBrickConf };\n}\n\n/**\n * @id presentational-bricks.info-display-card-list\n * @author dophijing\n * @history\n * 1.x.0: 新增构件 `presentational-bricks.info-display-card-list`\n * @docKind brick\n * @noInheritDoc\n */\nexport class InfoDisplayCardListElement extends UpdatingElement {\n /**\n * @kind CardItem[]\n * @required true\n * @default -\n * @description 列表数据\n */\n @property({\n attribute: false,\n })\n dataSource: CardItem[];\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 卡片跳转 url,支持模版变量\n */\n @property()\n urlTemplate: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 卡片跳转 url, url 优先于 urlTemplate 执行\n */\n @property()\n url: string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 卡片跳转 target,例如可以设置成 _blank\n */\n @property()\n target: string;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示列表的左侧icon\n */\n @property({\n attribute: false,\n })\n showIcon = true;\n\n /**\n * @kind { useBrick: UseBrickConf }\n * @required false\n * @default -\n * @description 设置操作列,不设置就不显示\n */\n @property({\n attribute: false,\n })\n optionConf: { useBrick: UseBrickConf };\n\n /**\n * @kind { useBrick: UseBrickConf }\n * @required false\n * @default -\n * @description 设置titleBrick,不设置就不显示\n */\n @property({\n attribute: false,\n })\n titleBrickConf: { useBrick: UseBrickConf };\n\n /**\n * @kind { useBrick: UseBrickConf }\n * @required false\n * @default -\n * @description 设置iconBrick,不设置就不显示\n */\n @property({\n attribute: false,\n })\n iconBrickConf: { useBrick: UseBrickConf };\n\n /**\n * @kind { useBrick: UseBrickConf }\n * @required false\n * @default -\n * @description 设置detailOfDescBrickConf,不设置显示为纯文本\n */\n @property({\n attribute: false,\n })\n detailOfDescBrickConf: { useBrick: UseBrickConf };\n\n /**\n * @kind { useBrick: UseBrickConf }\n * @required false\n * @default 16px\n * @description 设置卡片 title 的字体大小,默认为 16px\n */\n @property({\n attribute: false,\n })\n titleFontSize: number | string;\n\n /**\n * @kind { useBrick: UseBrickConf }\n * @required false\n * @default 18px\n * @description 设置卡片右侧描述部分 desc 的字体大小,默认为18px\n */\n @property({\n attribute: false,\n })\n detailDescFontSize: number | string;\n\n /**\n * @kind React.CSSProperties\n * @required false\n * @default false\n * @description list样式\n */\n @property({\n attribute: false,\n })\n listStyle: 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 <InfoDisplayCardList\n dataSource={this.dataSource}\n showIcon={this.showIcon}\n optionConf={this.optionConf}\n titleBrickConf={this.titleBrickConf}\n iconBrickConf={this.iconBrickConf}\n detailOfDescBrickConf={this.detailOfDescBrickConf}\n titleFontSize={this.titleFontSize}\n detailDescFontSize={this.detailDescFontSize}\n url={this.url}\n urlTemplate={this.urlTemplate}\n target={this.target}\n listStyle={this.listStyle}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.info-display-card-list\",\n InfoDisplayCardListElement\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, { 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, { CSSProperties } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, property, UpdatingElement } from \"@next-core/brick-kit\";\nimport { BrickIllustration } from \"./BrickIllustration\";\nimport { IconSize } from \"../brick-result/components/IllustrationWrapper\";\n\nexport interface IllustrationHeader {\n title?: string;\n description?: string;\n}\n\nexport interface IllustrationFooter {\n text?: string;\n label?: string;\n target?: string;\n url?: string;\n}\n\nexport type IllustrationMode = \"feedback\" | \"guide\";\n\n/**\n * @id presentational-bricks.brick-illustration\n * @author alexchen\n * @history\n * 1.148.0: 新增构件 `presentational-bricks.brick-illustration`\n * @memo\n * >更多类型插画请移至[插画库](/next/developers/illustrations)\n * @docKind brick\n * @noInheritDoc\n */\nexport class BrickIllustrationElement extends UpdatingElement {\n /**\n * @required true\n * @description 插画名称\n */\n @property()\n name: string;\n\n /**\n * @required false\n * @description 插画size,size默认为middle,推荐使用size控制插画尺寸,可通过imageStyle覆盖size实现自定义大小(不推荐)\n * @default \"middle\"\n */\n @property({ attribute: false })\n size: IconSize = IconSize.Middle;\n\n /**\n * @default \"default\"\n * @required true\n * @description 插画类型\n * @group basic\n */\n @property()\n category: string;\n\n /**\n * @required false\n * @description 插画头部内容\n * @group other\n */\n @property({ attribute: false })\n header: IllustrationHeader;\n\n /**\n * @required false\n * @description 插画底部内容\n * @group other\n */\n @property({ attribute: false })\n footer: IllustrationFooter;\n\n /**\n * @required false\n * @description 插画模式\n * @group other\n * @deprecated\n */\n @property()\n mode: IllustrationMode;\n\n /**\n * @required false\n * @description 图片样式\n * @group ui\n */\n @property({ attribute: false })\n imageStyle: CSSProperties;\n\n /**\n * @default true\n * @required false\n * @description 在插画库的default分类下,使用新版本的图标替换default分类下图标\n */\n @property({ attribute: false })\n useNewIllustration = 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 protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BrickIllustration\n mode={this.mode}\n name={this.name}\n category={this.category}\n imageStyle={this.imageStyle}\n header={this.header}\n footer={this.footer}\n useNewIllustration={this.useNewIllustration}\n size={this.size}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-illustration\",\n BrickIllustrationElement\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!./DynamicGridContainer.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 { UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport styles from \"./DynamicGridContainer.module.css\";\nexport interface DynamicGridContainerProps {\n useBrick?: UseBrickConf;\n containerStyle?: React.CSSProperties;\n data?: any[];\n onRendered?: (value: any) => void;\n}\nexport function DynamicGridContainer(\n props: DynamicGridContainerProps\n): React.ReactElement {\n const useBricks = Array.isArray(props.useBrick)\n ? props.useBrick\n : props.useBrick\n ? [props.useBrick]\n : [];\n const propsData = Array.isArray(props.data)\n ? props.data\n : props.data\n ? [props.data]\n : [];\n const renderBrick = (): React.ReactNode => {\n return useBricks.map((item, index) => {\n return (\n <BrickAsComponent\n key={propsData[index]?.index || index}\n data={propsData[index]}\n useBrick={item}\n />\n );\n });\n };\n useEffect(() => {\n if (props.onRendered && props.useBrick) {\n props.onRendered(props.data);\n }\n }, [props.useBrick]);\n\n return (\n <div\n className={styles.dynamicGridContainer}\n style={{ ...props.containerStyle }}\n >\n {props.useBrick ? renderBrick() : \"\"}\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n event,\n EventEmitter,\n property,\n UpdatingElement,\n} from \"@next-core/brick-kit\";\nimport { DynamicGridContainer } from \"./DynamicGridContainer\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\n\n/**\n * @id presentational-bricks.dynamic-grid-container\n * @author astrid\n * @history\n * 1.149.0: 新增构件 `presentational-bricks.dynamic-grid-container`\n * @docKind brick\n * @noInheritDoc\n */\nexport class DynamicGridContainerElement extends UpdatingElement {\n /**\n * @kind [UseBrickConf](http://docs.developers.easyops.cn/docs/api-reference/brick-types.usebrickconf)\n * @required false\n * @default -\n * @description 使用的子构件配置\n */\n @property({ attribute: false })\n useBrick: UseBrickConf;\n\n /**\n * @kind any[]\n * @required false\n * @default -\n * @description 传递给子构件的数据,应与 `useBrick` 一一对应,data数据中建议传入index作为唯一标识(eg: [{index: chart-01},{index:chart-02}])\n */\n @property({ attribute: false })\n data: any[];\n\n /**\n * @required false\n * @default -\n * @description 容器的样式\n */\n @property({ attribute: false })\n containerStyle: React.CSSProperties;\n\n /**\n * @detail `data`为输出的数据,\n * @description 当`useBrick`渲染完后触发\n */\n @event({ type: \"dynamic-grid-container.rendered\" }) changEvent: EventEmitter;\n private _handleChange = (value: any): void => {\n this.changEvent.emit(value);\n };\n connectedCallback(): void {\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\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 <DynamicGridContainer\n useBrick={this.useBrick}\n data={this.data}\n containerStyle={this.containerStyle}\n onRendered={this._handleChange}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.dynamic-grid-container\",\n DynamicGridContainerElement\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!./GeneralSlider.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 { Slider } from \"antd\";\nimport { SliderMarks } from \"antd/lib/slider\";\nimport style from \"./GeneralSlider.module.css\";\nimport classNames from \"classnames\";\n\nexport interface GeneralSliderProps {\n value: any;\n disabled?: boolean;\n dots?: boolean;\n max?: number;\n min?: number;\n range?: boolean;\n marks?: SliderMarks;\n step?: number | null;\n included?: boolean;\n onChange?: (value: any) => void;\n onAfterChange?: (value: any) => void;\n onlyShowMode?: boolean;\n size?: string;\n}\n\nexport function GeneralSlider(props: GeneralSliderProps): React.ReactElement {\n const {\n value,\n disabled,\n dots,\n max,\n min,\n range,\n marks,\n step,\n included,\n onlyShowMode,\n size,\n onChange,\n onAfterChange,\n } = props;\n\n return (\n <Slider\n className={classNames({\n [style.onlyShowMode]: onlyShowMode,\n [style.bigMode]: size === \"large\",\n })}\n value={value}\n disabled={disabled || onlyShowMode}\n dots={dots}\n max={max}\n min={min}\n range={range}\n marks={marks}\n step={step}\n included={included}\n onChange={onChange}\n onAfterChange={onAfterChange}\n />\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 { GeneralSlider, GeneralSliderProps } from \"./GeneralSlider\";\n\n/**\n * @id presentational-bricks.general-slider\n * @name presentational-bricks.general-slider\n * @docKind brick\n * @description 滑动型输入器,展示当前值和可选范围\n * @author jo\n * @slots\n * @history\n * 1.x.0:新增构件 `presentational-bricks.general-slider`\n * @memo\n * @noInheritDoc\n */\nexport class GeneralSliderElement extends UpdatingElement {\n /**\n * @kind boolean\n * @required -️\n * @default false\n * @description 只用展示不能改变任何值的模式,该属性与 `disabled` 不同的地方在于呈现的样式不一样\n */\n @property({\n type: Boolean,\n })\n onlyShowMode: boolean;\n\n /**\n * @kind string\n * @required -️\n * @default -\n * @description 为空则默认,也可为 large 模式,仅在 onlyShowMode 模式下有效\n */\n @property({\n attribute: false,\n })\n size: string;\n\n /**\n * @kind `number | [number, number]`\n * @required -️\n * @default false\n * @description 指定滑动条的值, 需要注意的是当 `range = false` 时值的类型为 `string` 格式, 当 `range = true` 时,值的类型为 `[number,number]` 的格式\n */\n @property({\n attribute: false,\n })\n value: GeneralSliderProps[\"value\"];\n\n /**\n * @kind boolean\n * @required -️\n * @default false\n * @description 是否禁止滑动\n */\n @property({\n type: Boolean,\n })\n disabled: boolean;\n\n /**\n * @kind boolean\n * @required -️\n * @default false\n * @description 是否只能拖拽到刻度上\n */\n @property({\n type: Boolean,\n })\n dots: boolean;\n\n /**\n * @kind number\n * @required -️\n * @default 0\n * @description 滑动条的最小值\n */\n @property({\n attribute: false,\n })\n min = 0;\n\n /**\n * @kind number\n * @required -️\n * @default 100\n * @description 滑动条的最大值\n */\n @property({\n attribute: false,\n })\n max = 100;\n\n /**\n * @kind `{number: string} | number: {style: CSSProperties, label: string}`\n * @required -️\n * @default -\n * @description 刻度标记,key 的类型必须为 number 且取值在闭区间 [min, max] 内,每个标签可以单独设置样式\n */\n @property({\n attribute: false,\n })\n marks: GeneralSliderProps[\"marks\"];\n\n /**\n * @kind boolean\n * @required -️\n * @default false\n * @description 是否显示双滑块模式,双滑块模式时,value 的格式为 `[number, number]` 分别代表所选择的起始值和终点值\n */\n @property({\n type: Boolean,\n })\n range: boolean;\n\n /**\n * @kind `number | null`\n * @required -️\n * @default 1\n * @description 步长,当 marks 不为空对象时有效,取值必须大于 0,并且可被 (max - min) 整除。当 marks 不为空对象时,可以设置 step 为 null,此时滑动条的可选值仅有 marks 标出来的部分\n */\n @property({\n attribute: false,\n })\n step: GeneralSliderProps[\"step\"];\n\n /**\n * @kind boolean\n * @required -️\n * @default true\n * @description marks 不为空对象时有效,值为 true 时表示值为包含关系,false 表示并列\n */\n @property({\n attribute: false,\n })\n included = 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 `number | [number, number]`\n * @description 当滑动条被拖动的时候触发,`range = false` detail 传出值 为 `string`, `range = true` detail 传出值为 `[number, number]` 连续拖动时会触发不同值\n */\n @event({ type: \"slider.change\" }) changeEvent: EventEmitter<\n number | [number, number]\n >;\n /**\n * @detail `number | [number, number]`\n * @description 滑动条被拖动并且鼠标松开后才被触发, 其余跟 onChange 事件相同\n */\n @event({ type: \"slider.after.change\" }) afterChangeEvent: EventEmitter<\n number | [number, number]\n >;\n private _handleChange = (value: any) => {\n this.changeEvent.emit(value);\n };\n\n private _handleAfterChange = (value: any) => {\n this.afterChangeEvent.emit(value);\n };\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <GeneralSlider\n value={this.value}\n disabled={this.disabled}\n dots={this.dots}\n max={this.max}\n min={this.min}\n marks={this.marks}\n step={this.step}\n included={this.included}\n range={this.range}\n onChange={this._handleChange}\n onAfterChange={this._handleAfterChange}\n onlyShowMode={this.onlyShowMode}\n size={this.size}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.general-slider\",\n GeneralSliderElement\n);\n","import { getRuntime } from \"@next-core/brick-kit\";\nimport { flatten, omit } from \"lodash\";\n\n/**\n * 展平配置\n */\nexport interface FlattenConfig {\n /**\n * 对应层级子列表的 key\n */\n childrenKey: string;\n /**\n * 展平后,父级在子级的 key\n */\n parentInChildKey: string;\n}\n\nexport interface FlattenTreeDataListAndCalcRowSpanOptions {\n /**\n * 展平配置列表,按照由父到子的顺序一一对应\n */\n flattenConfigs: FlattenConfig[];\n /**\n * 展平后,是否省略父级里的子列表\n */\n omitChildrenInParent?: boolean;\n}\n\n/**\n * 将树形数据列表按照 `options.flattenConfigs` 进行展平,并生成相应的行合并数据\n * @param treeDataList 树形数据列表\n * @param options 函数选项\n * @param depth 当前展平的深度,用于确定 `options.flattenConfigs` 中的当前层级的展平配置\n * @returns 展平后的列表,除了按照 `options.flattenConfigs` 进行展平外,还会生成相应层级以 `options.flattenConfigs[].parentInChildKey + \"RowSpan\"` 为 key 的行合并数据\n */\nexport function flattenTreeDataListAndCalcRowSpan(\n treeDataList: Record<string, unknown>[],\n options: FlattenTreeDataListAndCalcRowSpanOptions,\n depth = 0\n): Record<string, unknown>[] {\n const { flattenConfigs, omitChildrenInParent } = options;\n const flattenConfig = flattenConfigs[depth];\n const { childrenKey, parentInChildKey } = flattenConfig;\n\n return flatten(\n treeDataList.map((treeData) => {\n let children = treeData[childrenKey] as Record<string, unknown>[];\n const parent = omitChildrenInParent\n ? omit(treeData, [childrenKey])\n : treeData;\n\n if (depth < flattenConfigs.length - 2) {\n children = flattenTreeDataListAndCalcRowSpan(\n children,\n options,\n depth + 1\n );\n }\n\n return children.map((child, index) => ({\n ...child,\n [parentInChildKey]: parent,\n [`${parentInChildKey}RowSpan`]: index === 0 ? children.length : 0,\n }));\n })\n );\n}\n\ngetRuntime().registerCustomProcessor(\n \"presentationalBricks.flattenTreeDataListAndCalcRowSpan\",\n flattenTreeDataListAndCalcRowSpan\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!./RankTable.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 { Card, Table } from \"antd\";\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { isNil, toPath } from \"lodash\";\nimport styles from \"./RankTable.module.css\";\nimport { CustomColumn } from \"../brick-table\";\nimport { TableProps } from \"antd/lib/table\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { getCustomComp, getCustomHeader } from \"./RankTableHelper\";\nimport classNames from \"classnames\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { UseBrick } from \"./index\";\n\nconst getRankNumber = (rank: number) => [\"st\", \"nd\", \"rd\"][rank] || rank;\ninterface RankTableProps {\n header?: {\n title: string | UseBrick;\n extra?: string | UseBrick;\n };\n dataSource: Record<string, any>[];\n columns: CustomColumn[];\n configProps?: TableProps<any>;\n showCard?: boolean;\n rowKey?: string;\n scroll?: TableProps<unknown>[\"scroll\"];\n size?: \"default\" | \"small\";\n onChange: any;\n showHeader?: boolean;\n}\n\ntype ItemBrickDataMap = Map<unknown, BrickData>;\ntype BrickData = {\n cellData: unknown;\n rowData: Record<string, unknown>;\n columnIndex: number;\n};\n\nexport function RankTable(props: RankTableProps): React.ReactElement {\n const { dataSource, columns, configProps, rowKey, scroll, showHeader } =\n props;\n const columnTitleBrickDataMapRef = useRef<\n Map<CustomColumn, { title: unknown }>\n >(new Map());\n const useBrickItemBrickDataMapRef = useRef<\n Map<UseBrickConf, ItemBrickDataMap>\n >(new Map());\n\n const initData = useMemo(() => {\n return (\n props.dataSource &&\n (rowKey\n ? props.dataSource\n : props.dataSource.map((item, index) =>\n isNil(item.key) ? { ...item, key: index } : item\n ))\n );\n }, [props.dataSource, rowKey]);\n const [data, setData] = useState(initData);\n\n useEffect(() => {\n setData(initData);\n }, [initData]);\n\n const renderAwards = (trend?: number) => (\n <>\n <span\n className={classNames(styles.awards, {\n [styles.medalGold]: trend === 0,\n [styles.medalSilver]: trend === 1,\n [styles.medalBronze]: trend === 2,\n [styles.normalAwards]: trend !== 0 && trend !== 1 && trend !== 2,\n [styles.small]: props?.size === \"small\",\n [styles.topThree]: [0, 1, 2].includes(trend),\n })}\n >\n {trend + 1}\n {[0, 1, 2].includes(trend) && <span>{getRankNumber(trend)}</span>}\n </span>\n \n </>\n );\n\n const customColumns = useMemo(() => {\n if (columns) {\n columnTitleBrickDataMapRef.current.clear();\n useBrickItemBrickDataMapRef.current.clear();\n const customColumns = columns.map((column, index) => {\n const {\n useBrick,\n component,\n valueSuffix,\n cellStatus,\n titleUseBrick,\n headerBrick,\n colSpanKey,\n rowSpanKey,\n ...columnConf\n } = column;\n\n const Awards = index === 0 ? renderAwards : null;\n if (headerBrick?.useBrick || titleUseBrick) {\n if (titleUseBrick) {\n // eslint-disable-next-line no-console\n console.warn(\n \"`titleUseBrick` of `<presentational-bricks.rank-table>` is deprecated, use `headerBrick` instead.\"\n );\n }\n\n const useBrick = headerBrick?.useBrick || titleUseBrick;\n let data = columnTitleBrickDataMapRef.current.get(column);\n\n if (!data) {\n data = {\n title: columnConf.title,\n };\n columnTitleBrickDataMapRef.current.set(column, data);\n }\n\n columnConf.title = getCustomHeader(useBrick, data);\n }\n\n if (useBrick || component) {\n let itemBrickDataMap: ItemBrickDataMap;\n\n if (useBrick) {\n itemBrickDataMap =\n useBrickItemBrickDataMapRef.current.get(useBrick);\n\n if (!itemBrickDataMap) {\n itemBrickDataMap = new Map();\n useBrickItemBrickDataMapRef.current.set(\n useBrick,\n itemBrickDataMap\n );\n }\n }\n\n columnConf.render = getCustomComp(\n useBrick,\n component,\n itemBrickDataMap,\n Awards,\n props.size\n );\n } else if (valueSuffix) {\n // eslint-disable-next-line react/display-name\n columnConf.render = (value, record, index) => (\n <>\n {Awards?.(index)}\n {value + valueSuffix}\n </>\n );\n }\n\n if (typeof columnConf.dataIndex === \"string\") {\n columnConf.dataIndex = toPath(columnConf.dataIndex);\n }\n if (columnConf.verticalAlign === \"top\") {\n columnConf.className\n ? (columnConf.className += \" alignTop\")\n : (columnConf.className = \"alignTop\");\n }\n if (columnConf.verticalAlign === \"bottom\") {\n columnConf.className\n ? (columnConf.className += \" alignBottom\")\n : (columnConf.className = \"alignBottom\");\n }\n\n if (!columnConf.render) {\n // eslint-disable-next-line react/display-name\n columnConf.render = (text: string, record, trend) => (\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n {Awards?.(trend)}\n <span style={{ flex: 1 }}>{text}</span>\n </div>\n );\n }\n\n return columnConf;\n });\n\n return customColumns;\n }\n }, [columns, rowKey]);\n\n const TrendBar = (\n <div className={styles.trendBar}>\n <span className={styles.yellowBar} />\n <span className={styles.blueBar} />\n <span className={styles.redBar} />\n </div>\n );\n\n const header = useMemo(() => {\n const { header } = props;\n if (!header || !header?.title) return null;\n\n return (\n <div\n className={styles.header}\n style={props.size === \"small\" ? { padding: \"0px 0 10px 10px\" } : {}}\n >\n <span className={styles.leftCell}>\n {TrendBar}\n {(header.title as UseBrick)?.useBrick ? (\n <BrickAsComponent\n useBrick={(header.title as UseBrick).useBrick}\n data={dataSource}\n />\n ) : (\n (header.title as string)\n )}\n </span>\n <span className={styles.rightCell}>\n {(header?.extra as UseBrick)?.useBrick ? (\n <BrickAsComponent useBrick={(header.extra as UseBrick).useBrick} />\n ) : (\n (header.extra as string)\n )}\n </span>\n </div>\n );\n }, [props.header]);\n\n const table = () => {\n return (\n <Table\n showHeader={showHeader}\n className={classNames(styles.brickTable)}\n dataSource={data}\n columns={customColumns}\n rowKey={rowKey}\n rowClassName={(record, index) =>\n index % 2 ? styles.brickTableOddRow : \"\"\n }\n scroll={scroll}\n {...configProps}\n pagination={false}\n onChange={props.onChange}\n />\n );\n };\n\n return (\n <div>\n {!props.showCard ? (\n <>\n {header}\n {table()}\n </>\n ) : (\n <Card bordered={false}>\n {header}\n {table()}\n </Card>\n )}\n </div>\n );\n}\n","import { UseBrickConf } from \"@next-core/brick-types\";\nimport React from \"react\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { CustomColumnComponent } from \"../brick-table\";\n\nexport const getCustomHeader = (\n useBrick: UseBrickConf,\n data?: { title: unknown }\n): (() => React.ReactElement) => {\n return function CustomHeader() {\n return <BrickAsComponent useBrick={useBrick} data={data} />;\n };\n};\n\nexport const getCustomComp = (\n useBrick: UseBrickConf,\n component?: CustomColumnComponent,\n itemBrickDataMap?: ItemBrickDataMap,\n awardsComponent?: (index: number) => void | null,\n size?: \"default\" | \"small\"\n) => {\n return function CustomComp(\n value: any,\n item: Record<string, any>,\n index: number\n ) {\n if (useBrick) {\n let brickData: BrickData = itemBrickDataMap.get(item);\n\n if (!brickData) {\n brickData = {\n cellData: value,\n rowData: item,\n columnIndex: index,\n };\n itemBrickDataMap.set(item, brickData);\n }\n\n if (typeof awardsComponent === \"function\") {\n return (\n <div style={{ display: \"flex\" }}>\n {awardsComponent(index)}\n <div style={{ margin: \"auto 0\" }}>\n <BrickAsComponent useBrick={useBrick} data={brickData} />\n </div>\n </div>\n );\n }\n return <BrickAsComponent useBrick={useBrick} data={brickData} />;\n }\n\n if (component.fields) {\n // eslint-disable-next-line no-console\n console.warn(\n \"`<presentational-bricks.brick-table>.columns[].component` is deprecated, use `useBrick` instead.\"\n );\n const props: Record<string, any> = Object.assign(\n {},\n component.properties\n );\n const {\n value: valueKey,\n item: itemKey,\n index: indexKey,\n } = component.fields;\n if (valueKey) {\n props[valueKey] = value;\n }\n\n if (itemKey) {\n props[itemKey] = item;\n }\n\n if (indexKey) {\n props[indexKey] = index;\n }\n\n if (typeof awardsComponent === \"function\") {\n return (\n <>\n {awardsComponent(index)}\n <BrickAsComponent\n key={value}\n useBrick={{\n ...component,\n properties: props,\n }}\n />\n </>\n );\n }\n\n return (\n <BrickAsComponent\n key={value}\n useBrick={{\n ...component,\n properties: props,\n }}\n />\n );\n }\n };\n};\n\ntype ItemBrickDataMap = Map<unknown, BrickData>;\ntype BrickData = {\n cellData: unknown;\n rowData: Record<string, unknown>;\n columnIndex: number;\n};\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n event,\n EventEmitter,\n property,\n UpdatingElement,\n} from \"@next-core/brick-kit\";\nimport { RankTable } from \"./RankTable\";\nimport { ColumnProps, TablePaginationConfig, TableProps } from \"antd/lib/table\";\nimport { cloneDeep, get, isNil, map } from \"lodash\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { SorterResult, SortOrder } from \"antd/lib/table/interface\";\n\nexport interface CustomColumn extends ColumnProps<Record<string, any>> {\n /**\n * 支持为某列自定义展示构件\n */\n useBrick?: UseBrickConf;\n /**\n * 字段的值展示时的后缀\n */\n valueSuffix?: string;\n /**\n * 支持为某列的表头自定义展示构件,可通过 DATA.title 获取标题文本\n */\n headerBrick?: {\n useBrick: UseBrickConf;\n };\n\n /**\n * 单元格内元素的垂直对齐方式\n */\n verticalAlign?: \"top\" | \"bottom\";\n}\n\nexport type UseBrick = {\n useBrick?: UseBrickConf;\n};\n\nexport interface Header {\n /**\n * 表格头部左边内容显示区域\n */\n title:\n | string\n | {\n useBrick?: UseBrickConf;\n };\n /**\n * 表格头部右边内容显示区域\n */\n extra?:\n | string\n | {\n useBrick?: UseBrickConf;\n };\n}\n/**\n * @id presentational-bricks.rank-table\n * @author alexchen\n * @history\n * 1.x.0: 新增构件 `presentational-bricks.rank-table`\n * @docKind brick\n * @noInheritDoc\n * @memo\n * ## dataSource 表格数据源\n * | property | type | required | default | description |\n * | ------------- | -------------- | -------- | ------- | -------------------------------------------------- |\n * | dataSource | any | - | - | 数据源,通过 useResolves 从后台接口获取或者直接在 storyboard 中配置 |\n *\n * ## columns 表格列配置\n * | property | type | required | default | description |\n * | ------------- | -------------- | -------- | ------- | -------------------------------------------------- |\n * | columns | CustomColumn[] | - | - | 扩展自 ant-design 的 Column 相关配置项,具体查阅:[https://ant.design/components/table-cn/#Column](https://ant.design/components/table-cn/#Column) |\n *\n * ### CustomColumn\n * | property | type | required | default | description |\n * | -------------------- | --------------------- | -------- | ------- | -------------------------------------------------------------- |\n * | valueSuffix | string | - | - | 字段的值展示时的后缀 |\n * | useBrick | UseBrickConf | - | - | 支持为某列自定义展示构件 |\n * | titleUseBrick | UseBrickConf | - | - | 支持为某列的标题自定义展示构件,可通过 DATA.title 获取标题文本 |\n * | verticalAlign | `top` | `bottom` | - | - | 单元格内元素的垂直对齐方式 |\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 */\nexport class RankTableElement extends UpdatingElement {\n private _dataSource: Record<string, any>[];\n private _columns: CustomColumn[];\n\n /**\n * @kind Header\n * @required false\n * @default -\n * @description 表格表头,如不填将不会显示表头\n */\n @property({\n attribute: false,\n })\n header: Header;\n /**\n * @kind CustomColumn[]\n * @required false\n * @default -\n * @description 扩展自 ant-design 的 Column 相关配置项,具体查阅:<a href=\"https://ant.design/components/table-cn/#Column\" target=\"_blank\">https://ant.design/components/table-cn/#Column</a>\n */\n @property({\n __unstable_doNotDecorate: true,\n })\n set columns(value: CustomColumn[]) {\n this._columns = value;\n this._render();\n }\n get columns(): CustomColumn[] {\n return this._columns;\n }\n\n private _fields: {\n dataSource?: string; // 指定 dataSource 从哪里来,默认为列表接口返回格式是{list:[],page:1,pageSize:10,total:20},即默认取自 list\n } = {\n dataSource: \"list\",\n };\n\n /**\n * @kind any\n * @required false\n * @default -\n * @description 数据源,通过 useResolves 从后台接口获取或者直接在 storyboard 中配置\n */\n @property({\n __unstable_doNotDecorate: true,\n })\n set dataSource(value: Record<string, any>[]) {\n this._dataSource = cloneDeep(\n this._fields.dataSource ? get(value, this._fields.dataSource) : value\n );\n this._render();\n }\n\n /**\n * @kind object\n * @required false\n * @default -\n * @description ant-design 的 Table 相关配置项,具体查阅:[https://ant.design/components/table-cn/#Table](https://ant.design/components/table-cn/#Table),其中分页配置和行选择配值在构件中设置了常用的默认配置,也可自行覆盖,具体描述见下表\n * @group advanced\n */\n @property({\n attribute: false,\n })\n configProps: any;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 指定每一行的 key,不指定则默认为索引 index。强烈建议设置该属性,否则在某些情况下可能行为不如预期。\n */\n @property()\n rowKey: string;\n\n /**\n * @kind {\n * x?: string | number | true;\n * y?: number | string;\n * } & {\n * scrollToFirstRowOnChange?: boolean;\n * }\n * @required false\n * @default { x: true }\n * @description 表格是否可滚动,也可以指定滚动区域的宽、高,配置项。详见 https://ant.design/components/table-cn/#scroll\n * @group advanced\n */\n @property({\n attribute: false,\n })\n scrollConfigs: TableProps<unknown>[\"scroll\"] = { x: true };\n\n /**\n * @kind Header\n * @required false\n * @default -\n * @description 表格头部左边内容显示区域,如果设置了`header`,会覆盖设置其`title`参数\n */\n @property({\n attribute: false,\n __unstable_doNotDecorate: true,\n })\n set headerTitle(\n title:\n | string\n | {\n useBrick?: UseBrickConf;\n }\n ) {\n this.header = { ...this.header, title: title };\n }\n\n /**\n * @kind (string|number)[]\n * @required false\n * @default -\n * @description 隐藏相应列(输入对应的 dataIndex 或者 key 即可)\n */\n @property({\n attribute: false,\n })\n hiddenColumns: Array<string | number>;\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 /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否显示外层卡片\n */\n @property({\n attribute: false,\n })\n showCard = true;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否展示表头\n */\n @property({\n attribute: false,\n })\n showHeader = true;\n\n /**\n * @kind \"default\"|\"small\"\n * @required false\n * @default default\n * @enums \"default\"|\"small\"\n * @description 根据容器的不同调整样式\n */\n @property({ attribute: false })\n size: \"default\" | \"small\" = \"default\";\n\n /**\n * @detail {sort:string;order:string|number}\n * @description 排序变化,detail 中的 sort 为对应排序列的 key/dataIndex,order 为升序/降序\n */\n @event({ type: \"sort.update\", cancelable: true }) sortUpdate: EventEmitter<{\n sort: string;\n order: string | number;\n }>;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否支持排序。默认开启,当对应列的sorter设置成true时则可排序。sortable为false时则排序都不生效。\n */\n @property({\n attribute: false,\n })\n sortable = true;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 被排序列的 dataIndex。通常来自于 url 参数,可以设置成 ${QUERY.sort}。\n */\n @property()\n sort: string;\n\n /**\n * @kind descend' | 'ascend' | null\n * @required false\n * @default -\n * @description 升序/降序,可以设置成 ${QUERY.order}。\n */\n @property({\n attribute: false,\n })\n order: SortOrder;\n\n private _handleOnChange = (\n pagination: TablePaginationConfig,\n filters: Record<string, string[]>,\n sorter: SorterResult<Record<string, any>>\n ): void => {\n // 排序\n if (sorter.columnKey !== this.sort || sorter.order !== this.order) {\n if (sorter.columnKey && sorter.order) {\n this.sort = sorter.columnKey as string;\n this.order = sorter.order;\n } else {\n this.sort = null;\n this.order = null;\n }\n this.sortUpdate.emit({\n sort: this.sort,\n order: this.order,\n });\n }\n };\n\n // istanbul ignore next\n private _initConfigProps = () => {\n // 初始化列排序\n if (this._columns) {\n this._columns = this._columns.map((item) => {\n if (isNil(item.key)) {\n item.key = item.dataIndex as string;\n }\n return item;\n });\n }\n };\n\n getModifyColumns(): CustomColumn[] {\n let columns = this._columns;\n if (this._columns && this.hiddenColumns) {\n columns = this._columns.filter((column) => {\n return !this.hiddenColumns.includes(\n (column.dataIndex as string) ?? column.key\n );\n });\n }\n // 初始化列排序\n if (columns?.length) {\n if (this.sortable) {\n columns = columns.map((item) => {\n if (isNil(item.key)) {\n item.key = item.dataIndex as string;\n }\n if (item.sorter) {\n item.sortOrder =\n this.sort === item.key && !isNil(this.order) ? this.order : null;\n }\n return item;\n });\n } else {\n columns = map(columns, (item) => {\n item.sorter = false;\n return item;\n });\n }\n }\n return columns;\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n this._initConfigProps();\n ReactDOM.render(\n <BrickWrapper>\n <RankTable\n header={this.header}\n dataSource={this._dataSource}\n columns={this.getModifyColumns()}\n configProps={this.configProps}\n showCard={this.showCard}\n rowKey={this.rowKey}\n scroll={this.scrollConfigs}\n size={this.size}\n onChange={this._handleOnChange}\n showHeader={this.showHeader}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"presentational-bricks.rank-table\", RankTableElement);\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!./DropdownButton.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, { ReactNode, useMemo, useState } from \"react\";\nimport { Menu, Dropdown, Tooltip } from \"antd\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { Option } from \"../interfaces\";\nimport styles from \"./DropdownButton.module.css\";\ninterface DropdownButtonProps {\n options: Option[];\n leftButtonIcon?: MenuIcon | string;\n rightButtonIcon?: MenuIcon | string;\n buttonName?: string;\n disabled?: boolean;\n tooltip?: string;\n onChange?(value: any, item: any): void;\n value?: any;\n textPlacement?: \"right\" | \"left\";\n handleClick?(item: any): void;\n}\n\nexport function DropdownButton(props: DropdownButtonProps): React.ReactElement {\n const { rightButtonIcon, leftButtonIcon, buttonName, options } = props;\n const [value, setValue] = useState(props.value);\n const selectedItem = useMemo(\n () => options.find((option) => option.value === value),\n [value]\n );\n const [visible, setVisible] = useState(false);\n const handleMenuClick = (item: any) => {\n if (props.onChange) {\n props.onChange(item.value, item);\n }\n setVisible(false);\n setValue(item.value);\n };\n const handleButtonClick = (e: any) => {\n if (props.handleClick) {\n props.handleClick(selectedItem);\n }\n };\n const menu = useMemo(\n () => (\n <Menu>\n {options.map((option) => (\n <Menu.Item\n className={option.value === value ? \"active\" : undefined}\n onClick={(e) => handleMenuClick(option)}\n key={String(option.value)}\n >\n {option.label}\n </Menu.Item>\n ))}\n </Menu>\n ),\n [options, selectedItem]\n );\n\n const renderIcon = (buttonIcon: MenuIcon | string) => {\n return buttonIcon && typeof buttonIcon === \"string\" ? (\n <LegacyIcon type={buttonIcon} />\n ) : (\n typeof buttonIcon === \"object\" && <GeneralIcon icon={buttonIcon} />\n );\n };\n const renderButtons = ([\n leftButton,\n rightButton,\n ]: ReactNode[]): ReactNode[] => {\n return [\n <Tooltip title={props.tooltip} key=\"leftButton\">\n {leftButton}\n </Tooltip>,\n rightButton,\n ];\n };\n const renderRightIcon = (icon: MenuIcon | string) => {\n return (\n <span\n className={styles.RightButtonWrapper}\n data-testid=\"dropdown-button-trigger\"\n >\n {selectedItem && props.textPlacement === \"right\" && (\n <span className={styles.RightButtonLabel}>{selectedItem.label}</span>\n )}\n {renderIcon(icon)}\n </span>\n );\n };\n\n return (\n <div>\n <Dropdown.Button\n overlay={menu}\n onClick={handleButtonClick}\n icon={renderRightIcon(\n !rightButtonIcon ? (visible ? \"up\" : \"down\") : rightButtonIcon\n )}\n buttonsRender={renderButtons}\n trigger={[\"click\"]}\n visible={visible}\n onVisibleChange={(visible) => {\n setVisible(visible);\n }}\n className={styles.DropdownButtonWrapper}\n disabled={props.disabled}\n >\n <div data-testid=\"left-button-trigger\">\n {renderIcon(leftButtonIcon)}\n {props.textPlacement === \"left\" && selectedItem && (\n <span className={styles.LeftButtonLabel}>\n {selectedItem.label || selectedItem.value}\n </span>\n )}\n {props.textPlacement !== \"left\" && (\n <span className={styles.LeftButtonLabel}>{buttonName}</span>\n )}\n </div>\n </Dropdown.Button>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n BrickWrapper,\n event,\n EventEmitter,\n property,\n UpdatingElement,\n} from \"@next-core/brick-kit\";\nimport { DropdownButton } from \"./DropdownButton\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { Option } from \"../interfaces\";\n/**\n * @id presentational-bricks.dropdown-button\n * @author astrid\n * @history\n * 1.212.0: 新增构件 `presentational-bricks.dropdown-button`\n * @docKind brick\n * @noInheritDoc\n */\nexport class DropdownButtonElement extends UpdatingElement {\n /**\n * @kind Option[]\n * @required false\n * @default -\n * @description 下拉菜单\n * @group basic\n */\n @property({ attribute: false })\n options: Option[];\n /**\n * @kind MenuIcon|string\n * @required false\n * @default -\n * @description 左边按钮 icon,支持[icon 图标库](developers/icon),可直接复制图标图标的配置(antd、fa 及 easyops 三种库都支持),也可只取 icon 字段的值(仅支持 antd 库)。配置{ \"lib\": \"antd\", \"icon\": \"edit\" }与 \"edit\"等价\n * @group basic\n */\n @property()\n leftButtonIcon: MenuIcon | string;\n\n /**\n * @kind MenuIcon|string\n * @required false\n * @default -\n * @description 右边边按钮 icon,支持[icon 图标库](developers/icon),可直接复制图标图标的配置(antd、fa 及 easyops 三种库都支持),也可只取 icon 字段的值(仅支持 antd 库)。配置{ \"lib\": \"antd\", \"icon\": \"edit\" }与 \"edit\"等价\n * @group basic\n */\n @property()\n rightButtonIcon: MenuIcon | string;\n\n /**\n * @kind string\n * @required false\n * @default -\n * @description 配置左边按钮名称\n * @group basic\n */\n @property()\n buttonName: string;\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 \"right\"| \"left\"\n * @required false\n * @default `right`\n * @description 选择下拉菜单的选项值出现在左边按钮还是右边按钮,为`left` buttonName不生效\n * @group basic\n */\n @property({ attribute: false })\n textPlacement: \"right\" | \"left\";\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 any\n * @required false\n * @default -\n * @description 选中项的值\n */\n @property({ attribute: false }) value: any[];\n\n /**\n * @detail {value: any; item: any}\n * @description 选项改变事件\n */\n @event({ type: \"select.change\", cancelable: true })\n selectChange: EventEmitter<{ value: any; item: any }>;\n\n /**\n * @detail {item: any}\n * @description 点击左边按钮发出的事件\n */\n @event({ type: \"left.button.click\", cancelable: true })\n handleClick: EventEmitter<{ item: any }>;\n\n private _handleChange = (value: any, item: any) => {\n this.value = value;\n this.selectChange.emit({ value, item });\n };\n private _handleClick = (item: any) => {\n this.handleClick.emit(item);\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 <DropdownButton\n options={this.options}\n leftButtonIcon={this.leftButtonIcon}\n rightButtonIcon={this.rightButtonIcon}\n buttonName={this.buttonName}\n tooltip={this.tooltip}\n disabled={this.disabled}\n onChange={this._handleChange}\n value={this.value}\n textPlacement={this.textPlacement}\n handleClick={this._handleClick}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.dropdown-button\",\n DropdownButtonElement\n);\n","import { getRuntime } from \"@next-core/brick-kit\";\n\ngetRuntime().registerLazyBricks(\n\"presentational-bricks.code-editor\",\n() =>\n import(\n /* webpackChunkName: \"lazy-bricks/code-editor.dd92\" */\n \"../code-editor\"\n )\n);\n\ngetRuntime().registerLazyBricks(\n\"presentational-bricks.crontab-display\",\n() =>\n import(\n /* webpackChunkName: \"lazy-bricks/crontab-display.dd92\" */\n \"../crontab-display\"\n )\n);\n\ngetRuntime().registerLazyBricks(\n\"presentational-bricks.brick-code-display\",\n() =>\n import(\n /* webpackChunkName: \"lazy-bricks/brick-code-display.dd92\" */\n \"../brick-code-display\"\n )\n);\n\ngetRuntime().registerLazyBricks(\n\"presentational-bricks.card-item\",\n() =>\n import(\n /* webpackChunkName: \"lazy-bricks/card-item.dd92\" */\n \"../card-item\"\n )\n);\n\ngetRuntime().registerLazyBricks(\n\"presentational-bricks.brick-collapse-card\",\n() =>\n import(\n /* webpackChunkName: \"lazy-bricks/brick-collapse-card.dd92\" */\n \"../brick-collapse-card\"\n )\n);\n\ngetRuntime().registerLazyBricks(\n\"presentational-bricks.brick-placeholder\",\n() =>\n import(\n /* webpackChunkName: \"lazy-bricks/brick-placeholder.dd92\" */\n \"../brick-placeholder\"\n )\n);\n\ngetRuntime().registerLazyBricks(\n\"presentational-bricks.single-field-edit\",\n() =>\n import(\n /* webpackChunkName: \"lazy-bricks/single-field-edit.dd92\" */\n \"../single-field-edit\"\n )\n);\n\ngetRuntime().registerLazyBricks(\n\"presentational-bricks.qrcode-download\",\n() =>\n import(\n /* webpackChunkName: \"lazy-bricks/qrcode-download.dd92\" */\n \"../qrcode-download\"\n )\n);\n\ngetRuntime().registerLazyBricks(\n [\n \"presentational-bricks.brick-form\",\n \"presentational-bricks.markdown-editor\",\n \"presentational-bricks.markdown-display\"\n ],\n () =>\n import(\n /* webpackChunkName: \"lazy-bricks/~bricks-use-form-and-markdown.dd92\" */\n \"./bricks-use-form-and-markdown\"\n )\n);\n\ngetRuntime().registerLazyBricks(\n [\n \"presentational-bricks.modal-confirm\",\n \"presentational-bricks.statistic-card\"\n ],\n () =>\n import(\n /* webpackChunkName: \"lazy-bricks/~bricks-use-html-to-react.dd92\" */\n \"./bricks-use-html-to-react\"\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!./BasicIcon.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 { MenuIcon } from \"@next-core/brick-types\";\nimport cssStyle from \"./BasicIcon.module.css\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport classNames from \"classnames\";\n\nexport type ImgIcon = {\n imgSrc?: string;\n imgStyle?: React.CSSProperties;\n};\n\nexport interface BasicIconProps {\n icon?: MenuIcon | ImgIcon;\n size?: string;\n renderBg?: boolean;\n showWhenHover?: boolean;\n bg?: string;\n bgSize?: string;\n bgBorderRadius?: string;\n itemClick?: () => void;\n}\n\nexport function BasicIcon(props: BasicIconProps): React.ReactElement {\n const {\n icon,\n size = \"24px\",\n renderBg,\n bgSize = \"46px\",\n bg = \"var(--theme-gray-color)\",\n bgBorderRadius = \"50%\",\n showWhenHover,\n itemClick,\n } = props;\n\n return icon ? (\n icon.imgSrc ? (\n <img\n src={icon.imgSrc}\n height={size}\n width={size}\n style={icon.imgStyle}\n className={classNames({ [cssStyle.iconControl]: showWhenHover })}\n onClick={itemClick}\n />\n ) : (\n <div\n style={{ fontSize: size, lineHeight: size, width: \"min-content\" }}\n className={classNames({ [cssStyle.iconControl]: showWhenHover })}\n onClick={itemClick}\n >\n {renderBg ? (\n <div\n style={{\n height: bgSize,\n width: bgSize,\n background: bg,\n borderRadius: bgBorderRadius,\n }}\n className={cssStyle.iconWrapper}\n >\n <GeneralIcon icon={icon} />\n </div>\n ) : (\n <GeneralIcon icon={icon} />\n )}\n </div>\n )\n ) : (\n <></>\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 { BasicIcon, ImgIcon } from \"./BasicIcon\";\nimport { MenuIcon } from \"@next-core/brick-types\";\n\n/**\n * @id presentational-bricks.basic-icon\n * @name presentational-bricks.basic-icon\n * @author qimengwu\n * @history\n * 1.0.0: 新增构件 `presentational-bricks.basic-icon`\n * @docKind brick\n * @description 基础icon构件\n * @noInheritDoc\n */\nexport class BasicIconElement extends UpdatingElement {\n /**\n * @kind MenuIcon | ImgIcon\n * @required true\n * @default -\n * @description 图标\n * @group basic\n */\n @property({ attribute: false })\n icon: MenuIcon | ImgIcon;\n\n /**\n * @kind string\n * @required false\n * @default 24px\n * @description 图标大小\n * @group basic\n */\n @property({ attribute: false })\n size: string;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否渲染图标背景\n * @group basic\n */\n @property({ type: Boolean })\n renderBg: boolean;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否hover的时候再展示\n * @group basic\n */\n @property({ type: Boolean })\n showWhenHover: boolean;\n\n /**\n * @kind string\n * @required false\n * @default\n * @description 图标背景\n * @group basic\n */\n @property()\n bg: string;\n\n /**\n * @kind string\n * @required false\n * @default 46px\n * @description 图标背景大小\n * @group basic\n */\n @property({ attribute: false })\n bgSize: string;\n\n /**\n * @kind string\n * @required false\n * @default\n * @description 图标背景圆角大小\n * @group basic\n */\n @property()\n bgBorderRadius: string;\n\n /**\n * @kind unknown\n * @description 数据源\n * @group basic\n */\n @property({ attribute: false })\n dataSource: unknown;\n\n /**\n * @detail `any`\n * @description 按钮被点击时触发, detail 为 dataSource 数据\n */\n @event({ type: \"icon.click\", cancelable: true })\n itemClick: EventEmitter<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 = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n private _itemClick = (): void => {\n this.itemClick.emit(this.dataSource);\n };\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <BasicIcon\n icon={this.icon}\n size={this.size}\n renderBg={this.renderBg}\n bg={this.bg}\n bgSize={this.bgSize}\n bgBorderRadius={this.bgBorderRadius}\n itemClick={this._itemClick}\n showWhenHover={this.showWhenHover}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\"presentational-bricks.basic-icon\", BasicIconElement);\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!./text-collapse.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 { Typography } from \"antd\";\nimport { DownOutlined, UpOutlined } from \"@ant-design/icons\";\nimport styles from \"./text-collapse.module.css\";\n\ninterface TextCollapseProps {\n text?: string;\n line?: number;\n}\n\nexport function TextCollapse(props: TextCollapseProps): React.ReactElement {\n const [ellipsis, setEllipsis] = useState(true);\n\n const { Paragraph } = Typography;\n\n const handleClick = () => {\n setEllipsis(!ellipsis);\n };\n\n return (\n <div className={styles.main}>\n <Paragraph\n data-testid=\"main-text\"\n ellipsis={ellipsis ? { rows: props.line, expandable: false } : false}\n >\n {props.text}\n </Paragraph>\n <div className={styles.icons} onClick={handleClick} data-testid=\"icons\">\n {ellipsis ? <DownOutlined /> : <UpOutlined />}\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, property, UpdatingElement } from \"@next-core/brick-kit\";\nimport { TextCollapse } from \"./TextCollapse\";\n\n/**\n * @id presentational-bricks.text-collapse\n * @author julielai\n * @history\n * @description 展示可折叠文本\n * 1.x.0: 新增构件 `presentational-bricks.text-collapse`\n * @docKind brick\n * @noInheritDoc\n */\nexport class TextCollapseElement extends UpdatingElement {\n /**\n * @kind string\n * @required false\n * @default -\n * @description 文本\n */\n @property()\n text: string;\n\n /**\n * @kind number\n * @required false\n * @default -\n * @description 行数\n */\n @property()\n line: number;\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 <TextCollapse text={this.text} line={this.line} />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.text-collapse\",\n TextCollapseElement\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 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 { useTranslation } from \"react-i18next\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nimport type { ColumnsType, TableRowSelection } from \"antd/es/table/interface\";\nimport type { TransferItem } from \"antd/es/transfer\";\nimport type { SortableContainerProps, SortEnd } from \"react-sortable-hoc\";\nimport {\n SortableContainer,\n SortableElement,\n SortableHandle,\n} from \"react-sortable-hoc\";\nimport { MenuOutlined } from \"@ant-design/icons\";\nimport { Transfer, Table, Modal } from \"antd\";\nimport difference from \"lodash/difference\";\nimport styles from \"./index.module.css\";\nimport { cloneDeep, isNumber, get, uniq } from \"lodash\";\n\ninterface TableTransferProps {\n dataSource: any[];\n columns: ColumnsType<Record<string, any>>;\n targetKeys?: string[];\n change?: (keys: string[]) => void;\n sortChange?: (keys: string[]) => void;\n dragSortable?: boolean;\n sortTitle?: string;\n disabled?: boolean;\n selectedKeys?: string[];\n maxSelected?: number;\n listStyle?: React.CSSProperties;\n titles?: string[];\n searchPlaceholder?: string;\n onSearch?: (direction: \"left\" | \"right\", value: string) => void;\n}\nexport function arrayMoveImmutable(array, fromIndex, toIndex) {\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}\nexport function filterDisabledDataSource(\n dataSource: any[] = [],\n targetKeys: string[] = [],\n maxSelected?: number\n) {\n const result = cloneDeep(dataSource);\n if (isNumber(maxSelected) && targetKeys.length >= maxSelected) {\n result.forEach((item) => {\n if (!item.disabled && !targetKeys.includes(item.key)) {\n item.disabled = true;\n }\n });\n } else {\n result.forEach((item) => {\n if (item.disabled) {\n delete item.disabled;\n }\n });\n }\n return result;\n}\nexport function transferData(options: {\n dataSource: Record<string, any>[];\n selected: boolean;\n direction: \"left\" | \"right\";\n max?: number;\n targetKeys: string[];\n selectedKeys: string[];\n key: string;\n}) {\n const {\n dataSource,\n selected,\n direction,\n max,\n targetKeys,\n selectedKeys: listSelectedKeys,\n key,\n } = options;\n let result = cloneDeep(dataSource);\n if (isNumber(max) && direction === \"left\") {\n const allKeys = uniq([...(targetKeys || []), ...(listSelectedKeys || [])]);\n if (selected) {\n allKeys.push(key);\n } else {\n const index = allKeys.indexOf(key);\n allKeys.splice(index, 1);\n }\n result = filterDisabledDataSource(\n result,\n allKeys.length >= max ? allKeys : [],\n max\n );\n }\n return result;\n}\nexport function filterOptions(\n value: string,\n item: Record<string, any>,\n columns: ColumnsType\n) {\n const fields = columns.map((col) => get(col, \"dataIndex\"));\n return fields.some((field) =>\n get(item, field)?.toLowerCase().includes(value.toLowerCase())\n );\n}\nexport function TableTransfer(props: TableTransferProps): React.ReactElement {\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n const {\n dataSource: originDataSource,\n columns: originColumns,\n targetKeys: originTargetKeys,\n change,\n sortChange,\n dragSortable,\n sortTitle = t(K.SORT),\n disabled,\n selectedKeys: originSelectedKeys,\n maxSelected,\n listStyle,\n titles,\n searchPlaceholder,\n onSearch,\n } = props;\n // let modifiedDataSource;\n const [dataSource, setDataSource] = useState([]);\n const [rightColumns, setRightColumns] = useState([]);\n const [targetKeys, setTargetKeys] = useState([]);\n const [selectedKeys, setSelectedKeys] = useState([]);\n useEffect(() => {\n const modifiedDataSource = filterDisabledDataSource(\n originDataSource,\n originTargetKeys,\n maxSelected\n );\n setDataSource(modifiedDataSource);\n setTargetKeys(originTargetKeys);\n setSelectedKeys(originSelectedKeys);\n\n if (dragSortable) {\n const DragHandle = SortableHandle(() => (\n <MenuOutlined style={{ cursor: \"grab\", color: \"#999\" }} />\n ));\n setRightColumns([\n ...originColumns,\n { title: sortTitle, dataIndex: \"sort\", render: () => <DragHandle /> },\n ]);\n } else {\n setRightColumns(originColumns);\n }\n }, [originDataSource, originTargetKeys, originColumns, originSelectedKeys]);\n const onChange = (nextTargetKeys: string[], direction: \"left\" | \"right\") => {\n if (\n direction === \"left\" ||\n !maxSelected ||\n nextTargetKeys.length <= maxSelected\n ) {\n setTargetKeys(nextTargetKeys);\n change(nextTargetKeys);\n const modifiedDataSource = filterDisabledDataSource(\n dataSource,\n nextTargetKeys,\n maxSelected\n );\n setDataSource(modifiedDataSource);\n } else {\n Modal.warning({\n title: \"提示\",\n content: `所选数量超过最大限制(${maxSelected}),请重新选择`,\n okText: \"知道了\",\n });\n }\n };\n const onSelectChange = (\n sourceSelectedKeys: string[],\n targetSelectedKeys: string[]\n ) => {\n const modifiedDataSource = filterDisabledDataSource(\n dataSource,\n [...(sourceSelectedKeys ?? []), ...(targetKeys ?? [])],\n maxSelected\n );\n setDataSource(modifiedDataSource);\n setSelectedKeys([...sourceSelectedKeys, ...targetSelectedKeys]);\n };\n\n const handleSearch = (direction: \"left\" | \"right\", value: string) => {\n onSearch?.(direction, value);\n };\n\n return (\n <Transfer\n onSearch={handleSearch}\n targetKeys={targetKeys}\n selectedKeys={selectedKeys}\n dataSource={dataSource}\n onChange={onChange}\n onSelectChange={onSelectChange}\n showSelectAll={false}\n listStyle={listStyle}\n locale={searchPlaceholder ? { searchPlaceholder } : null}\n showSearch\n filterOption={(inputValue: string, item: Record<string, any>) => {\n return filterOptions(inputValue, item, originColumns);\n }}\n disabled={disabled}\n titles={titles}\n >\n {({\n direction,\n filteredItems,\n onItemSelect,\n onItemSelectAll,\n selectedKeys: listSelectedKeys,\n disabled: listDisabled,\n }) => {\n const columns = direction === \"left\" ? originColumns : rightColumns;\n const rowSelection: TableRowSelection<TransferItem> = {\n getCheckboxProps: (item) => ({\n disabled: listDisabled || item.disabled,\n }),\n onSelectAll(selected, selectedRows) {\n const treeSelectedKeys = selectedRows\n .filter((item) => !item.disabled)\n .map(({ key }) => key);\n const diffKeys = selected\n ? difference(treeSelectedKeys, listSelectedKeys)\n : difference(listSelectedKeys, treeSelectedKeys);\n onItemSelectAll(diffKeys as string[], selected);\n },\n onSelect({ key }, selected) {\n onItemSelect(key as string, selected);\n const modifiedDataSource = transferData({\n dataSource,\n selected,\n direction,\n max: maxSelected,\n key,\n targetKeys,\n selectedKeys: listSelectedKeys,\n });\n setDataSource(modifiedDataSource);\n },\n selectedRowKeys: listSelectedKeys,\n hideSelectAll:\n direction === \"left\" &&\n isNumber(maxSelected) &&\n maxSelected < dataSource.length,\n };\n const SortableItem = SortableElement(\n (props: React.HTMLAttributes<HTMLTableRowElement>) => (\n <tr {...props} style={{ zIndex: 99999, marginTop: \"-5px\" }} />\n )\n );\n const SortableBody = SortableContainer(\n (props: React.HTMLAttributes<HTMLTableSectionElement>) => (\n <tbody {...props} />\n )\n );\n const onSortEnd = ({ oldIndex, newIndex }: SortEnd) => {\n if (oldIndex !== newIndex) {\n const newData = arrayMoveImmutable(\n filteredItems.slice(),\n oldIndex,\n newIndex\n ).filter((el) => !!el);\n if (direction === \"right\") {\n setTargetKeys(newData.map((item) => item.key));\n }\n sortChange(newData.map((item: Record<string, any>) => item.key));\n }\n };\n const DraggableContainer = (props: SortableContainerProps) => (\n <SortableBody\n useDragHandle\n disableAutoscroll\n helperClass={styles[\"row-dragging\"]}\n onSortEnd={(direction) => onSortEnd(direction)}\n {...props}\n />\n );\n const DraggableBodyRow = ({ className, style, ...restProps }) => {\n // function findIndex base on Table rowKey props and should always be a right array index;\n const index = filteredItems.findIndex(\n (x) => x.key === restProps[\"data-row-key\"]\n );\n return <SortableItem index={index} {...restProps} />;\n };\n return (\n <Table\n rowSelection={rowSelection}\n dataSource={filteredItems}\n columns={columns}\n size=\"small\"\n onRow={({ key, disabled: itemDisabled }) => ({\n onClick: () => {\n if (itemDisabled || listDisabled) return;\n onItemSelect(\n key as string,\n !listSelectedKeys.includes(key as string)\n );\n },\n })}\n scroll={{ x: listStyle?.width }}\n components={\n dragSortable\n ? {\n body: {\n wrapper: DraggableContainer,\n row: DraggableBodyRow,\n },\n }\n : null\n }\n />\n );\n }}\n </Transfer>\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 { TableTransfer } from \"./TableTransfer\";\nimport type { ColumnsType } from \"antd/es/table/interface\";\n/**\n * @id presentational-bricks.table-transfer\n * @author annzhang\n * @history\n * 1.x.0: 新增构件 `presentational-bricks.table-transfer`\n * @docKind brick\n * @noInheritDoc\n */\n\nexport class TableTransferElement 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 * @default\n * @required true\n * @description 数据源,其中的数据将会被渲染到左边一栏中,targetKeys 中指定的除外,必须有key字段作为唯一标识\n */\n @property({ attribute: false }) dataSource: any[];\n /**\n * @default\n * @required true\n * @description 表格column配置\n */\n @property({ attribute: false }) columns: ColumnsType<Record<string, any>>;\n /**\n * @default\n * @required false\n * @description 显示在右栏数据的 key 集合\n */\n @property({ attribute: false }) targetKeys: string[];\n /**\n * @default false\n * @required false\n * @description 是否支持右栏表格拖拽排序\n */\n /**\n * @default\n * @required false\n * @description 设置哪些项被选中\n */\n @property({ attribute: false }) selectedKeys: string[];\n /**\n * @default `false`\n * @required false\n * @description 是否禁用\n */\n @property({ type: Boolean }) disabled: boolean;\n @property({ type: Boolean }) dragSortable: boolean;\n /**\n * @default `sort`\n * @required false\n * @description 支持右栏表格排序时,排序列的title\n */\n @property({ attribute: false }) sortTitle: string;\n /**\n * @detail\n * @description 选项转移时发出的事件,detail是右栏表格key数组\n */\n /**\n * @default\n * @required false\n * @description 最大可选数量,当 dataSource 个数大于该值时,不显示全勾选框\n */\n @property({ attribute: false }) maxSelected: number;\n /**\n * @kind CSSProperties\n * @required false\n * @default -\n * @description 两个穿梭框的自定义样式,常用来设置宽高\n */\n @property({ attribute: false })\n listStyle: React.CSSProperties;\n /**\n * @kind [string, string]\n * @required false\n * @default -\n * @description 标题集合,顺序从左至右\n * @group advanced\n */\n @property({ attribute: false })\n titles: string[];\n /**\n * @default\n * @required false\n * @description 搜索框placeholder\n */\n @property({ attribute: false })\n searchPlaceholder: string;\n /**\n * @kind string[]\n * @description 当选项发生转移时发出的事件,event.detail是\t右侧框数据的 key 集合\n */\n @event({ type: \"table.transfer.change\" })\n tableTransferChangeEvent: EventEmitter<string[]>;\n change = (keys: string[]) => {\n this.tableTransferChangeEvent.emit(keys);\n };\n /**\n * @kind string[]\n * @description 右栏表格拖拽排序发出的事件,event.detail是右栏表格排序后的key数组\n */\n @event({ type: \"sort.change\" }) sortChangeEvent: EventEmitter<string[]>;\n sortChange = (keys: string[]) => {\n this.sortChangeEvent.emit(keys);\n };\n\n /**\n * @kind {direction: \"left\" | \"right\", value: any}\n * @description 搜索框发出的事件,event.detail是搜索框的值\n */\n @event({ type: \"search.change\" }) searchChangeEvent: EventEmitter<{\n direction: \"left\" | \"right\";\n value: any;\n }>;\n onSearch = (direction: \"left\" | \"right\", value: string) => {\n this.searchChangeEvent.emit({ direction, value });\n };\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <TableTransfer\n dataSource={this.dataSource}\n columns={this.columns}\n targetKeys={this.targetKeys}\n change={this.change}\n sortChange={this.sortChange}\n dragSortable={this.dragSortable}\n sortTitle={this.sortTitle}\n selectedKeys={this.selectedKeys}\n disabled={this.disabled}\n maxSelected={this.maxSelected}\n listStyle={this.listStyle}\n titles={this.titles}\n onSearch={this.onSearch}\n searchPlaceholder={this.searchPlaceholder}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.table-transfer\",\n TableTransferElement\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!./CollapseInfoList.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_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { BrickAsComponent, getHistory } from \"@next-core/brick-kit\";\nimport { Collapse } from \"antd\";\nimport { CaretRightOutlined } from \"@ant-design/icons\";\nimport styles from \"./CollapseInfoList.module.css\";\n\nconst { Panel } = Collapse;\n\nexport type InfoDetail = {\n key: string;\n title: string;\n detail: string;\n};\n\ninterface CollapseInfoListProps {\n dataSource: InfoDetail[];\n onChange?: (key: string[]) => void;\n titleBrick?: { useBrick: UseBrickConf };\n extraBrick?: { useBrick: UseBrickConf };\n}\n\nexport function CollapseInfoList({\n dataSource,\n titleBrick,\n extraBrick,\n onChange,\n}: CollapseInfoListProps): React.ReactElement {\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n\n const getPanelTitle = (data: InfoDetail): React.ReactNode => {\n if (titleBrick?.useBrick) {\n return (\n <span style={{ display: \"flex\", alignItems: \"flex-start\" }}>\n {data.title}\n <BrickAsComponent\n useBrick={titleBrick.useBrick}\n data={data}\n ></BrickAsComponent>\n </span>\n );\n }\n return data.title;\n };\n\n return (\n <Collapse\n expandIcon={({ isActive }) => (\n <CaretRightOutlined rotate={isActive ? 90 : 0} />\n )}\n defaultActiveKey={dataSource[0].key}\n onChange={onChange}\n bordered={false}\n className={styles.collapseWrapper}\n data-testid=\"collapse-wrapper\"\n >\n {dataSource?.map((data) => (\n <Panel\n header={getPanelTitle(data)}\n key={data.key}\n extra={\n extraBrick?.useBrick ? (\n <BrickAsComponent\n useBrick={extraBrick.useBrick}\n data={data}\n ></BrickAsComponent>\n ) : (\n \"\"\n )\n }\n >\n <p>{data.detail}</p>\n </Panel>\n ))}\n </Collapse>\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 { CollapseInfoList } from \"./CollapseInfoList\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { InfoDetail } from \"./CollapseInfoList\";\n\n/**\n * @id presentational-bricks.collapse-info-list\n * @author dophjing\n * @history\n * 1.x.0: 新增构件 `presentational-bricks.collapse-info-list`\n * @docKind brick\n * @noInheritDoc\n */\nexport class CollapseInfoListElement extends UpdatingElement {\n /**\n * @required true\n * @description 折叠项dataSource\n * @group basic\n */\n @property({\n attribute: false,\n })\n dataSource: InfoDetail[];\n\n /**\n * @detail string[]\n * @description -\n */\n @event({ type: \"collapse-info-list.change\" })\n collapseChange: EventEmitter<string[]>;\n\n handleChange = (key: string[]) => {\n this.collapseChange.emit(key);\n };\n\n /**\n * @required false\n * @description 折叠项titleBrick\n * @group ui\n */\n @property({\n attribute: false,\n })\n titleBrick: { useBrick: UseBrickConf };\n\n /**\n * @required false\n * @description 折叠项extraBrick\n * @group ui\n */\n @property({\n attribute: false,\n })\n extraBrick: { useBrick: UseBrickConf };\n\n connectedCallback(): void {\n // Don't override user's style settings.\n // istanbul ignore else\n if (!this.style.display) {\n this.style.display = \"block\";\n }\n this._render();\n }\n\n disconnectedCallback(): void {\n ReactDOM.unmountComponentAtNode(this);\n }\n\n protected _render(): void {\n // istanbul ignore else\n if (this.isConnected) {\n ReactDOM.render(\n <BrickWrapper>\n <CollapseInfoList\n dataSource={this.dataSource}\n onChange={this.handleChange}\n titleBrick={this.titleBrick}\n extraBrick={this.extraBrick}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.collapse-info-list\",\n CollapseInfoListElement\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!./DigitalNumber.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 classNames from \"classnames\";\nimport React, { CSSProperties, useState, useEffect, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nimport styles from \"./DigitalNumber.module.css\";\n\nexport type DigitalNumberType = \"default\" | \"custom\";\nexport type DigitalNumberProps = {\n decimals?: number;\n decimal?: string;\n cellStyle?: CSSProperties;\n textStyle?: CSSProperties;\n easeSpeed?: number;\n value: number;\n type?: DigitalNumberType;\n height?: number;\n maxLen?: number;\n thousands?: boolean;\n delaySpeed?: number;\n width?: number;\n};\n\nconst defaultNumberRange = Array(10)\n .fill(\"\")\n .map((_, index) => index.toString());\n\nexport function DigitalNumber(props: DigitalNumberProps): React.ReactElement {\n const {\n value,\n decimals,\n decimal,\n maxLen,\n thousands,\n type = \"custom\",\n ...rest\n } = props;\n const [numArr, setNumArr] = useState<string[]>([]);\n\n useEffect(() => {\n const fixedVal = decimals ? value.toFixed(decimals) : \"\" + value;\n const _value = decimal ? fixedVal.replace(/\\./, decimal) : fixedVal;\n const splitArr = _value.split(decimal || \".\");\n const intNumber =\n maxLen && splitArr[0].length < maxLen\n ? (Array(maxLen).join(\"0\") + splitArr[0]).slice(-maxLen)\n : splitArr[0];\n const currNumber = `${\n thousands ? intNumber.replace(/(\\d)(?=(?:\\d{3})+$)/g, \"$1,\") : intNumber\n }${splitArr[1] ? decimal || \".\" : \"\"}${splitArr[1] || \"\"}`;\n const _numArr = currNumber.split(\"\");\n setNumArr(_numArr);\n }, [value, decimals, decimal, thousands, maxLen]);\n\n const digitContainerCls = classNames(styles.digitContainer, {\n [`${styles.digitContainer_custom}`]: type === \"custom\",\n });\n\n return (\n <div className={styles.digitWrapper}>\n <div className={digitContainerCls} data-testid=\"digit-container\">\n {numArr.map((d, index) => {\n if (Number.isNaN(Number(d))) {\n return (\n <div className={styles.digitDivider} key={index}>\n {d}\n </div>\n );\n }\n return <Slice key={index} digit={d} {...rest} />;\n })}\n </div>\n </div>\n );\n}\n\nexport interface SliceProps\n extends Pick<\n DigitalNumberProps,\n \"cellStyle\" | \"textStyle\" | \"height\" | \"easeSpeed\" | \"delaySpeed\" | \"width\"\n > {\n digit?: string;\n}\n\nexport const getPosition = (value: string, height: number): number => {\n const index = defaultNumberRange?.findIndex((item) => item === value);\n if (index && index > -1) return index * height * -1;\n return 0;\n};\n\nfunction Slice(props: SliceProps): React.ReactElement {\n const { digit, height, delaySpeed, width, easeSpeed } = props;\n const [cellHeight, setCellHeight] = useState(height);\n const [offset, setOffset] = useState(null);\n const sliceRef = useRef(null);\n const timerRef = useRef(null);\n\n useEffect(() => {\n if (sliceRef.current) {\n const digitBoxHeight = height ? height : sliceRef.current?.clientHeight;\n setCellHeight(digitBoxHeight);\n timerRef.current = setTimeout(() => {\n setOffset(getPosition(digit, digitBoxHeight));\n }, delaySpeed);\n }\n return () => {\n clearTimeout(timerRef.current);\n };\n }, []);\n\n return (\n <div\n style={{ height: cellHeight, width }}\n data-testid={\"digit-box\"}\n className={styles.digitBox}\n >\n <div\n className={styles.digitSubBox}\n style={{\n transform: `translateY(${offset}px)`,\n transition: `transform ${easeSpeed}s ease-in-out`,\n }}\n >\n {defaultNumberRange.map((i) => {\n return (\n <div\n key={i}\n className={styles.digitCell}\n style={{ ...props.cellStyle, height: cellHeight, width }}\n ref={sliceRef}\n >\n <span style={props.textStyle}>{i}</span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import React, { CSSProperties } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { DigitalNumber, DigitalNumberType } from \"./DigitalNumber\";\n\n/**\n * @id presentational-bricks.digital-number\n * @author abert\n * @history\n * 1.x.0: 新增构件 `presentational-bricks.digital-number`\n * @docKind brick\n * @noInheritDoc\n */\nexport class DigitalNumberElement extends UpdatingElement {\n /**\n * @default\n * @required false\n * @description 小数位数\n */\n @property({ attribute: false })\n decimals: number;\n /**\n * @default .\n * @required false\n * @description 小数位分割符\n */\n @property({ attribute: false })\n decimal: string;\n /**\n * @default\n * @required false\n * @description 容器样式\n */\n @property({ attribute: false })\n cellStyle: CSSProperties;\n /**\n * @default\n * @required\n * @description 数字样式\n */\n @property({ attribute: false })\n textStyle: CSSProperties;\n\n /**\n * @default 1.5s\n * @requires false\n * @description 动画执行时间,单位 s\n */\n @property({ attribute: false })\n easeSpeed: number;\n\n /**\n * @default 100s\n * @required false\n * @description 等待动画执行时间,单位 ms\n */\n @property({ attribute: false })\n delaySpeed = 100;\n\n /**\n * @default\n * @required false\n * @description 整数位设置最大展示长度,长度不够按位补 0\n */\n @property({ attribute: false })\n maxLen: number;\n\n /**\n * @required true\n * @description 值\n */\n @property({ attribute: false })\n value: number;\n\n /**\n *\n * @default default\n * @required false\n * @description 滚动数字组件类型 default | custom\n */\n @property({ attribute: false })\n type: DigitalNumberType;\n\n /**\n * @default\n * @required false\n * @description 滚动容器的高度\n */\n @property({ attribute: false })\n height: number;\n\n /**\n * @default\n * @required false\n * @description 滚动容器的宽度\n */\n @property({ attribute: false })\n width: number;\n\n /**\n * @default false\n * @required false\n * @description 是否有千位分隔符\n */\n @property({ attribute: false })\n thousands: 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 <DigitalNumber\n height={this.height}\n width={this.width}\n decimal={this.decimal}\n decimals={this.decimals}\n cellStyle={this.cellStyle}\n textStyle={this.textStyle}\n thousands={this.thousands}\n type={this.type}\n value={this.value}\n easeSpeed={this.easeSpeed}\n delaySpeed={this.delaySpeed}\n maxLen={this.maxLen}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.digital-number\",\n DigitalNumberElement\n);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, property, UpdatingElement } from \"@next-core/brick-kit\";\nimport { GeneralPreviewImage } from \"./GeneralPreviewImage\";\n\n/**\n * @id presentational-bricks.general-preview-image\n * @author Albert Jie\n * @history\n * 1.x.0: 新增构件 `presentational-bricks.general-preview-image`\n * @docKind brick\n * @noInheritDoc\n */\nexport class GeneralPreviewImageElement extends UpdatingElement {\n /**\n * @default -\n * @required\n * @description 图像高度\n */\n @property({\n attribute: false,\n })\n height: string | number;\n\n /**\n * @default -\n * @required\n * @description 图像宽度\n */\n @property({\n attribute: false,\n })\n width: string | number;\n\n /**\n * @default -\n * @required\n * @description 图片地址\n */\n @property()\n src: string;\n\n /**\n * @default -\n * @description 多图预览时所有图片地址\n */\n @property({ attribute: false })\n srcList: string[];\n\n /**\n * @default -\n * @required\n * @description 图像描述\n */\n @property()\n alt: string;\n\n /**\n * @default -\n * @required\n * @description 加载失败容错地址\n */\n @property()\n fallback: string;\n\n /**\n * @default -\n * @description 是否可以预览\n */\n @property({ type: Boolean })\n canPreview: boolean;\n\n /**\n * @default -\n * @description 预览时图片操作按钮是否放置于图片下方\n */\n @property({ type: Boolean })\n customOperationPosition: boolean;\n\n /**\n * @default -\n * @description 预览起始图片索引\n */\n @property({ type: Number })\n previewCurrentIndex: number;\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 <GeneralPreviewImage\n src={this.src}\n srcList={this.srcList}\n alt={this.alt}\n width={this.width}\n height={this.height}\n fallback={this.fallback}\n canPreview={this.canPreview}\n previewCurrentIndex={this.previewCurrentIndex}\n customOperationPosition={this.customOperationPosition}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.general-preview-image\",\n GeneralPreviewImageElement\n);\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nimport { Avatar, Tooltip } from \"antd\";\nimport { UserInfo } from \"@next-core/brick-types\";\nimport { GroupProps } from \"antd/lib/avatar\";\nimport { useAvatar } from \"@next-libs/hooks\";\n\nfunction BasicUser({\n userNameOrId = \"\",\n displayShowKey,\n}: {\n userNameOrId: string;\n displayShowKey: boolean;\n}) {\n const { Avatar, user } = useAvatar(userNameOrId);\n\n const [userTooltip, setUserTooltip] = useState<string>(\"\");\n\n useEffect(() => {\n if (user) {\n const [name, showKey] = (user as any)[\"#showKey\"];\n const userName = name || user.nickname || user.instanceId;\n setUserTooltip(\n displayShowKey && showKey ? `${userName}(${showKey})` : userName\n );\n }\n }, [user, displayShowKey]);\n\n return user ? (\n <Tooltip title={userTooltip} placement=\"topLeft\" key={user.instanceId}>\n {Avatar}\n </Tooltip>\n ) : null;\n}\ninterface BrickUserGroupProps {\n userNameOrIds: any;\n configProps?: GroupProps;\n displayShowKey?: boolean;\n}\n\ntype UserInfoWithShowKey = UserInfo & { \"#showKey\": string[] };\n\nexport function BrickUserGroup({\n userNameOrIds = [],\n configProps = {},\n displayShowKey,\n}: BrickUserGroupProps): React.ReactElement {\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n const [maxCount, setMaxCount] = useState<number>(0);\n const [singleSize, setSingleSize] = useState<number>(0);\n const groupRef = useRef(null);\n\n useEffect(() => {\n const groupParentElement = groupRef?.current?.parentElement?.parentElement;\n setTimeout(() => {\n setSingleSize(\n groupRef?.current?.firstElementChild.children[0]?.clientWidth * 0.84\n );\n }, 200);\n\n const paddingRight =\n Number(groupParentElement?.style?.paddingRight?.slice(0, -2)) || 0;\n const paddingLeft =\n Number(groupParentElement?.style?.paddingLeft?.slice(0, -2)) || 0;\n const count =\n Math.floor(\n (groupParentElement?.clientWidth - paddingRight - paddingLeft) /\n singleSize\n ) - 1;\n setMaxCount(count > 1 ? count : 1);\n }, [singleSize]);\n\n return (\n <div ref={groupRef}>\n <Avatar.Group\n maxCount={configProps.maxCount || maxCount}\n maxStyle={\n configProps.maxStyle || {\n color: \"#f56a00\",\n backgroundColor: \"#fde3cf\",\n }\n }\n style={{ display: \"block\" }}\n {...configProps}\n >\n {userNameOrIds.map((userNameOrId: string, index: number) => {\n return (\n <BasicUser\n userNameOrId={userNameOrId}\n displayShowKey={displayShowKey}\n key={`${userNameOrId}${index}`}\n ></BasicUser>\n );\n })}\n </Avatar.Group>\n </div>\n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { BrickWrapper, UpdatingElement, property } from \"@next-core/brick-kit\";\nimport { BrickUserGroup } from \"./BrickUserGroup\";\nimport { GroupProps } from \"antd/lib/avatar\";\n\n/**\n * @id presentational-bricks.brick-user-group\n * @author dophjing\n * @history\n * 1.x.0: 新增构件 `presentational-bricks.brick-user-group`\n * @docKind brick\n * @noInheritDoc\n */\nexport class BrickUserGroupElement extends UpdatingElement {\n /**\n * @kind string[]\n * @required true\n * @default -\n * @description 用户名或用户 instanceId数组\n * @group basic\n */\n @property({ attribute: false })\n userNameOrIds: string[];\n\n /**\n * @kind \"boolean\"\n * @required false\n * @default false\n * @description 是否显示 `showKey` ,如果有则显示`alan(hero)` or `alan`\n */\n @property({ type: Boolean })\n displayShowKey: boolean;\n\n /**\n * @kind GroupProps\n * @required false\n * @default -\n * @description https://ant.design/components/avatar-cn#avatargroup-450\n * @group basic\n */\n @property({ attribute: false })\n configProps: GroupProps;\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 <BrickUserGroup\n userNameOrIds={this.userNameOrIds}\n configProps={this.configProps}\n displayShowKey={this.displayShowKey}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.brick-user-group\",\n BrickUserGroupElement\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!./share.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 { FunEntryType, FlatEntryType, treeDataType } from \"./interfaceType\";\nimport { cloneDeep } from \"lodash\";\nimport { DataNode } from \"rc-tree-select/lib/interface\";\n/**\n * 递归树结构,通过callback回调函数可对每一项数据做额外的操作。\n * @param treeData // 当前树型数据源\n * @param callback // 回调函数,对每一项数据进行额外处理\n * @param parentId // 父节点id\n * @param replaceName // 替换子节点属性名称\n * @returns void\n */\nexport const traverseTreeData = ({\n treeData = [],\n callback,\n parentId = null,\n replaceName = \"children\",\n}: FunEntryType): void => {\n // 遍历树形数据\n treeData.forEach((item: DataNode) => {\n callback?.(item, parentId);\n if (item[replaceName] && item[replaceName].length > 0) {\n traverseTreeData({\n treeData: item[replaceName],\n callback,\n parentId: item.key,\n replaceName,\n });\n }\n });\n};\n\n/**\n * 扁平化树结构\n * @param treeData // 当前树型数据源\n * @param callback // 回调函数,对每一项数据进行额外处理\n * @param replaceName // 替换子节点属性名称\n * @returns void\n */\nexport const flatTree = ({\n treeData = [],\n callback,\n replaceName = \"children\",\n}: FlatEntryType) => {\n // 扁平化树形数据结构\n let flatArr: DataNode[] = [];\n treeData.forEach((item: DataNode, index) => {\n const copyItem = { ...item };\n if (item[replaceName]) {\n delete copyItem[replaceName];\n }\n callback?.(copyItem, index);\n flatArr.push(copyItem);\n if (item[replaceName] && item[replaceName].length > 0) {\n flatArr = flatArr.concat(\n flatTree({ treeData: item[replaceName], replaceName, callback })\n );\n }\n });\n return flatArr;\n};\n\n/**\n * 通过搜索词过滤树结构\n * @param searchValue 搜索词\n * @param treeArr 树型数据源\n * @returnsDataNode[]\n */\nexport const searchTree = (\n searchValue = \"\",\n treeArr: DataNode[] = []\n): DataNode[] => {\n // 树形数据搜索\n const searTreeArr: DataNode[] = [];\n treeArr?.forEach((treeItem: DataNode) => {\n if ((treeItem.title as string).includes(searchValue)) {\n searTreeArr.push(treeItem);\n } else {\n if (treeItem.children && treeItem.children.length) {\n const chr = searchTree(searchValue, treeItem.children);\n const obj = {\n ...treeItem,\n children: chr,\n };\n if (chr && chr.length) {\n searTreeArr.push(obj);\n }\n }\n }\n });\n return searTreeArr;\n};\n\nexport const searchAllParents = (\n arr: Array<DataNode[\"key\"]>,\n sonParMap: Map<DataNode[\"key\"], DataNode[\"key\"] | null>\n): Array<DataNode[\"key\"]> => {\n const allKey: Array<DataNode[\"key\"]> = [];\n function search(key: DataNode[\"key\"]) {\n allKey.push(key);\n const nextKey = sonParMap.get(key);\n if (nextKey) {\n search(nextKey);\n }\n }\n arr.forEach((key) => {\n search(key);\n });\n return Array.from(new Set(allKey));\n};\n\n/**\n * 通过选择的所有根节点向上查找需选中的父节点\n * @param treeData 完整树结构\n * @param selectedRootKeys 已选择根节点\n * @returns\n */\nexport const getRealCheckListKey = (\n treeData: DataNode[],\n selectedRootKeys: Array<DataNode[\"key\"]>\n): Array<DataNode[\"key\"]> => {\n const selectedAllKeys: Array<DataNode[\"key\"]> = selectedRootKeys;\n treeData.forEach((item: DataNode) => {\n if (item.children?.length) {\n getRealCheckListKey(item.children, selectedAllKeys);\n item.children.every((childItem: Record<string, any>) =>\n selectedAllKeys.includes(childItem.key)\n )\n ? selectedAllKeys.push(item.key)\n : null;\n }\n });\n return Array.from(new Set(selectedAllKeys));\n};\n\n/**\n * 获取当前树所有根节点,将其塞入Set集合中\n * @param treeData 完整树结构\n * @returns\n */\nexport const getTreeDataAllRootKeysSet = (\n treeData: DataNode[]\n): Set<DataNode[\"key\"]> => {\n const allKeys: Array<DataNode[\"key\"]> = [];\n treeData.forEach((item: DataNode) => {\n if (item.children?.length) {\n allKeys.push(...getTreeDataAllRootKeysSet(item.children));\n } else {\n allKeys.push(item.key);\n }\n });\n return new Set(allKeys);\n};\n\n/**\n * 对目标数据过滤出所有跟节点\n * @param selectedKeys 已选中key数组\n * @param allRootKeySet 所有根节点集合\n * @returns\n */\nexport const getRootKeys = (\n selectedKeys: Array<DataNode[\"key\"]>,\n allRootKeySet: Set<DataNode[\"key\"]>\n): Array<DataNode[\"key\"]> => {\n return selectedKeys.filter((item) => allRootKeySet.has(item));\n};\n\n/**\n * 将扁平化后的树重组为一颗完整的树\n * @param treeList 扁平化的树\n * @returns\n */\nexport function arrayToTree(treeList: DataNode[]): treeDataType[\"treeData\"] {\n const res: treeDataType[\"treeData\"] = [];\n // 将parent_id抽离出来便于后期通过id查询对应数据\n const map = treeList.reduce((res, item) => ((res[item.key] = item), res), {});\n for (const item of treeList) {\n if (!item.parentId) {\n res.push(item as any);\n continue;\n }\n // 判断父节点是否存在列表中\n if (item.parentId in map) {\n // 获取父节点数据\n const parent = map[item.parentId];\n // 判断父节点数据是否存在子任务,没有则进行初始化\n parent.children = parent.children || [];\n // 将数据推入父节点中\n parent.children.push(item);\n }\n }\n return res;\n}\n\n/**\n * 返回当前树所有节点key\n * @param treeData 树型数据源\n * @returns\n */\nexport function getTreeDataAllKey(\n treeData: DataNode[]\n): Array<DataNode[\"key\"]> {\n const arr: Array<DataNode[\"key\"]> = [];\n treeData.map((i: DataNode) => {\n if (i.children) {\n arr.push(...getTreeDataAllKey(i.children));\n }\n arr.push(i.key);\n });\n return arr;\n}\n\n/**\n * 通过选中根节点创建一颗新的树\n * @param selectedRootKeys 选中根节点\n * @param sonParMap // 父子映射表\n * @param flatArray // 扁平后的树\n * @returns\n */\nexport function createNewTreeData(\n selectedRootKeys: Array<DataNode[\"key\"]>,\n sonParMap: Map<DataNode[\"key\"], DataNode[\"key\"] | null>,\n flatArray: DataNode[]\n): treeDataType[\"treeData\"] {\n // 得到子级的key 和 半选状态的 父级的key 用于重组数组\n const rightAllKey = searchAllParents(selectedRootKeys, sonParMap);\n // 得到选中的key 所对应的节点\n const selectNode = flatArray.filter(({ key }) => rightAllKey.includes(key));\n // 重组树形数据结构\n return arrayToTree(cloneDeep(selectNode));\n}\n","import React, { ReactNode, useContext, createContext } from \"react\";\n\nimport useTreeShuttle from \"./useTreeShuttle\";\ntype contextType = ReturnType<typeof useTreeShuttle>;\nconst TreeShuttleContext = createContext<contextType | undefined>(undefined);\n\ninterface TreeProviderProps {\n children: ReactNode;\n value: any;\n}\nfunction TreeProvider({ children, value }: TreeProviderProps) {\n return (\n <TreeShuttleContext.Provider value={value}>\n {children}\n </TreeShuttleContext.Provider>\n );\n}\n\nfunction useTreeContext() {\n return useContext(TreeShuttleContext);\n}\n\nexport { TreeProvider, useTreeContext };\n","import React, { FC, useMemo, useState, useEffect } from \"react\";\n\nimport shareStyle from \"./share.module.css\";\n\nimport { Checkbox, Input, Tree } from \"antd\";\nconst { Search } = Input;\nimport { traverseTreeData, searchTree, getRootKeys } from \"./tool\";\nimport { useTreeContext } from \"./useTreeContext\";\nimport { cloneDeep } from \"lodash\";\nimport { DataNode } from \"rc-tree-select/lib/interface\";\nimport { treeDataType } from \"./interfaceType\";\n\nexport interface shuttleLeftProps {\n handleChange?: (value: string[]) => void;\n showSearch?: boolean;\n titles?: string[];\n defaultExpandAll?: boolean;\n shownumItem?: boolean;\n}\n\nconst TreeShuttleBoxLeft: FC<shuttleLeftProps> = ({\n showSearch,\n defaultExpandAll,\n titles,\n shownumItem,\n}) => {\n const {\n checkListLeft,\n dataSourceLeft,\n readOnlyAllKeyLeft,\n setCheckListLeft,\n setIsBrightRight,\n dataSource,\n setDataSourceLeft,\n allRootKeySet,\n } = useTreeContext();\n const [indeterminate, setIndeterminate] = useState<boolean>(false); // 控制半选\n const [checkAll, setCheckAll] = useState<boolean>(false); // 控制全选\n const [searchText, setSearchText] = useState<string>(\"\"); // 用于搜索title\n const [finVal, setFinVal] = useState([]);\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchText(e.target.value.trim());\n };\n const handleSearchTree = (value: string) => {\n value = value.trim();\n let treeData: DataNode[] = cloneDeep(dataSource);\n if (value) {\n treeData = searchTree(value, cloneDeep(treeData));\n }\n traverseTreeData({\n treeData,\n callback(item) {\n item[\"disabled\"] = checkListLeft.includes(item.key);\n },\n });\n setDataSourceLeft({\n treeData,\n } as treeDataType);\n setSearchText(value);\n };\n\n const handleSelectNode = (keyArr: any) => {\n setCheckListLeft(keyArr);\n // 处理 to Right 高亮\n setIsBrightRight(!!keyArr.length);\n };\n const handleCheckBoxChange = (e: CheckboxChangeEvent) => {\n if (e.target.checked) {\n setCheckListLeft(readOnlyAllKeyLeft);\n setIsBrightRight(true);\n } else {\n setCheckListLeft([]);\n setIsBrightRight(false);\n }\n };\n const handleExpand = (e: any) => {\n setFinVal(e);\n };\n useEffect(() => {\n if (checkListLeft.length === 0) {\n setIndeterminate(false);\n setCheckAll(false);\n } else if (readOnlyAllKeyLeft.length === checkListLeft.length) {\n setCheckAll(true);\n setIndeterminate(false);\n } else {\n setCheckAll(false);\n setIndeterminate(true);\n }\n }, [checkListLeft]);\n\n useEffect(() => {\n if (defaultExpandAll) {\n setFinVal(readOnlyAllKeyLeft);\n } else {\n setFinVal([]);\n }\n }, [dataSource, defaultExpandAll]);\n\n return (\n <div className={shareStyle.CustomTransferBox}>\n <div className={shareStyle.CustomTransferHead}>\n <div className={shareStyle.CustomTransferHeadLeft}>\n {useMemo(\n () => (\n <Checkbox\n data-testid=\"leftCheckbox\"\n indeterminate={indeterminate}\n checked={checkAll}\n onChange={handleCheckBoxChange}\n />\n ),\n [indeterminate, checkAll, readOnlyAllKeyLeft]\n )}\n\n {useMemo(\n () =>\n shownumItem ? (\n <p className={shareStyle.selectCount}>\n {getRootKeys(checkListLeft, allRootKeySet).length}/\n {[...allRootKeySet].length}项\n </p>\n ) : null,\n [checkListLeft, allRootKeySet]\n )}\n </div>\n <div className={shareStyle.CustomTransferHeadRight}>{titles[0]}</div>\n </div>\n <div className={shareStyle.CustomTransferBody}>\n {showSearch && (\n <Search\n data-testid=\"leftSearch\"\n placeholder=\"请输入搜索内容\"\n value={searchText}\n onSearch={handleSearchTree}\n onChange={handleSearchChange}\n allowClear\n enterButton\n />\n )}\n\n <div className={shareStyle.CustomTransferTree}>\n {dataSourceLeft.treeData?.length > 0 && (\n <Tree\n data-testid=\"leftTree\"\n height={300}\n selectable={false}\n checkable\n checkedKeys={checkListLeft}\n onCheck={handleSelectNode}\n onExpand={handleExpand}\n treeData={dataSourceLeft.treeData}\n expandedKeys={finVal}\n />\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport { TreeShuttleBoxLeft };\n","import React, { FC, useState, useMemo, useEffect } from \"react\";\nimport shareStyle from \"./share.module.css\";\nimport { Checkbox, Input, Tree } from \"antd\";\nconst { Search } = Input;\nimport { useTreeContext } from \"./useTreeContext\";\nimport { createNewTreeData, getRootKeys, searchTree } from \"./tool\";\n\nimport { DataNode } from \"rc-tree-select/lib/interface\";\nimport { treeDataType } from \"./interfaceType\";\nexport interface TreeShuttleBoxRightPropsType {\n showSearch?: boolean;\n titles?: string[];\n defaultExpandAll?: boolean;\n shownumItem?: boolean;\n}\n\nconst TreeShuttleBoxRight: FC<TreeShuttleBoxRightPropsType> = ({\n showSearch,\n titles,\n shownumItem,\n}) => {\n const {\n dataSourceRight,\n checkListRight,\n readOnlyAllKeyRight,\n setDataSourceRight,\n flatArray,\n selectedRootKeys,\n sonParMap,\n setCheckListRight,\n setIsBrightLeft,\n allRootKeySet,\n } = useTreeContext();\n const [indeterminate, setIndeterminate] = useState<boolean>(false); // 控制半选\n const [checkAll, setCheckAll] = useState<boolean>(false); // 控制全选\n const [searchText, setSearchText] = useState<string>(\"\"); // 用于搜索title\n const [finVal, setFinVal] = useState([]);\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchText(e.target.value.trim());\n };\n const handleSearchTree = (value: string) => {\n value = value.trim();\n // 通过选中根节点创建一颗新的树\n let rightTreeData: DataNode[] = createNewTreeData(\n selectedRootKeys,\n sonParMap,\n flatArray\n );\n if (value) {\n rightTreeData = searchTree(value, rightTreeData);\n }\n setDataSourceRight({\n treeData: rightTreeData,\n } as treeDataType);\n setSearchText(value);\n };\n const handleSelectNode = (keyArr: any) => {\n setCheckListRight(keyArr);\n // 处理 to Right 高亮\n setIsBrightLeft(!!keyArr.length);\n };\n const handleCheckBoxChange = (e: CheckboxChangeEvent) => {\n if (e.target.checked) {\n setCheckListRight(readOnlyAllKeyRight);\n setIsBrightLeft(true);\n } else {\n setCheckListRight([]);\n setIsBrightLeft(false);\n }\n };\n const handleExpand = (e: any) => {\n setFinVal(e);\n };\n useEffect(() => {\n if (checkListRight.length === 0) {\n setIndeterminate(false);\n setCheckAll(false);\n } else if (readOnlyAllKeyRight.length === checkListRight.length) {\n setCheckAll(true);\n setIndeterminate(false);\n } else {\n setCheckAll(false);\n setIndeterminate(true);\n }\n }, [checkListRight]);\n useEffect(() => {\n if (readOnlyAllKeyRight.length !== 0) {\n setFinVal(readOnlyAllKeyRight);\n }\n }, [dataSourceRight]);\n return (\n <div className={shareStyle.CustomTransferBox}>\n <div className={shareStyle.CustomTransferHead}>\n <div className={shareStyle.CustomTransferHeadLeft}>\n {useMemo(\n () => (\n <Checkbox\n data-testid=\"rightCheckbox\"\n indeterminate={indeterminate}\n checked={checkAll}\n onChange={handleCheckBoxChange}\n />\n ),\n [indeterminate, checkAll, readOnlyAllKeyRight]\n )}\n {useMemo(\n () =>\n shownumItem ? (\n <p className={shareStyle.selectCount}>\n {getRootKeys(checkListRight, allRootKeySet).length}/\n {selectedRootKeys.length}项\n </p>\n ) : null,\n [selectedRootKeys, checkListRight, allRootKeySet]\n )}\n </div>\n <div className={shareStyle.CustomTransferHeadRight}>{titles[1]}</div>\n </div>\n <div className={shareStyle.CustomTransferBody}>\n {showSearch && (\n <Search\n data-testid=\"rightSearch\"\n placeholder=\"请输入搜索内容\"\n value={searchText}\n onSearch={handleSearchTree}\n onChange={handleSearchChange}\n allowClear\n enterButton\n />\n )}\n <div className={shareStyle.CustomTransferTree}>\n {dataSourceRight.treeData.length > 0 && (\n <Tree\n data-testid=\"rightTree\"\n height={300}\n selectable={false}\n checkable\n checkedKeys={checkListRight}\n onCheck={handleSelectNode}\n onExpand={handleExpand}\n treeData={dataSourceRight.treeData}\n expandedKeys={finVal}\n />\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport { TreeShuttleBoxRight };\n","import React, { useState } from \"react\";\nimport { treeDataType } from \"./interfaceType\";\nimport { DataNode } from \"rc-tree-select/lib/interface\";\n\nfunction useTreeShuttle() {\n const [sonParMap, setSonParMap] = useState<\n Map<DataNode[\"key\"], DataNode[\"key\"] | null>\n >(new Map()); // 保存子节点key和父节点key的Map,主要用于子级查找父级\n\n const [flatArray, setFlatArray] = useState<DataNode[]>([]); // 保存展平的树数据,用于重组树形结构\n\n // 左边的树形选择框\n const [checkListLeft, setCheckListLeft] = useState<Array<DataNode[\"key\"]>>(\n []\n ); // 存储左侧选择框选中的key\n\n const [isBrightLeft, setIsBrightLeft] = useState<boolean>(false); // 控制左侧按钮是否高亮\n\n const [readOnlyAllKeyLeft, setReadOnlyAllKeyLeft] = useState<\n Array<DataNode[\"key\"]>\n >([]); // readonly 左边全部的key\n\n const [dataSourceLeft, setDataSourceLeft] = useState<treeDataType>({\n treeData: [],\n }); // 左侧树形选择框的数据源\n\n // 右边的树形选择框\n const [checkListRight, setCheckListRight] = useState<Array<DataNode[\"key\"]>>(\n []\n ); // 存储在右侧选择框中的key\n\n const [dataSourceRight, setDataSourceRight] = useState<treeDataType>({\n treeData: [],\n }); // 右侧树形选择框的数据源\n\n const [readOnlyAllKeyRight, setReadOnlyAllKeyRight] = useState<\n Array<DataNode[\"key\"]>\n >([]); // 右侧所有的key\n\n const [isBrightRight, setIsBrightRight] = useState<boolean>(false); // 控制右侧按钮是否高亮\n\n const [selectedRootKeys, setSelectedRootKeys] = useState<\n Array<DataNode[\"key\"]>\n >([]); // 右侧只读的树形数据,主要用于搜索\n\n const [allRootKeySet, setAllRootKeySet] = useState<Set<DataNode[\"key\"]>>(\n new Set()\n ); // 右侧只读的树形数据,主要用于搜索\n\n const [dataSource, setDataSource] = useState<treeDataType[\"treeData\"]>([]); // 初始数据源\n\n return {\n setReadOnlyAllKeyRight,\n setReadOnlyAllKeyLeft,\n setCheckListRight,\n setIsBrightLeft,\n setDataSourceRight,\n setIsBrightRight,\n setCheckListLeft,\n setSonParMap,\n setFlatArray,\n setDataSourceLeft,\n setSelectedRootKeys,\n setAllRootKeySet,\n dataSource,\n setDataSource,\n checkListLeft,\n checkListRight,\n dataSourceRight,\n dataSourceLeft,\n flatArray,\n sonParMap,\n isBrightLeft,\n isBrightRight,\n readOnlyAllKeyRight,\n readOnlyAllKeyLeft,\n selectedRootKeys,\n allRootKeySet,\n };\n}\n\nexport default useTreeShuttle;\n","import React, { ReactNode, FC, useEffect } from \"react\";\nimport {\n TreeShuttleBoxLeft,\n TreeShuttleBoxRight,\n TreeShuttleButton,\n TreeShuttleBoxRightPropsType,\n shuttleLeftProps,\n TreeShuttleButtonProps,\n} from \"./index\";\nimport { TreeProvider } from \"./useTreeContext\";\nimport useTreeShuttle from \"./useTreeShuttle\";\nimport {\n flatTree,\n getRealCheckListKey,\n getRootKeys,\n getTreeDataAllKey,\n getTreeDataAllRootKeysSet,\n traverseTreeData,\n} from \"./tool\";\n\nimport { cloneDeep } from \"lodash\";\nimport { DataNode } from \"rc-tree-select/lib/interface\";\nimport { treeDataType } from \"./interfaceType\";\ninterface TreeShuttleBoxType {\n ({\n children,\n selectedKeys,\n treeData,\n replaceFields,\n }: {\n children: ReactNode;\n selectedKeys?: Array<string>;\n treeData?: DataNode[];\n replaceFields: { key: string; title: string };\n }): JSX.Element;\n TreeShuttleBoxLeft: FC<shuttleLeftProps>;\n TreeShuttleBoxRight: FC<TreeShuttleBoxRightPropsType>;\n TreeShuttleButton: FC<TreeShuttleButtonProps>;\n}\n\nconst TreeShuttleBox: TreeShuttleBoxType = ({\n children,\n selectedKeys = [],\n treeData = [],\n replaceFields,\n}) => {\n const {\n setAllRootKeySet,\n setDataSource,\n setSelectedRootKeys,\n setDataSourceLeft,\n setFlatArray,\n setSonParMap,\n setCheckListLeft,\n setIsBrightRight,\n setReadOnlyAllKeyLeft,\n ...rest\n } = useTreeShuttle();\n useEffect(() => {\n // 遍历树形数据设置parentId\n const sonParMap: Map<DataNode[\"key\"], DataNode[\"key\"] | null> = new Map();\n traverseTreeData({\n treeData,\n callback(item, parentId) {\n item.key = item[replaceFields.key];\n item.title = item[replaceFields.title];\n item.parentId = parentId;\n sonParMap.set(item.key, item.parentId);\n },\n });\n setSonParMap(sonParMap);\n setDataSource(cloneDeep(treeData) as treeDataType[\"treeData\"]);\n const _treeData = cloneDeep(treeData);\n const allRootKeySet: Set<DataNode[\"key\"]> =\n getTreeDataAllRootKeysSet(_treeData);\n setAllRootKeySet(allRootKeySet);\n const selectedRootKeys = getRootKeys(selectedKeys, allRootKeySet);\n setSelectedRootKeys(selectedRootKeys);\n\n setDataSourceLeft({ treeData: _treeData } as treeDataType);\n\n // 将树扁平化\n // 将所以树形数据拉平,为后续组装右侧的树形树形使用\n const flatArray = flatTree({\n treeData: cloneDeep(treeData),\n } as treeDataType);\n setFlatArray(flatArray);\n\n // 左侧选中项\n const checkListLeft = getRealCheckListKey(\n treeData,\n cloneDeep(selectedRootKeys)\n );\n setCheckListLeft(checkListLeft);\n\n const readOnlyAllKeyLeft = getTreeDataAllKey(treeData);\n setReadOnlyAllKeyLeft(readOnlyAllKeyLeft);\n setIsBrightRight(true);\n }, [treeData, replaceFields, selectedKeys]);\n return (\n <TreeProvider\n value={{\n setAllRootKeySet,\n setDataSource,\n setSelectedRootKeys,\n setDataSourceLeft,\n setFlatArray,\n setSonParMap,\n setCheckListLeft,\n setIsBrightRight,\n ...rest,\n }}\n >\n {children}\n </TreeProvider>\n );\n};\nTreeShuttleBox.TreeShuttleBoxLeft = TreeShuttleBoxLeft;\nTreeShuttleBox.TreeShuttleBoxRight = TreeShuttleBoxRight;\nTreeShuttleBox.TreeShuttleButton = TreeShuttleButton;\n\nexport default TreeShuttleBox;\n","import React, { FC, useMemo, useEffect } from \"react\";\nimport shareStyle from \"./share.module.css\";\nimport { RightOutlined, LeftOutlined } from \"@ant-design/icons\";\nimport { useTreeContext } from \"./useTreeContext\";\nimport {\n traverseTreeData,\n getRootKeys,\n getRealCheckListKey,\n createNewTreeData,\n getTreeDataAllKey,\n} from \"./tool\";\nimport { Button } from \"antd\";\nimport { cloneDeep, difference } from \"lodash\";\nimport { DataNode } from \"rc-tree-select/lib/interface\";\n\nexport interface TreeShuttleButtonProps {\n handleChange: (value: Array<DataNode[\"key\"]>) => void;\n}\n\nconst TreeShuttleButton: FC<TreeShuttleButtonProps> = ({ handleChange }) => {\n const {\n checkListLeft,\n checkListRight,\n flatArray,\n sonParMap,\n dataSourceLeft,\n isBrightRight,\n isBrightLeft,\n readOnlyAllKeyLeft,\n readOnlyAllKeyRight,\n selectedRootKeys,\n allRootKeySet,\n setDataSourceRight,\n setIsBrightLeft,\n setSelectedRootKeys,\n setDataSourceLeft,\n setIsBrightRight,\n dataSource,\n setCheckListLeft,\n setCheckListRight,\n setReadOnlyAllKeyRight,\n } = useTreeContext();\n const handleClickToRight = () => {\n if (!checkListLeft.length && !isBrightRight) {\n return;\n }\n // 右树处理\n const selectedRootKeys = getRootKeys(checkListLeft, allRootKeySet);\n setSelectedRootKeys(selectedRootKeys);\n\n const rightTreeData = createNewTreeData(\n selectedRootKeys,\n sonParMap,\n flatArray\n );\n setDataSourceRight({ treeData: rightTreeData });\n const readOnlyAllKeyRight = getTreeDataAllKey(rightTreeData);\n setReadOnlyAllKeyRight(readOnlyAllKeyRight);\n setCheckListRight([]);\n\n // 左树处理\n const treeData_ = cloneDeep(dataSourceLeft.treeData);\n traverseTreeData({\n treeData: treeData_,\n callback(item) {\n item[\"disabled\"] = checkListLeft.includes(item.key);\n },\n });\n setDataSourceLeft({\n treeData: treeData_,\n });\n setIsBrightRight(false);\n handleChange(selectedRootKeys);\n };\n\n const handleClickToLeft = () => {\n if (!checkListRight.length && !isBrightLeft) {\n return;\n }\n // 右树处理\n const rightSelectedRootKeys = getRootKeys(checkListRight, allRootKeySet);\n const newSelectedRootKeys = difference(\n selectedRootKeys,\n rightSelectedRootKeys\n );\n setSelectedRootKeys(newSelectedRootKeys);\n\n const rightTreeData = createNewTreeData(\n newSelectedRootKeys,\n sonParMap,\n flatArray\n );\n setDataSourceRight({ treeData: rightTreeData });\n const readOnlyAllKeyRight = getTreeDataAllKey(rightTreeData);\n setReadOnlyAllKeyRight(readOnlyAllKeyRight);\n setCheckListRight([]);\n\n // 左树处理\n const leftTreeData = cloneDeep(dataSource);\n const checkListLeft = getRealCheckListKey(\n leftTreeData,\n cloneDeep(newSelectedRootKeys)\n );\n setCheckListLeft(checkListLeft);\n traverseTreeData({\n treeData: leftTreeData,\n callback(item) {\n item[\"disabled\"] = checkListLeft.includes(item.key);\n },\n });\n setDataSourceLeft({\n treeData: leftTreeData,\n });\n setIsBrightLeft(false);\n handleChange(newSelectedRootKeys);\n };\n\n useEffect(() => {\n handleClickToRight();\n }, [dataSource]);\n\n return (\n <div className={shareStyle.CustomTransferButtonBox}>\n {useMemo(\n () => (\n <Button\n data-testid=\"rightButton\"\n className={`${shareStyle.CustomTransferButton}`}\n onClick={handleClickToRight}\n disabled={!isBrightRight}\n type={isBrightRight ? \"primary\" : \"default\"}\n >\n <RightOutlined\n className={\n isBrightRight\n ? shareStyle.iconColorActive\n : shareStyle.iconColor\n }\n />\n </Button>\n ),\n [isBrightRight, checkListLeft, readOnlyAllKeyLeft, readOnlyAllKeyRight]\n )}\n {useMemo(\n () => (\n <Button\n data-testid=\"leftButton\"\n className={`${shareStyle.CustomTransferButton}`}\n onClick={handleClickToLeft}\n disabled={!isBrightLeft}\n type={isBrightLeft ? \"primary\" : \"default\"}\n >\n <LeftOutlined\n className={\n isBrightLeft ? shareStyle.iconColorActive : shareStyle.iconColor\n }\n />\n </Button>\n ),\n [isBrightLeft, checkListRight, readOnlyAllKeyLeft, readOnlyAllKeyRight]\n )}\n </div>\n );\n};\n\nexport { TreeShuttleButton };\n","import React from \"react\";\nimport TreeShuttleBox from \"./treeShuttleBox/TreeShuttleBox\";\nimport shareStyle from \"./treeShuttleBox/share.module.css\";\nimport { DataNode } from \"rc-tree-select/lib/interface\";\ninterface TreeTransferProps {\n dataSource: DataNode[];\n selectedKeys?: string[];\n listStyle?: React.CSSProperties;\n showSearch?: boolean;\n defaultExpandAll?: boolean;\n titles?: string[];\n shownumItem?: boolean;\n replaceFields?: { key: string; title: string };\n handleChange: (targetKeys: Array<DataNode[\"key\"]>) => void;\n}\nexport function TreeTransfer(props: TreeTransferProps): React.ReactElement {\n const {\n dataSource,\n selectedKeys = [],\n showSearch = false,\n shownumItem = true,\n titles = [],\n defaultExpandAll,\n replaceFields,\n handleChange,\n } = props;\n\n return (\n <div className={shareStyle.TreeShuttleBox} style={props.listStyle}>\n <TreeShuttleBox\n selectedKeys={selectedKeys}\n treeData={dataSource}\n replaceFields={replaceFields}\n >\n <TreeShuttleBox.TreeShuttleBoxLeft\n showSearch={showSearch}\n titles={titles}\n shownumItem={shownumItem}\n defaultExpandAll={defaultExpandAll}\n />\n <TreeShuttleBox.TreeShuttleButton handleChange={handleChange} />\n <TreeShuttleBox.TreeShuttleBoxRight\n showSearch={showSearch}\n titles={titles}\n shownumItem={shownumItem}\n defaultExpandAll={defaultExpandAll}\n />\n </TreeShuttleBox>\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 { TreeTransfer } from \"./TreeTransfer\";\nimport { DataNode } from \"rc-tree-select/lib/interface\";\n\n/**\n * @id presentational-bricks.tree-transfer\n * @author weili\n * @history\n * 1.x.0: 新增构件 `presentational-bricks.tree-transfer`\n * @docKind brick\n * @noInheritDoc\n */\nexport class TreeTransferElement extends UpdatingElement {\n /**\n * @kind any[]\n * @required true\n * @default -\n * @description 数据源,其中的数据将会被渲染到左边一栏中\n */\n @property({ attribute: false })\n dataSource: any[];\n\n /**\n * @kind string[]\n * @required false\n * @default -\n * @description 显示在右侧框数据的 key 集合\n */\n @property({ attribute: false })\n selectedKeys: string[] = [];\n\n /**\n * @kind CSSProperties\n * @required false\n * @default -\n * @description 整个穿梭框的自定义样式,常用来设置宽高\n */\n @property({ attribute: false })\n listStyle: React.CSSProperties;\n\n /**\n * @kind boolean\n * @required false\n * @default false\n * @description 是否显示搜索框\n */\n @property({ type: Boolean })\n showSearch: boolean;\n\n /**\n * @kind [string, string]\n * @required false\n * @default -\n * @description 标题集合,顺序从左至右\n * @group advanced\n */\n @property({ attribute: false })\n titles: string[];\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 是否展示所选项\n * @group advanced\n */\n @property({ attribute: false })\n shownumItem: boolean;\n\n /**\n * @kind { key: string, title: string }\n * @required false\n * @default -\n * @description dataSource中数值,key为值,title为展示文本,默认为{key:\"key\",title:\"title\"}\n * @group advanced\n */\n @property({ attribute: false })\n replaceFields: { key: string; title: string } = {\n key: \"key\",\n title: \"title\",\n };\n\n /**\n * @detail string[]\n * @description 右侧框数据的 key 集合\n */\n @event({ type: \"general.transfer.change\" })\n generalTransferChange: EventEmitter<Array<DataNode[\"key\"]>>;\n\n /**\n * @kind boolean\n * @required false\n * @default true\n * @description 默认展开所有树节点\n */\n @property({ attribute: false })\n defaultExpandAll = 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 handleChange = (targetKeys: Array<DataNode[\"key\"]>): void => {\n this.generalTransferChange.emit(targetKeys);\n };\n\n protected _render(): void {\n if (this.isConnected && this.dataSource) {\n ReactDOM.render(\n <BrickWrapper>\n <TreeTransfer\n selectedKeys={this.selectedKeys}\n dataSource={this.dataSource}\n listStyle={this.listStyle}\n showSearch={this.showSearch}\n titles={this.titles}\n shownumItem={this.shownumItem}\n replaceFields={this.replaceFields}\n handleChange={this.handleChange}\n defaultExpandAll={this.defaultExpandAll}\n />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.tree-transfer\",\n TreeTransferElement\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!./BannerDisplayCardList.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_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { isEmpty } from \"lodash\";\nimport styles from \"./BannerDisplayCardList.module.css\";\n\nexport interface CardItem {\n title?: string;\n content?: string;\n optionConf?: { useBrick: UseBrickConf };\n green?: boolean;\n}\n\ninterface BannerDisplayCardListProps {\n cardList: CardItem[];\n}\n\nexport function BannerDisplayCardList({\n cardList = [],\n}: BannerDisplayCardListProps): React.ReactElement {\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n\n return (\n <div className={styles.cardWrapper} data-testid=\"card-wrapper\">\n {cardList.map((card: CardItem, index) => (\n <div className={styles.cardContent} key={card.title}>\n <h5>\n {card.title}\n <div\n className={styles.cardIcon}\n style={card.green ? { background: \"#20B759\" } : {}}\n >\n {index + 1}\n </div>\n </h5>\n <section>{card.content}</section>\n {!isEmpty(card.optionConf?.useBrick) && (\n <BrickAsComponent\n useBrick={card.optionConf?.useBrick}\n data={card}\n ></BrickAsComponent>\n )}\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 { BannerDisplayCardList, CardItem } from \"./BannerDisplayCardList\";\n\n/**\n * @id presentational-bricks.banner-display-card-list\n * @author dophjing\n * @history\n * 1.x.0: 新增构件 `presentational-bricks.banner-display-card-list`\n * @docKind brick\n * @noInheritDoc\n */\nexport class BannerDisplayCardListElement extends UpdatingElement {\n /**\n * @kind CardItem[]\n * @required true\n * @default -\n * @description 列表数据\n */\n @property({\n attribute: false,\n })\n cardList: CardItem[];\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 <BannerDisplayCardList cardList={this.cardList} />\n </BrickWrapper>,\n this\n );\n }\n }\n}\n\ncustomElements.define(\n \"presentational-bricks.banner-display-card-list\",\n BannerDisplayCardListElement\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==\"","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"8XRh\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"8oxB\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"9kay\");","// 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, \".wrapper--3oQirxLX .ant-tag {\\n cursor: pointer;\\n }\\n\\n.tag--jIE1lppF {\\n font-size: 12px;\\n font-weight: normal;\\n padding: 1px 12px;\\n border: 1px solid;\\n border-radius: 6px;\\n}\\n\\n.round--3Tka3pkI {\\n border-radius: 12px;\\n}\\n\\n.customTag--zd-qDjHi {\\n padding: 0 9px;\\n}\\n\\n.unknownError--3y8nxQho {\\n color: red;\\n}\\n\\n.wrapIconText--3lKxbRLf {\\n display: flex;\\n align-items: center;\\n}\\n\\n.wrapIconText--3lKxbRLf .anticon {\\n vertical-align: middle;\\n }\\n\\n/* 蓝湖多彩标签设计:https://lanhuapp.com/web/#/item/project/board/detail?pid=08ef7a67-b5e6-4aee-8b6d-6999377c4fdb&project_id=08ef7a67-b5e6-4aee-8b6d-6999377c4fdb&image_id=d55e4e48-327e-4f79-86da-191da1862a7e */\\n.grayTag--1hByzYHT {\\n background-color: var(--tag-gray-background) !important;\\n}\\n.grayTag--1hByzYHT {\\n color: var(--tag-gray-color);\\n}\\n\\n.grayInverseTag--2eTKV_tp {\\n background: var(--tag-gray-inverse-color) !important;\\n}\\n\\n.grayInverseTag--2eTKV_tp {\\n color: var(--tag-inverse-text-color);\\n}\\n\\nhtml[data-theme=\\\"dark\\\"] .grayTag--1hByzYHT {\\n border: 1px solid rgba(255,255,255,0.2) !important;\\n }\\n\\n.colorTag--yiTUHdyB {\\n font-family: PingFangSC-Medium, PingFang SC;\\n font-weight: 500;\\n}\\n\\n.colorTag--yiTUHdyB.ant-tag-has-color {\\n font-weight: 400;\\n }\\n\\n.textEllipsis--5X21HuIA {\\n max-width: 100%;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"wrapper\": \"wrapper--3oQirxLX\",\n\t\"tag\": \"tag--jIE1lppF\",\n\t\"round\": \"round--3Tka3pkI\",\n\t\"customTag\": \"customTag--zd-qDjHi\",\n\t\"unknownError\": \"unknownError--3y8nxQho\",\n\t\"wrapIconText\": \"wrapIconText--3lKxbRLf\",\n\t\"grayTag\": \"grayTag--1hByzYHT\",\n\t\"grayInverseTag\": \"grayInverseTag--2eTKV_tp\",\n\t\"colorTag\": \"colorTag--yiTUHdyB\",\n\t\"textEllipsis\": \"textEllipsis--5X21HuIA\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"tYg3\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"ACCw\");","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"CH3K\");","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","import { get } from \"lodash\";\n\nexport function getTemplateFromMap(map: Record<string, string>, key: string) {\n return map[key] || map[\"default\"];\n}\n\nexport function parseTemplate(\n template: string,\n data: Record<string, any>,\n skipUndefined = false\n) {\n return template.replace(\n /#{([A-Za-z_$][\\w$]*(?:(?:\\.[A-Za-z_$][\\w$]*)|(?:\\[[0-9]+\\]))*)}/g,\n (match: string, key: string) => {\n const value = get(data, key);\n\n return value === undefined\n ? skipUndefined === true\n ? match\n : \"\"\n : value;\n }\n );\n}\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\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, \".TreeShuttleBox--1QA911W- {\\n display: flex;\\n justify-content: space-around;\\n align-items: center;\\n}\\n.CustomTransferBox--2aPz4kgK {\\n flex: 1;\\n background: #ffffff;\\n border: 1px solid #dddddd;\\n border-radius: 5px;\\n}\\n.CustomTransferButtonBox--1tTigzbg {\\n width: 24px;\\n margin: 0 24px;\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n.iconColor--3Iil8n3x {\\n color: rgba(0, 0, 0, 0.25);\\n}\\n.iconColorActive--Z5gVjznp {\\n color: #ffffff;\\n}\\n.CustomTransferButton--2Fmor2Sy {\\n width: 23px;\\n height: 23px;\\n /* background: rgba(0, 0, 0, 0.04); */\\n border: 1px solid rgba(0, 0, 0, 0.15);\\n border-radius: 3px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n cursor: pointer;\\n}\\n.CustomTransferButton--2Fmor2Sy + .CustomTransferButton--2Fmor2Sy {\\n margin-top: 12px;\\n }\\n.CustomTransferHead--1hxert3w {\\n height: 39px;\\n border-bottom: 1px solid #dddddd;\\n padding: 13px 0 12px 8px;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n}\\n.CustomTransferHeadLeft--2_nQ1Cxh {\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n line-height: 14px;\\n}\\n.CustomTransferHeadRight--BL2Bh7rg {\\n padding: 0 16px 0 0;\\n}\\n.selectCount--3Vnyjt55 {\\n font-size: 12px;\\n font-family: Helvetica, Helvetica-Regular;\\n font-weight: 400;\\n text-align: left;\\n color: #555555;\\n padding: 0;\\n margin: 0 0 0 8px;\\n}\\n.CustomTransferBody--2W_N-HIX {\\n padding: 8px;\\n}\\n.CustomTransferTree--2gwMF5nG {\\n height: 300px;\\n overflow: auto;\\n margin-top: 6px;\\n}\\n/* 最多显示两行,超过就隐藏 */\\n.CustomTransferTree--2gwMF5nG .ant-tree-title--34syBc9J {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 2;\\n -webkit-box-orient: vertical;\\n word-break: break-all;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"TreeShuttleBox\": \"TreeShuttleBox--1QA911W-\",\n\t\"CustomTransferBox\": \"CustomTransferBox--2aPz4kgK\",\n\t\"CustomTransferButtonBox\": \"CustomTransferButtonBox--1tTigzbg\",\n\t\"iconColor\": \"iconColor--3Iil8n3x\",\n\t\"iconColorActive\": \"iconColorActive--Z5gVjznp\",\n\t\"CustomTransferButton\": \"CustomTransferButton--2Fmor2Sy\",\n\t\"CustomTransferHead\": \"CustomTransferHead--1hxert3w\",\n\t\"CustomTransferHeadLeft\": \"CustomTransferHeadLeft--2_nQ1Cxh\",\n\t\"CustomTransferHeadRight\": \"CustomTransferHeadRight--BL2Bh7rg\",\n\t\"selectCount\": \"selectCount--3Vnyjt55\",\n\t\"CustomTransferBody\": \"CustomTransferBody--2W_N-HIX\",\n\t\"CustomTransferTree\": \"CustomTransferTree--2gwMF5nG\",\n\t\"ant-tree-title\": \"ant-tree-title--34syBc9J\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"ExA7\");","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n /**\n * TAB\n */\n TAB: 9,\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n // NUMLOCK on FF/Safari Mac\n /**\n * ENTER\n */\n ENTER: 13,\n /**\n * SHIFT\n */\n SHIFT: 16,\n /**\n * CTRL\n */\n CTRL: 17,\n /**\n * ALT\n */\n ALT: 18,\n /**\n * PAUSE\n */\n PAUSE: 19,\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n /**\n * ESC\n */\n ESC: 27,\n /**\n * SPACE\n */\n SPACE: 32,\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n // also NUM_NORTH_EAST\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n // also NUM_SOUTH_EAST\n /**\n * END\n */\n END: 35,\n // also NUM_SOUTH_WEST\n /**\n * HOME\n */\n HOME: 36,\n // also NUM_NORTH_WEST\n /**\n * LEFT\n */\n LEFT: 37,\n // also NUM_WEST\n /**\n * UP\n */\n UP: 38,\n // also NUM_NORTH\n /**\n * RIGHT\n */\n RIGHT: 39,\n // also NUM_EAST\n /**\n * DOWN\n */\n DOWN: 40,\n // also NUM_SOUTH\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n /**\n * INSERT\n */\n INSERT: 45,\n // also NUM_INSERT\n /**\n * DELETE\n */\n DELETE: 46,\n // also NUM_DELETE\n /**\n * ZERO\n */\n ZERO: 48,\n /**\n * ONE\n */\n ONE: 49,\n /**\n * TWO\n */\n TWO: 50,\n /**\n * THREE\n */\n THREE: 51,\n /**\n * FOUR\n */\n FOUR: 52,\n /**\n * FIVE\n */\n FIVE: 53,\n /**\n * SIX\n */\n SIX: 54,\n /**\n * SEVEN\n */\n SEVEN: 55,\n /**\n * EIGHT\n */\n EIGHT: 56,\n /**\n * NINE\n */\n NINE: 57,\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n // needs localization\n /**\n * A\n */\n A: 65,\n /**\n * B\n */\n B: 66,\n /**\n * C\n */\n C: 67,\n /**\n * D\n */\n D: 68,\n /**\n * E\n */\n E: 69,\n /**\n * F\n */\n F: 70,\n /**\n * G\n */\n G: 71,\n /**\n * H\n */\n H: 72,\n /**\n * I\n */\n I: 73,\n /**\n * J\n */\n J: 74,\n /**\n * K\n */\n K: 75,\n /**\n * L\n */\n L: 76,\n /**\n * M\n */\n M: 77,\n /**\n * N\n */\n N: 78,\n /**\n * O\n */\n O: 79,\n /**\n * P\n */\n P: 80,\n /**\n * Q\n */\n Q: 81,\n /**\n * R\n */\n R: 82,\n /**\n * S\n */\n S: 83,\n /**\n * T\n */\n T: 84,\n /**\n * U\n */\n U: 85,\n /**\n * V\n */\n V: 86,\n /**\n * W\n */\n W: 87,\n /**\n * X\n */\n X: 88,\n /**\n * Y\n */\n Y: 89,\n /**\n * Z\n */\n Z: 90,\n /**\n * META\n */\n META: 91,\n // WIN_KEY_LEFT\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n /**\n * F1\n */\n F1: 112,\n /**\n * F2\n */\n F2: 113,\n /**\n * F3\n */\n F3: 114,\n /**\n * F4\n */\n F4: 115,\n /**\n * F5\n */\n F5: 116,\n /**\n * F6\n */\n F6: 117,\n /**\n * F7\n */\n F7: 118,\n /**\n * F8\n */\n F8: 119,\n /**\n * F9\n */\n F9: 120,\n /**\n * F10\n */\n F10: 121,\n /**\n * F11\n */\n F11: 122,\n /**\n * F12\n */\n F12: 123,\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n // needs localization\n /**\n * DASH\n */\n DASH: 189,\n // needs localization\n /**\n * EQUALS\n */\n EQUALS: 187,\n // needs localization\n /**\n * COMMA\n */\n COMMA: 188,\n // needs localization\n /**\n * PERIOD\n */\n PERIOD: 190,\n // needs localization\n /**\n * SLASH\n */\n SLASH: 191,\n // needs localization\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n // needs localization\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n // needs localization\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n // needs localization\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n // needs localization\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n // needs localization\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n // Firefox (Gecko) fires this for the meta key instead of 91\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n if (e.altKey && !e.ctrlKey || e.metaKey ||\n // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n }\n\n // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n default:\n return true;\n }\n },\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n }\n\n // Safari sends zero key code for non-latin characters.\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n default:\n return false;\n }\n }\n};\nvar _default = KeyCode;\nexports.default = _default;","// 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, \".searchBtn--3EpJfaS5 {\\n color: var(--color-secondary-text);\\n background-image: none;\\n z-index: 1;\\n}\\n .searchBtn--3EpJfaS5:hover,\\n .searchBtn--3EpJfaS5:focus {\\n color: var(--color-normal-text);\\n }\\n\\n.searchInputContainer--32fPXe_H {\\n display: inline-block;\\n position: relative;\\n}\\n\\n.searchInputContainer--32fPXe_H > .searchInput--1iiWvxOv {\\n padding-left: 12px;\\n padding-right: 36px;\\n border-radius: 3px;\\n min-width: 220px;\\n }\\n\\n.searchInputContainer--32fPXe_H > .searchBtn--3EpJfaS5 {\\n position: absolute;\\n right: 0;\\n top: 0;\\n }\\n\\n.searchInputContainer--32fPXe_H > .searchBtn--3EpJfaS5:not(.ant-btn-circle) {\\n border-radius: 0 6px 6px 0;\\n }\\n\\n.largeSearchInputContainer--1mpDCGQl .ant-btn:not(.ant-btn-circle):not(\\n .ant-btn-circle-outline\\n ).ant-btn-icon-only {\\n padding-right: 20px;\\n padding-left: 20px;\\n width: 58px;\\n }\\n\\n.largeSearchInputContainer--1mpDCGQl .ant-input-clear-icon {\\n margin-right: 22px;\\n }\\n\\n.roundSearchInputContainer--jZINvV1r > .searchInput--1iiWvxOv {\\n border-radius: 37px;\\n }\\n\\n.roundSearchInputContainer--jZINvV1r > .searchBtn--3EpJfaS5 {\\n position: absolute;\\n right: 6px;\\n top: 4px;\\n }\\n\\n.roundSmallSearchInputContainer--1SbA_Ok- > .searchBtn--3EpJfaS5 {\\n right: 3px;\\n top: 1.5px;\\n width: 20px;\\n height: 20px;\\n font-size: 12px;\\n }\\n\\n.roundExtraLargeInputContainer--RNenfTya > .searchInput--1iiWvxOv {\\n height: 56px;\\n padding-left: 30px;\\n }\\n\\n.roundExtraLargeInputContainer--RNenfTya > .searchInput--1iiWvxOv .ant-input-clear-icon {\\n margin-right: 22px;\\n }\\n\\n.roundExtraLargeInputContainer--RNenfTya > .searchBtn--3EpJfaS5 {\\n height: 44px;\\n width: 44px;\\n top: 6px;\\n }\\n.selectSearchBox--2TxrIbKm {\\n width: 100%;\\n display: flex;\\n background: var(--color-fill-bg-container-1);\\n height: 56px;\\n border-radius: 37px;\\n}\\n.selectType--1wBf-IDn .ant-select-selector {\\n border-radius: 37px 0 0 37px !important;\\n height: 56px !important;\\n }\\n.selectType--1wBf-IDn .ant-select-selection-item {\\n padding-left: 10px !important;\\n line-height: 56px !important;\\n }\\n\\n.selectSearchInputContainer--2b_Dvi-j {\\n display: inline-block;\\n position: relative;\\n width: calc(100% - 120px);\\n}\\n\\n.selectSearchInputContainer--2b_Dvi-j > .searchInput--1iiWvxOv {\\n height: 56px;\\n padding-left: 12px;\\n padding-right: 48px;\\n border-radius: 0 37px 37px 0;\\n }\\n\\n.selectSearchInputContainer--2b_Dvi-j > .searchBtn--3EpJfaS5 {\\n position: absolute;\\n right: 12px;\\n top: 50%;\\n transform: translateY(-50%);\\n }\\n\\n.selectSearchInputContainer--2b_Dvi-j > .searchBtn--3EpJfaS5:not(.ant-btn-circle) {\\n border-radius: 0 6px 6px 0;\\n }\\n.searchBoxStyleTypeDefault--SMEI601n {\\n border: 1px solid #d9d9d9;\\n border-radius: 6px;\\n height: 40px;\\n}\\n.searchBoxStyleTypeDefault--SMEI601n .selectType--1wBf-IDn .ant-select-selector {\\n height: 40px !important;\\n }\\n.searchBoxStyleTypeDefault--SMEI601n .selectType--1wBf-IDn .ant-select-selection-item {\\n line-height: 40px !important;\\n }\\n.searchBoxStyleTypeDefault--SMEI601n .selectSearchInputContainer--2b_Dvi-j > .searchInput--1iiWvxOv {\\n height: 40px;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"searchBtn\": \"searchBtn--3EpJfaS5\",\n\t\"searchInputContainer\": \"searchInputContainer--32fPXe_H\",\n\t\"searchInput\": \"searchInput--1iiWvxOv\",\n\t\"largeSearchInputContainer\": \"largeSearchInputContainer--1mpDCGQl\",\n\t\"roundSearchInputContainer\": \"roundSearchInputContainer--jZINvV1r\",\n\t\"roundSmallSearchInputContainer\": \"roundSmallSearchInputContainer--1SbA_Ok-\",\n\t\"roundExtraLargeInputContainer\": \"roundExtraLargeInputContainer--RNenfTya\",\n\t\"selectSearchBox\": \"selectSearchBox--2TxrIbKm\",\n\t\"selectType\": \"selectType--1wBf-IDn\",\n\t\"selectSearchInputContainer\": \"selectSearchInputContainer--2b_Dvi-j\",\n\t\"searchBoxStyleTypeDefault\": \"searchBoxStyleTypeDefault--SMEI601n\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== \"string\") {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"IP2g\");","// 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, \".user--2wtuRwu- {\\n display: flex;\\n gap: 8px;\\n align-items: center;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"user\": \"user--2wtuRwu-\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:/8r5\"))(\"IYwU\");","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = useEvent;\nvar React = _interopRequireWildcard(require(\"react\"));\nfunction useEvent(callback) {\n var fnRef = React.useRef();\n fnRef.current = callback;\n var memoFn = React.useCallback(function () {\n var _fnRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n }, []);\n return memoFn;\n}","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"J4zp\");","\"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/presentational-bricks:XuQu\"))(\"JX7q\");","module.exports = DllOfAce;","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"Ji7U\");","// 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, \".cardList--2FrTuF9X .ant-list-items {\\n display: flex;\\n flex-wrap: wrap;\\n }\\n .cardList--2FrTuF9X .ant-list-item {\\n padding: 12px;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"cardList\": \"cardList--2FrTuF9X\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"KQm4\");","// 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, \".generalImage--K2aan9UV .ant-image {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n }\\n\\n.extraContainer--f_f21B2i {\\n margin-top: 15px;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"generalImage\": \"generalImage--K2aan9UV\",\n\t\"extraContainer\": \"extraContainer--f_f21B2i\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\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, \".descriptionItem--36ECPCfF .ant-descriptions-item-content {\\n word-break: break-word;\\n overflow-wrap: break-word;\\n padding-right: 16px;\\n }\\n .descriptionItem--36ECPCfF .ant-descriptions-item-content p {\\n margin: 0 0 15px 0;\\n }\\n.ant-descriptions-view {\\n overflow: initial;\\n}\\nhtml[data-ui=\\\"v8-2\\\"] .ant-descriptions-view {\\n padding-left: 0px;\\n padding-right: 0px;\\n}\\n.ant-descriptions-bordered .ant-descriptions-item-label {\\n background-color: rgba(240, 247, 255, 1);\\n }\\n.ant-descriptions-bordered .ant-descriptions-view {\\n overflow: initial;\\n padding-left: 0;\\n }\\n.descriptionList--1DSpufEg .ant-descriptions:nth-child(n):not(:last-child) {\\n margin-bottom: 24px;\\n padding-bottom: 24px;\\n border-bottom: 1px solid var(--stroke-color-default);\\n }\\n.descriptionWrapper--4S5GToDr .ant-descriptions-title {\\n font-weight: 500;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"descriptionItem\": \"descriptionItem--36ECPCfF\",\n\t\"descriptionList\": \"descriptionList--1DSpufEg\",\n\t\"descriptionWrapper\": \"descriptionWrapper--4S5GToDr\"\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/presentational-bricks:XuQu\"))(\"LhCv\");","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, { useMemo, useRef } from \"react\";\nimport { Icon as LegacyIcon } from \"@ant-design/compatible\";\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\ntype SrcIcon = {\n imgSrc?: string;\n imgStyle?: React.CSSProperties;\n};\n\ninterface MenuIconProps {\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 onClick?(event: React.MouseEvent<HTMLElement, MouseEvent>): void;\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 showEmptyIcon,\n style,\n noPublicRoot,\n imageLoading,\n iconClassName,\n}: MenuIconProps): React.ReactElement {\n const memoizedIcon = useDeepEqualMemo(_icon);\n const getStyle = (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 const getDefaultIcon = (\n bg: boolean,\n mergedStyle: React.CSSProperties,\n iconNode: JSX.Element\n ) => {\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 />\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\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 loading={imageLoading}\n />\n );\n } else if (\"lib\" in icon) {\n mergedStyle = getStyle(icon);\n\n if (style) {\n if (mergedStyle) {\n Object.assign(mergedStyle, style);\n } else {\n mergedStyle = style;\n }\n }\n\n 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 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 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 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 reverseBgColor,\n shape,\n showEmptyIcon,\n size,\n style,\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","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"LvDl\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"MMmD\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"MNnm\");","// 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, \".previewGroupWrapper--37FU1bHc {\\n display: none;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"previewGroupWrapper\": \"previewGroupWrapper--37FU1bHc\"\n};\nexport default ___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=\"","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"O0oS\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"ODXe\");","// 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/card-bg-top-left.svg\";\nimport ___CSS_LOADER_URL_IMPORT_1___ from \"../images/card-bg-top-right.svg\";\nimport ___CSS_LOADER_URL_IMPORT_2___ from \"../images/card-bg-bottom-right.svg\";\nimport ___CSS_LOADER_URL_IMPORT_3___ from \"../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, \".infoCard--2GmondYE {\\n margin-top: 20px;\\n box-shadow: none;\\n}\\n\\n .infoCard--2GmondYE:nth-child(1) {\\n margin-top: 0;\\n }\\n\\n .infoCard--2GmondYE.ant-card:hover {\\n background-color: var(--card-item-hover-bg);\\n border-color: transparent;\\n }\\n\\nhtml[data-theme=\\\"dark\\\"] .infoCard--2GmondYE {\\n border-color: transparent;\\n background: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") top left no-repeat,\\n url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") top right no-repeat,\\n url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") bottom right no-repeat,\\n url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") bottom left no-repeat,\\n var(--antd-card-background);\\n}\\n\\nhtml[data-theme=\\\"dark\\\"] .infoCard--2GmondYE:hover {\\n background-color: rgba(255, 255, 255, 0.08);\\n }\\n\\n.infoCardWrapper--18QmIXro {\\n display: grid;\\n padding: 4px;\\n align-items: center;\\n width: 100%;\\n color: var(--text-color-secondary);\\n box-sizing: border-box;\\n grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);\\n}\\n\\n.infoCardMain--2THXnhjt {\\n display: flex;\\n align-items: center;\\n height: 40px;\\n max-width: 90%;\\n}\\n\\n.infoCardMain--2THXnhjt .infoCardDetail--20wVLFR0 {\\n margin-left: 12px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n }\\n\\n.infoCardMain--2THXnhjt .infoCardDetail--20wVLFR0 h5 {\\n margin: 0;\\n color: var(--text-color-title);\\n font-size: 16px;\\n font-weight: 500;\\n padding: 0;\\n }\\n\\n.infoCardMain--2THXnhjt .infoCardDetail--20wVLFR0 p {\\n text-overflow: ellipsis;\\n word-break: break-word;\\n overflow: hidden;\\n white-space: nowrap;\\n margin: 0;\\n padding: 0;\\n }\\n\\n.infoCardMain--2THXnhjt .cardIcon--1ZQzYJ_c {\\n min-width: 44px;\\n }\\n\\n.infoCardDetailDiv--228_coRk {\\n display: flex;\\n align-items: center;\\n}\\n\\n.infoCardRightSection--2L-mnxFa {\\n display: flex;\\n align-items: center;\\n margin-left: 20px;\\n height: 40px;\\n justify-content: flex-end;\\n}\\n\\n.infoCardRightSection--2L-mnxFa > div:first-child {\\n display: grid;\\n align-items: center;\\n width: 90%;\\n grid-auto-rows: -webkit-min-content;\\n grid-auto-rows: min-content;\\n }\\n\\n.infoCardRightSection--2L-mnxFa > div:first-child h5 {\\n color: var(--text-color-disabled);\\n font-size: 14px;\\n font-weight: 400;\\n margin: 0;\\n padding: 0;\\n }\\n\\n.infoCardRightSection--2L-mnxFa > div:first-child p {\\n color: var(--text-color-default);\\n font-size: 18px;\\n font-weight: 400;\\n text-align: left;\\n margin: 0;\\n padding: 0;\\n min-height: 28px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n }\\n\\n.infoCardRightSection--2L-mnxFa > div:first-child div {\\n max-width: 80%;\\n white-space: nowrap;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"infoCard\": \"infoCard--2GmondYE\",\n\t\"infoCardWrapper\": \"infoCardWrapper--18QmIXro\",\n\t\"infoCardMain\": \"infoCardMain--2THXnhjt\",\n\t\"infoCardDetail\": \"infoCardDetail--20wVLFR0\",\n\t\"cardIcon\": \"cardIcon--1ZQzYJ_c\",\n\t\"infoCardDetailDiv\": \"infoCardDetailDiv--228_coRk\",\n\t\"infoCardRightSection\": \"infoCardRightSection--2L-mnxFa\"\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, \".ant-btn {\\n}\\n\\n.DropdownButtonWrapper--3TPg6yWe .ant-btn {\\n padding: 4px 10px;\\n }\\n\\n.DropdownButtonWrapper--3TPg6yWe .ant-btn-icon-only {\\n width: auto;\\n min-width: 32px;\\n padding: 0 10px;\\n }\\n\\n.DropdownButtonWrapper--3TPg6yWe .ant-btn-icon-only > * {\\n font-size: 14px;\\n }\\n\\n.DropdownButtonWrapper--3TPg6yWe .LeftButtonLabel--3nBVFmUj {\\n margin-left: 5px;\\n }\\n\\n.DropdownButtonWrapper--3TPg6yWe .RightButtonLabel--3IcNY5ND {\\n margin-right: 5px;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"DropdownButtonWrapper\": \"DropdownButtonWrapper--3TPg6yWe\",\n\t\"LeftButtonLabel\": \"LeftButtonLabel--3nBVFmUj\",\n\t\"RightButtonLabel\": \"RightButtonLabel--3IcNY5ND\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"AE1K\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"M7uQ\");","module.exports = (__webpack_require__(\"bricks/presentational-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","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"A+yw\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"RBnf\");","// 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--21zxcGHA {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin-left: 20px;\\n}\\n\\n .itemContainer--21zxcGHA p {\\n margin-bottom: 0;\\n }\\n\\n .itemContainer--21zxcGHA .leftArea--6oijpArz {\\n flex: 1;\\n }\\n\\n .itemContainer--21zxcGHA .leftArea--6oijpArz .title--2rPrZQVl {\\n line-height: 20px;\\n margin-bottom: 6px;\\n }\\n\\n .itemContainer--21zxcGHA .leftArea--6oijpArz .description--3rHV9f5d,\\n .itemContainer--21zxcGHA .leftArea--6oijpArz .dateTime--qLHaYjt8 {\\n line-height: 17px;\\n font-weight: var(--antd-timeline-datetime-font-weight);\\n }\\n\\n .itemContainer--21zxcGHA .leftArea--6oijpArz .description--3rHV9f5d {\\n color: var(--antd-timeline-description-color);\\n font-size: var(--antd-timeline-description-font-size);\\n margin-bottom: 4px;\\n white-space: pre-wrap;\\n }\\n\\n .itemContainer--21zxcGHA .leftArea--6oijpArz .dateTime--qLHaYjt8 {\\n color: var(--antd-timeline-datetime-color);\\n font-size: var(--antd-timeline-datetime-font-size);\\n }\\n\\n .itemContainer--21zxcGHA .leftArea--6oijpArz .link--ZFS1t8YD {\\n cursor: pointer;\\n\\n color: var(--antd-timeline-title-color);\\n font-weight: var(--antd-timeline-title-font-weight);\\n font-size: var(--antd-timeline-title-font-size);\\n }\\n\\n .itemContainer--21zxcGHA .leftArea--6oijpArz .link--ZFS1t8YD:hover {\\n color: var(--antd-timeline-title-color-hover);\\n }\\n\\n .itemContainer--21zxcGHA .rightArea--2-n4DVFQ .time--4CDfywYk {\\n line-height: 17px;\\n font-weight: var(--antd-timeline-extension-font-weight);\\n font-size: var(--antd-timeline-extension-font-size);\\n color: var(--antd-timeline-extension-color);\\n margin-right: 24px;\\n }\\n\\n .itemContainer--21zxcGHA .rightArea--2-n4DVFQ .dateContainer--3aAdKb0B {\\n position: absolute;\\n left: -48px;\\n top: 0;\\n text-align: center;\\n }\\n\\n .itemContainer--21zxcGHA .rightArea--2-n4DVFQ .dateContainer--3aAdKb0B .month--1cV6Xdzt {\\n line-height: 17px;\\n font-weight: var(--antd-timeline-extension-font-weight);\\n font-size: var(--antd-timeline-extension-font-size);\\n color: var(--antd-timeline-extension-color);\\n }\\n\\n .itemContainer--21zxcGHA .rightArea--2-n4DVFQ .dateContainer--3aAdKb0B .day--3vdQp8IM {\\n line-height: 25px;\\n font-weight: var(--antd-timeline-extension-day-font-weight);\\n font-size: var(--antd-timeline-extension-day-font-size);\\n color: var(--antd-timeline-extension-day-color);\\n }\\n\\n.groupName--2aQVy4My {\\n font-weight: var(--antd-timeline-extension-font-weight);\\n font-size: var(--antd-timeline-extension-font-size);\\n color: var(--antd-timeline-extension-color);\\n line-height: 20px;\\n margin-left: 9px;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"itemContainer\": \"itemContainer--21zxcGHA\",\n\t\"leftArea\": \"leftArea--6oijpArz\",\n\t\"title\": \"title--2rPrZQVl\",\n\t\"description\": \"description--3rHV9f5d\",\n\t\"dateTime\": \"dateTime--qLHaYjt8\",\n\t\"link\": \"link--ZFS1t8YD\",\n\t\"rightArea\": \"rightArea--2-n4DVFQ\",\n\t\"time\": \"time--4CDfywYk\",\n\t\"dateContainer\": \"dateContainer--3aAdKb0B\",\n\t\"month\": \"month--1cV6Xdzt\",\n\t\"day\": \"day--3vdQp8IM\",\n\t\"groupName\": \"groupName--2aQVy4My\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\"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 = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"TNol\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"TSYQ\");","import useMergedState from \"rc-util/lib/hooks/useMergedState\";\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport type { ImagePreviewType } from \"./Image\";\nimport type { PreviewProps } from \"./Preview\";\nimport Preview from \"./Preview\";\n\nexport interface PreviewGroupPreview\n extends Omit<ImagePreviewType, \"icons\" | \"mask\" | \"maskClassName\"> {\n /**\n * If Preview the show img index\n * @default 0\n */\n current?: number;\n customOperationPosition?: boolean;\n countRender?: (current: number, total: number) => string;\n onChange?: (current: number, prevCurrent: number) => void;\n}\n\nexport interface GroupConsumerProps {\n previewPrefixCls?: string;\n icons?: PreviewProps[\"icons\"];\n preview?: boolean | PreviewGroupPreview;\n children?: React.ReactNode;\n}\n\ninterface PreviewUrl {\n url: string;\n canPreview: boolean;\n}\n\nexport interface GroupConsumerValue extends GroupConsumerProps {\n isPreviewGroup?: boolean;\n previewUrls: Map<number, string>;\n setPreviewUrls: React.Dispatch<React.SetStateAction<Map<number, PreviewUrl>>>;\n current: number;\n setCurrent: React.Dispatch<React.SetStateAction<number>>;\n setShowPreview: React.Dispatch<React.SetStateAction<boolean>>;\n setMousePosition: React.Dispatch<\n React.SetStateAction<null | { x: number; y: number }>\n >;\n registerImage: (id: number, url: string, canPreview?: boolean) => () => void;\n rootClassName?: string;\n}\n\n/* istanbul ignore next */\nexport const context = React.createContext<GroupConsumerValue>({\n previewUrls: new Map(),\n setPreviewUrls: () => null,\n current: null,\n setCurrent: () => null,\n setShowPreview: () => null,\n setMousePosition: () => null,\n registerImage: () => () => null,\n rootClassName: \"\",\n});\n\nconst { Provider } = context;\n\nfunction getSafeIndex(keys: number[], key: number) {\n if (key === undefined) return undefined;\n const index = keys.indexOf(key);\n if (index === -1) return undefined;\n return index;\n}\n\nconst Group: React.FC<GroupConsumerProps> = ({\n previewPrefixCls = \"rc-image-preview\",\n children,\n icons = {},\n preview,\n}) => {\n const {\n visible: previewVisible = undefined,\n onVisibleChange: onPreviewVisibleChange = undefined,\n getContainer = undefined,\n customOperationPosition = false,\n current: currentIndex = 0,\n countRender = undefined,\n onChange = undefined,\n ...dialogProps\n } = typeof preview === \"object\" ? preview : {};\n const [previewUrls, setPreviewUrls] = useState<Map<number, PreviewUrl>>(\n new Map()\n );\n const previewUrlsKeys = Array.from(previewUrls.keys());\n const prevCurrent = React.useRef<number | undefined>();\n const [current, setCurrent] = useMergedState<number>(undefined, {\n onChange: (val, prev) => {\n if (prevCurrent.current !== undefined) {\n onChange?.(\n getSafeIndex(previewUrlsKeys, val),\n getSafeIndex(previewUrlsKeys, prev)\n );\n }\n prevCurrent.current = prev;\n },\n });\n const [isShowPreview, setShowPreview] = useMergedState(!!previewVisible, {\n value: previewVisible,\n onChange: (val, prevVal) => {\n onPreviewVisibleChange?.(\n val,\n prevVal,\n getSafeIndex(previewUrlsKeys, current)\n );\n prevCurrent.current = val ? current : undefined;\n },\n });\n\n const [mousePosition, setMousePosition] = useState<null | {\n x: number;\n y: number;\n }>(null);\n const isControlled = previewVisible !== undefined;\n\n const currentControlledKey = previewUrlsKeys[currentIndex];\n const canPreviewUrls = new Map<number, string>(\n Array.from(previewUrls)\n .filter(([, { canPreview }]) => !!canPreview)\n .map(([id, { url }]) => [id, url])\n );\n\n const registerImage = (id: number, url: string, canPreview = true) => {\n const unRegister = () => {\n setPreviewUrls((oldPreviewUrls) => {\n const clonePreviewUrls = new Map(oldPreviewUrls);\n const deleteResult = clonePreviewUrls.delete(id);\n return deleteResult ? clonePreviewUrls : oldPreviewUrls;\n });\n };\n\n setPreviewUrls((oldPreviewUrls) => {\n return new Map(oldPreviewUrls).set(id, {\n url,\n canPreview,\n });\n });\n\n return unRegister;\n };\n\n const onPreviewClose = (e: React.SyntheticEvent<Element>) => {\n e.stopPropagation();\n setShowPreview(false);\n setMousePosition(null);\n };\n\n React.useEffect(() => {\n setCurrent(currentControlledKey);\n }, [currentControlledKey]);\n\n React.useEffect(() => {\n if (!isShowPreview && isControlled) {\n setCurrent(currentControlledKey);\n }\n }, [currentControlledKey, isControlled, isShowPreview]);\n\n return (\n <Provider\n value={{\n isPreviewGroup: true,\n previewUrls: canPreviewUrls,\n setPreviewUrls,\n current,\n setCurrent,\n setShowPreview,\n setMousePosition,\n registerImage,\n }}\n >\n {children}\n <Preview\n aria-hidden={!isShowPreview}\n visible={isShowPreview}\n prefixCls={previewPrefixCls}\n onClose={onPreviewClose}\n mousePosition={mousePosition}\n src={canPreviewUrls.get(current)}\n icons={icons}\n getContainer={getContainer}\n countRender={countRender}\n customOperationPosition={customOperationPosition}\n {...dialogProps}\n />\n </Provider>\n );\n};\n\nexport default Group;\n","import * as React from 'react';\nvar OrderContext = /*#__PURE__*/React.createContext(null);\nexport default OrderContext;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport OrderContext from \"./Context\";\nvar EMPTY_LIST = [];\n/**\n * Will add `div` to document. Nest call will keep order\n * @param render Render DOM in document\n */\n\nexport default function useDom(render, debug) {\n var _React$useState = React.useState(function () {\n if (!canUseDom()) {\n return null;\n }\n\n var defaultEle = document.createElement('div');\n\n if (process.env.NODE_ENV !== 'production' && debug) {\n defaultEle.setAttribute('data-debug', debug);\n }\n\n return defaultEle;\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n ele = _React$useState2[0]; // ========================== Order ==========================\n\n\n var appendedRef = React.useRef(false);\n var queueCreate = React.useContext(OrderContext);\n\n var _React$useState3 = React.useState(EMPTY_LIST),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n queue = _React$useState4[0],\n setQueue = _React$useState4[1];\n\n var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) {\n setQueue(function (origin) {\n var newQueue = [appendFn].concat(_toConsumableArray(origin));\n return newQueue;\n });\n }); // =========================== DOM ===========================\n\n function append() {\n if (!ele.parentElement) {\n document.body.appendChild(ele);\n }\n\n appendedRef.current = true;\n }\n\n function cleanup() {\n var _ele$parentElement;\n\n (_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);\n appendedRef.current = false;\n }\n\n useLayoutEffect(function () {\n if (render) {\n if (queueCreate) {\n queueCreate(append);\n } else {\n append();\n }\n } else {\n cleanup();\n }\n\n return cleanup;\n }, [render]);\n useLayoutEffect(function () {\n if (queue.length) {\n queue.forEach(function (appendFn) {\n return appendFn();\n });\n setQueue(EMPTY_LIST);\n }\n }, [queue]);\n return [ele, mergedQueueCreate];\n}","import canUseDom from \"./canUseDom\";\nimport contains from \"./contains\";\nvar APPEND_ORDER = 'data-rc-order';\nvar MARK_KEY = \"rc-util-key\";\nvar containerCache = new Map();\nfunction getMark() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n mark = _ref.mark;\n if (mark) {\n return mark.startsWith('data-') ? mark : \"data-\".concat(mark);\n }\n return MARK_KEY;\n}\nfunction getContainer(option) {\n if (option.attachTo) {\n return option.attachTo;\n }\n var head = document.querySelector('head');\n return head || document.body;\n}\nfunction getOrder(prepend) {\n if (prepend === 'queue') {\n return 'prependQueue';\n }\n return prepend ? 'prepend' : 'append';\n}\n\n/**\n * Find style which inject by rc-util\n */\nfunction findStyles(container) {\n return Array.from((containerCache.get(container) || container).children).filter(function (node) {\n return node.tagName === 'STYLE';\n });\n}\nexport function injectCSS(css) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!canUseDom()) {\n return null;\n }\n var csp = option.csp,\n prepend = option.prepend;\n var styleNode = document.createElement('style');\n styleNode.setAttribute(APPEND_ORDER, getOrder(prepend));\n if (csp !== null && csp !== void 0 && csp.nonce) {\n styleNode.nonce = csp === null || csp === void 0 ? void 0 : csp.nonce;\n }\n styleNode.innerHTML = css;\n var container = getContainer(option);\n var firstChild = container.firstChild;\n if (prepend) {\n // If is queue `prepend`, it will prepend first style and then append rest style\n if (prepend === 'queue') {\n var existStyle = findStyles(container).filter(function (node) {\n return ['prepend', 'prependQueue'].includes(node.getAttribute(APPEND_ORDER));\n });\n if (existStyle.length) {\n container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);\n return styleNode;\n }\n }\n\n // Use `insertBefore` as `prepend`\n container.insertBefore(styleNode, firstChild);\n } else {\n container.appendChild(styleNode);\n }\n return styleNode;\n}\nfunction findExistNode(key) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var container = getContainer(option);\n return findStyles(container).find(function (node) {\n return node.getAttribute(getMark(option)) === key;\n });\n}\nexport function removeCSS(key) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var existNode = findExistNode(key, option);\n if (existNode) {\n var container = getContainer(option);\n container.removeChild(existNode);\n }\n}\n\n/**\n * qiankun will inject `appendChild` to insert into other\n */\nfunction syncRealContainer(container, option) {\n var cachedRealContainer = containerCache.get(container);\n\n // Find real container when not cached or cached container removed\n if (!cachedRealContainer || !contains(document, cachedRealContainer)) {\n var placeholderStyle = injectCSS('', option);\n var parentNode = placeholderStyle.parentNode;\n containerCache.set(container, parentNode);\n container.removeChild(placeholderStyle);\n }\n}\n\n/**\n * manually clear container cache to avoid global cache in unit testes\n */\nexport function clearContainerCache() {\n containerCache.clear();\n}\nexport function updateCSS(css, key) {\n var option = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var container = getContainer(option);\n\n // Sync real parent\n syncRealContainer(container, option);\n var existNode = findExistNode(key, option);\n if (existNode) {\n var _option$csp, _option$csp2;\n if ((_option$csp = option.csp) !== null && _option$csp !== void 0 && _option$csp.nonce && existNode.nonce !== ((_option$csp2 = option.csp) === null || _option$csp2 === void 0 ? void 0 : _option$csp2.nonce)) {\n var _option$csp3;\n existNode.nonce = (_option$csp3 = option.csp) === null || _option$csp3 === void 0 ? void 0 : _option$csp3.nonce;\n }\n if (existNode.innerHTML !== css) {\n existNode.innerHTML = css;\n }\n return existNode;\n }\n var newNode = injectCSS(css, option);\n newNode.setAttribute(getMark(option), key);\n return newNode;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { updateCSS, removeCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport { isBodyOverflowing } from \"./util\";\nvar UNIQUE_ID = \"rc-util-locker-\".concat(Date.now());\nvar uuid = 0;\nexport default function useScrollLocker(lock) {\n var mergedLock = !!lock;\n\n var _React$useState = React.useState(function () {\n uuid += 1;\n return \"\".concat(UNIQUE_ID, \"_\").concat(uuid);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n id = _React$useState2[0];\n\n useLayoutEffect(function () {\n if (mergedLock) {\n var scrollbarSize = getScrollBarSize();\n var isOverflow = isBodyOverflowing();\n updateCSS(\"\\nhtml body {\\n overflow-y: hidden;\\n \".concat(isOverflow ? \"width: calc(100% - \".concat(scrollbarSize, \"px);\") : '', \"\\n}\"), id);\n } else {\n removeCSS(id);\n }\n\n return function () {\n removeCSS(id);\n };\n }, [mergedLock, id]);\n}","/**\n * Test usage export. Do not use in your production\n */\nexport function isBodyOverflowing() {\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n}","export var inline = false;\nexport function inlineMock(nextInline) {\n if (typeof nextInline === 'boolean') {\n inline = nextInline;\n }\n\n return inline;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport OrderContext from \"./Context\";\nimport useDom from \"./useDom\";\nimport useScrollLocker from \"./useScrollLocker\";\nimport { inlineMock } from \"./mock\";\n\nvar getPortalContainer = function getPortalContainer(getContainer) {\n if (getContainer === false) {\n return false;\n }\n\n if (!canUseDom() || !getContainer) {\n return null;\n }\n\n if (typeof getContainer === 'string') {\n return document.querySelector(getContainer);\n }\n\n if (typeof getContainer === 'function') {\n return getContainer();\n }\n\n return getContainer;\n};\n\nvar Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var open = props.open,\n autoLock = props.autoLock,\n getContainer = props.getContainer,\n debug = props.debug,\n _props$autoDestroy = props.autoDestroy,\n autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,\n children = props.children;\n\n var _React$useState = React.useState(open),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n shouldRender = _React$useState2[0],\n setShouldRender = _React$useState2[1];\n\n var mergedRender = shouldRender || open; // ====================== Should Render ======================\n\n React.useEffect(function () {\n if (autoDestroy || open) {\n setShouldRender(open);\n }\n }, [open, autoDestroy]); // ======================== Container ========================\n\n var _React$useState3 = React.useState(function () {\n return getPortalContainer(getContainer);\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n innerContainer = _React$useState4[0],\n setInnerContainer = _React$useState4[1];\n\n React.useEffect(function () {\n var customizeContainer = getPortalContainer(getContainer); // Tell component that we check this in effect which is safe to be `null`\n\n setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);\n });\n\n var _useDom = useDom(mergedRender && !innerContainer, debug),\n _useDom2 = _slicedToArray(_useDom, 2),\n defaultContainer = _useDom2[0],\n queueCreate = _useDom2[1];\n\n var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer; // ========================= Locker ==========================\n\n useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body)); // =========================== Ref ===========================\n\n var childRef = null;\n\n if (children && supportRef(children) && ref) {\n var _ref = children;\n childRef = _ref.ref;\n }\n\n var mergedRef = useComposeRef(childRef, ref); // ========================= Render ==========================\n // Do not render when nothing need render\n // When innerContainer is `undefined`, it may not ready since user use ref in the same render\n\n if (!mergedRender || !canUseDom() || innerContainer === undefined) {\n return null;\n } // Render inline\n\n\n var renderInline = mergedContainer === false || inlineMock();\n var reffedChildren = children;\n\n if (ref) {\n reffedChildren = /*#__PURE__*/React.cloneElement(children, {\n ref: mergedRef\n });\n }\n\n return /*#__PURE__*/React.createElement(OrderContext.Provider, {\n value: queueCreate\n }, renderInline ? reffedChildren : /*#__PURE__*/createPortal(reffedChildren, mergedContainer));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Portal.displayName = 'Portal';\n}\n\nexport default Portal;","import Portal from \"./Portal\";\nimport { inlineMock } from \"./mock\";\nexport { inlineMock };\nexport default Portal;","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!./Operations.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\";\nimport classnames from \"classnames\";\nimport CSSMotion from \"rc-motion\";\nimport Portal from \"@rc-component/portal\";\nimport { MIN_SCALE, MAX_SCALE } from \"./previewConfig\";\nimport type { PreviewProps } from \"./Preview\";\nimport {\n CloseOutlined,\n LeftOutlined,\n RightOutlined,\n RotateLeftOutlined,\n RotateRightOutlined,\n SwapOutlined,\n ZoomInOutlined,\n ZoomOutOutlined,\n} from \"@ant-design/icons\";\nimport styles from \"./Operations.module.css\";\n\ninterface OperationsProps\n extends Pick<\n PreviewProps,\n | \"visible\"\n | \"maskTransitionName\"\n | \"getContainer\"\n | \"prefixCls\"\n | \"rootClassName\"\n | \"icons\"\n | \"countRender\"\n | \"onClose\"\n > {\n showSwitch: boolean;\n showProgress: boolean;\n current: number;\n count: number;\n scale: number;\n customOperationPosition: boolean;\n onSwitchLeft: React.MouseEventHandler<HTMLDivElement>;\n onSwitchRight: React.MouseEventHandler<HTMLDivElement>;\n onZoomIn: () => void;\n onZoomOut: () => void;\n onRotateRight: () => void;\n onRotateLeft: () => void;\n onFlipX: () => void;\n onFlipY: () => void;\n}\n\nconst Operations: React.FC<OperationsProps> = (props) => {\n const {\n visible,\n maskTransitionName,\n getContainer,\n prefixCls,\n rootClassName,\n icons,\n countRender,\n showSwitch,\n showProgress,\n current,\n count,\n scale,\n customOperationPosition,\n onSwitchLeft,\n onSwitchRight,\n onClose,\n onZoomIn,\n onZoomOut,\n onRotateRight,\n onRotateLeft,\n onFlipX,\n onFlipY,\n } = props;\n const {\n rotateLeft = <RotateLeftOutlined />,\n rotateRight = <RotateRightOutlined />,\n zoomIn = <ZoomInOutlined />,\n zoomOut = <ZoomOutOutlined />,\n close = <CloseOutlined />,\n left = <LeftOutlined />,\n right = <RightOutlined />,\n flipX = <SwapOutlined />,\n flipY = <SwapOutlined rotate={90} />,\n } = icons;\n const toolClassName = `${prefixCls}-operations-operation`;\n const iconClassName = `${prefixCls}-operations-icon`;\n const tools = [\n {\n icon: close,\n onClick: onClose,\n type: \"close\",\n position: \"right-top\",\n },\n {\n icon: zoomIn,\n onClick: onZoomIn,\n type: \"zoomIn\",\n disabled: scale === MAX_SCALE,\n },\n {\n icon: zoomOut,\n onClick: onZoomOut,\n type: \"zoomOut\",\n disabled: scale === MIN_SCALE,\n },\n {\n icon: rotateRight,\n onClick: onRotateRight,\n type: \"rotateRight\",\n },\n {\n icon: rotateLeft,\n onClick: onRotateLeft,\n type: \"rotateLeft\",\n },\n {\n icon: flipX,\n onClick: onFlipX,\n type: \"flipX\",\n },\n {\n icon: flipY,\n onClick: onFlipY,\n type: \"flipY\",\n },\n ];\n\n const operations = (\n <>\n {showSwitch && (\n <>\n <div\n className={classnames(`${prefixCls}-switch-left`, {\n [`${prefixCls}-switch-left-disabled`]: current === 0,\n })}\n onClick={onSwitchLeft}\n >\n {left}\n </div>\n <div\n className={classnames(`${prefixCls}-switch-right`, {\n [`${prefixCls}-switch-right-disabled`]: current === count - 1,\n })}\n onClick={onSwitchRight}\n >\n {right}\n </div>\n </>\n )}\n <ul className={`${prefixCls}-operations`}>\n {showProgress && (\n <li className={`${prefixCls}-operations-progress`}>\n {countRender?.(current + 1, count) ?? `${current + 1} / ${count}`}\n </li>\n )}\n {tools.map(({ icon, onClick, type, disabled }) => (\n <li\n className={classnames(toolClassName, {\n [`${prefixCls}-operations-operation-${type}`]: true,\n [`${prefixCls}-operations-operation-disabled`]: !!disabled,\n })}\n onClick={onClick}\n key={type}\n >\n {React.isValidElement(icon)\n ? React.cloneElement<{ className?: string }>(icon, {\n className: iconClassName,\n })\n : icon}\n </li>\n ))}\n </ul>\n </>\n );\n\n const operationsInBottom = (\n <>\n {showSwitch && (\n <>\n <div\n className={classnames(`${prefixCls}-switch-left`, {\n [`${prefixCls}-switch-left-disabled`]: current === 0,\n })}\n onClick={onSwitchLeft}\n >\n {left}\n </div>\n <div\n className={classnames(`${prefixCls}-switch-right`, {\n [`${prefixCls}-switch-right-disabled`]: current === count - 1,\n })}\n onClick={onSwitchRight}\n >\n {right}\n </div>\n </>\n )}\n <ul className={`${prefixCls}-operations`}>\n {showProgress && (\n <li className={`${prefixCls}-operations-progress`}>\n {countRender?.(current + 1, count) ?? `${current + 1} / ${count}`}\n </li>\n )}\n {tools\n .filter((tool) => tool.position === \"right-top\")\n .map(({ icon, onClick, type, disabled }) => (\n <li\n className={classnames(toolClassName, {\n [`${prefixCls}-operations-operation-${type}`]: true,\n [`${prefixCls}-operations-operation-disabled`]: !!disabled,\n })}\n onClick={onClick}\n key={type}\n >\n {React.isValidElement(icon)\n ? React.cloneElement<{ className?: string }>(icon, {\n className: iconClassName,\n })\n : icon}\n </li>\n ))}\n </ul>\n {\n <div className={styles.customOperations}>\n <ul>\n {tools\n .filter((tool) => tool.position !== \"right-top\")\n .map(({ icon, onClick, type, disabled }) => (\n <li\n className={classnames(toolClassName, {\n [`${prefixCls}-operations-operation-${type}`]: true,\n [`${prefixCls}-operations-operation-disabled`]: !!disabled,\n })}\n onClick={onClick}\n key={type}\n >\n {React.isValidElement(icon)\n ? React.cloneElement<{ className?: string }>(icon, {\n className: iconClassName,\n })\n : icon}\n </li>\n ))}\n </ul>\n </div>\n }\n </>\n );\n\n return (\n <CSSMotion visible={visible} motionName={maskTransitionName}>\n {({ className, style }) => (\n <Portal open getContainer={getContainer ?? document.body}>\n <div\n className={classnames(\n styles.customOperationsWrapper,\n `${prefixCls}-operations-wrapper`,\n className,\n rootClassName\n )}\n style={style}\n >\n {customOperationPosition ? operationsInBottom : operations}\n </div>\n </Portal>\n )}\n </CSSMotion>\n );\n};\n\nexport default Operations;\n","/* istanbul ignore file */\n\n/** Minimum scale */\nexport const MIN_SCALE = 1;\n/** Maximum Scale */\nexport const MAX_SCALE = 50;\n\n/** Scale the ratio base */\nexport const BASE_SCALE_RATIO = 1;\n/** The maximum zoom ratio when the mouse zooms in, adjustable */\nexport const WHEEL_MAX_SCALE_RATIO = 1;\n","import { useState, useRef } from \"react\";\nimport raf from \"rc-util/lib/raf\";\nimport { getClientSize } from \"rc-util/lib/Dom/css\";\nimport { MIN_SCALE, MAX_SCALE } from \"../previewConfig\";\n\ntype TransformType = {\n x: number;\n y: number;\n rotate: number;\n scale: number;\n flipX: boolean;\n flipY: boolean;\n};\n\nconst initialTransform = {\n x: 0,\n y: 0,\n rotate: 0,\n scale: 1,\n flipX: false,\n flipY: false,\n};\n\nexport default function useImageTransform(\n imgRef: React.MutableRefObject<HTMLImageElement>\n) {\n const frame = useRef(null);\n const queue = useRef<TransformType[]>([]);\n const [transform, setTransform] = useState(initialTransform);\n\n const resetTransform = () => {\n setTransform(initialTransform);\n };\n\n /** Direct update transform */\n const updateTransform = (newTransform: Partial<TransformType>) => {\n if (frame.current === null) {\n queue.current = [];\n frame.current = raf(() => {\n setTransform((preState) => {\n let memoState: any = preState;\n queue.current.forEach((queueState) => {\n memoState = { ...memoState, ...queueState };\n });\n frame.current = null;\n\n return memoState;\n });\n });\n }\n queue.current.push({\n ...transform,\n ...newTransform,\n });\n };\n\n /** Scale according to the position of clientX and clientY */\n const dispatchZoomChange = (\n ratio: number,\n clientX?: number,\n clientY?: number\n ) => {\n const { width, height, offsetWidth, offsetHeight, offsetLeft, offsetTop } =\n imgRef.current;\n\n let newRatio = ratio;\n let newScale = transform.scale * ratio;\n if (newScale > MAX_SCALE) {\n newRatio = MAX_SCALE / transform.scale;\n newScale = MAX_SCALE;\n } else if (newScale < MIN_SCALE) {\n newRatio = MIN_SCALE / transform.scale;\n newScale = MIN_SCALE;\n }\n\n /** Default center point scaling */\n const mergedClientX = clientX ?? innerWidth / 2;\n const mergedClientY = clientY ?? innerHeight / 2;\n\n const diffRatio = newRatio - 1;\n /** Deviation calculated from image size */\n const diffImgX = diffRatio * width * 0.5;\n const diffImgY = diffRatio * height * 0.5;\n /** The difference between the click position and the edge of the document */\n const diffOffsetLeft =\n diffRatio * (mergedClientX - transform.x - offsetLeft);\n const diffOffsetTop = diffRatio * (mergedClientY - transform.y - offsetTop);\n /** Final positioning */\n let newX = transform.x - (diffOffsetLeft - diffImgX);\n let newY = transform.y - (diffOffsetTop - diffImgY);\n\n /**\n * When zooming the image\n * When the image size is smaller than the width and height of the window, the position is initialized\n */\n if (ratio < 1 && newScale === 1) {\n const mergedWidth = offsetWidth * newScale;\n const mergedHeight = offsetHeight * newScale;\n const { width: clientWidth, height: clientHeight } = getClientSize();\n if (mergedWidth <= clientWidth && mergedHeight <= clientHeight) {\n newX = 0;\n newY = 0;\n }\n }\n\n updateTransform({\n x: newX,\n y: newY,\n scale: newScale,\n });\n };\n\n return {\n transform,\n resetTransform,\n updateTransform,\n dispatchZoomChange,\n };\n}\n","import { getClientSize } from \"rc-util/lib/Dom/css\";\n\nfunction fixPoint(\n key: \"x\" | \"y\",\n start: number,\n width: number,\n clientWidth: number\n) {\n const startAddWidth = start + width;\n const offsetStart = (width - clientWidth) / 2;\n\n if (width > clientWidth) {\n if (start > 0) {\n return {\n [key]: offsetStart,\n };\n }\n if (start < 0 && startAddWidth < clientWidth) {\n return {\n [key]: -offsetStart,\n };\n }\n } else if (start < 0 || startAddWidth > clientWidth) {\n return {\n [key]: start < 0 ? offsetStart : -offsetStart,\n };\n }\n return {};\n}\n\n/**\n * Fix positon x,y point when\n *\n * Ele width && height < client\n * - Back origin\n *\n * - Ele width | height > clientWidth | clientHeight\n * - left | top > 0 -> Back 0\n * - left | top + width | height < clientWidth | clientHeight -> Back left | top + width | height === clientWidth | clientHeight\n *\n * Regardless of other\n */\nexport default function getFixScaleEleTransPosition(\n width: number,\n height: number,\n left: number,\n top: number\n): null | { x: number; y: number } {\n const { width: clientWidth, height: clientHeight } = getClientSize();\n\n let fixPos = null;\n\n if (width <= clientWidth && height <= clientHeight) {\n fixPos = {\n x: 0,\n y: 0,\n };\n } else if (width > clientWidth || height > clientHeight) {\n fixPos = {\n ...fixPoint(\"x\", left, width, clientWidth),\n ...fixPoint(\"y\", top, height, clientHeight),\n };\n }\n\n return fixPos;\n}\n","import React, {\n useState,\n useEffect,\n useCallback,\n useRef,\n useContext,\n} from \"react\";\nimport type { DialogProps as IDialogPropTypes } from \"rc-dialog\";\nimport Dialog from \"rc-dialog\";\nimport classnames from \"classnames\";\nimport addEventListener from \"rc-util/lib/Dom/addEventListener\";\nimport KeyCode from \"rc-util/lib/KeyCode\";\nimport { warning } from \"rc-util/lib/warning\";\nimport { context } from \"./PreviewGroup\";\nimport Operations from \"./Operations\";\nimport useImageTransform from \"./hooks/useImageTransform\";\nimport getFixScaleEleTransPosition from \"./getFixScaleEleTransPosition\";\nimport { BASE_SCALE_RATIO, WHEEL_MAX_SCALE_RATIO } from \"./previewConfig\";\n\nexport interface PreviewProps extends Omit<IDialogPropTypes, \"onClose\"> {\n onClose?: (e: React.SyntheticEvent<Element>) => void;\n src?: string;\n alt?: string;\n rootClassName?: string;\n customOperationPosition?: boolean;\n icons?: {\n rotateLeft?: React.ReactNode;\n rotateRight?: React.ReactNode;\n zoomIn?: React.ReactNode;\n zoomOut?: React.ReactNode;\n close?: React.ReactNode;\n left?: React.ReactNode;\n right?: React.ReactNode;\n flipX?: React.ReactNode;\n flipY?: React.ReactNode;\n };\n countRender?: (current: number, total: number) => string;\n scaleStep?: number;\n}\n\nconst Preview: React.FC<PreviewProps> = (props) => {\n const {\n prefixCls,\n src,\n alt,\n onClose,\n visible,\n icons = {},\n rootClassName,\n getContainer,\n customOperationPosition,\n countRender,\n scaleStep = 0.5,\n transitionName = \"zoom\",\n maskTransitionName = \"fade\",\n ...restProps\n } = props;\n\n const imgRef = useRef<HTMLImageElement>();\n const downPositionRef = useRef({\n deltaX: 0,\n deltaY: 0,\n transformX: 0,\n transformY: 0,\n });\n const [isMoving, setMoving] = useState(false);\n const { previewUrls, current, isPreviewGroup, setCurrent } =\n useContext(context);\n const previewGroupCount = previewUrls.size;\n const previewUrlsKeys = Array.from(previewUrls.keys());\n const currentPreviewIndex = previewUrlsKeys.indexOf(current);\n const combinationSrc = isPreviewGroup ? previewUrls.get(current) : src;\n const showLeftOrRightSwitches = isPreviewGroup && previewGroupCount > 1;\n const showOperationsProgress = isPreviewGroup && previewGroupCount >= 1;\n const { transform, resetTransform, updateTransform, dispatchZoomChange } =\n useImageTransform(imgRef);\n const { rotate, scale } = transform;\n\n const wrapClassName = classnames({\n [`${prefixCls}-moving`]: isMoving,\n });\n\n const onAfterClose = () => {\n resetTransform();\n };\n\n const onZoomIn = () => {\n dispatchZoomChange(BASE_SCALE_RATIO + scaleStep);\n };\n\n const onZoomOut = () => {\n dispatchZoomChange(BASE_SCALE_RATIO - scaleStep);\n };\n\n const onRotateRight = () => {\n updateTransform({ rotate: rotate + 90 });\n };\n\n const onRotateLeft = () => {\n updateTransform({ rotate: rotate - 90 });\n };\n\n const onFlipX = () => {\n updateTransform({ flipX: !transform.flipX });\n };\n\n const onFlipY = () => {\n updateTransform({ flipY: !transform.flipY });\n };\n\n const onSwitchLeft: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.preventDefault();\n event.stopPropagation();\n if (currentPreviewIndex > 0) {\n setCurrent(previewUrlsKeys[currentPreviewIndex - 1]);\n }\n };\n\n const onSwitchRight: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.preventDefault();\n event.stopPropagation();\n if (currentPreviewIndex < previewGroupCount - 1) {\n setCurrent(previewUrlsKeys[currentPreviewIndex + 1]);\n }\n };\n\n const onMouseUp: React.MouseEventHandler<HTMLBodyElement> = () => {\n if (visible && isMoving) {\n setMoving(false);\n\n /** No need to restore the position when the picture is not moved, So as not to interfere with the click */\n const { transformX, transformY } = downPositionRef.current;\n const hasChangedPosition =\n transform.x !== transformX && transform.y !== transformY;\n if (!hasChangedPosition) {\n return;\n }\n\n const width = imgRef.current.offsetWidth * scale;\n const height = imgRef.current.offsetHeight * scale;\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { left, top } = imgRef.current.getBoundingClientRect();\n const isRotate = rotate % 180 !== 0;\n\n const fixState = getFixScaleEleTransPosition(\n isRotate ? height : width,\n isRotate ? width : height,\n left,\n top\n );\n\n if (fixState) {\n updateTransform({ ...fixState });\n }\n }\n };\n\n const onMouseDown: React.MouseEventHandler<HTMLDivElement> = (event) => {\n // Only allow main button\n if (event.button !== 0) return;\n event.preventDefault();\n event.stopPropagation();\n downPositionRef.current = {\n deltaX: event.pageX - transform.x,\n deltaY: event.pageY - transform.y,\n transformX: transform.x,\n transformY: transform.y,\n };\n setMoving(true);\n };\n\n const onMouseMove: React.MouseEventHandler<HTMLBodyElement> = (event) => {\n if (visible && isMoving) {\n updateTransform({\n x: event.pageX - downPositionRef.current.deltaX,\n y: event.pageY - downPositionRef.current.deltaY,\n });\n }\n };\n\n const onWheel = (event: React.WheelEvent<HTMLImageElement>) => {\n if (!visible || event.deltaY == 0) return;\n // Scale ratio depends on the deltaY size\n const scaleRatio = Math.abs(event.deltaY / 100);\n // Limit the maximum scale ratio\n const mergedScaleRatio = Math.min(scaleRatio, WHEEL_MAX_SCALE_RATIO);\n // Scale the ratio each time\n let ratio = BASE_SCALE_RATIO + mergedScaleRatio * scaleStep;\n if (event.deltaY > 0) {\n ratio = BASE_SCALE_RATIO / ratio;\n }\n dispatchZoomChange(ratio, event.clientX, event.clientY);\n };\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (!visible || !showLeftOrRightSwitches) return;\n\n if (event.keyCode === KeyCode.LEFT) {\n if (currentPreviewIndex > 0) {\n setCurrent(previewUrlsKeys[currentPreviewIndex - 1]);\n }\n } else if (event.keyCode === KeyCode.RIGHT) {\n if (currentPreviewIndex < previewGroupCount - 1) {\n setCurrent(previewUrlsKeys[currentPreviewIndex + 1]);\n }\n }\n },\n [\n currentPreviewIndex,\n previewGroupCount,\n previewUrlsKeys,\n setCurrent,\n showLeftOrRightSwitches,\n visible,\n ]\n );\n\n const onDoubleClick = (\n event: React.MouseEvent<HTMLImageElement, MouseEvent>\n ) => {\n if (visible) {\n if (scale !== 1) {\n updateTransform({ x: 0, y: 0, scale: 1 });\n } else {\n dispatchZoomChange(\n BASE_SCALE_RATIO + scaleStep,\n event.clientX,\n event.clientY\n );\n }\n }\n };\n\n useEffect(() => {\n let onTopMouseUpListener;\n let onTopMouseMoveListener;\n\n const onMouseUpListener = addEventListener(\n window,\n \"mouseup\",\n onMouseUp,\n false\n );\n const onMouseMoveListener = addEventListener(\n window,\n \"mousemove\",\n onMouseMove,\n false\n );\n const onKeyDownListener = addEventListener(\n window,\n \"keydown\",\n onKeyDown,\n false\n );\n\n try {\n // Resolve if in iframe lost event\n /* istanbul ignore next */\n if (window.top !== window.self) {\n onTopMouseUpListener = addEventListener(\n window.top,\n \"mouseup\",\n onMouseUp,\n false\n );\n onTopMouseMoveListener = addEventListener(\n window.top,\n \"mousemove\",\n onMouseMove,\n false\n );\n }\n } catch (error) {\n /* istanbul ignore next */\n warning(false, `[rc-image] ${error}`);\n }\n\n return () => {\n onMouseUpListener.remove();\n onMouseMoveListener.remove();\n onKeyDownListener.remove();\n /* istanbul ignore next */\n onTopMouseUpListener?.remove();\n /* istanbul ignore next */\n onTopMouseMoveListener?.remove();\n };\n }, [visible, isMoving, onKeyDown]);\n\n return (\n <>\n <Dialog\n transitionName={transitionName}\n maskTransitionName={maskTransitionName}\n closable={false}\n keyboard\n prefixCls={prefixCls}\n onClose={onClose}\n visible={visible}\n wrapClassName={wrapClassName}\n rootClassName={rootClassName}\n getContainer={getContainer}\n {...restProps}\n afterClose={onAfterClose}\n >\n <div className={`${prefixCls}-img-wrapper`}>\n <img\n width={props.width}\n height={props.height}\n onWheel={onWheel}\n onMouseDown={onMouseDown}\n onDoubleClick={onDoubleClick}\n ref={imgRef}\n className={`${prefixCls}-img`}\n src={combinationSrc}\n alt={alt}\n style={{\n transform: `translate3d(${transform.x}px, ${\n transform.y\n }px, 0) scale3d(${transform.flipX ? \"-\" : \"\"}${scale}, ${\n transform.flipY ? \"-\" : \"\"\n }${scale}, 1) rotate(${rotate}deg)`,\n }}\n />\n </div>\n </Dialog>\n <Operations\n visible={visible}\n customOperationPosition={customOperationPosition}\n maskTransitionName={maskTransitionName}\n getContainer={getContainer}\n prefixCls={prefixCls}\n rootClassName={rootClassName}\n icons={icons}\n countRender={countRender}\n showSwitch={showLeftOrRightSwitches}\n showProgress={showOperationsProgress}\n current={currentPreviewIndex}\n count={previewGroupCount}\n scale={scale}\n onSwitchLeft={onSwitchLeft}\n onSwitchRight={onSwitchRight}\n onZoomIn={onZoomIn}\n onZoomOut={onZoomOut}\n onRotateRight={onRotateRight}\n onRotateLeft={onRotateLeft}\n onFlipX={onFlipX}\n onFlipY={onFlipY}\n onClose={onClose}\n />\n </>\n );\n};\n\nexport default Preview;\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport cn from \"classnames\";\nimport { getOffset } from \"rc-util/lib/Dom/css\";\nimport useMergedState from \"rc-util/lib/hooks/useMergedState\";\nimport type { GetContainer } from \"rc-util/lib/PortalWrapper\";\nimport type { PreviewProps } from \"./Preview\";\nimport Preview from \"./Preview\";\nimport PreviewGroup, { context } from \"./PreviewGroup\";\nimport type { IDialogPropTypes } from \"rc-dialog/lib/IDialogPropTypes\";\nimport { isNil } from \"lodash\";\n\nexport interface ImagePreviewType\n extends Omit<\n IDialogPropTypes,\n | \"mask\"\n | \"visible\"\n | \"closable\"\n | \"prefixCls\"\n | \"onClose\"\n | \"afterClose\"\n | \"wrapClassName\"\n > {\n src?: string;\n visible?: boolean;\n onVisibleChange?: (\n value: boolean,\n prevValue: boolean,\n currentIndex?: number\n ) => void;\n getContainer?: GetContainer | false;\n mask?: React.ReactNode;\n maskClassName?: string;\n icons?: PreviewProps[\"icons\"];\n scaleStep?: number;\n customOperationPosition?: boolean;\n}\n\nlet uuid = 0;\n\nexport interface ImageProps\n extends Omit<\n React.ImgHTMLAttributes<HTMLImageElement>,\n \"placeholder\" | \"onClick\"\n > {\n // Original\n src?: string;\n wrapperClassName?: string;\n wrapperStyle?: React.CSSProperties;\n prefixCls?: string;\n previewPrefixCls?: string;\n placeholder?: React.ReactNode;\n fallback?: string;\n rootClassName?: string;\n preview?: boolean | ImagePreviewType;\n onPreviewClose?: (value: boolean, prevValue: boolean) => void;\n onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;\n onError?: (e: React.SyntheticEvent<HTMLImageElement, Event>) => void;\n}\n\ninterface CompoundedComponent<P> extends React.FC<P> {\n PreviewGroup: typeof PreviewGroup;\n}\n\ntype ImageStatus = \"normal\" | \"error\" | \"loading\";\n\nfunction isImageValid(src) {\n return new Promise((resolve) => {\n const img = document.createElement(\"img\");\n img.onerror = () => resolve(false);\n img.onload = () => resolve(true);\n img.src = src;\n });\n}\n\nconst ImageInternal: CompoundedComponent<ImageProps> = ({\n src: imgSrc,\n alt,\n onPreviewClose: onInitialPreviewClose,\n prefixCls = \"rc-image\",\n previewPrefixCls = `${prefixCls}-preview`,\n placeholder,\n fallback,\n width,\n height,\n style,\n preview = true,\n className,\n onClick,\n onError,\n wrapperClassName,\n wrapperStyle,\n rootClassName,\n\n // Img\n crossOrigin,\n decoding,\n loading,\n referrerPolicy,\n sizes,\n srcSet,\n useMap,\n draggable,\n ...otherProps\n}) => {\n const isCustomPlaceholder = placeholder && placeholder !== true;\n const {\n src: previewSrc,\n visible: previewVisible = undefined,\n onVisibleChange: onPreviewVisibleChange = onInitialPreviewClose,\n getContainer: getPreviewContainer = undefined,\n mask: previewMask,\n maskClassName,\n icons,\n scaleStep,\n customOperationPosition,\n ...dialogProps\n }: ImagePreviewType = typeof preview === \"object\" ? preview : {};\n const src = previewSrc ?? imgSrc;\n const isControlled = previewVisible !== undefined;\n const [isShowPreview, setShowPreview] = useMergedState(!!previewVisible, {\n value: previewVisible,\n onChange: onPreviewVisibleChange,\n });\n const [status, setStatus] = useState<ImageStatus>(\n isCustomPlaceholder ? \"loading\" : \"normal\"\n );\n const [mousePosition, setMousePosition] = useState<null | {\n x: number;\n y: number;\n }>(null);\n const isError = status === \"error\";\n const {\n isPreviewGroup,\n setCurrent,\n setShowPreview: setGroupShowPreview,\n setMousePosition: setGroupMousePosition,\n registerImage,\n } = React.useContext(context);\n const [currentId] = React.useState<number>(() => {\n uuid += 1;\n return uuid;\n });\n const canPreview = !!preview;\n\n const isLoaded = React.useRef(false);\n\n const onLoad = () => {\n setStatus(\"normal\");\n };\n\n const onPreview: React.MouseEventHandler<HTMLDivElement> = (e) => {\n if (!isControlled) {\n const { left, top } = getOffset(e.target);\n\n if (isPreviewGroup) {\n setCurrent(currentId);\n setGroupMousePosition({\n x: left,\n y: top,\n });\n } else {\n setMousePosition({\n x: left,\n y: top,\n });\n }\n }\n\n if (isPreviewGroup) {\n setGroupShowPreview(true);\n } else {\n setShowPreview(true);\n }\n\n onClick?.(e);\n };\n\n const onPreviewClose = (e: React.SyntheticEvent<Element>) => {\n e.stopPropagation();\n setShowPreview(false);\n if (!isControlled) {\n setMousePosition(null);\n }\n };\n\n const getImgRef = (img?: HTMLImageElement) => {\n isLoaded.current = false;\n if (status !== \"loading\") return;\n if (img?.complete && (img.naturalWidth || img.naturalHeight)) {\n isLoaded.current = true;\n onLoad();\n }\n };\n\n /* istanbul ignore next */\n React.useEffect(() => {\n isImageValid(src).then((isValid) => {\n if (!isNil(src) && !isValid) {\n setStatus(\"error\");\n }\n });\n }, [src]);\n\n // Keep order start\n // Resolve https://github.com/ant-design/ant-design/issues/28881\n // Only need unRegister when component unMount\n React.useEffect(() => {\n const unRegister = registerImage(currentId, src);\n\n return unRegister;\n }, []);\n\n React.useEffect(() => {\n registerImage(currentId, src, canPreview);\n }, [src, canPreview]);\n // Keep order end\n\n React.useEffect(() => {\n if (isError) {\n setStatus(\"normal\");\n }\n if (isCustomPlaceholder && !isLoaded.current) {\n setStatus(\"loading\");\n }\n }, [imgSrc]);\n\n const wrapperClass = cn(prefixCls, wrapperClassName, rootClassName, {\n [`${prefixCls}-error`]: isError,\n });\n\n const mergedSrc = isError && fallback ? fallback : src;\n const imgCommonProps = {\n crossOrigin,\n decoding,\n draggable,\n loading,\n referrerPolicy,\n sizes,\n srcSet,\n useMap,\n onError,\n alt,\n className: cn(\n `${prefixCls}-img`,\n {\n [`${prefixCls}-img-placeholder`]: placeholder === true,\n },\n className\n ),\n style: {\n height,\n ...style,\n },\n };\n\n return (\n <>\n <div\n {...otherProps}\n className={wrapperClass}\n onClick={canPreview ? onPreview : onClick}\n style={{\n width,\n height,\n ...wrapperStyle,\n }}\n >\n <img\n {...imgCommonProps}\n ref={getImgRef}\n {...(isError && fallback\n ? { src: fallback }\n : { onLoad, src: imgSrc })}\n width={width}\n height={height}\n />\n\n {status === \"loading\" && (\n <div aria-hidden=\"true\" className={`${prefixCls}-placeholder`}>\n {placeholder}\n </div>\n )}\n\n {/* Preview Click Mask */}\n {previewMask && canPreview && (\n <div\n className={cn(`${prefixCls}-mask`, maskClassName)}\n style={{\n display:\n imgCommonProps.style?.display === \"none\" ? \"none\" : undefined,\n }}\n >\n {previewMask}\n </div>\n )}\n </div>\n {!isPreviewGroup && canPreview && (\n <Preview\n aria-hidden={!isShowPreview}\n visible={isShowPreview}\n prefixCls={previewPrefixCls}\n onClose={onPreviewClose}\n mousePosition={mousePosition}\n src={mergedSrc}\n alt={alt}\n getContainer={getPreviewContainer}\n icons={icons}\n scaleStep={scaleStep}\n customOperationPosition={customOperationPosition}\n rootClassName={rootClassName}\n {...dialogProps}\n />\n )}\n </>\n );\n};\n\nImageInternal.PreviewGroup = PreviewGroup;\n\nImageInternal.displayName = \"Image\";\n\nexport default ImageInternal;\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!./GeneralPreviewImage.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 { EyeOutlined } from \"@ant-design/icons\";\nimport React, { useMemo, useState } from \"react\";\nimport { ImageProps } from \"rc-image\";\nimport Image from \"./components/Image\";\nimport { isEmpty } from \"lodash\";\nimport { NS_PRESENTATIONAL_BRICKS, K } from \"../i18n/constants\";\n\nimport style from \"./GeneralPreviewImage.module.css\";\nimport { useTranslation } from \"react-i18next\";\n\nexport interface GeneralPreviewImageProps extends ImageProps {\n srcList?: string[];\n canPreview?: boolean;\n previewCurrentIndex?: number;\n customOperationPosition?: boolean;\n}\n\nexport function GeneralPreviewImage(\n props: GeneralPreviewImageProps\n): React.ReactElement {\n const { t } = useTranslation(NS_PRESENTATIONAL_BRICKS);\n const {\n width,\n height,\n src,\n srcList,\n alt,\n canPreview = true,\n previewCurrentIndex = 0,\n customOperationPosition = true,\n fallback,\n } = props;\n const [visible, setVisible] = useState(false);\n\n const defaultPreview = useMemo(() => {\n return {\n visible: !isEmpty(srcList) ? false : undefined,\n mask: (\n <div className={`ant-image-mask-info`}>\n <EyeOutlined />\n {t(K.PREVIEW)}\n </div>\n ),\n customOperationPosition,\n };\n }, [customOperationPosition, srcList]);\n\n if (!isEmpty(srcList)) {\n return (\n <div>\n <Image\n width={width}\n height={height}\n src={src}\n alt={alt}\n fallback={fallback}\n onClick={() => canPreview && setVisible(true)}\n preview={canPreview ? defaultPreview : false}\n previewPrefixCls=\"ant-image-preview\"\n prefixCls=\"ant-image\"\n />\n {canPreview && (\n <div className={style.previewGroupWrapper}>\n <Image.PreviewGroup\n previewPrefixCls=\"ant-image-preview\"\n preview={{\n visible,\n current: previewCurrentIndex,\n customOperationPosition,\n onVisibleChange: (vis) => setVisible(vis),\n }}\n >\n {srcList.map((src, index) => (\n <Image key={src + index} src={src} fallback={fallback} />\n ))}\n </Image.PreviewGroup>\n </div>\n )}\n </div>\n );\n }\n\n return (\n <div>\n <Image\n width={width}\n height={height}\n src={src}\n alt={alt}\n fallback={fallback}\n preview={canPreview ? defaultPreview : false}\n previewPrefixCls=\"ant-image-preview\"\n prefixCls=\"ant-image\"\n />\n </div>\n );\n}\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"TqRt\");","// 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, \".labelWrapper--3DsMTMfX {\\n display: inline-grid;\\n grid-auto-flow: column;\\n grid-gap: 6px;\\n vertical-align: middle;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"labelWrapper\": \"labelWrapper--3DsMTMfX\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"prop-types\"),require(\"react\")):\"function\"==typeof define&&define.amd?define([\"prop-types\",\"react\"],t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).AvatarEditor=t(e.PropTypes,e.React)}(this,function(e,t){\"use strict\";function o(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var n=o(e),i=o(t);function r(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function s(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function u(){return(u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e}).apply(this,arguments)}function a(t,e){var o,n=Object.keys(t);return Object.getOwnPropertySymbols&&(o=Object.getOwnPropertySymbols(t),e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)),n}function y(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{};e%2?a(Object(o),!0).forEach(function(e){s(t,e,o[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))})}return t}function h(e){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function c(e,t){return(c=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function l(e,t){if(null==e)return{};var o,n=function(e,t){if(null==e)return{};for(var o,n={},a=Object.keys(e),r=0;r<a.length;r++)o=a[r],0<=t.indexOf(o)||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols)for(var a=Object.getOwnPropertySymbols(e),r=0;r<a.length;r++)o=a[r],0<=t.indexOf(o)||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o]);return n}function d(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function p(r){var i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}();return function(){var e,t,o,n,a=h(r);return t=i?(e=h(this).constructor,Reflect.construct(a,arguments,e)):a.apply(this,arguments),o=this,!(n=t)||\"object\"!=typeof n&&\"function\"!=typeof n?d(o):n}}function m(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(\"undefined\"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var o=[],n=!0,a=!1,r=void 0;try{for(var i,s=e[Symbol.iterator]();!(n=(i=s.next()).done)&&(o.push(i.value),!t||o.length!==t);n=!0);}catch(e){a=!0,r=e}finally{try{n||null==s.return||s.return()}finally{if(a)throw r}}return o}(e,t)||g(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function g(e,t){if(e){if(\"string\"==typeof e)return f(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===o&&e.constructor&&(o=e.constructor.name),\"Map\"===o||\"Set\"===o?Array.from(e):\"Arguments\"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,n=new Array(t);o<t;o++)n[o]=e[o];return n}function v(a,r){return new Promise(function(e,t){var o,n=new Image;n.onload=function(){return e(n)},n.onerror=t,!1==(null!==(o=a)&&!!o.match(/^\\s*data:([a-z]+\\/[a-z]+(;[a-z-]+=[a-z-]+)?)?(;base64)?,[a-z0-9!$&',()*+;=\\-._~:@/?%\\s]*\\s*$/i))&&r&&(n.crossOrigin=r),n.src=a})}var b,w=!(\"undefined\"==typeof window||\"undefined\"==typeof navigator||!(\"ontouchstart\"in window||0<navigator.msMaxTouchPoints)),M=\"undefined\"!=typeof File,O={touch:{react:{down:\"onTouchStart\",mouseDown:\"onMouseDown\",drag:\"onTouchMove\",move:\"onTouchMove\",mouseMove:\"onMouseMove\",up:\"onTouchEnd\",mouseUp:\"onMouseUp\"},native:{down:\"touchstart\",mouseDown:\"mousedown\",drag:\"touchmove\",move:\"touchmove\",mouseMove:\"mousemove\",up:\"touchend\",mouseUp:\"mouseup\"}},desktop:{react:{down:\"onMouseDown\",drag:\"onDragOver\",move:\"onMouseMove\",up:\"onMouseUp\"},native:{down:\"mousedown\",drag:\"dragStart\",move:\"mousemove\",up:\"mouseup\"}}},I=w?O.touch:O.desktop,P=\"undefined\"!=typeof window&&window.devicePixelRatio?window.devicePixelRatio:1,C={x:.5,y:.5},x=function(){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&c(e,t)}(a,i[\"default\"].Component);var e,t,o,n=p(a);function a(e){var v;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,a),s(d(v=n.call(this,e)),\"state\",{drag:!1,my:null,mx:null,image:C}),s(d(v),\"handleImageReady\",function(e){var t=v.getInitialSize(e.width,e.height);t.resource=e,t.x=.5,t.y=.5,t.backgroundColor=v.props.backgroundColor,v.setState({drag:!1,image:t},v.props.onImageReady),v.props.onLoadSuccess(t)}),s(d(v),\"clearImage\",function(){v.canvas.getContext(\"2d\").clearRect(0,0,v.canvas.width,v.canvas.height),v.setState({image:C})}),s(d(v),\"handleMouseDown\",function(e){(e=e||window.event).preventDefault(),v.setState({drag:!0,mx:null,my:null})}),s(d(v),\"handleMouseUp\",function(){v.state.drag&&(v.setState({drag:!1}),v.props.onMouseUp())}),s(d(v),\"handleMouseMove\",function(e){var t,o,n,a,r,i,s,u,h,c,l,d,p,g,f,m;e=e||window.event,!1!==v.state.drag&&(e.preventDefault(),n={mx:t=e.targetTouches?e.targetTouches[0].pageX:e.clientX,my:o=e.targetTouches?e.targetTouches[0].pageY:e.clientY},m=v.props.rotate,m=(m%=360)<0?m+360:m,v.state.mx&&v.state.my&&(a=v.state.mx-t,r=v.state.my-o,i=v.state.image.width*v.props.scale,s=v.state.image.height*v.props.scale,h=(u=v.getCroppingRect()).x,c=u.y,h*=i,c*=s,l=function(e){return e*(Math.PI/180)},d=Math.cos(l(m)),g=c+-a*(p=Math.sin(l(m)))+r*d,f={x:(h+a*d+r*p)/i+1/v.props.scale*v.getXScale()/2,y:g/s+1/v.props.scale*v.getYScale()/2},v.props.onPositionChange(f),n.image=y(y({},v.state.image),f)),v.setState(n),v.props.onMouseMove(e))}),s(d(v),\"setCanvas\",function(e){v.canvas=e}),v.canvas=null,v}return e=a,(t=[{key:\"componentDidMount\",value:function(){this.props.disableHiDPIScaling&&(P=1);var e,t,o=this.canvas.getContext(\"2d\");this.props.image&&this.loadImage(this.props.image),this.paint(o),document&&(e=!!function(){var t=!1;try{var e=Object.defineProperty({},\"passive\",{get:function(){t=!0}});window.addEventListener(\"test\",e,e),window.removeEventListener(\"test\",e,e)}catch(e){t=!1}return t}()&&{passive:!1},t=I.native,document.addEventListener(t.move,this.handleMouseMove,e),document.addEventListener(t.up,this.handleMouseUp,e),w&&(document.addEventListener(t.mouseMove,this.handleMouseMove,e),document.addEventListener(t.mouseUp,this.handleMouseUp,e)))}},{key:\"componentDidUpdate\",value:function(e,t){this.props.image&&this.props.image!==e.image||this.props.width!==e.width||this.props.height!==e.height||this.props.backgroundColor!==e.backgroundColor?this.loadImage(this.props.image):this.props.image||t.image===C||this.clearImage();var o=this.canvas.getContext(\"2d\");o.clearRect(0,0,this.canvas.width,this.canvas.height),this.paint(o),this.paintImage(o,this.state.image,this.props.border),e.image===this.props.image&&e.width===this.props.width&&e.height===this.props.height&&e.position===this.props.position&&e.scale===this.props.scale&&e.rotate===this.props.rotate&&t.my===this.state.my&&t.mx===this.state.mx&&t.image.x===this.state.image.x&&t.image.y===this.state.image.y&&t.backgroundColor===this.state.backgroundColor||this.props.onImageChange()}},{key:\"componentWillUnmount\",value:function(){var e;document&&(e=I.native,document.removeEventListener(e.move,this.handleMouseMove,!1),document.removeEventListener(e.up,this.handleMouseUp,!1),w&&(document.removeEventListener(e.mouseMove,this.handleMouseMove,!1),document.removeEventListener(e.mouseUp,this.handleMouseUp,!1)))}},{key:\"isVertical\",value:function(){return!this.props.disableCanvasRotation&&this.props.rotate%180!=0}},{key:\"getBorders\",value:function(e){var t=0<arguments.length&&void 0!==e?e:this.props.border;return Array.isArray(t)?t:[t,t]}},{key:\"getDimensions\",value:function(){var e=this.props,t=e.width,o=e.height,n=e.rotate,a=e.border,r={},i=m(this.getBorders(a),2),s=i[0],u=i[1],h=t,c=o;return this.isVertical()?(r.width=c,r.height=h):(r.width=h,r.height=c),r.width+=2*s,r.height+=2*u,{canvas:r,rotate:n,width:t,height:o,border:a}}},{key:\"getImage\",value:function(){var e=this.getCroppingRect(),t=this.state.image;e.x*=t.resource.width,e.y*=t.resource.height,e.width*=t.resource.width,e.height*=t.resource.height;var o=document.createElement(\"canvas\");this.isVertical()?(o.width=e.height,o.height=e.width):(o.width=e.width,o.height=e.height);var n=o.getContext(\"2d\");return n.translate(o.width/2,o.height/2),n.rotate(this.props.rotate*Math.PI/180),n.translate(-o.width/2,-o.height/2),this.isVertical()&&n.translate((o.width-o.height)/2,(o.height-o.width)/2),t.backgroundColor&&(n.fillStyle=t.backgroundColor,n.fillRect(-e.x,-e.y,t.resource.width,t.resource.height)),n.drawImage(t.resource,-e.x,-e.y),o}},{key:\"getImageScaledToCanvas\",value:function(){var e=this.getDimensions(),t=e.width,o=e.height,n=document.createElement(\"canvas\");return this.isVertical()?(n.width=o,n.height=t):(n.width=t,n.height=o),this.paintImage(n.getContext(\"2d\"),this.state.image,0,1),n}},{key:\"getXScale\",value:function(){var e=this.props.width/this.props.height,t=this.state.image.width/this.state.image.height;return Math.min(1,e/t)}},{key:\"getYScale\",value:function(){var e=this.props.height/this.props.width,t=this.state.image.height/this.state.image.width;return Math.min(1,e/t)}},{key:\"getCroppingRect\",value:function(){var e=this.props.position||{x:this.state.image.x,y:this.state.image.y},t=1/this.props.scale*this.getXScale(),o=1/this.props.scale*this.getYScale(),n={x:e.x-t/2,y:e.y-o/2,width:t,height:o},a=0,r=1-n.width,i=0,s=1-n.height;return(this.props.disableBoundaryChecks||1<t||1<o)&&(a=-n.width,i=-n.height,s=r=1),y(y({},n),{},{x:Math.max(a,Math.min(n.x,r)),y:Math.max(i,Math.min(n.y,s))})}},{key:\"loadImage\",value:function(e){var t;M&&e instanceof File?this.loadingImage=(t=e,new Promise(function(o,n){var e=new FileReader;e.onload=function(e){try{var t=v(e.target.result);o(t)}catch(e){n(e)}},e.readAsDataURL(t)}).then(this.handleImageReady).catch(this.props.onLoadFailure)):\"string\"==typeof e&&(this.loadingImage=v(e,this.props.crossOrigin).then(this.handleImageReady).catch(this.props.onLoadFailure))}},{key:\"getInitialSize\",value:function(e,t){var o,n,a=this.getDimensions();return t/e<a.height/a.width?n=e*((o=this.getDimensions().height)/t):o=t*((n=this.getDimensions().width)/e),{height:o,width:n}}},{key:\"paintImage\",value:function(e,t,o,n){var a,r=3<arguments.length&&void 0!==n?n:P;t.resource&&(a=this.calculatePosition(t,o),e.save(),e.translate(e.canvas.width/2,e.canvas.height/2),e.rotate(this.props.rotate*Math.PI/180),e.translate(-e.canvas.width/2,-e.canvas.height/2),this.isVertical()&&e.translate((e.canvas.width-e.canvas.height)/2,(e.canvas.height-e.canvas.width)/2),e.scale(r,r),e.globalCompositeOperation=\"destination-over\",e.drawImage(t.resource,a.x,a.y,a.width,a.height),t.backgroundColor&&(e.fillStyle=t.backgroundColor,e.fillRect(a.x,a.y,a.width,a.height)),e.restore())}},{key:\"calculatePosition\",value:function(e,t){e=e||this.state.image;var o=m(this.getBorders(t),2),n=o[0],a=o[1],r=this.getCroppingRect(),i=e.width*this.props.scale,s=e.height*this.props.scale,u=-r.x*i,h=-r.y*s;return this.isVertical()?(u+=a,h+=n):(u+=n,h+=a),{x:u,y:h,height:s,width:i}}},{key:\"paint\",value:function(e){e.save(),e.scale(P,P),e.translate(0,0),e.fillStyle=\"rgba(\"+this.props.color.slice(0,4).join(\",\")+\")\";var t,o,n,a,r,i,s,u,h=this.props.borderRadius,c=this.getDimensions(),l=m(this.getBorders(c.border),2),d=l[0],p=l[1],g=c.canvas.height,f=c.canvas.width,h=Math.max(h,0);h=Math.min(h,f/2-d,g/2-p),e.beginPath(),t=e,a=f-2*(o=d),r=g-2*(n=p),0===(i=h)?t.rect(o,n,a,r):(s=a-i,u=r-i,t.translate(o,n),t.arc(i,i,i,Math.PI,1.5*Math.PI),t.lineTo(s,0),t.arc(s,i,i,1.5*Math.PI,2*Math.PI),t.lineTo(a,u),t.arc(s,u,i,2*Math.PI,.5*Math.PI),t.lineTo(i,r),t.arc(i,u,i,.5*Math.PI,Math.PI),t.translate(-o,-n)),e.rect(f,0,-f,g),e.fill(\"evenodd\"),e.restore()}},{key:\"render\",value:function(){var e=this.props,t=(e.scale,e.rotate,e.image,e.border,e.borderRadius,e.width,e.height,e.position,e.color,e.backgroundColor,e.style),o=(e.crossOrigin,e.onLoadFailure,e.onLoadSuccess,e.onImageReady,e.onImageChange,e.onMouseUp,e.onMouseMove,e.onPositionChange,e.disableBoundaryChecks,e.disableHiDPIScaling,e.disableCanvasRotation,l(e,[\"scale\",\"rotate\",\"image\",\"border\",\"borderRadius\",\"width\",\"height\",\"position\",\"color\",\"backgroundColor\",\"style\",\"crossOrigin\",\"onLoadFailure\",\"onLoadSuccess\",\"onImageReady\",\"onImageChange\",\"onMouseUp\",\"onMouseMove\",\"onPositionChange\",\"disableBoundaryChecks\",\"disableHiDPIScaling\",\"disableCanvasRotation\"])),n=this.getDimensions(),a={width:n.canvas.width,height:n.canvas.height,cursor:this.state.drag?\"grabbing\":\"grab\",touchAction:\"none\"},r={width:n.canvas.width*P,height:n.canvas.height*P,style:y(y({},a),t)};return r[I.react.down]=this.handleMouseDown,w&&(r[I.react.mouseDown]=this.handleMouseDown),i.default.createElement(\"canvas\",u({ref:this.setCanvas},r,o))}}])&&r(e.prototype,t),o&&r(e,o),a}();return s(x,\"propTypes\",{scale:n.default.number,rotate:n.default.number,image:n.default.oneOfType([n.default.string].concat(function(e){if(Array.isArray(e))return f(e)}(b=M?[n.default.instanceOf(File)]:[])||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(b)||g(b)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}())),border:n.default.oneOfType([n.default.number,n.default.arrayOf(n.default.number)]),borderRadius:n.default.number,width:n.default.number,height:n.default.number,position:n.default.shape({x:n.default.number,y:n.default.number}),color:n.default.arrayOf(n.default.number),backgroundColor:n.default.string,crossOrigin:n.default.oneOf([\"\",\"anonymous\",\"use-credentials\"]),onLoadFailure:n.default.func,onLoadSuccess:n.default.func,onImageReady:n.default.func,onImageChange:n.default.func,onMouseUp:n.default.func,onMouseMove:n.default.func,onPositionChange:n.default.func,disableBoundaryChecks:n.default.bool,disableHiDPIScaling:n.default.bool,disableCanvasRotation:n.default.bool}),s(x,\"defaultProps\",{scale:1,rotate:0,border:25,borderRadius:0,width:200,height:200,color:[0,0,0,.5],onLoadFailure:function(){},onLoadSuccess:function(){},onImageReady:function(){},onImageChange:function(){},onMouseUp:function(){},onMouseMove:function(){},onPositionChange:function(){},disableBoundaryChecks:!1,disableHiDPIScaling:!1,disableCanvasRotation:!0}),x});\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, \".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","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\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, \".container--1XcZs0yy .ant-transfer-list-with-footer:first-child .ant-transfer-list-footer {\\n display: none;\\n }\\n\\n.footer--3Yd1lpHh {\\n text-align: right;\\n padding: 10px;\\n font-size: var(--normal-font-size);\\n font-weight: var(--font-weight-400);\\n color: var(--color-secondary-text);\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"container--1XcZs0yy\",\n\t\"footer\": \"footer--3Yd1lpHh\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","module.exports = dll;","// 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, \".dynamicGridContainer--3VkMGoEw {\\n display: grid;\\n width: 100%;\\n grid-gap: var(--card-content-gap);\\n height: 100%;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"dynamicGridContainer\": \"dynamicGridContainer--3VkMGoEw\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"XzT5\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"Z0cm\");","// 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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar raf = function raf(callback) {\n return +setTimeout(callback, 16);\n};\nvar caf = function caf(num) {\n return clearTimeout(num);\n};\nif (typeof window !== 'undefined' && 'requestAnimationFrame' in window) {\n raf = function raf(callback) {\n return window.requestAnimationFrame(callback);\n };\n caf = function caf(handle) {\n return window.cancelAnimationFrame(handle);\n };\n}\nvar rafUUID = 0;\nvar rafIds = new Map();\nfunction cleanup(id) {\n rafIds.delete(id);\n}\nvar wrapperRaf = function wrapperRaf(callback) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n rafUUID += 1;\n var id = rafUUID;\n function callRef(leftTimes) {\n if (leftTimes === 0) {\n // Clean up\n cleanup(id);\n\n // Trigger\n callback();\n } else {\n // Next raf\n var realId = raf(function () {\n callRef(leftTimes - 1);\n });\n\n // Bind real raf id\n rafIds.set(id, realId);\n }\n }\n callRef(times);\n return id;\n};\nwrapperRaf.cancel = function (id) {\n var realId = rafIds.get(id);\n cleanup(realId);\n return caf(realId);\n};\nvar _default = wrapperRaf;\nexports.default = _default;","// 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, \".generalBadge--1umWD8PH .ant-badge .ant-badge-count {\\n transform: translate(100%, -10px);\\n height: 16px;\\n line-height: 16px;\\n border-radius: 8px;\\n padding: 0 5px;\\n min-width: 0;\\n box-shadow: none;\\n }\\n .generalBadge--1umWD8PH .ant-badge .ant-badge-dot {\\n transform: translate(100%, 0);\\n }\\n .generalBadge--1umWD8PH presentational-bricks\\\\.brick-user + .ant-badge-count {\\n top: 5px;\\n right: 15px;\\n }\\n .generalBadge--1umWD8PH presentational-bricks\\\\.brick-user + .ant-badge-dot {\\n top: 0;\\n right: 12px;\\n }\\n\\n.noPointerEvents--1h5VZvjf .ant-badge-count {\\n pointer-events: none;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"generalBadge\": \"generalBadge--1umWD8PH\",\n\t\"noPointerEvents\": \"noPointerEvents--1h5VZvjf\"\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!./index.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/presentational-bricks:XuQu\"))(\"c+Xe\");","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.call = call;\nexports.default = void 0;\nexports.note = note;\nexports.noteOnce = noteOnce;\nexports.resetWarned = resetWarned;\nexports.warning = warning;\nexports.warningOnce = warningOnce;\n/* eslint-disable no-console */\nvar warned = {};\nfunction warning(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n console.error(\"Warning: \".concat(message));\n }\n}\nfunction note(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n console.warn(\"Note: \".concat(message));\n }\n}\nfunction resetWarned() {\n warned = {};\n}\nfunction call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\nfunction warningOnce(valid, message) {\n call(warning, valid, message);\n}\nfunction noteOnce(valid, message) {\n call(note, valid, message);\n}\nvar _default = warningOnce;\n/* eslint-enable */\nexports.default = _default;","// 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, \".buttonWrapper--3qTQolDY {\\n padding: 18px;\\n background-color: #f5f5f5;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"buttonWrapper\": \"buttonWrapper--3qTQolDY\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"JxWY\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"eUgh\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"foSv\");","// 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, \".cardWrapper--3H9NFDH- {\\n background: linear-gradient(\\n 180deg,\\n #ffffff 0%,\\n rgba(255, 255, 255, 0.6) 100%\\n );\\n padding: 20px 40px;\\n padding-left: 70px;\\n\\n border-radius: 10px 10px 0px 0px;\\n width: 100%;\\n display: grid;\\n grid-template-rows: repeat(1, minmax(100px, 1fr));\\n grid-auto-flow: column;\\n grid-auto-columns: minmax(auto, 400px);\\n grid-gap: 4%;\\n}\\n .cardWrapper--3H9NFDH- .cardContent--22x967SN {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n gap: 10px;\\n }\\n .cardWrapper--3H9NFDH- .cardContent--22x967SN .cardIcon--37ilMv5e {\\n position: absolute;\\n top: 1px;\\n left: -30px;\\n width: 18px;\\n height: 18px;\\n border-radius: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: #2e333a;\\n color: #f5f5f5;\\n font-weight: 200;\\n font-family: sans-serif;\\n }\\n .cardWrapper--3H9NFDH- .cardContent--22x967SN h5 {\\n margin: 0;\\n padding: 0;\\n color: #595959;\\n position: relative;\\n }\\n .cardWrapper--3H9NFDH- .cardContent--22x967SN section {\\n color: rgba(0, 0, 0, 0.4);\\n flex: 1 0 auto;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"cardWrapper\": \"cardWrapper--3H9NFDH-\",\n\t\"cardContent\": \"cardContent--22x967SN\",\n\t\"cardIcon\": \"cardIcon--37ilMv5e\"\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-result {\\n padding: 48px 32px;\\n}\\n.ant-result-success .ant-result-icon > .anticon {\\n color: #52c41a;\\n}\\n.ant-result-error .ant-result-icon > .anticon {\\n color: var(--antd-error-color);\\n}\\n.ant-result-info .ant-result-icon > .anticon {\\n color: #0071eb;\\n}\\n.ant-result-warning .ant-result-icon > .anticon {\\n color: #faad14;\\n}\\n.ant-result-image {\\n width: 250px;\\n height: 295px;\\n margin: auto;\\n}\\n.ant-result-icon {\\n margin-bottom: 24px;\\n text-align: center;\\n}\\n.ant-result-icon > .anticon {\\n font-size: 72px;\\n}\\n.ant-result-title {\\n color: var(--antd-heading-color);\\n font-size: 24px;\\n line-height: 1.8;\\n text-align: center;\\n}\\n.ant-result-subtitle {\\n color: var(--antd-text-color-secondary);\\n font-size: 14px;\\n line-height: 1.6;\\n text-align: center;\\n}\\n.ant-result-extra {\\n margin: 24px 0 0 0;\\n text-align: center;\\n}\\n.ant-result-extra > * {\\n margin-right: 8px;\\n}\\n.ant-result-extra > *:last-child {\\n margin-right: 0;\\n}\\n.ant-result-content {\\n margin-top: 24px;\\n padding: 24px 40px;\\n background-color: var(--antd-background-color-light);\\n}\\n.ant-result-rtl {\\n direction: rtl;\\n}\\n.ant-result-rtl .ant-result-extra > * {\\n margin-right: 0;\\n margin-left: 8px;\\n}\\n.ant-result-rtl .ant-result-extra > *:last-child {\\n margin-left: 0;\\n}\\n.ant-empty {\\n margin: 0 8px;\\n font-size: 14px;\\n line-height: 1.5715;\\n text-align: center;\\n}\\n.ant-empty-image {\\n height: 100px;\\n margin-bottom: 8px;\\n}\\n.ant-empty-image img {\\n height: 100%;\\n}\\n.ant-empty-image svg {\\n height: 100%;\\n margin: auto;\\n}\\n.ant-empty-footer {\\n margin-top: 16px;\\n}\\n.ant-empty-normal {\\n margin: 32px 0;\\n color: var(--text-color-disabled);\\n}\\n.ant-empty-normal .ant-empty-image {\\n height: 40px;\\n}\\n.ant-empty-small {\\n margin: 8px 0;\\n color: var(--text-color-disabled);\\n}\\n.ant-empty-small .ant-empty-image {\\n height: 35px;\\n}\\n.ant-empty-img-default-ellipse {\\n fill: #f5f5f5;\\n fill-opacity: 0.8;\\n}\\n.ant-empty-img-default-path-1 {\\n fill: #aeb8c2;\\n}\\n.ant-empty-img-default-path-2 {\\n fill: url(#linearGradient-1);\\n}\\n.ant-empty-img-default-path-3 {\\n fill: #f5f5f7;\\n}\\n.ant-empty-img-default-path-4 {\\n fill: #dce0e6;\\n}\\n.ant-empty-img-default-path-5 {\\n fill: #dce0e6;\\n}\\n.ant-empty-img-default-g {\\n fill: #fff;\\n}\\n.ant-empty-img-simple-ellipse {\\n fill: #f5f5f5;\\n}\\n.ant-empty-img-simple-g {\\n stroke: #d9d9d9;\\n}\\n.ant-empty-img-simple-path {\\n fill: #fafafa;\\n}\\n.ant-empty-rtl {\\n direction: rtl;\\n}\\n.ant-result-title {\\n font-weight: var(--font-weight-500);\\n color: var(--color-header-text);\\n}\\n.ant-result-content {\\n font-size: var(--auxiliary-font-size);\\n font-weight: var(--font-weight-400);\\n color: var(--color-secondary-text);\\n margin-top: 0;\\n padding-top: 0;\\n background-color: transparent;\\n}\\n.ant-result-subtitle {\\n font-size: 16px;\\n color: var(--color-secondary-text);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-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, \".DividerRadiation--16e24vrx {\\n display: flex;\\n clear: both;\\n width: 100%;\\n min-width: 100%;\\n margin: 24px 0;\\n}\\n.DividerRadiationText--3rfC9kK9 {\\n color: var(--antd-divider-radiation-text-color);\\n display: flex;\\n white-space: nowrap;\\n}\\n.DividerRadiation--16e24vrx:after {\\n content: \\\"\\\";\\n position: relative;\\n top: 13px;\\n width: 95%;\\n transform: translateY(50%);\\n height: 1px;\\n background: var(--antd-divider-radiation-color);\\n -webkit-mask-image: linear-gradient(\\n to right,\\n #f9f9f9 6px,\\n #979797 6px,\\n transparent 0px\\n );\\n -webkit-mask-size: 8px 2px;\\n}\\n.DividerRadiationTitle--3d4-y2VD {\\n font-size: 16px;\\n font-weight: 500;\\n margin-right: 10px;\\n}\\n\\n.DividerRadiation--16e24vrx .ProportionText--3Xi6cIhC {\\n font-size: 12px;\\n color: var(--antd-divider-radiation-proportion-normal-text-color);\\n line-height: 25px;\\n}\\n.DividerRadiation--16e24vrx .ProportionText--3Xi6cIhC strong {\\n color: var(--antd-divider-radiation-proportion-strong-text-color);\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"DividerRadiation\": \"DividerRadiation--16e24vrx\",\n\t\"DividerRadiationText\": \"DividerRadiationText--3rfC9kK9\",\n\t\"DividerRadiationTitle\": \"DividerRadiationTitle--3d4-y2VD\",\n\t\"ProportionText\": \"ProportionText--3Xi6cIhC\"\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, \".searchInput--1OQOLM80 {\\n border-radius: 3px;\\n width: 270px;\\n height: 32px;\\n padding-right: 10px;\\n padding-left: 13px;\\n}\\n.searchIcon--TC4NqEJP {\\n position: absolute;\\n top: 9px;\\n left: 249px;\\n color: #bfbfbf;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"searchInput\": \"searchInput--1OQOLM80\",\n\t\"searchIcon\": \"searchIcon--TC4NqEJP\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"hzQT\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"i8i4\");","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = useMergedState;\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\nvar _useEvent = _interopRequireDefault(require(\"./useEvent\"));\nvar _useLayoutEffect = require(\"./useLayoutEffect\");\nvar _useState5 = _interopRequireDefault(require(\"./useState\"));\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n return value !== undefined;\n}\n\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nfunction useMergedState(defaultStateValue, option) {\n var _ref = option || {},\n defaultValue = _ref.defaultValue,\n value = _ref.value,\n onChange = _ref.onChange,\n postState = _ref.postState;\n\n // ======================= Init =======================\n var _useState = (0, _useState5.default)(function () {\n if (hasValue(value)) {\n return value;\n } else if (hasValue(defaultValue)) {\n return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n } else {\n return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n }\n }),\n _useState2 = (0, _slicedToArray2.default)(_useState, 2),\n innerValue = _useState2[0],\n setInnerValue = _useState2[1];\n var mergedValue = value !== undefined ? value : innerValue;\n var postMergedValue = postState ? postState(mergedValue) : mergedValue;\n\n // ====================== Change ======================\n var onChangeFn = (0, _useEvent.default)(onChange);\n var _useState3 = (0, _useState5.default)([mergedValue]),\n _useState4 = (0, _slicedToArray2.default)(_useState3, 2),\n prevValue = _useState4[0],\n setPrevValue = _useState4[1];\n (0, _useLayoutEffect.useLayoutUpdateEffect)(function () {\n var prev = prevValue[0];\n if (innerValue !== prev) {\n onChangeFn(innerValue, prev);\n }\n }, [prevValue]);\n\n // Sync value back to `undefined` when it from control to un-control\n (0, _useLayoutEffect.useLayoutUpdateEffect)(function () {\n if (!hasValue(value)) {\n setInnerValue(value);\n }\n }, [value]);\n\n // ====================== Update ======================\n var triggerChange = (0, _useEvent.default)(function (updater, ignoreDestroy) {\n setInnerValue(updater, ignoreDestroy);\n setPrevValue([mergedValue], ignoreDestroy);\n });\n return [postMergedValue, triggerChange];\n}","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"l4aY\");","// 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, \".onlyShowMode--bGleFpnW .ant-slider-handle {\\n display: none;\\n }\\n .onlyShowMode--bGleFpnW.ant-slider-disabled {\\n cursor: default;\\n }\\n .onlyShowMode--bGleFpnW .ant-slider-track {\\n background-color: #7ac8ff !important;\\n }\\n\\n.onlyShowMode--bGleFpnW.bigMode--20iCjVGQ.ant-slider-disabled {\\n margin: 0px 6px;\\n height: 22px;\\n }\\n\\n.onlyShowMode--bGleFpnW.bigMode--20iCjVGQ .ant-slider-rail {\\n border-radius: 0px;\\n height: 14px;\\n }\\n\\n.onlyShowMode--bGleFpnW.bigMode--20iCjVGQ .ant-slider-track {\\n background-color: #00ca4c !important;\\n }\\n\\n.onlyShowMode--bGleFpnW.bigMode--20iCjVGQ .ant-slider-track {\\n border-radius: 0px;\\n height: 14px;\\n }\\n\\n.onlyShowMode--bGleFpnW.bigMode--20iCjVGQ .ant-slider-step {\\n height: 14px;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"onlyShowMode\": \"onlyShowMode--bGleFpnW\",\n\t\"bigMode\": \"bigMode--20iCjVGQ\"\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, \".awards--1XL6jFhn {\\n display: inline-block;\\n font-family: \\\"Roboto\\\", sans-serif;\\n font-size: var(--card-title-font-size);\\n font-weight: var(--font-weight-500);\\n width: 38px;\\n height: 38px;\\n line-height: 30px;\\n min-width: 38px;\\n border-radius: 100%;\\n color: var(--color-normal-icon);\\n text-align: center;\\n vertical-align: middle;\\n position: relative;\\n border-width: 4px;\\n border-style: solid;\\n z-index: 1;\\n}\\n .awards--1XL6jFhn span {\\n font-size: var(--sub-title-font-size-small);\\n }\\n\\n.topThree--4wH_LOQo {\\n font-size: 16px;\\n line-height: 30px;\\n}\\n\\n.small--1guC4GXv {\\n height: 26px;\\n width: 26px;\\n min-width: 26px;\\n font-size: 12px;\\n border-width: 2px;\\n line-height: 22px;\\n}\\n\\n.small--1guC4GXv span {\\n font-size: 6px;\\n }\\n\\n.medalGold--21PU69U6 {\\n background-image: var(--rank-table-medal-gold-background-image);\\n border-color: var(--rank-table-medal-gold-border-color);\\n text-shadow: var(--rank-table-medal-gold-text-shadow);\\n background-clip: content-box;\\n}\\n\\n.medalSilver--1XgvKOFa {\\n background-image: var(--rank-table-medal-silver-background-image);\\n border-color: var(--rank-table-medal-silver-border-color);\\n text-shadow: var(--rank-table-medal-silver-text-shadow);\\n background-clip: content-box;\\n}\\n\\n.medalBronze--2H-9ccbG {\\n background-image: var(--rank-table-medal-bronze-background-image);\\n border-color: var(--rank-table-medal-bronze-border-color);\\n text-shadow: var(--rank-table-medal-bronze-text-shadow);\\n background-clip: content-box;\\n}\\n\\n.normalAwards--nwvx6K41 {\\n background: var(--color-info-bg);\\n color: #5685eb;\\n border-color: var(--color-info-bg);\\n}\\n\\n.header--28xEIaEz {\\n display: flex;\\n align-items: center;\\n gap: 10px;\\n grid-gap: 10px;\\n padding-bottom: 16px;\\n justify-content: space-between;\\n}\\n\\n.header--28xEIaEz .leftCell--lll8Rk9M {\\n display: flex;\\n align-items: center;\\n gap: 10px;\\n font-size: var(--card-title-font-size);\\n font-weight: var(--font-weight-500);\\n color: var(--color-header-text);\\n }\\n\\n.header--28xEIaEz .rightCell--3x0YZR8r {\\n font-size: 17px;\\n color: var(--color-header-text);\\n }\\n\\n.trendBar--OUeZ9u3g {\\n display: grid;\\n grid-column-gap: 0;\\n height: 16px;\\n width: 16px;\\n}\\n\\n.trendBar--OUeZ9u3g span {\\n border-radius: 2px 2px 0 0;\\n }\\n\\n.yellowBar--2L-Qrjkz {\\n grid-row-start: 30;\\n grid-row-end: 101;\\n background-color: #fcca1e;\\n}\\n\\n.blueBar--34IhttE6 {\\n grid-row-start: 1;\\n grid-row-end: 101;\\n background-color: #2953ff;\\n}\\n\\n.redBar--26zZ_V0Q {\\n grid-row-start: 50;\\n grid-row-end: 101;\\n background-color: #ff354a;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"awards\": \"awards--1XL6jFhn\",\n\t\"topThree\": \"topThree--4wH_LOQo\",\n\t\"small\": \"small--1guC4GXv\",\n\t\"medalGold\": \"medalGold--21PU69U6\",\n\t\"medalSilver\": \"medalSilver--1XgvKOFa\",\n\t\"medalBronze\": \"medalBronze--2H-9ccbG\",\n\t\"normalAwards\": \"normalAwards--nwvx6K41\",\n\t\"header\": \"header--28xEIaEz\",\n\t\"leftCell\": \"leftCell--lll8Rk9M\",\n\t\"rightCell\": \"rightCell--3x0YZR8r\",\n\t\"trendBar\": \"trendBar--OUeZ9u3g\",\n\t\"yellowBar\": \"yellowBar--2L-Qrjkz\",\n\t\"blueBar\": \"blueBar--34IhttE6\",\n\t\"redBar\": \"redBar--26zZ_V0Q\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"lSNA\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"md7G\");","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjZweCIgaGVpZ2h0PSIyNnB4IiB2aWV3Qm94PSIwIDAgMjYgMjYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+5Y2h54mH6L656KeS57uT5p6EL+WPs+S4ijwvdGl0bGU+CiAgICA8ZyBpZD0i6aG16Z2iLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CiAgICAgICAgPGcgaWQ9IuaWh+WtlyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIwMDguMDAwMDAwLCAtMTIzMi4wMDAwMDApIiBzdHJva2U9IiMyMTNBNzkiIHN0cm9rZS13aWR0aD0iMiI+CiAgICAgICAgICAgIDxnIGlkPSLor5Xlm77lsZXnpLotMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM0LjAwMDAwMCwgMTEwMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxnIGlkPSLnu5/orqHljaHniYciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4LjAwMDAwMCwgMTMwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xODU3LDI1IEwxODU3LDYgQzE4NTcsMy4yMzg1NzYyNSAxODU5LjIzODU4LDEgMTg2MiwxIEwxODgxLDEgTDE4ODEsMSIgaWQ9IuWNoeeJh+i+ueinkue7k+aehC/lj7PkuIoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4NjkuMDAwMDAwLCAxMy4wMDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTE4NjkuMDAwMDAwLCAtMTMuMDAwMDAwKSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","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!./BrickTable.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, useMemo } from \"react\";\nimport Icon from \"@ant-design/icons\";\nimport { Table, Card, ConfigProvider } from \"antd\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { TableProps } from \"antd/lib/table\";\nimport { ExpandableConfig } from \"antd/lib/table/interface\";\nimport { BrickAsComponent } from \"@next-core/brick-kit\";\nimport { UseBrickConf } from \"@next-core/brick-types\";\nimport { getCellStyle } from \"./brickTableHelper\";\nimport { pickBy, isNil, toPath, isEqual, isEmpty } from \"lodash\";\nimport classNames from \"classnames\";\nimport styles from \"./BrickTable.module.css\";\nimport { DndProvider, useDrag, useDrop } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport update from \"immutability-helper\";\nimport { CustomColumn, CustomColumnComponent } from \"./index\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { EasyopsEmpty } from \"@next-core/brick-kit\";\n\nconst type = \"DraggableBodyRow\";\n\nconst downMenuIcon: MenuIcon = {\n lib: \"antd\",\n icon: \"down\",\n theme: \"outlined\",\n};\n\nconst rightMenuIcon: MenuIcon = {\n lib: \"antd\",\n icon: \"right\",\n theme: \"outlined\",\n};\n\nexport interface BrickTableProps<RecordType = Record<string, unknown>>\n extends Pick<\n TableProps<RecordType>,\n | \"dataSource\"\n | \"expandRowByClick\"\n | \"defaultExpandAllRows\"\n | \"onExpand\"\n | \"onExpandedRowsChange\"\n | \"expandedRowKeys\"\n | \"scroll\"\n | \"showHeader\"\n > {\n columns: CustomColumn[];\n configProps?: TableProps<RecordType>;\n error?: any;\n deleteEnabled?: boolean;\n onDelete?: (index: number) => void;\n onChange: any;\n onSelectChange?: (selected: string[]) => void;\n showCard?: boolean;\n // 展开行相关属性\n expandedRowBrick?: {\n useBrick?: UseBrickConf;\n };\n emptyUseBrick?: {\n useBrick?: UseBrickConf;\n };\n expandIcon?: {\n collapsedIcon: MenuIcon;\n expandedIcon: MenuIcon;\n };\n expandIconAsCell?: boolean;\n expandIconColumnIndex?: number;\n rowKey?: string;\n childrenColumnName?: string;\n tableDraggable?: boolean;\n onDrag?: (data: Record<string, any>[]) => void;\n zebraPattern?: boolean;\n optimizedColumns?: Array<string | number>;\n ellipsisInfo?: boolean;\n thTransparent?: boolean;\n acceptType?: string;\n xSmallSizeTable?: boolean;\n showHeaderExpandAll?: boolean;\n expandable?: ExpandableConfig<RecordType> | false;\n}\n\nconst DraggableBodyRow = ({\n index,\n moveRow,\n acceptType,\n className,\n style,\n ...restProps\n}) => {\n const ref = React.useRef();\n const [{ isOver, dropClassName }, drop] = useDrop({\n accept: acceptType || type,\n collect: (monitor) => {\n const { index: dragIndex } = monitor.getItem() || {};\n if (dragIndex === index) {\n return {};\n }\n return {\n isOver: monitor.isOver(),\n dropClassName:\n dragIndex < index\n ? `${styles.dropOverDownward}`\n : `${styles.dropOverUpward}`,\n };\n },\n drop: (item: any) => {\n /* istanbul ignore next */\n moveRow(item.index, index, item.rowKey);\n },\n });\n const [, drag] = useDrag({\n item: {\n type: acceptType || type,\n index,\n rowKey: restProps[\"data-row-key\"],\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n drop(drag(ref));\n return (\n <tr\n ref={ref}\n className={classNames(className, styles.draggableRow, {\n [dropClassName]: isOver,\n })}\n style={{ cursor: \"move\", ...style }}\n {...restProps}\n />\n );\n};\n\nconst getCustomHeader = (\n useBrick: UseBrickConf,\n data?: { title: unknown }\n): (() => React.ReactElement) => {\n return function CustomHeader() {\n return <BrickAsComponent useBrick={useBrick} data={data} />;\n };\n};\n\ntype ItemBrickDataMap = Map<unknown, BrickData>;\ntype BrickData = {\n cellData: unknown;\n rowData: Record<string, unknown>;\n columnIndex: number;\n};\n\nconst getCustomComp = (\n useBrick: UseBrickConf,\n component?: CustomColumnComponent,\n itemBrickDataMap?: ItemBrickDataMap\n) => {\n return function CustomComp(\n value: any,\n item: Record<string, any>,\n index: number\n ) {\n if (useBrick) {\n let brickData: BrickData = itemBrickDataMap.get(item);\n\n if (!brickData) {\n brickData = {\n cellData: value,\n rowData: item,\n columnIndex: index,\n };\n itemBrickDataMap.set(item, brickData);\n }\n\n return <BrickAsComponent useBrick={useBrick} data={brickData} />;\n }\n\n if (component.fields) {\n // eslint-disable-next-line no-console\n console.warn(\n \"`<presentational-bricks.brick-table>.columns[].component` is deprecated, use `useBrick` instead.\"\n );\n const props: Record<string, any> = Object.assign(\n {},\n component.properties\n );\n const {\n value: valueKey,\n item: itemKey,\n index: indexKey,\n } = component.fields;\n if (valueKey) {\n props[valueKey] = value;\n }\n\n if (itemKey) {\n props[itemKey] = item;\n }\n\n if (indexKey) {\n props[indexKey] = index;\n }\n\n return (\n <BrickAsComponent\n key={value}\n useBrick={{\n ...component,\n properties: props,\n }}\n />\n );\n }\n };\n};\n\nexport function BrickTable(props: BrickTableProps): React.ReactElement {\n if (props.error) {\n throw props.error;\n }\n\n const {\n configProps,\n columns,\n rowKey = \"key\",\n expandIconAsCell,\n expandIconColumnIndex,\n childrenColumnName,\n deleteEnabled,\n scroll,\n optimizedColumns,\n onDelete, // 用于 brick form 中,will be deprecated\n ellipsisInfo,\n showHeader,\n expandable: _expandable,\n } = props;\n\n const initData = useMemo(() => {\n return props.dataSource?.map((item, index) =>\n isNil(item[rowKey]) ? { ...item, [rowKey]: index } : item\n );\n }, [props.dataSource, rowKey]);\n\n const [data, setData] = useState(initData);\n const [expandedRowKeys, setExpandedRowKeys] = useState([]);\n\n const rowKeyExpandIconMapRef = useRef<Map<unknown, React.ReactNode>>(\n new Map()\n );\n const columnTitleBrickDataMapRef = useRef<\n Map<CustomColumn, { title: unknown }>\n >(new Map());\n const useBrickItemBrickDataMapRef = useRef<\n Map<UseBrickConf, ItemBrickDataMap>\n >(new Map());\n const itemExpandedRowBrickDataMapRef = useRef<Map<unknown, unknown>>(\n new Map()\n );\n\n const treeToFlat = (list: any) => {\n const childrenName = props.childrenColumnName || \"children\";\n return list.reduce((ls: any, item: any) => {\n const { children, ...res } = { ...item, children: item[childrenName] };\n if (children && children.length) {\n return ls.concat(\n { ...res, isParentOfTree: true },\n treeToFlat(children)\n );\n } else {\n return ls.concat(res);\n }\n }, []);\n };\n\n useEffect(() => {\n if (props.expandedRowKeys) {\n setExpandedRowKeys(props.expandedRowKeys);\n } else if (props.defaultExpandAllRows) {\n setExpandedRowKeys(\n treeToFlat(props.dataSource || [])\n .filter((i) => i.isParentOfTree)\n .map((i) => i[props.rowKey])\n );\n }\n }, [\n props.expandedRowKeys,\n props.dataSource,\n props.defaultExpandAllRows,\n props.rowKey,\n ]);\n\n useEffect(() => {\n itemExpandedRowBrickDataMapRef.current.clear();\n setData(initData);\n }, [initData]);\n\n const expandIconColumnIndexOffset = configProps?.rowSelection ? -1 : 0;\n const customColumns = useMemo(() => {\n if (columns) {\n columnTitleBrickDataMapRef.current.clear();\n useBrickItemBrickDataMapRef.current.clear();\n const customColumns = columns.map((column, index) => {\n const {\n useBrick,\n component,\n valueSuffix,\n cellStatus,\n cellStyle = {},\n titleUseBrick,\n headerBrick,\n colSpanKey,\n rowSpanKey,\n filterDropdownBrick,\n customFilterIcon,\n ...columnConf\n } = column;\n if (headerBrick?.useBrick || titleUseBrick) {\n if (titleUseBrick) {\n // eslint-disable-next-line no-console\n console.warn(\n \"`titleUseBrick` of `<presentational-bricks.brick-table>` is deprecated, use `headerBrick` instead.\"\n );\n }\n\n const useBrick = headerBrick?.useBrick || titleUseBrick;\n let data = columnTitleBrickDataMapRef.current.get(column);\n\n if (!data) {\n data = {\n title: columnConf.title,\n };\n columnTitleBrickDataMapRef.current.set(column, data);\n }\n\n columnConf.title = getCustomHeader(useBrick, data);\n }\n if (index === 0 && !!props.showHeaderExpandAll) {\n let iconNode: React.ReactNode = <></>;\n let icon = props.expandIcon?.collapsedIcon || downMenuIcon;\n const allKeys = treeToFlat(props.dataSource || [])\n .filter((i) => i.isParentOfTree)\n .map((i) => i[props.rowKey]);\n if (!allKeys?.every((i) => expandedRowKeys?.includes(i))) {\n icon = props.expandIcon?.expandedIcon || rightMenuIcon;\n }\n iconNode = (\n <span\n className={styles.expandIconSpan}\n data-testid=\"expand-all-icon\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n setExpandedRowKeys(isEmpty(expandedRowKeys) ? allKeys : []);\n }}\n >\n <GeneralIcon icon={icon} />\n </span>\n );\n columnConf.title = (\n <>\n {iconNode}\n {columnConf.title}\n </>\n );\n }\n\n if (filterDropdownBrick?.useBrick) {\n columnConf.filterDropdown = (\n <BrickAsComponent\n useBrick={filterDropdownBrick.useBrick}\n ></BrickAsComponent>\n );\n }\n columnConf.filterIcon = (\n <GeneralIcon\n icon={\n customFilterIcon || {\n lib: \"easyops\",\n icon: \"condition-config-fill\",\n category: \"default\",\n }\n }\n />\n );\n\n if (useBrick || component) {\n let itemBrickDataMap: ItemBrickDataMap;\n\n if (useBrick) {\n itemBrickDataMap =\n useBrickItemBrickDataMapRef.current.get(useBrick);\n\n if (!itemBrickDataMap) {\n itemBrickDataMap = new Map();\n useBrickItemBrickDataMapRef.current.set(\n useBrick,\n itemBrickDataMap\n );\n }\n }\n\n columnConf.render = getCustomComp(\n useBrick,\n component,\n itemBrickDataMap\n );\n if (optimizedColumns?.includes(column.dataIndex)) {\n // [only update when record changed](https://ant.design/components/table-cn/#%E4%B8%BA%E4%BB%80%E4%B9%88-%E6%9B%B4%E6%96%B0-state-%E4%BC%9A%E5%AF%BC%E8%87%B4%E5%85%A8%E8%A1%A8%E6%B8%B2%E6%9F%93%EF%BC%9F)\n columnConf.shouldCellUpdate = (record, prevRecord) => {\n return !isEqual(record, prevRecord);\n };\n }\n } else if (valueSuffix) {\n columnConf.render = (value) => value + valueSuffix;\n }\n if (\n !expandIconAsCell &&\n index === expandIconColumnIndex + expandIconColumnIndexOffset\n ) {\n const innerRender = columnConf.render;\n columnConf.render = function ExpandIcon(value, record, index) {\n return (\n <>\n {!record[childrenColumnName] &&\n rowKeyExpandIconMapRef.current.get(\n rowKey ? record[rowKey] : record\n )}\n {innerRender ? innerRender(value, record, index) : value}\n </>\n );\n };\n }\n if (cellStatus || colSpanKey || rowSpanKey || cellStyle) {\n const innerRender = columnConf.render;\n columnConf.render = (value, item, index) => {\n return {\n children: innerRender ? innerRender(value, item, index) : value,\n props: {\n colSpan: item[colSpanKey],\n rowSpan: item[rowSpanKey],\n style: {\n ...(cellStatus ? getCellStyle(cellStatus, item, value) : {}),\n ...cellStyle,\n },\n },\n };\n };\n }\n\n if (typeof columnConf.dataIndex === \"string\") {\n columnConf.dataIndex = toPath(columnConf.dataIndex);\n }\n if (columnConf.verticalAlign === \"top\") {\n columnConf.className\n ? (columnConf.className += \" alignTop\")\n : (columnConf.className = \"alignTop\");\n }\n if (columnConf.verticalAlign === \"bottom\") {\n columnConf.className\n ? (columnConf.className += \" alignBottom\")\n : (columnConf.className = \"alignBottom\");\n }\n if (ellipsisInfo) {\n columnConf.className = styles.ellipsisInfoCell;\n }\n return columnConf;\n });\n\n if (deleteEnabled) {\n const render = (value: any, item: any, index: number) => {\n return (\n <Icon\n onClick={() => onDelete?.(index)}\n component={() => <FontAwesomeIcon icon=\"trash-alt\" />}\n style={{ color: \"#167be0\" }}\n />\n );\n };\n\n customColumns.push({\n title: \"操作\",\n render,\n });\n }\n\n return customColumns;\n }\n }, [\n columns,\n childrenColumnName,\n expandIconAsCell,\n expandIconColumnIndex,\n expandIconColumnIndexOffset,\n rowKey,\n deleteEnabled,\n onDelete,\n ellipsisInfo,\n expandedRowKeys,\n ]);\n\n const expandedRowRender = (record: Record<string, any>, index: number) => {\n let data = itemExpandedRowBrickDataMapRef.current.get(record);\n\n if (!data) {\n data = {\n rowData: record,\n rowIndex: index,\n };\n itemExpandedRowBrickDataMapRef.current.set(record, data);\n }\n\n return (\n <BrickAsComponent\n useBrick={props.expandedRowBrick.useBrick}\n data={data}\n />\n );\n };\n\n const components = {\n body: {\n row: DraggableBodyRow,\n },\n };\n\n /* istanbul ignore next */\n const getNewDateAfterMoving = ({\n oldData,\n dragIndex,\n hoverIndex,\n dragRowKey,\n rowKeyField,\n childrenColumnName,\n }: {\n oldData: Record<string, any>[];\n dragIndex: number;\n hoverIndex: number;\n dragRowKey: string;\n rowKeyField: string;\n childrenColumnName: string;\n }): Record<string, any>[] => {\n const recursion = (list: Record<string, any>[]): Record<string, any>[] => {\n return list.map((item) =>\n update(item, {\n [childrenColumnName]: {\n $apply: (subItems: Record<string, any>[]) => {\n if (!subItems?.length) return subItems;\n const dragRow = subItems.find(\n (x: Record<string, any>) => x[rowKeyField] === dragRowKey\n );\n return dragRow\n ? update(subItems, {\n $splice: [\n [dragIndex, 1],\n [hoverIndex, 0, dragRow],\n ],\n })\n : recursion(subItems);\n },\n },\n })\n );\n };\n\n return oldData?.find((item) => item[rowKeyField] === dragRowKey)\n ? update(oldData, {\n $splice: [\n [dragIndex, 1],\n [hoverIndex, 0, oldData[dragIndex]],\n ],\n })\n : recursion(oldData);\n };\n const moveRow = (\n dragIndex: number,\n hoverIndex: number,\n dragRowKey: string\n ) => {\n /* istanbul ignore next */\n const newData = getNewDateAfterMoving({\n oldData: data,\n dragIndex,\n hoverIndex,\n dragRowKey,\n rowKeyField: rowKey,\n childrenColumnName,\n });\n setData(newData);\n props.onDrag && props.onDrag(newData);\n };\n\n const onExpand = (expanded: boolean, record: Record<string, any>) => {\n setExpandedRowKeys(\n expanded\n ? expandedRowKeys.concat(record[props.rowKey])\n : expandedRowKeys.filter((i) => i !== record[props.rowKey])\n );\n props.onExpand && props.onExpand(expanded, record);\n };\n\n const onExpandedRowsChange = (expandedRows: readonly React.Key[]) => {\n props.onExpandedRowsChange && props.onExpandedRowsChange(expandedRows);\n };\n\n const getCustomExpandIcon = (iconProps: any) => {\n const { record, expandable, expanded, onExpand } = iconProps;\n let icon = props.expandIcon?.collapsedIcon || downMenuIcon;\n let iconNode: React.ReactNode;\n if (expandable) {\n if (!expanded) {\n icon = props.expandIcon?.expandedIcon || rightMenuIcon;\n }\n iconNode = (\n <span\n className={styles.expandIconSpan}\n data-testid=\"expand-icon\"\n onClick={(e) => {\n onExpand(record, e);\n }}\n >\n <GeneralIcon icon={icon} />\n </span>\n );\n } else {\n iconNode = (\n <span className={styles.expandIconSpan} data-testid=\"expand-icon\">\n <span style={{ visibility: \"hidden\" }}>\n <GeneralIcon icon={icon} />\n </span>\n </span>\n );\n }\n\n if (iconNode) {\n if (!expandIconAsCell) {\n rowKeyExpandIconMapRef.current.set(\n rowKey ? record[rowKey] : record,\n iconNode\n );\n }\n return iconNode;\n } else {\n return <></>;\n }\n };\n\n const pickExpandProps = useMemo(\n () =>\n pickBy(\n {\n expandIconColumnIndex,\n expandIconAsCell,\n expandRowByClick: props.expandRowByClick,\n expandedRowKeys: expandedRowKeys,\n defaultExpandAllRows: props.defaultExpandAllRows,\n },\n (item) => !isNil(item)\n ),\n [expandedRowKeys]\n );\n const expandable =\n _expandable !== false\n ? {\n ..._expandable,\n ...(props.expandedRowBrick\n ? {\n expandedRowRender,\n }\n : {}),\n ...pickExpandProps,\n childrenColumnName,\n onExpand,\n onExpandedRowsChange,\n }\n : { childrenColumnName: \"__noField__\" };\n\n let table = (\n <Table\n className={classNames(styles.brickTable, {\n [styles.expandIconCellHidden]: !expandIconAsCell,\n [styles.customDropTable]: props.tableDraggable,\n [styles.tableThTransparent]: props.thTransparent,\n [styles.zebraPatternTable]: data?.length >= 2 && props.zebraPattern,\n [styles.xSmallSizeTable]: props.xSmallSizeTable,\n })}\n dataSource={data}\n {...(props.tableDraggable\n ? {\n components,\n onRow: (record, index) => ({\n index,\n moveRow: moveRow,\n acceptType: record.__acceptType || props.acceptType,\n }),\n }\n : {})}\n columns={customColumns}\n onChange={props.onChange}\n expandable={expandable}\n rowKey={rowKey}\n rowClassName={(record, index) => {\n if (record.invalidRow) {\n return styles.invalidRow;\n }\n if (record.disabledRow) {\n return styles.disabledRow;\n }\n return props.zebraPattern && index % 2 ? styles.brickTableOddRow : \"\";\n }}\n expandIcon={getCustomExpandIcon}\n scroll={scroll}\n showHeader={showHeader}\n {...configProps}\n />\n );\n\n const renderEmpty = () => {\n return (\n <>\n <EasyopsEmpty></EasyopsEmpty>\n <BrickAsComponent useBrick={props.emptyUseBrick.useBrick} />\n </>\n );\n };\n\n if (!data?.length && props.emptyUseBrick) {\n return (\n <ConfigProvider renderEmpty={() => renderEmpty()}>{table}</ConfigProvider>\n );\n }\n\n if (props.tableDraggable) {\n table = (\n <DndProvider backend={HTML5Backend} context={window}>\n {table}\n </DndProvider>\n );\n }\n\n if (!props.showCard) {\n return table;\n }\n\n return <Card bordered={false}> {table} </Card>;\n}\n\nBrickTable.defaultProps = {\n configProps: {\n pagination: true,\n sortBy: false,\n },\n};\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"nmnc\");","export const NS_PRESENTATIONAL_BRICKS = \"presentational-bricks\";\n\nexport enum K {\n AGENT_STATUS_NORMAL = \"AGENT_STATUS_NORMAL\",\n AGENT_STATUS_ABNORMAL = \"AGENT_STATUS_ABNORMAL\",\n AGENT_STATUS_NOT_INSTALLED = \"AGENT_STATUS_NOT_INSTALLED\",\n AGENT_STATUS_UNINSTALLED = \"AGENT_STATUS_UNINSTALLED\",\n AGENT_STATUS_UNDER_MAINTENANCE = \"AGENT_STATUS_UNDER_MAINTENANCE\",\n ALERT_MSG_SENDED = \"ALERT_MSG_SENDED\",\n ALERT_CONVERGED = \"ALERT_CONVERGED\",\n ALERT_RECOVERED = \"ALERT_RECOVERED\",\n ALERT_MANUAL_RECOVERED = \"ALERT_MANUAL_RECOVERED\",\n ALERT_SHIELDED = \"ALERT_SHIELDED\",\n PRESENTATIONAL_BRICKS = \"PRESENTATIONAL_BRICKS\",\n PAGINATION_TOTAL_TEXT = \"PAGINATION_TOTAL_TEXT\",\n PAGINATION_TOTAL_UNIT = \"PAGINATION_TOTAL_UNIT\",\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n NO_DATA = \"NO_DATA\",\n COLLECTION_INSTANCE_SYNCHRONIZE = \"COLLECTION_INSTANCE_SYNCHRONIZE\",\n COLLECTION_INSTANCE_EXECUTE = \"COLLECTION_INSTANCE_EXECUTE\",\n DELETE = \"DELETE\",\n CROP_TITLE = \"CROP_TITLE\",\n COPY = \"COPY\",\n COPIED = \"COPIED\",\n COPY_FAILED = \"COPY_FAILED\",\n NO_TEXT_TO_COPY = \"NO_TEXT_TO_COPY\",\n CHOSEN_OPTIONS = \"CHOSEN_OPTIONS\",\n CLEAR = \"CLEAR\",\n SELECT_ALL = \"SELECT_ALL\",\n SELECTED = \"SELECTED\",\n ITEMS = \"ITEMS\",\n SELECTED_OPTIONS = \"SELECTED_OPTIONS\",\n FULL_TEXT_SEARCH = \"FULL_TEXT_SEARCH\",\n IP_SEARCH = \"IP_SEARCH\",\n SORT = \"SORT\",\n PREVIEW = \"PREVIEW\",\n}\n\nexport type Locale = { [key in K]: string };\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, \".typographyButton--lyJpPcKh.ant-btn {\\n padding: 0;\\n }\\n.typographyButton--lyJpPcKh .nextTypography--1dNTrgSD.ant-typography {\\n overflow-wrap: anywhere;\\n margin-bottom: 0;\\n width: 48px;\\n height: 30px;\\n }\\n.typographyButton--lyJpPcKh .nextTypography--1dNTrgSD .ant-typography-copy {\\n padding: 4px 0 !important ;\\n }\\n.typographyButton--lyJpPcKh .nextTypography--1dNTrgSD .ant-typography-copy {\\n width: 100%;\\n height: 100%;\\n margin-left: 0;\\n }\\n.typographyButton--lyJpPcKh .nextTypography--1dNTrgSD > .text--1BM9hcxo {\\n cursor: pointer;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"typographyButton\": \"typographyButton--lyJpPcKh\",\n\t\"nextTypography\": \"nextTypography--1dNTrgSD\",\n\t\"text\": \"text--1BM9hcxo\"\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, \".onlyShowTotal--2oi1Bk_j li:not(.ant-pagination-total-text) {\\n display: none;\\n }\\n\\n.totalText--1VtjJ8Jx {\\n color: var(--antd-pagination-total-text);\\n}\\n\\n.totalText--1VtjJ8Jx .total--1dhB9qLi {\\n font-weight: normal;\\n color: var(--antd-pagination-total-strong-text);\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"onlyShowTotal\": \"onlyShowTotal--2oi1Bk_j\",\n\t\"totalText\": \"totalText--1VtjJ8Jx\",\n\t\"total\": \"total--1dhB9qLi\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\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, \"presentational-bricks\\\\.brick-link a {\\n color: var(--antd-btn-link-color);\\n }\\n\\n presentational-bricks\\\\.brick-link a:hover,\\n presentational-bricks\\\\.brick-link a:focus {\\n color: var(--antd-btn-link-hover-color);\\n }\\n\\n presentational-bricks\\\\.brick-link a.active--5UsJ5lr6,\\n presentational-bricks\\\\.brick-link a:active {\\n color: var(--antd-btn-link-active-color);\\n }\\n\\n.externalIcon--3_MCzfXY {\\n margin-left: 6px;\\n color: var(--color-disabled-text);\\n display: inline-block;\\n}\\n\\n.disabledLink--3JMnVFFc {\\n color: var(--color-disabled-text);\\n cursor: not-allowed;\\n}\\n\\n.textLink--2UrEJRDI {\\n color: var(--text-color-default);\\n}\\n\\n.textLink--2UrEJRDI:hover,\\n .textLink--2UrEJRDI:focus,\\n .textLink--2UrEJRDI.active--5UsJ5lr6,\\n .textLink--2UrEJRDI:active {\\n color: var(--text-color-default);\\n text-decoration: underline;\\n }\\n.underLine--1465Pu6h:hover {\\n border-bottom: 1px solid var(--antd-btn-link-hover-color);\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"active\": \"active--5UsJ5lr6\",\n\t\"externalIcon\": \"externalIcon--3_MCzfXY\",\n\t\"disabledLink\": \"disabledLink--3JMnVFFc\",\n\t\"textLink\": \"textLink--2UrEJRDI\",\n\t\"underLine\": \"underLine--1465Pu6h\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"pVnL\");","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.get = get;\nexports.getClientSize = getClientSize;\nexports.getDocSize = getDocSize;\nexports.getOffset = getOffset;\nexports.getOuterHeight = getOuterHeight;\nexports.getOuterWidth = getOuterWidth;\nexports.getScroll = getScroll;\nexports.set = set;\n/* eslint-disable no-nested-ternary */\nvar PIXEL_PATTERN = /margin|padding|width|height|max|min|offset/;\nvar removePixel = {\n left: true,\n top: true\n};\nvar floatMap = {\n cssFloat: 1,\n styleFloat: 1,\n float: 1\n};\nfunction getComputedStyle(node) {\n return node.nodeType === 1 ? node.ownerDocument.defaultView.getComputedStyle(node, null) : {};\n}\nfunction getStyleValue(node, type, value) {\n type = type.toLowerCase();\n if (value === 'auto') {\n if (type === 'height') {\n return node.offsetHeight;\n }\n if (type === 'width') {\n return node.offsetWidth;\n }\n }\n if (!(type in removePixel)) {\n removePixel[type] = PIXEL_PATTERN.test(type);\n }\n return removePixel[type] ? parseFloat(value) || 0 : value;\n}\nfunction get(node, name) {\n var length = arguments.length;\n var style = getComputedStyle(node);\n name = floatMap[name] ? 'cssFloat' in node.style ? 'cssFloat' : 'styleFloat' : name;\n return length === 1 ? style : getStyleValue(node, name, style[name] || node.style[name]);\n}\nfunction set(node, name, value) {\n var length = arguments.length;\n name = floatMap[name] ? 'cssFloat' in node.style ? 'cssFloat' : 'styleFloat' : name;\n if (length === 3) {\n if (typeof value === 'number' && PIXEL_PATTERN.test(name)) {\n value = \"\".concat(value, \"px\");\n }\n node.style[name] = value; // Number\n return value;\n }\n for (var x in name) {\n if (name.hasOwnProperty(x)) {\n set(node, x, name[x]);\n }\n }\n return getComputedStyle(node);\n}\nfunction getOuterWidth(el) {\n if (el === document.body) {\n return document.documentElement.clientWidth;\n }\n return el.offsetWidth;\n}\nfunction getOuterHeight(el) {\n if (el === document.body) {\n return window.innerHeight || document.documentElement.clientHeight;\n }\n return el.offsetHeight;\n}\nfunction getDocSize() {\n var width = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);\n var height = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n return {\n width: width,\n height: height\n };\n}\nfunction getClientSize() {\n var width = document.documentElement.clientWidth;\n var height = window.innerHeight || document.documentElement.clientHeight;\n return {\n width: width,\n height: height\n };\n}\nfunction getScroll() {\n return {\n scrollLeft: Math.max(document.documentElement.scrollLeft, document.body.scrollLeft),\n scrollTop: Math.max(document.documentElement.scrollTop, document.body.scrollTop)\n };\n}\nfunction getOffset(node) {\n var box = node.getBoundingClientRect();\n var docElem = document.documentElement;\n\n // < ie8 不支持 win.pageXOffset, 则使用 docElem.scrollLeft\n return {\n left: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || document.body.clientLeft || 0),\n top: box.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || document.body.clientTop || 0)\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, \".iconWrapper--1czB3WXt {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.iconControl--2o8XyJzN {\\n opacity: 0;\\n}\\n\\n.iconControl--2o8XyJzN:hover {\\n opacity: 1;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"iconWrapper\": \"iconWrapper--1czB3WXt\",\n\t\"iconControl\": \"iconControl--2o8XyJzN\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:/8r5\"))(\"q1tI\");","// 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, \".digitWrapper--3GzCiCPK {\\n width: 100%;\\n position: relative;\\n display: flex;\\n}\\n.digitContainer--2VBEXmLF {\\n display: flex;\\n align-items: center;\\n flex-direction: row;\\n overflow-y: hidden;\\n font-family: arial;\\n}\\n\\n.digitContainer_custom--12hIpJmG {\\n gap: 12px;\\n}\\n\\n.digitCell--3H6qJf1T {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin: 0;\\n box-sizing: border-box;\\n}\\n.digitSubBox---ulvVhtM {\\n transform: translateY(0);\\n}\\n\\n.digitBox--24mqUNoE {\\n overflow: hidden;\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.digitDivider--1v3NpSJc {\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"digitWrapper\": \"digitWrapper--3GzCiCPK\",\n\t\"digitContainer\": \"digitContainer--2VBEXmLF\",\n\t\"digitContainer_custom\": \"digitContainer_custom--12hIpJmG\",\n\t\"digitCell\": \"digitCell--3H6qJf1T\",\n\t\"digitSubBox\": \"digitSubBox---ulvVhtM\",\n\t\"digitBox\": \"digitBox--24mqUNoE\",\n\t\"digitDivider\": \"digitDivider--1v3NpSJc\"\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, \".showContainer--2GR5x2r- {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n.showDescription--nVGP9uon {\\n font-size: 0.5em;\\n color: var(--color-normal-text);\\n}\\n\\n.showValue--Q5zcP3D- {\\n font-size: 1.5em;\\n margin-bottom: 0.12em;\\n}\\n\\n.mainContainer--euuRsEmZ {\\n display: flex;\\n justify-content: center;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"showContainer\": \"showContainer--2GR5x2r-\",\n\t\"showDescription\": \"showDescription--nVGP9uon\",\n\t\"showValue\": \"showValue--Q5zcP3D-\",\n\t\"mainContainer\": \"mainContainer--euuRsEmZ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:/8r5\"))(\"qJlv\");","\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/presentational-bricks:XuQu\"))(\"qx4F\");","// 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, \".collapseWrapper--32uwPIcx {\\n background-color: transparent;\\n}\\n .collapseWrapper--32uwPIcx .ant-collapse-item {\\n border-bottom: none;\\n }\\n .collapseWrapper--32uwPIcx .ant-collapse-item .ant-collapse-header {\\n background-color: transparent;\\n padding-bottom: 0;\\n color: var(--color-header-text);\\n font-size: var(--sub-title-font-size);\\n font-weight: 500;\\n }\\n .collapseWrapper--32uwPIcx .ant-collapse-item .ant-collapse-content {\\n background-color: transparent;\\n }\\n .collapseWrapper--32uwPIcx .ant-collapse-item .ant-collapse-content .ant-collapse-content-box {\\n padding-bottom: 4px;\\n padding-left: 40px;\\n font-size: var(--sub-title-font-size-small);\\n color: var(--color-normal-text);\\n }\\n .collapseWrapper--32uwPIcx .ant-collapse-item .ant-collapse-content .ant-collapse-content-box > p {\\n margin-bottom: 0;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"collapseWrapper\": \"collapseWrapper--32uwPIcx\"\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, \".terminal--1yKGPsex {\\n min-height: 80px;\\n padding: 10px;\\n border: 1px solid var(--log-display-border-color);\\n background-color: var(--log-display-bg);\\n color: var(--log-display-color);\\n}\\n\\n.ellipsis--IiPCilmm {\\n position: relative;\\n width: 10px;\\n height: 10px;\\n}\\n\\n.ellipsis--IiPCilmm span {\\n position: absolute;\\n top: 5px;\\n width: 5px;\\n height: 5px;\\n border-radius: 50%;\\n background: var(--log-display-color);\\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\\n }\\n\\n.ellipsis--IiPCilmm span:nth-child(1) {\\n left: 0;\\n animation: ellipsis1--1ev_2wGx 0.6s infinite;\\n }\\n\\n.ellipsis--IiPCilmm span:nth-child(2) {\\n left: 0;\\n animation: ellipsis2--1_sEkecw 0.6s infinite;\\n }\\n\\n.ellipsis--IiPCilmm span:nth-child(3) {\\n left: 24px;\\n animation: ellipsis2--1_sEkecw 0.6s infinite;\\n }\\n\\n.ellipsis--IiPCilmm span:nth-child(4) {\\n left: 48px;\\n animation: ellipsis3--2fFVXnav 0.6s infinite;\\n }\\n\\n@keyframes ellipsis1--1ev_2wGx {\\n 0% {\\n transform: scale(0);\\n }\\n 100% {\\n transform: scale(1);\\n }\\n}\\n@keyframes ellipsis3--2fFVXnav {\\n 0% {\\n transform: scale(1);\\n }\\n 100% {\\n transform: scale(0);\\n }\\n}\\n@keyframes ellipsis2--1_sEkecw {\\n 0% {\\n transform: translate(0, 0);\\n }\\n 100% {\\n transform: translate(24px, 0);\\n }\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"terminal\": \"terminal--1yKGPsex\",\n\t\"ellipsis\": \"ellipsis--IiPCilmm\",\n\t\"ellipsis1\": \"ellipsis1--1ev_2wGx\",\n\t\"ellipsis2\": \"ellipsis2--1_sEkecw\",\n\t\"ellipsis3\": \"ellipsis3--2fFVXnav\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"rePB\");","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addEventListenerWrap;\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nfunction addEventListenerWrap(target, eventType, cb, option) {\n /* eslint camelcase: 2 */\n var callback = _reactDom.default.unstable_batchedUpdates ? function run(e) {\n _reactDom.default.unstable_batchedUpdates(cb, e);\n } : cb;\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, option);\n }\n return {\n remove: function remove() {\n if (target.removeEventListener) {\n target.removeEventListener(eventType, callback, option);\n }\n }\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, \".brickTableOddRow--2-Ip1U7B {\\n background-color: var(--color-fill-bg-base-4);\\n}\\n\\n.ant-table-filter-dropdown {\\n position: relative;\\n}\\n\\nhtml[data-theme=\\\"dark\\\"] .brickTableOddRow--2-Ip1U7B {\\n background-color: rgba(255,255,255,0.03922);\\n }\\n\\nhtml[data-theme=\\\"dark\\\"] .tableThTransparent--3l_UFUUD thead.ant-table-thead tr th {\\n background: rgba(32, 45, 75, 0.5);\\n }\\n\\n.customDropTable--1-zY17Yn .ant-table-tbody tr.dropOverDownward--2PNBRrzc td {\\n border-bottom: 2px dashed var(--antd-table-drop-hover-border-color);\\n }\\n\\n.customDropTable--1-zY17Yn .ant-table-tbody tr.dropOverUpward--1WMsS08O td {\\n border-top: 2px dashed var(--antd-table-drop-hover-border-color);\\n }\\n\\n.brickTable--3biMCZqx .ant-table-small .ant-table-body {\\n margin: 0;\\n }\\n\\n.brickTable--3biMCZqx .ant-table-small .ant-table-thead {\\n background: var(--antd-table-header-bg);\\n }\\n\\n.brickTable--3biMCZqx .ant-table-small .ant-table-row {\\n line-height: 26px;\\n }\\n\\n.brickTable--3biMCZqx .ant-table-small .ant-table-row td {\\n padding: 1px 8px !important;\\n }\\n\\n.brickTable--3biMCZqx .ant-table-small .ant-table-thead th {\\n padding: 2px 8px !important;\\n }\\n\\n.brickTable--3biMCZqx .ant-table-middle .ant-table-row td {\\n padding: 6px 8px !important;\\n }\\n\\n.brickTable--3biMCZqx .ant-table-middle .ant-table-thead th {\\n padding: 6px 8px !important;\\n }\\n\\n.brickTable--3biMCZqx .ant-table-middle .ant-table-thead th {\\n /* 改变高度 */\\n }\\n\\n.brickTable--3biMCZqx .ant-table-tbody > tr.invalidRow--k5oRJjfJ > td {\\n background-color: var(--color-error-bg);\\n }\\n\\n.brickTable--3biMCZqx .ant-table-tbody > tr.invalidRow--k5oRJjfJ:hover > td {\\n background-color: var(--color-error-bg);\\n }\\n\\n.brickTable--3biMCZqx .ant-table-tbody > tr.disabledRow--1m64UK1y > td {\\n background-color: var(--theme-gray-border-color);\\n }\\n\\n.brickTable--3biMCZqx .ant-table-tbody > tr.disabledRow--1m64UK1y:hover > td {\\n background-color: var(--theme-gray-border-color);\\n }\\n\\n.brickTable--3biMCZqx .ant-table-tbody .ant-table-row-selected td {\\n background: var(--antd-table-cell-fixed-body-bg);\\n }\\n\\n.brickTable--3biMCZqx .ant-table .ant-table-thead > tr > th:first-child {\\n padding-left: 16px;\\n }\\n\\n.brickTable--3biMCZqx .ant-table .ant-table-tbody > tr > td:first-child {\\n padding-left: 16px;\\n }\\n\\n.brickTable--3biMCZqx .ant-table .ant-table-selection-col {\\n width: 48px;\\n }\\n\\n.expandIconSpan--3bB3GgWR {\\n cursor: pointer;\\n margin-right: 9px;\\n color: var(--antd-table-row-expand-icon-color);\\n font-size: 11px;\\n}\\n\\n.expandIconSpan--3bB3GgWR .anticon {\\n background: var(--antd-table-row-expand-icon-action-bg);\\n border-radius: 2px;\\n padding: 3px;\\n }\\n\\n.expandIconCellHidden--UDQ5MNcE .ant-table-row-expand-icon-cell,\\n .expandIconCellHidden--UDQ5MNcE .ant-table-expand-icon-col {\\n width: 1px;\\n min-width: auto;\\n }\\n\\n.expandIconCellHidden--UDQ5MNcE .ant-table-row-expand-icon-cell > *, .expandIconCellHidden--UDQ5MNcE .ant-table-expand-icon-col > * {\\n display: none;\\n }\\n\\ntd.alignTop {\\n vertical-align: top;\\n}\\n\\ntd.alignBottom {\\n vertical-align: bottom;\\n}\\n\\n.ellipsisInfoCell--1VlplGnA {\\n max-width: 240px;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n\\n.ellipsisInfoCell--1VlplGnA .ant-table-filter-column-title {\\n max-width: 240px;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n }\\n\\n.tableThTransparent--3l_UFUUD thead.ant-table-thead tr th {\\n background: var(--antd-table-header-bg);\\n }\\n\\n.zebraPatternTable--bmuZBlO3 .ant-table-tbody tr td {\\n border-bottom: 0;\\n }\\n\\n.zebraPatternTable--bmuZBlO3 .ant-table-tbody .ant-table-row-selected:not(.brickTableOddRow--2-Ip1U7B) td {\\n background: var(--antd-table-cell-fixed-body-bg);\\n }\\n\\n.zebraPatternTable--bmuZBlO3 .ant-table-tbody .brickTableOddRow--2-Ip1U7B td, .zebraPatternTable--bmuZBlO3 .ant-table-tbody .ant-table-row-selected td {\\n background: var(--color-fill-bg-base-1);\\n }\\n\\n.xSmallSizeTable--1KSU9hLF .ant-table {\\n line-height: 1;\\n }\\n\\n.xSmallSizeTable--1KSU9hLF .ant-table .ant-table-selection-col {\\n width: 32px;\\n }\\n\\n.xSmallSizeTable--1KSU9hLF .ant-table-thead > tr > th {\\n padding: 0px 2px;\\n }\\n\\n.xSmallSizeTable--1KSU9hLF .ant-table-thead > tr > th:first-child {\\n padding-left: 2px !important;\\n }\\n\\n.xSmallSizeTable--1KSU9hLF .ant-table-tbody > tr > td {\\n padding: 0px 2px;\\n }\\n\\n.xSmallSizeTable--1KSU9hLF .ant-table-tbody > tr > td:first-child {\\n padding-left: 2px !important;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"brickTableOddRow\": \"brickTableOddRow--2-Ip1U7B\",\n\t\"tableThTransparent\": \"tableThTransparent--3l_UFUUD\",\n\t\"customDropTable\": \"customDropTable--1-zY17Yn\",\n\t\"dropOverDownward\": \"dropOverDownward--2PNBRrzc\",\n\t\"dropOverUpward\": \"dropOverUpward--1WMsS08O\",\n\t\"brickTable\": \"brickTable--3biMCZqx\",\n\t\"invalidRow\": \"invalidRow--k5oRJjfJ\",\n\t\"disabledRow\": \"disabledRow--1m64UK1y\",\n\t\"expandIconSpan\": \"expandIconSpan--3bB3GgWR\",\n\t\"expandIconCellHidden\": \"expandIconCellHidden--UDQ5MNcE\",\n\t\"ellipsisInfoCell\": \"ellipsisInfoCell--1VlplGnA\",\n\t\"zebraPatternTable\": \"zebraPatternTable--bmuZBlO3\",\n\t\"xSmallSizeTable\": \"xSmallSizeTable--1KSU9hLF\"\n};\nexport default ___CSS_LOADER_EXPORT___;\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","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"sEf8\");","// 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, \".generalCarousel--2-ECMcJy {\\n padding: 20px 14px;\\n}\\n\\n .generalCarousel--2-ECMcJy .ant-carousel .slick-dots {\\n justify-content: start;\\n text-align: left;\\n margin: 0;\\n }\\n\\n .generalCarousel--2-ECMcJy .ant-carousel .slick-dots li {\\n margin: 0 4px;\\n width: 8px;\\n }\\n\\n .generalCarousel--2-ECMcJy .ant-carousel .slick-dots li.slick-active {\\n width: 16px;\\n }\\n\\n .generalCarousel--2-ECMcJy .ant-carousel .slick-dots li button {\\n width: 8px;\\n height: 8px;\\n border-radius: 4px;\\n background: rgba(182, 182, 182, 1);\\n opacity: 0.15;\\n }\\n\\n .generalCarousel--2-ECMcJy .ant-carousel .slick-dots li.slick-active button {\\n width: 16px;\\n height: 8px;\\n background-color: #65b2ff;\\n border-radius: 4px;\\n opacity: 1;\\n }\\n\\n .generalCarousel--2-ECMcJy .ant-carousel .slick-slide {\\n pointer-events: auto;\\n }\\n\\n .generalCarousel--2-ECMcJy .ant-carousel .carousel-dots-dark li button {\\n background: #e4e4e4;\\n opacity: 1;\\n }\\n\\n .generalCarousel--2-ECMcJy .ant-carousel .slick-dots-bottom {\\n bottom: 10%;\\n left: 45%;\\n }\\n\\n .generalCarousel--2-ECMcJy .ant-carousel .slick-prev svg, .generalCarousel--2-ECMcJy .ant-carousel .slick-next svg {\\n width: 20px;\\n height: 20px;\\n color: var(--fill-color-gray-dark);\\n }\\n\\n .generalCarousel--2-ECMcJy .ant-carousel .slick-prev svg:hover, .generalCarousel--2-ECMcJy .ant-carousel .slick-next svg:hover {\\n color: var(--text-color-secondary);\\n }\\n\\n .generalCarousel--2-ECMcJy .ant-carousel .slick-prev.slick-disabled svg, .generalCarousel--2-ECMcJy .ant-carousel .slick-next.slick-disabled svg {\\n color: var(--fill-color-gray-dark);\\n cursor: not-allowed;\\n }\\n\\n .generalCarousel--2-ECMcJy .customContainer--2LjtBR-A {\\n padding: 0 10px;\\n }\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"generalCarousel\": \"generalCarousel--2-ECMcJy\",\n\t\"customContainer\": \"customContainer--2LjtBR-A\"\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, \".avatarContainer--3R0DJdLv:hover .avatarEditContainer--8wy7Pz7U {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n.avatarEditContainer--8wy7Pz7U {\\n display: none;\\n}\\n\\n.avatarEditContainer--8wy7Pz7U:hover {\\n cursor: pointer;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"avatarContainer\": \"avatarContainer--3R0DJdLv\",\n\t\"avatarEditContainer\": \"avatarEditContainer--8wy7Pz7U\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"vpQ4\");","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.useLayoutUpdateEffect = exports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _canUseDom = _interopRequireDefault(require(\"../Dom/canUseDom\"));\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useLayoutEffect = process.env.NODE_ENV !== 'test' && (0, _canUseDom.default)() ? React.useLayoutEffect : React.useEffect;\nvar _default = useLayoutEffect;\nexports.default = _default;\nvar useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n var firstMountRef = React.useRef(true);\n useLayoutEffect(function () {\n if (!firstMountRef.current) {\n return callback();\n }\n }, deps);\n\n // We tell react that first mount has passed\n useLayoutEffect(function () {\n firstMountRef.current = false;\n return function () {\n firstMountRef.current = true;\n };\n }, []);\n};\nexports.useLayoutUpdateEffect = useLayoutUpdateEffect;","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"vuIU\");","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"wd/R\");","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/presentational-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, \".dropdownTrigger--15zc55u9 {\\n display: flex;\\n align-items: center;\\n color: var(--color-header-text);\\n font-size: 16px;\\n cursor: pointer;\\n}\\n.dropdownTriggerShape--H0SQKps0 {\\n font-size: 14px;\\n padding: 3px 10px;\\n box-shadow: var(--dropdown-select-shape-type-trigger-shadow);\\n border-radius: 6px;\\n border: 1px solid var(--color-border-divider-line);\\n}\\n.dropdownLabel--1ptKwVCr {\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.dropdownLabelBox--3k9zNEGo {\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n width: 150px;\\n}\\n.dropdownArrow--OO_sUd_q {\\n flex-shrink: 0;\\n margin-left: 12px;\\n color: var(--color-header-text);\\n}\\n\\n.placeholder--O8iyY93Z {\\n color: var(--color-secondary-text);\\n}\\n\\n.optionTitle--3RMGWNyt {\\n margin-bottom: 1px;\\n color: var(--color-header-text);\\n}\\n\\n.optionContent--1HOlf8K0 {\\n margin-bottom: 0;\\n color: var(--color-normal-text);\\n}\\n\\n.ant-dropdown-menu-item.active {\\n background-color: var(--menu-dropdown-bg);\\n }\\n.menuBox--2ge_y7pl .ant-dropdown-menu-item.active {\\n background-color: var(--menu-dropdown-bg);\\n }\\n.menuBox--2ge_y7pl .ant-dropdown-menu-item-selected {\\n background-color: var(--menu-dropdown-bg);\\n }\\n.menuBox--2ge_y7pl .ant-dropdown-menu-item:hover {\\n background-color: var(--antd-item-hover-bg);\\n }\\n.selectTipText--1Oh3Nz8R {\\n font-size: var(--sub-title-font-size-small);\\n font-weight: var(--font-weight-400);\\n color: var(--color-secondary-text);\\n padding: 5px 12px;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"dropdownTrigger\": \"dropdownTrigger--15zc55u9\",\n\t\"dropdownTriggerShape\": \"dropdownTriggerShape--H0SQKps0\",\n\t\"dropdownLabel\": \"dropdownLabel--1ptKwVCr\",\n\t\"dropdownLabelBox\": \"dropdownLabelBox--3k9zNEGo\",\n\t\"dropdownArrow\": \"dropdownArrow--OO_sUd_q\",\n\t\"placeholder\": \"placeholder--O8iyY93Z\",\n\t\"optionTitle\": \"optionTitle--3RMGWNyt\",\n\t\"optionContent\": \"optionContent--1HOlf8K0\",\n\t\"menuBox\": \"menuBox--2ge_y7pl\",\n\t\"selectTipText\": \"selectTipText--1Oh3Nz8R\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","export const colorMap: Record<string, string> = {\n green: \"var(--theme-green-color)\",\n red: \"var(--theme-red-color)\",\n blue: \"var(--theme-blue-color)\",\n orange: \"var(--theme-orange-color)\",\n cyan: \"var(--theme-cyan-color)\",\n purple: \"var(--theme-purple-color)\",\n geekblue: \"var(--theme-geekblue-color)\",\n gray: \"var(--theme-gray-color)\"\n};\n\n/**\n * 如果提供的颜色值是平台提供的规范颜色,则转换为使用平台规范的颜色,不是的话则原样输出。\n * @param color {string} 颜色值\n * @return {string} 返回处理后的颜色值或 css变量\n */\nexport function transformColor(color: string): string {\n return colorMap[color] ?? color;\n}\n","import {\n eq,\n lt,\n lte,\n gt,\n gte,\n get,\n isEqual,\n forEach,\n includes,\n isEmpty,\n isUndefined,\n} from \"lodash\";\nimport { transformColor } from \"@next-libs/basic-components\";\nimport { CellStatusProps } from \"./index\";\nexport const compareFunMap: Record<string, any> = {\n $eq: isEqual,\n $lt: lt,\n $lte: lte,\n $gt: gt,\n $gte: gte,\n $ne: (value: any, fieldValue: any): boolean => !isEqual(value, fieldValue),\n $isEqual: isEqual,\n $notEqual: (value: any, fieldValue: any): boolean =>\n !isEqual(value, fieldValue),\n $in: includes,\n $nin: (value: any, fieldValue: any): boolean => !includes(value, fieldValue),\n $exists: (value: any, fieldValue: any): boolean =>\n value ? !isUndefined(fieldValue) : isUndefined(fieldValue),\n};\n\nexport function getCellStyle(\n cellStatus: CellStatusProps,\n item: Record<string, any>,\n value?: any\n): Record<string, string> {\n const { dataIndex, mapping: list } = cellStatus;\n const finalValue = dataIndex !== undefined ? get(item, dataIndex) : value;\n const ret = list.find((item) => item.value === finalValue);\n\n if (!ret) return {};\n\n return {\n borderLeft: `4px solid ${transformColor(ret.leftBorderColor)}`,\n };\n}\nexport const getKeysOfData = (\n data: Record<string, any>[],\n rowKey: string,\n childrenColumnName: string,\n keys: string[]\n): void => {\n if (data) {\n forEach(data, (item) => {\n const children = get(item, childrenColumnName);\n const key = get(item, rowKey);\n keys.push(key);\n if (children?.length) {\n getKeysOfData(children, rowKey, childrenColumnName, keys);\n }\n });\n }\n};\nexport const getRowsOfData = (\n data: Record<string, any>[],\n childrenColumnName: string,\n rows: Record<string, any>[]\n): void => {\n if (data) {\n forEach(data, (item) => {\n const children = get(item, childrenColumnName);\n rows.push(item);\n if (children?.length) {\n getRowsOfData(children, childrenColumnName, rows);\n }\n });\n }\n};\n\nexport function stripEmptyExpandableChildrenByName(\n name: string,\n data: Record<string, any>[] = []\n): Record<string, any>[] {\n if (data?.length) {\n data.forEach((value) => {\n if (value[name]?.length) {\n return stripEmptyExpandableChildrenByName(name, value[name]);\n }\n\n delete value[name];\n return value;\n });\n }\n return data;\n}\n","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"xYSL\");","module.exports = (__webpack_require__(\"bricks/presentational-bricks:XuQu\"))(\"yXPU\");","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".descContainer--2jebgs_K {\\n list-style: none;\\n padding-left: 0;\\n margin-bottom: 0;\\n}\\n\\n.iconContainer--1ly_ZKAf {\\n position: relative;\\n top: 0px;\\n color: var(--color-brand);\\n}\\n\\n.iconContainer--1ly_ZKAf:hover {\\n color: var(--color-brand-hover);\\n}\\n\\n.text--3JZgT4vk {\\n margin-right: 5px;\\n}\\n\\n.textEllipsis--2bKbQcTS {\\n display: block;\\n width: 100%;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"descContainer\": \"descContainer--2jebgs_K\",\n\t\"iconContainer\": \"iconContainer--1ly_ZKAf\",\n\t\"text\": \"text--3JZgT4vk\",\n\t\"textEllipsis\": \"textEllipsis--2bKbQcTS\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nmodule.exports = difference;\n"],"sourceRoot":""}
|