{"version":3,"file":"index.js","sources":["webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/base/env.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/base/foundation.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/button/constants.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/divider/constants.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/icons/constants.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/image/constants.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/image/previewFooterFoundation.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/image/previewFoundation.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/image/previewImageFoundation.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/image/previewInnerFoundation.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/image/utils.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/slider/constants.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/slider/foundation.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/spin/constants.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/spin/foundation.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/tooltip/constants.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/tooltip/foundation.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/utils/Event.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/utils/a11y.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/utils/dom.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/utils/function.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/utils/getDataAttr.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/utils/isElement.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/utils/isNullOrUndefined.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/utils/keyCode.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/utils/log.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/utils/touchPolyfill.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/utils/uuid.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/utils/warning.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.46.2_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/components/Icon.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.46.2_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/env.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.46.2_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/icons/IconClose.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/components/Icon.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/env.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/icons/IconArrowLeft.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/icons/IconArrowRight.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/icons/IconChevronLeft.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/icons/IconChevronRight.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/icons/IconClose.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/icons/IconDownload.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/icons/IconMinus.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/icons/IconPlus.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/icons/IconRealSizeStroked.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/icons/IconRotate.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/icons/IconWindowAdaptionStroked.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/_base/baseComponent.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/_cssAnimation/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/_portal/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/_utils/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/_utils/semi-global.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/button/Button.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/button/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/configProvider/context.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/divider/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/iconButton/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/image/preview.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/image/previewContext.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/image/previewFooter.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/image/previewHeader.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/image/previewImage.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/image/previewInner.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/locale/context.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/locale/localeConsumer.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/locale/source/zh_CN.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/slider/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/spin/icon.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/spin/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/tooltip/ArrowBoundingShape.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/tooltip/TriangleArrow.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/tooltip/TriangleArrowVertical.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/tooltip/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@formatjs+fast-memoize@1.2.1/node_modules/@formatjs/fast-memoize/lib/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/date-time-pattern-generator.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/error.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/parser.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/time-data.generated.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/types.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.6/node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.6/node_modules/@formatjs/icu-skeleton-parser/lib/number.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.6/node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@ies+intl-icu-plugin@1.2.3/node_modules/@ies/intl-icu-plugin/lib/intl-icu-plugin.esm.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@ies+intl-incontext-plugin@1.0.6/node_modules/@ies/intl-incontext-plugin/dist/intl-incontext-plugin.esm.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@ies+starling-language-detector@2.0.4/node_modules/@ies/starling-language-detector/dist/index.esm.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@ies+starling_intl@1.4.13/node_modules/@ies/starling_intl/dist/index.esm.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@oceanos+logger@0.1.7_react@18.2.0/node_modules/@oceanos/logger/es/core/base-logger.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@oceanos+logger@0.1.7_react@18.2.0/node_modules/@oceanos/logger/es/core/console-client.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@oceanos+logger@0.1.7_react@18.2.0/node_modules/@oceanos/logger/es/core/log-options-helper.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@oceanos+logger@0.1.7_react@18.2.0/node_modules/@oceanos/logger/es/core/logger.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@oceanos+logger@0.1.7_react@18.2.0/node_modules/@oceanos/logger/es/core/type.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@oceanos+logger@0.1.7_react@18.2.0/node_modules/@oceanos/logger/es/core/utils/api-request-error.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@oceanos+logger@0.1.7_react@18.2.0/node_modules/@oceanos/logger/es/core/utils/common.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@oceanos+logger@0.1.7_react@18.2.0/node_modules/@oceanos/logger/es/core/utils/error.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@oceanos+logger@0.1.7_react@18.2.0/node_modules/@oceanos/logger/es/core/utils/json.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@oceanos+logger@0.1.7_react@18.2.0/node_modules/@oceanos/logger/es/slardar/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@slardar+integrations@2.8.4/node_modules/@slardar/integrations/dist/custom.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@slardar+integrations@2.8.4/node_modules/@slardar/integrations/dist/jsError.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@slardar+web@1.7.0/node_modules/@slardar/web/sg/index.js","webpack://CozeWebSDK/./src/assets/widget.svg","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/classnames@2.3.2/node_modules/classnames/index.js","webpack://CozeWebSDK/../../components/bot-semi/src/components/ui-button/index.module.less","webpack://CozeWebSDK/./src/components/coze-client-widget/index.module.less","webpack://CozeWebSDK/./src/components/coze-iframe/index.module.less","webpack://CozeWebSDK/./src/components/coze-iframe/mobile/index.module.less","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/_portal/portal.css","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/button/button.css","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/button/iconButton.css","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/divider/divider.css","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/image/image.css","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/slider/slider.css","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/spin/spin.css","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/tooltip/tooltip.css","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.46.2_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/styles/icons.css","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/styles/icons.css","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/_base/base.css","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/css-loader@6.10.0_@rspack+core@0.6.0_webpack@5.89.0/node_modules/css-loader/dist/runtime/api.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/css-loader@6.10.0_@rspack+core@0.6.0_webpack@5.89.0/node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/isSameUTCWeek/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/zh-CN/_lib/formatDistance/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/zh-CN/_lib/formatLong/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/zh-CN/_lib/formatRelative/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/zh-CN/_lib/localize/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/zh-CN/_lib/match/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/locale/zh-CN/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/date-fns@2.30.0/node_modules/date-fns/esm/toDate/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/i18next@19.9.2/node_modules/i18next/dist/esm/i18next.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/intl-messageformat@9.13.0/node_modules/intl-messageformat/lib/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/intl-messageformat@9.13.0/node_modules/intl-messageformat/lib/src/core.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/intl-messageformat@9.13.0/node_modules/intl-messageformat/lib/src/error.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/intl-messageformat@9.13.0/node_modules/intl-messageformat/lib/src/formatters.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_DataView.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Hash.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_ListCache.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Map.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_MapCache.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Promise.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Set.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_SetCache.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Stack.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Symbol.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Uint8Array.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_WeakMap.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_apply.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayEach.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayFilter.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayLikeKeys.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayMap.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayPush.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arraySome.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assignValue.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assocIndexOf.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssign.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssignIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssignValue.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseClone.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseCreate.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseEach.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFlatten.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFor.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseForOwn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetAllKeys.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetTag.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsArguments.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsEqual.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsEqualDeep.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsMap.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsNative.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsSet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsTypedArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseKeys.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseKeysIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSetToString.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSlice.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTimes.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseToString.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTrim.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseUnary.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseUnset.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cacheHas.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_castFunction.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_castPath.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneArrayBuffer.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneBuffer.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneDataView.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneRegExp.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneSymbol.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneTypedArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copyArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copyObject.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copySymbols.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copySymbolsIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_coreJsData.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createBaseEach.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createBaseFor.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_customOmitClone.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_defineProperty.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_equalArrays.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_equalByTag.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_equalObjects.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_flatRest.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_freeGlobal.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getAllKeys.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getAllKeysIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getMapData.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getNative.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getPrototype.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getRawTag.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getSymbols.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getSymbolsIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getTag.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getValue.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashClear.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashDelete.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashGet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashHas.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashSet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneByTag.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneObject.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isFlattenable.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isIndex.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isKey.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isKeyable.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isMasked.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isPrototype.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheClear.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheDelete.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheGet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheHas.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheSet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheClear.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheDelete.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheGet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheHas.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheSet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapToArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_memoizeCapped.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeCreate.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeKeys.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeKeysIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nodeUtil.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_objectToString.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_overArg.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_overRest.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_parent.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_root.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setCacheAdd.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setCacheHas.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setToArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setToString.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_shortOut.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackClear.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackDelete.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackGet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackHas.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackSet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stringToPath.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_toKey.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_toSource.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_trimmedEndIndex.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/cloneDeepWith.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/constant.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/debounce.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/each.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/eq.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/flatten.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/forEach.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/get.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/identity.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArguments.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArrayLike.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isBuffer.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isEmpty.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isEqual.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isFunction.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isLength.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isMap.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObject.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObjectLike.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isPlainObject.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSymbol.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isTypedArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isUndefined.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/keys.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/keysIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/last.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/memoize.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/noop.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/now.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/omit.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/set.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/stubArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/stubFalse.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/throttle.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toNumber.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toString.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithThrowingShims.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/react-device-detect@2.2.3_react-dom@18.2.0_react@18.2.0/node_modules/react-device-detect/dist/lib.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom.production.min.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/client.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/react@18.2.0/node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/react@18.2.0/node_modules/react/cjs/react.production.min.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/react@18.2.0/node_modules/react/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/scheduler@0.23.0/node_modules/scheduler/cjs/scheduler.production.min.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/scheduler@0.23.0/node_modules/scheduler/index.js","webpack://CozeWebSDK/../../components/bot-semi/src/components/ui-button/index.module.less?5bb5","webpack://CozeWebSDK/./src/components/coze-client-widget/index.module.less?895c","webpack://CozeWebSDK/./src/components/coze-iframe/index.module.less?b06c","webpack://CozeWebSDK/./src/components/coze-iframe/mobile/index.module.less?1823","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/_portal/portal.css?e6ec","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/button/button.css?bcf3","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/button/iconButton.css?944b","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/divider/divider.css?f2d7","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/image/image.css?eed7","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/slider/slider.css?fa88","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/spin/spin.css?85bd","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-foundation@2.54.0/node_modules/@douyinfe/semi-foundation/lib/es/tooltip/tooltip.css?8136","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.46.2_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/styles/icons.css?4aec","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-icons@2.54.0_react@18.2.0/node_modules/@douyinfe/semi-icons/lib/es/styles/icons.css?5f1a","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@douyinfe+semi-ui@2.54.0_react-dom@18.2.0_react@18.2.0/node_modules/@douyinfe/semi-ui/lib/es/_base/base.css?9d8b","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/style-loader@3.3.4_webpack@5.89.0/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/style-loader@3.3.4_webpack@5.89.0/node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/style-loader@3.3.4_webpack@5.89.0/node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/style-loader@3.3.4_webpack@5.89.0/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/style-loader@3.3.4_webpack@5.89.0/node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/style-loader@3.3.4_webpack@5.89.0/node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/ua-parser-js@1.0.37/node_modules/ua-parser-js/dist/ua-parser.min.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/shim/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/shim/with-selector.js","webpack://CozeWebSDK/../../components/bot-semi/src/components/ui-button/index.tsx","webpack://CozeWebSDK/./src/client/index.tsx","webpack://CozeWebSDK/./src/components/coze-client-widget/index.tsx","webpack://CozeWebSDK/./src/components/coze-client-widget/mobile.tsx","webpack://CozeWebSDK/./src/components/coze-iframe/index.tsx","webpack://CozeWebSDK/./src/components/coze-iframe/mobile/index.tsx","webpack://CozeWebSDK/./src/components/coze-iframe/util.ts","webpack://CozeWebSDK/./src/log/index.ts","webpack://CozeWebSDK/./src/log/slardar.ts","webpack://CozeWebSDK/./src/store/context.tsx","webpack://CozeWebSDK/./src/store/iframe.ts","webpack://CozeWebSDK/./src/store/index.ts","webpack://CozeWebSDK/./src/types/client.ts","webpack://CozeWebSDK/./src/types/i18n.ts","webpack://CozeWebSDK/./src/types/post.ts","webpack://CozeWebSDK/./src/util/env.ts","webpack://CozeWebSDK/./src/util/error.ts","webpack://CozeWebSDK/./src/util/style.ts","webpack://CozeWebSDK/../chat-core/src/shared/utils/env.ts","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.23.2/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.24.1/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.24.1/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.24.1/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.24.1/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.24.1/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.24.1/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.24.1/node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.24.1/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.24.1/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.24.1/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.24.1/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/@babel+runtime@7.24.1/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/immer@10.0.3/node_modules/immer/dist/immer.mjs","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_DataView.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Hash.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_ListCache.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Map.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_MapCache.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Promise.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Set.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_SetCache.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Stack.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Symbol.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Uint8Array.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_WeakMap.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayFilter.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayLikeKeys.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayMap.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayPush.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arraySome.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assignValue.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assocIndexOf.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseAssignValue.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFor.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseForOwn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetAllKeys.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetTag.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseHasIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsArguments.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqual.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqualDeep.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsMatch.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsNative.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsTypedArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIteratee.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseKeys.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseKeysIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMatches.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMatchesProperty.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_basePickBy.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseProperty.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_basePropertyDeep.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseSet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseTimes.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseToString.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseUnary.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cacheHas.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_castPath.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_coreJsData.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createBaseFor.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_defineProperty.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalArrays.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalByTag.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalObjects.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_freeGlobal.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getAllKeys.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getAllKeysIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getMapData.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getMatchData.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getNative.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getPrototype.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getRawTag.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getSymbols.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getSymbolsIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getTag.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getValue.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hasPath.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashClear.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashDelete.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashGet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashHas.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashSet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isIndex.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isKey.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isKeyable.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isMasked.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isPrototype.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isStrictComparable.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheClear.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheDelete.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheGet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheHas.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheSet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheClear.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheDelete.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheGet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheHas.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheSet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapToArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_matchesStrictComparable.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_memoizeCapped.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeCreate.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeKeys.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeKeysIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nodeUtil.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_objectToString.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_overArg.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_root.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setCacheAdd.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setCacheHas.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setToArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackClear.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackDelete.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackGet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackHas.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackSet.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stringToPath.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_toKey.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_toSource.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/eq.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/get.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/hasIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/identity.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArguments.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArrayLike.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isBuffer.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isEmpty.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isFunction.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isLength.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isNil.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isNumber.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObject.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObjectLike.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isString.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isSymbol.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isTypedArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keys.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keysIn.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/mapValues.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/memoize.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/negate.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/omitBy.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/pickBy.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/property.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/stubArray.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/stubFalse.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toString.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/nanoid@4.0.2/node_modules/nanoid/index.browser.js","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/zustand@4.4.7_@types+react@18.2.37_immer@10.0.3_react@18.2.0/node_modules/zustand/esm/index.mjs","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/zustand@4.4.7_@types+react@18.2.37_immer@10.0.3_react@18.2.0/node_modules/zustand/esm/middleware.mjs","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/zustand@4.4.7_@types+react@18.2.37_immer@10.0.3_react@18.2.0/node_modules/zustand/esm/react/shallow.mjs","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/zustand@4.4.7_@types+react@18.2.37_immer@10.0.3_react@18.2.0/node_modules/zustand/esm/shallow.mjs","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/zustand@4.4.7_@types+react@18.2.37_immer@10.0.3_react@18.2.0/node_modules/zustand/esm/traditional.mjs","webpack://CozeWebSDK/../../../common/temp/node_modules/.pnpm/zustand@4.4.7_@types+react@18.2.37_immer@10.0.3_react@18.2.0/node_modules/zustand/esm/vanilla.mjs"],"sourcesContent":["export const BASE_CLASS_PREFIX = 'semi';","import _noop from \"lodash/noop\";\n/**\n * The Semi Foundation / Adapter architecture split was inspired by Material Component For Web. (https://github.com/material-components/material-components-web)\n * We re-implemented our own code based on the principle and added more functions we need according to actual needs.\n *\n */\nimport log from '../utils/log';\nclass BaseFoundation {\n /** @return enum{css className} */\n /* istanbul ignore next */\n static get cssClasses() {\n // Classes extending Foundation should implement this method to return an object which exports every\n // CSS class the foundation class needs as a property. e.g. {ACTIVE: 'component--active'}\n return {};\n }\n /** @return enum{strings} */\n /* istanbul ignore next */\n static get strings() {\n // Classes extending Foundation should implement this method to return an object which exports all\n // semantic strings as constants. e.g. {ARIA_ROLE: 'tablist'}\n return {};\n }\n /** @return enum{numbers} */\n /* istanbul ignore next */\n static get numbers() {\n // Classes extending Foundation should implement this method to return an object which exports all\n // of its semantic numbers as constants. e.g. {ANIMATION_DELAY_MS: 350}\n return {};\n }\n static get defaultAdapter() {\n return {\n getProp: _noop,\n getProps: _noop,\n getState: _noop,\n getStates: _noop,\n setState: _noop,\n getContext: _noop,\n getContexts: _noop,\n getCache: _noop,\n setCache: _noop,\n getCaches: _noop,\n stopPropagation: _noop,\n persistEvent: _noop\n };\n }\n constructor(adapter) {\n this._adapter = Object.assign(Object.assign({}, BaseFoundation.defaultAdapter), adapter);\n }\n getProp(key) {\n return this._adapter.getProp(key);\n }\n getProps() {\n return this._adapter.getProps();\n }\n getState(key) {\n return this._adapter.getState(key);\n }\n getStates() {\n return this._adapter.getStates();\n }\n setState(states, cb) {\n return this._adapter.setState(Object.assign({}, states), cb);\n }\n getContext(key) {\n return this._adapter.getContext(key);\n }\n /* istanbul ignore next */\n getContexts() {\n return this._adapter.getContexts();\n }\n /* istanbul ignore next */\n getCaches() {\n return this._adapter.getCaches();\n }\n getCache(key) {\n return this._adapter.getCache(key);\n }\n setCache(key, value) {\n return key && this._adapter.setCache(key, value);\n }\n stopPropagation(e) {\n this._adapter.stopPropagation(e);\n }\n // Determine whether a controlled component\n _isControlledComponent() {\n let key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'value';\n const props = this.getProps();\n const isControlComponent = (key in props);\n return isControlComponent;\n }\n // Does the user have incoming props, eg: _isInProps (value)\n _isInProps(key) {\n const props = this.getProps();\n return key in props;\n }\n init(lifecycle) {\n // Subclasses should override this method to perform initialization routines (registering events, etc.)\n }\n destroy() {\n // Subclasses should override this method to perform de-initialization routines (de-registering events, etc.)\n }\n /* istanbul ignore next */\n log(text) {\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n log(text, ...rest);\n }\n _persistEvent(e) {\n // only work for react adapter for now\n this._adapter.persistEvent(e);\n }\n}\nexport default BaseFoundation;","import { BASE_CLASS_PREFIX } from '../base/constants';\nconst cssClasses = {\n PREFIX: `${BASE_CLASS_PREFIX}-button`\n};\nconst strings = {\n sizes: ['default', 'small', 'large'],\n iconPositions: ['left', 'right'],\n htmlTypes: ['button', 'reset', 'submit'],\n btnTypes: ['primary', 'secondary', 'tertiary', 'warning', 'danger'],\n themes: ['solid', 'borderless', 'light'],\n DEFAULT_ICON_SIZE: 'default',\n DEFAULT_ICON_POSITION: 'left'\n};\nconst numbers = {};\nexport { cssClasses, strings, numbers };","import { BASE_CLASS_PREFIX } from '../base/constants';\nconst cssClasses = {\n PREFIX: `${BASE_CLASS_PREFIX}`\n};\nconst strings = {\n LAYOUT: ['vertical', 'horizontal']\n};\nexport { cssClasses, strings };","import { BASE_CLASS_PREFIX } from '../base/constants';\nconst cssClasses = {\n PREFIX: `${BASE_CLASS_PREFIX}-icon`\n};\nconst strings = {\n SIZE: ['extra-small', 'small', 'default', 'large', 'extra-large', 'custom'],\n // use in svg xhref. No need to respond to the change of prefixCls, always constant\n ICON_PREFIX: 'semi-icon-'\n};\nconst numbers = {};\nexport { cssClasses, strings, numbers };","import { BASE_CLASS_PREFIX } from \"../base/constants\";\nconst cssClasses = {\n PREFIX: `${BASE_CLASS_PREFIX}-image`\n};\nconst numbers = {\n DEFAULT_Z_INDEX: 1070\n};\nexport { cssClasses, numbers };","import BaseFoundation from \"../base/foundation\";\nexport default class PreviewFooterFoundation extends BaseFoundation {\n constructor() {\n super(...arguments);\n this.changeSliderValue = type => {\n const {\n zoom,\n step,\n min,\n max\n } = this.getProps();\n let newValue = type === \"plus\" ? zoom + step : zoom - step;\n if (newValue > max) {\n newValue = max;\n } else if (newValue < min) {\n newValue = min;\n }\n this.handleValueChange(newValue);\n };\n this.handleValueChange = value => {\n const {\n onZoomIn,\n onZoomOut,\n zoom\n } = this.getProps();\n if (value > zoom) {\n onZoomIn(Number((value / 100).toFixed(2)));\n } else {\n onZoomOut(Number((value / 100).toFixed(2)));\n }\n };\n this.handleRatioClick = () => {\n const {\n ratio,\n onAdjustRatio\n } = this.getProps();\n const type = ratio === \"adaptation\" ? \"realSize\" : \"adaptation\";\n onAdjustRatio(type);\n };\n this.handleRotate = direction => {\n const {\n onRotate\n } = this.getProps();\n onRotate && onRotate(direction);\n };\n }\n}","import BaseFoundation from \"../base/foundation\";\nexport default class PreviewFoundation extends BaseFoundation {\n constructor() {\n super(...arguments);\n this.handleVisibleChange = newVisible => {\n const {\n visible,\n onVisibleChange\n } = this.getProps();\n if (!(visible in this.getProps())) {\n this.setState({\n visible: newVisible\n });\n }\n onVisibleChange && onVisibleChange(newVisible);\n };\n this.handleCurrentIndexChange = index => {\n const {\n currentIndex,\n onChange\n } = this.getProps();\n if (!(currentIndex in this.getProps())) {\n this.setState({\n currentIndex: index\n });\n }\n onChange && onChange(index);\n };\n }\n}","import BaseFoundation from \"../base/foundation\";\nconst DefaultDOMRect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n toJSON: () => ({})\n};\nexport default class PreviewImageFoundation extends BaseFoundation {\n constructor(adapter) {\n var _this;\n super(Object.assign({}, adapter));\n _this = this;\n this.startMouseOffset = {\n x: 0,\n y: 0\n };\n this.originImageWidth = null;\n this.originImageHeight = null;\n this._isImageVertical = () => this.getProp(\"rotation\") % 180 !== 0;\n this._getImageBounds = () => {\n const imageDOM = this._adapter.getImage();\n if (imageDOM) {\n return imageDOM.getBoundingClientRect();\n }\n return DefaultDOMRect;\n };\n this._getContainerBounds = () => {\n const containerDOM = this._adapter.getContainer();\n if (containerDOM) {\n return containerDOM.getBoundingClientRect();\n }\n return DefaultDOMRect;\n };\n this._getOffset = e => {\n const {\n left,\n top\n } = this._getImageBounds();\n return {\n x: e.clientX - left,\n y: e.clientY - top\n };\n };\n this.setLoading = loading => {\n this._adapter.setLoading(loading);\n };\n this.handleWindowResize = () => {\n if (this.originImageWidth && this.originImageHeight) {\n this.handleResizeImage();\n }\n };\n this.handleLoad = e => {\n if (e.target) {\n const {\n naturalWidth: w,\n naturalHeight: h\n } = e.target;\n this.originImageHeight = h;\n this.originImageWidth = w;\n this.setState({\n loading: false\n });\n // 图片初次加载,计算 zoom,zoom 改变不需要通过回调透出\n // When the image is loaded for the first time, zoom is calculated, and zoom changes do not need to be exposed through callbacks.\n this.handleResizeImage(false);\n }\n const {\n src,\n onLoad\n } = this.getProps();\n onLoad && onLoad(src);\n };\n this.handleError = e => {\n const {\n onError,\n src\n } = this.getProps();\n this.setState({\n loading: false\n });\n onError && onError(src);\n };\n this.handleResizeImage = function () {\n let notify = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n const horizontal = !_this._isImageVertical();\n const {\n currZoom\n } = _this.getStates();\n const imgWidth = horizontal ? _this.originImageWidth : _this.originImageHeight;\n const imgHeight = horizontal ? _this.originImageHeight : _this.originImageWidth;\n const {\n onZoom,\n setRatio,\n ratio\n } = _this.getProps();\n const containerDOM = _this._adapter.getContainer();\n if (containerDOM) {\n const {\n width: containerWidth,\n height: containerHeight\n } = _this._getContainerBounds();\n const reservedWidth = containerWidth - 80;\n const reservedHeight = containerHeight - 80;\n let _zoom = 1;\n if (imgWidth > reservedWidth || imgHeight > reservedHeight) {\n _zoom = Number(Math.min(reservedWidth / imgWidth, reservedHeight / imgHeight).toFixed(2));\n }\n if (currZoom === _zoom) {\n _this.calculatePreviewImage(_zoom, null);\n } else {\n onZoom(_zoom, notify);\n }\n }\n };\n this.handleRatioChange = () => {\n if (this.originImageWidth && this.originImageHeight) {\n const {\n currZoom\n } = this.getStates();\n const {\n ratio,\n onZoom\n } = this.getProps();\n let _zoom;\n if (ratio === 'adaptation') {\n const horizontal = !this._isImageVertical();\n const imgWidth = horizontal ? this.originImageWidth : this.originImageHeight;\n const imgHeight = horizontal ? this.originImageHeight : this.originImageWidth;\n const {\n width: containerWidth,\n height: containerHeight\n } = this._getContainerBounds();\n const reservedWidth = containerWidth - 80;\n const reservedHeight = containerHeight - 80;\n _zoom = Number(Math.min(reservedWidth / imgWidth, reservedHeight / imgHeight).toFixed(2));\n } else {\n _zoom = 1;\n }\n if (currZoom !== _zoom) {\n onZoom(_zoom);\n }\n }\n };\n this.handleRightClickImage = e => {\n const {\n disableDownload\n } = this.getProps();\n if (disableDownload) {\n e.preventDefault();\n e.stopPropagation();\n return false;\n } else {\n return true;\n }\n };\n this.calcCanDragDirection = () => {\n const {\n width,\n height\n } = this.getStates();\n const {\n rotation\n } = this.getProps();\n const {\n width: containerWidth,\n height: containerHeight\n } = this._getContainerBounds();\n let canDragHorizontal = width > containerWidth;\n let canDragVertical = height > containerHeight;\n if (this._isImageVertical()) {\n canDragHorizontal = height > containerWidth;\n canDragVertical = width > containerHeight;\n }\n return {\n canDragVertical,\n canDragHorizontal\n };\n };\n this.calculatePreviewImage = (newZoom, e) => {\n const imageDOM = this._adapter.getImage();\n const {\n canDragVertical,\n canDragHorizontal\n } = this.calcCanDragDirection();\n const canDrag = canDragVertical || canDragHorizontal;\n const {\n width: containerWidth,\n height: containerHeight\n } = this._getContainerBounds();\n const newWidth = Math.floor(this.originImageWidth * newZoom);\n const newHeight = Math.floor(this.originImageHeight * newZoom);\n // debugger;\n let _offset;\n const horizontal = !this._isImageVertical();\n let newTop = 0;\n let newLeft = 0;\n if (horizontal) {\n _offset = {\n x: 0.5 * (containerWidth - newWidth),\n y: 0.5 * (containerHeight - newHeight)\n };\n newLeft = _offset.x;\n newTop = _offset.y;\n } else {\n _offset = {\n x: 0.5 * (containerWidth - newHeight),\n y: 0.5 * (containerHeight - newWidth)\n };\n newLeft = _offset.x - (newWidth - newHeight) / 2;\n newTop = _offset.y + (newWidth - newHeight) / 2;\n }\n this.setState({\n width: newWidth,\n height: newHeight,\n offset: _offset,\n left: newLeft,\n top: newTop,\n currZoom: newZoom\n });\n if (imageDOM) {\n this._adapter.setImageCursor(canDrag);\n }\n };\n this.calcExtremeBounds = () => {\n const {\n width,\n height\n } = this.getStates();\n const {\n width: containerWidth,\n height: containerHeight\n } = this._getContainerBounds();\n let extremeLeft = containerWidth - width;\n let extremeTop = containerHeight - height;\n if (this._isImageVertical()) {\n extremeLeft = containerWidth - height;\n extremeTop = containerHeight - width;\n }\n return {\n left: extremeLeft,\n top: extremeTop\n };\n };\n this.handleMoveImage = e => {\n const {\n offset,\n width,\n height\n } = this.getStates();\n const {\n canDragVertical,\n canDragHorizontal\n } = this.calcCanDragDirection();\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n const mouseLeftPress = e.buttons === 1;\n if (mouseLeftPress && (canDragVertical || canDragHorizontal)) {\n const {\n clientX,\n clientY\n } = e;\n const {\n left: containerLeft,\n top: containerTop\n } = this._getContainerBounds();\n const {\n left: extremeLeft,\n top: extremeTop\n } = this.calcExtremeBounds();\n let newX = canDragHorizontal ? clientX - containerLeft - this.startMouseOffset.x : offset.x;\n let newY = canDragVertical ? clientY - containerTop - this.startMouseOffset.y : offset.y;\n if (canDragHorizontal) {\n newX = newX > 0 ? 0 : newX < extremeLeft ? extremeLeft : newX;\n }\n if (canDragVertical) {\n newY = newY > 0 ? 0 : newY < extremeTop ? extremeTop : newY;\n }\n const _offset = {\n x: newX,\n y: newY\n };\n this.setState({\n offset: _offset,\n left: this._isImageVertical() ? _offset.x - (width - height) / 2 : _offset.x,\n top: this._isImageVertical() ? _offset.y + (width - height) / 2 : _offset.y\n });\n }\n };\n this.handleImageMouseDown = e => {\n this.startMouseOffset = this._getOffset(e);\n };\n }\n}","import _throttle from \"lodash/throttle\";\nimport _isUndefined from \"lodash/isUndefined\";\nimport { handlePrevent } from \"../utils/a11y\";\nimport BaseFoundation from \"../base/foundation\";\nimport KeyCode from \"../utils/keyCode\";\nimport { getPreloadImagArr, downloadImage, isTargetEmit } from \"./utils\";\nconst NOT_CLOSE_TARGETS = [\"icon\", \"footer\"];\nconst STOP_CLOSE_TARGET = [\"icon\", \"footer\", \"header\"];\nexport default class PreviewInnerFoundation extends BaseFoundation {\n constructor(adapter) {\n var _this;\n super(Object.assign({}, adapter));\n _this = this;\n this._timer = null;\n this._startMouseDown = {\n x: 0,\n y: 0\n };\n this.handleViewVisibleChange = () => {\n const {\n viewerVisible\n } = this.getStates();\n if (viewerVisible) {\n this.setState({\n viewerVisible: false\n });\n this.clearTimer();\n }\n };\n this.handleMouseMove = e => {\n this._persistEvent(e);\n this.mouseMoveHandler(e);\n };\n this.mouseMoveHandler = _throttle(e => {\n const {\n viewerVisible\n } = this.getStates();\n const isValidTarget = this._adapter.isValidTarget(e);\n if (isValidTarget) {\n if (!viewerVisible) {\n this.setState({\n viewerVisible: true\n });\n }\n this.updateTimer();\n } else {\n this.clearTimer();\n }\n }, 50);\n this.updateTimer = () => {\n const {\n viewerVisibleDelay\n } = this.getProps();\n this.clearTimer();\n this._timer = setTimeout(this.handleViewVisibleChange, viewerVisibleDelay);\n };\n this.clearTimer = () => {\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n };\n this.handleWheel = e => {\n this.onWheel(e);\n handlePrevent(e);\n };\n this.onWheel = e => {\n const {\n zoomStep,\n maxZoom,\n minZoom\n } = this.getProps();\n const {\n zoom: currZoom\n } = this.getStates();\n let _zoom;\n if (e.deltaY < 0) {\n /* zoom in */\n if (currZoom + zoomStep <= maxZoom) {\n _zoom = Number((currZoom + zoomStep).toFixed(2));\n }\n } else if (e.deltaY > 0) {\n /* zoom out */\n if (currZoom - zoomStep >= minZoom) {\n _zoom = Number((currZoom - zoomStep).toFixed(2));\n }\n }\n if (!_isUndefined(_zoom)) {\n this.handleZoomImage(_zoom);\n }\n };\n this.handleMouseUp = e => {\n const {\n maskClosable\n } = this.getProps();\n let couldClose = !isTargetEmit(e, NOT_CLOSE_TARGETS);\n const {\n clientX,\n clientY\n } = e;\n const {\n x,\n y\n } = this._startMouseDown;\n // 对鼠标移动做容错处理,当 x 和 y 方向在 mouseUp 的时候移动距离都小于等于 5px 时候就可以关闭预览\n // Error-tolerant processing of mouse movement, when the movement distance in the x and y directions is less than or equal to 5px in mouseUp, the preview can be closed\n // 不做容错处理的话,直接用 clientX !== x || y !== clientY 做判断,鼠标在用户点击时候无意识的轻微移动无法关闭预览,不符合用户预期\n // If you do not do fault-tolerant processing, but directly use clientX !== x || y !== clientY to make judgments, the slight movement of the mouse when the user clicks will not be able to close the preview, which does not meet the user's expectations.\n if (Math.abs(clientX - x) > 5 || Math.abs(y - clientY) > 5) {\n couldClose = false;\n }\n if (couldClose && maskClosable) {\n this._adapter.notifyVisibleChange(false);\n }\n };\n this.handleMouseDown = e => {\n const {\n clientX,\n clientY\n } = e;\n this._startMouseDown = {\n x: clientX,\n y: clientY\n };\n };\n this.handleKeyDown = e => {\n const {\n closeOnEsc\n } = this.getProps();\n if (closeOnEsc && e.keyCode === KeyCode.ESC) {\n e.stopPropagation();\n this._adapter.notifyVisibleChange(false);\n this._adapter.notifyClose();\n return;\n }\n };\n this.handleSwitchImage = direction => {\n const step = direction === \"prev\" ? -1 : 1;\n const {\n imgSrc,\n currentIndex: currentIndexInState\n } = this.getStates();\n const srcLength = imgSrc.length;\n const newIndex = (currentIndexInState + step + srcLength) % srcLength;\n if (\"currentIndex\" in this.getProps()) {\n if (this._adapter.getIsInGroup()) {\n const setCurrentIndex = this._adapter.getContext(\"setCurrentIndex\");\n setCurrentIndex(newIndex);\n }\n } else {\n this.setState({\n currentIndex: newIndex\n });\n }\n this._adapter.notifyChange(newIndex, direction);\n this.setState({\n direction,\n rotation: 0\n });\n };\n this.handleDownload = () => {\n const {\n currentIndex,\n imgSrc\n } = this.getStates();\n const setDownloadName = this._adapter.getSetDownloadFunc();\n const downloadSrc = imgSrc[currentIndex];\n const downloadName = setDownloadName ? setDownloadName(downloadSrc) : downloadSrc.slice(downloadSrc.lastIndexOf(\"/\") + 1).split('?')[0];\n downloadImage(downloadSrc, downloadName, this._adapter.notifyDownloadError);\n this._adapter.notifyDownload(downloadSrc, currentIndex);\n };\n this.handlePreviewClose = e => {\n this._adapter.notifyVisibleChange(false);\n this._adapter.notifyClose();\n handlePrevent(e);\n };\n this.handleAdjustRatio = type => {\n this.setState({\n ratio: type\n });\n this._adapter.notifyRatioChange(type);\n };\n this.handleRotateImage = direction => {\n const {\n rotation\n } = this.getStates();\n const newRotation = rotation + (direction === \"left\" ? 90 : -90);\n this.setState({\n rotation: newRotation\n });\n this._adapter.notifyRotateChange(newRotation);\n };\n this.handleZoomImage = function (newZoom) {\n let notify = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const {\n zoom\n } = _this.getStates();\n if (zoom !== newZoom) {\n notify && _this._adapter.notifyZoom(newZoom, newZoom > zoom);\n _this.setState({\n zoom: newZoom\n });\n }\n };\n // 当 visible 改变之后,预览组件完成首张图片加载后,启动预加载\n // 如: 1,2,3,4,5,6,7,8张图片, 点击第 4 张图片,preLoadGap 为 2\n // 当 visible 从 false 变为 true ,首先加载第 4 张图片,当第 4 张图片加载完成后,\n // 再按照 5,3,6,2的顺序预先加载这几张图片\n // When visible changes, the preview component finishes loading the first image and starts preloading\n // Such as: 1, 2, 3, 4, 5, 6, 7, 8 pictures, click the 4th picture, preLoadGap is 2\n // When visible changes from false to true , load the 4th image first, when the 4th image is loaded,\n // Preload these pictures in the order of 5, 3, 6, 2\n this.preloadGapImage = () => {\n const {\n preLoad,\n preLoadGap,\n infinite,\n currentIndex\n } = this.getProps();\n const {\n imgSrc\n } = this.getStates();\n if (!preLoad || typeof preLoadGap !== \"number\" || preLoadGap < 1) {\n return;\n }\n const preloadImages = getPreloadImagArr(imgSrc, currentIndex, preLoadGap, infinite);\n if (preloadImages.length === 0) {\n return;\n }\n const Img = new Image();\n let index = 0;\n function callback(e) {\n index++;\n if (index < preloadImages.length) {\n Img.src = preloadImages[index];\n }\n }\n Img.onload = e => {\n this.setLoadSuccessStatus(Img.src);\n callback(e);\n };\n Img.onerror = callback;\n Img.src = preloadImages[0];\n };\n // 在切换左右图片时,当被切换图片完成加载后,根据方向决定下一个预加载的图片\n // 如: 1,2,3,4,5,6,7,8张图片\n // 当 preLoadGap 为 2, 从第 5 张图片进行切换\n // - 如果向 右 切换到第 6 张,则第 6 张图片加载动作结束后(无论加载成功 or 失败),会预先加载第 8 张;\n // - 如果向 左 切换到第 4 张,则第 4 张图片加载动作结束后(无论加载成功 or 失败),会预先加载第 2 张;\n // When switching the left and right pictures, when the switched picture is loaded, the next preloaded picture is determined according to the direction\n // Such as: 1, 2, 3, 4, 5, 6, 7, 8 pictures\n // When preLoadGap is 2, switch from the 5th picture\n // - If you switch to the 6th image(direction is next), the 8th image will be preloaded after the 6th image is loaded (whether it succeeds or fails to load);\n // - If you switch to the 4th image(direction is prev), the second image will be preloaded after the 4th image is loaded (whether it succeeds or fails to load);\n this.preloadSingleImage = () => {\n const {\n preLoad,\n preLoadGap,\n infinite\n } = this.getProps();\n const {\n imgSrc,\n currentIndex,\n direction,\n imgLoadStatus\n } = this.getStates();\n if (!preLoad || typeof preLoadGap !== \"number\" || preLoadGap < 1) {\n return;\n }\n // 根据方向决定preload那个index\n // Determine the index of preload according to the direction\n let preloadIndex = currentIndex + (direction === \"prev\" ? -1 : 1) * preLoadGap;\n if (preloadIndex < 0 || preloadIndex >= imgSrc.length) {\n if (infinite) {\n preloadIndex = (preloadIndex + imgSrc.length) % imgSrc.length;\n } else {\n return;\n }\n }\n // 如果图片没有加载成功过,则进行预加载\n // If the image has not been loaded successfully, preload it\n if (!imgLoadStatus[preloadIndex]) {\n const Img = new Image();\n Img.onload = e => {\n this.setLoadSuccessStatus(imgSrc[preloadIndex]);\n };\n Img.src = imgSrc[preloadIndex];\n }\n };\n this.setLoadSuccessStatus = src => {\n const {\n imgLoadStatus\n } = this.getStates();\n const status = Object.assign({}, imgLoadStatus);\n status[src] = true;\n this.setState({\n imgLoadStatus: status\n });\n };\n this.onImageLoad = src => {\n const {\n preloadAfterVisibleChange\n } = this.getStates();\n this.setLoadSuccessStatus(src);\n // 当 preview 中当前加载的图片加载完成后,\n // 如果是在visible change之后的第一次加载,则启动加载该currentIndex左右preloadGap范围的图片\n // 如果是非第一次加载,是在左右切换图片,则根据方向预先加载单张图片\n // When the currently loaded image in Preview is loaded,\n // - It is the first load after visible change, start loading the images in the preloadGap range around the currentIndex\n // - It is not the first load, the image is switched left and right, and a single image is preloaded according to the direction\n if (preloadAfterVisibleChange) {\n this.preloadGapImage();\n this.setState({\n preloadAfterVisibleChange: false\n });\n } else {\n this.preloadSingleImage();\n }\n };\n }\n beforeShow() {\n this._adapter.registerKeyDownListener();\n this._adapter.disabledBodyScroll();\n this.updateTimer();\n }\n afterHide() {\n this._adapter.unregisterKeyDownListener();\n this._adapter.enabledBodyScroll();\n this.clearTimer();\n }\n}","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nexport const isTargetEmit = (event, targetClasses) => {\n // event.path usage is discouraged, use event.composedPath() as it's standard and is more future-proof\n // path is the event-triggered bubbling path, which stores each node through which bubbling passes.\n // path.length-4 is to remove elements above the root node, such as body, html, document, window\n const path = event === null || event === void 0 ? void 0 : event.composedPath();\n const isTarget = path === null || path === void 0 ? void 0 : path.slice(0, path.length - 4).some(node => {\n if (node.className && typeof node.className === \"string\") {\n return targetClasses.some(c => node.className.includes(c));\n }\n return false;\n });\n return isTarget;\n};\nexport const downloadImage = (src, filename, downloadErrorCb) => __awaiter(void 0, void 0, void 0, function* () {\n try {\n const response = yield fetch(src);\n if (response.ok) {\n const blob = yield response.blob();\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = filename;\n link.click();\n URL.revokeObjectURL(url);\n link.remove();\n } else {\n downloadErrorCb(src);\n }\n } catch (error) {\n downloadErrorCb(src);\n }\n});\nexport const crossMerge = function () {\n let leftArr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let rightArr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let newArr = [];\n const leftLen = leftArr.length;\n const rightLen = rightArr.length;\n const crossLength = leftLen <= rightLen ? leftLen : rightLen;\n new Array(crossLength).fill(0).forEach((item, index) => {\n newArr.push(rightArr[index]);\n newArr.push(leftArr[index]);\n });\n if (leftLen > rightLen) {\n newArr = newArr.concat(leftArr.slice(rightLen, leftLen));\n } else if (leftLen < rightLen) {\n newArr = newArr.concat(rightArr.slice(leftLen, rightLen));\n }\n return newArr;\n};\nexport const getPreloadImagArr = (imgSrc, currentIndex, preLoadGap, infinite) => {\n const beginIndex = currentIndex - preLoadGap;\n const endIndex = currentIndex + preLoadGap;\n const srcLength = imgSrc.length;\n let leftArr = [];\n let rightArr = [];\n if (preLoadGap >= Math.floor(srcLength / 2)) {\n if (infinite) {\n leftArr = imgSrc.concat(imgSrc).slice(beginIndex + srcLength < 0 ? 0 : beginIndex + srcLength, currentIndex + srcLength);\n rightArr = imgSrc.concat(imgSrc).slice(currentIndex + 1, endIndex + 1 < 2 * srcLength ? endIndex + 1 : 2 * srcLength);\n } else {\n leftArr = imgSrc.slice(0, currentIndex);\n rightArr = imgSrc.slice(currentIndex + 1, srcLength);\n }\n } else {\n if (infinite) {\n leftArr = imgSrc.concat(imgSrc).slice(beginIndex + srcLength, currentIndex + srcLength);\n rightArr = imgSrc.concat(imgSrc).slice(currentIndex + 1, endIndex + 1);\n } else {\n if (beginIndex >= 0 && endIndex < srcLength) {\n leftArr = imgSrc.slice(beginIndex, currentIndex);\n rightArr = imgSrc.slice(currentIndex + 1, endIndex + 1);\n } else if (beginIndex < 0) {\n leftArr = imgSrc.slice(0, currentIndex);\n rightArr = imgSrc.slice(currentIndex + 1, 2 * preLoadGap + 1);\n } else {\n rightArr = imgSrc.slice(currentIndex + 1, srcLength);\n leftArr = imgSrc.slice(srcLength - 2 * preLoadGap - 1, currentIndex);\n }\n }\n }\n const result = crossMerge(leftArr.reverse(), rightArr);\n const duplicateResult = Array.from(new Set(result));\n return duplicateResult;\n};","import { BASE_CLASS_PREFIX } from '../base/constants';\nconst cssClasses = {\n PREFIX: `${BASE_CLASS_PREFIX}-slider`,\n DISABLED: `${BASE_CLASS_PREFIX}-slider-disabled`,\n VERTICAL: `${BASE_CLASS_PREFIX}-slider-vertical`,\n TRACK: `${BASE_CLASS_PREFIX}-slider-track`,\n DOTS: `${BASE_CLASS_PREFIX}-slider-dots`,\n MARKS: `${BASE_CLASS_PREFIX}-slider-marks`,\n HANDLE: `${BASE_CLASS_PREFIX}-slider-handle`,\n HANDLE_DOT: `${BASE_CLASS_PREFIX}-slider-handle-dot`\n};\nconst strings = {\n SIZE: ['small', 'large', 'default'],\n POSITION: ['top', 'bottom'],\n OPTIONS: ['children', 'option']\n};\nexport { cssClasses, strings };","import BaseFoundation from '../base/foundation';\nimport touchEventPolyfill from '../utils/touchPolyfill';\nimport warning from '../utils/warning';\nimport { handlePrevent } from '../utils/a11y';\nexport default class SliderFoundation extends BaseFoundation {\n constructor(adapter) {\n var _this;\n /**\n * Calculate the percentage corresponding to the current value for style calculation\n * @{}\n *\n * @memberof SliderFoundation\n */\n super(Object.assign(Object.assign({}, SliderFoundation.defaultAdapter), adapter));\n _this = this;\n this.getMinAndMaxPercent = value => {\n // debugger\n const {\n range,\n min,\n max\n } = this._adapter.getProps();\n const minPercent = range ? (value[0] - min) / (max - min) : (value - min) / (max - min);\n const maxPercent = range ? (value[1] - min) / (max - min) : 1;\n return {\n min: this._checkValidity(minPercent),\n max: this._checkValidity(maxPercent)\n };\n };\n /**\n * Check if value is out of range\n * @memberof SliderFoundation\n */\n this._checkValidity = function (value) {\n let min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n const checked = value > max ? max : value < min ? min : value;\n return checked;\n };\n /**\n * When render handle, the display and content of the tooltip are calculated according to the conditions\n * @visible: props passed in by the component\n * @formatter: tooltip content formatting function\n * @memberof SliderFoundation\n */\n this.computeHandleVisibleVal = (visible, formatter, range) => {\n // debugger;\n const {\n focusPos,\n currentValue\n } = this._adapter.getStates();\n const tipVisible = {\n min: false,\n max: false\n };\n let tipChildren;\n if (formatter) {\n tipChildren = {\n min: range ? formatter(this.outPutValue(currentValue[0])) : formatter(this.outPutValue(currentValue)),\n max: range ? formatter(this.outPutValue(currentValue[1])) : null\n };\n } else {\n tipChildren = {\n min: range ? this.outPutValue(currentValue[0]) : this.outPutValue(currentValue),\n max: range ? this.outPutValue(currentValue[1]) : null\n };\n }\n if (visible) {\n tipVisible.min = true;\n tipVisible.max = true;\n } else if (typeof visible === 'undefined' && formatter) {\n if (focusPos === 'min') {\n tipVisible.min = true;\n } else if (focusPos === 'max') {\n tipVisible.max = true;\n }\n }\n const result = {\n tipVisible,\n tipChildren\n };\n return result;\n };\n /**\n * Calculate whether the value passed in is valid\n *\n * @memberof SliderFoundation\n */\n this.valueFormatIsCorrect = value => {\n if (Array.isArray(value)) {\n return typeof value[0] === 'number' && typeof value[0] === 'number';\n } else {\n return typeof value === 'number';\n }\n };\n /**\n * Fix the mouse position to position the parent container relative to the position\n *\n * @memberof SliderFoundation\n */\n this.handleMousePos = (clientX, clientY) => {\n const parentRect = this._adapter.getParentRect();\n const scrollParent = this._adapter.getScrollParentVal();\n const parentX = parentRect ? parentRect.left : 0;\n const parentY = parentRect ? parentRect.top : 0;\n return {\n x: clientX - parentX + scrollParent.scrollLeft,\n y: clientY - parentY + scrollParent.scrollTop\n };\n };\n /**\n * Provides the nearest scrollable parent node of the current node, which is used to calculate the scrollTop and scrollLeft attributes\n *\n * @memberof SliderFoundation\n */\n this.getScrollParent = element => {\n // TODO: move window document out of foundation.\n const el = element;\n const regex = /(auto|scroll)/;\n const style = (node, prop) => window.getComputedStyle(node, null).getPropertyValue(prop);\n const scroll = node => regex.test(style(node, 'overflow') + style(node, 'overflow-y') + style(node, 'overflow-x'));\n const scrollParent = node => !node || node === document.body || !(node instanceof Element) ? document.body : scroll(node) ? node : scrollParent(node.parentNode);\n return scrollParent(el);\n };\n /**\n * Fixed the event location, beyond the maximum, minimum, left and right, etc. directly modified to the effective location\n *\n * @memberof SliderFoundation\n */\n this.checkMeetMinMax = position => {\n // Returns the length of the distance to the left\n const {\n vertical,\n verticalReverse,\n range\n } = this._adapter.getProps();\n const value = this._adapter.getState('currentValue');\n const currentPos = this.transValueToPos(value);\n const {\n sliderX,\n sliderY,\n sliderWidth,\n sliderHeight\n } = this._adapter.getSliderLengths();\n const {\n chooseMovePos,\n isDrag\n } = this._adapter.getStates();\n const len = vertical ? sliderHeight : sliderWidth;\n let startPos;\n if (vertical && verticalReverse) {\n startPos = sliderY + len;\n } else {\n startPos = vertical ? sliderY : sliderX;\n }\n // startPos = chooseMovePos === 'max' && isDrag ? currentPos[0] : startPos;\n let endPos;\n if (vertical && verticalReverse) {\n endPos = sliderY;\n } else {\n endPos = vertical ? sliderY + sliderHeight : sliderX + sliderWidth;\n }\n // endPos = chooseMovePos === 'min' && isDrag && range ? currentPos[1] : endPos;\n if (vertical && verticalReverse) {\n if (position >= startPos) {\n position = startPos;\n } else if (position <= endPos) {\n position = endPos;\n }\n } else {\n if (position <= startPos) {\n position = startPos;\n } else if (position >= endPos) {\n position = endPos;\n }\n }\n return position;\n };\n /**\n * Converting location information to value requires processing if step is not 1 (invalid move returns false)\n *\n * @memberof SliderFoundation\n */\n this.transPosToValue = (mousePos, isMin) => {\n const pos = this.checkMeetMinMax(mousePos);\n const {\n min,\n max,\n currentValue\n } = this._adapter.getStates();\n const {\n range,\n vertical,\n step,\n verticalReverse\n } = this._adapter.getProps();\n const {\n sliderX,\n sliderY,\n sliderWidth,\n sliderHeight\n } = this._adapter.getSliderLengths();\n const startPos = vertical ? sliderY : sliderX;\n const len = vertical ? sliderHeight : sliderWidth;\n let stepValue;\n if (vertical && verticalReverse) {\n //isMin = !isMin;\n stepValue = (startPos + len - pos) / len * (max - min) + min;\n } else {\n stepValue = (pos - startPos) / len * (max - min) + min;\n }\n let compareValue;\n if (range) {\n compareValue = isMin ? currentValue[0] : currentValue[1];\n } else {\n compareValue = currentValue;\n }\n if (step !== 1) {\n // Find nearest step point\n stepValue = Math.round(stepValue / step) * step;\n }\n if (range && stepValue !== compareValue) {\n return isMin ? [stepValue, currentValue[1]] : [currentValue[0], stepValue];\n } else if (!range && stepValue !== compareValue) {\n return stepValue;\n } else {\n return false;\n }\n };\n /**\n * Convert value values into location information\n *\n * @memberof SliderFoundation\n */\n this.transValueToPos = value => {\n const {\n min,\n max\n } = this._adapter.getStates();\n const {\n vertical,\n range,\n verticalReverse\n } = this._adapter.getProps();\n const {\n sliderX,\n sliderY,\n sliderWidth,\n sliderHeight\n } = this._adapter.getSliderLengths();\n const startPos = vertical ? sliderY : sliderX;\n const len = vertical ? sliderHeight : sliderWidth;\n if (range) {\n return [(value[0] - min) * len / (max - min) + startPos, (value[1] - min) * len / (max - min) + startPos];\n } else {\n return (value - min) * len / (max - min) + startPos;\n }\n };\n /**\n * Determine whether the mark should be highlighted: valid interval and include = false\n *\n * @memberof SliderFoundation\n */\n this.isMarkActive = mark => {\n const {\n min,\n max,\n range,\n included\n } = this._adapter.getProps();\n const currentValue = this._adapter.getState('currentValue');\n if (typeof (mark / 1) === 'number' && mark >= min && mark <= max) {\n if (range) {\n return (mark > currentValue[1] || mark < currentValue[0]) && included ? 'unActive' : 'active';\n } else {\n return mark <= currentValue && included ? 'active' : 'unActive';\n }\n } else {\n return false;\n }\n };\n /**\n * onchange output conversion, default rounding without decimal, step less than 1 has decimal\n *\n * @memberof SliderFoundation\n */\n this.outPutValue = inputValue => {\n const checkHowManyDecimals = num => {\n var _a, _b;\n const reg = /^\\d+(\\.\\d+)?$/;\n if (reg.test(String(num))) {\n return (_b = (_a = num.toString().split('.')[1]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;\n }\n return 0;\n };\n const step = this._adapter.getProp('step');\n const transWay = (() => {\n const decimals = checkHowManyDecimals(step);\n const multipler = Math.pow(10, decimals);\n return value => {\n return Math.round(value * multipler) / multipler;\n };\n })();\n if (Array.isArray(inputValue)) {\n return [transWay(inputValue[0]), transWay(inputValue[1])];\n } else {\n return transWay(inputValue);\n }\n };\n this.handleDisabledChange = disabled => {\n this._adapter.updateDisabled(disabled);\n };\n this.checkAndUpdateIsInRenderTreeState = () => this._adapter.checkAndUpdateIsInRenderTreeState();\n this.calculateOutputValue = (position, isMin) => {\n const moveValue = this.transPosToValue(position, isMin);\n if (moveValue === false) {\n return undefined;\n }\n return this.outPutValue(moveValue);\n };\n /**\n *\n *\n * @memberof SliderFoundation\n */\n this.handleValueChange = (prevValue, nextValue) => {\n const {\n min,\n max\n } = this._adapter.getStates();\n let resultState = null;\n const disableState = {};\n if (this.valueFormatIsCorrect(nextValue)) {\n if (Array.isArray(prevValue) && Array.isArray(nextValue)) {\n nextValue = [nextValue[0] < min ? min : nextValue[0], nextValue[1] > max ? max : nextValue[1] // Math.round(nextValue[1])\n ];\n // this._adapter.notifyChange(this.outPutValue(nextValue));\n resultState = Object.assign(disableState, {\n currentValue: nextValue\n });\n }\n if (typeof prevValue === 'number' && typeof nextValue === 'number') {\n if (nextValue > max) {\n nextValue = max;\n } else {\n nextValue = nextValue < min ? min : nextValue; // Math.round(nextValue);\n }\n // this._adapter.notifyChange(this.outPutValue(nextValue));\n resultState = Object.assign(disableState, {\n currentValue: nextValue\n });\n }\n } else {\n resultState = disableState;\n }\n if (resultState) {\n this._adapter.transNewPropsToState(resultState);\n }\n };\n this.onHandleDown = (e, handler) => {\n this._adapter.onHandleDown(e);\n const disabled = this._adapter.getState('disabled');\n const {\n vertical\n } = this._adapter.getProps();\n const {\n dragging\n } = this._adapter.getOverallVars();\n if (disabled) {\n return false;\n }\n this._adapter.setStateVal('isDrag', true);\n this._adapter.setStateVal('chooseMovePos', handler);\n if (handler === 'min') {\n this._adapter.setDragging([true, dragging[1]]);\n } else {\n this._adapter.setDragging([dragging[0], true]);\n }\n const mousePos = this.handleMousePos(e.clientX, e.clientY);\n let pos = vertical ? mousePos.y : mousePos.x;\n if (!this._adapter.isEventFromHandle(e)) {\n this._dragOffset = 0;\n } else {\n const handlePosition = this._getHandleCenterPosition(vertical, e.target);\n this._dragOffset = vertical ? pos - handlePosition : pos - handlePosition;\n pos = handlePosition;\n }\n return true;\n };\n this.onHandleMove = e => {\n this._adapter.setEventDefault(e);\n const {\n disabled,\n chooseMovePos\n } = this._adapter.getStates();\n const {\n vertical\n } = this._adapter.getProps();\n const {\n dragging\n } = this._adapter.getOverallVars();\n if (disabled) {\n return false;\n }\n this.onHandleEnter(chooseMovePos);\n const mousePos = this.handleMousePos(e.clientX, e.clientY);\n let pagePos = vertical ? mousePos.y : mousePos.x;\n pagePos = pagePos - this._dragOffset;\n if (chooseMovePos === 'min' && dragging[0] || chooseMovePos === 'max' && dragging[1]) {\n const outPutValue = this.calculateOutputValue(pagePos, chooseMovePos === 'min');\n if (outPutValue === undefined) {\n return false;\n }\n this._adapter.notifyChange(outPutValue);\n // allow drag for controlled component, so no _isControlledComponent check\n this._adapter.onHandleMove(pagePos, chooseMovePos === 'min', undefined, false, outPutValue);\n }\n return true;\n };\n // run when user touch left or right handle.\n this.onHandleTouchStart = (e, handler) => {\n const handleMinDom = this._adapter.getMinHandleEl();\n const handleMaxDom = this._adapter.getMaxHandleEl();\n if (e.target === handleMinDom || e.target === handleMaxDom) {\n handlePrevent(e);\n const touch = touchEventPolyfill(e.touches[0], e);\n this.onHandleDown(touch, handler);\n }\n };\n this.onHandleTouchMove = e => {\n const handleMinDom = this._adapter.getMinHandleEl();\n const handleMaxDom = this._adapter.getMaxHandleEl();\n if (e.target === handleMinDom || e.target === handleMaxDom) {\n const touch = touchEventPolyfill(e.touches[0], e);\n this.onHandleMove(touch);\n }\n };\n this.onHandleEnter = pos => {\n // debugger;\n // this._adapter.setEventDefault(e);\n const {\n disabled,\n focusPos\n } = this._adapter.getStates();\n if (!disabled) {\n if (!focusPos && pos !== focusPos) {\n this._adapter.onHandleEnter(pos);\n }\n }\n };\n this.onHandleLeave = () => {\n // this._adapter.setEventDefault(e);\n const disabled = this._adapter.getState('disabled');\n if (!disabled && this.getStates()['focusPos'] === \"\") {\n this._adapter.onHandleLeave();\n }\n };\n this.onHandleUp = e => {\n this._adapter.onHandleUpBefore(e);\n // const value = this._adapter.getProp('value');\n const {\n disabled,\n chooseMovePos\n } = this._adapter.getStates();\n const {\n dragging\n } = this._adapter.getOverallVars();\n if (disabled) {\n return false;\n }\n if (chooseMovePos === 'min') {\n this._adapter.setDragging([false, dragging[1]]);\n } else {\n this._adapter.setDragging([dragging[0], false]);\n }\n this._adapter.setStateVal('isDrag', false);\n this._adapter.onHandleLeave();\n this._adapter.onHandleUpAfter();\n return true;\n };\n this._handleValueDecreaseWithKeyBoard = (step, handler) => {\n const {\n min,\n currentValue\n } = this.getStates();\n const {\n range\n } = this.getProps();\n if (handler === 'min') {\n if (range) {\n let newMinValue = currentValue[0] - step;\n newMinValue = newMinValue < min ? min : newMinValue;\n return [newMinValue, currentValue[1]];\n } else {\n let newMinValue = currentValue - step;\n newMinValue = newMinValue < min ? min : newMinValue;\n return newMinValue;\n }\n } else {\n let newMaxValue = currentValue[1] - step;\n newMaxValue = newMaxValue < currentValue[0] ? currentValue[0] : newMaxValue;\n return [currentValue[0], newMaxValue];\n }\n };\n this._handleValueIncreaseWithKeyBoard = (step, handler) => {\n const {\n max,\n currentValue\n } = this.getStates();\n const {\n range\n } = this.getProps();\n if (handler === 'min') {\n if (range) {\n let newMinValue = currentValue[0] + step;\n newMinValue = newMinValue > currentValue[1] ? currentValue[1] : newMinValue;\n return [newMinValue, currentValue[1]];\n } else {\n let newMinValue = currentValue + step;\n newMinValue = newMinValue > max ? max : newMinValue;\n return newMinValue;\n }\n } else {\n let newMaxValue = currentValue[1] + step;\n newMaxValue = newMaxValue > max ? max : newMaxValue;\n return [currentValue[0], newMaxValue];\n }\n };\n this._handleHomeKey = handler => {\n const {\n min,\n currentValue\n } = this.getStates();\n const {\n range\n } = this.getProps();\n if (handler === 'min') {\n if (range) {\n return [min, currentValue[1]];\n } else {\n return min;\n }\n } else {\n return [currentValue[0], currentValue[0]];\n }\n };\n this._handleEndKey = handler => {\n const {\n max,\n currentValue\n } = this.getStates();\n const {\n range\n } = this.getProps();\n if (handler === 'min') {\n if (range) {\n return [currentValue[1], currentValue[1]];\n } else {\n return max;\n }\n } else {\n return [currentValue[0], max];\n }\n };\n this.handleKeyDown = (event, handler) => {\n const {\n min,\n max,\n currentValue\n } = this.getStates();\n const {\n step,\n range\n } = this.getProps();\n let outputValue;\n switch (event.key) {\n case \"ArrowLeft\":\n case \"ArrowDown\":\n outputValue = this._handleValueDecreaseWithKeyBoard(step, handler);\n break;\n case \"ArrowRight\":\n case \"ArrowUp\":\n outputValue = this._handleValueIncreaseWithKeyBoard(step, handler);\n break;\n case \"PageUp\":\n outputValue = this._handleValueIncreaseWithKeyBoard(10 * step, handler);\n break;\n case \"PageDown\":\n outputValue = this._handleValueDecreaseWithKeyBoard(10 * step, handler);\n break;\n case \"Home\":\n outputValue = this._handleHomeKey(handler);\n break;\n case \"End\":\n outputValue = this._handleEndKey(handler);\n break;\n case 'default':\n break;\n }\n if ([\"ArrowLeft\", \"ArrowDown\", \"ArrowRight\", \"ArrowUp\", \"PageUp\", \"PageDown\", \"Home\", \"End\"].includes(event.key)) {\n let update = true;\n if (Array.isArray(currentValue)) {\n update = !(currentValue[0] === outputValue[0] && currentValue[1] === outputValue[1]);\n } else {\n update = currentValue !== outputValue;\n }\n if (update) {\n this._adapter.updateCurrentValue(outputValue);\n this._adapter.notifyChange(outputValue);\n }\n handlePrevent(event);\n }\n };\n this.onFocus = (e, handler) => {\n handlePrevent(e);\n const {\n target\n } = e;\n try {\n if (target.matches(':focus-visible')) {\n if (handler === 'min') {\n this._adapter.setStateVal('firstDotFocusVisible', true);\n } else {\n this._adapter.setStateVal('secondDotFocusVisible', true);\n }\n }\n } catch (error) {\n warning(true, 'Warning: [Semi Slider] The current browser does not support the focus-visible');\n }\n };\n this.onBlur = (e, handler) => {\n const {\n firstDotFocusVisible,\n secondDotFocusVisible\n } = this.getStates();\n if (handler === 'min') {\n firstDotFocusVisible && this._adapter.setStateVal('firstDotFocusVisible', false);\n } else {\n secondDotFocusVisible && this._adapter.setStateVal('secondDotFocusVisible', false);\n }\n };\n this.handleWrapClick = e => {\n const {\n disabled,\n isDrag\n } = this._adapter.getStates();\n if (isDrag || disabled || this._adapter.isEventFromHandle(e)) {\n return;\n }\n const {\n vertical\n } = this.getProps();\n const mousePos = this.handleMousePos(e.clientX, e.clientY);\n const position = vertical ? mousePos.y : mousePos.x;\n const isMin = this.checkWhichHandle(position);\n const outPutValue = this.calculateOutputValue(position, isMin);\n if (outPutValue === undefined) {\n return;\n }\n this._adapter.notifyChange(outPutValue);\n // check if is controlled component\n if (this._isControlledComponent()) {\n // only perform callback ops, skip UI update\n return;\n }\n // trigger UI state update\n this.setHandlePos(position, isMin, true, outPutValue);\n };\n /**\n * Move the slider to the current click position\n *\n * @memberof SliderFoundation\n */\n this.setHandlePos = function (position, isMin) {\n let clickTrack = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n let outPutValue = arguments.length > 3 ? arguments[3] : undefined;\n _this._adapter.onHandleMove(position, isMin, () => _this._adapter.onHandleUpAfter(), clickTrack, outPutValue);\n };\n /**\n * Determine which slider should be moved currently\n *\n * @memberof SliderFoundation\n */\n this.checkWhichHandle = pagePos => {\n const {\n vertical,\n verticalReverse\n } = this.getProps();\n const {\n currentValue\n } = this._adapter.getStates();\n const currentPos = this.transValueToPos(currentValue);\n let isMin = true;\n if (Array.isArray(currentPos)) {\n // Slide on both sides\n if (pagePos > currentPos[1] || Math.abs(pagePos - currentPos[0]) > Math.abs(pagePos - currentPos[1])) {\n isMin = false;\n }\n }\n if (vertical && verticalReverse) {\n isMin = !isMin;\n }\n return isMin;\n };\n this.handleWrapperEnter = () => {\n this._adapter.setStateVal('showBoundary', true);\n };\n this.handleWrapperLeave = () => {\n this._adapter.setStateVal('showBoundary', false);\n };\n }\n init() {\n this._checkCurrentValue();\n this._dragOffset = 0;\n }\n _checkCurrentValue() {\n const {\n currentValue,\n min,\n max\n } = this.getStates();\n let checked;\n if (Array.isArray(currentValue)) {\n checked = [];\n checked[0] = this._checkValidity(currentValue[0], min, max);\n checked[1] = this._checkValidity(currentValue[1], min, max);\n } else {\n checked = this._checkValidity(currentValue, min, max);\n }\n this._adapter.updateCurrentValue(checked);\n }\n /**\n * Untie event\n * @memberof SliderFoundation\n */\n destroy() {\n // debugger\n this._adapter.unSubscribeEventListener();\n }\n _getHandleCenterPosition(vertical, handle) {\n const pos = handle.getBoundingClientRect();\n const {\n x,\n y\n } = this.handleMousePos(pos.left + pos.width * 0.5, pos.top + pos.height * 0.5);\n return vertical ? y : x;\n }\n}","import { BASE_CLASS_PREFIX } from '../base/constants';\nconst PREFIX = `${BASE_CLASS_PREFIX}-spin`;\nconst cssClasses = {\n PREFIX\n};\nconst strings = {\n SIZE: ['small', 'middle', 'large']\n};\nconst numbers = {};\nexport { cssClasses, strings, numbers };","import BaseFoundation from '../base/foundation';\nclass SpinFoundation extends BaseFoundation {\n static get spinDefaultAdapter() {\n return {\n getProp: () => undefined,\n setLoading: val => undefined\n };\n }\n constructor(adapter) {\n super(Object.assign(Object.assign({}, SpinFoundation.spinDefaultAdapter), adapter));\n }\n updateLoadingIfNeedDelay() {\n const {\n spinning: propsSpinning,\n delay: propsDelay\n } = this._adapter.getProps();\n const {\n delay\n } = this._adapter.getStates();\n if (delay) {\n const self = this;\n this._timer = setTimeout(() => {\n self._adapter.setState({\n loading: propsSpinning,\n delay: 0\n });\n }, propsDelay);\n }\n }\n destroy() {\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n }\n}\nexport default SpinFoundation;","import { BASE_CLASS_PREFIX } from '../base/constants';\nconst cssClasses = {\n PREFIX: `${BASE_CLASS_PREFIX}-tooltip`\n};\nconst strings = {\n POSITION_SET: ['top', 'topLeft', 'topRight', 'left', 'leftTop', 'leftBottom', 'right', 'rightTop', 'rightBottom', 'bottom', 'bottomLeft', 'bottomRight', 'leftTopOver', 'rightTopOver', 'leftBottomOver', 'rightBottomOver'],\n TRIGGER_SET: ['hover', 'focus', 'click', 'custom', 'contextMenu'],\n STATUS_DISABLED: 'disabled',\n STATUS_LOADING: 'loading'\n};\nconst numbers = {\n ARROW_BOUNDING: {\n offsetX: 0,\n offsetY: 2,\n width: 24,\n height: 7\n },\n DEFAULT_Z_INDEX: 1060,\n MOUSE_ENTER_DELAY: 50,\n MOUSE_LEAVE_DELAY: 50,\n SPACING: 8,\n MARGIN: 0\n};\nexport { cssClasses, strings, numbers };","import _isEmpty from \"lodash/isEmpty\";\nimport _get from \"lodash/get\";\nimport BaseFoundation from '../base/foundation';\nimport { handlePrevent } from '../utils/a11y';\nconst REGS = {\n TOP: /top/i,\n RIGHT: /right/i,\n BOTTOM: /bottom/i,\n LEFT: /left/i\n};\nconst defaultRect = {\n left: 0,\n top: 0,\n height: 0,\n width: 0,\n scrollLeft: 0,\n scrollTop: 0\n};\nexport default class Tooltip extends BaseFoundation {\n constructor(adapter) {\n var _this;\n super(Object.assign({}, adapter));\n _this = this;\n this.removePortal = () => {\n this._adapter.removePortal();\n };\n this.setDisplayNone = (displayNone, cb) => {\n this._adapter.setDisplayNone(displayNone, cb);\n };\n this.onResize = () => {\n // this.log('resize');\n // rePosition when window resize\n this.calcPosition();\n };\n this.delayShow = () => {\n const mouseEnterDelay = this.getProp('mouseEnterDelay');\n this.clearDelayTimer();\n if (mouseEnterDelay > 0) {\n this._timer = setTimeout(() => {\n this.show();\n this.clearDelayTimer();\n }, mouseEnterDelay);\n } else {\n this.show();\n }\n };\n this.show = () => {\n const content = this.getProp('content');\n const trigger = this.getProp('trigger');\n const clickTriggerToHide = this.getProp('clickTriggerToHide');\n const {\n visible,\n displayNone\n } = this.getStates();\n if (displayNone) {\n this.setDisplayNone(false);\n }\n if (visible) {\n return;\n }\n this.clearDelayTimer();\n /**\n * If you emit an event in setState callback, you need to place the event listener function before setState to execute.\n * This is to avoid event registration being executed later than setState callback when setState is executed in setTimeout.\n * internal-issues:1402#note_38969412\n */\n this._adapter.on('portalInserted', () => {\n this.calcPosition();\n });\n this._adapter.on('positionUpdated', () => {\n this._togglePortalVisible(true);\n });\n this._adapter.insertPortal(content, {\n left: -9999,\n top: -9999\n }); // offscreen rendering\n if (trigger === 'custom') {\n this._adapter.registerClickOutsideHandler(() => {});\n }\n /**\n * trigger类型是click时,仅当portal被插入显示后,才绑定clickOutsideHandler\n * 因为handler需要绑定在document上。如果在constructor阶段绑定\n * 当一个页面中有多个容器实例时,一次click会触发多个容器的handler\n *\n * When the trigger type is click, clickOutsideHandler is bound only after the portal is inserted and displayed\n * Because the handler needs to be bound to the document. If you bind during the constructor phase\n * When there are multiple container instances in a page, one click triggers the handler of multiple containers\n */\n if (trigger === 'click' || clickTriggerToHide || trigger === 'contextMenu') {\n this._adapter.registerClickOutsideHandler(this.hide);\n }\n this._bindScrollEvent();\n this._bindResizeEvent();\n };\n /**\n * 耦合的东西比较多,稍微罗列一下:\n *\n * - 根据 trigger 和 wrapper 的 boundingClient 计算当前的 left、top、transform-origin\n * - 根据当前的 position 和 wrapper 的 boundingClient 决定是否需要自动调整位置\n * - 根据当前的 position、trigger 的 boundingClient 以及 motion.handleStyle 调整当前的 style\n *\n * There are many coupling things, a little list:\n *\n * - calculate the current left, top, and transfer-origin according to the boundingClient of trigger and wrapper\n * - decide whether to automatically adjust the position according to the current position and the boundingClient of wrapper\n * - adjust the current style according to the current position, the boundingClient of trigger and motion.handle Style\n */\n this.calcPosition = function (triggerRect, wrapperRect, containerRect) {\n let shouldUpdatePos = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n triggerRect = (_isEmpty(triggerRect) ? _this._adapter.getTriggerBounding() : triggerRect) || Object.assign({}, defaultRect);\n containerRect = (_isEmpty(containerRect) ? _this._adapter.getPopupContainerRect() : containerRect) || Object.assign({}, defaultRect);\n wrapperRect = (_isEmpty(wrapperRect) ? _this._adapter.getWrapperBounding() : wrapperRect) || Object.assign({}, defaultRect);\n // console.log('containerRect: ', containerRect, 'triggerRect: ', triggerRect, 'wrapperRect: ', wrapperRect);\n let style = _this.calcPosStyle({\n triggerRect,\n wrapperRect,\n containerRect\n });\n let position = _this.getProp('position');\n if (_this.getProp('autoAdjustOverflow')) {\n // console.log('style: ', style, '\\ntriggerRect: ', triggerRect, '\\nwrapperRect: ', wrapperRect);\n const {\n position: adjustedPos,\n isHeightOverFlow,\n isWidthOverFlow\n } = _this.adjustPosIfNeed(position, style, triggerRect, wrapperRect, containerRect);\n if (position !== adjustedPos || isHeightOverFlow || isWidthOverFlow) {\n position = adjustedPos;\n style = _this.calcPosStyle({\n triggerRect,\n wrapperRect,\n containerRect,\n position,\n spacing: null,\n isOverFlow: [isHeightOverFlow, isWidthOverFlow]\n });\n }\n }\n if (shouldUpdatePos && _this._mounted) {\n // this._adapter.updatePlacementAttr(style.position);\n _this._adapter.setPosition(Object.assign(Object.assign({}, style), {\n position\n }));\n }\n return style;\n };\n this.delayHide = () => {\n const mouseLeaveDelay = this.getProp('mouseLeaveDelay');\n this.clearDelayTimer();\n if (mouseLeaveDelay > 0) {\n this._timer = setTimeout(() => {\n // console.log('delayHide for ', mouseLeaveDelay, ' ms, ', ...args);\n this.hide();\n this.clearDelayTimer();\n }, mouseLeaveDelay);\n } else {\n this.hide();\n }\n };\n this.hide = () => {\n this.clearDelayTimer();\n this._togglePortalVisible(false);\n this._adapter.off('portalInserted');\n this._adapter.off('positionUpdated');\n };\n this.handleContainerKeydown = event => {\n const {\n guardFocus,\n closeOnEsc\n } = this.getProps();\n switch (event && event.key) {\n case \"Escape\":\n closeOnEsc && this._handleEscKeyDown(event);\n break;\n case \"Tab\":\n if (guardFocus) {\n const container = this._adapter.getContainer();\n const focusableElements = this._adapter.getFocusableElements(container);\n const focusableNum = focusableElements.length;\n if (focusableNum) {\n // Shift + Tab will move focus backward\n if (event.shiftKey) {\n this._handleContainerShiftTabKeyDown(focusableElements, event);\n } else {\n this._handleContainerTabKeyDown(focusableElements, event);\n }\n }\n }\n break;\n default:\n break;\n }\n };\n this._timer = null;\n }\n init() {\n const {\n wrapperId\n } = this.getProps();\n this._mounted = true;\n this._bindEvent();\n this._shouldShow();\n this._initContainerPosition();\n if (!wrapperId) {\n this._adapter.setId();\n }\n }\n destroy() {\n this._mounted = false;\n this.unBindEvent();\n }\n _bindEvent() {\n const trigger = this.getProp('trigger'); // get trigger type\n const {\n triggerEventSet,\n portalEventSet\n } = this._generateEvent(trigger);\n this._bindTriggerEvent(triggerEventSet);\n this._bindPortalEvent(portalEventSet);\n this._bindResizeEvent();\n }\n unBindEvent() {\n this._adapter.unregisterClickOutsideHandler();\n this.unBindResizeEvent();\n this.unBindScrollEvent();\n clearTimeout(this._timer);\n }\n _bindTriggerEvent(triggerEventSet) {\n this._adapter.registerTriggerEvent(triggerEventSet);\n }\n _bindPortalEvent(portalEventSet) {\n this._adapter.registerPortalEvent(portalEventSet);\n }\n _bindResizeEvent() {\n this._adapter.registerResizeHandler(this.onResize);\n }\n unBindResizeEvent() {\n this._adapter.unregisterResizeHandler(this.onResize);\n }\n _adjustPos() {\n let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let isVertical = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let adjustType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'reverse';\n let concatPos = arguments.length > 3 ? arguments[3] : undefined;\n switch (adjustType) {\n case 'reverse':\n return this._reversePos(position, isVertical);\n case 'expand':\n // only happens when position is top/bottom/left/right\n return this._expandPos(position, concatPos);\n case 'reduce':\n // only happens when position other than top/bottom/left/right\n return this._reducePos(position);\n default:\n return this._reversePos(position, isVertical);\n }\n }\n _reversePos() {\n let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let isVertical = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (isVertical) {\n if (REGS.TOP.test(position)) {\n return position.replace('top', 'bottom').replace('Top', 'Bottom');\n } else if (REGS.BOTTOM.test(position)) {\n return position.replace('bottom', 'top').replace('Bottom', 'Top');\n }\n } else if (REGS.LEFT.test(position)) {\n return position.replace('left', 'right').replace('Left', 'Right');\n } else if (REGS.RIGHT.test(position)) {\n return position.replace('right', 'left').replace('Right', 'Left');\n }\n return position;\n }\n _expandPos() {\n let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let concatPos = arguments.length > 1 ? arguments[1] : undefined;\n return position.concat(concatPos);\n }\n _reducePos() {\n let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n // if cur position consists of two directions, remove the last position\n const found = ['Top', 'Bottom', 'Left', 'Right'].find(pos => position.endsWith(pos));\n return found ? position.replace(found, '') : position;\n }\n clearDelayTimer() {\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n }\n _generateEvent(types) {\n const eventNames = this._adapter.getEventName();\n const triggerEventSet = {\n // bind esc keydown on trigger for a11y\n [eventNames.keydown]: event => {\n this._handleTriggerKeydown(event);\n }\n };\n let portalEventSet = {};\n switch (types) {\n case 'focus':\n triggerEventSet[eventNames.focus] = () => {\n this.delayShow();\n };\n triggerEventSet[eventNames.blur] = () => {\n this.delayHide();\n };\n portalEventSet = triggerEventSet;\n break;\n case 'click':\n triggerEventSet[eventNames.click] = () => {\n // this.delayShow();\n this.show();\n };\n portalEventSet = {};\n // Click outside needs special treatment, can not be directly tied to the trigger Element, need to be bound to the document\n break;\n case 'hover':\n triggerEventSet[eventNames.mouseEnter] = () => {\n // console.log(e);\n this.setCache('isClickToHide', false);\n this.delayShow();\n // this.show('trigger');\n };\n\n triggerEventSet[eventNames.mouseLeave] = () => {\n // console.log(e);\n this.delayHide();\n // this.hide('trigger');\n };\n // bind focus to hover trigger for a11y\n triggerEventSet[eventNames.focus] = () => {\n const {\n disableFocusListener\n } = this.getProps();\n !disableFocusListener && this.delayShow();\n };\n triggerEventSet[eventNames.blur] = () => {\n const {\n disableFocusListener\n } = this.getProps();\n !disableFocusListener && this.delayHide();\n };\n portalEventSet = Object.assign({}, triggerEventSet);\n if (this.getProp('clickToHide')) {\n portalEventSet[eventNames.click] = () => {\n this.setCache('isClickToHide', true);\n this.hide();\n };\n portalEventSet[eventNames.mouseEnter] = () => {\n if (this.getCache('isClickToHide')) {\n return;\n }\n this.delayShow();\n };\n }\n break;\n case 'custom':\n // when trigger type is 'custom', no need to bind eventHandler\n // show/hide completely depend on props.visible which change by user\n break;\n case 'contextMenu':\n triggerEventSet[eventNames.contextMenu] = e => {\n e.preventDefault();\n this.show();\n };\n // Click outside needs special treatment, can not be directly tied to the trigger Element, need to be bound to the document\n break;\n default:\n break;\n }\n return {\n triggerEventSet,\n portalEventSet\n };\n }\n _shouldShow() {\n const visible = this.getProp('visible');\n if (visible) {\n this.show();\n } else {\n // this.hide();\n }\n }\n _togglePortalVisible(isVisible) {\n const nowVisible = this.getState('visible');\n if (nowVisible !== isVisible) {\n this._adapter.togglePortalVisible(isVisible, () => {\n if (isVisible) {\n this._adapter.setInitialFocus();\n }\n this._adapter.notifyVisibleChange(isVisible);\n });\n }\n }\n _roundPixel(pixel) {\n if (typeof pixel === 'number') {\n return Math.round(pixel);\n }\n return pixel;\n }\n calcTransformOrigin(position, triggerRect, translateX, translateY) {\n if (position && triggerRect && translateX != null && translateY != null) {\n if (this.getProp('transformFromCenter')) {\n if (['topLeft', 'bottomLeft'].includes(position)) {\n return `${this._roundPixel(triggerRect.width / 2)}px ${-translateY * 100}%`;\n }\n if (['topRight', 'bottomRight'].includes(position)) {\n return `calc(100% - ${this._roundPixel(triggerRect.width / 2)}px) ${-translateY * 100}%`;\n }\n if (['leftTop', 'rightTop'].includes(position)) {\n return `${-translateX * 100}% ${this._roundPixel(triggerRect.height / 2)}px`;\n }\n if (['leftBottom', 'rightBottom'].includes(position)) {\n return `${-translateX * 100}% calc(100% - ${this._roundPixel(triggerRect.height / 2)}px)`;\n }\n }\n return `${-translateX * 100}% ${-translateY * 100}%`;\n }\n return null;\n }\n calcPosStyle(props) {\n var _a;\n const {\n spacing,\n isOverFlow\n } = props;\n const {\n innerWidth\n } = window;\n const triggerRect = (_isEmpty(props.triggerRect) ? props.triggerRect : this._adapter.getTriggerBounding()) || Object.assign({}, defaultRect);\n const containerRect = (_isEmpty(props.containerRect) ? props.containerRect : this._adapter.getPopupContainerRect()) || Object.assign({}, defaultRect);\n const wrapperRect = (_isEmpty(props.wrapperRect) ? props.wrapperRect : this._adapter.getWrapperBounding()) || Object.assign({}, defaultRect);\n const position = props.position != null ? props.position : this.getProp('position');\n const RAW_SPACING = spacing != null ? spacing : this.getProp('spacing');\n const {\n arrowPointAtCenter,\n showArrow,\n arrowBounding\n } = this.getProps();\n const pointAtCenter = showArrow && arrowPointAtCenter;\n let SPACING = RAW_SPACING;\n let ANO_SPACING = 0;\n if (typeof RAW_SPACING !== 'number') {\n // extended spacing api with {x: number, y: number}, the axes of the spacing is determined based on the position\n const isTopOrBottom = position.includes('top') || position.includes('bottom');\n SPACING = isTopOrBottom ? RAW_SPACING.y : RAW_SPACING.x;\n ANO_SPACING = isTopOrBottom ? RAW_SPACING.x : RAW_SPACING.y;\n }\n const horizontalArrowWidth = _get(arrowBounding, 'width', 24);\n const verticalArrowHeight = _get(arrowBounding, 'width', 24);\n const arrowOffsetY = _get(arrowBounding, 'offsetY', 0);\n const positionOffsetX = 6;\n const positionOffsetY = 6;\n // You must use left/top when rendering, using right/bottom does not render the element position correctly\n // Use left/top + translate to achieve tooltip positioning perfectly without knowing the size of the tooltip expansion layer\n let left;\n let top;\n let translateX = 0; // Container x-direction translation distance\n let translateY = 0; // Container y-direction translation distance\n const middleX = triggerRect.left + triggerRect.width / 2;\n const middleY = triggerRect.top + triggerRect.height / 2;\n const offsetXWithArrow = positionOffsetX + horizontalArrowWidth / 2;\n const offsetYWithArrow = positionOffsetY + verticalArrowHeight / 2;\n const heightDifference = wrapperRect.height - containerRect.height;\n const widthDifference = wrapperRect.width - containerRect.width;\n const offsetHeight = heightDifference > 0 ? heightDifference : 0;\n const offsetWidth = widthDifference > 0 ? widthDifference : 0;\n const isHeightOverFlow = isOverFlow && isOverFlow[0];\n const isWidthOverFlow = isOverFlow && isOverFlow[1];\n const isTriggerNearLeft = middleX - containerRect.left < containerRect.right - middleX;\n const isTriggerNearTop = middleY - containerRect.top < containerRect.bottom - middleY;\n const isWrapperWidthOverflow = wrapperRect.width > innerWidth;\n const scaled = Math.abs((wrapperRect === null || wrapperRect === void 0 ? void 0 : wrapperRect.width) - ((_a = this._adapter.getContainer()) === null || _a === void 0 ? void 0 : _a.clientWidth)) > 1;\n if (scaled) {\n SPACING = SPACING * wrapperRect.width / this._adapter.getContainer().clientWidth;\n }\n switch (position) {\n case 'top':\n // left = middleX;\n // top = triggerRect.top - SPACING;\n left = isWidthOverFlow ? isTriggerNearLeft ? containerRect.left + wrapperRect.width / 2 : containerRect.right - wrapperRect.width / 2 + offsetWidth : middleX + ANO_SPACING;\n top = isHeightOverFlow ? containerRect.bottom + offsetHeight : triggerRect.top - SPACING;\n translateX = -0.5;\n translateY = -1;\n break;\n case 'topLeft':\n // left = pointAtCenter ? middleX - offsetXWithArrow : triggerRect.left;\n // top = triggerRect.top - SPACING;\n left = isWidthOverFlow ? isWrapperWidthOverflow ? containerRect.left : containerRect.right - wrapperRect.width : pointAtCenter ? middleX - offsetXWithArrow + ANO_SPACING : triggerRect.left + ANO_SPACING;\n top = isHeightOverFlow ? containerRect.bottom + offsetHeight : triggerRect.top - SPACING;\n translateY = -1;\n break;\n case 'topRight':\n // left = pointAtCenter ? middleX + offsetXWithArrow : triggerRect.right;\n // top = triggerRect.top - SPACING;\n left = isWidthOverFlow ? containerRect.right + offsetWidth : pointAtCenter ? middleX + offsetXWithArrow + ANO_SPACING : triggerRect.right + ANO_SPACING;\n top = isHeightOverFlow ? containerRect.bottom + offsetHeight : triggerRect.top - SPACING;\n translateY = -1;\n translateX = -1;\n break;\n case 'left':\n // left = triggerRect.left - SPACING;\n // top = middleY;\n // left = isWidthOverFlow? containerRect.right - SPACING : triggerRect.left - SPACING;\n left = isWidthOverFlow ? containerRect.right + offsetWidth - SPACING + offsetXWithArrow : triggerRect.left - SPACING;\n top = isHeightOverFlow ? isTriggerNearTop ? containerRect.top + wrapperRect.height / 2 : containerRect.bottom - wrapperRect.height / 2 + offsetHeight : middleY + ANO_SPACING;\n translateX = -1;\n translateY = -0.5;\n break;\n case 'leftTop':\n // left = triggerRect.left - SPACING;\n // top = pointAtCenter ? middleY - offsetYWithArrow : triggerRect.top;\n left = isWidthOverFlow ? containerRect.right + offsetWidth - SPACING + offsetXWithArrow : triggerRect.left - SPACING;\n top = isHeightOverFlow ? containerRect.top : pointAtCenter ? middleY - offsetYWithArrow + ANO_SPACING : triggerRect.top + ANO_SPACING;\n translateX = -1;\n break;\n case 'leftBottom':\n // left = triggerRect.left - SPACING;\n // top = pointAtCenter ? middleY + offsetYWithArrow : triggerRect.bottom;\n left = isWidthOverFlow ? containerRect.right + offsetWidth - SPACING + offsetXWithArrow : triggerRect.left - SPACING;\n top = isHeightOverFlow ? containerRect.bottom + offsetHeight : pointAtCenter ? middleY + offsetYWithArrow + ANO_SPACING : triggerRect.bottom + ANO_SPACING;\n translateX = -1;\n translateY = -1;\n break;\n case 'bottom':\n // left = middleX;\n // top = triggerRect.top + triggerRect.height + SPACING;\n left = isWidthOverFlow ? isTriggerNearLeft ? containerRect.left + wrapperRect.width / 2 : containerRect.right - wrapperRect.width / 2 + offsetWidth : middleX + ANO_SPACING;\n top = isHeightOverFlow ? containerRect.top + offsetYWithArrow - SPACING : triggerRect.top + triggerRect.height + SPACING;\n translateX = -0.5;\n break;\n case 'bottomLeft':\n // left = pointAtCenter ? middleX - offsetXWithArrow : triggerRect.left;\n // top = triggerRect.bottom + SPACING;\n left = isWidthOverFlow ? isWrapperWidthOverflow ? containerRect.left : containerRect.right - wrapperRect.width : pointAtCenter ? middleX - offsetXWithArrow + ANO_SPACING : triggerRect.left + ANO_SPACING;\n top = isHeightOverFlow ? containerRect.top + offsetYWithArrow - SPACING : triggerRect.top + triggerRect.height + SPACING;\n break;\n case 'bottomRight':\n // left = pointAtCenter ? middleX + offsetXWithArrow : triggerRect.right;\n // top = triggerRect.bottom + SPACING;\n left = isWidthOverFlow ? containerRect.right + offsetWidth : pointAtCenter ? middleX + offsetXWithArrow + ANO_SPACING : triggerRect.right + ANO_SPACING;\n top = isHeightOverFlow ? containerRect.top + offsetYWithArrow - SPACING : triggerRect.top + triggerRect.height + SPACING;\n translateX = -1;\n break;\n case 'right':\n // left = triggerRect.right + SPACING;\n // top = middleY;\n left = isWidthOverFlow ? containerRect.left - SPACING + offsetXWithArrow : triggerRect.right + SPACING;\n top = isHeightOverFlow ? isTriggerNearTop ? containerRect.top + wrapperRect.height / 2 : containerRect.bottom - wrapperRect.height / 2 + offsetHeight : middleY + ANO_SPACING;\n translateY = -0.5;\n break;\n case 'rightTop':\n // left = triggerRect.right + SPACING;\n // top = pointAtCenter ? middleY - offsetYWithArrow : triggerRect.top;\n left = isWidthOverFlow ? containerRect.left - SPACING + offsetXWithArrow : triggerRect.right + SPACING;\n top = isHeightOverFlow ? containerRect.top : pointAtCenter ? middleY - offsetYWithArrow + ANO_SPACING : triggerRect.top + ANO_SPACING;\n break;\n case 'rightBottom':\n // left = triggerRect.right + SPACING;\n // top = pointAtCenter ? middleY + offsetYWithArrow : triggerRect.bottom;\n left = isWidthOverFlow ? containerRect.left - SPACING + offsetXWithArrow : triggerRect.right + SPACING;\n top = isHeightOverFlow ? containerRect.bottom + offsetHeight : pointAtCenter ? middleY + offsetYWithArrow + ANO_SPACING : triggerRect.bottom + ANO_SPACING;\n translateY = -1;\n break;\n case 'leftTopOver':\n left = triggerRect.left - SPACING;\n top = triggerRect.top - SPACING;\n break;\n case 'rightTopOver':\n left = triggerRect.right + SPACING;\n top = triggerRect.top - SPACING;\n translateX = -1;\n break;\n case 'leftBottomOver':\n left = triggerRect.left - SPACING;\n top = triggerRect.bottom + SPACING;\n translateY = -1;\n break;\n case 'rightBottomOver':\n left = triggerRect.right + SPACING;\n top = triggerRect.bottom + SPACING;\n translateX = -1;\n translateY = -1;\n break;\n default:\n break;\n }\n const transformOrigin = this.calcTransformOrigin(position, triggerRect, translateX, translateY); // Transform origin\n const _containerIsBody = this._adapter.containerIsBody();\n // Calculate container positioning relative to window\n left = left - containerRect.left;\n top = top - containerRect.top;\n if (scaled) {\n left /= wrapperRect.width / this._adapter.getContainer().clientWidth;\n }\n if (scaled) {\n top /= wrapperRect.height / this._adapter.getContainer().clientHeight;\n }\n /**\n * container为body时,如果position不为relative或absolute,这时trigger计算出的top/left会根据html定位(initial containing block)\n * 此时如果body有margin,则计算出的位置相对于body会有问题 fix issue #1368\n *\n * When container is body, if position is not relative or absolute, then the top/left calculated by trigger will be positioned according to html\n * At this time, if the body has a margin, the calculated position will have a problem relative to the body fix issue #1368\n */\n if (_containerIsBody && !this._adapter.containerIsRelativeOrAbsolute()) {\n const documentEleRect = this._adapter.getDocumentElementBounding();\n // Represents the left of the body relative to html\n left += containerRect.left - documentEleRect.left;\n // Represents the top of the body relative to html\n top += containerRect.top - documentEleRect.top;\n }\n // ContainerRect.scrollLeft to solve the inner scrolling of the container\n left = _containerIsBody ? left : left + containerRect.scrollLeft;\n top = _containerIsBody ? top : top + containerRect.scrollTop;\n const triggerHeight = triggerRect.height;\n if (this.getProp('showArrow') && !arrowPointAtCenter && triggerHeight <= (verticalArrowHeight / 2 + arrowOffsetY) * 2) {\n const offsetY = triggerHeight / 2 - (arrowOffsetY + verticalArrowHeight / 2);\n if ((position.includes('Top') || position.includes('Bottom')) && !position.includes('Over')) {\n top = position.includes('Top') ? top + offsetY : top - offsetY;\n }\n }\n // The left/top value here must be rounded, otherwise it will cause the small triangle to shake\n const style = {\n left: this._roundPixel(left),\n top: this._roundPixel(top)\n };\n let transform = '';\n if (translateX != null) {\n transform += `translateX(${translateX * 100}%) `;\n Object.defineProperty(style, 'translateX', {\n enumerable: false,\n value: translateX\n });\n }\n if (translateY != null) {\n transform += `translateY(${translateY * 100}%) `;\n Object.defineProperty(style, 'translateY', {\n enumerable: false,\n value: translateY\n });\n }\n if (transformOrigin != null) {\n style.transformOrigin = transformOrigin;\n }\n if (transform) {\n style.transform = transform;\n }\n return style;\n }\n isLR() {\n let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return position.includes('left') || position.includes('right');\n }\n isTB() {\n let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return position.includes('top') || position.includes('bottom');\n }\n isReverse(rowSpace, reverseSpace, size) {\n // 原空间不足,反向空间足够\n // Insufficient original space, enough reverse space\n return rowSpace < size && reverseSpace > size;\n }\n isOverFlow(rowSpace, reverseSpace, size) {\n // 原空间且反向空间都不足\n // The original space and the reverse space are not enough\n return rowSpace < size && reverseSpace < size;\n }\n isHalfOverFlow(posSpace, negSpace, size) {\n // 正半空间或者负半空间不足,即表示有遮挡,需要偏移\n // Insufficient positive half space or negative half space means that there is occlusion and needs to be offset\n return posSpace < size || negSpace < size;\n }\n isHalfAllEnough(posSpace, negSpace, size) {\n // 正半空间和负半空间都足够,即表示可以从 topLeft/topRight 变成 top\n // Both positive and negative half-spaces are sufficient, which means you can change from topLeft/topRight to top\n return posSpace >= size || negSpace >= size;\n }\n getReverse(viewOverFlow, containerOverFlow, shouldReverseView, shouldReverseContainer) {\n /**\n * 基于视口和容器一起判断,以下几种情况允许从原方向转到反方向,以判断是否应该由top->bottom为例子\n *\n * 1. 视口上下空间不足 且 容器上空间❌下空间✅\n * 2. 视口上空间❌下空间✅\n *\n * Based on the judgment of the viewport and the container, the following situations are allowed to turn from the original direction to the opposite direction\n * to judge whether it should be top->bottom as an example\n * 1. There is insufficient space above and below the viewport and the space above the container ❌ the space below ✅\n * 2. The space above the viewport ❌ the space below ✅ and the space above and below the container is insufficient\n * 3. Viewport upper space ❌ lower space✅ and container upper space ❌ lower space✅\n */\n return viewOverFlow && shouldReverseContainer || shouldReverseView;\n }\n // place the dom correctly\n adjustPosIfNeed(position, style, triggerRect, wrapperRect, containerRect) {\n const {\n innerWidth,\n innerHeight\n } = window;\n const {\n margin\n } = this.getProps();\n const marginLeft = typeof margin === 'number' ? margin : margin.marginLeft;\n const marginTop = typeof margin === 'number' ? margin : margin.marginTop;\n const marginRight = typeof margin === 'number' ? margin : margin.marginRight;\n const marginBottom = typeof margin === 'number' ? margin : margin.marginBottom;\n let isHeightOverFlow = false;\n let isWidthOverFlow = false;\n const raw_spacing = this.getProp('spacing');\n let spacing = raw_spacing;\n let ano_spacing = 0;\n if (typeof raw_spacing !== 'number') {\n // extended spacing api with {x: number, y: number}, the axes of the spacing is determined based on the position\n const isTopOrBottom = position.includes('top') || position.includes('bottom');\n spacing = isTopOrBottom ? raw_spacing.y : raw_spacing.x;\n ano_spacing = isTopOrBottom ? raw_spacing.x : raw_spacing.y;\n }\n if (wrapperRect.width > 0 && wrapperRect.height > 0) {\n // let clientLeft = left + translateX * wrapperRect.width - containerRect.scrollLeft;\n // let clientTop = top + translateY * wrapperRect.height - containerRect.scrollTop;\n // if (this._adapter.containerIsBody() || this._adapter.containerIsRelative()) {\n // clientLeft += containerRect.left;\n // clientTop += containerRect.top;\n // }\n // const clientRight = clientLeft + wrapperRect.width;\n // const clientBottom = clientTop + wrapperRect.height;\n // The relative position of the elements on the screen\n // https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/tooltip-pic.svg\n const clientLeft = triggerRect.left;\n const clientRight = triggerRect.right;\n const clientTop = triggerRect.top;\n const clientBottom = triggerRect.bottom;\n const restClientLeft = innerWidth - clientLeft;\n const restClientTop = innerHeight - clientTop;\n const restClientRight = innerWidth - clientRight;\n const restClientBottom = innerHeight - clientBottom;\n const widthIsBigger = wrapperRect.width > triggerRect.width;\n const heightIsBigger = wrapperRect.height > triggerRect.height;\n // The wrapperR ect.top|bottom equivalent cannot be directly used here for comparison, which is easy to cause jitter\n // 基于视口的微调判断\n // Fine-tuning judgment based on viewport\n const shouldViewReverseTop = clientTop - marginTop < wrapperRect.height + spacing && restClientBottom - marginBottom > wrapperRect.height + spacing;\n const shouldViewReverseLeft = clientLeft - marginLeft < wrapperRect.width + spacing && restClientRight - marginRight > wrapperRect.width + spacing;\n const shouldViewReverseBottom = restClientBottom - marginBottom < wrapperRect.height + spacing && clientTop - marginTop > wrapperRect.height + spacing;\n const shouldViewReverseRight = restClientRight - marginRight < wrapperRect.width + spacing && clientLeft - marginLeft > wrapperRect.width + spacing;\n const shouldViewReverseTopOver = restClientTop - marginBottom < wrapperRect.height + spacing && clientBottom - marginTop > wrapperRect.height + spacing;\n const shouldViewReverseBottomOver = clientBottom - marginTop < wrapperRect.height + spacing && restClientTop - marginBottom > wrapperRect.height + spacing;\n const shouldViewReverseTopSide = restClientTop < wrapperRect.height + ano_spacing && clientBottom > wrapperRect.height + ano_spacing;\n const shouldViewReverseBottomSide = clientBottom < wrapperRect.height + ano_spacing && restClientTop > wrapperRect.height + ano_spacing;\n const shouldViewReverseLeftSide = restClientLeft < wrapperRect.width + ano_spacing && clientRight > wrapperRect.width + ano_spacing;\n const shouldViewReverseRightSide = clientRight < wrapperRect.width + ano_spacing && restClientLeft > wrapperRect.width + ano_spacing;\n const shouldReverseTopOver = restClientTop < wrapperRect.height + spacing && clientBottom > wrapperRect.height + spacing;\n const shouldReverseBottomOver = clientBottom < wrapperRect.height + spacing && restClientTop > wrapperRect.height + spacing;\n const shouldReverseLeftOver = restClientLeft < wrapperRect.width && clientRight > wrapperRect.width;\n const shouldReverseRightOver = clientRight < wrapperRect.width && restClientLeft > wrapperRect.width;\n // 基于容器的微调判断\n // Fine-tuning judgment based on container\n const clientTopInContainer = clientTop - containerRect.top;\n const clientLeftInContainer = clientLeft - containerRect.left;\n const clientBottomInContainer = clientTopInContainer + triggerRect.height;\n const clientRightInContainer = clientLeftInContainer + triggerRect.width;\n const restClientBottomInContainer = containerRect.bottom - clientBottom;\n const restClientRightInContainer = containerRect.right - clientRight;\n const restClientTopInContainer = restClientBottomInContainer + triggerRect.height;\n const restClientLeftInContainer = restClientRightInContainer + triggerRect.width;\n // 当原空间不足,反向空间足够时,可以反向。\n // When the original space is insufficient and the reverse space is sufficient, the reverse can be performed.\n const shouldContainerReverseTop = this.isReverse(clientTopInContainer - marginTop, restClientBottomInContainer - marginBottom, wrapperRect.height + spacing);\n const shouldContainerReverseLeft = this.isReverse(clientLeftInContainer - marginLeft, restClientRightInContainer - marginRight, wrapperRect.width + spacing);\n const shouldContainerReverseBottom = this.isReverse(restClientBottomInContainer - marginBottom, clientTopInContainer - marginTop, wrapperRect.height + spacing);\n const shouldContainerReverseRight = this.isReverse(restClientRightInContainer - marginRight, clientLeftInContainer - marginLeft, wrapperRect.width + spacing);\n const shouldContainerReverseTopOver = this.isReverse(restClientTopInContainer - marginBottom, clientBottomInContainer - marginTop, wrapperRect.height + spacing);\n const shouldContainerReverseBottomOver = this.isReverse(clientBottomInContainer - marginTop, restClientTopInContainer - marginBottom, wrapperRect.height + spacing);\n const shouldContainerReverseTopSide = this.isReverse(restClientTopInContainer, clientBottomInContainer, wrapperRect.height + ano_spacing);\n const shouldContainerReverseBottomSide = this.isReverse(clientBottomInContainer, restClientTopInContainer, wrapperRect.height + ano_spacing);\n const shouldContainerReverseLeftSide = this.isReverse(restClientLeftInContainer, clientRightInContainer, wrapperRect.width + ano_spacing);\n const shouldContainerReverseRightSide = this.isReverse(clientRightInContainer, restClientLeftInContainer, wrapperRect.width + ano_spacing);\n const halfHeight = triggerRect.height / 2;\n const halfWidth = triggerRect.width / 2;\n // 视口, 原空间与反向空间是否都不足判断\n // Viewport, whether the original space and the reverse space are insufficient to judge\n const isViewYOverFlow = this.isOverFlow(clientTop - marginTop, restClientBottom - marginBottom, wrapperRect.height + spacing);\n const isViewXOverFlow = this.isOverFlow(clientLeft - marginLeft, restClientRight - marginRight, wrapperRect.width + spacing);\n const isViewYOverFlowSide = this.isOverFlow(clientBottom - marginTop, restClientTop - marginBottom, wrapperRect.height + spacing);\n const isViewXOverFlowSide = this.isOverFlow(clientRight - marginLeft, restClientLeft - marginRight, wrapperRect.width + spacing);\n const isViewYOverFlowSideHalf = this.isHalfOverFlow(clientBottom - halfHeight, restClientTop - halfHeight, (wrapperRect.height + ano_spacing) / 2);\n const isViewXOverFlowSideHalf = this.isHalfOverFlow(clientRight - halfWidth, restClientLeft - halfWidth, (wrapperRect.width + ano_spacing) / 2);\n const isViewYEnoughSideHalf = this.isHalfAllEnough(clientBottom - halfHeight, restClientTop - halfHeight, (wrapperRect.height + ano_spacing) / 2);\n const isViewXEnoughSideHalf = this.isHalfAllEnough(clientRight - halfWidth, restClientLeft - halfWidth, (wrapperRect.width + ano_spacing) / 2);\n // 容器, 原空间与反向空间是否都不足判断\n // container, whether the original space and the reverse space are insufficient to judge\n const isContainerYOverFlow = this.isOverFlow(clientTopInContainer - marginTop, restClientBottomInContainer - marginBottom, wrapperRect.height + spacing);\n const isContainerXOverFlow = this.isOverFlow(clientLeftInContainer - marginLeft, restClientRightInContainer - marginRight, wrapperRect.width + spacing);\n const isContainerYOverFlowSide = this.isOverFlow(clientBottomInContainer - marginTop, restClientTopInContainer - marginBottom, wrapperRect.height + spacing);\n const isContainerXOverFlowSide = this.isOverFlow(clientRightInContainer - marginLeft, restClientLeftInContainer - marginRight, wrapperRect.width + spacing);\n const isContainerYOverFlowSideHalf = this.isHalfOverFlow(clientBottomInContainer - halfHeight, restClientTopInContainer - halfHeight, (wrapperRect.height + ano_spacing) / 2);\n const isContainerXOverFlowSideHalf = this.isHalfOverFlow(clientRightInContainer - halfWidth, restClientLeftInContainer - halfWidth, (wrapperRect.width + ano_spacing) / 2);\n const isContainerYEnoughSideHalf = this.isHalfAllEnough(clientBottomInContainer - halfHeight, restClientTopInContainer - halfHeight, (wrapperRect.height + ano_spacing) / 2);\n const isContainerXEnoughSideHalf = this.isHalfAllEnough(clientRightInContainer - halfWidth, restClientLeftInContainer - halfWidth, (wrapperRect.width + ano_spacing) / 2);\n // 综合 viewport + container 判断微调,即视口 + 容器都放置不行时才能考虑位置调整\n // Comprehensive viewport + container judgment fine-tuning, that is, the position adjustment can only be considered when the viewport + container cannot be placed.\n const shouldReverseTop = this.getReverse(isViewYOverFlow, isContainerYOverFlow, shouldViewReverseTop, shouldContainerReverseTop);\n const shouldReverseLeft = this.getReverse(isViewXOverFlow, isContainerXOverFlow, shouldViewReverseLeft, shouldContainerReverseLeft);\n const shouldReverseBottom = this.getReverse(isViewYOverFlow, isContainerYOverFlow, shouldViewReverseBottom, shouldContainerReverseBottom);\n const shouldReverseRight = this.getReverse(isViewXOverFlow, isContainerXOverFlow, shouldViewReverseRight, shouldContainerReverseRight);\n // const shouldReverseTopOver = this.getReverse(isViewYOverFlowSide, isContainerYOverFlowSide, shouldViewReverseTopOver, shouldContainerReverseTopOver);\n // const shouldReverseBottomOver = this.getReverse(isViewYOverFlowSide, isContainerYOverFlowSide, shouldViewReverseBottomOver, shouldContainerReverseBottomOver);\n const shouldReverseTopSide = this.getReverse(isViewYOverFlowSide, isContainerYOverFlowSide, shouldViewReverseTopSide, shouldContainerReverseTopSide);\n const shouldReverseBottomSide = this.getReverse(isViewYOverFlowSide, isContainerYOverFlowSide, shouldViewReverseBottomSide, shouldContainerReverseBottomSide);\n const shouldReverseLeftSide = this.getReverse(isViewXOverFlowSide, isContainerXOverFlowSide, shouldViewReverseLeftSide, shouldContainerReverseLeftSide);\n const shouldReverseRightSide = this.getReverse(isViewXOverFlowSide, isContainerXOverFlowSide, shouldViewReverseRightSide, shouldContainerReverseRightSide);\n const isYOverFlowSideHalf = isViewYOverFlowSideHalf && isContainerYOverFlowSideHalf;\n const isXOverFlowSideHalf = isViewXOverFlowSideHalf && isContainerXOverFlowSideHalf;\n switch (position) {\n case 'top':\n if (shouldReverseTop) {\n position = this._adjustPos(position, true);\n }\n if (isXOverFlowSideHalf && (shouldReverseLeftSide || shouldReverseRightSide)) {\n position = this._adjustPos(position, true, 'expand', shouldReverseLeftSide ? 'Right' : 'Left');\n }\n break;\n case 'topLeft':\n if (shouldReverseTop) {\n position = this._adjustPos(position, true);\n }\n if (shouldReverseLeftSide && widthIsBigger) {\n position = this._adjustPos(position);\n }\n if (isWidthOverFlow && (isViewXEnoughSideHalf || isContainerXEnoughSideHalf)) {\n position = this._adjustPos(position, true, 'reduce');\n }\n break;\n case 'topRight':\n if (shouldReverseTop) {\n position = this._adjustPos(position, true);\n }\n if (shouldReverseRightSide && widthIsBigger) {\n position = this._adjustPos(position);\n }\n if (isWidthOverFlow && (isViewXEnoughSideHalf || isContainerXEnoughSideHalf)) {\n position = this._adjustPos(position, true, 'reduce');\n }\n break;\n case 'left':\n if (shouldReverseLeft) {\n position = this._adjustPos(position);\n }\n if (isYOverFlowSideHalf && (shouldReverseTopSide || shouldReverseBottomSide)) {\n position = this._adjustPos(position, false, 'expand', shouldReverseTopSide ? 'Bottom' : 'Top');\n }\n break;\n case 'leftTop':\n if (shouldReverseLeft) {\n position = this._adjustPos(position);\n }\n if (shouldReverseTopSide && heightIsBigger) {\n position = this._adjustPos(position, true);\n }\n if (isHeightOverFlow && (isViewYEnoughSideHalf || isContainerYEnoughSideHalf)) {\n position = this._adjustPos(position, false, 'reduce');\n }\n break;\n case 'leftBottom':\n if (shouldReverseLeft) {\n position = this._adjustPos(position);\n }\n if (shouldReverseBottomSide && heightIsBigger) {\n position = this._adjustPos(position, true);\n }\n if (isHeightOverFlow && (isViewYEnoughSideHalf || isContainerYEnoughSideHalf)) {\n position = this._adjustPos(position, false, 'reduce');\n }\n break;\n case 'bottom':\n if (shouldReverseBottom) {\n position = this._adjustPos(position, true);\n }\n if (isXOverFlowSideHalf && (shouldReverseLeftSide || shouldReverseRightSide)) {\n position = this._adjustPos(position, true, 'expand', shouldReverseLeftSide ? 'Right' : 'Left');\n }\n break;\n case 'bottomLeft':\n if (shouldReverseBottom) {\n position = this._adjustPos(position, true);\n }\n if (shouldReverseLeftSide && widthIsBigger) {\n position = this._adjustPos(position);\n }\n if (isWidthOverFlow && (isViewXEnoughSideHalf || isContainerXEnoughSideHalf)) {\n position = this._adjustPos(position, true, 'reduce');\n }\n break;\n case 'bottomRight':\n if (shouldReverseBottom) {\n position = this._adjustPos(position, true);\n }\n if (shouldReverseRightSide && widthIsBigger) {\n position = this._adjustPos(position);\n }\n if (isWidthOverFlow && (isViewXEnoughSideHalf || isContainerXEnoughSideHalf)) {\n position = this._adjustPos(position, true, 'reduce');\n }\n break;\n case 'right':\n if (shouldReverseRight) {\n position = this._adjustPos(position);\n }\n if (isYOverFlowSideHalf && (shouldReverseTopSide || shouldReverseBottomSide)) {\n position = this._adjustPos(position, false, 'expand', shouldReverseTopSide ? 'Bottom' : 'Top');\n }\n break;\n case 'rightTop':\n if (shouldReverseRight) {\n position = this._adjustPos(position);\n }\n if (shouldReverseTopSide && heightIsBigger) {\n position = this._adjustPos(position, true);\n }\n if (isHeightOverFlow && (isViewYEnoughSideHalf || isContainerYEnoughSideHalf)) {\n position = this._adjustPos(position, false, 'reduce');\n }\n break;\n case 'rightBottom':\n if (shouldReverseRight) {\n position = this._adjustPos(position);\n }\n if (shouldReverseBottomSide && heightIsBigger) {\n position = this._adjustPos(position, true);\n }\n if (isHeightOverFlow && (isViewYEnoughSideHalf || isContainerYEnoughSideHalf)) {\n position = this._adjustPos(position, false, 'reduce');\n }\n break;\n case 'leftTopOver':\n if (shouldReverseTopOver) {\n position = this._adjustPos(position, true);\n }\n if (shouldReverseLeftOver) {\n position = this._adjustPos(position);\n }\n break;\n case 'leftBottomOver':\n if (shouldReverseBottomOver) {\n position = this._adjustPos(position, true);\n }\n if (shouldReverseLeftOver) {\n position = this._adjustPos(position);\n }\n break;\n case 'rightTopOver':\n if (shouldReverseTopOver) {\n position = this._adjustPos(position, true);\n }\n if (shouldReverseRightOver) {\n position = this._adjustPos(position);\n }\n break;\n case 'rightBottomOver':\n if (shouldReverseBottomOver) {\n position = this._adjustPos(position, true);\n }\n if (shouldReverseRightOver) {\n position = this._adjustPos(position);\n }\n break;\n default:\n break;\n }\n // 判断溢出 Judgment overflow\n // 上下方向 top and bottom\n if (this.isTB(position)) {\n isHeightOverFlow = isViewYOverFlow && isContainerYOverFlow;\n // Related PR: https://github.com/DouyinFE/semi-design/pull/1297\n // If clientRight or restClientRight less than 0, means that the left and right parts of the trigger are blocked\n // Then the display of the wrapper will also be affected, make width overflow to offset the wrapper\n if (position === 'top' || position === 'bottom') {\n isWidthOverFlow = isViewXOverFlowSideHalf && isContainerXOverFlowSideHalf || clientRight < 0 || restClientRight < 0;\n } else {\n isWidthOverFlow = isViewXOverFlowSide && isContainerXOverFlowSide || clientRight < 0 || restClientRight < 0;\n }\n }\n // 左右方向 left and right\n if (this.isLR(position)) {\n isWidthOverFlow = isViewXOverFlow && isContainerXOverFlow;\n // If clientTop or restClientTop less than 0, means that the top and bottom parts of the trigger are blocked\n // Then the display of the wrapper will also be affected, make height overflow to offset the wrapper\n if (position === 'left' || position === 'right') {\n isHeightOverFlow = isViewYOverFlowSideHalf && isContainerYOverFlowSideHalf || clientTop < 0 || restClientTop < 0;\n } else {\n isHeightOverFlow = isViewYOverFlowSide && isContainerYOverFlowSide || clientTop < 0 || restClientTop < 0;\n }\n }\n }\n return {\n position,\n isHeightOverFlow,\n isWidthOverFlow\n };\n }\n _bindScrollEvent() {\n this._adapter.registerScrollHandler(() => this.calcPosition());\n // Capture scroll events on the window to determine whether the current scrolling area (e.target) will affect the positioning of the pop-up layer relative to the viewport when scrolling\n // (By determining whether the e.target contains the triggerDom of the current tooltip) If so, the pop-up layer will also be affected and needs to be repositioned\n }\n\n unBindScrollEvent() {\n this._adapter.unregisterScrollHandler();\n }\n _initContainerPosition() {\n this._adapter.updateContainerPosition();\n }\n _handleTriggerKeydown(event) {\n const {\n closeOnEsc,\n disableArrowKeyDown\n } = this.getProps();\n const container = this._adapter.getContainer();\n const focusableElements = this._adapter.getFocusableElements(container);\n const focusableNum = focusableElements.length;\n switch (event && event.key) {\n case \"Escape\":\n handlePrevent(event);\n closeOnEsc && this._handleEscKeyDown(event);\n break;\n case \"ArrowUp\":\n // when disableArrowKeyDown is true, disable tooltip's arrow keyboard event action\n !disableArrowKeyDown && focusableNum && this._handleTriggerArrowUpKeydown(focusableElements, event);\n break;\n case \"ArrowDown\":\n !disableArrowKeyDown && focusableNum && this._handleTriggerArrowDownKeydown(focusableElements, event);\n break;\n default:\n break;\n }\n }\n /**\n * focus trigger\n *\n * when trigger is 'focus' or 'hover', onFocus is bind to show popup\n * if we focus trigger, popup will show again\n *\n * 如果 trigger 是 focus 或者 hover,则它绑定了 onFocus,这里我们如果重新 focus 的话,popup 会再次打开\n * 因此 returnFocusOnClose 只支持 click trigger\n */\n focusTrigger() {\n const {\n trigger,\n returnFocusOnClose,\n preventScroll\n } = this.getProps();\n if (returnFocusOnClose && trigger !== 'custom') {\n const triggerNode = this._adapter.getTriggerNode();\n if (triggerNode && 'focus' in triggerNode) {\n triggerNode.focus({\n preventScroll\n });\n }\n }\n }\n _handleEscKeyDown(event) {\n const {\n trigger\n } = this.getProps();\n if (trigger !== 'custom') {\n // Move the focus into the trigger first and then close the pop-up layer \n // to avoid the problem of opening the pop-up layer again when the focus returns to the trigger in the case of hover and focus\n this.focusTrigger();\n this.hide();\n }\n this._adapter.notifyEscKeydown(event);\n }\n _handleContainerTabKeyDown(focusableElements, event) {\n const {\n preventScroll\n } = this.getProps();\n const activeElement = this._adapter.getActiveElement();\n const isLastCurrentFocus = focusableElements[focusableElements.length - 1] === activeElement;\n if (isLastCurrentFocus) {\n focusableElements[0].focus({\n preventScroll\n });\n event.preventDefault(); // prevent browser default tab move behavior\n }\n }\n\n _handleContainerShiftTabKeyDown(focusableElements, event) {\n const {\n preventScroll\n } = this.getProps();\n const activeElement = this._adapter.getActiveElement();\n const isFirstCurrentFocus = focusableElements[0] === activeElement;\n if (isFirstCurrentFocus) {\n focusableElements[focusableElements.length - 1].focus({\n preventScroll\n });\n event.preventDefault(); // prevent browser default tab move behavior\n }\n }\n\n _handleTriggerArrowDownKeydown(focusableElements, event) {\n const {\n preventScroll\n } = this.getProps();\n focusableElements[0].focus({\n preventScroll\n });\n event.preventDefault(); // prevent browser default scroll behavior\n }\n\n _handleTriggerArrowUpKeydown(focusableElements, event) {\n const {\n preventScroll\n } = this.getProps();\n focusableElements[focusableElements.length - 1].focus({\n preventScroll\n });\n event.preventDefault(); // prevent browser default scroll behavior\n }\n}","import isNullOrUndefined from \"./isNullOrUndefined\";\nexport default class Event {\n constructor() {\n this._eventMap = new Map();\n }\n on(event, callback) {\n if (event && typeof callback === 'function') {\n this._eventMap.has(event) || this._eventMap.set(event, []);\n this._eventMap.get(event).push(callback);\n }\n return this;\n }\n once(event, callback) {\n var _this = this;\n if (event && typeof callback === 'function') {\n const fn = function () {\n callback(...arguments);\n _this.off(event, fn);\n };\n this.on(event, fn);\n }\n }\n off(event, callback) {\n if (event) {\n if (typeof callback === 'function') {\n const callbacks = this._eventMap.get(event);\n if (Array.isArray(callbacks) && callbacks.length) {\n let index = -1;\n while ((index = callbacks.findIndex(cb => cb === callback)) > -1) {\n callbacks.splice(index, 1);\n }\n }\n } else if (isNullOrUndefined(callback)) {\n this._eventMap.delete(event);\n }\n }\n return this;\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (!this._eventMap.has(event)) {\n return false;\n }\n this._eventMap.get(event).forEach(callback => callback(...args));\n return true;\n }\n}","import _get from \"lodash/get\";\nexport function handlePrevent(event) {\n event.stopPropagation();\n event.preventDefault();\n}\nexport function isPrintableCharacter(string) {\n return string.length === 1 && string.match(/\\S/);\n}\n// set focus to the target item in item list\nexport function setFocusToItem(itemNodes, targetItem) {\n for (let i = 0; i < itemNodes.length; i++) {\n if (itemNodes[i] === targetItem) {\n itemNodes[i].tabIndex = 0;\n itemNodes[i].focus();\n } else {\n itemNodes[i].tabIndex = -1;\n }\n }\n}\n// set focus to the first item in item list\nexport function setFocusToFirstItem(itemNodes) {\n itemNodes.length > 0 && setFocusToItem(itemNodes, itemNodes[0]);\n}\n// set focus to the last item in item list\nexport function setFocusToLastItem(itemNodes) {\n itemNodes.length > 0 && setFocusToItem(itemNodes, itemNodes[itemNodes.length - 1]);\n}\n// set focus to the previous item in item list\nexport function setFocusToPreviousMenuItem(itemNodes, currentItem) {\n let newMenuItem, index;\n if (itemNodes.length > 0) {\n if (currentItem === itemNodes[0]) {\n newMenuItem = itemNodes[itemNodes.length - 1];\n } else {\n index = itemNodes.indexOf(currentItem);\n newMenuItem = itemNodes[index - 1];\n }\n setFocusToItem(itemNodes, newMenuItem);\n }\n}\n// set focus to the next item in item list\nexport function setFocusToNextMenuitem(itemNodes, currentItem) {\n let newMenuItem, index;\n if (itemNodes.length > 0) {\n if (currentItem === itemNodes[itemNodes.length - 1]) {\n newMenuItem = itemNodes[0];\n } else {\n index = itemNodes.indexOf(currentItem);\n newMenuItem = itemNodes[index + 1];\n }\n setFocusToItem(itemNodes, newMenuItem);\n }\n}\nexport function findIndexByCharacter(itemList, curItem, firstCharList, char) {\n let start, index;\n if (!itemList || !firstCharList || !char || char.length > 1) {\n return -1;\n }\n char = char.toLowerCase();\n // Get start index for search based on position of currentItem\n start = itemList.indexOf(curItem) + 1;\n if (start >= itemList.length) {\n start = 0;\n }\n // Check remaining menu items in the menu\n index = firstCharList.indexOf(char, start);\n // If not found in remaining menu items, check from beginning\n if (index === -1) {\n index = firstCharList.indexOf(char, 0);\n }\n return index >= 0 ? index : -1;\n}\nexport function getAncestorNodeByRole(curElement, role) {\n if (!curElement) {\n return null;\n }\n while (curElement.parentElement && _get(curElement.parentElement, 'attributes.role.value', '') !== role) {\n curElement = curElement.parentElement;\n }\n return curElement.parentElement;\n}\n// According to the Id, find the corresponding data-popupid element\nexport function getMenuButton(focusableEle, Id) {\n for (let i = 0; i < focusableEle.length; i++) {\n const curAriDescribedby = focusableEle[i].attributes['data-popupid'];\n if (curAriDescribedby && curAriDescribedby.value === Id) {\n return focusableEle[i];\n }\n }\n return null;\n}","import isHTMLElement from './isElement';\n/**\n *\n * @param {HTMLElement} parentNode\n * @param {...HTMLElement} nodes\n *\n * @param {HTMLElement}\n */\nexport function append(parentNode) {\n for (var _len = arguments.length, nodes = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n nodes[_key - 1] = arguments[_key];\n }\n for (const node of nodes) {\n parentNode.appendChild(node);\n }\n return parentNode;\n}\n/**\n *\n * @param {HTMLElement} parentNode\n * @param {...HTMLElement} nodes\n *\n * @param {HTMLElement}\n */\nexport function prepend(parentNode) {\n for (var _len2 = arguments.length, nodes = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n nodes[_key2 - 1] = arguments[_key2];\n }\n if (parentNode.children && parentNode.children.length) {\n const firstNode = parentNode.children[0];\n for (const node of nodes) {\n parentNode.insertBefore(node, firstNode);\n }\n } else {\n append(parentNode, ...nodes);\n }\n return parentNode;\n}\n/**\n *\n * @param {DOMRect} domRect\n * @returns {object|undefined}\n */\nexport function convertDOMRectToObject(domRect) {\n if (domRect && typeof domRect === 'object') {\n if (typeof domRect.toJSON === 'function') {\n return domRect.toJSON();\n } else {\n const keys = ['left', 'top', 'right', 'bottom', 'width', 'height'];\n return keys.reduce((obj, key) => {\n obj[key] = domRect[key];\n return obj;\n }, {});\n }\n }\n return undefined;\n}\nexport { isHTMLElement };","/**\n * no operation\n */\nexport function noop() {}","export default function getDataAttr(props) {\n return Object.keys(props).reduce((prev, key) => {\n if (key.substr(0, 5) === 'data-') {\n prev[key] = props[key];\n }\n return prev;\n }, {});\n}","/* istanbul ignore next */\nexport default function isElement(obj) {\n try {\n // Using W3 DOM2 (works for FF, Opera and Chrome)\n return obj instanceof HTMLElement;\n } catch (e) {\n // Browsers not supporting W3 DOM2 don't have HTMLElement and\n // an exception is thrown and we end up here. Testing some\n // properties that all elements have (works on IE7)\n return typeof obj === 'object' && obj.nodeType === 1 && typeof obj.style === 'object' && typeof obj.ownerDocument === 'object';\n }\n}","/**\n * Whether null or undefined\n * @param {*} value\n * @returns {boolean}\n */\nexport default function isNullOrUndefined(value) {\n return value === null || value === undefined;\n}","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n */\nconst 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 /**\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 /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n /**\n * END\n */\n END: 35,\n /**\n * HOME\n */\n HOME: 36,\n /**\n * LEFT\n */\n LEFT: 37,\n /**\n * UP\n */\n UP: 38,\n /**\n * RIGHT\n */\n RIGHT: 39,\n /**\n * DOWN\n */\n DOWN: 40,\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n /**\n * INSERT\n */\n INSERT: 45,\n /**\n * DELETE\n */\n DELETE: 46,\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 /**\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 /**\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 /**\n * DASH\n */\n DASH: 189,\n /**\n * EQUALS\n */\n EQUALS: 187,\n /**\n * COMMA\n */\n COMMA: 188,\n /**\n * PERIOD\n */\n PERIOD: 190,\n /**\n * SLASH\n */\n SLASH: 191,\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n /**\n * WIN_IME\n */\n WIN_IME: 229\n};\nexport const ENTER_KEY = 'Enter';\nexport const TAB_KEY = 'Tab';\nexport const ESC_KEY = 'Escape';\nexport default keyCode;","import _get from \"lodash/get\";\nconst log = function (text) {\n if (_get(process, 'env.NODE_ENV') === 'development') {\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n console.log(text, ...rest);\n }\n};\nexport default log;","import warning from './warning';\nconst touchEventPolyfill = (touch, touchEvent) => {\n /* Touch is the first point of multi-touch. In order to minimize the change of slider code to support touch,\n some methods that will be used on touchEvent are mounted on the multi-touch Touch object.*/\n // polyfill for firefox\n if (!globalThis.Touch || !(touch instanceof Touch)) {\n return touch;\n }\n const keysNeedPolyfill = ['stopPropagation', 'preventDefault'];\n keysNeedPolyfill.forEach(key => {\n let value = touchEvent[key];\n if (value) {\n if (typeof value === 'function') {\n // bind 'this' for function of touchEvent running in Touch Point Object\n value = function () {\n return touchEvent[key](...arguments);\n };\n }\n if (touch[key]) {\n warning(true, `\"The key ${key}\" exist in Touch.`);\n } else {\n touch[key] = value;\n }\n }\n });\n return touch;\n};\nexport default touchEventPolyfill;","export default function getUuid(prefix) {\n return `${prefix}-${new Date().getTime()}-${Math.random()}`;\n}\n// https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction getUuidv4() {\n var _a, _b;\n try {\n // @ts-ignore\n return (_b = (_a = crypto === null || crypto === void 0 ? void 0 : crypto.randomUUID) === null || _a === void 0 ? void 0 : _a.call(crypto)) !== null && _b !== void 0 ? _b : String(1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (Number(c) ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> Number(c) / 4).toString(16));\n } catch (err) {\n return getUuid('semi');\n }\n}\n/**\n * Get a random id with prefix, it not strictly guarantee id uniqueness\n *\n * Note: the return value of getUuid is too long, we need a short one\n *\n * @example\n * getUuidShort({ prefix: 'semi' }) => 'semi-46dinzc'\n * getUuidShort({ prefix: '' }) => '0eer2i0'\n * getUuidShort({ prefix: 'semi', length: 4 }) => 'semi-8jts'\n */\nfunction getUuidShort() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n prefix = '',\n length = 7\n } = options;\n const characters = '0123456789abcdefghijklmnopqrstuvwxyz';\n const total = characters.length;\n let randomId = '';\n for (let i = 0; i < length; i++) {\n const random = Math.floor(Math.random() * total);\n randomId += characters.charAt(random);\n }\n return prefix ? `${prefix}-${randomId}` : randomId;\n}\nexport { getUuid, getUuidv4, getUuidShort };","export default function warning(flag, info) {\n if (flag) {\n console.warn(`Warning: ${info}`);\n }\n}","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { BASE_CLASS_PREFIX } from '../env';\nimport cls from 'classnames';\nimport '../styles/icons.css';\nconst Icon = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n svg,\n spin = false,\n rotate,\n style,\n className,\n prefixCls = BASE_CLASS_PREFIX,\n type,\n size = 'default'\n } = props,\n restProps = __rest(props, [\"svg\", \"spin\", \"rotate\", \"style\", \"className\", \"prefixCls\", \"type\", \"size\"]);\n const classes = cls(`${prefixCls}-icon`, {\n [`${prefixCls}-icon-extra-small`]: size === 'extra-small',\n [`${prefixCls}-icon-small`]: size === 'small',\n [`${prefixCls}-icon-default`]: size === 'default',\n [`${prefixCls}-icon-large`]: size === 'large',\n [`${prefixCls}-icon-extra-large`]: size === 'extra-large',\n [`${prefixCls}-icon-spinning`]: spin === true,\n [`${prefixCls}-icon-${type}`]: Boolean(type)\n }, className);\n const outerStyle = {};\n if (Number.isSafeInteger(rotate)) {\n outerStyle.transform = `rotate(${rotate}deg)`;\n }\n Object.assign(outerStyle, style);\n return /*#__PURE__*/React.createElement(\"span\", Object.assign({\n role: \"img\",\n ref: ref,\n \"aria-label\": type,\n className: classes,\n style: outerStyle\n }, restProps), svg);\n});\n// @ts-ignore used to judge whether it is a semi-icon in semi-ui\n// custom icon case\nIcon.elementType = 'Icon';\nconst convertIcon = (Svg, iconType) => {\n const InnerIcon = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(Icon, Object.assign({\n svg: /*#__PURE__*/React.createElement(Svg),\n type: iconType,\n ref: ref\n }, props)));\n // @ts-ignore used to judge whether it is a semi-icon in semi-ui \n // builtin icon case\n InnerIcon.elementType = 'Icon';\n return InnerIcon;\n};\nexport { convertIcon };\nexport default Icon;","export const BASE_CLASS_PREFIX = 'semi';","import * as React from 'react';\nimport { convertIcon } from '../components/Icon';\nfunction SvgComponent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n focusable: false,\n \"aria-hidden\": true\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.6568 19.7782C18.2426 20.3639 19.1924 20.3639 19.7782 19.7782C20.3639 19.1924 20.3639 18.2426 19.7782 17.6568L14.1213 12L19.7782 6.34313C20.3639 5.75734 20.3639 4.8076 19.7782 4.22181C19.1924 3.63602 18.2426 3.63602 17.6568 4.22181L12 9.87866L6.34313 4.22181C5.75734 3.63602 4.8076 3.63602 4.22181 4.22181C3.63602 4.8076 3.63602 5.75734 4.22181 6.34313L9.87866 12L4.22181 17.6568C3.63602 18.2426 3.63602 19.1924 4.22181 19.7782C4.8076 20.3639 5.75734 20.3639 6.34313 19.7782L12 14.1213L17.6568 19.7782Z\",\n fill: \"currentColor\"\n }));\n}\nconst IconComponent = convertIcon(SvgComponent, 'close');\nexport default IconComponent;","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { BASE_CLASS_PREFIX } from '../env';\nimport cls from 'classnames';\nimport '../styles/icons.css';\nconst Icon = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n svg,\n spin = false,\n rotate,\n style,\n className,\n prefixCls = BASE_CLASS_PREFIX,\n type,\n size = 'default'\n } = props,\n restProps = __rest(props, [\"svg\", \"spin\", \"rotate\", \"style\", \"className\", \"prefixCls\", \"type\", \"size\"]);\n const classes = cls(`${prefixCls}-icon`, {\n [`${prefixCls}-icon-extra-small`]: size === 'extra-small',\n [`${prefixCls}-icon-small`]: size === 'small',\n [`${prefixCls}-icon-default`]: size === 'default',\n [`${prefixCls}-icon-large`]: size === 'large',\n [`${prefixCls}-icon-extra-large`]: size === 'extra-large',\n [`${prefixCls}-icon-spinning`]: spin === true,\n [`${prefixCls}-icon-${type}`]: Boolean(type)\n }, className);\n const outerStyle = {};\n if (Number.isSafeInteger(rotate)) {\n outerStyle.transform = `rotate(${rotate}deg)`;\n }\n Object.assign(outerStyle, style);\n return /*#__PURE__*/React.createElement(\"span\", Object.assign({\n role: \"img\",\n ref: ref,\n \"aria-label\": type,\n className: classes,\n style: outerStyle\n }, restProps), svg);\n});\n// @ts-ignore used to judge whether it is a semi-icon in semi-ui\n// custom icon case\nIcon.elementType = 'Icon';\nconst convertIcon = (Svg, iconType) => {\n const InnerIcon = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(Icon, Object.assign({\n svg: /*#__PURE__*/React.createElement(Svg),\n type: iconType,\n ref: ref\n }, props)));\n // @ts-ignore used to judge whether it is a semi-icon in semi-ui \n // builtin icon case\n InnerIcon.elementType = 'Icon';\n return InnerIcon;\n};\nexport { convertIcon };\nexport default Icon;","export const BASE_CLASS_PREFIX = 'semi';","import * as React from 'react';\nimport { convertIcon } from '../components/Icon';\nfunction SvgComponent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n focusable: false,\n \"aria-hidden\": true\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M23 12C23 12.8284 22.3284 13.5 21.5 13.5L6.12132 13.5L12.5607 19.9393C13.1464 20.5251 13.1464 21.4749 12.5607 22.0607C11.9749 22.6464 11.0251 22.6464 10.4393 22.0607L1.43934 13.0607C0.853554 12.4749 0.853554 11.5251 1.43934 10.9393L10.4393 1.93934C11.0251 1.35355 11.9749 1.35355 12.5607 1.93934C13.1464 2.52513 13.1464 3.47487 12.5607 4.06066L6.12132 10.5L21.5 10.5C22.3284 10.5 23 11.1716 23 12Z\",\n fill: \"currentColor\"\n }));\n}\nconst IconComponent = convertIcon(SvgComponent, 'arrow_left');\nexport default IconComponent;","import * as React from 'react';\nimport { convertIcon } from '../components/Icon';\nfunction SvgComponent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n focusable: false,\n \"aria-hidden\": true\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1 12C1 11.1716 1.67157 10.5 2.5 10.5L17.8787 10.5L11.4393 4.06066C10.8536 3.47487 10.8536 2.52513 11.4393 1.93934C12.0251 1.35355 12.9749 1.35355 13.5607 1.93934L22.5607 10.9393C23.1464 11.5251 23.1464 12.4749 22.5607 13.0607L13.5607 22.0607C12.9749 22.6464 12.0251 22.6464 11.4393 22.0607C10.8536 21.4749 10.8536 20.5251 11.4393 19.9393L17.8787 13.5L2.5 13.5C1.67157 13.5 1 12.8284 1 12Z\",\n fill: \"currentColor\"\n }));\n}\nconst IconComponent = convertIcon(SvgComponent, 'arrow_right');\nexport default IconComponent;","import * as React from 'react';\nimport { convertIcon } from '../components/Icon';\nfunction SvgComponent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n focusable: false,\n \"aria-hidden\": true\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.2782 4.23933C16.864 4.82511 16.864 5.77486 16.2782 6.36065L10.6213 12.0175L16.2782 17.6744C16.864 18.2601 16.864 19.2099 16.2782 19.7957C15.6924 20.3815 14.7426 20.3815 14.1569 19.7957L7.43934 13.0782C6.85355 12.4924 6.85355 11.5426 7.43934 10.9568L14.1569 4.23933C14.7426 3.65354 15.6924 3.65354 16.2782 4.23933Z\",\n fill: \"currentColor\"\n }));\n}\nconst IconComponent = convertIcon(SvgComponent, 'chevron_left');\nexport default IconComponent;","import * as React from 'react';\nimport { convertIcon } from '../components/Icon';\nfunction SvgComponent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n focusable: false,\n \"aria-hidden\": true\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M7.43934 19.7957C6.85355 19.2099 6.85355 18.2601 7.43934 17.6744L13.0962 12.0175L7.43934 6.36065C6.85355 5.77486 6.85355 4.82511 7.43934 4.23933C8.02513 3.65354 8.97487 3.65354 9.56066 4.23933L16.2782 10.9568C16.864 11.5426 16.864 12.4924 16.2782 13.0782L9.56066 19.7957C8.97487 20.3815 8.02513 20.3815 7.43934 19.7957Z\",\n fill: \"currentColor\"\n }));\n}\nconst IconComponent = convertIcon(SvgComponent, 'chevron_right');\nexport default IconComponent;","import * as React from 'react';\nimport { convertIcon } from '../components/Icon';\nfunction SvgComponent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n focusable: false,\n \"aria-hidden\": true\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.6568 19.7782C18.2426 20.3639 19.1924 20.3639 19.7782 19.7782C20.3639 19.1924 20.3639 18.2426 19.7782 17.6568L14.1213 12L19.7782 6.34313C20.3639 5.75734 20.3639 4.8076 19.7782 4.22181C19.1924 3.63602 18.2426 3.63602 17.6568 4.22181L12 9.87866L6.34313 4.22181C5.75734 3.63602 4.8076 3.63602 4.22181 4.22181C3.63602 4.8076 3.63602 5.75734 4.22181 6.34313L9.87866 12L4.22181 17.6568C3.63602 18.2426 3.63602 19.1924 4.22181 19.7782C4.8076 20.3639 5.75734 20.3639 6.34313 19.7782L12 14.1213L17.6568 19.7782Z\",\n fill: \"currentColor\"\n }));\n}\nconst IconComponent = convertIcon(SvgComponent, 'close');\nexport default IconComponent;","import * as React from 'react';\nimport { convertIcon } from '../components/Icon';\nfunction SvgComponent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n focusable: false,\n \"aria-hidden\": true\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.8395 8.05827C17.1837 5.16226 14.5944 3 11.5 3C7.91015 3 5 5.91015 5 9.5C5 10.0204 5.06115 10.5264 5.17665 11.0114C2.84229 11.1772 1 13.1234 1 15.5C1 17.9853 3.01469 20 5.49995 20H17C20.3137 20 23 17.3137 23 14C23 10.9712 20.7558 8.46659 17.8395 8.05827ZM11.6799 17.7333C11.8653 17.8878 12.1347 17.8878 12.3201 17.7333L17.4695 13.4421C17.6492 13.2924 17.5433 13 17.3095 13H14V9.5C14 9.22386 13.7761 9 13.5 9H10.5C10.2239 9 10 9.22386 10 9.5V13H6.69051C6.45669 13 6.35084 13.2924 6.53047 13.4421L11.6799 17.7333Z\",\n fill: \"currentColor\"\n }));\n}\nconst IconComponent = convertIcon(SvgComponent, 'download');\nexport default IconComponent;","import * as React from 'react';\nimport { convertIcon } from '../components/Icon';\nfunction SvgComponent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n focusable: false,\n \"aria-hidden\": true\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 12C2 11.1716 2.67157 10.5 3.5 10.5H20.5C21.3284 10.5 22 11.1716 22 12C22 12.8284 21.3284 13.5 20.5 13.5H3.5C2.67157 13.5 2 12.8284 2 12Z\",\n fill: \"currentColor\"\n }));\n}\nconst IconComponent = convertIcon(SvgComponent, 'minus');\nexport default IconComponent;","import * as React from 'react';\nimport { convertIcon } from '../components/Icon';\nfunction SvgComponent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n focusable: false,\n \"aria-hidden\": true\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.5 13.5C21.3284 13.5 22 12.8284 22 12C22 11.1716 21.3284 10.5 20.5 10.5L13.5 10.5L13.5 3.5C13.5 2.67157 12.8284 2 12 2C11.1716 2 10.5 2.67157 10.5 3.5L10.5 10.5L3.5 10.5C2.67157 10.5 2 11.1716 2 12C2 12.8284 2.67157 13.5 3.5 13.5L10.5 13.5V20.5C10.5 21.3284 11.1716 22 12 22C12.8284 22 13.5 21.3284 13.5 20.5V13.5L20.5 13.5Z\",\n fill: \"currentColor\"\n }));\n}\nconst IconComponent = convertIcon(SvgComponent, 'plus');\nexport default IconComponent;","import * as React from 'react';\nimport { convertIcon } from '../components/Icon';\nfunction SvgComponent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n focusable: false,\n \"aria-hidden\": true\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1 6C1 4.89543 1.89543 4 3 4H21C22.1046 4 23 4.89543 23 6V18C23 19.1046 22.1046 20 21 20H3C1.89543 20 1 19.1046 1 18V6ZM21 6L3 6V18H21V6ZM5 9C5 8.44772 5.44772 8 6 8H7.5C8.05228 8 8.5 8.44772 8.5 9V15C8.5 15.5523 8.05228 16 7.5 16C6.94772 16 6.5 15.5523 6.5 15V10H6C5.44772 10 5 9.55228 5 9ZM16 8C15.4477 8 15 8.44772 15 9C15 9.55228 15.4477 10 16 10H16.5V15C16.5 15.5523 16.9477 16 17.5 16C18.0523 16 18.5 15.5523 18.5 15V9C18.5 8.44772 18.0523 8 17.5 8H16ZM13 10C13 10.5523 12.5523 11 12 11C11.4477 11 11 10.5523 11 10C11 9.44772 11.4477 9 12 9C12.5523 9 13 9.44772 13 10ZM12 15C12.5523 15 13 14.5523 13 14C13 13.4477 12.5523 13 12 13C11.4477 13 11 13.4477 11 14C11 14.5523 11.4477 15 12 15Z\",\n fill: \"currentColor\"\n }));\n}\nconst IconComponent = convertIcon(SvgComponent, 'real_size_stroked');\nexport default IconComponent;","import * as React from 'react';\nimport { convertIcon } from '../components/Icon';\nfunction SvgComponent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n focusable: false,\n \"aria-hidden\": true\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.2071 2.20711C14.5976 1.81658 14.5976 1.18342 14.2071 0.792893C13.8166 0.402369 13.1834 0.402369 12.7929 0.792893L10.2929 3.29289C9.90237 3.68342 9.90237 4.31658 10.2929 4.70711L12.7929 7.20711C13.1834 7.59763 13.8166 7.59763 14.2071 7.20711C14.5976 6.81658 14.5976 6.18342 14.2071 5.79289L13.4142 5H16C18.7614 5 21 7.23858 21 10V12C21 12.5523 21.4477 13 22 13C22.5523 13 23 12.5523 23 12V10C23 6.13401 19.866 3 16 3H13.4142L14.2071 2.20711Z\",\n fill: \"currentColor\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 10C3 8.89543 3.89543 8 5 8H17C18.1046 8 19 8.89543 19 10V20C19 21.1046 18.1046 22 17 22H5C3.89543 22 3 21.1046 3 20V10Z\",\n fill: \"currentColor\"\n }));\n}\nconst IconComponent = convertIcon(SvgComponent, 'rotate');\nexport default IconComponent;","import * as React from 'react';\nimport { convertIcon } from '../components/Icon';\nfunction SvgComponent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n focusable: false,\n \"aria-hidden\": true\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14 3C14 2.44772 14.4477 2 15 2H21C21.5523 2 22 2.44772 22 3V9C22 9.55229 21.5523 10 21 10C20.4477 10 20 9.55229 20 9V4H15C14.4477 4 14 3.55229 14 3ZM10 21C10 21.5523 9.55229 22 9 22H3C2.44772 22 2 21.5523 2 21V15C2 14.4477 2.44772 14 3 14C3.55228 14 4 14.4477 4 15L4 20H9C9.55229 20 10 20.4477 10 21ZM2 9C2 9.55228 2.44772 10 3 10C3.55229 10 4 9.55228 4 9L4 4L9 4C9.55229 4 10 3.55228 10 3C10 2.44771 9.55229 2 9 2H3C2.44772 2 2 2.44772 2 3V9ZM21 14C21.5523 14 22 14.4477 22 15V21C22 21.5523 21.5523 22 21 22H15C14.4477 22 14 21.5523 14 21C14 20.4477 14.4477 20 15 20H20V15C20 14.4477 20.4477 14 21 14ZM8.5 7.5C7.94772 7.5 7.5 7.94772 7.5 8.5V15.5C7.5 16.0523 7.94772 16.5 8.5 16.5H15.5C16.0523 16.5 16.5 16.0523 16.5 15.5V8.5C16.5 7.94772 16.0523 7.5 15.5 7.5H8.5ZM9.5 14.5V9.5H14.5V14.5H9.5Z\",\n fill: \"currentColor\"\n }));\n}\nconst IconComponent = convertIcon(SvgComponent, 'window_adaption_stroked');\nexport default IconComponent;","/**\n * The Semi Foundation / Adapter architecture split was inspired by Material Component For Web. (https://github.com/material-components/material-components-web)\n * We re-implemented our own code based on the principle and added more functions we need according to actual needs.\n */\nimport { Component } from 'react';\nimport log from '@douyinfe/semi-foundation/lib/es/utils/log';\nimport getDataAttr from '@douyinfe/semi-foundation/lib/es/utils/getDataAttr';\nconst {\n hasOwnProperty\n} = Object.prototype;\n// eslint-disable-next-line\nexport default class BaseComponent extends Component {\n constructor(props) {\n super(props);\n // eslint-disable-next-line\n this.isControlled = key => Boolean(key && this.props && typeof this.props === 'object' && hasOwnProperty.call(this.props, key));\n this.cache = {};\n this.foundation = null;\n }\n componentDidMount() {\n this.foundation && typeof this.foundation.init === 'function' && this.foundation.init();\n }\n componentWillUnmount() {\n this.foundation && typeof this.foundation.destroy === 'function' && this.foundation.destroy();\n this.cache = {};\n }\n get adapter() {\n return {\n getContext: key => {\n if (this.context && key) {\n return this.context[key];\n }\n },\n getContexts: () => this.context,\n getProp: key => this.props[key],\n // return all props\n getProps: () => this.props,\n getState: key => this.state[key],\n getStates: () => this.state,\n setState: (states, cb) => this.setState(Object.assign({}, states), cb),\n getCache: key => key && this.cache[key],\n getCaches: () => this.cache,\n setCache: (key, value) => key && (this.cache[key] = value),\n stopPropagation: e => {\n try {\n e.stopPropagation();\n e.nativeEvent && e.nativeEvent.stopImmediatePropagation();\n } catch (error) {}\n },\n persistEvent: e => {\n e && e.persist && typeof e.persist === 'function' ? e.persist() : null;\n }\n };\n }\n log(text) {\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n return log(text, ...rest);\n }\n getDataAttr(props) {\n return getDataAttr(props);\n }\n}\nBaseComponent.propTypes = {};\nBaseComponent.defaultProps = {};","import _isEqual from \"lodash/isEqual\";\nimport React from 'react';\nclass CSSAnimation extends React.Component {\n constructor(props) {\n super(props);\n this.handleAnimationStart = () => {\n var _a, _b;\n (_b = (_a = this.props).onAnimationStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n this.handleAnimationEnd = () => {\n this.setState({\n currentClassName: this.props.endClassName,\n extraStyle: {\n animationFillMode: this.props.fillMode\n },\n isAnimating: false\n }, () => {\n var _a, _b;\n (_b = (_a = this.props).onAnimationEnd) === null || _b === void 0 ? void 0 : _b.call(_a, false);\n });\n };\n this.state = {\n currentClassName: this.props.startClassName,\n extraStyle: {\n animationFillMode: this.props.fillMode\n },\n isAnimating: true\n };\n }\n componentDidMount() {\n var _a, _b, _c, _d;\n // The purpose is to shield the impact of the presence or absence of animation on the other semi component life cycle.\n // In order to make the component side do not need to manually call the next life cycle function when there is no animation,\n // so when there is no animation , it is logically (and only logically) regarded as an animation with a duration of 0.\n (_b = (_a = this.props).onAnimationStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (!this.props.motion) {\n (_d = (_c = this.props).onAnimationEnd) === null || _d === void 0 ? void 0 : _d.call(_c, false);\n this.setState({\n isAnimating: false\n });\n }\n }\n componentDidUpdate(prevProps, prevState, snapshot) {\n const changedKeys = Object.keys(this.props).filter(key => !_isEqual(this.props[key], prevProps[key]));\n if (changedKeys.includes(\"animationState\")) {}\n if (changedKeys.includes(\"startClassName\") || changedKeys.includes('replayKey') || changedKeys.includes(\"motion\")) {\n this.setState({\n currentClassName: this.props.startClassName,\n extraStyle: {\n animationFillMode: this.props.fillMode\n },\n isAnimating: true\n }, () => {\n var _a, _b, _c, _d;\n (_b = (_a = this.props).onAnimationStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (!this.props.motion) {\n (_d = (_c = this.props).onAnimationEnd) === null || _d === void 0 ? void 0 : _d.call(_c, this.state.isAnimating);\n this.setState({\n isAnimating: false\n });\n }\n });\n }\n }\n render() {\n var _a;\n if (this.props.motion) {\n return this.props.children({\n animationClassName: (_a = this.state.currentClassName) !== null && _a !== void 0 ? _a : \"\",\n animationStyle: this.state.extraStyle,\n animationEventsNeedBind: {\n onAnimationStart: this.handleAnimationStart,\n onAnimationEnd: this.handleAnimationEnd\n },\n isAnimating: this.state.isAnimating\n });\n } else {\n return this.props.children({\n animationClassName: \"\",\n animationStyle: {},\n animationEventsNeedBind: {},\n isAnimating: this.state.isAnimating\n });\n }\n }\n}\nCSSAnimation.defaultProps = {\n motion: true,\n replayKey: \"\"\n};\n// const mergeAnimationFunction = (eventHandleFunctions: AnimationEventsNeedBind[]) => {\n// //merge function in objects\n// const mergedFunction = {};\n// eventHandleFunctions.forEach(eventHandleFunction => {\n// Object.keys(eventHandleFunction).forEach(key => {\n// if (mergedFunction[key]) {\n// const oldFunction = mergedFunction[key];\n// mergedFunction[key] = (e) => {\n// eventHandleFunction[key](e);\n// oldFunction(e);\n// };\n// } else {\n// mergedFunction[key] = eventHandleFunction[key];\n// }\n// });\n// });\n// return mergedFunction;\n// };\n// export { mergeAnimationFunction };\nexport default CSSAnimation;","import { PureComponent } from 'react';\nimport { createPortal } from 'react-dom';\nimport { BASE_CLASS_PREFIX } from '@douyinfe/semi-foundation/lib/es/base/constants';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport ConfigContext from '../configProvider/context';\nimport '@douyinfe/semi-foundation/lib/es/_portal/portal.css';\nconst defaultGetContainer = () => document.body;\nclass Portal extends PureComponent {\n constructor(props, context) {\n var _this;\n super(props);\n _this = this;\n this.initContainer = function (context) {\n let catchError = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _a, _b;\n try {\n let container = undefined;\n if (!_this.el || !((_a = _this.state) === null || _a === void 0 ? void 0 : _a.container) || !Array.from(_this.state.container.childNodes).includes(_this.el)) {\n _this.el = document.createElement('div');\n const getContainer = _this.props.getPopupContainer || context.getPopupContainer || defaultGetContainer;\n const portalContainer = getContainer();\n portalContainer.appendChild(_this.el);\n _this.addStyle(_this.props.style);\n _this.addClass(_this.props.prefixCls, context, _this.props.className);\n container = portalContainer;\n return container;\n }\n } catch (e) {\n if (!catchError) {\n throw e;\n }\n }\n return (_b = _this.state) === null || _b === void 0 ? void 0 : _b.container;\n };\n this.addStyle = function () {\n let style = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (_this.el) {\n for (const key of Object.keys(style)) {\n _this.el.style[key] = style[key];\n }\n }\n };\n this.addClass = function (prefixCls) {\n let context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _this.context;\n const {\n direction\n } = context;\n for (var _len = arguments.length, classNames = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n classNames[_key - 2] = arguments[_key];\n }\n const cls = classnames(prefixCls, ...classNames, {\n [`${prefixCls}-rtl`]: direction === 'rtl'\n });\n if (_this.el) {\n _this.el.className = cls;\n }\n };\n this.state = {\n container: this.initContainer(context, true)\n };\n }\n componentDidMount() {\n const container = this.initContainer(this.context);\n if (container !== this.state.container) {\n this.setState({\n container\n });\n }\n }\n componentDidUpdate(prevProps) {\n // visible callback\n const {\n didUpdate\n } = this.props;\n if (didUpdate) {\n didUpdate(prevProps);\n }\n }\n componentWillUnmount() {\n const {\n container\n } = this.state;\n if (container) {\n container.removeChild(this.el);\n }\n }\n render() {\n const {\n state,\n props\n } = this;\n if (state.container) {\n return /*#__PURE__*/createPortal(props.children, this.el);\n }\n return null;\n }\n}\nPortal.contextType = ConfigContext;\nPortal.defaultProps = {\n // getPopupContainer: () => document.body,\n prefixCls: `${BASE_CLASS_PREFIX}-portal`\n};\nPortal.propTypes = {\n children: PropTypes.node,\n prefixCls: PropTypes.string,\n getPopupContainer: PropTypes.func,\n className: PropTypes.string,\n didUpdate: PropTypes.func\n};\nexport default Portal;","import _get from \"lodash/get\";\nimport _set from \"lodash/set\";\nimport _cloneDeepWith from \"lodash/cloneDeepWith\";\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport React from 'react';\nimport warning from '@douyinfe/semi-foundation/lib/es/utils/warning';\nimport { findAll } from '@douyinfe/semi-foundation/lib/es/utils/getHighlight';\nimport { isHTMLElement } from '@douyinfe/semi-foundation/lib/es/utils/dom';\nimport semiGlobal from \"./semi-global\";\n/**\n * stop propagation\n *\n * @param {React.MouseEvent} e React mouse event object\n * @param {boolean} noImmediate Skip stopping immediate propagation\n */\nexport function stopPropagation(e, noImmediate) {\n if (e && typeof e.stopPropagation === 'function') {\n e.stopPropagation();\n }\n if (!noImmediate && e.nativeEvent && typeof e.nativeEvent.stopImmediatePropagation === 'function') {\n e.nativeEvent.stopImmediatePropagation();\n }\n}\nexport function cloneDeep(value, customizer) {\n return _cloneDeepWith(value, v => {\n if (typeof customizer === 'function') {\n return customizer(v);\n }\n if (typeof v === 'function' || /*#__PURE__*/React.isValidElement(v)) {\n return v;\n }\n if (Object.prototype.toString.call(v) === '[object Error]') {\n return v;\n }\n // it is tricky\n // when array length beyond max length, array.length will be 0\n if (Array.isArray(v) && v.length === 0) {\n const keys = Object.keys(v);\n if (keys.length) {\n const newArray = [];\n keys.forEach(key => {\n _set(newArray, key, v[key]);\n });\n // internal-issues:887\n try {\n warning(_get(process, 'env.NODE_ENV') !== 'production', `[Semi] You may use an out-of-bounds array. In some cases, your program may not behave as expected.\n The maximum length of an array is 4294967295.\n Please check whether the array subscript in your data exceeds the maximum value of the JS array subscript`);\n } catch (e) {}\n return newArray;\n } else {\n return undefined;\n }\n }\n return undefined;\n });\n}\n/**\n * [getHighLightTextHTML description]\n *\n * @param {string} sourceString [source content text]\n * @param {Array} searchWords [keywords to be highlighted]\n * @param {object} option\n * @param {true} option.highlightTag [The tag wrapped by the highlighted content, mark is used by default]\n * @param {true} option.highlightClassName\n * @param {true} option.highlightStyle\n * @param {boolean} option.caseSensitive\n *\n * @return {Array}\n */\nexport const getHighLightTextHTML = _ref => {\n let {\n sourceString = '',\n searchWords = [],\n option = {\n autoEscape: true,\n caseSensitive: false\n }\n } = _ref;\n const chunks = findAll(Object.assign({\n sourceString,\n searchWords\n }, option));\n const markEle = option.highlightTag || 'mark';\n const highlightClassName = option.highlightClassName || '';\n const highlightStyle = option.highlightStyle || {};\n return chunks.map((chunk, index) => {\n const {\n end,\n start,\n highlight\n } = chunk;\n const text = sourceString.substr(start, end - start);\n if (highlight) {\n return /*#__PURE__*/React.createElement(markEle, {\n style: highlightStyle,\n className: highlightClassName,\n key: text + index\n }, text);\n } else {\n return text;\n }\n });\n};\n/**\n * register matchFn and unMatchFn callback while media query\n * @param {string} media media string\n * @param {object} param param object\n * @returns function\n */\nexport const registerMediaQuery = (media, _ref2) => {\n let {\n match,\n unmatch,\n callInInit = true\n } = _ref2;\n if (typeof window !== 'undefined') {\n const mediaQueryList = window.matchMedia(media);\n function handlerMediaChange(e) {\n if (e.matches) {\n match && match(e);\n } else {\n unmatch && unmatch(e);\n }\n }\n callInInit && handlerMediaChange(mediaQueryList);\n if (Object.prototype.hasOwnProperty.call(mediaQueryList, 'addEventListener')) {\n mediaQueryList.addEventListener('change', handlerMediaChange);\n return () => mediaQueryList.removeEventListener('change', handlerMediaChange);\n }\n mediaQueryList.addListener(handlerMediaChange);\n return () => mediaQueryList.removeListener(handlerMediaChange);\n }\n return () => undefined;\n};\n/**\n * Determine whether the incoming element is a built-in icon\n * @param icon 元素\n * @returns boolean\n */\nexport const isSemiIcon = icon => /*#__PURE__*/React.isValidElement(icon) && _get(icon.type, 'elementType') === 'Icon';\nexport function getActiveElement() {\n return document ? document.activeElement : null;\n}\nexport function isNodeContainsFocus(node) {\n const activeElement = getActiveElement();\n return activeElement === node || node.contains(activeElement);\n}\nexport function getFocusableElements(node) {\n if (!isHTMLElement(node)) {\n return [];\n }\n const focusableSelectorsList = [\"input:not([disabled]):not([tabindex='-1'])\", \"textarea:not([disabled]):not([tabindex='-1'])\", \"button:not([disabled]):not([tabindex='-1'])\", \"a[href]:not([tabindex='-1'])\", \"select:not([disabled]):not([tabindex='-1'])\", \"area[href]:not([tabindex='-1'])\", \"iframe:not([tabindex='-1'])\", \"object:not([tabindex='-1'])\", \"*[tabindex]:not([tabindex='-1'])\", \"*[contenteditable]:not([tabindex='-1'])\"];\n const focusableSelectorsStr = focusableSelectorsList.join(',');\n // we are not filtered elements which are invisible\n const focusableElements = Array.from(node.querySelectorAll(focusableSelectorsStr));\n return focusableElements;\n}\nexport function runAfterTicks(func, numberOfTicks) {\n return __awaiter(this, void 0, void 0, function* () {\n if (numberOfTicks === 0) {\n yield func();\n return;\n } else {\n yield new Promise(resolve => {\n setTimeout(() => __awaiter(this, void 0, void 0, function* () {\n yield runAfterTicks(func, numberOfTicks - 1);\n resolve();\n }), 0);\n });\n return;\n }\n });\n}\nexport function getScrollbarWidth() {\n if (globalThis && Object.prototype.toString.call(globalThis) === '[object Window]') {\n return window.innerWidth - document.documentElement.clientWidth;\n }\n return 0;\n}\nexport function getDefaultPropsFromGlobalConfig(componentName) {\n let semiDefaultProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const getFromGlobalConfig = () => {\n var _a, _b;\n return ((_b = (_a = semiGlobal === null || semiGlobal === void 0 ? void 0 : semiGlobal.config) === null || _a === void 0 ? void 0 : _a.overrideDefaultProps) === null || _b === void 0 ? void 0 : _b[componentName]) || {};\n };\n return new Proxy(Object.assign({}, semiDefaultProps), {\n get(target, key, receiver) {\n const defaultPropsFromGlobal = getFromGlobalConfig();\n if (key in defaultPropsFromGlobal) {\n return defaultPropsFromGlobal[key];\n }\n return Reflect.get(target, key, receiver);\n },\n set(target, key, value, receiver) {\n return Reflect.set(target, key, value, receiver);\n },\n ownKeys() {\n const defaultPropsFromGlobal = getFromGlobalConfig();\n return Array.from(new Set([...Reflect.ownKeys(semiDefaultProps), ...Object.keys(defaultPropsFromGlobal)]));\n },\n getOwnPropertyDescriptor(target, key) {\n const defaultPropsFromGlobal = getFromGlobalConfig();\n if (key in defaultPropsFromGlobal) {\n return Reflect.getOwnPropertyDescriptor(defaultPropsFromGlobal, key);\n } else {\n return Reflect.getOwnPropertyDescriptor(target, key);\n }\n }\n });\n}","class SemiGlobal {\n constructor() {\n this.config = {};\n }\n}\nexport default new SemiGlobal();","import _omit from \"lodash/omit\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { cssClasses, strings } from '@douyinfe/semi-foundation/lib/es/button/constants';\nimport '@douyinfe/semi-foundation/lib/es/button/button.css';\nimport { noop } from '@douyinfe/semi-foundation/lib/es/utils/function';\nconst btnSizes = strings.sizes;\nconst {\n htmlTypes,\n btnTypes\n} = strings;\n// TODO: icon configuration\nexport default class Button extends PureComponent {\n render() {\n const _a = this.props,\n {\n children,\n block,\n htmlType,\n loading,\n circle,\n className,\n style,\n disabled,\n size,\n theme,\n type,\n prefixCls,\n iconPosition\n } = _a,\n attr = __rest(_a, [\"children\", \"block\", \"htmlType\", \"loading\", \"circle\", \"className\", \"style\", \"disabled\", \"size\", \"theme\", \"type\", \"prefixCls\", \"iconPosition\"]);\n const baseProps = Object.assign(Object.assign({\n disabled\n }, _omit(attr, ['x-semi-children-alias'])), {\n className: classNames(prefixCls, {\n [`${prefixCls}-${type}`]: !disabled && type,\n [`${prefixCls}-disabled`]: disabled,\n [`${prefixCls}-size-large`]: size === 'large',\n [`${prefixCls}-size-small`]: size === 'small',\n // [`${prefixCls}-loading`]: loading,\n [`${prefixCls}-light`]: theme === 'light',\n [`${prefixCls}-block`]: block,\n [`${prefixCls}-circle`]: circle,\n [`${prefixCls}-borderless`]: theme === 'borderless',\n [`${prefixCls}-${type}-disabled`]: disabled && type\n }, className),\n type: htmlType,\n 'aria-disabled': disabled\n });\n const xSemiProps = {};\n if (!(className && className.includes('-with-icon'))) {\n xSemiProps['x-semi-prop'] = this.props['x-semi-children-alias'] || 'children';\n }\n return /*#__PURE__*/React.createElement(\"button\", Object.assign({}, baseProps, {\n onClick: this.props.onClick,\n onMouseDown: this.props.onMouseDown,\n style: style\n }), /*#__PURE__*/React.createElement(\"span\", Object.assign({\n className: `${prefixCls}-content`,\n onClick: e => disabled && e.stopPropagation()\n }, xSemiProps), children));\n }\n}\nButton.defaultProps = {\n disabled: false,\n size: 'default',\n type: 'primary',\n theme: 'light',\n block: false,\n htmlType: 'button',\n onMouseDown: noop,\n onClick: noop,\n onMouseEnter: noop,\n onMouseLeave: noop,\n prefixCls: cssClasses.PREFIX\n};\nButton.propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n prefixCls: PropTypes.string,\n style: PropTypes.object,\n size: PropTypes.oneOf(btnSizes),\n type: PropTypes.oneOf(btnTypes),\n block: PropTypes.bool,\n onClick: PropTypes.func,\n onMouseDown: PropTypes.func,\n circle: PropTypes.bool,\n loading: PropTypes.bool,\n htmlType: PropTypes.oneOf(htmlTypes),\n theme: PropTypes.oneOf(strings.themes),\n className: PropTypes.string,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n 'aria-label': PropTypes.string\n};","import React from 'react';\nimport BaseButton from './Button';\nimport IconButton from '../iconButton';\nimport { getDefaultPropsFromGlobalConfig } from \"../_utils\";\nclass Button extends React.PureComponent {\n constructor() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n super(props);\n }\n render() {\n const props = Object.assign({}, this.props);\n const hasIcon = Boolean(props.icon);\n const isLoading = Boolean(props.loading);\n const isDisabled = Boolean(props.disabled);\n if (hasIcon || isLoading && !isDisabled) {\n return /*#__PURE__*/React.createElement(IconButton, Object.assign({}, props));\n } else {\n return /*#__PURE__*/React.createElement(BaseButton, Object.assign({}, props));\n }\n }\n}\nButton.__SemiComponentName__ = \"Button\";\nButton.propTypes = Object.assign(Object.assign({}, BaseButton.propTypes), IconButton.propTypes);\nButton.defaultProps = getDefaultPropsFromGlobalConfig(Button.__SemiComponentName__);\nButton.elementType = 'Button';\nexport default Button;","import React from 'react';\nconst ConfigContext = /*#__PURE__*/React.createContext({});\nexport default ConfigContext;","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport cls from 'classnames';\nimport { cssClasses } from '@douyinfe/semi-foundation/lib/es/divider/constants';\nimport '@douyinfe/semi-foundation/lib/es/divider/divider.css';\nconst prefixCls = cssClasses.PREFIX;\nconst Divider = props => {\n const {\n layout = 'horizontal',\n dashed,\n align = 'center',\n className,\n margin,\n style,\n children\n } = props,\n rest = __rest(props, [\"layout\", \"dashed\", \"align\", \"className\", \"margin\", \"style\", \"children\"]);\n const dividerClassNames = cls(`${prefixCls}-divider`, className, {\n [`${prefixCls}-divider-horizontal`]: layout === 'horizontal',\n [`${prefixCls}-divider-vertical`]: layout === 'vertical',\n [`${prefixCls}-divider-dashed`]: !!dashed,\n [`${prefixCls}-divider-with-text`]: children && layout === 'horizontal',\n [`${prefixCls}-divider-with-text-${align}`]: children && layout === 'horizontal'\n });\n let overrideDefaultStyle = {};\n if (margin !== undefined) {\n if (layout === 'vertical') {\n overrideDefaultStyle = {\n 'marginLeft': margin,\n 'marginRight': margin\n };\n } else if (layout === 'horizontal') {\n overrideDefaultStyle = {\n 'marginTop': margin,\n 'marginBottom': margin\n };\n }\n }\n return /*#__PURE__*/React.createElement(\"div\", Object.assign({}, rest, {\n className: dividerClassNames,\n style: Object.assign(Object.assign({}, overrideDefaultStyle), style)\n }), children && layout === 'horizontal' ? typeof children === 'string' ? /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-divider_inner-text`,\n \"x-semi-prop\": \"children\"\n }, children) : children : null);\n};\nexport default Divider;","import _noop from \"lodash/noop\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { cssClasses, strings } from '@douyinfe/semi-foundation/lib/es/button/constants';\nimport { strings as iconStrings } from '@douyinfe/semi-foundation/lib/es/icons/constants';\nimport Button from '../button/Button';\nimport SpinIcon from '../spin/icon';\nimport '@douyinfe/semi-foundation/lib/es/button/iconButton.css';\nconst iconSizes = iconStrings.SIZE;\n// TODO: add a buttonGroup component\n// TODO: icon configuration\nclass IconButton extends PureComponent {\n render() {\n const _a = this.props,\n {\n children: originChildren,\n iconPosition,\n iconSize,\n iconStyle,\n style: originStyle,\n icon,\n noHorizontalPadding,\n theme,\n className,\n prefixCls,\n loading\n } = _a,\n otherProps = __rest(_a, [\"children\", \"iconPosition\", \"iconSize\", \"iconStyle\", \"style\", \"icon\", \"noHorizontalPadding\", \"theme\", \"className\", \"prefixCls\", \"loading\"]);\n const style = Object.assign({}, originStyle);\n // TODO: review check\n if (Array.isArray(noHorizontalPadding)) {\n noHorizontalPadding.includes('left') && (style.paddingLeft = 0);\n noHorizontalPadding.includes('right') && (style.paddingRight = 0);\n } else if (noHorizontalPadding === true) {\n style.paddingLeft = 0;\n style.paddingRight = 0;\n } else if (typeof noHorizontalPadding === 'string') {\n noHorizontalPadding === 'left' && (style.paddingLeft = 0);\n noHorizontalPadding === 'right' && (style.paddingRight = 0);\n }\n let finalChildren = null;\n let IconElem = null;\n if (loading && !otherProps.disabled) {\n IconElem = /*#__PURE__*/React.createElement(SpinIcon, null);\n } else if ( /*#__PURE__*/React.isValidElement(icon)) {\n IconElem = icon;\n }\n const btnTextCls = classNames({\n [`${prefixCls}-content-left`]: iconPosition === 'right',\n [`${prefixCls}-content-right`]: iconPosition === 'left'\n });\n const xSemiProp = this.props['x-semi-children-alias'] || 'children';\n const children = originChildren != null ? /*#__PURE__*/React.createElement(\"span\", {\n className: btnTextCls,\n \"x-semi-prop\": xSemiProp\n }, originChildren) : null;\n if (iconPosition === 'left') {\n finalChildren = /*#__PURE__*/React.createElement(React.Fragment, null, IconElem, children);\n } else {\n finalChildren = /*#__PURE__*/React.createElement(React.Fragment, null, children, IconElem);\n }\n const iconBtnCls = classNames(className, `${prefixCls}-with-icon`, {\n [`${prefixCls}-with-icon-only`]: children == null || children === '',\n [`${prefixCls}-loading`]: loading\n });\n return /*#__PURE__*/React.createElement(Button, Object.assign({}, otherProps, {\n className: iconBtnCls,\n theme: theme,\n style: style\n }), finalChildren);\n }\n}\nIconButton.defaultProps = {\n iconPosition: strings.DEFAULT_ICON_POSITION,\n prefixCls: cssClasses.PREFIX,\n loading: false,\n noHorizontalPadding: false,\n onMouseEnter: _noop,\n onMouseLeave: _noop\n};\nIconButton.elementType = \"IconButton\";\nIconButton.propTypes = {\n iconStyle: PropTypes.object,\n style: PropTypes.object,\n loading: PropTypes.bool,\n prefixCls: PropTypes.string,\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.node]),\n iconSize: PropTypes.oneOf(iconSizes),\n noHorizontalPadding: PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.array]),\n children: PropTypes.node,\n theme: PropTypes.string,\n iconPosition: PropTypes.oneOf(strings.iconPositions),\n className: PropTypes.string,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func\n};\nexport default IconButton;","import _omit from \"lodash/omit\";\nimport _isEqual from \"lodash/isEqual\";\nimport _isObject from \"lodash/isObject\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { isValidElement } from \"react\";\nimport { PreviewContext } from \"./previewContext\";\nimport BaseComponent from \"../_base/baseComponent\";\nimport PropTypes from \"prop-types\";\nimport PreviewInner from \"./previewInner\";\nimport PreviewFoundation from '@douyinfe/semi-foundation/lib/es/image/previewFoundation';\nimport { getUuidShort } from '@douyinfe/semi-foundation/lib/es/utils/uuid';\nimport { cssClasses } from '@douyinfe/semi-foundation/lib/es/image/constants';\nimport '@douyinfe/semi-foundation/lib/es/image/image.css';\nimport cls from \"classnames\";\nconst prefixCls = cssClasses.PREFIX;\nexport default class Preview extends BaseComponent {\n get adapter() {\n return Object.assign({}, super.adapter);\n }\n constructor(props) {\n super(props);\n this.observerImages = () => {\n if (this.previewObserver) {\n // cancel the observation of all elements of the previous observer\n this.previewObserver.disconnect();\n } else {\n this.previewObserver = new IntersectionObserver(entries => {\n entries.forEach(item => {\n var _a;\n const src = (_a = item.target.dataset) === null || _a === void 0 ? void 0 : _a.src;\n if (item.isIntersecting && src) {\n item.target.src = src;\n item.target.removeAttribute(\"data-src\");\n this.previewObserver.unobserve(item.target);\n }\n });\n }, {\n root: document.querySelector(`#${this.previewGroupId}`),\n rootMargin: this.props.lazyLoadMargin\n });\n }\n const allImgElement = document.querySelectorAll(`.${prefixCls}-img`);\n allImgElement.forEach(item => this.previewObserver.observe(item));\n };\n this.handleVisibleChange = newVisible => {\n this.foundation.handleVisibleChange(newVisible);\n };\n this.handleCurrentIndexChange = index => {\n this.foundation.handleCurrentIndexChange(index);\n };\n this.loopImageIndex = () => {\n const {\n children\n } = this.props;\n let index = 0;\n const srcListInChildren = [];\n const titles = [];\n const loop = children => {\n return React.Children.map(children, child => {\n var _a;\n if (child && child.props && child.type) {\n if (child.type.isSemiImage) {\n const {\n src,\n preview,\n alt\n } = child.props;\n if (preview) {\n const previewSrc = _isObject(preview) ? (_a = preview.src) !== null && _a !== void 0 ? _a : src : src;\n srcListInChildren.push(previewSrc);\n titles.push(preview === null || preview === void 0 ? void 0 : preview.previewTitle);\n return /*#__PURE__*/React.cloneElement(child, {\n imageID: index++\n });\n }\n return child;\n }\n }\n if (child && child.props && child.props.children) {\n return /*#__PURE__*/React.cloneElement(child, {\n children: loop(child.props.children)\n });\n }\n return child;\n });\n };\n return {\n srcListInChildren,\n newChildren: loop(children),\n titles\n };\n };\n this.state = {\n currentIndex: props.currentIndex || props.defaultCurrentIndex || 0,\n visible: props.visible || props.currentDefaultVisible || false\n };\n this.foundation = new PreviewFoundation(this.adapter);\n this.previewGroupId = getUuidShort({\n prefix: \"semi-image-preview-group\",\n length: 4\n });\n this.previewRef = /*#__PURE__*/React.createRef();\n }\n componentDidMount() {\n this.props.lazyLoad && this.observerImages();\n }\n componentDidUpdate(prevProps) {\n if (this.props.lazyLoad) {\n const prevChildrenKeys = React.Children.toArray(prevProps.children).map(child => /*#__PURE__*/isValidElement(child) ? child.key : null);\n const currChildrenKeys = React.Children.toArray(this.props.children).map(child => /*#__PURE__*/isValidElement(child) ? child.key : null);\n if (!_isEqual(prevChildrenKeys, currChildrenKeys)) {\n this.observerImages();\n }\n }\n }\n static getDerivedStateFromProps(props, state) {\n const willUpdateStates = {};\n if (\"currentIndex\" in props && props.currentIndex !== state.currentIndex) {\n willUpdateStates.currentIndex = props.currentIndex;\n }\n if (\"visible\" in props && props.visible !== state.visible) {\n willUpdateStates.visible = props.visible;\n }\n return willUpdateStates;\n }\n componentWillUnmount() {\n if (this.previewObserver) {\n this.previewObserver.disconnect();\n this.previewObserver = null;\n }\n }\n render() {\n const _a = this.props,\n {\n src,\n className,\n style,\n lazyLoad,\n setDownloadName\n } = _a,\n restProps = __rest(_a, [\"src\", \"className\", \"style\", \"lazyLoad\", \"setDownloadName\"]);\n const previewInnerProps = Object.assign(Object.assign({}, _omit(restProps, ['previewCls', 'previewStyle'])), {\n className: restProps === null || restProps === void 0 ? void 0 : restProps.previewCls,\n style: restProps === null || restProps === void 0 ? void 0 : restProps.previewStyle\n });\n const {\n currentIndex,\n visible\n } = this.state;\n const {\n srcListInChildren,\n newChildren,\n titles\n } = this.loopImageIndex();\n const srcArr = Array.isArray(src) ? src : typeof src === \"string\" ? [src] : [];\n const finalSrcList = [...srcArr, ...srcListInChildren];\n return /*#__PURE__*/React.createElement(PreviewContext.Provider, {\n value: {\n isGroup: true,\n previewSrc: finalSrcList,\n titles: titles,\n currentIndex,\n visible,\n lazyLoad,\n previewObserver: this.previewObserver,\n setCurrentIndex: this.handleCurrentIndexChange,\n handleVisibleChange: this.handleVisibleChange,\n setDownloadName: setDownloadName\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n id: this.previewGroupId,\n style: style,\n className: cls(`${prefixCls}-preview-group`, className)\n }, newChildren), /*#__PURE__*/React.createElement(PreviewInner, Object.assign({}, previewInnerProps, {\n ref: this.previewRef,\n src: finalSrcList,\n currentIndex: currentIndex,\n visible: visible,\n onVisibleChange: this.handleVisibleChange\n })));\n }\n}\nPreview.propTypes = {\n style: PropTypes.object,\n className: PropTypes.string,\n visible: PropTypes.bool,\n src: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n currentIndex: PropTypes.number,\n defaultCurrentIndex: PropTypes.number,\n defaultVisible: PropTypes.bool,\n maskClosable: PropTypes.bool,\n closable: PropTypes.bool,\n zoomStep: PropTypes.number,\n infinite: PropTypes.bool,\n showTooltip: PropTypes.bool,\n closeOnEsc: PropTypes.bool,\n prevTip: PropTypes.string,\n nextTip: PropTypes.string,\n zoomInTip: PropTypes.string,\n zoomOutTip: PropTypes.string,\n downloadTip: PropTypes.string,\n adaptiveTip: PropTypes.string,\n originTip: PropTypes.string,\n lazyLoad: PropTypes.bool,\n lazyLoadMargin: PropTypes.string,\n preLoad: PropTypes.bool,\n preLoadGap: PropTypes.number,\n previewCls: PropTypes.string,\n previewStyle: PropTypes.object,\n disableDownload: PropTypes.bool,\n zIndex: PropTypes.number,\n renderHeader: PropTypes.func,\n renderPreviewMenu: PropTypes.func,\n getPopupContainer: PropTypes.func,\n onVisibleChange: PropTypes.func,\n onChange: PropTypes.func,\n onClose: PropTypes.func,\n onZoomIn: PropTypes.func,\n onZoomOut: PropTypes.func,\n onPrev: PropTypes.func,\n onNext: PropTypes.func,\n onDownload: PropTypes.func,\n onRotateLeft: PropTypes.func,\n onRatioChange: PropTypes.func\n};\nPreview.defaultProps = {\n src: [],\n lazyLoad: true,\n lazyLoadMargin: \"0px 100px 100px 0px\",\n closable: true\n};","import { createContext } from \"react\";\nexport const PreviewContext = /*#__PURE__*/createContext({});","import _throttle from \"lodash/throttle\";\nimport React from \"react\";\nimport BaseComponent from \"../_base/baseComponent\";\nimport { IconChevronLeft, IconChevronRight, IconMinus, IconPlus, IconRotate, IconDownload, IconWindowAdaptionStroked, IconRealSizeStroked } from \"@douyinfe/semi-icons\";\nimport PropTypes from \"prop-types\";\nimport Tooltip from \"../tooltip\";\nimport Divider from \"../divider\";\nimport Slider from \"../slider\";\nimport { cssClasses } from '@douyinfe/semi-foundation/lib/es/image/constants';\nimport cls from \"classnames\";\nimport PreviewFooterFoundation from '@douyinfe/semi-foundation/lib/es/image/previewFooterFoundation';\nimport LocaleConsumer from \"../locale/localeConsumer\";\nconst prefixCls = cssClasses.PREFIX;\nconst footerPrefixCls = `${cssClasses.PREFIX}-preview-footer`;\nexport default class Footer extends BaseComponent {\n get adapter() {\n return Object.assign({}, super.adapter);\n }\n constructor(props) {\n super(props);\n this.changeSliderValue = type => {\n this.foundation.changeSliderValue(type);\n };\n this.handleMinusClick = () => {\n this.changeSliderValue(\"minus\");\n };\n this.handlePlusClick = () => {\n this.changeSliderValue(\"plus\");\n };\n this.handleRotateLeft = () => {\n this.foundation.handleRotate(\"left\");\n };\n this.handleRotateRight = () => {\n this.foundation.handleRotate(\"right\");\n };\n this.handleSlideChange = _throttle(value => {\n this.foundation.handleValueChange(value);\n }, 50);\n this.handleRatioClick = () => {\n this.foundation.handleRatioClick();\n };\n this.customRenderViewMenu = () => {\n const {\n min,\n max,\n step,\n curPage,\n totalNum,\n ratio,\n zoom,\n disabledPrev,\n disabledNext,\n disableDownload,\n onNext,\n onPrev,\n onDownload,\n renderPreviewMenu\n } = this.props;\n const props = {\n min,\n max,\n step,\n curPage,\n totalNum,\n ratio,\n zoom,\n disabledPrev,\n disabledNext,\n disableDownload,\n onNext,\n onPrev,\n onDownload,\n onRotateLeft: this.handleRotateLeft,\n onRotateRight: this.handleRotateRight,\n disabledZoomIn: zoom === max,\n disabledZoomOut: zoom === min,\n onRatioClick: this.handleRatioClick,\n onZoomIn: this.handlePlusClick,\n onZoomOut: this.handleMinusClick,\n menuItems: this.getMenu()\n };\n return renderPreviewMenu(props);\n };\n // According to showTooltip in props, decide whether to use Tooltip to pack a layer\n // 根据 props 中的 showTooltip 决定是否使用 Tooltip 包一层\n this.getFinalIconElement = (element, content, key) => {\n const {\n showTooltip,\n zIndex\n } = this.props;\n return showTooltip ? /*#__PURE__*/React.createElement(Tooltip, {\n content: content,\n key: `tooltip-${key}`,\n zIndex: zIndex + 1\n }, element) : element;\n };\n this.getLocalTextByKey = key => /*#__PURE__*/React.createElement(LocaleConsumer, {\n componentName: \"Image\"\n }, locale => locale[key]);\n this.getIconChevronLeft = () => {\n const {\n disabledPrev,\n onPrev,\n prevTip\n } = this.props;\n const icon = /*#__PURE__*/React.createElement(IconChevronLeft, {\n key: \"chevron-left\",\n size: \"large\",\n className: disabledPrev ? `${footerPrefixCls}-disabled` : \"\",\n onClick: !disabledPrev ? onPrev : undefined\n });\n const content = prevTip !== null && prevTip !== void 0 ? prevTip : this.getLocalTextByKey(\"prevTip\");\n return this.getFinalIconElement(icon, content, 'chevron-left');\n };\n this.getIconChevronRight = () => {\n const {\n disabledNext,\n onNext,\n nextTip\n } = this.props;\n const icon = /*#__PURE__*/React.createElement(IconChevronRight, {\n key: \"chevron-right\",\n size: \"large\",\n className: disabledNext ? `${footerPrefixCls}-disabled` : \"\",\n onClick: !disabledNext ? onNext : undefined\n });\n const content = nextTip !== null && nextTip !== void 0 ? nextTip : this.getLocalTextByKey(\"nextTip\");\n return this.getFinalIconElement(icon, content, 'chevron-right');\n };\n this.getIconMinus = () => {\n const {\n zoomOutTip,\n zoom,\n min\n } = this.props;\n const disabledZoomOut = zoom === min;\n const icon = /*#__PURE__*/React.createElement(IconMinus, {\n key: \"minus\",\n size: \"large\",\n onClick: !disabledZoomOut ? this.handleMinusClick : undefined,\n className: disabledZoomOut ? `${footerPrefixCls}-disabled` : \"\"\n });\n const content = zoomOutTip !== null && zoomOutTip !== void 0 ? zoomOutTip : this.getLocalTextByKey(\"zoomOutTip\");\n return this.getFinalIconElement(icon, content, 'minus');\n };\n this.getIconPlus = () => {\n const {\n zoomInTip,\n zoom,\n max\n } = this.props;\n const disabledZoomIn = zoom === max;\n const icon = /*#__PURE__*/React.createElement(IconPlus, {\n key: \"plus\",\n size: \"large\",\n onClick: !disabledZoomIn ? this.handlePlusClick : undefined,\n className: disabledZoomIn ? `${footerPrefixCls}-disabled` : \"\"\n });\n const content = zoomInTip !== null && zoomInTip !== void 0 ? zoomInTip : this.getLocalTextByKey(\"zoomInTip\");\n return this.getFinalIconElement(icon, content, 'plus');\n };\n this.getIconRatio = () => {\n const {\n ratio,\n originTip,\n adaptiveTip\n } = this.props;\n const props = {\n key: \"ratio\",\n size: \"large\",\n className: cls(`${footerPrefixCls}-gap`),\n onClick: this.handleRatioClick\n };\n const icon = ratio === \"adaptation\" ? /*#__PURE__*/React.createElement(IconRealSizeStroked, Object.assign({}, props)) : /*#__PURE__*/React.createElement(IconWindowAdaptionStroked, Object.assign({}, props));\n let content;\n if (ratio === \"adaptation\") {\n content = originTip !== null && originTip !== void 0 ? originTip : this.getLocalTextByKey(\"originTip\");\n } else {\n content = adaptiveTip !== null && adaptiveTip !== void 0 ? adaptiveTip : this.getLocalTextByKey(\"adaptiveTip\");\n }\n return this.getFinalIconElement(icon, content, 'ratio');\n };\n this.getIconRotate = () => {\n const {\n rotateTip\n } = this.props;\n const icon = /*#__PURE__*/React.createElement(IconRotate, {\n key: \"rotate\",\n size: \"large\",\n onClick: this.handleRotateLeft\n });\n const content = rotateTip !== null && rotateTip !== void 0 ? rotateTip : this.getLocalTextByKey(\"rotateTip\");\n return this.getFinalIconElement(icon, content, 'rotate');\n };\n this.getIconDownload = () => {\n const {\n downloadTip,\n onDownload,\n disableDownload\n } = this.props;\n const icon = /*#__PURE__*/React.createElement(IconDownload, {\n key: 'download',\n size: \"large\",\n onClick: !disableDownload ? onDownload : undefined,\n className: cls(`${footerPrefixCls}-gap`, {\n [`${footerPrefixCls}-disabled`]: disableDownload\n })\n });\n const content = downloadTip !== null && downloadTip !== void 0 ? downloadTip : this.getLocalTextByKey(\"downloadTip\");\n return this.getFinalIconElement(icon, content, 'download');\n };\n this.getNumberInfo = () => {\n const {\n curPage,\n totalNum\n } = this.props;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: `${footerPrefixCls}-page`,\n key: 'info'\n }, curPage, \"/\", totalNum);\n };\n this.getSlider = () => {\n const {\n zoom,\n min,\n max,\n step,\n showTooltip\n } = this.props;\n return /*#__PURE__*/React.createElement(Slider, {\n key: 'slider',\n value: zoom,\n min: min,\n max: max,\n step: step,\n tipFormatter: v => `${v}%`,\n tooltipVisible: showTooltip ? undefined : false,\n onChange: this.handleSlideChange\n });\n };\n this.getMenu = () => [this.getIconChevronLeft(), this.getNumberInfo(), this.getIconChevronRight(), this.getIconMinus(), this.getSlider(), this.getIconPlus(), this.getIconRatio(), this.getIconRotate(), this.getIconDownload()];\n this.getFooterMenu = () => {\n const menuItems = this.getMenu();\n menuItems.splice(3, 0, /*#__PURE__*/React.createElement(Divider, {\n layout: \"vertical\",\n key: \"divider-first\"\n }));\n menuItems.splice(8, 0, /*#__PURE__*/React.createElement(Divider, {\n layout: \"vertical\",\n key: \"divider-second\"\n }));\n return menuItems;\n };\n this.foundation = new PreviewFooterFoundation(this.adapter);\n }\n render() {\n const {\n className,\n renderPreviewMenu,\n forwardRef\n } = this.props;\n const menuCls = cls(footerPrefixCls, `${footerPrefixCls}-wrapper`, className, {\n [`${footerPrefixCls}-content`]: !Boolean(renderPreviewMenu)\n });\n return /*#__PURE__*/React.createElement(\"section\", {\n className: menuCls,\n ref: forwardRef\n }, renderPreviewMenu ? this.customRenderViewMenu() : this.getFooterMenu());\n }\n}\nFooter.propTypes = {\n curPage: PropTypes.number,\n totalNum: PropTypes.number,\n disabledPrev: PropTypes.bool,\n disabledNext: PropTypes.bool,\n disableDownload: PropTypes.bool,\n className: PropTypes.string,\n zoom: PropTypes.number,\n ratio: PropTypes.string,\n prevTip: PropTypes.string,\n nextTip: PropTypes.string,\n zoomInTip: PropTypes.string,\n zoomOutTip: PropTypes.string,\n rotateTip: PropTypes.string,\n downloadTip: PropTypes.string,\n adaptiveTip: PropTypes.string,\n originTip: PropTypes.string,\n showTooltip: PropTypes.bool,\n onZoomIn: PropTypes.func,\n onZoomOut: PropTypes.func,\n onPrev: PropTypes.func,\n onNext: PropTypes.func,\n onAdjustRatio: PropTypes.func,\n onRotateLeft: PropTypes.func,\n onDownload: PropTypes.func\n};\nFooter.defaultProps = {\n min: 10,\n max: 500,\n step: 10,\n showTooltip: false,\n disableDownload: false\n};","import React, { forwardRef } from \"react\";\nimport { IconClose } from \"@douyinfe/semi-icons\";\nimport { cssClasses } from '@douyinfe/semi-foundation/lib/es/image/constants';\nimport cls from \"classnames\";\nimport { PreviewContext } from \"./previewContext\";\nconst prefixCls = `${cssClasses.PREFIX}-preview-header`;\nconst Header = /*#__PURE__*/forwardRef((_ref, ref) => {\n let {\n onClose,\n titleStyle,\n className,\n renderHeader,\n closable\n } = _ref;\n return /*#__PURE__*/React.createElement(PreviewContext.Consumer, null, _ref2 => {\n let {\n currentIndex,\n titles\n } = _ref2;\n let title;\n if (titles && typeof currentIndex === \"number\") {\n title = titles[currentIndex];\n }\n return /*#__PURE__*/React.createElement(\"section\", {\n ref: ref,\n className: cls(prefixCls, className)\n }, /*#__PURE__*/React.createElement(\"section\", {\n className: `${prefixCls}-title`,\n style: titleStyle\n }, renderHeader ? renderHeader(title) : title), closable && /*#__PURE__*/React.createElement(\"section\", {\n className: `${prefixCls}-close`,\n onMouseUp: onClose\n }, /*#__PURE__*/React.createElement(IconClose, null)));\n });\n});\nexport default Header;","import React from \"react\";\nimport BaseComponent from \"../_base/baseComponent\";\nimport { cssClasses } from '@douyinfe/semi-foundation/lib/es/image/constants';\nimport PropTypes from \"prop-types\";\nimport Spin from \"../spin\";\nimport PreviewImageFoundation from '@douyinfe/semi-foundation/lib/es/image/previewImageFoundation';\nconst prefixCls = cssClasses.PREFIX;\nconst preViewImgPrefixCls = `${prefixCls}-preview-image`;\nexport default class PreviewImage extends BaseComponent {\n get adapter() {\n return Object.assign(Object.assign({}, super.adapter), {\n getContainer: () => {\n return this.containerRef.current;\n },\n getImage: () => {\n return this.imageRef.current;\n },\n setLoading: loading => {\n this.setState({\n loading\n });\n },\n setImageCursor: canDrag => {\n this.imageRef.current.style.cursor = canDrag ? \"grab\" : \"default\";\n }\n });\n }\n constructor(props) {\n super(props);\n this.onWindowResize = () => {\n this.foundation.handleWindowResize();\n };\n // Determine the response method of right click according to the disableDownload parameter in props\n this.handleRightClickImage = e => {\n this.foundation.handleRightClickImage(e);\n };\n this.handleLoad = e => {\n this.foundation.handleLoad(e);\n };\n this.handleError = e => {\n this.foundation.handleError(e);\n };\n this.handleMoveImage = e => {\n this.foundation.handleMoveImage(e);\n };\n this.onImageMouseDown = e => {\n this.foundation.handleImageMouseDown(e);\n };\n this.state = {\n width: 0,\n height: 0,\n loading: true,\n offset: {\n x: 0,\n y: 0\n },\n currZoom: 0,\n top: 0,\n left: 0\n };\n this.containerRef = /*#__PURE__*/React.createRef();\n this.imageRef = /*#__PURE__*/React.createRef();\n this.foundation = new PreviewImageFoundation(this.adapter);\n }\n componentDidMount() {\n window.addEventListener(\"resize\", this.onWindowResize);\n }\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n componentDidUpdate(prevProps, prevStates) {\n // If src changes, start a new loading\n const zoomChange = \"zoom\" in this.props && this.props.zoom !== this.state.currZoom;\n const srcChange = this.props.src && this.props.src !== prevProps.src;\n if (srcChange) {\n this.foundation.setLoading(true);\n }\n // If the incoming zoom changes, other content changes are determined based on the new zoom value\n if (zoomChange) {\n this.foundation.calculatePreviewImage(this.props.zoom, null);\n }\n if (!zoomChange && !srcChange && prevProps) {\n if (\"ratio\" in this.props && this.props.ratio !== prevProps.ratio) {\n this.foundation.handleRatioChange();\n }\n if (\"rotation\" in this.props && this.props.rotation !== prevProps.rotation) {\n this.onWindowResize();\n }\n }\n }\n render() {\n const {\n src,\n rotation,\n crossOrigin\n } = this.props;\n const {\n loading,\n width,\n height,\n top,\n left\n } = this.state;\n const imgStyle = {\n position: \"absolute\",\n visibility: loading ? \"hidden\" : \"visible\",\n transform: `rotate(${-rotation}deg)`,\n top,\n left,\n width,\n height\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n className: `${preViewImgPrefixCls}`,\n ref: this.containerRef\n }, /*#__PURE__*/React.createElement(\"img\", {\n ref: this.imageRef,\n src: src,\n alt: \"previewImag\",\n className: `${preViewImgPrefixCls}-img`,\n key: src,\n onMouseMove: this.handleMoveImage,\n onMouseDown: this.onImageMouseDown,\n onContextMenu: this.handleRightClickImage,\n onDragStart: e => e.preventDefault(),\n onLoad: this.handleLoad,\n onError: this.handleError,\n style: imgStyle,\n crossOrigin: crossOrigin\n }), loading && /*#__PURE__*/React.createElement(Spin, {\n size: \"large\",\n wrapperClassName: `${preViewImgPrefixCls}-spin`\n }));\n }\n}\nPreviewImage.propTypes = {\n src: PropTypes.string,\n rotation: PropTypes.number,\n style: PropTypes.object,\n // maxZoom: PropTypes.number,\n // minZoom: PropTypes.number,\n // zoomStep: PropTypes.number,\n zoom: PropTypes.number,\n ratio: PropTypes.string,\n disableDownload: PropTypes.bool,\n clickZoom: PropTypes.number,\n setRatio: PropTypes.func,\n onZoom: PropTypes.func,\n onLoad: PropTypes.func,\n onError: PropTypes.func\n};\nPreviewImage.defaultProps = {\n // maxZoom: 5,\n // minZoom: 0.1,\n // zoomStep: 0.1,\n zoom: undefined\n};","import _isFunction from \"lodash/isFunction\";\nimport _isEqual from \"lodash/isEqual\";\nimport React from \"react\";\nimport BaseComponent from \"../_base/baseComponent\";\nimport PropTypes from \"prop-types\";\nimport { cssClasses, numbers } from '@douyinfe/semi-foundation/lib/es/image/constants';\nimport cls from \"classnames\";\nimport Portal from \"../_portal\";\nimport { IconArrowLeft, IconArrowRight } from \"@douyinfe/semi-icons\";\nimport Header from \"./previewHeader\";\nimport Footer from \"./previewFooter\";\nimport PreviewImage from \"./previewImage\";\nimport PreviewInnerFoundation from '@douyinfe/semi-foundation/lib/es/image/previewInnerFoundation';\nimport { PreviewContext } from \"./previewContext\";\nimport { getScrollbarWidth } from \"../_utils\";\nconst prefixCls = cssClasses.PREFIX;\nexport default class PreviewInner extends BaseComponent {\n get adapter() {\n return Object.assign(Object.assign({}, super.adapter), {\n getIsInGroup: () => this.isInGroup(),\n disabledBodyScroll: () => {\n const {\n getPopupContainer\n } = this.props;\n this.bodyOverflow = document.body.style.overflow || '';\n if (!getPopupContainer && this.bodyOverflow !== 'hidden') {\n document.body.style.overflow = 'hidden';\n document.body.style.width = `calc(${this.originBodyWidth || '100%'} - ${this.scrollBarWidth}px)`;\n }\n },\n enabledBodyScroll: () => {\n const {\n getPopupContainer\n } = this.props;\n if (!getPopupContainer && this.bodyOverflow !== 'hidden') {\n document.body.style.overflow = this.bodyOverflow;\n document.body.style.width = this.originBodyWidth;\n }\n },\n notifyChange: (index, direction) => {\n const {\n onChange,\n onPrev,\n onNext\n } = this.props;\n _isFunction(onChange) && onChange(index);\n if (direction === \"prev\") {\n onPrev && onPrev(index);\n } else {\n onNext && onNext(index);\n }\n },\n notifyZoom: (zoom, increase) => {\n const {\n onZoomIn,\n onZoomOut\n } = this.props;\n if (increase) {\n _isFunction(onZoomIn) && onZoomIn(zoom);\n } else {\n _isFunction(onZoomOut) && onZoomOut(zoom);\n }\n },\n notifyClose: () => {\n const {\n onClose\n } = this.props;\n _isFunction(onClose) && onClose();\n },\n notifyVisibleChange: visible => {\n const {\n onVisibleChange\n } = this.props;\n _isFunction(onVisibleChange) && onVisibleChange(visible);\n },\n notifyRatioChange: type => {\n const {\n onRatioChange\n } = this.props;\n _isFunction(onRatioChange) && onRatioChange(type);\n },\n notifyRotateChange: angle => {\n const {\n onRotateLeft\n } = this.props;\n _isFunction(onRotateLeft) && onRotateLeft(angle);\n },\n notifyDownload: (src, index) => {\n const {\n onDownload\n } = this.props;\n _isFunction(onDownload) && onDownload(src, index);\n },\n notifyDownloadError: src => {\n const {\n onDownloadError\n } = this.props;\n _isFunction(onDownloadError) && onDownloadError(src);\n },\n registerKeyDownListener: () => {\n window && window.addEventListener(\"keydown\", this.handleKeyDown);\n },\n unregisterKeyDownListener: () => {\n window && window.removeEventListener(\"keydown\", this.handleKeyDown);\n },\n getSetDownloadFunc: () => {\n var _a, _b;\n return (_b = (_a = this.context) === null || _a === void 0 ? void 0 : _a.setDownloadName) !== null && _b !== void 0 ? _b : this.props.setDownloadName;\n },\n isValidTarget: e => {\n const headerDom = this.headerRef && this.headerRef.current;\n const footerDom = this.footerRef && this.footerRef.current;\n const leftIconDom = this.leftIconRef && this.leftIconRef.current;\n const rightIconDom = this.rightIconRef && this.rightIconRef.current;\n const target = e.target;\n if (headerDom && headerDom.contains(target) || footerDom && footerDom.contains(target) || leftIconDom && leftIconDom.contains(target) || rightIconDom && rightIconDom.contains(target)) {\n // Move in the operation area, return false\n return false;\n }\n // Move in the preview area except the operation area, return true\n return true;\n }\n });\n }\n constructor(props) {\n var _this;\n super(props);\n _this = this;\n this.viewVisibleChange = () => {\n this.foundation.handleViewVisibleChange();\n };\n this.handleSwitchImage = direction => {\n this.foundation.handleSwitchImage(direction);\n };\n this.handleDownload = () => {\n this.foundation.handleDownload();\n };\n this.handlePreviewClose = e => {\n this.foundation.handlePreviewClose(e);\n };\n this.handleAdjustRatio = type => {\n this.foundation.handleAdjustRatio(type);\n };\n this.handleRotateImage = direction => {\n this.foundation.handleRotateImage(direction);\n };\n this.handleZoomImage = function (newZoom) {\n let notify = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n _this.foundation.handleZoomImage(newZoom, notify);\n };\n this.handleMouseUp = e => {\n this.foundation.handleMouseUp(e.nativeEvent);\n };\n this.handleMouseMove = e => {\n this.foundation.handleMouseMove(e);\n };\n this.handleKeyDown = e => {\n this.foundation.handleKeyDown(e);\n };\n this.onImageError = () => {\n this.foundation.preloadSingleImage();\n };\n this.onImageLoad = src => {\n this.foundation.onImageLoad(src);\n };\n this.handleMouseDown = e => {\n this.foundation.handleMouseDown(e);\n };\n this.handleWheel = e => {\n this.foundation.handleWheel(e);\n };\n // 为什么通过 addEventListener 注册 wheel 事件而不是使用 onWheel 事件?\n // 因为 Passive Event Listeners(https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#improving_scrolling_performance_with_passive_listeners)\n // Passive Event Listeners 是一种优化技术,用于提高滚动性能。在默认情况下,浏览器会假设事件的监听器不会调用 \n // preventDefault() 方法来阻止事件的默认行为,从而允许进行一些优化操作,例如滚动平滑。\n // 对于 Image 而言,如果使用触控板,双指朝不同方向分开放大图片,则需要 preventDefault 防止页面整体放大。\n // Why register wheel event through addEventListener instead of using onWheel event?\n // Because of Passive Event Listeners(an optimization technique used to improve scrolling performance. By default, \n // the browser will assume that event listeners will not call preventDefault() method to prevent the default behavior of the event, \n // allowing some optimization operations such as scroll smoothing.)\n // For Image, if we use the trackpad and spread your fingers in different directions to enlarge the image, we need to preventDefault\n // to prevent the page from being enlarged as a whole.\n this.registryImageWrapRef = ref => {\n if (this.imageWrapRef) {\n this.imageWrapRef.removeEventListener(\"wheel\", this.handleWheel);\n }\n if (ref) {\n ref.addEventListener(\"wheel\", this.handleWheel, {\n passive: false\n });\n }\n this.imageWrapRef = ref;\n };\n this.state = {\n imgSrc: [],\n imgLoadStatus: new Map(),\n zoom: 0.1,\n currentIndex: 0,\n ratio: \"adaptation\",\n rotation: 0,\n viewerVisible: true,\n visible: false,\n preloadAfterVisibleChange: true,\n direction: \"\"\n };\n this.foundation = new PreviewInnerFoundation(this.adapter);\n this.bodyOverflow = '';\n this.originBodyWidth = '100%';\n this.scrollBarWidth = 0;\n this.imageWrapRef = null;\n this.headerRef = /*#__PURE__*/React.createRef();\n this.footerRef = /*#__PURE__*/React.createRef();\n this.leftIconRef = /*#__PURE__*/React.createRef();\n this.rightIconRef = /*#__PURE__*/React.createRef();\n }\n static getDerivedStateFromProps(props, state) {\n const willUpdateStates = {};\n let src = [];\n if (props.visible) {\n // if src in props\n src = Array.isArray(props.src) ? props.src : [props.src];\n }\n if (!_isEqual(src, state.imgSrc)) {\n willUpdateStates.imgSrc = src;\n }\n if (props.visible !== state.visible) {\n willUpdateStates.visible = props.visible;\n if (props.visible) {\n willUpdateStates.preloadAfterVisibleChange = true;\n willUpdateStates.viewerVisible = true;\n willUpdateStates.rotation = 0;\n willUpdateStates.ratio = 'adaptation';\n }\n }\n if (\"currentIndex\" in props && props.currentIndex !== state.currentIndex) {\n willUpdateStates.currentIndex = props.currentIndex;\n // ratio will set to adaptation when change picture, \n // attention: If the ratio is controlled, the ratio should not change as the index changes\n willUpdateStates.ratio = 'adaptation';\n }\n return willUpdateStates;\n }\n componentDidMount() {\n this.scrollBarWidth = getScrollbarWidth();\n this.originBodyWidth = document.body.style.width;\n if (this.props.visible) {\n this.foundation.beforeShow();\n }\n }\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.src !== this.props.src) {\n this.foundation.updateTimer();\n }\n // hide => show\n if (!prevProps.visible && this.props.visible) {\n this.foundation.beforeShow();\n }\n // show => hide\n if (prevProps.visible && !this.props.visible) {\n this.foundation.afterHide();\n }\n }\n componentWillUnmount() {\n this.foundation.clearTimer();\n }\n isInGroup() {\n return Boolean(this.context && this.context.isGroup);\n }\n render() {\n const {\n getPopupContainer,\n closable,\n zIndex,\n visible,\n className,\n style,\n infinite,\n zoomStep,\n crossOrigin,\n prevTip,\n nextTip,\n zoomInTip,\n zoomOutTip,\n rotateTip,\n downloadTip,\n adaptiveTip,\n originTip,\n showTooltip,\n disableDownload,\n renderPreviewMenu,\n renderHeader\n } = this.props;\n const {\n currentIndex,\n imgSrc,\n zoom,\n ratio,\n rotation,\n viewerVisible\n } = this.state;\n let wrapperStyle = {\n zIndex\n };\n if (getPopupContainer) {\n wrapperStyle = {\n zIndex,\n position: \"static\"\n };\n }\n const previewPrefixCls = `${prefixCls}-preview`;\n const previewWrapperCls = cls(previewPrefixCls, {\n [`${prefixCls}-hide`]: !visible,\n [`${previewPrefixCls}-popup`]: getPopupContainer\n }, className);\n const hideViewerCls = !viewerVisible ? `${previewPrefixCls}-hide` : \"\";\n const total = imgSrc.length;\n const showPrev = total !== 1 && (infinite || currentIndex !== 0);\n const showNext = total !== 1 && (infinite || currentIndex !== total - 1);\n return visible && /*#__PURE__*/React.createElement(Portal, {\n getPopupContainer: getPopupContainer,\n style: wrapperStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: previewWrapperCls,\n style: style,\n onMouseDown: this.handleMouseDown,\n onMouseUp: this.handleMouseUp,\n ref: this.registryImageWrapRef,\n onMouseMove: this.handleMouseMove\n }, /*#__PURE__*/React.createElement(Header, {\n ref: this.headerRef,\n className: cls(hideViewerCls),\n onClose: this.handlePreviewClose,\n renderHeader: renderHeader,\n closable: closable\n }), /*#__PURE__*/React.createElement(PreviewImage, {\n src: imgSrc[currentIndex],\n onZoom: this.handleZoomImage,\n disableDownload: disableDownload,\n setRatio: this.handleAdjustRatio,\n zoom: zoom,\n ratio: ratio,\n rotation: rotation,\n crossOrigin: crossOrigin,\n onError: this.onImageError,\n onLoad: this.onImageLoad\n }), showPrev &&\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n React.createElement(\"div\", {\n ref: this.leftIconRef,\n className: cls(`${previewPrefixCls}-icon`, `${previewPrefixCls}-prev`, hideViewerCls),\n onClick: () => this.handleSwitchImage(\"prev\")\n }, /*#__PURE__*/React.createElement(IconArrowLeft, {\n size: \"large\"\n })), showNext &&\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n React.createElement(\"div\", {\n ref: this.rightIconRef,\n className: cls(`${previewPrefixCls}-icon`, `${previewPrefixCls}-next`, hideViewerCls),\n onClick: () => this.handleSwitchImage(\"next\")\n }, /*#__PURE__*/React.createElement(IconArrowRight, {\n size: \"large\"\n })), /*#__PURE__*/React.createElement(Footer, {\n forwardRef: this.footerRef,\n className: hideViewerCls,\n totalNum: total,\n curPage: currentIndex + 1,\n disabledPrev: !showPrev,\n disabledNext: !showNext,\n zoom: zoom * 100,\n step: zoomStep * 100,\n showTooltip: showTooltip,\n ratio: ratio,\n prevTip: prevTip,\n nextTip: nextTip,\n zIndex: zIndex,\n zoomInTip: zoomInTip,\n zoomOutTip: zoomOutTip,\n rotateTip: rotateTip,\n downloadTip: downloadTip,\n disableDownload: disableDownload,\n adaptiveTip: adaptiveTip,\n originTip: originTip,\n onPrev: () => this.handleSwitchImage(\"prev\"),\n onNext: () => this.handleSwitchImage(\"next\"),\n onZoomIn: this.handleZoomImage,\n onZoomOut: this.handleZoomImage,\n onDownload: this.handleDownload,\n onRotate: this.handleRotateImage,\n onAdjustRatio: this.handleAdjustRatio,\n renderPreviewMenu: renderPreviewMenu\n })));\n }\n}\nPreviewInner.contextType = PreviewContext;\nPreviewInner.propTypes = {\n style: PropTypes.object,\n className: PropTypes.string,\n visible: PropTypes.bool,\n src: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n currentIndex: PropTypes.number,\n defaultCurrentIndex: PropTypes.number,\n defaultVisible: PropTypes.bool,\n maskClosable: PropTypes.bool,\n closable: PropTypes.bool,\n zoomStep: PropTypes.number,\n infinite: PropTypes.bool,\n showTooltip: PropTypes.bool,\n closeOnEsc: PropTypes.bool,\n prevTip: PropTypes.string,\n nextTip: PropTypes.string,\n zoomInTip: PropTypes.string,\n zoomOutTip: PropTypes.string,\n downloadTip: PropTypes.string,\n adaptiveTip: PropTypes.string,\n originTip: PropTypes.string,\n lazyLoad: PropTypes.bool,\n preLoad: PropTypes.bool,\n preLoadGap: PropTypes.number,\n disableDownload: PropTypes.bool,\n viewerVisibleDelay: PropTypes.number,\n zIndex: PropTypes.number,\n maxZoom: PropTypes.number,\n minZoom: PropTypes.number,\n renderHeader: PropTypes.func,\n renderPreviewMenu: PropTypes.func,\n getPopupContainer: PropTypes.func,\n onVisibleChange: PropTypes.func,\n onChange: PropTypes.func,\n onClose: PropTypes.func,\n onZoomIn: PropTypes.func,\n onZoomOut: PropTypes.func,\n onPrev: PropTypes.func,\n onNext: PropTypes.func,\n onDownload: PropTypes.func,\n onRatioChange: PropTypes.func,\n onRotateLeft: PropTypes.func\n};\nPreviewInner.defaultProps = {\n showTooltip: false,\n zoomStep: 0.1,\n infinite: false,\n closeOnEsc: true,\n lazyLoad: false,\n preLoad: true,\n preLoadGap: 2,\n zIndex: numbers.DEFAULT_Z_INDEX,\n maskClosable: true,\n viewerVisibleDelay: 10000,\n maxZoom: 5,\n minZoom: 0.1\n};","import React from 'react';\nconst LocaleContext = /*#__PURE__*/React.createContext(null);\nexport default LocaleContext;","import _get from \"lodash/get\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport LocaleContext from './context';\nimport ConfigContext from '../configProvider/context';\nimport DefaultLocale from './source/zh_CN';\nexport default class LocaleConsumer extends Component {\n renderChildren(localeData, children) {\n const {\n componentName\n } = this.props;\n let locale = localeData;\n if (!(localeData === null || localeData === void 0 ? void 0 : localeData.code)) {\n locale = DefaultLocale;\n }\n /**\n * dateFnsLocale is used to format the date into a local date\n * example:\n * import { zhCN } from \"date-fns/locale\";\n * format(new Date(\"2021-04-29\"), \"yyyy-MM-dd EEEE\")\n * => '2021-04-29 Thursday' (默认 locale 为 en-US)\n * format(new Date('2021-04-29'), \"yyyy-MM-dd EEEE\", { locale: zhCN })\n * => '2021-04-29 星期四'\n */\n const defaultFnsLocale = _get(DefaultLocale, 'dateFnsLocale');\n const dateFnsLocale = _get(locale, 'dateFnsLocale', defaultFnsLocale);\n return children(locale[componentName], locale.code, dateFnsLocale);\n }\n render() {\n const {\n children\n } = this.props;\n return /*#__PURE__*/React.createElement(ConfigContext.Consumer, null, _ref => {\n let {\n locale\n } = _ref;\n return /*#__PURE__*/React.createElement(LocaleContext.Consumer, null, localeData => this.renderChildren(locale || localeData, children));\n });\n }\n}\nLocaleConsumer.propTypes = {\n componentName: PropTypes.string.isRequired,\n children: PropTypes.any\n};\nLocaleConsumer.defaultProps = {\n componentName: ''\n};","import { zhCN } from 'date-fns/locale';\nconst local = {\n code: 'zh-CN',\n dateFnsLocale: zhCN,\n Pagination: {\n pageSize: '每页条数:${pageSize}',\n total: '总页数:${total}',\n jumpTo: '跳至',\n page: '页'\n },\n Modal: {\n confirm: '确定',\n cancel: '取消'\n },\n TimePicker: {\n placeholder: {\n time: '请选择时间',\n timeRange: '请选择时间范围'\n },\n begin: '开始时间',\n end: '结束时间',\n hour: '时',\n minute: '分',\n second: '秒',\n AM: '上午',\n PM: '下午'\n },\n DatePicker: {\n placeholder: {\n date: '请选择日期',\n dateTime: '请选择日期及时间',\n dateRange: ['开始日期', '结束日期'],\n dateTimeRange: ['开始日期', '结束日期'],\n monthRange: ['开始月份', '结束月份']\n },\n presets: '快捷选择',\n footer: {\n confirm: '确定',\n cancel: '取消'\n },\n selectDate: '返回选择日期',\n selectTime: '选择时间',\n year: '年',\n month: '月',\n day: '日',\n monthText: '${year}年 ${month}',\n months: {\n 1: '1月',\n 2: '2月',\n 3: '3月',\n 4: '4月',\n 5: '5月',\n 6: '6月',\n 7: '7月',\n 8: '8月',\n 9: '9月',\n 10: '10月',\n 11: '11月',\n 12: '12月'\n },\n // timepicker scrollwheel里只需要展示[1、2……],所以这里的fullMonths根据UI定制了\n fullMonths: {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12'\n },\n weeks: {\n Mon: '一',\n Tue: '二',\n Wed: '三',\n Thu: '四',\n Fri: '五',\n Sat: '六',\n Sun: '日'\n },\n localeFormatToken: {\n FORMAT_SWITCH_DATE: 'yyyy-MM-dd'\n }\n },\n Navigation: {\n collapseText: '收起侧边栏',\n expandText: '展开侧边栏'\n },\n Popconfirm: {\n confirm: '确定',\n cancel: '取消'\n },\n Table: {\n emptyText: '暂无数据',\n pageText: '显示第 ${currentStart} 条-第 ${currentEnd} 条,共 ${total} 条'\n },\n Select: {\n emptyText: '暂无数据',\n createText: '创建'\n },\n Cascader: {\n emptyText: '暂无数据'\n },\n Tree: {\n emptyText: '暂无数据',\n searchPlaceholder: '搜索'\n },\n List: {\n emptyText: '暂无数据'\n },\n Calendar: {\n allDay: '全天',\n AM: '上午${time}时',\n PM: '下午${time}时',\n datestring: '日',\n remaining: '还有${remained}项'\n },\n Upload: {\n mainText: '点击上传文件或拖拽文件到这里',\n illegalTips: '不支持此类型文件',\n legalTips: '松手开始上传',\n retry: '重试',\n replace: '替换文件',\n clear: '清空',\n selectedFiles: '已选择文件',\n illegalSize: '文件尺寸不合法',\n fail: '上传失败'\n },\n TreeSelect: {\n searchPlaceholder: '搜索'\n },\n Typography: {\n copy: '复制',\n copied: '复制成功',\n expand: '展开',\n collapse: '收起'\n },\n Transfer: {\n emptyLeft: '暂无数据',\n emptySearch: '无搜索结果',\n emptyRight: '暂无内容,可从左侧勾选',\n placeholder: '搜索',\n clear: '清空',\n selectAll: '全选',\n clearSelectAll: '取消全选',\n total: '总个数:${total}',\n selected: '已选个数:${total}'\n },\n Form: {\n optional: '(可选)'\n },\n Image: {\n preview: '预览',\n loading: '加载中',\n loadError: '加载失败',\n prevTip: '上一张',\n nextTip: '下一张',\n zoomInTip: '放大',\n zoomOutTip: '缩小',\n rotateTip: '旋转',\n downloadTip: '下载',\n adaptiveTip: '适应页面',\n originTip: '原始尺寸'\n }\n};\n// 中文\nexport default local;","import _noop from \"lodash/noop\";\nimport _isEqual from \"lodash/isEqual\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport cls from 'classnames';\nimport { cssClasses } from '@douyinfe/semi-foundation/lib/es/slider/constants';\nimport BaseComponent from '../_base/baseComponent';\nimport SliderFoundation from '@douyinfe/semi-foundation/lib/es/slider/foundation';\nimport Tooltip from '../tooltip/index';\nimport '@douyinfe/semi-foundation/lib/es/slider/slider.css';\nconst prefixCls = cssClasses.PREFIX;\nfunction domIsInRenderTree(e) {\n if (!e) {\n return false;\n }\n return Boolean(e.offsetWidth || e.offsetHeight || e.getClientRects().length);\n}\nexport default class Slider extends BaseComponent {\n constructor(props) {\n super(props);\n this.renderHandle = () => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const {\n vertical,\n range,\n tooltipVisible,\n tipFormatter,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-valuetext': ariaValueText,\n getAriaValueText,\n disabled\n } = this.props;\n const {\n chooseMovePos,\n isDrag,\n isInRenderTree,\n firstDotFocusVisible,\n secondDotFocusVisible\n } = this.state;\n const stylePos = vertical ? 'top' : 'left';\n const percentInfo = this.foundation.getMinAndMaxPercent(this.state.currentValue);\n const minPercent = percentInfo.min;\n const maxPercent = percentInfo.max;\n const {\n tipVisible,\n tipChildren\n } = this.foundation.computeHandleVisibleVal(tooltipVisible && isInRenderTree, tipFormatter, range);\n const minClass = cls(cssClasses.HANDLE, {\n [`${cssClasses.HANDLE}-clicked`]: chooseMovePos === 'min' && isDrag\n });\n const maxClass = cls(cssClasses.HANDLE, {\n [`${cssClasses.HANDLE}-clicked`]: chooseMovePos === 'max' && isDrag\n });\n const {\n min,\n max,\n currentValue\n } = this.state;\n const commonAria = {\n 'aria-label': ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : disabled ? 'Disabled Slider' : undefined,\n 'aria-labelledby': ariaLabelledby,\n 'aria-disabled': disabled\n };\n vertical && Object.assign(commonAria, {\n 'aria-orientation': 'vertical'\n });\n const handleContents = !range ? /*#__PURE__*/React.createElement(Tooltip, {\n content: tipChildren.min,\n showArrow: this.props.showArrow,\n position: \"top\",\n trigger: \"custom\",\n rePosKey: minPercent,\n visible: isInRenderTree && (tipVisible.min || firstDotFocusVisible),\n className: `${cssClasses.HANDLE}-tooltip`\n }, /*#__PURE__*/React.createElement(\"span\", Object.assign({\n onMouseOver: this.foundation.checkAndUpdateIsInRenderTreeState,\n ref: this.minHanleEl,\n className: minClass,\n style: {\n [stylePos]: `${minPercent * 100}%`,\n zIndex: chooseMovePos === 'min' && isDrag ? 2 : 1\n },\n onMouseDown: e => {\n this.foundation.onHandleDown(e, 'min');\n },\n onMouseEnter: () => {\n this.foundation.onHandleEnter('min');\n },\n onTouchStart: e => {\n this.foundation.onHandleTouchStart(e, 'min');\n },\n onMouseLeave: () => {\n this.foundation.onHandleLeave();\n },\n onMouseUp: e => {\n this.foundation.onHandleUp(e);\n },\n onKeyUp: e => {\n this.foundation.onHandleUp(e);\n },\n onTouchEnd: e => {\n this.foundation.onHandleUp(e);\n },\n onKeyDown: e => {\n this.foundation.handleKeyDown(e, 'min');\n },\n onFocus: e => {\n this.foundation.onFocus(e, 'min');\n },\n onBlur: e => {\n this.foundation.onBlur(e, 'min');\n },\n role: \"slider\",\n \"aria-valuetext\": getAriaValueText ? getAriaValueText(currentValue, 0) : ariaValueText,\n tabIndex: disabled ? -1 : 0\n }, commonAria, {\n \"aria-valuenow\": currentValue,\n \"aria-valuemax\": max,\n \"aria-valuemin\": min\n }), this.props.handleDot && /*#__PURE__*/React.createElement(\"div\", {\n className: cssClasses.HANDLE_DOT,\n style: Object.assign(Object.assign({}, ((_a = this.props.handleDot) === null || _a === void 0 ? void 0 : _a.size) ? {\n width: this.props.handleDot.size,\n height: this.props.handleDot.size\n } : {}), ((_b = this.props.handleDot) === null || _b === void 0 ? void 0 : _b.color) ? {\n backgroundColor: this.props.handleDot.color\n } : {})\n }))) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Tooltip, {\n content: tipChildren.min,\n position: \"top\",\n trigger: \"custom\",\n rePosKey: minPercent,\n visible: isInRenderTree && (tipVisible.min || firstDotFocusVisible),\n className: `${cssClasses.HANDLE}-tooltip`\n }, /*#__PURE__*/React.createElement(\"span\", Object.assign({\n ref: this.minHanleEl,\n className: minClass,\n style: {\n [stylePos]: `${minPercent * 100}%`,\n zIndex: chooseMovePos === 'min' ? 2 : 1\n },\n onMouseDown: e => {\n this.foundation.onHandleDown(e, 'min');\n },\n onMouseEnter: () => {\n this.foundation.onHandleEnter('min');\n },\n onTouchStart: e => {\n this.foundation.onHandleTouchStart(e, 'min');\n },\n onMouseLeave: () => {\n this.foundation.onHandleLeave();\n },\n onMouseUp: e => {\n this.foundation.onHandleUp(e);\n },\n onKeyUp: e => {\n this.foundation.onHandleUp(e);\n },\n onTouchEnd: e => {\n this.foundation.onHandleUp(e);\n },\n onKeyDown: e => {\n this.foundation.handleKeyDown(e, 'min');\n },\n onFocus: e => {\n this.foundation.onFocus(e, 'min');\n },\n onBlur: e => {\n this.foundation.onBlur(e, 'min');\n },\n role: \"slider\",\n tabIndex: disabled ? -1 : 0\n }, commonAria, {\n \"aria-valuetext\": getAriaValueText ? getAriaValueText(currentValue[0], 0) : ariaValueText,\n \"aria-valuenow\": currentValue[0],\n \"aria-valuemax\": currentValue[1],\n \"aria-valuemin\": min\n }), ((_c = this.props.handleDot) === null || _c === void 0 ? void 0 : _c[0]) && /*#__PURE__*/React.createElement(\"div\", {\n className: cssClasses.HANDLE_DOT,\n style: Object.assign(Object.assign({}, ((_d = this.props.handleDot[0]) === null || _d === void 0 ? void 0 : _d.size) ? {\n width: this.props.handleDot[0].size,\n height: this.props.handleDot[0].size\n } : {}), ((_e = this.props.handleDot[0]) === null || _e === void 0 ? void 0 : _e.color) ? {\n backgroundColor: this.props.handleDot[0].color\n } : {})\n }))), /*#__PURE__*/React.createElement(Tooltip, {\n content: tipChildren.max,\n position: \"top\",\n trigger: \"custom\",\n rePosKey: maxPercent,\n visible: isInRenderTree && (tipVisible.max || secondDotFocusVisible),\n className: `${cssClasses.HANDLE}-tooltip`\n }, /*#__PURE__*/React.createElement(\"span\", Object.assign({\n ref: this.maxHanleEl,\n className: maxClass,\n style: {\n [stylePos]: `${maxPercent * 100}%`,\n zIndex: chooseMovePos === 'max' ? 2 : 1\n },\n onMouseDown: e => {\n this.foundation.onHandleDown(e, 'max');\n },\n onMouseEnter: () => {\n this.foundation.onHandleEnter('max');\n },\n onMouseLeave: () => {\n this.foundation.onHandleLeave();\n },\n onMouseUp: e => {\n this.foundation.onHandleUp(e);\n },\n onKeyUp: e => {\n this.foundation.onHandleUp(e);\n },\n onTouchStart: e => {\n this.foundation.onHandleTouchStart(e, 'max');\n },\n onTouchEnd: e => {\n this.foundation.onHandleUp(e);\n },\n onKeyDown: e => {\n this.foundation.handleKeyDown(e, 'max');\n },\n onFocus: e => {\n this.foundation.onFocus(e, 'max');\n },\n onBlur: e => {\n this.foundation.onBlur(e, 'max');\n },\n role: \"slider\",\n tabIndex: disabled ? -1 : 0\n }, commonAria, {\n \"aria-valuetext\": getAriaValueText ? getAriaValueText(currentValue[1], 1) : ariaValueText,\n \"aria-valuenow\": currentValue[1],\n \"aria-valuemax\": max,\n \"aria-valuemin\": currentValue[0]\n }), ((_f = this.props.handleDot) === null || _f === void 0 ? void 0 : _f[1]) && /*#__PURE__*/React.createElement(\"div\", {\n className: cssClasses.HANDLE_DOT,\n style: Object.assign(Object.assign({}, ((_g = this.props.handleDot[1]) === null || _g === void 0 ? void 0 : _g.size) ? {\n width: this.props.handleDot[1].size,\n height: this.props.handleDot[1].size\n } : {}), ((_h = this.props.handleDot[1]) === null || _h === void 0 ? void 0 : _h.color) ? {\n backgroundColor: this.props.handleDot[1].color\n } : {})\n }))));\n return handleContents;\n };\n this.renderTrack = () => {\n const {\n range,\n included,\n vertical\n } = this.props;\n const percentInfo = this.foundation.getMinAndMaxPercent(this.state.currentValue);\n const minPercent = percentInfo.min;\n const maxPercent = percentInfo.max;\n let trackStyle = !vertical ? {\n width: range ? `${(maxPercent - minPercent) * 100}%` : `${minPercent * 100}%`,\n left: range ? `${minPercent * 100}%` : 0\n } : {\n height: range ? `${(maxPercent - minPercent) * 100}%` : `${minPercent * 100}%`,\n top: range ? `${minPercent * 100}%` : 0\n };\n trackStyle = included ? trackStyle : {};\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n React.createElement(\"div\", {\n className: cssClasses.TRACK,\n style: trackStyle,\n onClick: this.foundation.handleWrapClick\n })\n );\n };\n this.renderStepDot = () => {\n const {\n min,\n max,\n vertical,\n marks\n } = this.props;\n const stylePos = vertical ? 'top' : 'left';\n const labelContent = marks && Object.keys(marks).length > 0 ? /*#__PURE__*/React.createElement(\"div\", {\n className: cssClasses.DOTS\n }, Object.keys(marks).map(mark => {\n const activeResult = this.foundation.isMarkActive(Number(mark));\n const markClass = cls(`${prefixCls}-dot`, {\n [`${prefixCls}-dot-active`]: this.foundation.isMarkActive(Number(mark)) === 'active'\n });\n const markPercent = (Number(mark) - min) / (max - min);\n const dotDOM =\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n React.createElement(\"span\", {\n key: mark,\n onClick: this.foundation.handleWrapClick,\n className: markClass,\n style: {\n [stylePos]: `calc(${markPercent * 100}% - 2px)`\n }\n });\n return activeResult ? this.props.tooltipOnMark ? /*#__PURE__*/React.createElement(Tooltip, {\n content: marks[mark]\n }, dotDOM) : dotDOM : null;\n })) : null;\n return labelContent;\n };\n this.renderLabel = () => {\n if (!this.props.showMarkLabel) {\n return null;\n }\n const {\n min,\n max,\n vertical,\n marks,\n verticalReverse\n } = this.props;\n const stylePos = vertical ? 'top' : 'left';\n const labelContent = marks && Object.keys(marks).length > 0 ? /*#__PURE__*/React.createElement(\"div\", {\n className: cssClasses.MARKS + (vertical && verticalReverse ? '-reverse' : '')\n }, Object.keys(marks).map(mark => {\n const activeResult = this.foundation.isMarkActive(Number(mark));\n const markPercent = (Number(mark) - min) / (max - min);\n return activeResult ?\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n React.createElement(\"span\", {\n key: mark,\n className: cls(`${prefixCls}-mark${vertical && verticalReverse ? '-reverse' : ''}`),\n style: {\n [stylePos]: `${markPercent * 100}%`\n },\n onClick: this.foundation.handleWrapClick\n }, marks[mark]) : null;\n })) : null;\n return labelContent;\n };\n this._getAriaValueText = (value, index) => {\n const {\n getAriaValueText\n } = this.props;\n return getAriaValueText ? getAriaValueText(value, index) : value;\n };\n let {\n value\n } = this.props;\n if (!value) {\n value = this.props.defaultValue;\n }\n this.state = {\n currentValue: value ? value : this.props.range ? [0, 0] : 0,\n min: this.props.min || 0,\n max: this.props.max || 0,\n focusPos: '',\n onChange: this.props.onChange,\n disabled: this.props.disabled || false,\n chooseMovePos: '',\n isDrag: false,\n clickValue: 0,\n showBoundary: false,\n isInRenderTree: true,\n firstDotFocusVisible: false,\n secondDotFocusVisible: false\n };\n this.sliderEl = /*#__PURE__*/React.createRef();\n this.minHanleEl = /*#__PURE__*/React.createRef();\n this.maxHanleEl = /*#__PURE__*/React.createRef();\n this.dragging = [false, false];\n this.foundation = new SliderFoundation(this.adapter);\n this.eventListenerSet = new Set();\n }\n get adapter() {\n var _this = this;\n return Object.assign(Object.assign({}, super.adapter), {\n getSliderLengths: () => {\n if (this.sliderEl && this.sliderEl.current) {\n const rect = this.sliderEl.current.getBoundingClientRect();\n const offset = {\n x: this.sliderEl.current.offsetLeft,\n y: this.sliderEl.current.offsetTop\n };\n return {\n sliderX: offset.x,\n sliderY: offset.y,\n sliderWidth: rect.width,\n sliderHeight: rect.height\n };\n }\n return {\n sliderX: 0,\n sliderY: 0,\n sliderWidth: 0,\n sliderHeight: 0\n };\n },\n getParentRect: () => {\n const parentObj = this.sliderEl && this.sliderEl.current && this.sliderEl.current.offsetParent;\n if (!parentObj) {\n return undefined;\n }\n return parentObj.getBoundingClientRect();\n },\n getScrollParentVal: () => {\n const scrollParent = this.foundation.getScrollParent(this.sliderEl.current);\n return {\n scrollTop: scrollParent.scrollTop,\n scrollLeft: scrollParent.scrollLeft\n };\n },\n isEventFromHandle: e => {\n const handles = [this.minHanleEl, this.maxHanleEl];\n let flag = false;\n handles.forEach(handle => {\n if (!handle) {\n return;\n }\n const handleInstance = handle && handle.current;\n const handleDom = ReactDOM.findDOMNode(handleInstance);\n if (handleDom && handleDom.contains(e.target)) {\n flag = true;\n }\n });\n return flag;\n },\n getOverallVars: () => ({\n dragging: this.dragging\n }),\n updateDisabled: disabled => {\n this.setState({\n disabled\n });\n },\n transNewPropsToState(stateObj) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _noop;\n this.setState(stateObj, callback);\n },\n notifyChange: cbValue => this.props.onChange(cbValue),\n setDragging: value => {\n this.dragging = value;\n },\n updateCurrentValue: value => {\n const {\n currentValue\n } = this.state;\n if (value !== currentValue) {\n this.setState({\n currentValue: value\n });\n }\n },\n setOverallVars: (key, value) => {\n this[key] = value;\n },\n getMinHandleEl: () => this.minHanleEl.current,\n getMaxHandleEl: () => this.maxHanleEl.current,\n onHandleDown: e => {\n this._addEventListener(document.body, 'mousemove', this.foundation.onHandleMove, false);\n this._addEventListener(window, 'mouseup', this.foundation.onHandleUp, false);\n this._addEventListener(document.body, 'touchmove', this.foundation.onHandleTouchMove, false);\n },\n onHandleMove: function (mousePos, isMin) {\n let stateChangeCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _noop;\n let clickTrack = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n let outPutValue = arguments.length > 4 ? arguments[4] : undefined;\n const sliderDOMIsInRenderTree = _this.foundation.checkAndUpdateIsInRenderTreeState();\n if (!sliderDOMIsInRenderTree) {\n return;\n }\n const {\n value\n } = _this.props;\n let finalOutPutValue = outPutValue;\n if (finalOutPutValue === undefined) {\n const moveValue = _this.foundation.transPosToValue(mousePos, isMin);\n if (moveValue === false) {\n return;\n }\n finalOutPutValue = _this.foundation.outPutValue(moveValue);\n }\n const {\n currentValue\n } = _this.state;\n if (!_isEqual(_this.foundation.outPutValue(currentValue), finalOutPutValue)) {\n if (!clickTrack && _this.foundation.valueFormatIsCorrect(value)) {\n // still require afterChangeCallback when click on the track directly, need skip here\n return false;\n }\n _this.setState({\n currentValue: finalOutPutValue\n }, stateChangeCallback);\n }\n },\n setEventDefault: e => {\n e.stopPropagation();\n e.preventDefault();\n },\n setStateVal: (name, val) => {\n this.setState({\n [name]: val\n });\n },\n checkAndUpdateIsInRenderTreeState: () => {\n const sliderDOMIsInRenderTree = domIsInRenderTree(this.sliderEl.current);\n if (sliderDOMIsInRenderTree !== this.state.isInRenderTree) {\n this.setState({\n isInRenderTree: sliderDOMIsInRenderTree\n });\n }\n return sliderDOMIsInRenderTree;\n },\n onHandleEnter: pos => {\n this.setState({\n focusPos: pos\n });\n },\n onHandleLeave: () => {\n this.setState({\n focusPos: ''\n });\n },\n onHandleUpBefore: e => {\n var _a, _b;\n (_b = (_a = this.props).onMouseUp) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n e.stopPropagation();\n e.preventDefault();\n document.body.removeEventListener('mousemove', this.foundation.onHandleMove, false);\n document.body.removeEventListener('mouseup', this.foundation.onHandleUp, false);\n },\n onHandleUpAfter: () => {\n const {\n currentValue\n } = this.state;\n const value = this.foundation.outPutValue(currentValue);\n this.props.onAfterChange(value);\n },\n unSubscribeEventListener: () => {\n Array.from(this.eventListenerSet).forEach(clear => clear());\n }\n });\n }\n componentDidMount() {\n this.foundation.init();\n }\n componentDidUpdate(prevProps, prevState) {\n const hasPropValueChange = !_isEqual(this.props.value, prevProps.value);\n const hasPropDisabledChange = this.props.disabled !== prevProps.disabled;\n if (hasPropDisabledChange) {\n this.foundation.handleDisabledChange(this.props.disabled);\n }\n if (hasPropValueChange) {\n const nextValue = this.props.value;\n const prevValue = this.state.currentValue;\n this.foundation.handleValueChange(prevValue, nextValue);\n // trigger onAfterChange when value is controlled and changed\n this.props.onAfterChange(this.props.value);\n }\n }\n componentWillUnmount() {\n this.foundation.destroy();\n }\n render() {\n const {\n disabled,\n currentValue,\n min,\n max\n } = this.state;\n const _a = this.props,\n {\n vertical,\n verticalReverse,\n style,\n railStyle,\n range,\n className\n } = _a,\n rest = __rest(_a, [\"vertical\", \"verticalReverse\", \"style\", \"railStyle\", \"range\", \"className\"]);\n const wrapperClass = cls(`${prefixCls}-wrapper`, {\n [`${prefixCls}-disabled`]: disabled,\n [`${cssClasses.VERTICAL}-wrapper`]: vertical,\n [`${prefixCls}-reverse`]: vertical && verticalReverse\n }, className);\n const boundaryClass = cls(`${prefixCls}-boundary`, {\n [`${prefixCls}-boundary-show`]: this.props.showBoundary && this.state.showBoundary\n });\n const sliderCls = cls({\n [`${prefixCls}`]: !vertical,\n [cssClasses.VERTICAL]: vertical\n });\n const ariaLabel = range ? `Range: ${this._getAriaValueText(currentValue[0], 0)} to ${this._getAriaValueText(currentValue[1], 1)}` : undefined;\n const slider = /*#__PURE__*/React.createElement(\"div\", Object.assign({\n className: wrapperClass,\n style: style,\n ref: this.sliderEl,\n \"aria-label\": ariaLabel,\n onMouseEnter: () => this.foundation.handleWrapperEnter(),\n onMouseLeave: () => this.foundation.handleWrapperLeave()\n }, this.getDataAttr(rest)), /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-rail`,\n onClick: this.foundation.handleWrapClick,\n style: railStyle\n }), this.renderTrack(), this.renderStepDot(), /*#__PURE__*/React.createElement(\"div\", null, this.renderHandle()), this.renderLabel(), /*#__PURE__*/React.createElement(\"div\", {\n className: boundaryClass\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-boundary-min`\n }, min), /*#__PURE__*/React.createElement(\"span\", {\n className: `${prefixCls}-boundary-max`\n }, max)));\n if (!vertical) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: sliderCls\n }, slider);\n }\n return slider;\n }\n _addEventListener(target, eventName, callback) {\n if (target.addEventListener) {\n for (var _len = arguments.length, rests = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rests[_key - 3] = arguments[_key];\n }\n target.addEventListener(eventName, callback, ...rests);\n const clearSelf = () => {\n target === null || target === void 0 ? void 0 : target.removeEventListener(eventName, callback);\n Promise.resolve().then(() => {\n this.eventListenerSet.delete(clearSelf);\n });\n };\n this.eventListenerSet.add(clearSelf);\n return clearSelf;\n } else {\n return _noop;\n }\n }\n}\nSlider.propTypes = {\n // allowClear: PropTypes.bool,\n defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.array]),\n disabled: PropTypes.bool,\n showMarkLabel: PropTypes.bool,\n included: PropTypes.bool,\n marks: PropTypes.object,\n max: PropTypes.number,\n min: PropTypes.number,\n range: PropTypes.bool,\n step: PropTypes.number,\n tipFormatter: PropTypes.func,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.array]),\n vertical: PropTypes.bool,\n onAfterChange: PropTypes.func,\n onChange: PropTypes.func,\n onMouseUp: PropTypes.func,\n tooltipOnMark: PropTypes.bool,\n tooltipVisible: PropTypes.bool,\n showArrow: PropTypes.bool,\n style: PropTypes.object,\n className: PropTypes.string,\n showBoundary: PropTypes.bool,\n railStyle: PropTypes.object,\n verticalReverse: PropTypes.bool,\n getAriaValueText: PropTypes.func,\n handleDot: PropTypes.oneOfType([PropTypes.shape({\n size: PropTypes.string,\n color: PropTypes.string\n }), PropTypes.arrayOf(PropTypes.shape({\n size: PropTypes.string,\n color: PropTypes.string\n }))])\n};\nSlider.defaultProps = {\n // allowClear: false,\n disabled: false,\n showMarkLabel: true,\n tooltipOnMark: false,\n included: true,\n max: 100,\n min: 0,\n range: false,\n showArrow: true,\n step: 1,\n tipFormatter: value => value,\n vertical: false,\n showBoundary: false,\n onAfterChange: value => {\n // console.log(value);\n },\n onChange: value => {\n // console.log(value);\n },\n verticalReverse: false\n};","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport isNullOrUndefined from '@douyinfe/semi-foundation/lib/es/utils/isNullOrUndefined';\nlet _id = -1;\nfunction Icon() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n id: propsId,\n className\n } = props,\n rest = __rest(props, [\"id\", \"className\"]);\n let _propsId = propsId;\n if (isNullOrUndefined(_propsId)) {\n _id++;\n _propsId = _id;\n }\n const id = `linearGradient-${_propsId}`;\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({}, rest, {\n className: className,\n width: \"48\",\n height: \"48\",\n viewBox: \"0 0 36 36\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-hidden\": true,\n \"data-icon\": \"spin\"\n }), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n x1: \"0%\",\n y1: \"100%\",\n x2: \"100%\",\n y2: \"100%\",\n id: id\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"currentColor\",\n stopOpacity: \"0\",\n offset: \"0%\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"currentColor\",\n stopOpacity: \"0.50\",\n offset: \"39.9430698%\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"currentColor\",\n offset: \"100%\"\n }))), /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n fillOpacity: \"0.01\",\n fill: \"none\",\n x: \"0\",\n y: \"0\",\n width: \"36\",\n height: \"36\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34,18 C34,9.163444 26.836556,2 18,2 C11.6597233,2 6.18078805,5.68784135 3.59122325,11.0354951\",\n stroke: `url(#${id})`,\n strokeWidth: \"4\",\n strokeLinecap: \"round\"\n })));\n}\nexport default Icon;","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cls from 'classnames';\nimport BaseComponent from '../_base/baseComponent';\nimport { cssClasses as css, strings } from '@douyinfe/semi-foundation/lib/es/spin/constants';\nimport SpinFoundation from '@douyinfe/semi-foundation/lib/es/spin/foundation';\nimport SpinIcon from './icon';\nimport '@douyinfe/semi-foundation/lib/es/spin/spin.css';\nconst prefixCls = css.PREFIX;\nclass Spin extends BaseComponent {\n constructor(props) {\n super(props);\n this.foundation = new SpinFoundation(this.adapter);\n this.state = {\n delay: props.delay,\n loading: true\n };\n }\n static getDerivedStateFromProps(props) {\n if (!props.delay) {\n return {\n loading: props.spinning\n };\n }\n if (props.spinning === false) {\n return {\n delay: 0,\n loading: false\n };\n }\n return {\n delay: props.delay\n };\n }\n get adapter() {\n return Object.assign(Object.assign({}, super.adapter), {\n setLoading: value => {\n this.setState({\n loading: value\n });\n }\n });\n }\n componentWillUnmount() {\n this.foundation.destroy();\n }\n renderSpin() {\n const {\n indicator,\n tip\n } = this.props;\n const {\n loading\n } = this.state;\n return loading ? /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-wrapper`\n }, indicator ? /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-animate`,\n \"x-semi-prop\": \"indicator\"\n }, indicator) : /*#__PURE__*/React.createElement(SpinIcon, null), tip ? /*#__PURE__*/React.createElement(\"div\", {\n \"x-semi-prop\": \"tip\"\n }, tip) : null) : null;\n }\n render() {\n this.foundation.updateLoadingIfNeedDelay();\n const _a = this.props,\n {\n children,\n style,\n wrapperClassName,\n childStyle,\n size\n } = _a,\n rest = __rest(_a, [\"children\", \"style\", \"wrapperClassName\", \"childStyle\", \"size\"]);\n const {\n loading\n } = this.state;\n const spinCls = cls(prefixCls, wrapperClassName, {\n [`${prefixCls}-${size}`]: size,\n [`${prefixCls}-block`]: children,\n [`${prefixCls}-hidden`]: !loading\n });\n return /*#__PURE__*/React.createElement(\"div\", Object.assign({\n className: spinCls,\n style: style\n }, this.getDataAttr(rest)), this.renderSpin(), /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-children`,\n style: childStyle,\n \"x-semi-prop\": \"children\"\n }, children));\n }\n}\nSpin.propTypes = {\n size: PropTypes.oneOf(strings.SIZE),\n spinning: PropTypes.bool,\n children: PropTypes.node,\n indicator: PropTypes.node,\n delay: PropTypes.number,\n tip: PropTypes.node,\n wrapperClassName: PropTypes.string,\n childStyle: PropTypes.object,\n style: PropTypes.object\n};\nSpin.defaultProps = {\n size: 'middle',\n spinning: true,\n children: null,\n indicator: null,\n delay: 0\n};\nexport default Spin;","import PropTypes from 'prop-types';\nexport default PropTypes.shape({\n offsetX: PropTypes.number,\n offsetY: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number\n});","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nconst TriangleArrow = props => {\n const {\n className,\n style\n } = props,\n restProps = __rest(props, [\"className\", \"style\"]);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n \"aria-hidden\": true,\n className: className,\n style: style\n }, restProps, {\n width: \"24\",\n height: \"7\",\n viewBox: \"0 0 24 7\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 0V1C20 1 18.5 2 16.5 4C14.5 6 14 7 12 7C10 7 9.5 6 7.5 4C5.5 2 4 1 0 1V0H24Z\"\n }));\n};\nexport default TriangleArrow;","var __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nconst TriangleArrowVertical = props => {\n const {\n className,\n style\n } = props,\n restProps = __rest(props, [\"className\", \"style\"]);\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n \"aria-hidden\": true,\n className: className,\n style: style\n }, restProps, {\n width: \"7\",\n height: \"24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"currentColor\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0L1 0C1 4, 2 5.5, 4 7.5S7,10 7,12S6 14.5, 4 16.5S1,20 1,24L0 24L0 0z\"\n }));\n};\nexport default TriangleArrowVertical;","import _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _each from \"lodash/each\";\nimport _omit from \"lodash/omit\";\nimport _get from \"lodash/get\";\nimport _noop from \"lodash/noop\";\nimport _throttle from \"lodash/throttle\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { isValidElement, cloneElement } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { BASE_CLASS_PREFIX } from '@douyinfe/semi-foundation/lib/es/base/constants';\nimport warning from '@douyinfe/semi-foundation/lib/es/utils/warning';\nimport Event from '@douyinfe/semi-foundation/lib/es/utils/Event';\nimport { convertDOMRectToObject } from '@douyinfe/semi-foundation/lib/es/utils/dom';\nimport TooltipFoundation from '@douyinfe/semi-foundation/lib/es/tooltip/foundation';\nimport { strings, cssClasses, numbers } from '@douyinfe/semi-foundation/lib/es/tooltip/constants';\nimport { getUuidShort } from '@douyinfe/semi-foundation/lib/es/utils/uuid';\nimport '@douyinfe/semi-foundation/lib/es/tooltip/tooltip.css';\nimport BaseComponent from '../_base/baseComponent';\nimport { isHTMLElement } from '../_base/reactUtils';\nimport { getActiveElement, getDefaultPropsFromGlobalConfig, getFocusableElements, stopPropagation } from '../_utils';\nimport Portal from '../_portal/index';\nimport ConfigContext from '../configProvider/context';\nimport TriangleArrow from './TriangleArrow';\nimport TriangleArrowVertical from './TriangleArrowVertical';\nimport ArrowBoundingShape from './ArrowBoundingShape';\nimport CSSAnimation from \"../_cssAnimation\";\nconst prefix = cssClasses.PREFIX;\nconst positionSet = strings.POSITION_SET;\nconst triggerSet = strings.TRIGGER_SET;\nconst blockDisplays = ['flex', 'block', 'table', 'flow-root', 'grid'];\nconst defaultGetContainer = () => document.body;\nexport default class Tooltip extends BaseComponent {\n constructor(props) {\n super(props);\n this.setContainerEl = node => this.containerEl = {\n current: node\n };\n this.isSpecial = elem => {\n if (isHTMLElement(elem)) {\n return Boolean(elem.disabled);\n } else if ( /*#__PURE__*/isValidElement(elem)) {\n const disabled = _get(elem, 'props.disabled');\n if (disabled) {\n return strings.STATUS_DISABLED;\n }\n const loading = _get(elem, 'props.loading');\n /* Only judge the loading state of the Button, and no longer judge other components */\n const isButton = !_isEmpty(elem) && !_isEmpty(elem.type) && (_get(elem, 'type.elementType') === 'Button' || _get(elem, 'type.elementType') === 'IconButton');\n if (loading && isButton) {\n return strings.STATUS_LOADING;\n }\n }\n return false;\n };\n // willEnter = () => {\n // this.foundation.calcPosition();\n // this.setState({ visible: true });\n // };\n this.didLeave = () => {\n if (this.props.keepDOM) {\n this.foundation.setDisplayNone(true);\n } else {\n this.foundation.removePortal();\n }\n this.foundation.unBindEvent();\n };\n this.renderIcon = () => {\n const {\n placement\n } = this.state;\n const {\n showArrow,\n prefixCls,\n style\n } = this.props;\n let icon = null;\n const triangleCls = classNames([`${prefixCls}-icon-arrow`]);\n const bgColor = _get(style, 'backgroundColor');\n const iconComponent = placement.includes('left') || placement.includes('right') ? /*#__PURE__*/React.createElement(TriangleArrowVertical, null) : /*#__PURE__*/React.createElement(TriangleArrow, null);\n if (showArrow) {\n if ( /*#__PURE__*/isValidElement(showArrow)) {\n icon = showArrow;\n } else {\n icon = /*#__PURE__*/React.cloneElement(iconComponent, {\n className: triangleCls,\n style: {\n color: bgColor,\n fill: 'currentColor'\n }\n });\n }\n }\n return icon;\n };\n this.handlePortalInnerClick = e => {\n if (this.props.clickToHide) {\n this.foundation.hide();\n }\n if (this.props.stopPropagation) {\n stopPropagation(e);\n }\n };\n this.handlePortalMouseDown = e => {\n if (this.props.stopPropagation) {\n stopPropagation(e);\n }\n };\n this.handlePortalFocus = e => {\n if (this.props.stopPropagation) {\n stopPropagation(e);\n }\n };\n this.handlePortalBlur = e => {\n if (this.props.stopPropagation) {\n stopPropagation(e);\n }\n };\n this.handlePortalInnerKeyDown = e => {\n this.foundation.handleContainerKeydown(e);\n };\n this.renderContentNode = content => {\n const contentProps = {\n initialFocusRef: this.initialFocusRef\n };\n return !_isFunction(content) ? content : content(contentProps);\n };\n this.renderPortal = () => {\n const {\n containerStyle = {},\n visible,\n portalEventSet,\n placement,\n displayNone,\n transitionState,\n id,\n isPositionUpdated\n } = this.state;\n const {\n prefixCls,\n content,\n showArrow,\n style,\n motion,\n role,\n zIndex\n } = this.props;\n const contentNode = this.renderContentNode(content);\n const {\n className: propClassName\n } = this.props;\n const direction = this.context.direction;\n const className = classNames(propClassName, {\n [`${prefixCls}-wrapper`]: true,\n [`${prefixCls}-wrapper-show`]: visible,\n [`${prefixCls}-with-arrow`]: Boolean(showArrow),\n [`${prefixCls}-rtl`]: direction === 'rtl'\n });\n const icon = this.renderIcon();\n const portalInnerStyle = _omit(containerStyle, motion ? ['transformOrigin'] : undefined);\n const transformOrigin = _get(containerStyle, 'transformOrigin');\n const userOpacity = _get(style, 'opacity', null);\n const opacity = userOpacity ? userOpacity : 1;\n const inner = /*#__PURE__*/React.createElement(CSSAnimation, {\n fillMode: \"forwards\",\n animationState: transitionState,\n motion: motion && isPositionUpdated,\n startClassName: transitionState === 'enter' ? `${prefix}-animation-show` : `${prefix}-animation-hide`,\n onAnimationEnd: () => {\n var _a, _b;\n if (transitionState === 'leave') {\n this.didLeave();\n (_b = (_a = this.props).afterClose) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }\n }, _ref => {\n let {\n animationStyle,\n animationClassName,\n animationEventsNeedBind\n } = _ref;\n return /*#__PURE__*/React.createElement(\"div\", Object.assign({\n className: classNames(className, animationClassName),\n style: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, animationStyle), displayNone ? {\n display: \"none\"\n } : {}), {\n transformOrigin\n }), style), userOpacity ? {\n opacity: isPositionUpdated ? opacity : \"0\"\n } : {})\n }, portalEventSet, animationEventsNeedBind, {\n role: role,\n \"x-placement\": placement,\n id: id\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefix}-content`\n }, contentNode), icon);\n });\n return /*#__PURE__*/React.createElement(Portal, {\n getPopupContainer: this.props.getPopupContainer,\n style: {\n zIndex\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n // listen keyboard event, don't move tabIndex -1\n tabIndex: -1,\n className: `${BASE_CLASS_PREFIX}-portal-inner`,\n style: portalInnerStyle,\n ref: this.setContainerEl,\n onClick: this.handlePortalInnerClick,\n onFocus: this.handlePortalFocus,\n onBlur: this.handlePortalBlur,\n onMouseDown: this.handlePortalMouseDown,\n onKeyDown: this.handlePortalInnerKeyDown\n }, inner));\n };\n this.wrapSpan = elem => {\n const {\n wrapperClassName\n } = this.props;\n const display = _get(elem, 'props.style.display');\n const block = _get(elem, 'props.block');\n const isStringElem = typeof elem == 'string';\n const style = {};\n if (!isStringElem) {\n style.display = 'inline-block';\n }\n if (block || blockDisplays.includes(display)) {\n style.width = '100%';\n }\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n return /*#__PURE__*/React.createElement(\"span\", {\n className: wrapperClassName,\n style: style\n }, elem);\n };\n this.mergeEvents = (rawEvents, events) => {\n const mergedEvents = {};\n _each(events, (handler, key) => {\n if (typeof handler === 'function') {\n mergedEvents[key] = function () {\n handler(...arguments);\n if (rawEvents && typeof rawEvents[key] === 'function') {\n rawEvents[key](...arguments);\n }\n };\n }\n });\n return mergedEvents;\n };\n this.getPopupId = () => {\n return this.state.id;\n };\n this.state = {\n visible: false,\n /**\n *\n * Note: The transitionState parameter is equivalent to isInsert\n */\n transitionState: '',\n triggerEventSet: {},\n portalEventSet: {},\n containerStyle: {\n // zIndex: props.zIndex,\n },\n isInsert: false,\n placement: props.position || 'top',\n transitionStyle: {},\n isPositionUpdated: false,\n id: props.wrapperId,\n displayNone: false\n };\n this.foundation = new TooltipFoundation(this.adapter);\n this.eventManager = new Event();\n this.triggerEl = /*#__PURE__*/React.createRef();\n this.containerEl = /*#__PURE__*/React.createRef();\n this.initialFocusRef = /*#__PURE__*/React.createRef();\n this.clickOutsideHandler = null;\n this.resizeHandler = null;\n this.isWrapped = false; // Identifies whether a span element is wrapped\n this.containerPosition = undefined;\n }\n get adapter() {\n var _this = this;\n return Object.assign(Object.assign({}, super.adapter), {\n // @ts-ignore\n on: function () {\n return _this.eventManager.on(...arguments);\n },\n // @ts-ignore\n off: function () {\n return _this.eventManager.off(...arguments);\n },\n insertPortal: (content, _a) => {\n var {\n position\n } = _a,\n containerStyle = __rest(_a, [\"position\"]);\n this.setState({\n isInsert: true,\n transitionState: 'enter',\n containerStyle: Object.assign(Object.assign({}, this.state.containerStyle), containerStyle)\n }, () => {\n setTimeout(() => {\n // waiting child component mounted\n this.eventManager.emit('portalInserted');\n }, 0);\n });\n },\n removePortal: () => {\n this.setState({\n isInsert: false,\n isPositionUpdated: false\n });\n },\n getEventName: () => ({\n mouseEnter: 'onMouseEnter',\n mouseLeave: 'onMouseLeave',\n mouseOut: 'onMouseOut',\n mouseOver: 'onMouseOver',\n click: 'onClick',\n focus: 'onFocus',\n blur: 'onBlur',\n keydown: 'onKeyDown',\n contextMenu: 'onContextMenu'\n }),\n registerTriggerEvent: triggerEventSet => {\n this.setState({\n triggerEventSet\n });\n },\n registerPortalEvent: portalEventSet => {\n this.setState({\n portalEventSet\n });\n },\n getTriggerBounding: () => {\n // It may be a React component or an html element\n // There is no guarantee that triggerE l.current can get the real dom, so call findDOMNode to ensure that you can get the real dom\n const triggerDOM = this.adapter.getTriggerNode();\n this.triggerEl.current = triggerDOM;\n return triggerDOM && triggerDOM.getBoundingClientRect();\n },\n // Gets the outer size of the specified container\n getPopupContainerRect: () => {\n const container = this.getPopupContainer();\n let rect = null;\n if (container && isHTMLElement(container)) {\n const boundingRect = convertDOMRectToObject(container.getBoundingClientRect());\n rect = Object.assign(Object.assign({}, boundingRect), {\n scrollLeft: container.scrollLeft,\n scrollTop: container.scrollTop\n });\n }\n return rect;\n },\n containerIsBody: () => {\n const container = this.getPopupContainer();\n return container === document.body;\n },\n containerIsRelative: () => {\n const container = this.getPopupContainer();\n const computedStyle = window.getComputedStyle(container);\n return computedStyle.getPropertyValue('position') === 'relative';\n },\n containerIsRelativeOrAbsolute: () => ['relative', 'absolute'].includes(this.containerPosition),\n // Get the size of the pop-up layer\n getWrapperBounding: () => {\n const el = this.containerEl && this.containerEl.current;\n return el && el.getBoundingClientRect();\n },\n getDocumentElementBounding: () => document.documentElement.getBoundingClientRect(),\n setPosition: _a => {\n var {\n position\n } = _a,\n style = __rest(_a, [\"position\"]);\n this.setState({\n containerStyle: Object.assign(Object.assign({}, this.state.containerStyle), style),\n placement: position,\n isPositionUpdated: true\n }, () => {\n this.eventManager.emit('positionUpdated');\n });\n },\n setDisplayNone: (displayNone, cb) => {\n this.setState({\n displayNone\n }, cb);\n },\n updatePlacementAttr: placement => {\n this.setState({\n placement\n });\n },\n togglePortalVisible: (visible, cb) => {\n const willUpdateStates = {};\n willUpdateStates.transitionState = visible ? 'enter' : 'leave';\n willUpdateStates.visible = visible;\n this.mounted && this.setState(willUpdateStates, () => {\n cb();\n });\n },\n registerClickOutsideHandler: cb => {\n if (this.clickOutsideHandler) {\n this.adapter.unregisterClickOutsideHandler();\n }\n this.clickOutsideHandler = e => {\n if (!this.mounted) {\n return false;\n }\n let el = this.triggerEl && this.triggerEl.current;\n let popupEl = this.containerEl && this.containerEl.current;\n el = ReactDOM.findDOMNode(el);\n popupEl = ReactDOM.findDOMNode(popupEl);\n if (el && !el.contains(e.target) && popupEl && !popupEl.contains(e.target) || this.props.clickTriggerToHide && el && el.contains(e.target)) {\n this.props.onClickOutSide(e);\n cb();\n }\n };\n window.addEventListener('mousedown', this.clickOutsideHandler);\n },\n unregisterClickOutsideHandler: () => {\n if (this.clickOutsideHandler) {\n window.removeEventListener('mousedown', this.clickOutsideHandler);\n this.clickOutsideHandler = null;\n }\n },\n registerResizeHandler: cb => {\n if (this.resizeHandler) {\n this.adapter.unregisterResizeHandler();\n }\n this.resizeHandler = _throttle(e => {\n if (!this.mounted) {\n return false;\n }\n cb(e);\n }, 10);\n window.addEventListener('resize', this.resizeHandler, false);\n },\n unregisterResizeHandler: () => {\n if (this.resizeHandler) {\n window.removeEventListener('resize', this.resizeHandler, false);\n this.resizeHandler = null;\n }\n },\n notifyVisibleChange: visible => {\n this.props.onVisibleChange(visible);\n },\n registerScrollHandler: rePositionCb => {\n if (this.scrollHandler) {\n this.adapter.unregisterScrollHandler();\n }\n this.scrollHandler = _throttle(e => {\n if (!this.mounted) {\n return false;\n }\n const triggerDOM = this.adapter.getTriggerNode();\n const isRelativeScroll = e.target.contains(triggerDOM);\n if (isRelativeScroll) {\n const scrollPos = {\n x: e.target.scrollLeft,\n y: e.target.scrollTop\n };\n rePositionCb(scrollPos);\n }\n }, 10); // When it is greater than 16ms, it will be very obvious\n window.addEventListener('scroll', this.scrollHandler, true);\n },\n unregisterScrollHandler: () => {\n if (this.scrollHandler) {\n window.removeEventListener('scroll', this.scrollHandler, true);\n this.scrollHandler = null;\n }\n },\n canMotion: () => Boolean(this.props.motion),\n updateContainerPosition: () => {\n const container = this.getPopupContainer();\n if (container && isHTMLElement(container)) {\n // getComputedStyle need first parameter is Element type\n const computedStyle = window.getComputedStyle(container);\n const position = computedStyle.getPropertyValue('position');\n this.containerPosition = position;\n }\n },\n getContainerPosition: () => this.containerPosition,\n getContainer: () => this.containerEl && this.containerEl.current,\n getTriggerNode: () => {\n let triggerDOM = this.triggerEl.current;\n if (!isHTMLElement(this.triggerEl.current)) {\n triggerDOM = ReactDOM.findDOMNode(this.triggerEl.current);\n }\n return triggerDOM;\n },\n getFocusableElements: node => {\n return getFocusableElements(node);\n },\n getActiveElement: () => {\n return getActiveElement();\n },\n setInitialFocus: () => {\n const {\n preventScroll\n } = this.props;\n const focusRefNode = _get(this, 'initialFocusRef.current');\n if (focusRefNode && 'focus' in focusRefNode) {\n focusRefNode.focus({\n preventScroll\n });\n }\n },\n notifyEscKeydown: event => {\n this.props.onEscKeyDown(event);\n },\n setId: () => {\n this.setState({\n id: getUuidShort()\n });\n }\n });\n }\n componentDidMount() {\n this.mounted = true;\n this.getPopupContainer = this.props.getPopupContainer || this.context.getPopupContainer || defaultGetContainer;\n this.foundation.init();\n }\n componentWillUnmount() {\n this.mounted = false;\n this.foundation.destroy();\n }\n /**\n * focus on tooltip trigger\n */\n focusTrigger() {\n this.foundation.focusTrigger();\n }\n /** for transition - end */\n rePosition() {\n return this.foundation.calcPosition();\n }\n componentDidUpdate(prevProps, prevState) {\n warning(this.props.mouseLeaveDelay < this.props.mouseEnterDelay, \"[Semi Tooltip] 'mouseLeaveDelay' cannot be less than 'mouseEnterDelay', which may cause the dropdown layer to not be hidden.\");\n if (prevProps.visible !== this.props.visible) {\n if (['hover', 'focus'].includes(this.props.trigger)) {\n this.props.visible ? this.foundation.delayShow() : this.foundation.delayHide();\n } else {\n this.props.visible ? this.foundation.show() : this.foundation.hide();\n }\n }\n if (!_isEqual(prevProps.rePosKey, this.props.rePosKey)) {\n this.rePosition();\n }\n }\n render() {\n const {\n isInsert,\n triggerEventSet,\n visible,\n id\n } = this.state;\n const {\n wrapWhenSpecial,\n role,\n trigger\n } = this.props;\n let {\n children\n } = this.props;\n const childrenStyle = Object.assign({}, _get(children, 'props.style'));\n const extraStyle = {};\n if (wrapWhenSpecial) {\n const isSpecial = this.isSpecial(children);\n if (isSpecial) {\n childrenStyle.pointerEvents = 'none';\n if (isSpecial === strings.STATUS_DISABLED) {\n extraStyle.cursor = 'not-allowed';\n }\n children = /*#__PURE__*/cloneElement(children, {\n style: childrenStyle\n });\n if (trigger !== 'custom') {\n // no need to wrap span when trigger is custom, cause it don't need bind event\n children = this.wrapSpan(children);\n }\n this.isWrapped = true;\n } else if (! /*#__PURE__*/isValidElement(children)) {\n children = this.wrapSpan(children);\n this.isWrapped = true;\n }\n }\n let ariaAttribute = {};\n // Take effect when used by Popover component\n if (role === 'dialog') {\n ariaAttribute['aria-expanded'] = visible ? 'true' : 'false';\n ariaAttribute['aria-haspopup'] = 'dialog';\n ariaAttribute['aria-controls'] = id;\n } else {\n ariaAttribute['aria-describedby'] = id;\n }\n // The incoming children is a single valid element, otherwise wrap a layer with span\n const newChild = /*#__PURE__*/React.cloneElement(children, Object.assign(Object.assign(Object.assign(Object.assign({}, ariaAttribute), children.props), this.mergeEvents(children.props, triggerEventSet)), {\n style: Object.assign(Object.assign({}, _get(children, 'props.style')), extraStyle),\n className: classNames(_get(children, 'props.className')),\n // to maintain refs with callback\n ref: node => {\n // Keep your own reference\n this.triggerEl.current = node;\n // Call the original ref, if any\n const {\n ref\n } = children;\n // this.log('tooltip render() - get ref', ref);\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref && typeof ref === 'object') {\n ref.current = node;\n }\n },\n tabIndex: children.props.tabIndex || 0,\n 'data-popupid': id\n }));\n // If you do not add a layer of div, in order to bind the events and className in the tooltip, you need to cloneElement children, but this time it may overwrite the children's original ref reference\n // So if the user adds ref to the content, you need to use callback ref: https://github.com/facebook/react/issues/8873\n return /*#__PURE__*/React.createElement(React.Fragment, null, isInsert ? this.renderPortal() : null, newChild);\n }\n}\nTooltip.contextType = ConfigContext;\nTooltip.propTypes = {\n children: PropTypes.node,\n motion: PropTypes.bool,\n autoAdjustOverflow: PropTypes.bool,\n position: PropTypes.oneOf(positionSet),\n getPopupContainer: PropTypes.func,\n mouseEnterDelay: PropTypes.number,\n mouseLeaveDelay: PropTypes.number,\n trigger: PropTypes.oneOf(triggerSet).isRequired,\n className: PropTypes.string,\n wrapperClassName: PropTypes.string,\n clickToHide: PropTypes.bool,\n // used with trigger === hover, private\n clickTriggerToHide: PropTypes.bool,\n visible: PropTypes.bool,\n style: PropTypes.object,\n content: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n prefixCls: PropTypes.string,\n onVisibleChange: PropTypes.func,\n onClickOutSide: PropTypes.func,\n spacing: PropTypes.oneOfType([PropTypes.number, PropTypes.object]),\n margin: PropTypes.oneOfType([PropTypes.number, PropTypes.object]),\n showArrow: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\n zIndex: PropTypes.number,\n rePosKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n arrowBounding: ArrowBoundingShape,\n transformFromCenter: PropTypes.bool,\n arrowPointAtCenter: PropTypes.bool,\n stopPropagation: PropTypes.bool,\n // private\n role: PropTypes.string,\n wrapWhenSpecial: PropTypes.bool,\n guardFocus: PropTypes.bool,\n returnFocusOnClose: PropTypes.bool,\n preventScroll: PropTypes.bool,\n keepDOM: PropTypes.bool\n};\nTooltip.__SemiComponentName__ = \"Tooltip\";\nTooltip.defaultProps = getDefaultPropsFromGlobalConfig(Tooltip.__SemiComponentName__, {\n arrowBounding: numbers.ARROW_BOUNDING,\n autoAdjustOverflow: true,\n arrowPointAtCenter: true,\n trigger: 'hover',\n transformFromCenter: true,\n position: 'top',\n prefixCls: prefix,\n role: 'tooltip',\n mouseEnterDelay: numbers.MOUSE_ENTER_DELAY,\n mouseLeaveDelay: numbers.MOUSE_LEAVE_DELAY,\n motion: true,\n onVisibleChange: _noop,\n onClickOutSide: _noop,\n spacing: numbers.SPACING,\n margin: numbers.MARGIN,\n showArrow: true,\n wrapWhenSpecial: true,\n zIndex: numbers.DEFAULT_Z_INDEX,\n closeOnEsc: false,\n guardFocus: false,\n returnFocusOnClose: false,\n onEscKeyDown: _noop,\n disableFocusListener: false,\n disableArrowKeyDown: false,\n keepDOM: false\n});","//\n// Main\n//\nexport default function memoize(fn, options) {\n var cache = options && options.cache ? options.cache : cacheDefault;\n var serializer = options && options.serializer ? options.serializer : serializerDefault;\n var strategy = options && options.strategy ? options.strategy : strategyDefault;\n return strategy(fn, {\n cache: cache,\n serializer: serializer,\n });\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n return (value == null || typeof value === 'number' || typeof value === 'boolean'); // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\nfunction monadic(fn, cache, serializer, arg) {\n var cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.call(this, arg);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n var args = Array.prototype.slice.call(arguments, 3);\n var cacheKey = serializer(args);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.apply(this, args);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n return strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n var strategy = fn.length === 1 ? monadic : variadic;\n return assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n return assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n return assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nvar serializerDefault = function () {\n return JSON.stringify(arguments);\n};\n//\n// Cache\n//\nfunction ObjectWithoutPrototypeCache() {\n this.cache = Object.create(null);\n}\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n return this.cache[key];\n};\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n this.cache[key] = value;\n};\nvar cacheDefault = {\n create: function create() {\n // @ts-ignore\n return new ObjectWithoutPrototypeCache();\n },\n};\nexport var strategies = {\n variadic: strategyVariadic,\n monadic: strategyMonadic,\n};\n","import { timeData } from './time-data.generated';\n/**\n * Returns the best matching date time pattern if a date time skeleton\n * pattern is provided with a locale. Follows the Unicode specification:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#table-mapping-requested-time-skeletons-to-patterns\n * @param skeleton date time skeleton pattern that possibly includes j, J or C\n * @param locale\n */\nexport function getBestPattern(skeleton, locale) {\n var skeletonCopy = '';\n for (var patternPos = 0; patternPos < skeleton.length; patternPos++) {\n var patternChar = skeleton.charAt(patternPos);\n if (patternChar === 'j') {\n var extraLength = 0;\n while (patternPos + 1 < skeleton.length &&\n skeleton.charAt(patternPos + 1) === patternChar) {\n extraLength++;\n patternPos++;\n }\n var hourLen = 1 + (extraLength & 1);\n var dayPeriodLen = extraLength < 2 ? 1 : 3 + (extraLength >> 1);\n var dayPeriodChar = 'a';\n var hourChar = getDefaultHourSymbolFromLocale(locale);\n if (hourChar == 'H' || hourChar == 'k') {\n dayPeriodLen = 0;\n }\n while (dayPeriodLen-- > 0) {\n skeletonCopy += dayPeriodChar;\n }\n while (hourLen-- > 0) {\n skeletonCopy = hourChar + skeletonCopy;\n }\n }\n else if (patternChar === 'J') {\n skeletonCopy += 'H';\n }\n else {\n skeletonCopy += patternChar;\n }\n }\n return skeletonCopy;\n}\n/**\n * Maps the [hour cycle type](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/hourCycle)\n * of the given `locale` to the corresponding time pattern.\n * @param locale\n */\nfunction getDefaultHourSymbolFromLocale(locale) {\n var hourCycle = locale.hourCycle;\n if (hourCycle === undefined &&\n // @ts-ignore hourCycle(s) is not identified yet\n locale.hourCycles &&\n // @ts-ignore\n locale.hourCycles.length) {\n // @ts-ignore\n hourCycle = locale.hourCycles[0];\n }\n if (hourCycle) {\n switch (hourCycle) {\n case 'h24':\n return 'k';\n case 'h23':\n return 'H';\n case 'h12':\n return 'h';\n case 'h11':\n return 'K';\n default:\n throw new Error('Invalid hourCycle');\n }\n }\n // TODO: Once hourCycle is fully supported remove the following with data generation\n var languageTag = locale.language;\n var regionTag;\n if (languageTag !== 'root') {\n regionTag = locale.maximize().region;\n }\n var hourCycles = timeData[regionTag || ''] ||\n timeData[languageTag || ''] ||\n timeData[\"\".concat(languageTag, \"-001\")] ||\n timeData['001'];\n return hourCycles[0];\n}\n","export var ErrorKind;\n(function (ErrorKind) {\n /** Argument is unclosed (e.g. `{0`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n /** Argument is empty (e.g. `{}`). */\n ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n /** Argument is malformed (e.g. `{foo!}``) */\n ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n /** Expect an argument type (e.g. `{foo,}`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n /** Unsupported argument type (e.g. `{foo,foo}`) */\n ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n /** Expect an argument style (e.g. `{foo, number, }`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n /** The number skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n /** The date time skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n /** Missing select argument options (e.g. `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n /**\n * Expecting a message fragment after the `plural` or `selectordinal` selector\n * (e.g. `{foo, plural, one}`)\n */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n /**\n * Duplicate selectors in `plural` or `selectordinal` argument.\n * (e.g. {foo, plural, one {#} one {#}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n /** Duplicate selectors in `select` argument.\n * (e.g. {foo, select, apple {apple} apple {apple}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n /** Plural or select argument option must have `other` clause. */\n ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n /** The tag is malformed. (e.g. `foo) */\n ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n /** The tag name is invalid. (e.g. `<123>foo`) */\n ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n /** The closing tag does not match the opening tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n /** The opening tag has unmatched closing tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));\n","import { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { Parser } from './parser';\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement, } from './types';\nfunction pruneLocation(els) {\n els.forEach(function (el) {\n delete el.location;\n if (isSelectElement(el) || isPluralElement(el)) {\n for (var k in el.options) {\n delete el.options[k].location;\n pruneLocation(el.options[k].value);\n }\n }\n else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n delete el.style.location;\n }\n else if ((isDateElement(el) || isTimeElement(el)) &&\n isDateTimeSkeleton(el.style)) {\n delete el.style.location;\n }\n else if (isTagElement(el)) {\n pruneLocation(el.children);\n }\n });\n}\nexport function parse(message, opts) {\n if (opts === void 0) { opts = {}; }\n opts = __assign({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);\n var result = new Parser(message, opts).parse();\n if (result.err) {\n var error = SyntaxError(ErrorKind[result.err.kind]);\n // @ts-expect-error Assign to error object\n error.location = result.err.location;\n // @ts-expect-error Assign to error object\n error.originalMessage = result.err.message;\n throw error;\n }\n if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n pruneLocation(result.val);\n }\n return result.val;\n}\nexport * from './types';\n","var _a;\nimport { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { SPACE_SEPARATOR_REGEX } from './regex.generated';\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton, } from '@formatjs/icu-skeleton-parser';\nimport { getBestPattern } from './date-time-pattern-generator';\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\".concat(SPACE_SEPARATOR_REGEX.source, \"*\"));\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(\"\".concat(SPACE_SEPARATOR_REGEX.source, \"*$\"));\nfunction createLocation(start, end) {\n return { start: start, end: end };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith;\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger\n ? Number.isSafeInteger\n : function (n) {\n return (typeof n === 'number' &&\n isFinite(n) &&\n Math.floor(n) === n &&\n Math.abs(n) <= 0x1fffffffffffff);\n };\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n /**\n * legacy Edge or Xbox One browser\n * Unicode flag support: supported\n * Pattern_Syntax support: not supported\n * See https://github.com/formatjs/formatjs/issues/2822\n */\n REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n}\ncatch (_) {\n REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith\n ? // Native\n function startsWith(s, search, position) {\n return s.startsWith(search, position);\n }\n : // For IE11\n function startsWith(s, search, position) {\n return s.slice(position, position + search.length) === search;\n };\nvar fromCodePoint = hasNativeFromCodePoint\n ? String.fromCodePoint\n : // IE11\n function fromCodePoint() {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n var elements = '';\n var length = codePoints.length;\n var i = 0;\n var code;\n while (length > i) {\n code = codePoints[i++];\n if (code > 0x10ffff)\n throw RangeError(code + ' is not a valid code point');\n elements +=\n code < 0x10000\n ? String.fromCharCode(code)\n : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);\n }\n return elements;\n };\nvar fromEntries = \n// native\nhasNativeFromEntries\n ? Object.fromEntries\n : // Ponyfill\n function fromEntries(entries) {\n var obj = {};\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _a = entries_1[_i], k = _a[0], v = _a[1];\n obj[k] = v;\n }\n return obj;\n };\nvar codePointAt = hasNativeCodePointAt\n ? // Native\n function codePointAt(s, index) {\n return s.codePointAt(index);\n }\n : // IE 11\n function codePointAt(s, index) {\n var size = s.length;\n if (index < 0 || index >= size) {\n return undefined;\n }\n var first = s.charCodeAt(index);\n var second;\n return first < 0xd800 ||\n first > 0xdbff ||\n index + 1 === size ||\n (second = s.charCodeAt(index + 1)) < 0xdc00 ||\n second > 0xdfff\n ? first\n : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;\n };\nvar trimStart = hasTrimStart\n ? // Native\n function trimStart(s) {\n return s.trimStart();\n }\n : // Ponyfill\n function trimStart(s) {\n return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n };\nvar trimEnd = hasTrimEnd\n ? // Native\n function trimEnd(s) {\n return s.trimEnd();\n }\n : // Ponyfill\n function trimEnd(s) {\n return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n };\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n // Native\n var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var _a;\n IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n };\n}\nelse {\n // IE11\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var match = [];\n while (true) {\n var c = codePointAt(s, index);\n if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n break;\n }\n match.push(c);\n index += c >= 0x10000 ? 2 : 1;\n }\n return fromCodePoint.apply(void 0, match);\n };\n}\nvar Parser = /** @class */ (function () {\n function Parser(message, options) {\n if (options === void 0) { options = {}; }\n this.message = message;\n this.position = { offset: 0, line: 1, column: 1 };\n this.ignoreTag = !!options.ignoreTag;\n this.locale = options.locale;\n this.requiresOtherClause = !!options.requiresOtherClause;\n this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n }\n Parser.prototype.parse = function () {\n if (this.offset() !== 0) {\n throw Error('parser can only be used once');\n }\n return this.parseMessage(0, '', false);\n };\n Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n var elements = [];\n while (!this.isEOF()) {\n var char = this.char();\n if (char === 123 /* `{` */) {\n var result = this.parseArgument(nestingLevel, expectingCloseTag);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else if (char === 125 /* `}` */ && nestingLevel > 0) {\n break;\n }\n else if (char === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n var position = this.clonePosition();\n this.bump();\n elements.push({\n type: TYPE.pound,\n location: createLocation(position, this.clonePosition()),\n });\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n this.peek() === 47 // char code for '/'\n ) {\n if (expectingCloseTag) {\n break;\n }\n else {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n }\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n _isAlpha(this.peek() || 0)) {\n var result = this.parseTag(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else {\n var result = this.parseLiteral(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n }\n return { val: elements, err: null };\n };\n /**\n * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n * are accepted:\n *\n * ```\n * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"\"\n * tagName ::= [a-z] (PENChar)*\n * PENChar ::=\n * \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * ```\n *\n * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n * since other tag-based engines like React allow it\n */\n Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n var startPosition = this.clonePosition();\n this.bump(); // `<`\n var tagName = this.parseTagName();\n this.bumpSpace();\n if (this.bumpIf('/>')) {\n // Self closing tag\n return {\n val: {\n type: TYPE.literal,\n value: \"<\".concat(tagName, \"/>\"),\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else if (this.bumpIf('>')) {\n var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n if (childrenResult.err) {\n return childrenResult;\n }\n var children = childrenResult.val;\n // Expecting a close tag\n var endTagStartPosition = this.clonePosition();\n if (this.bumpIf('')) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n return {\n val: {\n type: TYPE.tag,\n value: tagName,\n children: children,\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else {\n return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n }\n }\n else {\n return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n }\n };\n /**\n * This method assumes that the caller has peeked ahead for the first tag character.\n */\n Parser.prototype.parseTagName = function () {\n var startOffset = this.offset();\n this.bump(); // the first tag name character\n while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n this.bump();\n }\n return this.message.slice(startOffset, this.offset());\n };\n Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n var start = this.clonePosition();\n var value = '';\n while (true) {\n var parseQuoteResult = this.tryParseQuote(parentArgType);\n if (parseQuoteResult) {\n value += parseQuoteResult;\n continue;\n }\n var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n if (parseUnquotedResult) {\n value += parseUnquotedResult;\n continue;\n }\n var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n if (parseLeftAngleResult) {\n value += parseLeftAngleResult;\n continue;\n }\n break;\n }\n var location = createLocation(start, this.clonePosition());\n return {\n val: { type: TYPE.literal, value: value, location: location },\n err: null,\n };\n };\n Parser.prototype.tryParseLeftAngleBracket = function () {\n if (!this.isEOF() &&\n this.char() === 60 /* `<` */ &&\n (this.ignoreTag ||\n // If at the opening tag or closing tag position, bail.\n !_isAlphaOrSlash(this.peek() || 0))) {\n this.bump(); // `<`\n return '<';\n }\n return null;\n };\n /**\n * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n * a character that requires quoting (that is, \"only where needed\"), and works the same in\n * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n */\n Parser.prototype.tryParseQuote = function (parentArgType) {\n if (this.isEOF() || this.char() !== 39 /* `'` */) {\n return null;\n }\n // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n // Check if is valid escaped character\n switch (this.peek()) {\n case 39 /* `'` */:\n // double quote, should return as a single quote.\n this.bump();\n this.bump();\n return \"'\";\n // '{', '<', '>', '}'\n case 123:\n case 60:\n case 62:\n case 125:\n break;\n case 35: // '#'\n if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n break;\n }\n return null;\n default:\n return null;\n }\n this.bump(); // apostrophe\n var codePoints = [this.char()]; // escaped char\n this.bump();\n // read chars until the optional closing apostrophe is found\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch === 39 /* `'` */) {\n if (this.peek() === 39 /* `'` */) {\n codePoints.push(39);\n // Bump one more time because we need to skip 2 characters.\n this.bump();\n }\n else {\n // Optional closing apostrophe.\n this.bump();\n break;\n }\n }\n else {\n codePoints.push(ch);\n }\n this.bump();\n }\n return fromCodePoint.apply(void 0, codePoints);\n };\n Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n if (this.isEOF()) {\n return null;\n }\n var ch = this.char();\n if (ch === 60 /* `<` */ ||\n ch === 123 /* `{` */ ||\n (ch === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||\n (ch === 125 /* `}` */ && nestingLevel > 0)) {\n return null;\n }\n else {\n this.bump();\n return fromCodePoint(ch);\n }\n };\n Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n var openingBracePosition = this.clonePosition();\n this.bump(); // `{`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n if (this.char() === 125 /* `}` */) {\n this.bump();\n return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n // argument name\n var value = this.parseIdentifierIfPossible().value;\n if (!value) {\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n switch (this.char()) {\n // Simple argument: `{name}`\n case 125 /* `}` */: {\n this.bump(); // `}`\n return {\n val: {\n type: TYPE.argument,\n // value does not include the opening and closing braces.\n value: value,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n err: null,\n };\n }\n // Argument with options: `{name, format, ...}`\n case 44 /* `,` */: {\n this.bump(); // `,`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n }\n default:\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n };\n /**\n * Advance the parser until the end of the identifier, if it is currently on\n * an identifier character. Return an empty string otherwise.\n */\n Parser.prototype.parseIdentifierIfPossible = function () {\n var startingPosition = this.clonePosition();\n var startOffset = this.offset();\n var value = matchIdentifierAtIndex(this.message, startOffset);\n var endOffset = startOffset + value.length;\n this.bumpTo(endOffset);\n var endPosition = this.clonePosition();\n var location = createLocation(startingPosition, endPosition);\n return { value: value, location: location };\n };\n Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n var _a;\n // Parse this range:\n // {name, type, style}\n // ^---^\n var typeStartPosition = this.clonePosition();\n var argType = this.parseIdentifierIfPossible().value;\n var typeEndPosition = this.clonePosition();\n switch (argType) {\n case '':\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n case 'number':\n case 'date':\n case 'time': {\n // Parse this range:\n // {name, number, style}\n // ^-------^\n this.bumpSpace();\n var styleAndLocation = null;\n if (this.bumpIf(',')) {\n this.bumpSpace();\n var styleStartPosition = this.clonePosition();\n var result = this.parseSimpleArgStyleIfPossible();\n if (result.err) {\n return result;\n }\n var style = trimEnd(result.val);\n if (style.length === 0) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n styleAndLocation = { style: style, styleLocation: styleLocation };\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_1 = createLocation(openingBracePosition, this.clonePosition());\n // Extract style or skeleton\n if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n // Skeleton starts with `::`.\n var skeleton = trimStart(styleAndLocation.style.slice(2));\n if (argType === 'number') {\n var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n if (result.err) {\n return result;\n }\n return {\n val: { type: TYPE.number, value: value, location: location_1, style: result.val },\n err: null,\n };\n }\n else {\n if (skeleton.length === 0) {\n return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n }\n var dateTimePattern = skeleton;\n // Get \"best match\" pattern only if locale is passed, if not, let it\n // pass as-is where `parseDateTimeSkeleton()` will throw an error\n // for unsupported patterns.\n if (this.locale) {\n dateTimePattern = getBestPattern(skeleton, this.locale);\n }\n var style = {\n type: SKELETON_TYPE.dateTime,\n pattern: dateTimePattern,\n location: styleAndLocation.styleLocation,\n parsedOptions: this.shouldParseSkeletons\n ? parseDateTimeSkeleton(dateTimePattern)\n : {},\n };\n var type = argType === 'date' ? TYPE.date : TYPE.time;\n return {\n val: { type: type, value: value, location: location_1, style: style },\n err: null,\n };\n }\n }\n // Regular style or no style.\n return {\n val: {\n type: argType === 'number'\n ? TYPE.number\n : argType === 'date'\n ? TYPE.date\n : TYPE.time,\n value: value,\n location: location_1,\n style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,\n },\n err: null,\n };\n }\n case 'plural':\n case 'selectordinal':\n case 'select': {\n // Parse this range:\n // {name, plural, options}\n // ^---------^\n var typeEndPosition_1 = this.clonePosition();\n this.bumpSpace();\n if (!this.bumpIf(',')) {\n return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, __assign({}, typeEndPosition_1)));\n }\n this.bumpSpace();\n // Parse offset:\n // {name, plural, offset:1, options}\n // ^-----^\n //\n // or the first option:\n //\n // {name, plural, one {...} other {...}}\n // ^--^\n var identifierAndLocation = this.parseIdentifierIfPossible();\n var pluralOffset = 0;\n if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n if (!this.bumpIf(':')) {\n return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n this.bumpSpace();\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n if (result.err) {\n return result;\n }\n // Parse another identifier for option parsing\n this.bumpSpace();\n identifierAndLocation = this.parseIdentifierIfPossible();\n pluralOffset = result.val;\n }\n var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n if (optionsResult.err) {\n return optionsResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_2 = createLocation(openingBracePosition, this.clonePosition());\n if (argType === 'select') {\n return {\n val: {\n type: TYPE.select,\n value: value,\n options: fromEntries(optionsResult.val),\n location: location_2,\n },\n err: null,\n };\n }\n else {\n return {\n val: {\n type: TYPE.plural,\n value: value,\n options: fromEntries(optionsResult.val),\n offset: pluralOffset,\n pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n location: location_2,\n },\n err: null,\n };\n }\n }\n default:\n return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n }\n };\n Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n // Parse: {value, number, ::currency/GBP }\n //\n if (this.isEOF() || this.char() !== 125 /* `}` */) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bump(); // `}`\n return { val: true, err: null };\n };\n /**\n * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n */\n Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n var nestedBraces = 0;\n var startPosition = this.clonePosition();\n while (!this.isEOF()) {\n var ch = this.char();\n switch (ch) {\n case 39 /* `'` */: {\n // Treat apostrophe as quoting but include it in the style part.\n // Find the end of the quoted literal text.\n this.bump();\n var apostrophePosition = this.clonePosition();\n if (!this.bumpUntil(\"'\")) {\n return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n }\n this.bump();\n break;\n }\n case 123 /* `{` */: {\n nestedBraces += 1;\n this.bump();\n break;\n }\n case 125 /* `}` */: {\n if (nestedBraces > 0) {\n nestedBraces -= 1;\n }\n else {\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n }\n break;\n }\n default:\n this.bump();\n break;\n }\n }\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n };\n Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n var tokens = [];\n try {\n tokens = parseNumberSkeletonFromString(skeleton);\n }\n catch (e) {\n return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n }\n return {\n val: {\n type: SKELETON_TYPE.number,\n tokens: tokens,\n location: location,\n parsedOptions: this.shouldParseSkeletons\n ? parseNumberSkeleton(tokens)\n : {},\n },\n err: null,\n };\n };\n /**\n * @param nesting_level The current nesting level of messages.\n * This can be positive when parsing message fragment in select or plural argument options.\n * @param parent_arg_type The parent argument's type.\n * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n * the argument. It is a by-product of a previous parsing attempt.\n * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n * between a pair of opening and closing tags. The nested message will not parse beyond\n * the closing tag boundary.\n */\n Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n var _a;\n var hasOtherClause = false;\n var options = [];\n var parsedSelectors = new Set();\n var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;\n // Parse:\n // one {one apple}\n // ^--^\n while (true) {\n if (selector.length === 0) {\n var startPosition = this.clonePosition();\n if (parentArgType !== 'select' && this.bumpIf('=')) {\n // Try parse `={number}` selector\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n if (result.err) {\n return result;\n }\n selectorLocation = createLocation(startPosition, this.clonePosition());\n selector = this.message.slice(startPosition.offset, this.offset());\n }\n else {\n break;\n }\n }\n // Duplicate selector clauses\n if (parsedSelectors.has(selector)) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n }\n if (selector === 'other') {\n hasOtherClause = true;\n }\n // Parse:\n // one {one apple}\n // ^----------^\n this.bumpSpace();\n var openingBracePosition = this.clonePosition();\n if (!this.bumpIf('{')) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n if (fragmentResult.err) {\n return fragmentResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n options.push([\n selector,\n {\n value: fragmentResult.val,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n ]);\n // Keep track of the existing selectors\n parsedSelectors.add(selector);\n // Prep next selector clause.\n this.bumpSpace();\n (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);\n }\n if (options.length === 0) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n }\n if (this.requiresOtherClause && !hasOtherClause) {\n return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n return { val: options, err: null };\n };\n Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n var sign = 1;\n var startingPosition = this.clonePosition();\n if (this.bumpIf('+')) {\n }\n else if (this.bumpIf('-')) {\n sign = -1;\n }\n var hasDigits = false;\n var decimal = 0;\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n hasDigits = true;\n decimal = decimal * 10 + (ch - 48);\n this.bump();\n }\n else {\n break;\n }\n }\n var location = createLocation(startingPosition, this.clonePosition());\n if (!hasDigits) {\n return this.error(expectNumberError, location);\n }\n decimal *= sign;\n if (!isSafeInteger(decimal)) {\n return this.error(invalidNumberError, location);\n }\n return { val: decimal, err: null };\n };\n Parser.prototype.offset = function () {\n return this.position.offset;\n };\n Parser.prototype.isEOF = function () {\n return this.offset() === this.message.length;\n };\n Parser.prototype.clonePosition = function () {\n // This is much faster than `Object.assign` or spread.\n return {\n offset: this.position.offset,\n line: this.position.line,\n column: this.position.column,\n };\n };\n /**\n * Return the code point at the current position of the parser.\n * Throws if the index is out of bound.\n */\n Parser.prototype.char = function () {\n var offset = this.position.offset;\n if (offset >= this.message.length) {\n throw Error('out of bound');\n }\n var code = codePointAt(this.message, offset);\n if (code === undefined) {\n throw Error(\"Offset \".concat(offset, \" is at invalid UTF-16 code unit boundary\"));\n }\n return code;\n };\n Parser.prototype.error = function (kind, location) {\n return {\n val: null,\n err: {\n kind: kind,\n message: this.message,\n location: location,\n },\n };\n };\n /** Bump the parser to the next UTF-16 code unit. */\n Parser.prototype.bump = function () {\n if (this.isEOF()) {\n return;\n }\n var code = this.char();\n if (code === 10 /* '\\n' */) {\n this.position.line += 1;\n this.position.column = 1;\n this.position.offset += 1;\n }\n else {\n this.position.column += 1;\n // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n this.position.offset += code < 0x10000 ? 1 : 2;\n }\n };\n /**\n * If the substring starting at the current position of the parser has\n * the given prefix, then bump the parser to the character immediately\n * following the prefix and return true. Otherwise, don't bump the parser\n * and return false.\n */\n Parser.prototype.bumpIf = function (prefix) {\n if (startsWith(this.message, prefix, this.offset())) {\n for (var i = 0; i < prefix.length; i++) {\n this.bump();\n }\n return true;\n }\n return false;\n };\n /**\n * Bump the parser until the pattern character is found and return `true`.\n * Otherwise bump to the end of the file and return `false`.\n */\n Parser.prototype.bumpUntil = function (pattern) {\n var currentOffset = this.offset();\n var index = this.message.indexOf(pattern, currentOffset);\n if (index >= 0) {\n this.bumpTo(index);\n return true;\n }\n else {\n this.bumpTo(this.message.length);\n return false;\n }\n };\n /**\n * Bump the parser to the target offset.\n * If target offset is beyond the end of the input, bump the parser to the end of the input.\n */\n Parser.prototype.bumpTo = function (targetOffset) {\n if (this.offset() > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" must be greater than or equal to the current offset \").concat(this.offset()));\n }\n targetOffset = Math.min(targetOffset, this.message.length);\n while (true) {\n var offset = this.offset();\n if (offset === targetOffset) {\n break;\n }\n if (offset > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" is at invalid UTF-16 code unit boundary\"));\n }\n this.bump();\n if (this.isEOF()) {\n break;\n }\n }\n };\n /** advance the parser through all whitespace to the next non-whitespace code unit. */\n Parser.prototype.bumpSpace = function () {\n while (!this.isEOF() && _isWhiteSpace(this.char())) {\n this.bump();\n }\n };\n /**\n * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n * If the input has been exhausted, then this returns null.\n */\n Parser.prototype.peek = function () {\n if (this.isEOF()) {\n return null;\n }\n var code = this.char();\n var offset = this.offset();\n var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n };\n return Parser;\n}());\nexport { Parser };\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n return ((codepoint >= 97 && codepoint <= 122) ||\n (codepoint >= 65 && codepoint <= 90));\n}\nfunction _isAlphaOrSlash(codepoint) {\n return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n return (c === 45 /* '-' */ ||\n c === 46 /* '.' */ ||\n (c >= 48 && c <= 57) /* 0..9 */ ||\n c === 95 /* '_' */ ||\n (c >= 97 && c <= 122) /** a..z */ ||\n (c >= 65 && c <= 90) /* A..Z */ ||\n c == 0xb7 ||\n (c >= 0xc0 && c <= 0xd6) ||\n (c >= 0xd8 && c <= 0xf6) ||\n (c >= 0xf8 && c <= 0x37d) ||\n (c >= 0x37f && c <= 0x1fff) ||\n (c >= 0x200c && c <= 0x200d) ||\n (c >= 0x203f && c <= 0x2040) ||\n (c >= 0x2070 && c <= 0x218f) ||\n (c >= 0x2c00 && c <= 0x2fef) ||\n (c >= 0x3001 && c <= 0xd7ff) ||\n (c >= 0xf900 && c <= 0xfdcf) ||\n (c >= 0xfdf0 && c <= 0xfffd) ||\n (c >= 0x10000 && c <= 0xeffff));\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n return ((c >= 0x0009 && c <= 0x000d) ||\n c === 0x0020 ||\n c === 0x0085 ||\n (c >= 0x200e && c <= 0x200f) ||\n c === 0x2028 ||\n c === 0x2029);\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n return ((c >= 0x0021 && c <= 0x0023) ||\n c === 0x0024 ||\n (c >= 0x0025 && c <= 0x0027) ||\n c === 0x0028 ||\n c === 0x0029 ||\n c === 0x002a ||\n c === 0x002b ||\n c === 0x002c ||\n c === 0x002d ||\n (c >= 0x002e && c <= 0x002f) ||\n (c >= 0x003a && c <= 0x003b) ||\n (c >= 0x003c && c <= 0x003e) ||\n (c >= 0x003f && c <= 0x0040) ||\n c === 0x005b ||\n c === 0x005c ||\n c === 0x005d ||\n c === 0x005e ||\n c === 0x0060 ||\n c === 0x007b ||\n c === 0x007c ||\n c === 0x007d ||\n c === 0x007e ||\n c === 0x00a1 ||\n (c >= 0x00a2 && c <= 0x00a5) ||\n c === 0x00a6 ||\n c === 0x00a7 ||\n c === 0x00a9 ||\n c === 0x00ab ||\n c === 0x00ac ||\n c === 0x00ae ||\n c === 0x00b0 ||\n c === 0x00b1 ||\n c === 0x00b6 ||\n c === 0x00bb ||\n c === 0x00bf ||\n c === 0x00d7 ||\n c === 0x00f7 ||\n (c >= 0x2010 && c <= 0x2015) ||\n (c >= 0x2016 && c <= 0x2017) ||\n c === 0x2018 ||\n c === 0x2019 ||\n c === 0x201a ||\n (c >= 0x201b && c <= 0x201c) ||\n c === 0x201d ||\n c === 0x201e ||\n c === 0x201f ||\n (c >= 0x2020 && c <= 0x2027) ||\n (c >= 0x2030 && c <= 0x2038) ||\n c === 0x2039 ||\n c === 0x203a ||\n (c >= 0x203b && c <= 0x203e) ||\n (c >= 0x2041 && c <= 0x2043) ||\n c === 0x2044 ||\n c === 0x2045 ||\n c === 0x2046 ||\n (c >= 0x2047 && c <= 0x2051) ||\n c === 0x2052 ||\n c === 0x2053 ||\n (c >= 0x2055 && c <= 0x205e) ||\n (c >= 0x2190 && c <= 0x2194) ||\n (c >= 0x2195 && c <= 0x2199) ||\n (c >= 0x219a && c <= 0x219b) ||\n (c >= 0x219c && c <= 0x219f) ||\n c === 0x21a0 ||\n (c >= 0x21a1 && c <= 0x21a2) ||\n c === 0x21a3 ||\n (c >= 0x21a4 && c <= 0x21a5) ||\n c === 0x21a6 ||\n (c >= 0x21a7 && c <= 0x21ad) ||\n c === 0x21ae ||\n (c >= 0x21af && c <= 0x21cd) ||\n (c >= 0x21ce && c <= 0x21cf) ||\n (c >= 0x21d0 && c <= 0x21d1) ||\n c === 0x21d2 ||\n c === 0x21d3 ||\n c === 0x21d4 ||\n (c >= 0x21d5 && c <= 0x21f3) ||\n (c >= 0x21f4 && c <= 0x22ff) ||\n (c >= 0x2300 && c <= 0x2307) ||\n c === 0x2308 ||\n c === 0x2309 ||\n c === 0x230a ||\n c === 0x230b ||\n (c >= 0x230c && c <= 0x231f) ||\n (c >= 0x2320 && c <= 0x2321) ||\n (c >= 0x2322 && c <= 0x2328) ||\n c === 0x2329 ||\n c === 0x232a ||\n (c >= 0x232b && c <= 0x237b) ||\n c === 0x237c ||\n (c >= 0x237d && c <= 0x239a) ||\n (c >= 0x239b && c <= 0x23b3) ||\n (c >= 0x23b4 && c <= 0x23db) ||\n (c >= 0x23dc && c <= 0x23e1) ||\n (c >= 0x23e2 && c <= 0x2426) ||\n (c >= 0x2427 && c <= 0x243f) ||\n (c >= 0x2440 && c <= 0x244a) ||\n (c >= 0x244b && c <= 0x245f) ||\n (c >= 0x2500 && c <= 0x25b6) ||\n c === 0x25b7 ||\n (c >= 0x25b8 && c <= 0x25c0) ||\n c === 0x25c1 ||\n (c >= 0x25c2 && c <= 0x25f7) ||\n (c >= 0x25f8 && c <= 0x25ff) ||\n (c >= 0x2600 && c <= 0x266e) ||\n c === 0x266f ||\n (c >= 0x2670 && c <= 0x2767) ||\n c === 0x2768 ||\n c === 0x2769 ||\n c === 0x276a ||\n c === 0x276b ||\n c === 0x276c ||\n c === 0x276d ||\n c === 0x276e ||\n c === 0x276f ||\n c === 0x2770 ||\n c === 0x2771 ||\n c === 0x2772 ||\n c === 0x2773 ||\n c === 0x2774 ||\n c === 0x2775 ||\n (c >= 0x2794 && c <= 0x27bf) ||\n (c >= 0x27c0 && c <= 0x27c4) ||\n c === 0x27c5 ||\n c === 0x27c6 ||\n (c >= 0x27c7 && c <= 0x27e5) ||\n c === 0x27e6 ||\n c === 0x27e7 ||\n c === 0x27e8 ||\n c === 0x27e9 ||\n c === 0x27ea ||\n c === 0x27eb ||\n c === 0x27ec ||\n c === 0x27ed ||\n c === 0x27ee ||\n c === 0x27ef ||\n (c >= 0x27f0 && c <= 0x27ff) ||\n (c >= 0x2800 && c <= 0x28ff) ||\n (c >= 0x2900 && c <= 0x2982) ||\n c === 0x2983 ||\n c === 0x2984 ||\n c === 0x2985 ||\n c === 0x2986 ||\n c === 0x2987 ||\n c === 0x2988 ||\n c === 0x2989 ||\n c === 0x298a ||\n c === 0x298b ||\n c === 0x298c ||\n c === 0x298d ||\n c === 0x298e ||\n c === 0x298f ||\n c === 0x2990 ||\n c === 0x2991 ||\n c === 0x2992 ||\n c === 0x2993 ||\n c === 0x2994 ||\n c === 0x2995 ||\n c === 0x2996 ||\n c === 0x2997 ||\n c === 0x2998 ||\n (c >= 0x2999 && c <= 0x29d7) ||\n c === 0x29d8 ||\n c === 0x29d9 ||\n c === 0x29da ||\n c === 0x29db ||\n (c >= 0x29dc && c <= 0x29fb) ||\n c === 0x29fc ||\n c === 0x29fd ||\n (c >= 0x29fe && c <= 0x2aff) ||\n (c >= 0x2b00 && c <= 0x2b2f) ||\n (c >= 0x2b30 && c <= 0x2b44) ||\n (c >= 0x2b45 && c <= 0x2b46) ||\n (c >= 0x2b47 && c <= 0x2b4c) ||\n (c >= 0x2b4d && c <= 0x2b73) ||\n (c >= 0x2b74 && c <= 0x2b75) ||\n (c >= 0x2b76 && c <= 0x2b95) ||\n c === 0x2b96 ||\n (c >= 0x2b97 && c <= 0x2bff) ||\n (c >= 0x2e00 && c <= 0x2e01) ||\n c === 0x2e02 ||\n c === 0x2e03 ||\n c === 0x2e04 ||\n c === 0x2e05 ||\n (c >= 0x2e06 && c <= 0x2e08) ||\n c === 0x2e09 ||\n c === 0x2e0a ||\n c === 0x2e0b ||\n c === 0x2e0c ||\n c === 0x2e0d ||\n (c >= 0x2e0e && c <= 0x2e16) ||\n c === 0x2e17 ||\n (c >= 0x2e18 && c <= 0x2e19) ||\n c === 0x2e1a ||\n c === 0x2e1b ||\n c === 0x2e1c ||\n c === 0x2e1d ||\n (c >= 0x2e1e && c <= 0x2e1f) ||\n c === 0x2e20 ||\n c === 0x2e21 ||\n c === 0x2e22 ||\n c === 0x2e23 ||\n c === 0x2e24 ||\n c === 0x2e25 ||\n c === 0x2e26 ||\n c === 0x2e27 ||\n c === 0x2e28 ||\n c === 0x2e29 ||\n (c >= 0x2e2a && c <= 0x2e2e) ||\n c === 0x2e2f ||\n (c >= 0x2e30 && c <= 0x2e39) ||\n (c >= 0x2e3a && c <= 0x2e3b) ||\n (c >= 0x2e3c && c <= 0x2e3f) ||\n c === 0x2e40 ||\n c === 0x2e41 ||\n c === 0x2e42 ||\n (c >= 0x2e43 && c <= 0x2e4f) ||\n (c >= 0x2e50 && c <= 0x2e51) ||\n c === 0x2e52 ||\n (c >= 0x2e53 && c <= 0x2e7f) ||\n (c >= 0x3001 && c <= 0x3003) ||\n c === 0x3008 ||\n c === 0x3009 ||\n c === 0x300a ||\n c === 0x300b ||\n c === 0x300c ||\n c === 0x300d ||\n c === 0x300e ||\n c === 0x300f ||\n c === 0x3010 ||\n c === 0x3011 ||\n (c >= 0x3012 && c <= 0x3013) ||\n c === 0x3014 ||\n c === 0x3015 ||\n c === 0x3016 ||\n c === 0x3017 ||\n c === 0x3018 ||\n c === 0x3019 ||\n c === 0x301a ||\n c === 0x301b ||\n c === 0x301c ||\n c === 0x301d ||\n (c >= 0x301e && c <= 0x301f) ||\n c === 0x3020 ||\n c === 0x3030 ||\n c === 0xfd3e ||\n c === 0xfd3f ||\n (c >= 0xfe45 && c <= 0xfe46));\n}\n","// @generated from regex-gen.ts\nexport var SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n","// @generated from time-data-gen.ts\n// prettier-ignore \nexport var timeData = {\n \"AX\": [\n \"H\"\n ],\n \"BQ\": [\n \"H\"\n ],\n \"CP\": [\n \"H\"\n ],\n \"CZ\": [\n \"H\"\n ],\n \"DK\": [\n \"H\"\n ],\n \"FI\": [\n \"H\"\n ],\n \"ID\": [\n \"H\"\n ],\n \"IS\": [\n \"H\"\n ],\n \"ML\": [\n \"H\"\n ],\n \"NE\": [\n \"H\"\n ],\n \"RU\": [\n \"H\"\n ],\n \"SE\": [\n \"H\"\n ],\n \"SJ\": [\n \"H\"\n ],\n \"SK\": [\n \"H\"\n ],\n \"AS\": [\n \"h\",\n \"H\"\n ],\n \"BT\": [\n \"h\",\n \"H\"\n ],\n \"DJ\": [\n \"h\",\n \"H\"\n ],\n \"ER\": [\n \"h\",\n \"H\"\n ],\n \"GH\": [\n \"h\",\n \"H\"\n ],\n \"IN\": [\n \"h\",\n \"H\"\n ],\n \"LS\": [\n \"h\",\n \"H\"\n ],\n \"PG\": [\n \"h\",\n \"H\"\n ],\n \"PW\": [\n \"h\",\n \"H\"\n ],\n \"SO\": [\n \"h\",\n \"H\"\n ],\n \"TO\": [\n \"h\",\n \"H\"\n ],\n \"VU\": [\n \"h\",\n \"H\"\n ],\n \"WS\": [\n \"h\",\n \"H\"\n ],\n \"001\": [\n \"H\",\n \"h\"\n ],\n \"AL\": [\n \"h\",\n \"H\",\n \"hB\"\n ],\n \"TD\": [\n \"h\",\n \"H\",\n \"hB\"\n ],\n \"ca-ES\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"CF\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"CM\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"fr-CA\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"gl-ES\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"it-CH\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"it-IT\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"LU\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"NP\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"PF\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"SC\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"SM\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"SN\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"TF\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"VA\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"CY\": [\n \"h\",\n \"H\",\n \"hb\",\n \"hB\"\n ],\n \"GR\": [\n \"h\",\n \"H\",\n \"hb\",\n \"hB\"\n ],\n \"CO\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"DO\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"KP\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"KR\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"NA\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"PA\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"PR\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"VE\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"AC\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"AI\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"BW\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"BZ\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CC\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CK\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CX\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"DG\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"FK\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"GB\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"GG\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"GI\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"IE\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"IM\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"IO\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"JE\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"LT\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"MK\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"MN\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"MS\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NF\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NG\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NR\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NU\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"PN\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"SH\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"SX\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"TA\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"ZA\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"af-ZA\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"AR\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"CL\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"CR\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"CU\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"EA\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-BO\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-BR\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-EC\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-ES\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-GQ\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-PE\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"GT\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"HN\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"IC\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"KG\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"KM\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"LK\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"MA\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"MX\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"NI\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"PY\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"SV\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"UY\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"JP\": [\n \"H\",\n \"h\",\n \"K\"\n ],\n \"AD\": [\n \"H\",\n \"hB\"\n ],\n \"AM\": [\n \"H\",\n \"hB\"\n ],\n \"AO\": [\n \"H\",\n \"hB\"\n ],\n \"AT\": [\n \"H\",\n \"hB\"\n ],\n \"AW\": [\n \"H\",\n \"hB\"\n ],\n \"BE\": [\n \"H\",\n \"hB\"\n ],\n \"BF\": [\n \"H\",\n \"hB\"\n ],\n \"BJ\": [\n \"H\",\n \"hB\"\n ],\n \"BL\": [\n \"H\",\n \"hB\"\n ],\n \"BR\": [\n \"H\",\n \"hB\"\n ],\n \"CG\": [\n \"H\",\n \"hB\"\n ],\n \"CI\": [\n \"H\",\n \"hB\"\n ],\n \"CV\": [\n \"H\",\n \"hB\"\n ],\n \"DE\": [\n \"H\",\n \"hB\"\n ],\n \"EE\": [\n \"H\",\n \"hB\"\n ],\n \"FR\": [\n \"H\",\n \"hB\"\n ],\n \"GA\": [\n \"H\",\n \"hB\"\n ],\n \"GF\": [\n \"H\",\n \"hB\"\n ],\n \"GN\": [\n \"H\",\n \"hB\"\n ],\n \"GP\": [\n \"H\",\n \"hB\"\n ],\n \"GW\": [\n \"H\",\n \"hB\"\n ],\n \"HR\": [\n \"H\",\n \"hB\"\n ],\n \"IL\": [\n \"H\",\n \"hB\"\n ],\n \"IT\": [\n \"H\",\n \"hB\"\n ],\n \"KZ\": [\n \"H\",\n \"hB\"\n ],\n \"MC\": [\n \"H\",\n \"hB\"\n ],\n \"MD\": [\n \"H\",\n \"hB\"\n ],\n \"MF\": [\n \"H\",\n \"hB\"\n ],\n \"MQ\": [\n \"H\",\n \"hB\"\n ],\n \"MZ\": [\n \"H\",\n \"hB\"\n ],\n \"NC\": [\n \"H\",\n \"hB\"\n ],\n \"NL\": [\n \"H\",\n \"hB\"\n ],\n \"PM\": [\n \"H\",\n \"hB\"\n ],\n \"PT\": [\n \"H\",\n \"hB\"\n ],\n \"RE\": [\n \"H\",\n \"hB\"\n ],\n \"RO\": [\n \"H\",\n \"hB\"\n ],\n \"SI\": [\n \"H\",\n \"hB\"\n ],\n \"SR\": [\n \"H\",\n \"hB\"\n ],\n \"ST\": [\n \"H\",\n \"hB\"\n ],\n \"TG\": [\n \"H\",\n \"hB\"\n ],\n \"TR\": [\n \"H\",\n \"hB\"\n ],\n \"WF\": [\n \"H\",\n \"hB\"\n ],\n \"YT\": [\n \"H\",\n \"hB\"\n ],\n \"BD\": [\n \"h\",\n \"hB\",\n \"H\"\n ],\n \"PK\": [\n \"h\",\n \"hB\",\n \"H\"\n ],\n \"AZ\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"BA\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"BG\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"CH\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"GE\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"LI\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"ME\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"RS\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"UA\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"UZ\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"XK\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"AG\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"AU\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BB\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BS\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"CA\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"DM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"en-001\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"FJ\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"FM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GD\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GU\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GY\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"JM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"KI\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"KN\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"KY\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"LC\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"LR\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"MH\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"MP\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"MW\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"NZ\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SB\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SG\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SL\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SS\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SZ\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"TC\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"TT\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"UM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"US\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"VC\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"VG\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"VI\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"ZM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BO\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"EC\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"ES\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"GQ\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"PE\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"AE\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"ar-001\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"BH\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"DZ\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"EG\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"EH\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"HK\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"IQ\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"JO\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"KW\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"LB\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"LY\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"MO\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"MR\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"OM\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"PH\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"PS\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"QA\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"SA\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"SD\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"SY\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"TN\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"YE\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"AF\": [\n \"H\",\n \"hb\",\n \"hB\",\n \"h\"\n ],\n \"LA\": [\n \"H\",\n \"hb\",\n \"hB\",\n \"h\"\n ],\n \"CN\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"LV\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"TL\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"zu-ZA\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"CD\": [\n \"hB\",\n \"H\"\n ],\n \"IR\": [\n \"hB\",\n \"H\"\n ],\n \"hi-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"kn-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"ml-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"te-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"KH\": [\n \"hB\",\n \"h\",\n \"H\",\n \"hb\"\n ],\n \"ta-IN\": [\n \"hB\",\n \"h\",\n \"hb\",\n \"H\"\n ],\n \"BN\": [\n \"hb\",\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"MY\": [\n \"hb\",\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"ET\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"gu-IN\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"mr-IN\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"pa-IN\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"TW\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"KE\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"MM\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"TZ\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"UG\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ]\n};\n","export var TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n /**\n * XML-like tag\n */\n TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value,\n };\n}\nexport function createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style,\n };\n}\n","/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a': // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}\n","import { __assign } from \"tslib\";\nimport { WHITE_SPACE_REGEX } from './regex.generated';\nexport function parseNumberSkeletonFromString(skeleton) {\n if (skeleton.length === 0) {\n throw new Error('Number skeleton cannot be empty');\n }\n // Parse the skeleton\n var stringTokens = skeleton\n .split(WHITE_SPACE_REGEX)\n .filter(function (x) { return x.length > 0; });\n var tokens = [];\n for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n var stringToken = stringTokens_1[_i];\n var stemAndOptions = stringToken.split('/');\n if (stemAndOptions.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n var stem = stemAndOptions[0], options = stemAndOptions.slice(1);\n for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n var option = options_1[_a];\n if (option.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n }\n tokens.push({ stem: stem, options: options });\n }\n return tokens;\n}\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?[rs]?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n var result = {};\n if (str[str.length - 1] === 'r') {\n result.roundingPriority = 'morePrecision';\n }\n else if (str[str.length - 1] === 's') {\n result.roundingPriority = 'lessPrecision';\n }\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto',\n };\n case 'sign-accounting':\n case '()':\n return {\n currencySign: 'accounting',\n };\n case 'sign-always':\n case '+!':\n return {\n signDisplay: 'always',\n };\n case 'sign-accounting-always':\n case '()!':\n return {\n signDisplay: 'always',\n currencySign: 'accounting',\n };\n case 'sign-except-zero':\n case '+?':\n return {\n signDisplay: 'exceptZero',\n };\n case 'sign-accounting-except-zero':\n case '()?':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting',\n };\n case 'sign-never':\n case '+_':\n return {\n signDisplay: 'never',\n };\n }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n // Engineering\n var result;\n if (stem[0] === 'E' && stem[1] === 'E') {\n result = {\n notation: 'engineering',\n };\n stem = stem.slice(2);\n }\n else if (stem[0] === 'E') {\n result = {\n notation: 'scientific',\n };\n stem = stem.slice(1);\n }\n if (result) {\n var signDisplay = stem.slice(0, 2);\n if (signDisplay === '+!') {\n result.signDisplay = 'always';\n stem = stem.slice(2);\n }\n else if (signDisplay === '+?') {\n result.signDisplay = 'exceptZero';\n stem = stem.slice(2);\n }\n if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n throw new Error('Malformed concise eng/scientific notation');\n }\n result.minimumIntegerDigits = stem.length;\n }\n return result;\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n case '%':\n result.style = 'percent';\n continue;\n case '%x100':\n result.style = 'percent';\n result.scale = 100;\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n case ',_':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n case '.':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n case 'unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n case 'K':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n case 'KK':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'engineering':\n result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n case 'scale':\n result.scale = parseFloat(token.options[0]);\n continue;\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n case 'integer-width':\n if (token.options.length > 1) {\n throw new RangeError('integer-width stems only accept a single optional option');\n }\n token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n if (g1) {\n result.minimumIntegerDigits = g2.length;\n }\n else if (g3 && g4) {\n throw new Error('We currently do not support maximum integer digits');\n }\n else if (g5) {\n throw new Error('We currently do not support exact integer digits');\n }\n return '';\n });\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n result.minimumIntegerDigits = token.stem.length;\n continue;\n }\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n // Precision\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n // precision-integer case\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n // .000* case (before ICU67 it was .000+)\n if (g2 === '*') {\n result.minimumFractionDigits = g1.length;\n }\n // .### case\n else if (g3 && g3[0] === '#') {\n result.maximumFractionDigits = g3.length;\n }\n // .00## case\n else if (g4 && g5) {\n result.minimumFractionDigits = g4.length;\n result.maximumFractionDigits = g4.length + g5.length;\n }\n else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits = g1.length;\n }\n return '';\n });\n var opt = token.options[0];\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display\n if (opt === 'w') {\n result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });\n }\n else if (opt) {\n result = __assign(__assign({}, result), parseSignificantPrecision(opt));\n }\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = __assign(__assign({}, result), signOpts);\n }\n var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n if (conciseScientificAndEngineeringOpts) {\n result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n }\n }\n return result;\n}\n","// @generated from regex-gen.ts\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","import IntlMessageFormat from 'intl-messageformat';\nexport { default as IntlMessageFormat } from 'intl-messageformat';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nfunction getLastOfPath(object, path, Empty) {\r\n if (Empty === void 0) { Empty = null; }\r\n function cleanKey(key) {\r\n return (key && key.indexOf('###') > -1) ? key.replace(/###/g, '.') : key;\r\n }\r\n function canNotTraverseDeeper() {\r\n return !object || typeof object === 'string';\r\n }\r\n var stack = (typeof path !== 'string') ? [].concat(path) : path.split('.');\r\n while (stack.length > 1) {\r\n if (canNotTraverseDeeper())\r\n return {};\r\n var key = cleanKey(stack.shift());\r\n if (!object[key] && Empty)\r\n object[key] = new Empty();\r\n object = object[key];\r\n }\r\n if (canNotTraverseDeeper())\r\n return {};\r\n return {\r\n obj: object,\r\n k: cleanKey(stack.shift())\r\n };\r\n}\r\nfunction setPath(object, path, newValue) {\r\n var _a = getLastOfPath(object, path, Object), obj = _a.obj, k = _a.k;\r\n obj[k] = newValue;\r\n}\r\nfunction getPath(object, path) {\r\n var _a = getLastOfPath(object, path), obj = _a.obj, k = _a.k;\r\n if (!obj)\r\n return undefined;\r\n return obj[k];\r\n}\n\nvar ON_PARSE_ERROR_STRATEGY;\r\n(function (ON_PARSE_ERROR_STRATEGY) {\r\n ON_PARSE_ERROR_STRATEGY[\"keepRaw\"] = \"keepRaw\";\r\n ON_PARSE_ERROR_STRATEGY[\"replaceAnyway\"] = \"replaceAnyway\"; // 保留部分插值\r\n})(ON_PARSE_ERROR_STRATEGY || (ON_PARSE_ERROR_STRATEGY = {}));\r\nvar DEFAULT_ON_PARSE_ERROR_STRATEGY = ON_PARSE_ERROR_STRATEGY.replaceAnyway;\r\nvar DEFAULT_OPTIONS = {\r\n memoize: false,\r\n memoizeFallback: false,\r\n bindI18n: false,\r\n bindI18nStore: false,\r\n onParseError: ON_PARSE_ERROR_STRATEGY.replaceAnyway\r\n};\r\nvar IES_INTL_ICU_PLUGIN = /** @class */ (function () {\r\n function IES_INTL_ICU_PLUGIN() {\r\n this.mem = {};\r\n }\r\n IES_INTL_ICU_PLUGIN.staticInit = function (i18next) {\r\n IES_INTL_ICU_PLUGIN._i18nextInstance = i18next;\r\n };\r\n IES_INTL_ICU_PLUGIN.prototype.init = function (i18next, options) {\r\n var _this = this;\r\n if (i18next === void 0) { i18next = IES_INTL_ICU_PLUGIN._i18nextInstance; }\r\n var i18nextOptions = {};\r\n if (!!(i18next === null || i18next === void 0 ? void 0 : i18next.options)) {\r\n if (!!i18next.options.i18nFormat) {\r\n i18nextOptions = i18next.options.i18nFormat;\r\n }\r\n i18nextOptions.onParseError = i18next.options.onParseError;\r\n i18nextOptions.missingInterpolationHandler = i18next.options.missingInterpolationHandler;\r\n i18nextOptions.icuConfig = i18next.options.icuConfig;\r\n i18nextOptions.ignoreWarning = !!i18next.options.ignoreWarning;\r\n }\r\n this.options = Object.assign(DEFAULT_OPTIONS, options, i18nextOptions);\r\n this.formats = this.options.formats;\r\n if (i18next) {\r\n var _a = this.options, bindI18n = _a.bindI18n, bindI18nStore = _a.bindI18nStore, memoize = _a.memoize;\r\n i18next.IntlMessageFormat = IntlMessageFormat;\r\n this.IntlMessageFormat = IntlMessageFormat;\r\n i18next.ICU = this;\r\n if (memoize) {\r\n if (bindI18n) {\r\n i18next.on(bindI18n, function () { return _this.clearCache(); });\r\n }\r\n if (bindI18nStore) {\r\n i18next.store.on(bindI18nStore, function () { return _this.clearCache(); });\r\n }\r\n }\r\n }\r\n if (this.options.localeData) {\r\n if (Object.prototype.toString.apply(this.options.localeData) === '[object Array]') {\r\n this.options.localeData.forEach(function (ld) { return _this.addLocaleData(ld); });\r\n }\r\n else {\r\n this.addLocaleData(this.options.localeData);\r\n }\r\n }\r\n };\r\n IES_INTL_ICU_PLUGIN.prototype.addLocaleData = function (data) {\r\n var locales = Object.prototype.toString.apply(data) === '[object Array]' ? data : [data];\r\n locales.forEach(function (localeData) {\r\n if (localeData && localeData.locale) {\r\n IntlMessageFormat.__addLocaleData(localeData);\r\n // IntlRelativeFormat.__addLocaleData(localeData);\r\n }\r\n });\r\n };\r\n IES_INTL_ICU_PLUGIN.prototype.addUserDefinedFormats = function (formats) {\r\n this.formats = this.formats ? __assign(__assign({}, this.formats), formats) : formats;\r\n };\r\n IES_INTL_ICU_PLUGIN.prototype.checkMissingInterpolation = function (icuAST, messageText, options, lng, key) {\r\n // ICU Config Strict 为 false,不检查插值缺失\r\n if ((this.options.icuConfig || {}).strict === false) {\r\n return options;\r\n }\r\n // 记录所有丢失的插值参数\r\n var missingInterpolations = {};\r\n for (var _i = 0, icuAST_1 = icuAST; _i < icuAST_1.length; _i++) {\r\n var element = icuAST_1[_i];\r\n // if (element.type !== TYPE.argument) {\r\n // continue;\r\n // }\r\n // 1 === argument,没必要因为这个引入隐式依赖\r\n if (element.type !== 1) {\r\n continue;\r\n }\r\n // 这个节点是参数表达式\r\n var value = element.value; // id 就是插值参数名\r\n if (options[value] !== null && options[value] !== undefined) {\r\n continue;\r\n }\r\n if (typeof this.options.missingInterpolationHandler === 'function') {\r\n // 权重最高\r\n var ans = this.options.missingInterpolationHandler({\r\n key: key,\r\n text: messageText,\r\n locale: lng,\r\n interpolation: {\r\n key: value,\r\n val: options[value]\r\n }\r\n });\r\n if (typeof ans === 'string') {\r\n missingInterpolations[value] = ans;\r\n continue;\r\n }\r\n }\r\n switch (this.options.onParseError) {\r\n // 插值参数丢失策略:保留全部翻译文案,不进行任何插值替换\r\n case ON_PARSE_ERROR_STRATEGY.keepRaw:\r\n throw new Error();\r\n // 插值参数丢失策略:替换丢失的这个文案为 Key 值\r\n case ON_PARSE_ERROR_STRATEGY.replaceAnyway:\r\n missingInterpolations[value] = \"{\" + value + \"}\";\r\n continue;\r\n }\r\n if (typeof this.options.onParseError === 'function') {\r\n // deprecated\r\n // 业务配置了 onParseError callback\r\n console.warn(\"[DEPRECATED] onParseError is deprecated, please use 'missingInterpolationHandler' instead of\");\r\n var callbackReturns = this.options.onParseError(messageText, value, lng, this.IntlMessageFormat);\r\n if (callbackReturns === true) {\r\n // 业务期望保留全部翻译文案,不进行插值替换\r\n throw new Error();\r\n }\r\n missingInterpolations[value] =\r\n typeof callbackReturns === 'string' ? callbackReturns : \"{\" + value + \"}\";\r\n }\r\n else {\r\n // 默认兜底\r\n if (!this.options.ignoreWarning) {\r\n // 发生了插值参数丢失\r\n console.warn(\"[Starling ICU Warning] The interpolation parameter \\\"{\" + value + \"}\\\" is missing in the translation text \\\"\" + messageText + \"\\\" for the key \\\"\" + key + \"\\\"\\nSuggestions: check whether the value is null or undefined. Try using empty string '' as fallback! e.g I18n.t('key', { apple: count || '' })\");\r\n }\r\n missingInterpolations[value] = \"{\" + value + \"}\";\r\n }\r\n }\r\n return Object.assign({}, options, missingInterpolations);\r\n };\r\n IES_INTL_ICU_PLUGIN.prototype.parse = function (res, options, lng, ns, key, info) {\r\n var hadSuccessfulLookup = info && info.resolved && info.resolved.res;\r\n var memKey = this.options.memoize && lng + \".\" + ns + \".\" + key.replace(/\\./g, '###');\r\n if (!hadSuccessfulLookup && options.thirdParamFallback && options.fallbackText) {\r\n res = options.fallbackText;\r\n }\r\n var fc;\r\n if (this.options.memoize) {\r\n fc = getPath(this.mem, memKey);\r\n }\r\n try {\r\n if (!fc) {\r\n fc = new this.IntlMessageFormat(res, lng, this.formats, (this.options.icuConfig || {}).formatOptions);\r\n if (this.options.memoize &&\r\n (this.options.memoizeFallback || !info || hadSuccessfulLookup)) {\r\n setPath(this.mem, memKey, fc);\r\n }\r\n }\r\n return fc.format(this.checkMissingInterpolation(fc.getAst(), res, options || {}, lng, key));\r\n }\r\n catch (err) {\r\n // if (!this.options.ignoreWarning) {\r\n // console.log(err);\r\n // }\r\n return res;\r\n }\r\n };\r\n IES_INTL_ICU_PLUGIN.prototype.addLookupKeys = function (finalKeys, key, code, ns, options) {\r\n // no additional keys needed for select or plural\r\n // so there is no need to add keys to that finalKeys array\r\n return finalKeys;\r\n };\r\n IES_INTL_ICU_PLUGIN.prototype.clearCache = function () {\r\n this.mem = {};\r\n };\r\n IES_INTL_ICU_PLUGIN.type = 'i18nFormat';\r\n IES_INTL_ICU_PLUGIN._i18nextInstance = null;\r\n return IES_INTL_ICU_PLUGIN;\r\n}());\r\nvar pluginName = IES_INTL_ICU_PLUGIN.name;\n\nexport { DEFAULT_ON_PARSE_ERROR_STRATEGY, DEFAULT_OPTIONS, ON_PARSE_ERROR_STRATEGY, IES_INTL_ICU_PLUGIN as default, pluginName };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar KEY_MATCH = 'INCONTEXT-KEY-MATCH';\r\nvar INCONTEXT_KEY_REG = /^\\s*\\[\\[__starling_(\\d+)_(.*)__\\]\\]\\s*$/;\r\n/**\r\n * 目前IN-CONTEXT支持两种模式\r\n * 1:源文案匹配(默认)\r\n * 2:key匹配\r\n */\r\nvar supportKeyMatch = function () { return document.getElementById(KEY_MATCH); };\r\nif (typeof window !== 'undefined') {\r\n window['__STARLING_INCONTEXT_GLOBAL__HOOK__'] = __assign({}, (window['__STARLING_INCONTEXT_GLOBAL__HOOK__'] || { payload: {} }));\r\n}\r\nvar index = {\r\n name: 'inContext',\r\n type: 'postProcessor',\r\n process: function (value, key, options, translator) {\r\n // 必须是浏览器环境 且 安装了Starling In-Context插件 (__STARLING_INCONTEXT_FLAG__ 为插件翻译标志)\r\n if (window && supportKeyMatch() && !options['__STARLING_INCONTEXT_FLAG__']) {\r\n /**\r\n * TODO: 所以I18N均可以接入 将功能抽离出一份通用sdk\r\n * t函数 (语言翻译由脚本来修改)\r\n * 不能直接给插件翻译 (无法传递过去)\r\n */\r\n if (!window['__STARLING_INCONTEXT_GLOBAL_I18N__']) {\r\n window['__STARLING_INCONTEXT_GLOBAL_I18N__'] = translator;\r\n }\r\n delete options.keySeparator;\r\n delete options.lngs;\r\n var index = 0;\r\n key = key.toString();\r\n // fixed: I18n.t嵌套使用时\r\n if (INCONTEXT_KEY_REG.test(key)) {\r\n var matchData = key.match(INCONTEXT_KEY_REG);\r\n matchData[0]; var _index = matchData[1], _key = matchData[2];\r\n index = _index;\r\n key = _key;\r\n }\r\n if (INCONTEXT_KEY_REG.test(value)) {\r\n var matchData = value.match(INCONTEXT_KEY_REG);\r\n matchData[0]; var _index = matchData[1], _key = matchData[2];\r\n value = _key;\r\n }\r\n if (!window['__STARLING_INCONTEXT_GLOBAL__HOOK__'].payload[key]) {\r\n window['__STARLING_INCONTEXT_GLOBAL__HOOK__'].payload[key] = [\r\n {\r\n options: options,\r\n default: value\r\n }\r\n ];\r\n index = 0;\r\n }\r\n else {\r\n // TODO: 规避时间戳(参数变化太快导致无用的累加)\r\n var findTIndex = window['__STARLING_INCONTEXT_GLOBAL__HOOK__'].payload[key].findIndex(function (item) { return JSON.stringify(item.options) === JSON.stringify(options); });\r\n if (findTIndex > -1) {\r\n window['__STARLING_INCONTEXT_GLOBAL__HOOK__'].payload[key][findTIndex].default = value;\r\n index = findTIndex;\r\n }\r\n else {\r\n index =\r\n window['__STARLING_INCONTEXT_GLOBAL__HOOK__'].payload[key].push({\r\n options: options,\r\n default: value\r\n }) - 1;\r\n }\r\n }\r\n return \"[[__starling_\" + index + \"_\" + key + \"__]]\";\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n};\n\nexport { index as default };\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\n// eslint-disable-next-line no-control-regex\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\nvar serializeCookie = function serializeCookie(name, val, options) {\n var opt = options || {};\n opt.path = opt.path || '/';\n var value = encodeURIComponent(val);\n var str = name + '=' + value;\n\n if (opt.maxAge > 0) {\n var maxAge = opt.maxAge - 0;\n if (isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) str += '; HttpOnly';\n if (opt.secure) str += '; Secure';\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n\n case 'lax':\n str += '; SameSite=Lax';\n break;\n\n case 'strict':\n str += '; SameSite=Strict';\n break;\n\n case 'none':\n str += '; SameSite=None';\n break;\n\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n};\n\nvar cookie = {\n create: function create(name, value, minutes, domain) {\n var cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: '/',\n sameSite: 'strict'\n };\n\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);\n },\n read: function read(name) {\n var nameEQ = name + '=';\n var ca = document.cookie.split(';');\n\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n\n return null;\n },\n remove: function remove(name) {\n this.create(name, '', -1);\n }\n};\nvar cookie$1 = {\n name: 'cookie',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupCookie && typeof document !== 'undefined') {\n var c = cookie.read(options.lookupCookie);\n if (c) found = c;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupCookie && typeof document !== 'undefined') {\n cookie.create(options.lookupCookie, lng, options.cookieMinutes, options.cookieDomain, options.cookieOptions);\n }\n }\n};\n\nvar htmlTag = {\n name: 'htmlTag',\n lookup: function lookup(options) {\n var found;\n var htmlTag = options.htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n\n if (htmlTag && typeof htmlTag.getAttribute === 'function') {\n found = htmlTag.getAttribute('lang');\n }\n\n return found;\n }\n};\n\nvar hasLocalStorageSupport = null;\n\nvar localStorageAvailable = function localStorageAvailable() {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n\n try {\n hasLocalStorageSupport = window !== 'undefined' && window.localStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.localStorage.setItem(testKey, 'foo');\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n\n return hasLocalStorageSupport;\n};\n\nvar localStorage = {\n name: 'localStorage',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupLocalStorage && localStorageAvailable()) {\n var lng = window.localStorage.getItem(options.lookupLocalStorage);\n if (lng) found = lng;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(options.lookupLocalStorage, lng);\n }\n }\n};\n\nvar navigator$1 = {\n name: 'navigator',\n lookup: function lookup(options) {\n var found = [];\n\n if (typeof navigator !== 'undefined') {\n if (navigator.languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for (var i = 0; i < navigator.languages.length; i++) {\n found.push(navigator.languages[i]);\n }\n }\n\n if (navigator.userLanguage) {\n found.push(navigator.userLanguage);\n }\n\n if (navigator.language) {\n found.push(navigator.language);\n }\n }\n\n return found.length > 0 ? found : undefined;\n }\n};\n\nvar querystring = {\n name: 'querystring',\n lookup: function lookup(options) {\n var found;\n\n if (typeof window !== 'undefined') {\n var query = window.location.search.substring(1);\n var params = query.split('&');\n\n for (var i = 0; i < params.length; i++) {\n var pos = params[i].indexOf('=');\n\n if (pos > 0) {\n var key = params[i].substring(0, pos);\n\n if (key === options.lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n\n return found;\n }\n};\n\nvar logger = {\n mute: false,\n _allowedLog: function _allowedLog() {\n return /^dev(?:elopment)?$/.test(process.env.NODE_ENV || '') && !this.mute;\n },\n info: function info(msg) {\n if (this._allowedLog()) {\n console.log(\"[Starling Language Detector] [INFO] \".concat(msg));\n }\n }\n};\n\nfunction getDefaultOptions() {\n return {\n order: ['querystring', 'cookie', 'localStorage', 'navigator', 'htmlTag'],\n lookupQuerystring: 'lng',\n lookupCookie: 'starling-language',\n lookupLocalStorage: 'starling-language',\n fallback: 'zh-CN',\n // cache user language\n caches: ['cookie'],\n mute: false\n };\n}\n\nvar LanguageDetector = /*#__PURE__*/function () {\n function LanguageDetector() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getDefaultOptions();\n\n _classCallCheck(this, LanguageDetector);\n\n this.type = 'languageDetector';\n this.detectors = {};\n this.options = options;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(htmlTag);\n this.addDetector(localStorage);\n this.addDetector(navigator$1);\n }\n\n _createClass(LanguageDetector, [{\n key: \"addDetector\",\n value: function addDetector(detector) {\n this.detectors[detector.name] = detector;\n }\n }, {\n key: \"init\",\n value: function init(services, options, i18nOptions) {\n this.configLang = i18nOptions.lng;\n this.fallbackLang = i18nOptions.fallbackLng; // ! 必须要抹掉这个 lng 配置,否则 detector 将不再起作用\n // ! Intl 中默认用 zh-CN 兜底了\n\n i18nOptions.lng = undefined;\n this.services = services;\n this.options = Object.assign({}, getDefaultOptions(), this.options || {}, options || {});\n this.i18nOptions = i18nOptions;\n logger.mute = !!this.options.mute;\n }\n }, {\n key: \"detect\",\n value: function detect() {\n var detectionOrder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.order;\n var isFallbackLangArray = Array.isArray(this.fallbackLang);\n var ans;\n\n var _iterator = _createForOfIteratorHelper(detectionOrder),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var detectorName = _step.value;\n if (!this.detectors[detectorName]) continue;\n var lookup = this.detectors[detectorName].lookup(this.options);\n if (lookup && typeof lookup === 'string') lookup = [lookup];\n\n if (Array.isArray(lookup) && !!lookup.length) {\n logger.info(\"Find \".concat(lookup.length, \" langs from \").concat(detectorName));\n\n for (var i = 0; i < lookup.length; i++) {\n var lookupLng = lookup[i];\n logger.info(\"Processing \\\"\".concat(lookupLng, \"\\\" from \").concat(detectorName, \"[\").concat(i, \"]\"));\n\n if (typeof this.options.ignoreSpecialAreas === 'boolean' && this.options.ignoreSpecialAreas) {\n // 忽略掉地区\n lookupLng = lookupLng.split('-')[0];\n logger.info(\"Ignore special areas, then processing \\\"\".concat(lookupLng, \"\\\"\"));\n }\n\n if (isFallbackLangArray && this.fallbackLang.indexOf(lookupLng) === -1) {\n logger.info(\"\\\"\".concat(lookupLng, \"\\\" is not in fallbackLng list, ignore it\"));\n continue;\n } // 当前语言没问题,还在业务的 fallbackLng 中,就是你啦!\n\n\n ans = lookupLng;\n break;\n }\n\n ans && logger.info(\"Detected language \".concat(ans, \" from \").concat(detectorName));\n break;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (!ans) {\n logger.info(\"Can't find a suitable language, use \".concat(isFallbackLangArray ? 'fallbackLang[0]' : 'fallback', \" instead\"));\n ans = isFallbackLangArray ? this.fallbackLang[0] : this.options.fallback || this.configLang;\n }\n\n if (typeof this.options.validator === 'function') {\n ans = this.options.validator(ans) || ans;\n logger.info(\"Validator result: \".concat(ans));\n }\n\n return ans;\n }\n }, {\n key: \"cacheUserLanguage\",\n value: function cacheUserLanguage(lng, caches) {\n var _this = this;\n\n if (!caches) caches = this.options.caches;\n if (!caches) return;\n caches.forEach(function (cacheName) {\n if (_this.detectors[cacheName]) _this.detectors[cacheName].cacheUserLanguage(lng, _this.options);\n });\n }\n }]);\n\n return LanguageDetector;\n}();\n\nLanguageDetector.type = 'languageDetector';\nfunction registerLanguageDetector() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return new LanguageDetector(options);\n}\n\nexport { LanguageDetector as default, registerLanguageDetector };\n","import i18next from 'i18next';\nimport ICU from '@ies/intl-icu-plugin';\nexport { IntlMessageFormat } from '@ies/intl-icu-plugin';\nimport InContext from '@ies/intl-incontext-plugin';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function () {};\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\n/**\r\n * Currency code list\r\n * https://www.currency-iso.org/en/home/tables/table-a1.html\r\n */\nvar currency = ['AFN', 'EUR', 'ALL', 'DZD', 'USD', 'AOA', 'XCD', 'ARS', 'AMD', 'AWG', 'AUD', 'AZN', 'BSD', 'BHD', 'BDT', 'BBD', 'BYN', 'BZD', 'XOF', 'BMD', 'INR', 'BTN', 'BOB', 'BOV', 'BAM', 'BWP', 'NOK', 'BRL', 'BND', 'BGN', 'BIF', 'CVE', 'KHR', 'XAF', 'CAD', 'KYD', 'CLP', 'CLF', 'CNY', 'COP', 'COU', 'KMF', 'CDF', 'NZD', 'CRC', 'HRK', 'CUP', 'CUC', 'ANG', 'CZK', 'DKK', 'DJF', 'DOP', 'EGP', 'SVC', 'ERN', 'ETB', 'FKP', 'FJD', 'XPF', 'GMD', 'GEL', 'GHS', 'GIP', 'GTQ', 'GBP', 'GNF', 'GYD', 'HTG', 'HNL', 'HKD', 'HUF', 'ISK', 'IDR', 'XDR', 'IRR', 'IQD', 'ILS', 'JMD', 'JPY', 'JOD', 'KZT', 'KES', 'KPW', 'KRW', 'KWD', 'KGS', 'LAK', 'LBP', 'LSL', 'ZAR', 'LRD', 'LYD', 'CHF', 'MOP', 'MKD', 'MGA', 'MWK', 'MYR', 'MVR', 'MRO', 'MUR', 'XUA', 'MXN', 'MXV', 'MDL', 'MNT', 'MAD', 'MZN', 'MMK', 'NAD', 'NPR', 'NIO', 'NGN', 'OMR', 'PKR', 'PAB', 'PGK', 'PYG', 'PEN', 'PHP', 'PLN', 'QAR', 'RON', 'RUB', 'RWF', 'SHP', 'WST', 'STD', 'SAR', 'RSD', 'SCR', 'SLL', 'SGD', 'XSU', 'SBD', 'SOS', 'SSP', 'LKR', 'SDG', 'SRD', 'SZL', 'SEK', 'CHE', 'CHW', 'SYP', 'TWD', 'TJS', 'TZS', 'THB', 'TOP', 'TTD', 'TND', 'TRY', 'TMT', 'UGX', 'UAH', 'AED', 'USN', 'UYU', 'UYI', 'UZS', 'VUV', 'VEF', 'VND', 'YER', 'ZMW', 'ZWL', 'XBA', 'XBB', 'XBC', 'XBD', 'XTS', 'XXX', 'XAU', 'XPD', 'XPT', 'XAG'];\nvar numberFormat = {};\nfor (var i = 0; i < currency.length; i++) {\n numberFormat[currency[i]] = {\n style: 'currency',\n currency: currency[i]\n };\n}\nvar defaultFormats = {\n number: numberFormat\n};\n\nvar types = {\n LOGGER: 'logger',\n LAMGUAGE_DETECTOR: 'languageDetector',\n LAMGUAGE_TRANSFORMER: 'languageTransformer',\n BACKEND: 'backend'\n};\nfunction isTypes(type) {\n return function (itm) {\n return itm.type === type;\n };\n}\n\nfunction formatLang(lng, plugins) {\n var formatLang = lng;\n (plugins || []).map(function (plugin) {\n formatLang = plugin.process(lng) || formatLang;\n });\n return formatLang;\n}\n\nvar defaultFallbackLanguage = 'zh-CN';\nvar defaultConfig = {\n lng: defaultFallbackLanguage,\n fallbackLng: ['en-US'],\n inContext: true\n};\n// 默认开启ICU插值解析\nvar defaultPlugins = [ICU, InContext];\n/**\r\n * I18n内核\r\n * 安全校验\r\n */\nvar I18next = /*#__PURE__*/function () {\n function I18next(config, plugins) {\n var _this = this;\n _classCallCheck(this, I18next);\n this._waitingToAddResourceBundle = [];\n this.t = function (keys, options, fallbackText) {\n var separatorMock = Array.isArray(keys) ? Array.from(keys).map(function () {\n return ' ';\n }).join('') : Array(keys.length).fill(' ');\n // fixed: 去除默认lngs,有lngs i18next就会忽略lng\n var opt = Object.assign({\n keySeparator: separatorMock,\n nsSeparator: separatorMock\n }, options);\n if ('thirdParamFallback' in _this.config && _this.config.thirdParamFallback) {\n opt.thirdParamFallback = true;\n }\n return _this.instance.t(keys, fallbackText, opt);\n };\n this._handlePlugins(plugins);\n this._handleConfigs(config);\n this.instance = i18next.createInstance();\n this.instance.isInitialized = false;\n }\n _createClass(I18next, [{\n key: \"_handlePlugins\",\n value: function _handlePlugins(plugins) {\n var _this$config, _this$config$icuConfi;\n // 关闭ICU插值解析\n if (((_this$config = this.config) === null || _this$config === void 0 ? void 0 : (_this$config$icuConfi = _this$config.icuConfig) === null || _this$config$icuConfi === void 0 ? void 0 : _this$config$icuConfi.open) === false) defaultPlugins.shift();\n this.plugins = Array.isArray(plugins) ? plugins.concat(defaultPlugins) : defaultPlugins;\n }\n }, {\n key: \"_handleConfigs\",\n value: function _handleConfigs(config) {\n this.userLng = (config === null || config === void 0 ? void 0 : config.lng) || null; // 用户自己设定的 lng\n this.config = Object.assign({}, defaultConfig, config || {});\n }\n }, {\n key: \"language\",\n get: function get() {\n return (this.instance || {}).language;\n }\n }, {\n key: \"createInstance\",\n value: function createInstance() {\n var _this2 = this;\n return new Promise(function (resolve, reject) {\n // fixed: 非浏览器环境不支持incontext\n // fixed: Cocos 有 window 但不使用 in-context\n // feat: 支持手动关闭inContext\n if (typeof window !== 'undefined' && !window.CocosEngine && _this2.config.inContext) {\n _this2.config.postProcess = [].concat(['inContext'], _this2.config.postProcess || []);\n window['__STARLING_DEVTOOLS_I18N'] = _this2.instance;\n }\n _this2.plugins.map(function (p) {\n if (p.name === 'IES_INTL_ICU_PLUGIN') {\n p.staticInit(_this2.instance);\n }\n _this2.instance.use(p);\n });\n var config = _this2.config;\n _this2.config.formats = Object.assign({}, _this2.config.formats, defaultFormats);\n var formatLng = formatLang(config.lng, _this2.plugins.filter(isTypes(types.LAMGUAGE_TRANSFORMER)));\n _this2.instance.init(Object.assign({}, config, {\n lng: formatLng,\n i18nFormat: {\n formats: _this2.config.formats\n }\n }), function (err, t) {\n // 初始化好了\n try {\n // 把等待添加的东西都加进去\n var _iterator = _createForOfIteratorHelper(_this2._waitingToAddResourceBundle),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _this2$instance;\n var item = _step.value;\n (_this2$instance = _this2.instance).addResourceBundle.apply(_this2$instance, _toConsumableArray(item));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n _this2._waitingToAddResourceBundle = [];\n // eslint-disable-next-line no-empty\n } catch (err) {}\n if (!err) {\n _this2._updateLanguages();\n resolve({\n t: t,\n err: err\n });\n }\n _this2.init = true;\n reject({\n t: t,\n err: err\n });\n });\n });\n }\n }, {\n key: \"_updateLanguages\",\n value: function _updateLanguages() {\n this.languages = this.instance ? Array.from(new Set([this.instance.language].concat(_toConsumableArray(this.instance.languages)))) : null;\n }\n }, {\n key: \"getLanguages\",\n value: function getLanguages() {\n return this.languages;\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this3 = this;\n this.config.lng = lng;\n this.instance.changeLanguage(lng, function (err, t) {\n if (!err) {\n _this3._updateLanguages();\n }\n callback && callback(err, t);\n });\n }\n }, {\n key: \"changeLanguageWithPromise\",\n value: function changeLanguageWithPromise(lng) {\n var _this4 = this;\n return new Promise(function (resolve, reject) {\n _this4.config.lng = lng;\n _this4.instance.changeLanguage(lng, function (err, t) {\n if (err) {\n reject({\n err: err,\n t: t\n });\n }\n _this4._updateLanguages();\n resolve({\n err: err,\n t: t\n });\n });\n });\n }\n }, {\n key: \"getDir\",\n value: function getDir(lng) {\n return this.instance.dir(lng);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n if (this.instance.isInitialized) {\n return this.instance.addResourceBundle(lng, ns, resources, deep, overwrite);\n }\n // 还没初始化好\n this._waitingToAddResourceBundle.push([lng, ns, resources, !!deep, !!overwrite]);\n return this.instance;\n }\n }]);\n return I18next;\n}();\n\nvar PREFIX = 'Starling_intl:';\nvar logger = {\n warn: function warn() {\n var _console;\n var prefix = \"\".concat(PREFIX, \" [WARNING]\");\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_console = console).warn.apply(_console, [prefix].concat(args));\n },\n error: function error() {\n var _console2;\n var prefix = \"\".concat(PREFIX, \" [ERROR]\");\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n (_console2 = console).error.apply(_console2, [prefix].concat(args));\n }\n};\n\nfunction promiseQueue(executors) {\n return new Promise(function (resolve, reject) {\n if (!Array.isArray(executors)) {\n executors = Array.from(executors);\n }\n if (executors.length <= 0) {\n return resolve([]);\n }\n var res = [];\n executors = executors.map(function (x, i) {\n return function () {\n var p = typeof x === 'function' ? new Promise(x) : Promise.resolve(x);\n p.then(function (response) {\n res[i] = response;\n if (i === executors.length - 1) {\n resolve(res);\n } else {\n executors[i + 1]();\n }\n }, reject);\n };\n });\n executors[0]();\n });\n}\n\nfunction _await(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n return then ? value.then(then) : value;\n}\nfunction _catch(body, recover) {\n try {\n var result = body();\n } catch (e) {\n return recover(e);\n }\n if (result && result.then) {\n return result.then(void 0, recover);\n }\n return result;\n}\nfunction _empty() {}\nfunction _awaitIgnored(value, direct) {\n if (!direct) {\n return value && value.then ? value.then(_empty) : Promise.resolve();\n }\n}\nfunction _async(f) {\n return function () {\n for (var args = [], i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n try {\n return Promise.resolve(f.apply(this, args));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\nvar IntlModuleType;\n(function (IntlModuleType) {\n IntlModuleType[\"intl3rdParty\"] = \"intl3rdParty\";\n IntlModuleType[\"backend\"] = \"backend\";\n IntlModuleType[\"logger\"] = \"logger\";\n IntlModuleType[\"languageDetector\"] = \"languageDetector\";\n IntlModuleType[\"postProcessor\"] = \"postProcessor\";\n IntlModuleType[\"i18nFormat\"] = \"i18nFormat\";\n IntlModuleType[\"3rdParty\"] = \"3rdParty\";\n})(IntlModuleType || (IntlModuleType = {}));\n/**\r\n * I18n实例\r\n * 自定义配置\r\n */\nvar Intl = /*#__PURE__*/function () {\n function Intl() {\n var _this = this;\n _classCallCheck(this, Intl);\n this.t = function (keys, options, fallbackText) {\n if (!_this.ignoreWarning && (!_this.i18nInstance || !_this.i18nInstance.init)) {\n logger.error(\"The instance has not been initialized: i18n.t('\".concat(keys, \"'\").concat(options ? ',' + JSON.stringify(options) : '', \");\"));\n return fallbackText !== null && fallbackText !== void 0 ? fallbackText : Array.isArray(keys) ? keys[0] : keys;\n }\n // 有人给 key 传空字符串?\n if (!keys || typeof keys === 'string' && !keys.trim()) {\n return '';\n }\n return _this.i18nInstance.t(keys, options, fallbackText);\n };\n this.plugins = [];\n this.i18nInstance = new I18next();\n }\n _createClass(Intl, [{\n key: \"use\",\n value: function use(plugin) {\n if (!this.plugins.includes(plugin)) {\n this.plugins.push(plugin);\n return this;\n }\n logger.warn(\"Plugin: \".concat(plugin.name, \" has beeninit installed.\"));\n return this;\n }\n }, {\n key: \"init\",\n value: function init(config, initCallback) {\n try {\n var _this3 = this;\n // ignore warning\n _this3.ignoreWarning = config.ignoreWarning;\n _this3.i18nInstance._handleConfigs(config);\n _this3.i18nInstance._handlePlugins(_this3.plugins);\n return _await(_catch(function () {\n return _await(_this3.i18nInstance.createInstance(), function (_ref) {\n var err = _ref.err,\n t = _ref.t;\n // 接入 Intl thirdParty 类型 Plugin\n var intlThirdPartyArray = _this3.plugins.filter(function (p) {\n return p.type === IntlModuleType.intl3rdParty;\n });\n return _await(promiseQueue(intlThirdPartyArray.map(_async(function (intlThirdParty) {\n if (!intlThirdParty || typeof intlThirdParty.init !== 'function') {\n return;\n }\n var initFunction = intlThirdParty.init instanceof Promise ? intlThirdParty.init : _async(function (context) {\n return Promise.resolve(intlThirdParty.init(context));\n });\n return _awaitIgnored(initFunction(_this3));\n }))), function () {\n typeof initCallback === 'function' && initCallback(err, t);\n return {\n err: err,\n t: t\n };\n });\n });\n }, function (err) {\n logger.error(\"The instance init error: \".concat(err));\n return {\n err: err,\n t: function t(key) {\n return key;\n }\n };\n }));\n } catch (e) {\n return Promise.reject(e);\n }\n }\n }, {\n key: \"language\",\n get: function get() {\n return (this.i18nInstance || {}).language;\n }\n }, {\n key: \"setLang\",\n value: function setLang(lng, callback) {\n var formatLng = formatLang(lng, this.plugins.filter(isTypes(types.LAMGUAGE_TRANSFORMER)));\n this.i18nInstance.changeLanguage(formatLng, callback);\n }\n }, {\n key: \"getLanguages\",\n value: function getLanguages() {\n return this.i18nInstance.getLanguages();\n }\n }, {\n key: \"setLangWithPromise\",\n value: function setLangWithPromise(lng) {\n var formatLng = formatLang(lng, this.plugins.filter(isTypes(types.LAMGUAGE_TRANSFORMER)));\n return this.i18nInstance.changeLanguageWithPromise(formatLng);\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n return this.i18nInstance.getDir(lng);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n // to to something validate\n return this.i18nInstance.addResourceBundle(lng, ns, resources, deep, overwrite);\n }\n }]);\n return Intl;\n}();\n\nvar I18n = new Intl();\nvar I18nConstructor = Intl;\n\nexport default I18n;\nexport { I18n, I18nConstructor, I18next as I18nCore, Intl };\n","import { isNil } from 'lodash-es';\nimport { LogOptionsHelper } from './log-options-helper';\nimport { LogAction, LogLevel, } from './type';\nfunction unwrapOptions(payload) {\n if (typeof payload === 'string') {\n return {\n message: payload,\n };\n }\n return payload;\n}\nconst defaultLogOptions = {\n level: LogLevel.INFO,\n action: [LogAction.CONSOLE],\n};\nexport class BaseLogger {\n constructor({ ctx = {}, clients = [], beforeSend = [], disableConsole, }) {\n this.logOptionsResolvers = [];\n this.ctx = new LogOptionsHelper(ctx);\n this.clients = clients;\n this.logOptionsResolvers = beforeSend;\n this.disableConsole = disableConsole || false;\n }\n addClient(client) {\n this.clients.push(client);\n }\n resolveCloneParams({ ctx, clients = [], beforeSend = [], disableConsole, }) {\n return {\n ctx: LogOptionsHelper.merge(this.ctx.get(), ctx),\n clients: [...this.clients, ...clients],\n beforeSend: [...this.logOptionsResolvers, ...beforeSend],\n disableConsole: isNil(disableConsole)\n ? this.disableConsole\n : disableConsole,\n };\n }\n createLoggerWith(options) {\n return new BaseLogger(this.resolveCloneParams(options));\n }\n log(options) {\n const payload = LogOptionsHelper.merge(defaultLogOptions, this.ctx.get(), options);\n const resolvedPayload = this.logOptionsResolvers.length > 0\n ? this.logOptionsResolvers.reduce((acc, cur) => {\n return cur ? cur(acc) : acc;\n }, Object.assign({}, payload))\n : payload;\n this.clients.forEach((client) => {\n client.send(resolvedPayload);\n });\n }\n error(payload) {\n this.log(Object.assign(Object.assign({}, payload), { level: LogLevel.ERROR }));\n }\n warning(payload) {\n this.log(Object.assign(Object.assign({}, unwrapOptions(payload)), { level: LogLevel.WARNING }));\n }\n info(payload) {\n this.log(Object.assign(Object.assign({}, unwrapOptions(payload)), { level: LogLevel.INFO }));\n }\n success(payload) {\n this.log(Object.assign(Object.assign({}, unwrapOptions(payload)), { level: LogLevel.SUCCESS }));\n }\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { isEmpty } from 'lodash-es';\nimport { LogAction, } from './type';\nexport function getColorByLogLevel(type) {\n if (type === 'success') {\n return '#00CC00';\n }\n else if (type === 'warning') {\n return '#CC9900';\n }\n else if (type === 'error') {\n return '#CC3333';\n }\n else {\n return '#0099CC';\n }\n // else if (type === 'debug') {\n // return '#663399';\n // }\n}\n// TODO: 代码可读性优化,参考类似 https://www.npmjs.com/package/styled-log\nfunction doConsole(_a, ...restArgs) {\n var { namespace, scope, level, message, eventName } = _a, rest = __rest(_a, [\"namespace\", \"scope\", \"level\", \"message\", \"eventName\"]);\n const logs = [\n `%c Logger %c ${namespace ? namespace : level}${scope ? ` %c ${scope}` : ''} %c`,\n `background:#444444 ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff`,\n `background:${getColorByLogLevel(level)}; padding: 1px; border-radius: ${scope ? '0' : '0 3px 3px 0'}; color: #fff`,\n scope\n ? `background:#777777; padding: 1px; border-radius: 0 3px 3px 0; color: #fff; margin-left: -1px;`\n : 'background:transparent',\n ];\n if (scope) {\n logs.push('background:transparent');\n }\n logs.push(eventName || message);\n const payload = rest.error ? rest : rest.meta;\n if (!isEmpty(payload)) {\n logs.push(payload);\n }\n logs.push(...restArgs);\n // eslint-disable-next-line no-console\n console.log(...logs);\n}\nexport class ConsoleLogClient {\n send(_a) {\n var { meta, message, eventName, action } = _a, rest = __rest(_a, [\"meta\", \"message\", \"eventName\", \"action\"]);\n // eslint-disable-next-line no-nested-ternary\n const resolvedMsg = message\n ? message\n : eventName\n ? `Event: ${eventName}`\n : undefined;\n // console.log('======', action, resolvedMsg);\n if (!(action === null || action === void 0 ? void 0 : action.includes(LogAction.CONSOLE)) || !resolvedMsg) {\n return;\n }\n const payload = Object.assign(Object.assign({}, rest), { message: resolvedMsg });\n if (meta) {\n doConsole(payload, meta);\n }\n else {\n doConsole(payload);\n }\n }\n}\nexport const consoleLogClient = new ConsoleLogClient();\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { isEmpty } from 'lodash-es';\nfunction mergeLogOption(source1, source2) {\n const { action: action1 = [], meta: meta1 } = source1, rest1 = __rest(source1, [\"action\", \"meta\"]);\n const { action: action2 = [], meta: meta2 } = source2, rest2 = __rest(source2, [\"action\", \"meta\"]);\n const meta = Object.assign(Object.assign({}, meta1), meta2);\n return Object.assign(Object.assign(Object.assign(Object.assign({}, rest1), rest2), { action: [...action1, ...action2] }), (isEmpty(meta) ? {} : { meta }));\n}\nexport class LogOptionsHelper {\n static merge(...list) {\n return list\n .filter(Boolean)\n .reduce((r, c) => mergeLogOption(r, c), {});\n }\n constructor(options) {\n this.options = options;\n }\n updateMeta(updateCb) {\n this.options.meta = updateCb(this.options.meta);\n }\n get() {\n return this.options;\n }\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { BaseLogger } from './base-logger';\nimport { consoleLogClient } from './console-client';\n// import { EventLogger } from './event-logger';\nimport { LogAction } from './type';\nfunction resolveClients(clients, disableConsole) {\n const result = clients.includes(consoleLogClient)\n ? clients\n : [consoleLogClient, ...clients];\n if (disableConsole) {\n return result.filter((item) => item !== consoleLogClient);\n }\n return result;\n}\nexport class Logger extends BaseLogger {\n constructor(_a = {}) {\n var { clients = [] } = _a, rest = __rest(_a, [\"clients\"]);\n super(Object.assign(Object.assign({}, rest), { clients: resolveClients(clients, rest.disableConsole) }));\n // eslint-disable-next-line @typescript-eslint/member-ordering, @typescript-eslint/typedef\n this.persist = super.createLoggerWith({\n ctx: {\n action: [LogAction.CONSOLE, LogAction.PERSIST],\n },\n });\n }\n createLoggerWith(options) {\n return new Logger(this.resolveCloneParams(options));\n }\n}\n// API 测试\n// const logger = new Logger()\n// console.log('test', logger);\n// logger.info('hello world');\n// logger.info({ namespace: 'namespace', scope: 'scope', message: 'message' });\n// logger.info({\n// namespace: 'namespace',\n// scope: 'scope',\n// message: 'message',\n// meta: { custom: 'xx' },\n// });\n// logger.persist.info({ message: '测试上报日志' });\n// logger.persist.info({\n// message: '测试上报事件',\n// eventName: 'test_single_event',\n// });\n// const testEvent = logger.createEvent('test_event', {\n// meta: { custom: 'xx' },\n// });\n// testEvent.start({ meta: { custom: 'xx in start' } });\n// testEvent.success();\n// testEvent.fail({ error: new Error('test') });\n// testEvent.cancel();\n// testEvent.custom.info({ eventName: 'custom_event' });\n// testEvent.auto(async () => {\n// console.log('do something')\n// })\n// 测试 createLoggerWith 类型,TODO:写单测\n// const logger = new Logger();\n// const childLogger = logger.createLoggerWith({\n// ctx: {\n// namespace: 'child',\n// },\n// });\n// const testEventCustom = logger.createEvent('test_event', {\n// meta: { custom: 'xx' },\n// }).custom;\n","/**\n * 日志级别\n */\nexport var LogLevel;\n(function (LogLevel) {\n /**\n * 日志\n */\n LogLevel[\"INFO\"] = \"info\";\n /**\n * 成功日志\n */\n LogLevel[\"SUCCESS\"] = \"success\";\n /**\n * 接口问题导致的错误\n * 不影响用户使用的边缘 case\n * 非核心功能问题\n */\n LogLevel[\"WARNING\"] = \"warning\";\n /**\n * 严重错误\n */\n LogLevel[\"ERROR\"] = \"error\";\n // DEBUG = 'debug', 暂时去掉,目前和 info 重合,后面按需加\n})(LogLevel || (LogLevel = {}));\n/**\n * 日志动作,描述消费日志的行为\n */\nexport var LogAction;\n(function (LogAction) {\n /**\n * 输出到浏览器控制台\n */\n LogAction[\"CONSOLE\"] = \"console\";\n /**\n * 持久化,即上报至平台\n */\n LogAction[\"PERSIST\"] = \"persist\";\n})(LogAction || (LogAction = {}));\n","import { SafeJson } from './json';\nexport class ApiError extends Error {\n constructor(option) {\n super(`httpStatus=${option.httpStatus}, code=${option.code}, message=${option.message}, logId=${option.logId}`);\n this.name = 'ApiError';\n this.errorOption = option;\n }\n}\nexport const getApiErrorRecord = (error) => {\n if (error instanceof ApiError && error.errorOption) {\n const { errorOption } = error;\n return {\n httpStatus: errorOption.httpStatus,\n code: errorOption.code,\n logId: errorOption.logId,\n response: SafeJson.stringify(errorOption.response),\n requestConfig: SafeJson.stringify(errorOption.requestConfig),\n };\n }\n return {};\n};\n","// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isObject(it) {\n // This is necessary because:\n // typeof null === 'object'\n // typeof [] === 'object'\n // [] instanceof Object === true\n return Object.prototype.toString.call(it) === '[object Object]';\n}\n/**\n * Demo:\n * inputObj = {\n * a1: 'a1',\n * b1: { b2: true },\n * deep: {\n * c2: { d3: { test: 'test' }, e3: { f4: { g5: { test: 'deeeeep' } } } },\n * },\n * arr: [1, 2, 3],\n * };\n *\n * toFlatPropertyMap(inputObj) == {\n * \"a1\": \"a1\",\n * \"b1.b2\": true,\n * \"deep.c2.d3.test\": \"test\",\n * \"deep.c2.e3.f4.g5.test\": \"deeeeep\",\n * \"deep.deep.a1\": \"a1\",\n * \"arr\": [\n * 1,\n * 2,\n * 3\n * ]\n * }\n *\n * toFlatPropertyMap(inputObj, { maxDepth: 4 }) == {\n * \"a1\": \"a1\",\n * \"b1.b2\": true,\n * \"deep.c2.d3.test\": \"test\",\n * \"deep.c2.e3.f4\": {\n * \"g5\": {\n * \"test\": \"deeeeep\"\n * }\n * },\n * \"arr\": [\n * 1,\n * 2,\n * 3\n * ]\n * }\n * @param inputObj\n * @param keySeparator\n * @returns\n */\nexport function toFlatPropertyMap(inputObj, options) {\n const { keySeparator = '.', maxDepth } = options || {};\n const flattenRecursive = (obj, propertyMap, depth = 1, parentKey) => {\n for (const [key, value] of Object.entries(obj)) {\n const path = parentKey ? `${parentKey}${keySeparator}${key}` : key;\n const currentDepth = depth + 1;\n if (value && isObject(value) && (!maxDepth || currentDepth <= maxDepth)) {\n flattenRecursive(value, propertyMap, currentDepth, path);\n }\n else {\n propertyMap[path] = value;\n }\n }\n return propertyMap;\n };\n const result = {};\n return flattenRecursive(inputObj, result);\n}\n","import { ApiError, getApiErrorRecord } from './api-request-error';\nexport var ErrorType;\n(function (ErrorType) {\n /**\n * API httpCode 非 200\n */\n ErrorType[\"ApiError\"] = \"ApiError\";\n /**\n * API httpCode 200,业务 Code 存在异常\n */\n ErrorType[\"ApiBizError\"] = \"ApiBizError\";\n /**\n * 未归类的错误\n */\n ErrorType[\"Unknown\"] = \"Unknown\";\n})(ErrorType || (ErrorType = {}));\nexport const getErrorType = (error) => {\n var _a;\n if (!error) {\n return ErrorType.Unknown;\n }\n if (error instanceof ApiError) {\n // 优先用业务给的 api error type\n if ((_a = error.errorOption) === null || _a === void 0 ? void 0 : _a.errorType) {\n return error.errorOption.errorType;\n }\n return ErrorType.ApiError;\n }\n return ErrorType.Unknown;\n};\nexport const getErrorRecord = (error) => {\n if (!error) {\n return {};\n }\n return Object.assign(Object.assign({}, getApiErrorRecord(error)), { message: error.message, stack: error.stack, type: getErrorType(error) });\n};\n","export const SafeJson = (() => {\n const stringify = (sth) => {\n try {\n return JSON.stringify(sth);\n }\n catch (e) {\n console.error(e);\n return `JSON stringify Error: ${e.message}`;\n }\n };\n const parse = (sth) => {\n try {\n return JSON.parse(sth || '');\n }\n catch (e) {\n console.error(e);\n return null;\n }\n };\n return {\n stringify,\n parse,\n };\n})();\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { isNumber, isString, mapValues, omitBy, isNil } from 'lodash-es';\nimport { LogAction, LogLevel, getErrorRecord, SafeJson, toFlatPropertyMap, } from '../core';\nconst levelMap = {\n [LogLevel.INFO]: 'info',\n [LogLevel.SUCCESS]: 'success',\n [LogLevel.WARNING]: 'warn',\n [LogLevel.ERROR]: 'error',\n};\nfunction logLevelToSlardarLevel(level = LogLevel.INFO) {\n return levelMap[level];\n}\n/**\n * 将 meta 根据类型转换成\n * - 指标 metrics:可以被度量的值,也就是数值\n * - 维度 categories:分类,维度,用来做筛选,分组\n * https://bytedance.feishu.cn/docs/doccnBXKovvHEZ2tG2dBdf2xoOh#\n * @param meta\n * @returns\n */\nfunction metaToMetricsCategories(meta) {\n const metrics = {};\n const categories = {};\n for (const k in meta) {\n const val = meta[k];\n if (isNumber(val)) {\n metrics[k] = val;\n }\n else {\n categories[k] = isString(val) ? val : SafeJson.stringify(val);\n }\n }\n return {\n metrics,\n categories,\n };\n}\n/**\n * Record => Record\n */\nfunction normalizeExtra(record) {\n const result = {};\n for (const k in record) {\n const val = record[k];\n if (isNumber(val) || isString(val)) {\n result[k] = val;\n }\n else {\n result[k] = SafeJson.stringify(val);\n }\n }\n return result;\n}\nexport class SlardarReportClient {\n constructor(slardarInstance) {\n // 业务项目里可能有多个 slardar 版本,多个版本的类型不兼容,constructor 里约束版本会存在问题 => 放开。\n this.slardarInstance = slardarInstance;\n if (!this.slardarInstance) {\n console.warn('expected slardarInstance but get undefined/null');\n }\n }\n send(options) {\n var _a, _b, _c, _d;\n if (!((_a = options.action) === null || _a === void 0 ? void 0 : _a.includes(LogAction.PERSIST))) {\n // 非持久化日志,不上报\n return;\n }\n const { level, message, action, eventName, meta, error } = options, rest = __rest(options, [\"level\", \"message\", \"action\", \"eventName\", \"meta\", \"error\"]);\n // Slardar API:https://bytedance.feishu.cn/wiki/wikcngEnmUajGyuNL9TksufU4ub\n const resolveMeta = (inputs) => toFlatPropertyMap(Object.assign(Object.assign(Object.assign({}, rest), inputs), { error: getErrorRecord(error), level: logLevelToSlardarLevel(level) }), {\n maxDepth: 4,\n });\n if (level === LogLevel.ERROR && (meta === null || meta === void 0 ? void 0 : meta.reportJsError) === true) {\n const _e = meta || {}, { reportJsError, reactInfo } = _e, restMeta = __rest(_e, [\"reportJsError\", \"reactInfo\"]);\n const resolvedMeta = resolveMeta(Object.assign(Object.assign({}, restMeta), { message,\n eventName }));\n // 上报 JS 异常\n (_b = this.slardarInstance) === null || _b === void 0 ? void 0 : _b.call(this, 'captureException', error, omitBy(mapValues(resolvedMeta, (v) => {\n return isString(v) ? v : SafeJson.stringify(v);\n }), isNil), reactInfo);\n }\n else if (eventName) {\n const resolvedMeta = resolveMeta(Object.assign({}, meta));\n const { metrics, categories } = metaToMetricsCategories(resolvedMeta);\n // 上报独立的事件\n (_c = this.slardarInstance) === null || _c === void 0 ? void 0 : _c.call(this, 'sendEvent', {\n name: eventName,\n metrics,\n categories,\n });\n }\n else if (message) {\n const resolvedMeta = resolveMeta(Object.assign({}, meta));\n // 上报日志\n (_d = this.slardarInstance) === null || _d === void 0 ? void 0 : _d.call(this, 'sendLog', {\n // level: logLevelToSlardarLevel(level),\n content: message,\n // slardar 内部会对 extra 处理分类,number 类型的字段放入 metrics,其他放入 categories\n extra: normalizeExtra(resolvedMeta),\n });\n }\n }\n}\nexport * from './forwardToTea';\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isObject(o) {\n return typeof o === 'object' && o !== null;\n}\nfunction isNumber(o) {\n return typeof o === 'number';\n}\nfunction isString(o) {\n return typeof o === 'string';\n}\n\nfunction safeStringify(a) {\n try {\n return isString(a) ? a : JSON.stringify(a);\n }\n catch (err) {\n return '[FAILED_TO_STRINGIFY]:' + String(err);\n }\n}\n\nvar now = function () { return Date.now(); };\n\nvar CUSTOM_EV_TYPE = 'custom';\n\nvar CUSTOM_EVENT_TYPE = 'event';\nvar CUSTOM_LOG_TYPE = 'log';\nvar normalizeCustomEventData = function (raw) {\n if (!raw || !isObject(raw)) {\n return;\n }\n // name is required\n if (!raw['name'] || !isString(raw['name'])) {\n return;\n }\n var res = {\n name: raw['name'],\n type: CUSTOM_EVENT_TYPE,\n };\n if ('metrics' in raw && isObject(raw['metrics'])) {\n var rMetrics = raw['metrics'];\n var metrics = {};\n for (var k in rMetrics) {\n if (isNumber(rMetrics[k])) {\n metrics[k] = rMetrics[k];\n }\n }\n res.metrics = metrics;\n }\n if ('categories' in raw && isObject(raw['categories'])) {\n var rCategories = raw['categories'];\n var categories = {};\n for (var k in rCategories) {\n categories[k] = safeStringify(rCategories[k]);\n }\n res.categories = categories;\n }\n return res;\n};\nvar normalizeCustomLogData = function (raw) {\n if (!raw || !isObject(raw)) {\n return;\n }\n // content is required\n if (!raw['content'] || !isString(raw['content'])) {\n return;\n }\n var rContent = raw['content'];\n var res = {\n content: safeStringify(rContent),\n type: CUSTOM_LOG_TYPE,\n level: 'info',\n };\n if ('level' in raw) {\n res.level = raw['level'];\n }\n if ('extra' in raw && isObject(raw['extra'])) {\n var rExtra = raw['extra'];\n var metrics = {};\n var categories = {};\n for (var k in rExtra) {\n if (isNumber(rExtra[k])) {\n metrics[k] = rExtra[k];\n }\n else {\n categories[k] = safeStringify(rExtra[k]);\n }\n }\n res.metrics = metrics;\n res.categories = categories;\n }\n return res;\n};\nvar CustomPlugin = function (client) {\n var sendEvent = function (data) {\n var normalized = normalizeCustomEventData(data);\n if (normalized) {\n client.report({\n ev_type: CUSTOM_EV_TYPE,\n payload: normalized,\n extra: {\n timestamp: now(),\n },\n });\n }\n };\n var sendLog = function (data) {\n var normalized = normalizeCustomLogData(data);\n if (normalized) {\n client.report({\n ev_type: CUSTOM_EV_TYPE,\n payload: normalized,\n extra: {\n timestamp: now(),\n },\n });\n }\n };\n client.provide('sendEvent', sendEvent);\n client.provide('sendLog', sendLog);\n};\n\nvar CUSTOM_INTEGRATION_NAME = 'custom';\nvar customPlugin = function () { return ({\n name: CUSTOM_INTEGRATION_NAME,\n setup: function (client) {\n CustomPlugin(client);\n },\n}); };\n\nexports.CUSTOM_INTEGRATION_NAME = CUSTOM_INTEGRATION_NAME;\nexports.customPlugin = customPlugin;\n//# sourceMappingURL=custom.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar noop = function () { return ({}); };\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isObject(o) {\n return typeof o === 'object' && o !== null;\n}\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n }\n catch (_e) {\n return false;\n }\n}\nvar objProto = Object.prototype;\n// https://stackoverflow.com/a/5878101\nfunction isPlainObject(o) {\n if (isObject(o)) {\n if (typeof Object.getPrototypeOf === 'function') {\n var proto = Object.getPrototypeOf(o);\n return proto === objProto || proto === null;\n }\n // cannot test, requires ES3\n /* istanbul ignore next */\n return objProto.toString.call(o) === '[object Object]';\n }\n return false;\n}\nfunction isArray(o) {\n return objProto.toString.call(o) === '[object Array]';\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isFunction(o) {\n return typeof o === 'function';\n}\nfunction isString(o) {\n return typeof o === 'string';\n}\nfunction isError(wat) {\n switch (Object.prototype.toString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n /* istanbul ignore next */\n return true;\n case '[object DOMError]':\n return true;\n case '[object DOMException]':\n /* istanbul ignore next */\n return true;\n default:\n /* istanbul ignore next */\n return wat instanceof Error;\n }\n}\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\nfunction isErrorEvent(what) {\n return Object.prototype.toString.call(what) === '[object ErrorEvent]';\n}\nfunction isPromiseRejectionEvent(what) {\n return Object.prototype.toString.call(what) === '[object PromiseRejectionEvent]';\n}\n\nvar pick = function (obj, keys) {\n if (!obj || !isObject(obj))\n return obj;\n return keys.reduce(function (prev, cur) {\n prev[cur] = obj[cur];\n return prev;\n }, {});\n};\n\nfunction getRegexp(ignore) {\n if (!isArray(ignore)) {\n return null;\n }\n return ignore.length ? joinRegExp(ignore) : null;\n}\nfunction joinRegExp(patterns) {\n var sources = [];\n var len = patterns.length;\n for (var i = 0; i < len; i++) {\n var pattern = patterns[i];\n if (isString(pattern)) {\n sources.push(pattern.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'));\n }\n else if (pattern && pattern.source) {\n sources.push(pattern.source);\n }\n }\n return new RegExp(sources.join('|'), 'i');\n}\nfunction safeStringify(a) {\n try {\n return isString(a) ? a : JSON.stringify(a);\n }\n catch (err) {\n return '[FAILED_TO_STRINGIFY]:' + String(err);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\n/**\n * You can feel free to restore when you hook a function.\n * But you ought to restore 「in order」 if you hooked a value reference or a real obj reference.Because we not store the last value referent for now.\n * eg: obj.a = 1;\n * const r_1 = hookObjectProperty(obj, 'a',() =>2)()\n * const r_2 = hookObjectProperty(obj, 'a',() =>3)()\n * r_2() // obj.a === 2\n * r_1() // obj.a === 1\n *\n * @template T\n * @template K\n * @template P\n * @param {T} obj\n * @param {K} key\n * @param {(origin: T[K], ...params: P) => T[K]} hookFunc\n * @param {boolean} isCatchError When an error occurs after calling a hooked function, we want to suppress the errors and try to call the original function by default.\n * @return {*}\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nvar hookObjectProperty = function (obj, key, hookFunc, isCatchError) {\n if (isCatchError === void 0) { isCatchError = true; }\n return function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n if (!obj) {\n return noop;\n }\n var origin = obj[key];\n var hookedUnsafe = hookFunc.apply(void 0, __spreadArray([origin], __read(params), false));\n var hooked = hookedUnsafe;\n // 给所有 hook 之后的方法包一层 try catch\n if (isFunction(hooked) && isCatchError) {\n hooked = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n try {\n return hookedUnsafe.apply(this, args);\n }\n catch (_a) {\n return isFunction(origin) && origin.apply(this, args);\n }\n };\n }\n obj[key] = hooked;\n // strict: is break\n return function (strict) {\n if (!strict) {\n hooked === obj[key] ? (obj[key] = origin) : (hookedUnsafe = origin);\n }\n };\n };\n};\n\n/**\n * 将tearDownGroup 注册到 destroyAgent,destroyAgent会在实例销毁时自动销毁tearDownGroup\n */\nvar registerTearDownGroup = function (client, pluginName, evType, tearDownGroup) {\n return client.destroyAgent.set(pluginName, evType, tearDownGroup);\n};\n\n/**\n * 由于 Observer 带有自动销毁机制,意味着subject 只支持同步注册并使用\n */\nfunction initSubjectInGlobal(client, args) {\n return client.initSubject(args);\n}\n\nfunction getDefaultBrowser() {\n if (typeof window === 'object' && isObject(window))\n return window;\n}\nfunction getDefaultXMLHttpRequest() {\n if (typeof XMLHttpRequest === 'function' && isFunction(XMLHttpRequest))\n return XMLHttpRequest;\n}\n\n// 获取全局注册表\nvar getGlobalRegistry = function (global) {\n if (!global)\n return;\n if (!global.__SLARDAR_REGISTRY__) {\n global.__SLARDAR_REGISTRY__ = {\n Slardar: {\n plugins: [],\n errors: [],\n subject: {},\n },\n };\n }\n return global.__SLARDAR_REGISTRY__.Slardar;\n};\nvar reportSelfError = function () {\n var errorInfo = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n errorInfo[_i] = arguments[_i];\n }\n var registry = getGlobalRegistry(getDefaultBrowser());\n if (!registry)\n return;\n if (!registry.errors) {\n registry.errors = [];\n }\n registry.errors.push(errorInfo);\n};\n\nvar getConfig = function (c, defaultConfig) {\n if (isObject(c)) {\n return __assign(__assign({}, defaultConfig), c);\n }\n else {\n return c ? defaultConfig : false;\n }\n};\n\nvar JS_ERROR_EV_TYPE = 'js_error';\n\nfunction getPluginConfig(client, pluginName, defaultConfig) {\n var _a;\n var c = (_a = client.config()) === null || _a === void 0 ? void 0 : _a.plugins[pluginName];\n return getConfig(c, defaultConfig);\n}\n\nvar ERROR_FIELDS = ['name', 'message', 'stack', 'filename', 'lineno', 'colno'];\nvar normalize = function (ex) {\n var error;\n if (!isError(ex)) {\n if (isPlainObject(ex) || isEvent(ex) || isString(ex)) {\n error = {\n message: safeStringify(ex),\n };\n }\n }\n else {\n error = pick(ex, ERROR_FIELDS);\n }\n return error;\n};\nvar normalizeError = function (event) {\n return normalize(event.error);\n};\nvar normalizeException = function (event) {\n var _a;\n // dig the object of the rejection out of known event types\n try {\n var error = void 0;\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in event) {\n error = event.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in event && 'reason' in event.detail) {\n error = event.detail.reason;\n }\n if (error) {\n var rejectionError = normalize(error);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n return __assign(__assign({}, rejectionError), { name: (_a = (rejectionError && rejectionError.name)) !== null && _a !== void 0 ? _a : 'UnhandledRejection' });\n }\n }\n catch (_oO) {\n // no-empty\n }\n};\nvar normalizeUnknownError = function (exception) {\n if (isErrorEvent(exception)) {\n return normalizeError(exception);\n }\n else if (isPromiseRejectionEvent(exception)) {\n return normalizeException(exception);\n }\n else {\n return normalize(exception);\n }\n};\n\nvar DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'ChannelMergerNode',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'MessagePort',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\nvar DEFAULT_TIME_FUNCTION = [\n 'setTimeout',\n 'setInterval',\n 'requestAnimationFrame',\n 'requestIdleCallback',\n];\nvar xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\nvar ADD_EVENT_LISTENER = 'addEventListener';\nvar REMOVE_EVENT_LISTENER = 'removeEventListener';\nvar DEFAULT_SOURCE_TYPE = 'capture-global';\nvar observeAsyncErrorWithSource = function (next, tearDown) {\n var window = getDefaultBrowser();\n var xhr = getDefaultXMLHttpRequest();\n var restoreFns = [];\n var wrap = function (fn, sourceData) {\n if (!isFunction(fn))\n return fn;\n var source = {\n type: DEFAULT_SOURCE_TYPE,\n data: __assign({}, sourceData),\n };\n var hookFn = (fn._w_ || (fn._w_ = function () {\n try {\n // NOTE: If you are a Slardar user, and you are seeing this stack frame, it\n // means the Slardar SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with Slardar SDK.\n return (fn.handleEvent && isFunction(fn.handleEvent) ? fn.handleEvent : fn).apply(this, [].map.call(arguments, function (arg) { return wrap(arg, sourceData); }));\n }\n catch (e) {\n var error = normalize(e);\n error && next({ source: source, error: error });\n throw e;\n }\n }));\n hookFn._hook_ = true;\n return hookFn;\n };\n window && restoreFns.push.apply(restoreFns, __spreadArray([], __read(DEFAULT_TIME_FUNCTION.filter(function (timeFunc) { return window[timeFunc]; }).map(function (timeFunc) {\n return hookObjectProperty(window, timeFunc, function (origin) {\n return function (handler) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n return (origin && origin.call.apply(origin, __spreadArray([this,\n wrap(handler, {\n function: timeFunc,\n })], __read(params), false)));\n };\n }, false)();\n })), false));\n xhr &&\n xhr.prototype &&\n restoreFns.push(hookObjectProperty(xhr.prototype, 'send', function (origin) {\n return function () {\n var _this = this;\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n // filter 防御一个 xhr 实例被多次 send 导致 wrap 多次的情况\n xmlHttpRequestProps\n .filter(function (prop) { return _this[prop] && !_this[prop]._hook_; })\n .forEach(function (prop) {\n // never restore xhr instance callback\n _this[prop] = wrap(_this[prop], { function: prop });\n });\n return origin.apply(this, params);\n };\n }, false)());\n DEFAULT_EVENT_TARGET.forEach(function (target) {\n var proto = window && window[target] && window[target].prototype;\n if (!proto || !proto[ADD_EVENT_LISTENER]) {\n return;\n }\n restoreFns.push(hookObjectProperty(proto, ADD_EVENT_LISTENER, function (origin) {\n return function (evName, fn, options) {\n try {\n var handleEventFn = fn.handleEvent;\n if (isFunction(handleEventFn)) {\n fn.handleEvent = wrap(handleEventFn, { function: 'handleEvent', target: target });\n }\n }\n catch (_a) {\n //\n }\n return origin && origin.call(this, evName, wrap(fn, { function: ADD_EVENT_LISTENER, target: target }), options);\n };\n }, false)());\n restoreFns.push(hookObjectProperty(proto, REMOVE_EVENT_LISTENER, function (origin) {\n return function (eventName, fn, options) {\n if (fn === null || fn === void 0 ? void 0 : fn._w_) {\n origin.call(this, eventName, fn._w_, options);\n }\n return origin.call(this, eventName, fn, options);\n };\n }, false)());\n });\n tearDown(function () { return restoreFns.forEach(function (fn) { return fn(); }); });\n};\nvar ASYNC_ERROR_SUBJECT_NAME = 'async_error_0';\nvar asyncErrorWithSourceSubject = [\n ASYNC_ERROR_SUBJECT_NAME,\n observeAsyncErrorWithSource,\n];\n\nvar ERROR_SUBJECT_NAME = 'err_0';\nvar observeError = function (next, tearDown) {\n var window = getDefaultBrowser();\n if (!window)\n return;\n window.addEventListener('error', next, true);\n tearDown(function () {\n window.removeEventListener('error', next, true);\n });\n};\nvar errorSubject = [ERROR_SUBJECT_NAME, observeError];\nvar PROMISE_REJECTION_SUBJECT_NAME = 'perr_0';\nvar observePromiseRejection = function (next, tearDown) {\n var window = getDefaultBrowser();\n if (!window)\n return;\n window.addEventListener('unhandledrejection', next, true);\n tearDown(function () {\n window.removeEventListener('unhandledrejection', next, true);\n });\n};\nvar promiseRejectionSubject = [\n PROMISE_REJECTION_SUBJECT_NAME,\n observePromiseRejection,\n];\n\nvar isSameErrorString = function (current, previous) {\n return current && previous && current === previous;\n};\nvar shouldDropEvent = function (currentError, previousError) {\n if (!currentError || !previousError) {\n return false;\n }\n if (isSameErrorString(currentError.message, previousError.message) &&\n isSameErrorString(currentError.stack, previousError.stack)) {\n return true;\n }\n return false;\n};\nvar dedupe = function () {\n var __previousError;\n return function (currentError) {\n // just in case something goes wrong\n try {\n if (shouldDropEvent(currentError, __previousError)) {\n __previousError = currentError;\n return undefined;\n }\n }\n catch (e) {\n reportSelfError(e);\n }\n __previousError = currentError;\n return currentError;\n };\n};\n\nvar jsErrorGetterWithContext = function (report, tearDownGroup, _a, config) {\n var _b = __read(_a, 3), errorObserver = _b[0], promiseRejectionObserver = _b[1], getAsyncErrorWithSourceObserver = _b[2];\n var ignoreErrors = config.ignoreErrors, onerror = config.onerror, onunhandledrejection = config.onunhandledrejection, dedupeFlag = config.dedupe, captureGlobalAsync = config.captureGlobalAsync;\n var ignoreRegExp = getRegexp(ignoreErrors);\n var dedupeFn = dedupe();\n var reportJsError = function (_a) {\n var error = _a.error, extra = _a.extra, react = _a.react, source = _a.source;\n var err = dedupeFlag ? dedupeFn(error) : error;\n if (!err || !err.message || (ignoreRegExp && ignoreRegExp.test(err.message))) {\n return;\n }\n report({\n ev_type: JS_ERROR_EV_TYPE,\n payload: {\n error: err,\n breadcrumbs: [],\n extra: extra,\n react: react,\n source: source,\n },\n });\n };\n onerror &&\n tearDownGroup.push(errorObserver[0](function (ev) { return reportJsError({ error: normalizeError(ev), source: { type: 'onerror' } }); }));\n onunhandledrejection &&\n tearDownGroup.push(promiseRejectionObserver[0](function (ev) {\n return reportJsError({ error: normalizeException(ev), source: { type: 'onunhandledrejection' } });\n }));\n captureGlobalAsync &&\n tearDownGroup.push(getAsyncErrorWithSourceObserver()[0](function (jsErrorPayload) {\n reportJsError(jsErrorPayload);\n }));\n return function (err, extra, react) {\n return reportJsError({ error: normalizeUnknownError(err), extra: extra, react: react, source: { type: 'manual' } });\n };\n};\n\nvar JS_ERROR_MONITOR_PLUGIN_NAME = 'jsError';\nvar defaultConfig = {\n ignoreErrors: [],\n onerror: true,\n onunhandledrejection: true,\n captureGlobalAsync: false,\n dedupe: true,\n};\nfunction JsErrorMonitorPlugin(client) {\n client.on('init', function () {\n // stop precollect listener no matter what is configured\n window.removeEventListener('error', client.pcErr, true);\n window.removeEventListener('unhandledrejection', client.pcRej, true);\n var config = getPluginConfig(client, JS_ERROR_MONITOR_PLUGIN_NAME, defaultConfig);\n if (!config) {\n return;\n }\n var tearDownGroup = [];\n var reportJsError = jsErrorGetterWithContext(function (ev) {\n client.getBreadcrumbs && (ev.payload.breadcrumbs = client.getBreadcrumbs());\n client.report(ev);\n }, tearDownGroup, [\n initSubjectInGlobal(client, errorSubject),\n initSubjectInGlobal(client, promiseRejectionSubject),\n function () { return initSubjectInGlobal(client, asyncErrorWithSourceSubject); },\n ], config);\n registerTearDownGroup(client, JS_ERROR_MONITOR_PLUGIN_NAME, JS_ERROR_EV_TYPE, tearDownGroup);\n client.provide('captureException', reportJsError);\n });\n}\n\nvar JS_ERROR_INTEGRATION_NAME = JS_ERROR_MONITOR_PLUGIN_NAME;\nvar jsErrorPlugin = function () { return ({\n name: JS_ERROR_INTEGRATION_NAME,\n setup: function (client) {\n JsErrorMonitorPlugin(client);\n },\n}); };\n\nexports.JS_ERROR_INTEGRATION_NAME = JS_ERROR_INTEGRATION_NAME;\nexports.jsErrorPlugin = jsErrorPlugin;\n//# sourceMappingURL=jsError.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar DEFAULT_SIZE = 10;\nvar DEFAULT_WAIT = 1000;\nvar stringifyBatch = function (list) {\n return JSON.stringify({\n ev_type: 'batch',\n list: list,\n });\n};\nfunction createBatchSender(config) {\n var transport = config.transport;\n var endpoint = config.endpoint, _a = config.size, size = _a === void 0 ? DEFAULT_SIZE : _a, _b = config.wait, wait = _b === void 0 ? DEFAULT_WAIT : _b;\n var batch = [];\n var tid = 0;\n var fail;\n var sender = {\n getSize: function () {\n return size;\n },\n getWait: function () {\n return wait;\n },\n setSize: function (v) {\n size = v;\n },\n setWait: function (v) {\n wait = v;\n },\n getEndpoint: function () {\n return endpoint;\n },\n setEndpoint: function (v) {\n endpoint = v;\n },\n send: function (e) {\n batch.push(e);\n if (batch.length >= size) {\n sendBatch.call(this);\n }\n clearTimeout(tid);\n tid = setTimeout(sendBatch.bind(this), wait);\n },\n flush: function () {\n clearTimeout(tid);\n sendBatch.call(this);\n },\n getBatchData: function () {\n return batch.length ? stringifyBatch(batch) : '';\n },\n clear: function () {\n clearTimeout(tid);\n batch = [];\n },\n fail: function (cb) {\n fail = cb;\n },\n };\n function sendBatch() {\n if (!batch.length) {\n return;\n }\n var data = this.getBatchData();\n transport.post({\n url: endpoint,\n data: data,\n fail: function (err) {\n fail && fail(err, data);\n },\n });\n batch = [];\n }\n return sender;\n}\n\nvar EVENTS = [\n 'init',\n 'start',\n 'config',\n 'beforeDestroy',\n 'provide',\n 'beforeReport',\n 'report',\n 'beforeBuild',\n 'build',\n 'beforeSend',\n 'send',\n 'beforeConfig',\n];\n\nvar noop = function () { return ({}); };\nfunction id(v) {\n return v;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isObject(o) {\n return typeof o === 'object' && o !== null;\n}\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n }\n catch (_e) {\n return false;\n }\n}\nvar objProto = Object.prototype;\n// https://stackoverflow.com/a/5878101\nfunction isPlainObject(o) {\n if (isObject(o)) {\n if (typeof Object.getPrototypeOf === 'function') {\n var proto = Object.getPrototypeOf(o);\n return proto === objProto || proto === null;\n }\n // cannot test, requires ES3\n /* istanbul ignore next */\n return objProto.toString.call(o) === '[object Object]';\n }\n return false;\n}\nfunction isArray(o) {\n return objProto.toString.call(o) === '[object Array]';\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isFunction(o) {\n return typeof o === 'function';\n}\nfunction isBoolean(o) {\n return typeof o === 'boolean';\n}\nfunction isNumber(o) {\n return typeof o === 'number';\n}\nfunction isString(o) {\n return typeof o === 'string';\n}\nfunction isError(wat) {\n switch (Object.prototype.toString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n /* istanbul ignore next */\n return true;\n case '[object DOMError]':\n return true;\n case '[object DOMException]':\n /* istanbul ignore next */\n return true;\n default:\n /* istanbul ignore next */\n return wat instanceof Error;\n }\n}\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\nfunction isErrorEvent(what) {\n return Object.prototype.toString.call(what) === '[object ErrorEvent]';\n}\nfunction isPromiseRejectionEvent(what) {\n return Object.prototype.toString.call(what) === '[object PromiseRejectionEvent]';\n}\n\nfunction hasKey(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n// 把source对象中的内容深度赋给target, 数组合并\nfunction mergeDeepConcatArray() {\n var source = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n source[_i] = arguments[_i];\n }\n var result = {};\n var k = 0;\n while (k < source.length) {\n result = _mergeDeepMergeArray(result, source[k++]);\n }\n return result;\n}\n// 递归赋值\nfunction _mergeDeepMergeArray(target, source) {\n var result = __assign({}, target);\n for (var key in source) {\n if (hasKey(source, key) && source[key] !== undefined) {\n if (isObject(source[key]) && isPlainObject(source[key])) {\n result[key] = _mergeDeepMergeArray(isObject(target[key]) ? target[key] : {}, source[key]);\n }\n else if (isArray(source[key]) && isArray(target[key])) {\n result[key] = _mergeDeepArray(target[key], source[key]);\n }\n else {\n result[key] = source[key];\n }\n }\n }\n return result;\n}\nfunction _mergeDeepArray(target, source) {\n var _target = isArray(target) ? target : [];\n var _source = isArray(source) ? source : [];\n return Array.prototype.concat.call(_target, _source).map(function (v) {\n if (v instanceof RegExp) {\n return v;\n }\n else if (isObject(v) && isPlainObject(v)) {\n return _mergeDeepMergeArray({}, v);\n }\n else if (isArray(v)) {\n return _mergeDeepArray([], v);\n }\n else {\n return v;\n }\n });\n}\n// 检查数组中是否有元素\nfunction arrayIncludes(array, value) {\n if (!isArray(array)) {\n return false;\n }\n if (array.length === 0) {\n return false;\n }\n var k = 0;\n while (k < array.length) {\n if (array[k] === value) {\n return true;\n }\n k++;\n }\n return false;\n}\nvar arrayRemove = function (arr, e) {\n if (!isArray(arr)) {\n return arr;\n }\n var i = arr.indexOf(e);\n if (i >= 0) {\n var arr_ = arr.slice();\n arr_.splice(i, 1);\n return arr_;\n }\n return arr;\n};\n/**\n * 按路径访问对象属性\n * @param target 待访问对象\n * @param property 访问属性路径\n * @param { (target: any, property: string): any } visitor 访问器\n */\nvar safeVisit = function (target, path, visitor) {\n var _a, _b;\n var paths = path.split('.');\n var _c = __read(paths), method = _c[0], rest = _c.slice(1);\n while (target && rest.length > 0) {\n target = target[method];\n _a = rest, _b = __read(_a), method = _b[0], rest = _b.slice(1);\n }\n if (!target) {\n return undefined;\n }\n return visitor(target, method);\n};\n/**\n * 按路径调用函数\n * @param target 待调用对象,如 `client`\n * @param methods 待调用方法路径,可能是一级路径 `client.start`, 或者是多级命令 `client.context.set`\n * @param args 调用参数\n */\nvar safeCall = function (target, method, args) {\n return safeVisit(target, method, function (obj, property) {\n if (obj && property in obj && isFunction(obj[property])) {\n try {\n return obj[property].apply(obj, args);\n }\n catch (err) {\n // ignore\n return undefined;\n }\n }\n });\n};\nvar applyRecord = function () {\n var record = {};\n var set = function (key, val) { return (record[key] = val); };\n var del = function (key) { return delete record[key]; };\n return [record, set, del];\n};\nvar pick = function (obj, keys) {\n if (!obj || !isObject(obj))\n return obj;\n return keys.reduce(function (prev, cur) {\n prev[cur] = obj[cur];\n return prev;\n }, {});\n};\n\nvar camelToKebab = function (str) {\n return str.replace(/([a-z])([A-Z])/g, function (_, a, b) { return a + \"-\" + b.toLowerCase(); });\n};\nfunction getRegexp(ignore) {\n if (!isArray(ignore)) {\n return null;\n }\n return ignore.length ? joinRegExp(ignore) : null;\n}\nfunction joinRegExp(patterns) {\n var sources = [];\n var len = patterns.length;\n for (var i = 0; i < len; i++) {\n var pattern = patterns[i];\n if (isString(pattern)) {\n sources.push(pattern.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'));\n }\n else if (pattern && pattern.source) {\n sources.push(pattern.source);\n }\n }\n return new RegExp(sources.join('|'), 'i');\n}\nfunction safeStringify(a) {\n try {\n return isString(a) ? a : JSON.stringify(a);\n }\n catch (err) {\n return '[FAILED_TO_STRINGIFY]:' + String(err);\n }\n}\n\nfunction createContextAgent() {\n var context = {};\n var stringified = {};\n var contextAgent = {\n set: function (k, v) {\n context[k] = v;\n stringified[k] = safeStringify(v);\n return contextAgent;\n },\n merge: function (ctx) {\n context = __assign(__assign({}, context), ctx);\n Object.keys(ctx).forEach(function (key) {\n stringified[key] = safeStringify(ctx[key]);\n });\n return contextAgent;\n },\n delete: function (k) {\n delete context[k];\n delete stringified[k];\n return contextAgent;\n },\n clear: function () {\n context = {};\n stringified = {};\n return contextAgent;\n },\n get: function (k) {\n return stringified[k];\n },\n toString: function () {\n return __assign({}, stringified);\n },\n };\n return contextAgent;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\n/**\n * You can feel free to restore when you hook a function.\n * But you ought to restore 「in order」 if you hooked a value reference or a real obj reference.Because we not store the last value referent for now.\n * eg: obj.a = 1;\n * const r_1 = hookObjectProperty(obj, 'a',() =>2)()\n * const r_2 = hookObjectProperty(obj, 'a',() =>3)()\n * r_2() // obj.a === 2\n * r_1() // obj.a === 1\n *\n * @template T\n * @template K\n * @template P\n * @param {T} obj\n * @param {K} key\n * @param {(origin: T[K], ...params: P) => T[K]} hookFunc\n * @param {boolean} isCatchError When an error occurs after calling a hooked function, we want to suppress the errors and try to call the original function by default.\n * @return {*}\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nvar hookObjectProperty = function (obj, key, hookFunc, isCatchError) {\n if (isCatchError === void 0) { isCatchError = true; }\n return function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n if (!obj) {\n return noop;\n }\n var origin = obj[key];\n var hookedUnsafe = hookFunc.apply(void 0, __spreadArray([origin], __read(params), false));\n var hooked = hookedUnsafe;\n // 给所有 hook 之后的方法包一层 try catch\n if (isFunction(hooked) && isCatchError) {\n hooked = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n try {\n return hookedUnsafe.apply(this, args);\n }\n catch (_a) {\n return isFunction(origin) && origin.apply(this, args);\n }\n };\n }\n obj[key] = hooked;\n // strict: is break\n return function (strict) {\n if (!strict) {\n hooked === obj[key] ? (obj[key] = origin) : (hookedUnsafe = origin);\n }\n };\n };\n};\n/**\n * 劫持对象方法\n * 必须记得给 hookFunc 劫持的方法包 try catch !\n * 不在本方法里包是为了避免对象原方法被调用两次\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nvar hookMethodDangerously = function (obj, key, hookFunc) {\n return function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n if (!obj) {\n return noop;\n }\n var origin = obj[key];\n var hookedUnsafe = hookFunc.apply(void 0, __spreadArray([origin], __read(params), false));\n var hooked = hookedUnsafe;\n if (isFunction(hooked)) {\n hooked = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return hookedUnsafe.apply(this, args);\n };\n }\n obj[key] = hooked;\n return function () {\n hooked === obj[key] ? (obj[key] = origin) : (hookedUnsafe = origin);\n };\n };\n};\n\nvar errCount = 0;\nvar error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line no-console\n console.error.apply(console, __spreadArray(['[SDK]', Date.now(), (\"\" + errCount++).padStart(8, ' ')], __read(args), false));\n};\nvar warnCount = 0;\nvar warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line no-console\n console.warn.apply(console, __spreadArray(['[SDK]', Date.now(), (\"\" + warnCount++).padStart(8, ' ')], __read(args), false));\n};\n\nvar isHitBySampleRate = function (sampleRate) {\n if (Math.random() < Number(sampleRate)) {\n return true;\n }\n return false;\n};\nvar isHitByRandom = function (random, sampleRate) {\n if (random < Number(sampleRate)) {\n return true;\n }\n return false;\n};\n\nvar runProcessors = function (fns) {\n return function (e) {\n var r = e;\n for (var i = 0; i < fns.length; i++) {\n if (r) {\n try {\n r = fns[i](r);\n }\n catch (err) {\n error(err);\n }\n }\n else {\n break;\n }\n }\n return r;\n };\n};\n\n/**\n * 生成uuid\n * stolen from https://github.com/kelektiv/node-uuid#readme uuid/v4\n *\n * @returns\n */\nfunction mathRNG() {\n var rnds = new Array(16);\n var r = 0;\n for (var i = 0; i < 16; i++) {\n if ((i & 0x03) === 0) {\n r = Math.random() * 0x100000000;\n }\n rnds[i] = (r >>> ((i & 0x03) << 3)) & 0xff;\n }\n return rnds;\n}\nfunction bytesToUuid(buf) {\n var byteToHex = [];\n for (var index = 0; index < 256; ++index) {\n byteToHex[index] = (index + 0x100).toString(16).substr(1);\n }\n var i = 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return [\n bth[buf[i++]],\n bth[buf[i++]],\n bth[buf[i++]],\n bth[buf[i++]],\n '-',\n bth[buf[i++]],\n bth[buf[i++]],\n '-',\n bth[buf[i++]],\n bth[buf[i++]],\n '-',\n bth[buf[i++]],\n bth[buf[i++]],\n '-',\n bth[buf[i++]],\n bth[buf[i++]],\n bth[buf[i++]],\n bth[buf[i++]],\n bth[buf[i++]],\n bth[buf[i++]],\n ].join('');\n}\nfunction uuid() {\n var rnds = mathRNG();\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n return bytesToUuid(rnds);\n}\n\nvar BUFFER_TIME = 300000; // 5分钟\nvar applyBufferTimer = function (checkIfNeedCancel, cb, bufferTime) {\n var tid = 0;\n if (bufferTime === -1)\n return noop;\n return function () {\n if (checkIfNeedCancel()) {\n tid && clearTimeout(tid);\n tid = 0;\n return;\n }\n tid === 0 && (tid = setTimeout(cb, bufferTime));\n };\n};\n\n/* eslint-disable @typescript-eslint/no-invalid-void-type */\nvar nextLink = function (args, cb) {\n var nextCbs = [];\n try {\n nextCbs = cb.reduce(function (sum, s) {\n try {\n var nextCb = s(args);\n typeof nextCb === 'function' && sum.push(nextCb);\n }\n catch (_a) {\n // do nothing\n }\n return sum;\n }, []);\n }\n catch (_a) {\n // do nothing\n }\n return function (nextArgs) { return nextLink(nextArgs, nextCbs); };\n};\nvar toObservable = function (bufferTime) {\n if (bufferTime === void 0) { bufferTime = BUFFER_TIME; }\n var subscribers = [];\n var __complete = [];\n var closed = false;\n var attachCb;\n // 暂缓的自动销毁机制,比如5min 没有人订阅就自动销毁\n var setCloseIfNeed = applyBufferTimer(function () { return !!subscribers.length; }, function () {\n closed = true;\n attachCb && attachCb[0]();\n __complete.forEach(function (e) { return e(); });\n __complete.length = 0;\n attachCb = undefined;\n }, bufferTime);\n var unsubscribe = function (o) {\n subscribers = arrayRemove(subscribers, o);\n !closed && setCloseIfNeed();\n };\n return {\n next: function (args) {\n return nextLink(args, subscribers);\n },\n complete: function (cb) {\n __complete.push(cb);\n },\n attach: function (disconnect, onSubscribe) {\n attachCb = [disconnect, onSubscribe];\n },\n subscribe: function (o) {\n if (closed)\n throw new Error('Observer is closed');\n subscribers.push(o);\n attachCb && attachCb[1] && attachCb[1](o);\n setCloseIfNeed();\n return function () { return unsubscribe(o); };\n },\n unsubscribe: unsubscribe,\n };\n};\nvar createSafeObserver = function (observer, completeCb, bufferTime) {\n var cur = toObservable(bufferTime);\n try {\n observer(cur.next, cur.attach);\n completeCb && cur.complete(completeCb);\n }\n catch (_a) {\n //\n }\n return [cur.subscribe, cur.unsubscribe];\n};\n\nfunction createDestroyAgent() {\n var data = {};\n var removeTearDownGroup = function (tearDownGroup) {\n tearDownGroup.length &&\n tearDownGroup.forEach(function (v) {\n try {\n v();\n // eslint-disable-next-line no-empty\n }\n catch (_a) { }\n });\n tearDownGroup.length = 0;\n };\n var removeByPluginName = function (pluginName) {\n data[pluginName] &&\n data[pluginName].forEach(function (e) {\n removeTearDownGroup(e[1]);\n });\n data[pluginName] = undefined;\n };\n var removeByEvType = function (evType) {\n Object.keys(data).forEach(function (k) {\n data[k] &&\n data[k].forEach(function (e) {\n if (e[0] === evType) {\n removeTearDownGroup(e[1]);\n }\n });\n });\n };\n return {\n /**\n * register tearDownGroup for a single plugin.\n */\n set: function (pluginName, evType, tearDownGroup) {\n if (data[pluginName])\n data[pluginName].push([evType, tearDownGroup]);\n else\n data[pluginName] = [[evType, tearDownGroup]];\n },\n /**\n * remove tearDownGroup for a single plugin.\n */\n remove: removeByPluginName,\n /**\n * remove tearDownGroup by event type\n */\n removeByEvType: removeByEvType,\n /**\n * clear all tearDownGroup\n */\n clear: function () {\n Object.keys(data).forEach(function (k) {\n removeByPluginName(k);\n });\n },\n };\n}\n/**\n * 将tearDownGroup 注册到 destroyAgent,destroyAgent会在实例销毁时自动销毁tearDownGroup\n */\nvar registerTearDownGroup = function (client, pluginName, evType, tearDownGroup) {\n return client.destroyAgent.set(pluginName, evType, tearDownGroup);\n};\n\nfunction createClient(creationConfig) {\n var builder = creationConfig.builder, createSender = creationConfig.createSender, createDefaultConfig = creationConfig.createDefaultConfig, createConfigManager = creationConfig.createConfigManager, userConfigNormalizer = creationConfig.userConfigNormalizer, initConfigNormalizer = creationConfig.initConfigNormalizer, validateInitConfig = creationConfig.validateInitConfig;\n var sender;\n var configManager;\n var handlers = {};\n EVENTS.forEach(function (e) { return (handlers[e] = []); });\n var inited = false;\n var started = false;\n var destroyed = false;\n // 缓存 start 之前 build 的事件\n var preStartQueue = [];\n // 禁止通过 provide 挂载的字段名\n var reservedNames = [];\n var destroyAgent = createDestroyAgent();\n var client = {\n getBuilder: function () { return builder; },\n getSender: function () { return sender; },\n getPreStartQueue: function () { return preStartQueue; },\n init: function (c) {\n if (inited) {\n warn('already inited');\n return;\n }\n if (c && isObject(c) && validateInitConfig(c)) {\n var defaultConfig = createDefaultConfig(c);\n if (!defaultConfig) {\n throw new Error('defaultConfig missing');\n }\n var initConfig = initConfigNormalizer(c);\n configManager = createConfigManager(defaultConfig);\n configManager.setConfig(initConfig);\n configManager.onChange(function () {\n handle('config');\n });\n sender = createSender(configManager.getConfig());\n if (!sender) {\n throw new Error('sender missing');\n }\n inited = true;\n handle('init', true);\n }\n else {\n throw new Error('invalid InitConfig, init failed');\n }\n },\n set: function (c) {\n if (!inited) {\n return;\n }\n if (c && isObject(c)) {\n handle('beforeConfig', false, c);\n configManager === null || configManager === void 0 ? void 0 : configManager.setConfig(c);\n }\n },\n config: function (c) {\n if (!inited) {\n return;\n }\n if (c && isObject(c)) {\n handle('beforeConfig', false, c);\n configManager === null || configManager === void 0 ? void 0 : configManager.setConfig(userConfigNormalizer(c));\n }\n return configManager === null || configManager === void 0 ? void 0 : configManager.getConfig();\n },\n provide: function (name, value) {\n if (arrayIncludes(reservedNames, name)) {\n warn(\"cannot provide \" + name + \", reserved\");\n return;\n }\n client[name] = value;\n handle('provide', false, name);\n },\n start: function () {\n var _this = this;\n if (!inited) {\n return;\n }\n if (started) {\n return;\n }\n configManager === null || configManager === void 0 ? void 0 : configManager.onReady(function () {\n started = true;\n handle('start', true);\n preStartQueue.forEach(function (e) { return _this.build(e); });\n preStartQueue = [];\n });\n },\n report: function (data) {\n if (!data) {\n return;\n }\n var preReport = runProcessors(handlers['beforeReport'])(data);\n if (!preReport) {\n return;\n }\n var processed = runProcessors(handlers['report'])(preReport);\n if (!processed) {\n return;\n }\n if (started) {\n this.build(processed);\n }\n else {\n preStartQueue.push(processed);\n }\n },\n build: function (data) {\n if (!started) {\n return;\n }\n var preBuild = runProcessors(handlers['beforeBuild'])(data);\n if (!preBuild) {\n return;\n }\n var built = builder.build(preBuild);\n if (!built) {\n return;\n }\n var processed = runProcessors(handlers['build'])(built);\n if (!processed) {\n return;\n }\n this.send(processed);\n },\n send: function (data) {\n if (!started) {\n return;\n }\n var processed = runProcessors(handlers['beforeSend'])(data);\n if (processed) {\n sender.send(processed);\n handle('send', false, processed);\n }\n },\n destroy: function () {\n destroyAgent.clear();\n destroyed = true;\n handle('beforeDestroy', true);\n },\n on: function (ev, handler) {\n if (ev === 'init' && inited) {\n handler();\n }\n else if (ev === 'start' && started) {\n handler();\n }\n else if (ev === 'beforeDestroy' && destroyed) {\n handler();\n }\n else if (handlers[ev]) {\n handlers[ev].push(handler);\n }\n },\n off: function (ev, handler) {\n if (handlers[ev])\n handlers[ev] = arrayRemove(handlers[ev], handler);\n },\n destroyAgent: destroyAgent,\n };\n reservedNames = Object.keys(client);\n return client;\n function handle(ev, once) {\n if (once === void 0) { once = false; }\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n handlers[ev].forEach(function (f) {\n try {\n f.apply(void 0, __spreadArray([], __read(args), false));\n }\n catch (_err) {\n // ignore\n }\n });\n if (once) {\n handlers[ev].length = 0;\n }\n }\n}\n\nvar ContextPlugin = function (client) {\n var contextAgent = createContextAgent();\n client.provide('context', contextAgent);\n client.on('report', function (ev) {\n if (!ev.extra) {\n ev.extra = {};\n }\n ev.extra.context = contextAgent.toString();\n return ev;\n });\n};\n\nvar withCommandArray = function (client, captureContext, applyArgsWithContext) {\n // 缓存需要异步插件来消费的命令\n var cache = {};\n var newClient = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var methodPath = args[0];\n if (!methodPath)\n return;\n var method = methodPath.split('.')[0];\n // 捕获上下文,等异步插件加载后传入\n if (!(method in newClient)) {\n var cachedCommands = cache[method] || [];\n // 区分预收集来的上下文与普通上下文\n var capturedContext = (_a = captureContext === null || captureContext === void 0 ? void 0 : captureContext(client)) !== null && _a !== void 0 ? _a : {};\n cachedCommands.push(__spreadArray([capturedContext], __read(args), false));\n cache[method] = cachedCommands;\n return;\n }\n return safeCall(newClient, methodPath, [].slice.call(args, 1));\n };\n hookObjectProperty(client, 'provide', function (origin) {\n return function (name, value) {\n newClient[name] = value;\n origin.call(client, name, value);\n };\n })();\n for (var nextKey in client) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(client, nextKey)) {\n newClient[nextKey] = client[nextKey];\n }\n }\n client.on('provide', function (name) {\n if (cache[name]) {\n cache[name].forEach(function (cachedCommands) {\n var _a = __read(cachedCommands), capturedContext = _a[0], args = _a.slice(1);\n applyArgsWithContext === null || applyArgsWithContext === void 0 ? void 0 : applyArgsWithContext(client, capturedContext, args);\n });\n cache[name] = null;\n }\n });\n return newClient;\n};\n\nfunction IntegrationPlugin(client) {\n client.on('init', function () {\n var nameList = [];\n var config = client.config();\n if (!config || !config.integrations) {\n return;\n }\n config.integrations.forEach(function (integration) {\n if (!arrayIncludes(nameList, integration.name)) {\n nameList.push(integration.name);\n integration.setup(client);\n integration.tearDown && client.on('beforeDestroy', integration.tearDown);\n }\n });\n });\n}\n\nfunction SubjectPlugin(client, globalSubjectMap) {\n var subjectMap = globalSubjectMap || {};\n var initSubject = function (_a) {\n var _b = __read(_a, 2), subjectKey = _b[0], observer = _b[1];\n if (!subjectMap[subjectKey])\n subjectMap[subjectKey] = createSafeObserver(observer, function () {\n subjectMap[subjectKey] = undefined;\n });\n return subjectMap[subjectKey];\n };\n client.provide('initSubject', initSubject);\n client.provide('getSubject', function (key) { return subjectMap[key]; });\n client.provide('privateSubject', {});\n}\n/**\n * 由于 Observer 带有自动销毁机制,意味着subject 只支持同步注册并使用\n */\nfunction initSubjectInGlobal(client, args) {\n return client.initSubject(args);\n}\n/**\n * 此方法不会挂载到全局对象上,同时只支持同步注册并使用\n */\nfunction initPrivateSubject(client, _a, bufferTime) {\n var _b = __read(_a, 2), subjectKey = _b[0], observer = _b[1];\n var subjectMap = client.privateSubject || {};\n if (!subjectMap[subjectKey])\n subjectMap[subjectKey] = createSafeObserver(observer, function () {\n subjectMap[subjectKey] = undefined;\n }, bufferTime);\n return subjectMap[subjectKey];\n}\n\nvar now = function () { return Date.now(); };\n\nfunction getDefaultBrowser() {\n if (typeof window === 'object' && isObject(window))\n return window;\n}\nfunction getDefaultDocument() {\n if (typeof document === 'object' && isObject(document))\n return document;\n}\nfunction getDefaultLocation() {\n return getDefaultBrowser() && window.location;\n}\nfunction getDefaultHistory() {\n // eslint-disable-next-line compat/compat\n return getDefaultBrowser() && window.history;\n}\nfunction getDefaultPerformance() {\n if (getDefaultBrowser() && isObject(window.performance))\n return window.performance;\n}\nfunction getDefaultXMLHttpRequest() {\n if (typeof XMLHttpRequest === 'function' && isFunction(XMLHttpRequest))\n return XMLHttpRequest;\n}\nfunction getDefaultMutationObserver() {\n if (getDefaultBrowser() && isFunction(window.MutationObserver))\n return window.MutationObserver;\n}\nfunction getDefaultPerformanceObserver() {\n if (getDefaultBrowser() && isFunction(window.PerformanceObserver))\n return window.PerformanceObserver;\n}\nfunction getDefaultRaf() {\n if (getDefaultBrowser() && 'requestAnimationFrame' in window) {\n return window.requestAnimationFrame;\n }\n}\nfunction getDefaultCaf() {\n if (getDefaultBrowser() && 'cancelAnimationFrame' in window) {\n return window.cancelAnimationFrame;\n }\n}\nfunction getDefaultNavigator() {\n if (getDefaultBrowser() && 'navigator' in window) {\n return window.navigator;\n }\n}\nfunction getDefaultNetworkInformation() {\n var navigator = getDefaultNavigator();\n if (navigator) {\n return navigator.connection || navigator.mozConnection || navigator.webkitConnection;\n }\n}\nfunction getCurrentScript() {\n if (!document)\n return null;\n if (document.currentScript)\n return document.currentScript;\n // IE 8-10 support script readyState\n // IE 11+ support stack trace\n try {\n throw new Error();\n }\n catch (err) {\n // Find the second match for the \"at\" string to get file src url from stack.\n // Specifically works with the format of stack traces in IE.\n var i = 0;\n var stackDetails = /at\\s+(.*)\\s+\\((.*):(\\d*):(\\d*)\\)/i.exec(err.stack);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n var scriptLocation = (stackDetails && stackDetails[2]) || false;\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n var line = (stackDetails && stackDetails[3]) || 0;\n var currentLocation = document.location.href.replace(document.location.hash, '');\n var inlineScriptSource = '';\n var scripts = document.getElementsByTagName('script'); // Live NodeList collection\n if (scriptLocation === currentLocation) {\n var pageSource = document.documentElement.outerHTML;\n var inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*