diff --git a/.dumi/global.less b/.dumi/global.less index 778625e..0aec62c 100644 --- a/.dumi/global.less +++ b/.dumi/global.less @@ -6,6 +6,10 @@ max-width: none; } +#root .dumi-default-header-content { + max-width: none; +} + #root .dumi-default-header { box-shadow: 2px 1px 16px #dfdfdf; } diff --git a/.dumirc.ts b/.dumirc.ts index 445c479..0df3427 100644 --- a/.dumirc.ts +++ b/.dumirc.ts @@ -9,15 +9,6 @@ export default defineConfig({ socialLinks: { gitlab: 'http://10.0.0.88/web-project/zhst-Lambo', }, - nav: { - mode: 'append', - value: [ - { - title: '智能柜物料库→', - link: 'http://10.0.0.222:30098', - }, - ], - }, }, alias: { '@zhst/hooks': path.join(__dirname, 'packages/hooks/src'), @@ -25,17 +16,25 @@ export default defineConfig({ '@zhst/biz': path.join(__dirname, 'packages/biz/src'), '@zhst/meta': path.join(__dirname, 'packages/meta/src'), '@zhst/request': path.join(__dirname, 'packages/request/src'), + '@zhst/slave': path.join(__dirname, 'packages/slave/src'), + '@zhst/material': path.join(__dirname, 'packages/material/src'), + '@zhst/icon': path.join(__dirname, 'packages/icon/src'), + '@zhst/map': path.join(__dirname, 'packages/map/src'), }, resolve: { docDirs: ['docs'], atomDirs: [ { type: 'hooks', dir: 'packages/hooks/src' }, { type: 'utils', dir: 'packages/func/src' }, - { type: 'biz', dir: 'packages/biz/src' }, - { type: 'meta', dir: 'packages/meta/src' }, - { type: 'request', dir: 'packages/request/src' }, - { type: 'constants', dir: 'packages/constants/src' }, - { type: 'types', dir: 'packages/types/src' }, + { type: 'module', subType: 'biz', dir: 'packages/biz/src' }, + { type: 'module', subType: 'meta', dir: 'packages/meta/src' }, + { type: 'other', subType: 'request', dir: 'packages/request/src' }, + { type: 'other', subType: 'constants', dir: 'packages/constants/src' }, + { type: 'other', subType: 'types', dir: 'packages/types/src' }, + { type: 'slave', dir: 'packages/slave/src' }, + { type: 'material', dir: 'packages/material/src' }, + { type: 'icon', dir: 'packages/icon/src' }, + { type: 'map', dir: 'packages/map/src' }, ], }, monorepoRedirect: { diff --git a/.gitignore b/.gitignore index 544d4ae..96c84a7 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ packages/**/es packages/**/lib /es /lib +pnpm-lock.yaml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 353deb0..5155b1b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,12 +1,32 @@ stages: - build + - package + - deploy + +cache: + policy: pull + key: '$CI_COMMIT_REF_NAME' + paths: + - node_modules/ build: + image: registry.zhst.com/video-analysis/pnpm4 tags: - linux stage: build script: - - cd /home - - ls - - git - - node + - chmod +x ./deploy/build.sh && ./deploy/build.sh + artifacts: + name: '${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}_${CI_JOB_NAME}_${CI_PIPELINE_ID}' + paths: + - ./app/public/* + +package: + tags: + - linux_shell + stage: package + script: + - chmod +x ./deploy/package.sh && ./deploy/package.sh + dependencies: + - build + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..123c217 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,5 @@ +FROM alpine:latest + +ADD ./app/public/ /app/public/ + +CMD [ "sh", "-c", "while true; do echo zhst-web; sleep 1; done" ] \ No newline at end of file diff --git a/deploy/build.sh b/deploy/build.sh new file mode 100755 index 0000000..00a1980 --- /dev/null +++ b/deploy/build.sh @@ -0,0 +1,9 @@ +pnpm install + +pnpm run build:master + +mkdir -p ./app/public/ + +mv ./dist/* ./app/public/ + +cat ./app/public/index.html | head -n 7 diff --git a/deploy/package.sh b/deploy/package.sh new file mode 100644 index 0000000..74c068d --- /dev/null +++ b/deploy/package.sh @@ -0,0 +1,10 @@ +#! /bin/bash +set -e + +export DOCKER_CLI_EXPERIMENTAL=enabled +docker login registry.zhst.com -u zhst -p Zhst666\& + +# docker build -t registry.zhst.com/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME//\//-}-${CI_PIPELINE_ID} -f Dockerfile . +# docker push registry.zhst.com/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME//\//-}-${CI_PIPELINE_ID} +docker buildx build --platform linux/arm64,linux/amd64 -t registry.zhst.com/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME//\//-}-${CI_PIPELINE_ID} -f Dockerfile . --push + diff --git a/global.d.ts b/global.d.ts index e69de29..1ea3960 100644 --- a/global.d.ts +++ b/global.d.ts @@ -0,0 +1 @@ +declare module '*.less'; diff --git a/package.json b/package.json index a5e95c5..e01b2b7 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "scripts": { "add": "pnpm changeset add", "build": "pnpm --filter=@zhst/* run build", + "build:master": "dumi build", "build:watch": "father dev", "dev": "dumi dev", "docs:build": "dumi build", @@ -22,6 +23,7 @@ "lint": "npm run lint:es && npm run lint:css", "lint:css": "stylelint \"{src,test}/**/*.{css,less}\"", "lint:es": "eslint \"{src,test}/**/*.{js,jsx,ts,tsx}\"", + "pkg:build": "pnpm --filter=@zhst/* run build", "prepare": "husky install && dumi setup", "prepublishOnly": "father doctor && npm run build", "pub": "pnpm changeset publish", diff --git a/packages/biz/CHANGELOG.md b/packages/biz/CHANGELOG.md index b14b8d6..61b9f99 100644 --- a/packages/biz/CHANGELOG.md +++ b/packages/biz/CHANGELOG.md @@ -1,5 +1,72 @@ # @zhst/biz +## 0.11.3 + +### Patch Changes + +- @zhst/func@0.9.1 +- @zhst/hooks@0.8.10 +- @zhst/meta@0.9.7 + +## 0.11.2 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.9.0 + - @zhst/hooks@0.8.9 + - @zhst/meta@0.9.6 + +## 0.11.1 + +### Patch Changes + +- biz 打包没打上 + +## 0.11.0 + +### Minor Changes + +- 添加 traansfer 组件 searchProps 透传 + +## 0.10.5 + +### Patch Changes + +- 初始化物料库 +- Updated dependencies + - @zhst/hooks@0.8.8 + - @zhst/func@0.8.3 + - @zhst/meta@0.9.5 + +## 0.10.4 + +### Patch Changes + +- 初始化物料包 +- Updated dependencies + - @zhst/hooks@0.8.7 + - @zhst/func@0.8.2 + - @zhst/meta@0.9.4 + +## 0.10.3 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.8.1 + - @zhst/hooks@0.8.6 + - @zhst/meta@0.9.3 + +## 0.10.2 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.8.0 + - @zhst/hooks@0.8.5 + - @zhst/meta@0.9.2 + ## 0.10.1 ### Patch Changes diff --git a/packages/biz/es/BigImageModal/BigImageModal.d.ts b/packages/biz/es/BigImageModal/BigImageModal.d.ts new file mode 100644 index 0000000..ae5e46d --- /dev/null +++ b/packages/biz/es/BigImageModal/BigImageModal.d.ts @@ -0,0 +1,40 @@ +import React from 'react'; +import type { ModalProps, DescriptionsProps, TabsProps, VideoViewRef, ImgViewRef } from '@zhst/meta'; +import './index.less'; +export declare const componentPrefix = "zhst-image"; +export type TAB_TYPE = 'COMPATER' | 'NORMAL' | 'VIDEO'; +export type MODEL_TYPE = 'VIDEO' | 'IMAGE'; +export interface BigImageModalProps extends ModalProps { + visible: boolean; + activeTab?: TAB_TYPE; + attributeList: { + title: string; + children: Pick; + }; + tabs: { + data: Pick & { + key: TAB_TYPE; + }; + }; + dataSource: any; + imageData: any; + relatedData: any; + isRelated?: boolean; + footer?: React.ReactNode; + showCarousel?: boolean; + onTabChange?: (newVal?: TAB_TYPE, oldVal?: TAB_TYPE) => void; + onIndexChange?: (newVal?: number, oldVal?: number) => void; + transformPropFunc: (data: any) => void; +} +interface BigModalRef { + tab: TAB_TYPE; + setTab: (tab: TAB_TYPE) => void; + modalRef: ModalProps; + activeKey: string; + setActiveKey: (val: string) => void; + videoPlayerRef: VideoViewRef; + combineImageRef: any; + bigImagePreviewRef: ImgViewRef; +} +declare const BigImageModal: React.FC; +export default BigImageModal; diff --git a/packages/biz/es/BigImageModal/components/CombineImage/index.d.ts b/packages/biz/es/BigImageModal/components/CombineImage/index.d.ts new file mode 100644 index 0000000..19dbaa2 --- /dev/null +++ b/packages/biz/es/BigImageModal/components/CombineImage/index.d.ts @@ -0,0 +1,11 @@ +import { FC } from 'react'; +interface ComBineImageProps { + data: { + imgSummary: string; + compaterImages: string[]; + imageKey: string; + score: number; + }; +} +declare const ComBineImage: FC; +export default ComBineImage; diff --git a/packages/biz/es/BigImageModal/components/CombineImage/index.js b/packages/biz/es/BigImageModal/components/CombineImage/index.js new file mode 100644 index 0000000..abe895d --- /dev/null +++ b/packages/biz/es/BigImageModal/components/CombineImage/index.js @@ -0,0 +1,58 @@ +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +import React, { useRef, forwardRef, useImperativeHandle, useState } from 'react'; +import { CompareImage, Flex, Score } from '@zhst/meta'; +var ComBineImage = /*#__PURE__*/forwardRef(function (props, ref) { + var data = props.data; + var imgSummary = data.imgSummary, + _data$compaterImages = data.compaterImages, + compaterImages = _data$compaterImages === void 0 ? [] : _data$compaterImages; + var targetImageRef = useRef(null); + var compareImageRef = useRef(null); + var _useState = useState(compaterImages.findIndex(function (_url) { + return imgSummary === _url; + }) || 0), + _useState2 = _slicedToArray(_useState, 2), + targetIndex = _useState2[0], + setTargetIndex = _useState2[1]; + useImperativeHandle(ref, function () { + return { + compareImageRef: compareImageRef, + targetImageRef: targetImageRef + }; + }); + return /*#__PURE__*/React.createElement(Flex, { + justify: "space-evenly", + align: "center", + style: { + padding: '0 32px' + } + }, /*#__PURE__*/React.createElement(CompareImage, { + ref: targetImageRef, + preDisable: targetIndex === 0, + nextDisable: targetIndex >= compaterImages.length - 1, + onNext: function onNext() { + return setTargetIndex(targetIndex + 1); + }, + onPre: function onPre() { + return setTargetIndex(targetIndex - 1); + }, + showScore: false, + openRoll: !!compaterImages.length, + url: compaterImages[targetIndex] || imgSummary, + label: "\u76EE\u6807\u56FE" + }), /*#__PURE__*/React.createElement(Score, { + score: data.score + }), /*#__PURE__*/React.createElement(CompareImage, { + ref: compareImageRef, + url: data.imageKey, + openRoll: false, + score: data.score, + label: "\u5BF9\u6BD4\u56FE" + })); +}); +export default ComBineImage; \ No newline at end of file diff --git a/packages/biz/es/BigImageModal/components/navigation/index.d.ts b/packages/biz/es/BigImageModal/components/navigation/index.d.ts new file mode 100644 index 0000000..78b1ca8 --- /dev/null +++ b/packages/biz/es/BigImageModal/components/navigation/index.d.ts @@ -0,0 +1,13 @@ +import * as React from 'react'; +import './index.less'; +declare const Navigation: React.FC<{ + show?: boolean; + onClick?: React.MouseEventHandler; + prev?: boolean; + next?: boolean; + disabled?: boolean; + className?: string; + color?: string; + hoverColor?: string; +}>; +export default Navigation; diff --git a/packages/biz/es/BigImageModal/mock.d.ts b/packages/biz/es/BigImageModal/mock.d.ts new file mode 100644 index 0000000..68ff4e3 --- /dev/null +++ b/packages/biz/es/BigImageModal/mock.d.ts @@ -0,0 +1,245 @@ +export declare const IMAGE_DATA: { + enAbleDeleteFeature: boolean; + tabsFilter: string[]; + selectIndex: number; + disableBtn: number[]; + dataSource: { + objectId: string; + condition: { + featureInfo: null; + featureData: string; + imageData: string; + alg: string; + rect: { + x: number; + y: number; + w: number; + h: number; + }; + objectImageUrl: string; + srcImageUrl: string; + }; + score: number; + timestamp: number; + deviceId: string; + id: string; + name: string; + dirid: string; + status: string; + longitude: number; + latitude: number; + caseId: string; + caseGroup: string; + isDeleted: string; + objectIndex: { + objectId: string; + solutionId: string; + deviceId: string; + fragmentId: string; + }; + objectType: string; + isObjectTrack: boolean; + pathId: string; + frameInfo: { + frameId: string; + frameTimestamp: string; + width: number; + height: number; + originWidth: number; + originHeight: number; + offsetTime: string; + skipNumber: string; + }; + level: number; + bboxInFrame: { + x: number; + y: number; + w: number; + h: number; + }; + bboxExtInFrame: { + x: number; + y: number; + w: number; + h: number; + }; + objectImageKey: string; + objectExtImageKey: string; + frameImageKey: string; + confidence: number; + sourceObjectId: string; + storeTimestamp: string; + gbNumber: string; + qualityScore: number; + subObjectCount: number; + subObjectType: string[]; + subObjectIds: string[]; + solutionId: string; + fragmentId: string; + contrastKey: string; + compaterImages: string[]; + imgSummary: string; + imageKey: string; + srcImageUrl: string; + algorithmVersion: string; + cameraId: string; + cameraName: string; + }[]; + isArchiveDetail: boolean; + ToolProps: { + renderVideoBtn: boolean; + disableVideo: boolean; + }; + specialTitle: string; +}; +export declare const BIG_IMAGE_DATA: ({ + imageKey: string; + imgSummary: string; + flvUrl: string; + compaterImages: string[]; + odRect: { + x: number; + y: number; + w: number; + h: number; + }; + attachImg: { + url: string; + label: string; + }[]; + score: string; + showScore: boolean; + cameraPosition: string; + time: string; + objects: { + objectIndex: { + objectId: string; + solutionId: string; + deviceId: string; + fragmentId: string; + }; + objectType: string; + sourceObjectId: string; + level: number; + confidence: number; + frameInfo: { + frameId: string; + frameTimestamp: string; + width: number; + height: number; + originWidth: number; + originHeight: number; + offsetTime: string; + skipNumber: string; + }; + infoOnSource: { + bboxInFrame: { + bboxRatio: { + x: number; + y: number; + w: number; + h: number; + }; + }; + countInSource: number; + indexInSource: number; + }; + qualityScore: number; + }[]; +} | { + imageKey: string; + imgSummary: string; + odRect: { + x: number; + y: number; + w: number; + h: number; + }; + attachImg: { + url: string; + label: string; + }[]; + flvUrl: string; + score: number; + showScore: boolean; + cameraPosition: string; + time: string; + objects: ({ + objectIndex: { + objectId: string; + solutionId: string; + deviceId: string; + fragmentId: string; + }; + objectType: string; + sourceObjectId: string; + frameInfo: { + frameId: string; + frameTimestamp: string; + width: number; + height: number; + originWidth: number; + originHeight: number; + offsetTime: string; + skipNumber: string; + }; + infoOnSource: { + bboxInFrame: { + bboxRatio: { + x: number; + y: number; + w: number; + h: number; + }; + }; + countInSource: number; + indexInSource: number; + }; + qualityScore: number; + level?: undefined; + confidence?: undefined; + } | { + objectIndex: { + objectId: string; + solutionId: string; + deviceId: string; + fragmentId: string; + }; + objectType: string; + sourceObjectId: string; + level: number; + confidence: number; + frameInfo: { + frameId: string; + frameTimestamp: string; + width: number; + height: number; + originWidth: number; + originHeight: number; + offsetTime: string; + skipNumber: string; + }; + infoOnSource: { + bboxInFrame: { + bboxRatio: { + x: number; + y: number; + w: number; + h: number; + }; + }; + countInSource: number; + indexInSource: number; + }; + qualityScore: number; + })[]; + compaterImages?: undefined; +})[]; +export declare const attributeList: { + title: string; + children: { + key: string; + label: string; + children: string; + }[]; +}[]; diff --git a/packages/biz/es/BigImageModal/util/bigImageModalAdapter.d.ts b/packages/biz/es/BigImageModal/util/bigImageModalAdapter.d.ts new file mode 100644 index 0000000..185982d --- /dev/null +++ b/packages/biz/es/BigImageModal/util/bigImageModalAdapter.d.ts @@ -0,0 +1,118 @@ +/** + * 适配老的大屏组件数据格式传入 + */ +import React from 'react'; +import { AlgorithmVersionStr, HumanProperty, ObjectType, Rect } from '@zhst/types'; +import { VideoViewProps, ImgViewProps, VideoViewRef, ImgViewRef } from '@zhst/meta'; +export type TAB_TYPE = 'COMPATER' | 'NORMAL' | 'TRACK'; +export type MODEL_TYPE = 'VIDEO' | 'IMAGE'; +export interface CarouselProps { + hasPre?: boolean; + hasNext?: boolean; + selectIndex: number; + setSelectIndex: React.Dispatch>; + dataSource: Array<{ + key: string; + url: string; + }>; +} +export type ISelectItem = Partial> & Partial>; +/** + * 描述列表 description + */ +export interface HeaderProps { + value: TAB_TYPE; + onChange: (type: TAB_TYPE) => void; + tabsFilter: TAB_TYPE[]; +} +export interface ParamProps { + tab: string; + selectItem: ISelectItem; + imgViewRef: React.MutableRefObject; + VideoViewRef: React.MutableRefObject; + model: MODEL_TYPE; + setModel: React.Dispatch>; + scale$: number; + showCrop$: boolean; +} +/** + * 工具栏 + */ +export interface ToolProps { + renderRight?: (props: ParamProps) => React.ReactNode; + renderLeft?: (props: ParamProps) => React.ReactNode; + renderVideoBtn?: boolean; + param: ParamProps; + disableVideo: boolean; +} +export interface BigImageData { + extendRectList: (Rect & { + algorithmVersion: AlgorithmVersionStr; + imageKey: string; + })[]; + rectList: (Rect & { + algorithmVersion: AlgorithmVersionStr; + imageKey: string; + })[]; + attachImg: { + url: string; + label: '形体' | '人脸'; + }[]; + odRect: Rect; + compaterImages: string[]; + constractKey: string; + frameImageKey: string; + imageKey?: string; + imgSummary: string; + objectExtImageKey: string; + attributeList: { + label: string; + list: any[]; + }[]; + archiveImages?: any; + spaceName: string; + objectIndex?: { + deviceId: string; + fragmentId: string; + objectId: string; + solutionId: string; + }; + objectType: ObjectType; + objectId: string; + bodyObjectId?: string; + faceObjectId?: string; + sourceObjectId?: string; + cameraId: string; + cameraName: string; + selectIndex: number; + humanProperty: HumanProperty; + qualityScore?: number; + score: number; + timestamp: string; + bodyImageUrl: string; + faceImageUrl: string; + algorithmVersion: AlgorithmVersionStr; + bodySpaceName: string; + faceSpaceName: string; + position: { + lat: number; + lng: number; + }; + solutionId?: string; + [index: string]: any; +} +export interface ImageModalDataProps { + targetData: BigImageData[]; + compactData: BigImageData[]; +} +export interface ModalAdapterConfigProps { + oldMode?: boolean; +} +/** + * 大图组件适配器,兼容老接口 + * @param Cmp 大图组件 + * @param config 额外配置 + * @returns 大图组件 + */ +declare const adapter: (Cmp: any, config: ModalAdapterConfigProps) => any; +export default adapter; diff --git a/packages/biz/es/BigImageModal/util/bigImageModalAdapter.js b/packages/biz/es/BigImageModal/util/bigImageModalAdapter.js new file mode 100644 index 0000000..bad3d69 --- /dev/null +++ b/packages/biz/es/BigImageModal/util/bigImageModalAdapter.js @@ -0,0 +1,50 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +/** + * 适配老的大屏组件数据格式传入 + */ +import React from 'react'; + +/** + * 描述列表 description + */ + +/** + * 工具栏 + */ + +/** + * 兼容老数据格式 + * @param _data 老数据格式 + * @returns newData + */ +var translateOldImageData = function translateOldImageData(_data) { + return _objectSpread(_objectSpread({}, _data), {}, { + open: _data.visible, + onCancel: _data.onClose + }); +}; + +/** + * 大图组件适配器,兼容老接口 + * @param Cmp 大图组件 + * @param config 额外配置 + * @returns 大图组件 + */ +var adapter = function adapter(Cmp, config) { + var _config$oldMode = config.oldMode, + oldMode = _config$oldMode === void 0 ? false : _config$oldMode; + return function (props) { + var newProps = oldMode ? translateOldImageData(props) : props; + console.log('adapter----适配数据', props, newProps); + + // 该属性已经废弃 + delete newProps.visible; + return /*#__PURE__*/React.createElement(Cmp, newProps); + }; +}; +export default adapter; \ No newline at end of file diff --git a/packages/biz/es/Demo/index.d.ts b/packages/biz/es/Demo/index.d.ts new file mode 100644 index 0000000..bcc157c --- /dev/null +++ b/packages/biz/es/Demo/index.d.ts @@ -0,0 +1,3 @@ +import React from 'react'; +declare const _default: () => React.JSX.Element; +export default _default; diff --git a/packages/biz/es/RealTimeMonitor/RealTimeMonitor.d.ts b/packages/biz/es/RealTimeMonitor/RealTimeMonitor.d.ts new file mode 100644 index 0000000..a3f147f --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/RealTimeMonitor.d.ts @@ -0,0 +1,21 @@ +import React from 'react'; +import { IRecord, VideoPlayerCardProps, ViewLargerImageModalRef } from '@zhst/biz'; +interface RealTimeMonitorProps { + videoDataSource?: VideoPlayerCardProps[]; + handleWindowClick?: (key?: string) => void; + handleCloseButtonClick?: (key?: string) => void; + selectedWindowKey?: string; + warningDataSource?: IRecord[]; + viewLargerImageModalRef?: React.RefObject; + handleDownloadImg?: (imgSrc?: string) => void; + onRecordClick?: (record?: IRecord) => void; + selectedRecordId?: string; + isRecordListLoading?: boolean; + recordListTitle?: string; + style?: React.CSSProperties; + cardStyle?: React.CSSProperties; + imgStyle?: React.CSSProperties; + largeImageTitle?: string; +} +export declare const RealTimeMonitor: React.FC; +export default RealTimeMonitor; diff --git a/packages/biz/es/RealTimeMonitor/RealTimeMonitor.js b/packages/biz/es/RealTimeMonitor/RealTimeMonitor.js new file mode 100644 index 0000000..b11561c --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/RealTimeMonitor.js @@ -0,0 +1,35 @@ +import React from 'react'; +import WindowToggle from "./components/WindowToggle"; +import WarningRecordList from "./components/WarningRecordList"; +export var RealTimeMonitor = function RealTimeMonitor(props) { + var videoDataSource = props.videoDataSource, + handleWindowClick = props.handleWindowClick, + handleCloseButtonClick = props.handleCloseButtonClick, + selectedWindowKey = props.selectedWindowKey, + warningDataSource = props.warningDataSource, + viewLargerImageModalRef = props.viewLargerImageModalRef, + handleDownloadImg = props.handleDownloadImg, + onRecordClick = props.onRecordClick, + selectedRecordId = props.selectedRecordId, + isRecordListLoading = props.isRecordListLoading; + return /*#__PURE__*/React.createElement("div", { + className: "zhst-biz-real-time-monitor", + style: { + display: 'flex' + } + }, /*#__PURE__*/React.createElement(WindowToggle, { + selectedWindowKey: selectedWindowKey, + dataSource: videoDataSource, + handleWindowClick: handleWindowClick, + handleCloseButtonClick: handleCloseButtonClick + }), /*#__PURE__*/React.createElement(WarningRecordList, { + dataSource: warningDataSource, + handleDownloadImg: handleDownloadImg, + onRecordClick: onRecordClick, + selectedRecordId: selectedRecordId, + viewLargerImageModalRef: viewLargerImageModalRef, + isRecordListLoading: isRecordListLoading, + recordListTitle: "\u76D1\u63A7\u9884\u8B66\u8BB0\u5F55" + })); +}; +export default RealTimeMonitor; \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts new file mode 100644 index 0000000..6489299 --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts @@ -0,0 +1,18 @@ +import React from 'react'; +import { IRecord, ViewLargerImageModalRef } from '@zhst/biz'; +import "./index.less"; +interface WarningRecordListProps { + dataSource?: IRecord[]; + viewLargerImageModalRef?: React.RefObject; + handleDownloadImg?: (imgSrc?: string) => void; + onRecordClick?: (record?: IRecord) => void; + selectedRecordId?: string; + isRecordListLoading?: boolean; + recordListTitle?: string; + style?: React.CSSProperties; + cardStyle?: React.CSSProperties; + imgStyle?: React.CSSProperties; + largeImageTitle?: string; +} +declare const WarningRecordList: React.FC; +export default WarningRecordList; diff --git a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js new file mode 100644 index 0000000..5715506 --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js @@ -0,0 +1,81 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +import React from 'react'; +import { ViewLargerImageModal, WarningRecordCard } from '@zhst/biz'; +import { Empty, Space, Spin } from 'antd'; +import "./index.less"; +import { LoadingOutlined } from '@ant-design/icons'; +var WarningRecordList = function WarningRecordList(props) { + var _props$dataSource = props.dataSource, + dataSource = _props$dataSource === void 0 ? [] : _props$dataSource, + viewLargerImageModalRef = props.viewLargerImageModalRef, + selectedRecordId = props.selectedRecordId, + handleDownloadImg = props.handleDownloadImg, + _onRecordClick = props.onRecordClick, + isRecordListLoading = props.isRecordListLoading, + recordListTitle = props.recordListTitle, + style = props.style, + cardStyle = props.cardStyle, + imgStyle = props.imgStyle, + largeImageTitle = props.largeImageTitle; + return /*#__PURE__*/React.createElement("div", { + className: "zhst-biz-warning-record-list", + style: style + }, /*#__PURE__*/React.createElement("div", { + className: "header" + }, recordListTitle), /*#__PURE__*/React.createElement("div", { + className: "body" + }, isRecordListLoading ? /*#__PURE__*/React.createElement("div", { + style: { + height: '100%', + display: 'flex', + justifyContent: 'center', + alignItems: 'center' + } + }, /*#__PURE__*/React.createElement(Spin, { + indicator: /*#__PURE__*/React.createElement(LoadingOutlined, { + style: { + fontSize: 24 + } + }) + })) : (dataSource === null || dataSource === void 0 ? void 0 : dataSource.length) > 0 ? /*#__PURE__*/React.createElement(Space, { + direction: "vertical", + size: 10 + }, dataSource === null || dataSource === void 0 ? void 0 : dataSource.map(function (record, index) { + if (index > 2) return; + return /*#__PURE__*/React.createElement(WarningRecordCard, { + key: record === null || record === void 0 ? void 0 : record.id, + record: record, + onRecordClick: function onRecordClick(record) { + _onRecordClick === null || _onRecordClick === void 0 || _onRecordClick(record); + }, + selectedRecordId: selectedRecordId, + cardStyle: _objectSpread({ + width: 300, + height: 264 + }, cardStyle), + imgStyle: _objectSpread({ + width: 280, + height: 169 + }, imgStyle) + }); + })) : /*#__PURE__*/React.createElement("div", { + style: { + height: '100%', + display: 'flex', + justifyContent: 'center', + alignItems: 'center' + } + }, /*#__PURE__*/React.createElement(Empty, { + description: "\u6682\u65E0\u6570\u636E" + }))), /*#__PURE__*/React.createElement(ViewLargerImageModal, { + ref: viewLargerImageModalRef, + downloadImg: handleDownloadImg, + title: largeImageTitle + })); +}; +export default WarningRecordList; \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.d.ts b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.d.ts new file mode 100644 index 0000000..b50da75 --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.d.ts @@ -0,0 +1,2 @@ +import WarningRecordList from './WarningRecordList'; +export default WarningRecordList; diff --git a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.js b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.js new file mode 100644 index 0000000..6e69d61 --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.js @@ -0,0 +1,2 @@ +import WarningRecordList from "./WarningRecordList"; +export default WarningRecordList; \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.less b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.less new file mode 100644 index 0000000..e348f82 --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/components/WarningRecordList/index.less @@ -0,0 +1,20 @@ +.zhst-biz-warning-record-list { + display: flex; + flex-direction: column; + border-left: solid 1px #00000026; + width: 320px; + + .header { + width: 100%; + height: 48px; + background-color: #EFF2F4; + padding: 10px 20px; + box-sizing: border-box; + } + + .body { + padding: 10px; + overflow: hidden; + flex: 1; + } +} \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts b/packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts new file mode 100644 index 0000000..c67b407 --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts @@ -0,0 +1,11 @@ +import React from 'react'; +import { VideoPlayerCardProps } from '@zhst/biz'; +import './index.less'; +interface WindowToggleProps { + dataSource?: VideoPlayerCardProps[]; + handleWindowClick?: (key?: string) => void; + handleCloseButtonClick?: (key?: string) => void; + selectedWindowKey?: string; +} +export declare const WindowToggle: React.FC; +export default WindowToggle; diff --git a/packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.js b/packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.js new file mode 100644 index 0000000..d9efe21 --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/components/WindowToggle/WindowToggle.js @@ -0,0 +1,81 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +import React, { useState } from 'react'; +import { Segmented } from 'antd'; +import { AppstoreOutlined, BarsOutlined } from '@ant-design/icons'; +import { VideoPlayerCard } from '@zhst/biz'; +import "./index.less"; +import { theme } from 'antd/lib'; +export var WindowToggle = function WindowToggle(props) { + var _props$dataSource = props.dataSource, + dataSource = _props$dataSource === void 0 ? [] : _props$dataSource, + handleWindowClick = props.handleWindowClick, + handleCloseButtonClick = props.handleCloseButtonClick, + selectedWindowKey = props.selectedWindowKey; + var _useState = useState("large"), + _useState2 = _slicedToArray(_useState, 2), + size = _useState2[0], + setSize = _useState2[1]; + var useToken = theme.useToken; + var _useToken = useToken(), + token = _useToken.token; + var getLabelStyle = function getLabelStyle(isSelected) { + return _objectSpread({ + padding: "0 11px", + background: "#fff" + }, isSelected ? { + background: token.colorPrimary, + color: '#fff' + } : {}); + }; + return /*#__PURE__*/React.createElement("div", { + className: "zhst-biz-window-toggle" + }, /*#__PURE__*/React.createElement("div", { + className: "header" + }, /*#__PURE__*/React.createElement(Segmented, { + defaultValue: "large", + options: [{ + value: 'large', + label: /*#__PURE__*/React.createElement("div", { + style: getLabelStyle(size === 'large') + }, /*#__PURE__*/React.createElement(BarsOutlined, null)) + }, { + value: 'small', + label: /*#__PURE__*/React.createElement("div", { + style: getLabelStyle(size === 'small') + }, /*#__PURE__*/React.createElement(AppstoreOutlined, null)) + }], + onChange: function onChange(value) { + // 当一个窗口时 默认 selectedkey 第一条数据的 windowkey + if (value === 'large' && dataSource.length > 0) { + var windowKey = dataSource[0].windowKey; + handleWindowClick === null || handleWindowClick === void 0 || handleWindowClick(windowKey); + } + setSize(value); + } + })), /*#__PURE__*/React.createElement("div", { + className: "body" + }, dataSource === null || dataSource === void 0 ? void 0 : dataSource.map(function (item, index) { + if (size === "large" && index > 0) return; + return /*#__PURE__*/React.createElement(VideoPlayerCard, _extends({ + key: item.windowKey, + selectedWindowKey: selectedWindowKey, + size: size + }, item, { + handleWindowClick: handleWindowClick, + handleCloseButtonClick: handleCloseButtonClick + })); + }))); +}; +export default WindowToggle; \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.d.ts b/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.d.ts new file mode 100644 index 0000000..3b57a45 --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.d.ts @@ -0,0 +1,2 @@ +import WindowToggle from './WindowToggle'; +export default WindowToggle; diff --git a/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.js b/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.js new file mode 100644 index 0000000..2f4ac13 --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.js @@ -0,0 +1,2 @@ +import WindowToggle from "./WindowToggle"; +export default WindowToggle; \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.less b/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.less new file mode 100644 index 0000000..61c77bd --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/components/WindowToggle/index.less @@ -0,0 +1,45 @@ +.zhst-biz-window-toggle { + display: flex; + flex-direction: column; + flex: 1; + + .header { + width: 100%; + height: 48px; + background-color: #EFF2F4; + padding: 10px 20px; + box-sizing: border-box; + + .ant-segmented { + padding: 0; + + .ant-segmented-group { + border-radius: 4px; + overflow: hidden; + + .ant-segmented-item { + border-radius: 0; + + .ant-segmented-item-label { + padding: 0; + } + } + } + } + } + + .body { + flex: 1; + width: 100%; + background-color: #E5EAEC; + padding: 10px; + box-sizing: border-box; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + + >div { + margin: 10px; + } + } +} \ No newline at end of file diff --git a/packages/biz/es/RealTimeMonitor/index.d.ts b/packages/biz/es/RealTimeMonitor/index.d.ts new file mode 100644 index 0000000..9013d29 --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/index.d.ts @@ -0,0 +1,2 @@ +import RealTimeMonitor from './RealTimeMonitor'; +export default RealTimeMonitor; diff --git a/packages/biz/es/RealTimeMonitor/index.js b/packages/biz/es/RealTimeMonitor/index.js new file mode 100644 index 0000000..80b2a3c --- /dev/null +++ b/packages/biz/es/RealTimeMonitor/index.js @@ -0,0 +1,2 @@ +import RealTimeMonitor from "./RealTimeMonitor"; +export default RealTimeMonitor; \ No newline at end of file diff --git a/packages/biz/es/VideoPlayerCard/VideoPlayerCard.d.ts b/packages/biz/es/VideoPlayerCard/VideoPlayerCard.d.ts new file mode 100644 index 0000000..cd1775e --- /dev/null +++ b/packages/biz/es/VideoPlayerCard/VideoPlayerCard.d.ts @@ -0,0 +1,19 @@ +import { CardProps } from 'antd'; +import React, { ReactNode } from 'react'; +import './index.less'; +export interface VideoPlayerCardProps { + windowKey?: string; + selectedWindowKey?: string; + showType?: 'video' | "image"; + imgSrc?: string; + videoSrc?: string; + cardProps?: CardProps; + errorReasonText?: string; + isWindowLoading?: boolean; + size?: 'large' | 'small'; + title?: string | ReactNode; + handleCloseButtonClick?: (key?: string) => void; + handleWindowClick?: (key?: string) => void; +} +export declare const VideoPlayerCard: React.FC; +export default VideoPlayerCard; diff --git a/packages/biz/es/VideoPlayerCard/VideoPlayerCard.js b/packages/biz/es/VideoPlayerCard/VideoPlayerCard.js new file mode 100644 index 0000000..e4daf93 --- /dev/null +++ b/packages/biz/es/VideoPlayerCard/VideoPlayerCard.js @@ -0,0 +1,140 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +import { Card, Space, Spin, Button } from 'antd'; +import { theme } from 'antd/lib'; +import { VideoPlayer } from '@zhst/meta'; +import React, { useState, useEffect, useRef } from 'react'; +import { CloseOutlined, LoadingOutlined } from '@ant-design/icons'; +import "./index.less"; +export var VideoPlayerCard = function VideoPlayerCard(props) { + var componentName = "zhst-biz-video-player-card"; + var showType = props.showType, + imgSrc = props.imgSrc, + videoSrc = props.videoSrc, + cardProps = props.cardProps, + isWindowLoading = props.isWindowLoading, + errorReasonText = props.errorReasonText, + size = props.size, + title = props.title, + handleCloseButtonClick = props.handleCloseButtonClick, + handleWindowClick = props.handleWindowClick, + windowKey = props.windowKey, + _props$selectedWindow = props.selectedWindowKey, + selectedWindowKey = _props$selectedWindow === void 0 ? '' : _props$selectedWindow; + var _useState = useState(null), + _useState2 = _slicedToArray(_useState, 2), + cardContent = _useState2[0], + setCardContent = _useState2[1]; + var useToken = theme.useToken; + var _useToken = useToken(), + token = _useToken.token; + var videoRef = useRef(null); + var selectedBorderStyle = { + border: "2px solid ".concat(token.colorPrimary), + boxShadow: " 0px 2px 9px 0px rgba(0,0,0,0.16)" + }; + var cardStyle = _objectSpread(_objectSpread({}, size === 'large' ? { + height: 931 + } : { + height: 456, + cursor: 'pointer' + }), size === 'small' && selectedWindowKey === windowKey ? selectedBorderStyle : {}); + var videoPlayerCardStyle = size === 'small' ? { + width: "calc(50% - 20px)" + } : { + flex: 1 + }; + useEffect(function () { + if (!isWindowLoading && (videoSrc || imgSrc)) { + var contentElement = null; + if (videoSrc) { + var _videoRef$current; + contentElement = /*#__PURE__*/React.createElement(VideoPlayer, { + ref: videoRef, + url: videoSrc + }); + (_videoRef$current = videoRef.current) === null || _videoRef$current === void 0 || _videoRef$current.setShowCrop(true); + } else if (imgSrc) { + contentElement = /*#__PURE__*/React.createElement("img", { + alt: "\u9996\u5E27\u56FE", + src: imgSrc, + style: { + width: "100%", + height: "100%", + display: 'block' + } + }); + } + setCardContent(contentElement); + } else { + setCardContent(null); + } + }, [showType, imgSrc, videoSrc, isWindowLoading]); + return /*#__PURE__*/React.createElement("div", { + className: componentName, + onClick: function onClick() { + handleWindowClick === null || handleWindowClick === void 0 || handleWindowClick(windowKey); + }, + style: videoPlayerCardStyle + }, /*#__PURE__*/React.createElement(Card, _extends({ + title: /*#__PURE__*/React.createElement(Space, { + style: { + width: "100%", + justifyContent: "space-between" + } + }, /*#__PURE__*/React.createElement("div", null, title), /*#__PURE__*/React.createElement("div", { + className: "card-close-button" + }, /*#__PURE__*/React.createElement(Button, { + type: "text", + onClick: function onClick() { + handleCloseButtonClick === null || handleCloseButtonClick === void 0 || handleCloseButtonClick(windowKey); + } + }, /*#__PURE__*/React.createElement(CloseOutlined, null)))), + style: _objectSpread({ + display: "flex", + flexDirection: "column", + borderRadius: 4, + overflow: "hidden" + }, cardStyle), + bodyStyle: { + flex: 1 + } + }, cardProps), cardContent ? /*#__PURE__*/React.createElement(React.Fragment, null, cardContent) : /*#__PURE__*/React.createElement("div", { + style: { + backgroundColor: '#000', + height: '100%', + display: 'flex', + padding: '20px', + boxSizing: 'border-box' + } + }, isWindowLoading ? /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + display: 'flex', + justifyContent: 'center', + alignItems: 'center' + } + }, /*#__PURE__*/React.createElement(Spin, { + indicator: /*#__PURE__*/React.createElement(LoadingOutlined, { + style: { + fontSize: 24 + } + }) + })) : !!errorReasonText && /*#__PURE__*/React.createElement("span", { + style: { + color: token.colorError + } + }, errorReasonText)))); +}; +export default VideoPlayerCard; \ No newline at end of file diff --git a/packages/biz/es/VideoPlayerCard/index.d.ts b/packages/biz/es/VideoPlayerCard/index.d.ts new file mode 100644 index 0000000..41afa58 --- /dev/null +++ b/packages/biz/es/VideoPlayerCard/index.d.ts @@ -0,0 +1,3 @@ +import VideoPlayerCard from './VideoPlayerCard'; +export type { VideoPlayerCardProps } from './VideoPlayerCard'; +export default VideoPlayerCard; diff --git a/packages/biz/es/VideoPlayerCard/index.js b/packages/biz/es/VideoPlayerCard/index.js new file mode 100644 index 0000000..4cb8f05 --- /dev/null +++ b/packages/biz/es/VideoPlayerCard/index.js @@ -0,0 +1,2 @@ +import VideoPlayerCard from "./VideoPlayerCard"; +export default VideoPlayerCard; \ No newline at end of file diff --git a/packages/biz/es/VideoPlayerCard/index.less b/packages/biz/es/VideoPlayerCard/index.less new file mode 100644 index 0000000..0f87e3e --- /dev/null +++ b/packages/biz/es/VideoPlayerCard/index.less @@ -0,0 +1,30 @@ +.zhst-biz-video-player-card { + .ant-card-head { + padding: 0 20px; + } + + .ant-card-body { + padding: 0; + overflow: hidden; + border-radius: 0; + + .zhst-image__video-view { + height: 100%; + } + } + + .card-close-button { + .ant-btn { + padding: 0 3px; + height: 22px; + color: #00000073; + } + + .ant-btn:hover { + padding: 0 3px; + height: 22px; + color: #000000e0; + } + } + +} \ No newline at end of file diff --git a/packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.d.ts b/packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.d.ts new file mode 100644 index 0000000..d82a52e --- /dev/null +++ b/packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.d.ts @@ -0,0 +1,25 @@ +import React from 'react'; +import { ModalProps, SpaceProps } from 'antd'; +import './index.less'; +type ViewLargerImageModalParams = { + imgSrc?: string; + warningData?: { + label?: string; + value?: string; + }[]; +}; +export interface ViewLargerImageModalRef { + show: (params?: ViewLargerImageModalParams) => void; + handleCancel: () => void; +} +export interface ViewLargerImageModalProps { + imgStyle?: React.CSSProperties; + downloadImg?: (imgSrc?: string) => void; + title?: string; + downloadText?: string; + modalProps?: ModalProps; + spaceProps?: SpaceProps; +} +export declare const ViewLargerImageModal: React.ForwardRefExoticComponent>; +export default ViewLargerImageModal; +export declare const useViewLargerImageModal: () => React.RefObject; diff --git a/packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.js b/packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.js new file mode 100644 index 0000000..07638be --- /dev/null +++ b/packages/biz/es/ViewLargerImageModal/ViewLargerImageModal.js @@ -0,0 +1,106 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +import React, { useImperativeHandle, useRef, useState, forwardRef } from 'react'; +import { Modal, Space } from 'antd'; +import theme from 'antd/lib/theme'; +import { DownloadOutlined } from '@ant-design/icons'; +import "./index.less"; +export var ViewLargerImageModal = /*#__PURE__*/forwardRef(function (props, ref) { + var modalProps = props.modalProps, + downloadImg = props.downloadImg, + imgStyle = props.imgStyle, + _props$title = props.title, + title = _props$title === void 0 ? '预警大图' : _props$title, + _props$downloadText = props.downloadText, + downloadText = _props$downloadText === void 0 ? '下载大图' : _props$downloadText, + spaceProps = props.spaceProps; + var useToken = theme.useToken; + var _useToken = useToken(), + token = _useToken.token; + var _useState = useState(false), + _useState2 = _slicedToArray(_useState, 2), + open = _useState2[0], + setOpen = _useState2[1]; + var _useState3 = useState(), + _useState4 = _slicedToArray(_useState3, 2), + imgSrc = _useState4[0], + setImgSrc = _useState4[1]; + var _useState5 = useState(), + _useState6 = _slicedToArray(_useState5, 2), + warningData = _useState6[0], + setWarningData = _useState6[1]; + var handleCancel = function handleCancel() { + setOpen(false); + }; + useImperativeHandle(ref, function () { + return { + show: function show(_params) { + setOpen(true); + setImgSrc(_params === null || _params === void 0 ? void 0 : _params.imgSrc); + setWarningData(_params === null || _params === void 0 ? void 0 : _params.warningData); + }, + handleCancel: handleCancel + }; + }); + return /*#__PURE__*/React.createElement(Modal, _extends({ + className: "zhst-biz-view-warning-larger-image-modal", + open: open, + destroyOnClose: true, + title: title, + width: "1029px", + footer: null, + onCancel: handleCancel + }, modalProps), /*#__PURE__*/React.createElement(Space, _extends({ + size: 0, + styles: { + item: { + backgroundColor: '#F6F9FAFF' + } + } + }, spaceProps), /*#__PURE__*/React.createElement("img", { + alt: title, + src: imgSrc, + style: _objectSpread({ + width: 789, + height: 444, + display: 'block' + }, imgStyle) + }), /*#__PURE__*/React.createElement("div", { + className: "right-context" + }, warningData === null || warningData === void 0 ? void 0 : warningData.map(function (_ref) { + var label = _ref.label, + value = _ref.value; + return /*#__PURE__*/React.createElement("div", { + key: label + }, /*#__PURE__*/React.createElement("span", { + className: "context-key" + }, "".concat(label, ": ")), value); + }), imgSrc && downloadImg && /*#__PURE__*/React.createElement("div", { + className: "img-download", + style: { + color: token.colorPrimary + }, + onClick: function onClick() { + return downloadImg === null || downloadImg === void 0 ? void 0 : downloadImg(imgSrc); + } + }, /*#__PURE__*/React.createElement(DownloadOutlined, null), /*#__PURE__*/React.createElement("span", { + style: { + paddingLeft: 3 + } + }, downloadText))))); +}); +export default ViewLargerImageModal; +export var useViewLargerImageModal = function useViewLargerImageModal() { + return useRef(null); +}; \ No newline at end of file diff --git a/packages/biz/es/ViewLargerImageModal/index.d.ts b/packages/biz/es/ViewLargerImageModal/index.d.ts new file mode 100644 index 0000000..417e8be --- /dev/null +++ b/packages/biz/es/ViewLargerImageModal/index.d.ts @@ -0,0 +1,4 @@ +import ViewLargerImageModal, { useViewLargerImageModal } from './ViewLargerImageModal'; +export type { ViewLargerImageModalRef, ViewLargerImageModalProps } from './ViewLargerImageModal'; +export default ViewLargerImageModal; +export { useViewLargerImageModal }; diff --git a/packages/biz/es/ViewLargerImageModal/index.js b/packages/biz/es/ViewLargerImageModal/index.js new file mode 100644 index 0000000..baa9ea1 --- /dev/null +++ b/packages/biz/es/ViewLargerImageModal/index.js @@ -0,0 +1,3 @@ +import ViewLargerImageModal, { useViewLargerImageModal } from "./ViewLargerImageModal"; +export default ViewLargerImageModal; +export { useViewLargerImageModal }; \ No newline at end of file diff --git a/packages/biz/es/ViewLargerImageModal/index.less b/packages/biz/es/ViewLargerImageModal/index.less new file mode 100644 index 0000000..32363d0 --- /dev/null +++ b/packages/biz/es/ViewLargerImageModal/index.less @@ -0,0 +1,62 @@ +.zhst-biz-view-warning-larger-image-modal { + font-family: MicrosoftYaHei; + + .ant-modal-content { + padding: 0; + height: 492px; + border-radius: 6px; + overflow: hidden; + + .ant-modal-close { + top: 14px; + right: 16px; + } + + .ant-modal-header { + height: 48px; + line-height: 48px; + margin-bottom: 0; + + .ant-modal-title { + height: 100%; + line-height: 48px; + font-weight: bold; + padding-left: 20px; + } + } + + .ant-modal-body { + height: 444px; + + >div { + width: 100%; + height: 100%; + align-items: flex-start; + + >div:nth-child(2) { + position: relative; + flex: 1; + box-sizing: border-box; + height: 100%; + padding: 30px 16px; + + .right-context>div { + margin-bottom: 20px; + } + + .right-context .context-key { + font-weight: bold; + } + + .img-download { + position: absolute; + bottom: 0; + cursor: pointer; + } + + } + + } + } + } +} \ No newline at end of file diff --git a/packages/biz/es/WarningRecordCard/WarningRecordCard.d.ts b/packages/biz/es/WarningRecordCard/WarningRecordCard.d.ts new file mode 100644 index 0000000..966998b --- /dev/null +++ b/packages/biz/es/WarningRecordCard/WarningRecordCard.d.ts @@ -0,0 +1,30 @@ +import { CardProps } from 'antd'; +import React from 'react'; +import './index.less'; +export interface IRecord { + imgSrc?: string; + id?: string; + /** + * 预警类型 + */ + warningType?: string; + warningInfo?: string[]; + boxId: string; + position: string; + cabietId?: string; + cabietText?: string; + warningTime?: string; + warningTimestamp?: string | number; + warningTimeFormat?: string; +} +export interface WarningRecordCardProps { + record?: IRecord; + onRecordClick?: (record?: IRecord) => void; + style?: React.CSSProperties; + cardProps?: CardProps; + selectedRecordId?: string; + cardStyle?: React.CSSProperties; + imgStyle?: React.CSSProperties; +} +export declare const WarningRecordCard: React.FC; +export default WarningRecordCard; diff --git a/packages/biz/es/WarningRecordCard/WarningRecordCard.js b/packages/biz/es/WarningRecordCard/WarningRecordCard.js new file mode 100644 index 0000000..20a6f82 --- /dev/null +++ b/packages/biz/es/WarningRecordCard/WarningRecordCard.js @@ -0,0 +1,89 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +import { Card, Space, Divider } from 'antd'; +import { theme } from 'antd/lib'; +import React from 'react'; +import dayjs from 'dayjs'; +import "./index.less"; +; +; +export var WarningRecordCard = function WarningRecordCard(props) { + var componentName = "zhst-biz-warning-record-card"; + var record = props.record, + onRecordClick = props.onRecordClick, + style = props.style, + cardProps = props.cardProps, + selectedRecordId = props.selectedRecordId, + cardStyle = props.cardStyle, + imgStyle = props.imgStyle; + var _ref = record || {}, + imgSrc = _ref.imgSrc, + id = _ref.id, + warningType = _ref.warningType, + _ref$warningInfo = _ref.warningInfo, + warningInfo = _ref$warningInfo === void 0 ? [] : _ref$warningInfo, + cabietText = _ref.cabietText, + warningTime = _ref.warningTime, + warningTimestamp = _ref.warningTimestamp, + _ref$warningTimeForma = _ref.warningTimeFormat, + warningTimeFormat = _ref$warningTimeForma === void 0 ? 'YYYY-MM-DD HH:mm:ss' : _ref$warningTimeForma; + var formattedDate = warningTimestamp ? dayjs(warningTimestamp).format(warningTimeFormat) : ''; + var warningTimeShow = warningTime ? warningTime : formattedDate; + var useToken = theme.useToken; + var _useToken = useToken(), + token = _useToken.token; + var selectedBorderStyle = { + border: "2px solid ".concat(token.colorPrimary), + boxShadow: " 0px 2px 9px 0px rgba(0,0,0,0.16)" + }; + var selectedCardStyle = _objectSpread({}, selectedRecordId === (record === null || record === void 0 ? void 0 : record.id) ? selectedBorderStyle : {}); + var handleClick = function handleClick() { + onRecordClick === null || onRecordClick === void 0 || onRecordClick(record); + }; + return /*#__PURE__*/React.createElement("div", { + className: componentName, + key: id, + onClick: handleClick, + style: style + }, /*#__PURE__*/React.createElement(Card, _extends({ + cover: /*#__PURE__*/React.createElement("img", { + alt: "\u9884\u8B66\u56FE", + src: imgSrc, + style: _objectSpread({ + width: 336, + height: 203, + borderRadius: 0 + }, imgStyle) + }), + style: _objectSpread(_objectSpread({ + width: 356, + height: 302, + padding: 10, + borderRadius: 4 + }, selectedCardStyle), cardStyle) + }, cardProps), /*#__PURE__*/React.createElement("div", { + className: "left-context" + }, /*#__PURE__*/React.createElement("div", { + className: "warning-type" + }, warningType), /*#__PURE__*/React.createElement(Space, { + size: 0, + split: /*#__PURE__*/React.createElement(Divider, { + type: "vertical" + }) + }, warningInfo === null || warningInfo === void 0 ? void 0 : warningInfo.map(function (item, index) { + return /*#__PURE__*/React.createElement("div", { + key: index, + className: "info-item" + }, item); + })), /*#__PURE__*/React.createElement("div", { + className: "warning-time" + }, warningTimeShow)), /*#__PURE__*/React.createElement("div", { + className: "cabietInfo" + }, cabietText))); +}; +export default WarningRecordCard; \ No newline at end of file diff --git a/packages/biz/es/WarningRecordCard/index.d.ts b/packages/biz/es/WarningRecordCard/index.d.ts new file mode 100644 index 0000000..8b82d36 --- /dev/null +++ b/packages/biz/es/WarningRecordCard/index.d.ts @@ -0,0 +1,3 @@ +import WarningRecordCard from './WarningRecordCard'; +export type { IRecord, WarningRecordCardProps } from './WarningRecordCard'; +export default WarningRecordCard; diff --git a/packages/biz/es/WarningRecordCard/index.js b/packages/biz/es/WarningRecordCard/index.js new file mode 100644 index 0000000..36c3c58 --- /dev/null +++ b/packages/biz/es/WarningRecordCard/index.js @@ -0,0 +1,2 @@ +import WarningRecordCard from "./WarningRecordCard"; +export default WarningRecordCard; \ No newline at end of file diff --git a/packages/biz/es/WarningRecordCard/index.less b/packages/biz/es/WarningRecordCard/index.less new file mode 100644 index 0000000..7cfba38 --- /dev/null +++ b/packages/biz/es/WarningRecordCard/index.less @@ -0,0 +1,27 @@ +.zhst-biz-warning-record-card { + cursor: pointer; + + .ant-card-body { + padding: 0; + font-family: MicrosoftYaHei; + line-height: 19px; + display: flex; + margin-top: 10px; + + .left-context { + flex: 1; + + >div { + margin-top: 6px; + } + + >div:nth-child(1) { + margin-top: 0; + } + } + + .warning-type { + font-weight: bold; + } + } +} \ No newline at end of file diff --git a/packages/biz/es/boxSelectTree/boxSelectTree.d.ts b/packages/biz/es/boxSelectTree/boxSelectTree.d.ts new file mode 100644 index 0000000..0690e8f --- /dev/null +++ b/packages/biz/es/boxSelectTree/boxSelectTree.d.ts @@ -0,0 +1,9 @@ +import { FC } from 'react'; +import { TabsProps } from 'antd'; +import type { BoxPanelProps } from './components/boxPanel'; +export interface BoxSelectTreeProps extends BoxPanelProps { + onTabChange?: (e: any) => void; + tabsProps?: TabsProps; +} +declare const BoxSelectTree: FC; +export default BoxSelectTree; diff --git a/packages/biz/es/boxSelectTree/boxSelectTree.js b/packages/biz/es/boxSelectTree/boxSelectTree.js new file mode 100644 index 0000000..a08972a --- /dev/null +++ b/packages/biz/es/boxSelectTree/boxSelectTree.js @@ -0,0 +1,92 @@ +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +import React from 'react'; +import { Tabs } from 'antd'; +import BoxPanel from "./components/boxPanel"; +var BoxSelectTree = function BoxSelectTree(props) { + var data = props.data, + _props$boxDataSource = props.boxDataSource, + boxDataSource = _props$boxDataSource === void 0 ? [] : _props$boxDataSource, + onTabChange = props.onTabChange, + onSearch = props.onSearch, + onItemCheck = props.onItemCheck, + onItemSelect = props.onItemSelect, + onBoxBatchDelete = props.onBoxBatchDelete, + onBoxDelete = props.onBoxDelete, + onCreateSubmit = props.onCreateSubmit, + onClockClick = props.onClockClick, + onImport = props.onImport, + onCreate = props.onCreate, + tabsProps = props.tabsProps, + searchInputProps = props.searchInputProps, + treeProps = props.treeProps, + customImport = props.customImport, + showOptions = props.showOptions, + extraBtns = props.extraBtns; + var items = [{ + key: '1', + label: /*#__PURE__*/React.createElement("div", { + style: { + textAlign: 'center', + width: '160px' + } + }, "\u76D2\u5B50\u7EC4"), + children: /*#__PURE__*/React.createElement(BoxPanel, { + searchInputProps: searchInputProps, + boxDataSource: boxDataSource, + treeProps: treeProps, + data: data, + onCreate: onCreate, + onCreateSubmit: onCreateSubmit, + onBoxBatchDelete: onBoxBatchDelete, + onBoxDelete: onBoxDelete, + onSearch: onSearch, + onItemCheck: onItemCheck, + onItemSelect: onItemSelect, + showOptions: showOptions, + customImport: customImport, + extraBtns: extraBtns, + onClockClick: onClockClick, + onImport: onImport + }) + }, { + key: '2', + label: /*#__PURE__*/React.createElement("div", { + style: { + textAlign: 'center', + width: '160px' + } + }, "\u76D2\u5B50"), + children: /*#__PURE__*/React.createElement(BoxPanel, { + boxDataSource: boxDataSource, + searchInputProps: searchInputProps, + treeProps: treeProps, + data: data, + onCreate: onCreate, + onBoxBatchDelete: onBoxBatchDelete, + onCreateSubmit: onCreateSubmit, + onBoxDelete: onBoxDelete, + onSearch: onSearch, + onItemCheck: onItemCheck, + onItemSelect: onItemSelect, + showOptions: showOptions, + customImport: customImport, + extraBtns: extraBtns, + onClockClick: onClockClick, + onImport: onImport + }) + }]; + return /*#__PURE__*/React.createElement(Tabs, _extends({ + defaultActiveKey: "1", + centered: true, + items: items, + onChange: onTabChange, + tabBarGutter: 0, + indicator: { + size: function size(origin) { + return origin; + }, + align: 'center' + } + }, tabsProps)); +}; +export default BoxSelectTree; \ No newline at end of file diff --git a/packages/biz/es/boxSelectTree/components/boxPanel/index.js b/packages/biz/es/boxSelectTree/components/boxPanel/index.js new file mode 100644 index 0000000..fa2318c --- /dev/null +++ b/packages/biz/es/boxSelectTree/components/boxPanel/index.js @@ -0,0 +1,290 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +import React, { useState, useRef } from 'react'; +import { Button, Divider, Input, Space } from 'antd'; +import { ModalForm, ProFormText } from '@ant-design/pro-components'; +import { ClockCircleOutlined, CloseCircleOutlined, DiffOutlined, FolderAddOutlined, ImportOutlined, SwitcherOutlined } from '@ant-design/icons'; +import TreeTransferModal from "../../../treeTransferModal"; +import BoxTree from "../../../tree"; +var BoxPanel = function BoxPanel(props) { + var _createFormRef$curren4, _treeProps$checkedKey; + var searchInputProps = props.searchInputProps, + _props$showOptions = props.showOptions, + showOptions = _props$showOptions === void 0 ? true : _props$showOptions, + extraBtns = props.extraBtns, + _props$data = props.data, + data = _props$data === void 0 ? [] : _props$data, + onSearch = props.onSearch, + treeProps = props.treeProps, + onItemCheck = props.onItemCheck, + onItemSelect = props.onItemSelect, + onCreateSubmit = props.onCreateSubmit, + onBoxBatchDelete = props.onBoxBatchDelete, + onBoxDelete = props.onBoxDelete, + onClockClick = props.onClockClick, + onImport = props.onImport, + onBatch = props.onBatch, + onCreate = props.onCreate, + boxDataSource = props.boxDataSource, + customImport = props.customImport; + var _useState = useState(false), + _useState2 = _slicedToArray(_useState, 2), + isTreeCheckable = _useState2[0], + setIsTreeCheckable = _useState2[1]; + var _useState3 = useState([]), + _useState4 = _slicedToArray(_useState3, 2), + targetItems = _useState4[0], + setTargetItems = _useState4[1]; + var _useState5 = useState(false), + _useState6 = _slicedToArray(_useState5, 2), + boxChoiceOpen = _useState6[0], + setBoxChoiceOpen = _useState6[1]; + var _useState7 = useState([]), + _useState8 = _slicedToArray(_useState7, 2), + checkedKeys = _useState8[0], + setCheckedKeys = _useState8[1]; + var createFormRef = useRef(); + + /** + * 修改选择状态 + * @param _data + */ + var handleCheckable = function handleCheckable() { + setIsTreeCheckable(function (pre) { + return !pre; + }); + }; + var onTreeCheck = function onTreeCheck(keys, info) { + var _targetItems = []; + setCheckedKeys(keys); + info.checkedNodes.forEach(function (o) { + o.isLeaf && _targetItems.push(o); + }); + setTargetItems(_targetItems); + }; + + /** + * 删除 + * @param key + * @param param1 + */ + var onItemDelete = function onItemDelete(key, _ref) { + var keys = _ref.keys; + setCheckedKeys(function (pre) { + var newKeys = pre.filter(function (_key) { + return !keys.includes(_key); + }); + return newKeys; + }); + setTargetItems(function (pre) { + return pre.filter(function (o) { + return o.key !== key; + }); + }); + }; + + // 盒子点击确定 + var onBoxChoiceOk = /*#__PURE__*/function () { + var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data) { + var _createFormRef$curren, _createFormRef$curren2, _createFormRef$curren3; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + (_createFormRef$curren = createFormRef.current) === null || _createFormRef$curren === void 0 || _createFormRef$curren.setFieldValue('boxList', data); + (_createFormRef$curren2 = createFormRef.current) === null || _createFormRef$curren2 === void 0 || _createFormRef$curren2.setFieldValue('boxName', 123); + console.log((_createFormRef$curren3 = createFormRef.current) === null || _createFormRef$curren3 === void 0 ? void 0 : _createFormRef$curren3.getFieldValue('boxList')); + setBoxChoiceOpen(false); + case 4: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function onBoxChoiceOk(_x) { + return _ref2.apply(this, arguments); + }; + }(); + + // 盒子选择重置 + var onBoxChoiceReset = function onBoxChoiceReset() { + setCheckedKeys([]); + setTargetItems([]); + }; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 16px' + } + }, /*#__PURE__*/React.createElement(TreeTransferModal, { + open: boxChoiceOpen, + onCancel: function onCancel() { + return setBoxChoiceOpen(false); + }, + onRadioChange: function onRadioChange(e) { + return console.log('radio', e.target.value); + } // 顶部 radio 事件 + , + dataSource: boxDataSource // 数据源 + , + targetItems: targetItems // 右侧选中项 + , + checkedKeys: checkedKeys // 左侧选中 + , + onReset: onBoxChoiceReset // 重置按钮事件 + , + onOk: onBoxChoiceOk // 确定按钮事件 + , + onTreeCheck: onTreeCheck // 树check选中事件 + , + onItemDelete: onItemDelete // 右侧点击删除事件 + }), /*#__PURE__*/React.createElement(Space, { + size: 12, + direction: "vertical", + style: { + width: '100%' + } + }, /*#__PURE__*/React.createElement(Space, { + size: 4, + style: { + width: '100%', + justifyContent: 'space-between' + } + }, /*#__PURE__*/React.createElement(Input, _extends({ + size: "middle", + onChange: function onChange(e) { + return onSearch === null || onSearch === void 0 ? void 0 : onSearch(e); + }, + placeholder: "\u8BF7\u8F93\u5165\u76D2\u5B50\u540D\u79F0" + }, searchInputProps)), customImport || /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, { + type: "text", + onClick: function onClick() { + return (onBatch === null || onBatch === void 0 ? void 0 : onBatch()) || handleCheckable(); + }, + icon: isTreeCheckable ? /*#__PURE__*/React.createElement(SwitcherOutlined, null) : /*#__PURE__*/React.createElement(DiffOutlined, null) + }), /*#__PURE__*/React.createElement(Button, { + type: "text", + onClick: function onClick() { + return onClockClick === null || onClockClick === void 0 ? void 0 : onClockClick(); + }, + icon: /*#__PURE__*/React.createElement(ClockCircleOutlined, null) + }))), showOptions && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Space, { + align: "center" + }, /*#__PURE__*/React.createElement(Button, { + type: "text", + style: { + padding: '4px 8px' + }, + onClick: function onClick() { + return onImport === null || onImport === void 0 ? void 0 : onImport(); + }, + icon: /*#__PURE__*/React.createElement(ImportOutlined, null) + }, "\u5BFC\u5165\u76D2\u5B50"), /*#__PURE__*/React.createElement(Divider, { + type: "vertical", + style: { + margin: '8px 0' + } + }), onCreate ? /*#__PURE__*/React.createElement(Button, { + onClick: onCreate, + type: "text", + style: { + padding: '4px 8px' + }, + icon: /*#__PURE__*/React.createElement(FolderAddOutlined, null) + }, "\u65B0\u5EFA\u7EC4") : /*#__PURE__*/React.createElement(ModalForm, { + width: '600px', + open: onCreate ? false : undefined, + formRef: createFormRef, + title: "\u65B0\u5EFA\u7EC4", + modalProps: { + destroyOnClose: true + }, + layout: "horizontal", + labelCol: { + span: 6 + }, + wrapperCol: { + span: 18 + }, + trigger: /*#__PURE__*/React.createElement(Button, { + type: "text", + style: { + padding: '4px 8px' + }, + icon: /*#__PURE__*/React.createElement(FolderAddOutlined, null) + }, "\u65B0\u5EFA\u7EC4"), + submitter: { + searchConfig: { + submitText: '确定', + resetText: '取消' + } + }, + onFinish: onCreateSubmit + }, /*#__PURE__*/React.createElement(ProFormText, { + rules: [{ + required: true, + max: 20 + }, { + pattern: /^[^\s]*$/g, + message: '禁止输入空格' + }], + fieldProps: { + showCount: true + }, + width: "md", + name: "name", + label: "\u76D2\u5B50\u7EC4\u540D\u79F0", + placeholder: "\u8BF7\u8F93\u5165\u76D2\u5B50\u540D\u79F0" + }), /*#__PURE__*/React.createElement(ProFormText, { + width: "md", + name: "boxList", + label: "\u76D2\u5B50\u9009\u62E9", + fieldProps: { + readOnly: true, + value: "\u5DF2\u9009\u62E9".concat(((_createFormRef$curren4 = createFormRef.current) === null || _createFormRef$curren4 === void 0 || (_createFormRef$curren4 = _createFormRef$curren4.getFieldValue('boxList')) === null || _createFormRef$curren4 === void 0 ? void 0 : _createFormRef$curren4.length) || 0, "\u4E2A\u76D2\u5B50"), + suffix: /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement("a", { + onClick: function onClick() { + var _createFormRef$curren5; + (_createFormRef$curren5 = createFormRef.current) === null || _createFormRef$curren5 === void 0 || _createFormRef$curren5.setFieldValue('boxList', null); + onBoxChoiceReset(); + } + }, "\u6062\u590D\u9ED8\u8BA4"), /*#__PURE__*/React.createElement("a", { + onClick: function onClick() { + return setBoxChoiceOpen(true); + } + }, "\u8303\u56F4\u9009\u62E9")) + } + })), /*#__PURE__*/React.createElement(Divider, { + type: "vertical", + style: { + margin: '8px 0' + } + }), /*#__PURE__*/React.createElement(Button, { + danger: true, + type: "text", + style: { + padding: '4px 8px' + }, + icon: /*#__PURE__*/React.createElement(CloseCircleOutlined, null), + disabled: (treeProps === null || treeProps === void 0 || (_treeProps$checkedKey = treeProps.checkedKeys) === null || _treeProps$checkedKey === void 0 ? void 0 : _treeProps$checkedKey.length) <= 0, + onClick: onBoxBatchDelete + }, "\u5220\u9664")), /*#__PURE__*/React.createElement(Divider, { + style: { + margin: 0 + } + })), extraBtns, /*#__PURE__*/React.createElement(BoxTree, _extends({ + treeCheckable: isTreeCheckable, + data: data, + onItemSelect: onItemSelect, + onItemCheck: onItemCheck, + onItemDelete: onBoxDelete + }, treeProps)))); +}; +export default BoxPanel; \ No newline at end of file diff --git a/packages/biz/es/boxSelectTree/index.d.ts b/packages/biz/es/boxSelectTree/index.d.ts new file mode 100644 index 0000000..2ff0f1e --- /dev/null +++ b/packages/biz/es/boxSelectTree/index.d.ts @@ -0,0 +1,3 @@ +import BoxSelectTree from './boxSelectTree'; +export type { BoxSelectTreeProps } from './boxSelectTree'; +export default BoxSelectTree; diff --git a/packages/biz/es/boxSelectTree/index.js b/packages/biz/es/boxSelectTree/index.js new file mode 100644 index 0000000..c537873 --- /dev/null +++ b/packages/biz/es/boxSelectTree/index.js @@ -0,0 +1,2 @@ +import BoxSelectTree from "./boxSelectTree"; +export default BoxSelectTree; \ No newline at end of file diff --git a/packages/biz/es/boxSelectTree/mock.d.ts b/packages/biz/es/boxSelectTree/mock.d.ts new file mode 100644 index 0000000..84026eb --- /dev/null +++ b/packages/biz/es/boxSelectTree/mock.d.ts @@ -0,0 +1,2 @@ +import { TreeDataNode } from "antd"; +export declare const treeData: TreeDataNode[]; diff --git a/packages/biz/es/boxSelectTree/mock.js b/packages/biz/es/boxSelectTree/mock.js new file mode 100644 index 0000000..f05520b --- /dev/null +++ b/packages/biz/es/boxSelectTree/mock.js @@ -0,0 +1,22 @@ +export var treeData = [{ + title: '全部盒子', + key: '0-0', + children: [{ + title: '盒子组1', + key: '0-0-0', + children: [{ + title: '摄像头1', + key: '0-0-0-0' + }, { + title: '摄像头2', + key: '0-0-0-1' + }] + }, { + title: '盒子组2', + key: '0-0-1', + children: [{ + title: '摄像头4', + key: '0-0-1-0' + }] + }] +}]; \ No newline at end of file diff --git a/packages/biz/es/tree/boxTree.d.ts b/packages/biz/es/tree/boxTree.d.ts new file mode 100644 index 0000000..5e34aef --- /dev/null +++ b/packages/biz/es/tree/boxTree.d.ts @@ -0,0 +1,17 @@ +import { FC } from 'react'; +import { TreeDataNode, TreeProps } from 'antd'; +import './index.less'; +export interface BoxTreeProps extends TreeProps { + data: TreeDataNode[]; + treeCheckable?: boolean; + showItemOption?: boolean; + customOptions?: any; + onItemCheck?: TreeProps['onCheck']; + onItemSelect?: TreeProps['onSelect']; + onItemSetting?: (_data: any) => void; + onItemDelete?: (_data: any) => void; + onItemRename?: (_nodeData: any) => void; + onItemRenameFinish?: (_data: any, _nodeData: any) => Promise; +} +declare const boxTree: FC; +export default boxTree; diff --git a/packages/biz/es/tree/boxTree.js b/packages/biz/es/tree/boxTree.js new file mode 100644 index 0000000..e9e44cb --- /dev/null +++ b/packages/biz/es/tree/boxTree.js @@ -0,0 +1,134 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +import React, { useState } from 'react'; +import { Tree, Badge, Space } from 'antd'; +import theme from 'antd/es/theme'; +import { CloseOutlined, EditOutlined, SettingOutlined } from '@ant-design/icons'; +import { ModalForm, ProFormText } from '@ant-design/pro-components'; +import "./index.less"; +var componentName = 'zhst-biz-tree'; +var useToken = theme.useToken; +var boxTree = function boxTree(props) { + var onItemSelect = props.onItemSelect, + onItemCheck = props.onItemCheck, + onItemSetting = props.onItemSetting, + onItemDelete = props.onItemDelete, + _props$data = props.data, + data = _props$data === void 0 ? [] : _props$data, + _props$showItemOption = props.showItemOption, + showItemOption = _props$showItemOption === void 0 ? true : _props$showItemOption, + _props$treeCheckable = props.treeCheckable, + treeCheckable = _props$treeCheckable === void 0 ? false : _props$treeCheckable, + onItemRename = props.onItemRename, + onItemRenameFinish = props.onItemRenameFinish, + customOptions = props.customOptions; + var _useToken = useToken(), + token = _useToken.token; + var _useState = useState(''), + _useState2 = _slicedToArray(_useState, 2), + checkedItem = _useState2[0], + setCheckedItem = _useState2[1]; + var cameraStatus = new Map([['0', 'error'], ['1', 'success'], ['3', 'processing'], ['4', 'default']]); + return /*#__PURE__*/React.createElement(Tree, _extends({ + checkable: treeCheckable, + blockNode: true, + onSelect: function onSelect(selectedKeys, info) { + setCheckedItem(selectedKeys[0]); + onItemSelect === null || onItemSelect === void 0 || onItemSelect(selectedKeys, info); + }, + onCheck: onItemCheck, + treeData: data, + titleRender: function titleRender(_nodeData) { + return /*#__PURE__*/React.createElement("div", { + className: "".concat(componentName, "-item-render") + }, !_nodeData.children && _nodeData.isCamera && /*#__PURE__*/React.createElement(Badge, { + style: { + marginRight: '6px' + }, + status: cameraStatus.get(_nodeData.status || '4') + }), /*#__PURE__*/React.createElement("span", { + // @ts-ignore + style: checkedItem === _nodeData.key && _nodeData.isCamera ? { + color: token.colorPrimary + } : {} + }, _nodeData.title), showItemOption && /*#__PURE__*/React.createElement(Space, { + className: "".concat(componentName, "-item-render_right"), + style: { + float: 'right' + } + }, customOptions || /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ModalForm, { + title: "\u91CD\u547D\u540D", + width: 600, + modalProps: { + destroyOnClose: true + }, + layout: "horizontal", + labelCol: { + span: 6 + }, + wrapperCol: { + span: 18 + }, + trigger: /*#__PURE__*/React.createElement(EditOutlined, { + onClick: function onClick(e) { + e.preventDefault(); + e.stopPropagation(); + onItemRename === null || onItemRename === void 0 || onItemRename(_nodeData); + } + }), + submitter: { + searchConfig: { + submitText: '确定', + resetText: '取消' + } + }, + onFinish: ( /*#__PURE__*/function () { + var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(value) { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", onItemRenameFinish === null || onItemRenameFinish === void 0 ? void 0 : onItemRenameFinish(value, _nodeData)); + case 1: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function (_x) { + return _ref.apply(this, arguments); + }; + }()) + }, /*#__PURE__*/React.createElement(ProFormText, { + rules: [{ + required: true + }], + width: "md", + name: "name", + label: "\u76D2\u5B50\u540D\u79F0", + placeholder: "\u8BF7\u8F93\u5165\u76D2\u5B50\u540D\u79F0" + })), /*#__PURE__*/React.createElement(SettingOutlined, { + onClick: function onClick(e) { + e.preventDefault(); + e.stopPropagation(); + onItemSetting === null || onItemSetting === void 0 || onItemSetting(_nodeData); + } + }), /*#__PURE__*/React.createElement(CloseOutlined, { + onClick: function onClick(e) { + e.preventDefault(); + e.stopPropagation(); + onItemDelete === null || onItemDelete === void 0 || onItemDelete(_nodeData); + } + })))); + } + }, props)); +}; +export default boxTree; \ No newline at end of file diff --git a/packages/biz/es/tree/index.d.ts b/packages/biz/es/tree/index.d.ts new file mode 100644 index 0000000..4082eb0 --- /dev/null +++ b/packages/biz/es/tree/index.d.ts @@ -0,0 +1,13 @@ +import { TreeDataNode } from 'antd'; +import BoxTree from './boxTree'; +export interface TreeData extends TreeDataNode { + children?: TreeDataNode['children'] & { + isCamera?: boolean; + /** + * 0-失败 1-成功 2-进行中 3-未知 + */ + status?: '0' | '1' | '2' | '3'; + }[]; +} +export type { BoxTreeProps } from './boxTree'; +export default BoxTree; diff --git a/packages/biz/es/tree/index.js b/packages/biz/es/tree/index.js new file mode 100644 index 0000000..23238e5 --- /dev/null +++ b/packages/biz/es/tree/index.js @@ -0,0 +1,2 @@ +import BoxTree from "./boxTree"; +export default BoxTree; \ No newline at end of file diff --git a/packages/biz/es/tree/index.less b/packages/biz/es/tree/index.less new file mode 100644 index 0000000..9da4e2d --- /dev/null +++ b/packages/biz/es/tree/index.less @@ -0,0 +1,9 @@ +.zhst-biz-tree-item-render { + &_right { + display: none; + } + + &:hover &_right { + display: inline-flex; + } +} diff --git a/packages/biz/es/treeTransfer/TreeTransfer.d.ts b/packages/biz/es/treeTransfer/TreeTransfer.d.ts new file mode 100644 index 0000000..b74b4f3 --- /dev/null +++ b/packages/biz/es/treeTransfer/TreeTransfer.d.ts @@ -0,0 +1,22 @@ +import React from 'react'; +import { InputProps } from 'antd'; +import { TransferProps, TreeDataNode, TreeProps } from 'antd'; +import './index.less'; +export interface TreeTransferProps { + dataSource: TreeDataNode[]; + treeProps?: TreeProps; + searchInputProps?: InputProps; + targetItems: TreeDataNode[]; + checkedKeys: string[]; + onTreeSelect?: TreeProps['onSelect']; + onTreeCheck?: TreeProps['onCheck']; + onItemDelete?: (key: string, info?: { + root: TreeDataNode[]; + keys: string[]; + }) => void; + onChange?: TransferProps['onChange']; + onOk?: (data: any) => void; + onReset?: () => void; +} +declare const TreeTransfer: React.FC; +export default TreeTransfer; diff --git a/packages/biz/es/treeTransfer/TreeTransfer.js b/packages/biz/es/treeTransfer/TreeTransfer.js new file mode 100644 index 0000000..dc3e135 --- /dev/null +++ b/packages/biz/es/treeTransfer/TreeTransfer.js @@ -0,0 +1,143 @@ +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +import React, { useState } from 'react'; +import { Button, Card, Flex, Input, Tree } from 'antd'; +import theme from 'antd/es/theme'; +import "./index.less"; +import { DeleteOutlined, DoubleRightOutlined, SearchOutlined } from '@ant-design/icons'; +import { getAllRootKeyById } from "./treeTransferHelper"; +var componentName = 'zhst-biz-treeTransfer'; +var useToken = theme.useToken; +var TreeTransfer = function TreeTransfer(_ref) { + var dataSource = _ref.dataSource, + treeProps = _ref.treeProps, + searchInputProps = _ref.searchInputProps, + _ref$targetItems = _ref.targetItems, + targetItems = _ref$targetItems === void 0 ? [] : _ref$targetItems, + _ref$checkedKeys = _ref.checkedKeys, + checkedKeys = _ref$checkedKeys === void 0 ? [] : _ref$checkedKeys, + onTreeCheck = _ref.onTreeCheck, + onTreeSelect = _ref.onTreeSelect, + onItemDelete = _ref.onItemDelete, + onOk = _ref.onOk, + onReset = _ref.onReset; + var _useToken = useToken(), + token = _useToken.token; + var _useState = useState(''), + _useState2 = _slicedToArray(_useState, 2), + keyWords = _useState2[0], + setKeyWords = _useState2[1]; + function findNodesWithKeyword(_keyWords, _treeData) { + // @ts-ignore + function dfs(node) { + return node.filter(function (item) { + return item.title.includes(_keyWords); + }); + } + var data = dfs(_treeData); + return data || []; + } + return /*#__PURE__*/React.createElement(Flex, { + gap: 20, + className: componentName, + align: "center", + justify: "center" + }, /*#__PURE__*/React.createElement("div", { + className: "".concat(componentName, "-left") + }, /*#__PURE__*/React.createElement(Card, { + className: "".concat(componentName, "-left_card"), + title: /*#__PURE__*/React.createElement("div", { + style: { + textAlign: 'center' + } + }, "\u53EF\u9009\u62E9\u7684\u8303\u56F4"), + bodyStyle: { + padding: 12 + } + }, /*#__PURE__*/React.createElement(Input, _extends({ + prefix: /*#__PURE__*/React.createElement(SearchOutlined, null), + onChange: function onChange(e) { + return setKeyWords(e.target.value); + }, + placeholder: "\u8BF7\u8F93\u5165\u8BBE\u5907\u540D\u79F0" + }, searchInputProps)), /*#__PURE__*/React.createElement(Tree, _extends({ + style: { + marginTop: '6px' + }, + height: 420, + blockNode: true, + checkable: true, + checkedKeys: checkedKeys, + treeData: findNodesWithKeyword(keyWords, dataSource), + onCheck: function onCheck(keys, info) { + return onTreeCheck === null || onTreeCheck === void 0 ? void 0 : onTreeCheck(keys, info); + }, + onSelect: function onSelect(keys, info) { + return onTreeSelect === null || onTreeSelect === void 0 ? void 0 : onTreeSelect(keys, info); + } + }, treeProps)))), /*#__PURE__*/React.createElement(DoubleRightOutlined, null), /*#__PURE__*/React.createElement("div", { + className: "".concat(componentName, "-right") + }, /*#__PURE__*/React.createElement(Card, { + className: "".concat(componentName, "-right_card"), + title: /*#__PURE__*/React.createElement("div", { + style: { + textAlign: 'center' + } + }, "\u5DF2\u9009\u62E9\u7684\u8303\u56F4"), + bodyStyle: { + padding: 0 + } + }, /*#__PURE__*/React.createElement("div", { + className: "".concat(componentName, "-right_card__items") + }, targetItems.map(function (item) { + return /*#__PURE__*/React.createElement("div", { + className: "".concat(componentName, "-right_card__items___item"), + key: item.key, + onMouseEnter: function onMouseEnter(e) { + e.target.style.backgroundColor = token.colorPrimaryBg; + e.target.style.color = token.colorPrimary; + }, + onMouseLeave: function onMouseLeave(e) { + e.target.style.color = token.colorText; + e.target.style.backgroundColor = null; + } + }, item.title, /*#__PURE__*/React.createElement("div", { + style: { + float: 'right' + } + }, /*#__PURE__*/React.createElement(DeleteOutlined, { + onClick: function onClick() { + var _getAllRootKeyById = getAllRootKeyById(item.key, dataSource), + root = _getAllRootKeyById.root, + keys = _getAllRootKeyById.keys; + onItemDelete === null || onItemDelete === void 0 || onItemDelete(item.key, { + root: root, + keys: keys + }); + } + }))); + })), /*#__PURE__*/React.createElement(Flex, { + className: "".concat(componentName, "-right_card__btns") + }, /*#__PURE__*/React.createElement(Button, { + style: { + marginRight: 8, + width: '50%' + }, + disabled: targetItems.length <= 0, + onClick: onReset + }, "\u91CD\u7F6E"), /*#__PURE__*/React.createElement(Button, { + style: { + width: '50%' + }, + type: "primary", + onClick: function onClick() { + return onOk === null || onOk === void 0 ? void 0 : onOk(targetItems); + } + }, "\u786E\u5B9A"))))); +}; +export default TreeTransfer; \ No newline at end of file diff --git a/packages/biz/es/treeTransfer/index.d.ts b/packages/biz/es/treeTransfer/index.d.ts new file mode 100644 index 0000000..7ea5c47 --- /dev/null +++ b/packages/biz/es/treeTransfer/index.d.ts @@ -0,0 +1,4 @@ +import TreeTransfer from "./TreeTransfer"; +export type { TreeTransferProps } from './TreeTransfer'; +export * from './treeTransferHelper'; +export default TreeTransfer; diff --git a/packages/biz/es/treeTransfer/index.js b/packages/biz/es/treeTransfer/index.js new file mode 100644 index 0000000..153880e --- /dev/null +++ b/packages/biz/es/treeTransfer/index.js @@ -0,0 +1,3 @@ +import TreeTransfer from "./TreeTransfer"; +export * from "./treeTransferHelper"; +export default TreeTransfer; \ No newline at end of file diff --git a/packages/biz/es/treeTransfer/index.less b/packages/biz/es/treeTransfer/index.less new file mode 100644 index 0000000..9ffe8cd --- /dev/null +++ b/packages/biz/es/treeTransfer/index.less @@ -0,0 +1,43 @@ +.zhst-biz-treeTransfer { + &-left { + &_card { + width: 500px; + height: 522px; + background-color: #FCFCFC; + } + } + + &-right { + &_card { + width: 300px; + height: 522px; + background-color: #FCFCFC; + + &__items { + padding: 8px 4px; + overflow: scroll; + + &::-webkit-scrollbar { + display: none; + } + + &___item { + margin: 0; + padding: 4px 12px; + cursor: pointer; + } + } + + &__btns { + width: 100%; + padding: 8px; + position: absolute; + bottom: 0; + left: 50%; + transform: translateX(-50%); + box-sizing: border-box; + border-top: 1px solid #f0f0f0; + } + } + } +} diff --git a/packages/biz/es/treeTransfer/treeTransferHelper.d.ts b/packages/biz/es/treeTransfer/treeTransferHelper.d.ts new file mode 100644 index 0000000..705684c --- /dev/null +++ b/packages/biz/es/treeTransfer/treeTransferHelper.d.ts @@ -0,0 +1,12 @@ +export declare const isChecked: (selectedKeys: React.Key[], eventKey: React.Key) => boolean; +/** + * 通过子元素找到父级节点 + * @param objects + * @param element + * @returns + */ +export declare const findParentByChild: (objects: any[], propertyValue: string | number, propertyKey?: string) => any; +export declare const getAllRootKeyById: (val: string | number, list: any[], key?: string) => { + root: any; + keys: any[]; +}; diff --git a/packages/biz/es/treeTransfer/treeTransferHelper.js b/packages/biz/es/treeTransfer/treeTransferHelper.js new file mode 100644 index 0000000..efaf6d8 --- /dev/null +++ b/packages/biz/es/treeTransfer/treeTransferHelper.js @@ -0,0 +1,57 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +export var isChecked = function isChecked(selectedKeys, eventKey) { + return selectedKeys.includes(eventKey); +}; +function isObject(value) { + return value !== null && _typeof(value) === 'object' && !Array.isArray(value); +} + +/** + * 通过子元素找到父级节点 + * @param objects + * @param element + * @returns + */ +export var findParentByChild = function findParentByChild(objects, propertyValue) { + var propertyKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'key'; + for (var i = 0; i < objects.length; i++) { + var obj = objects[i]; + if (obj[propertyKey] === propertyValue) { + return obj; + } else if (_typeof(obj) === 'object') { + var found = findParentByChild(Object.values(obj), propertyValue); + if (found) { + return obj; + } + } + } + return null; // 如果找不到包含具有指定属性的子对象的父对象,返回 null +}; +export var getAllRootKeyById = function getAllRootKeyById(val, list) { + var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'key'; + var keys = []; + var findParentByChild = function findParentByChild(propertyValue, objects, propertyKey) { + for (var i = 0; i < objects.length; i++) { + var obj = objects[i]; + if (obj[propertyKey] === propertyValue) { + console.log('obj', obj); + return obj; + } else if (_typeof(obj) === 'object') { + var found = findParentByChild(propertyValue, Object.values(obj), propertyKey); + if (found) { + if (isObject(found)) { + keys.push(found.key); + } + return obj; + } + } + } + return null; // 如果找不到包含具有指定属性的子对象的父对象,返回 null + }; + var data = findParentByChild(val, list, key); + data.key && keys.push(data.key); + return { + root: data, + keys: keys + }; +}; \ No newline at end of file diff --git a/packages/biz/es/treeTransferModal/TreeTransferModal.d.ts b/packages/biz/es/treeTransferModal/TreeTransferModal.d.ts new file mode 100644 index 0000000..e0a0d0e --- /dev/null +++ b/packages/biz/es/treeTransferModal/TreeTransferModal.d.ts @@ -0,0 +1,26 @@ +import { FC } from 'react'; +import { ModalProps, RadioGroupProps, SelectProps, TransferProps, TreeDataNode, TreeProps } from 'antd'; +export interface TreeTransferModalProps { + dataSource: TreeDataNode[]; + treeProps?: TreeProps; + targetItems: TreeDataNode[]; + checkedKeys: string[]; + onTreeSelect?: TreeProps['onSelect']; + onTreeCheck?: TreeProps['onCheck']; + onItemDelete?: (key: string, info?: { + root: TreeDataNode[]; + keys: string[]; + }) => void; + onChange?: TransferProps['onChange']; + onOk?: (data: any) => void; + onReset?: () => void; + open?: boolean; + onCancel?: ModalProps['onCancel']; + onRadioChange?: RadioGroupProps['onChange']; + onSelect?: SelectProps['onSelect']; + modalProps?: ModalProps; + radioProps?: RadioGroupProps; + selectProps?: SelectProps; +} +declare const TreeTransferModal: FC; +export default TreeTransferModal; diff --git a/packages/biz/es/treeTransferModal/TreeTransferModal.js b/packages/biz/es/treeTransferModal/TreeTransferModal.js new file mode 100644 index 0000000..5580038 --- /dev/null +++ b/packages/biz/es/treeTransferModal/TreeTransferModal.js @@ -0,0 +1,80 @@ +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +import React, { useState } from 'react'; +import { Modal, Radio, Select } from 'antd'; +import TreeTransfer from "../treeTransfer"; +import { ALL_LIST, BOX_TYPE_LIST } from "../utils/constants"; +var TreeTransferModal = function TreeTransferModal(props) { + var open = props.open, + _props$dataSource = props.dataSource, + dataSource = _props$dataSource === void 0 ? [] : _props$dataSource, + checkedKeys = props.checkedKeys, + onItemDelete = props.onItemDelete, + onOk = props.onOk, + onCancel = props.onCancel, + onReset = props.onReset, + onRadioChange = props.onRadioChange, + onTreeCheck = props.onTreeCheck, + onSelect = props.onSelect, + targetItems = props.targetItems, + modalProps = props.modalProps, + radioProps = props.radioProps, + selectProps = props.selectProps; + var _useState = useState('1'), + _useState2 = _slicedToArray(_useState, 2), + type = _useState2[0], + setType = _useState2[1]; + return /*#__PURE__*/React.createElement(Modal, _extends({ + open: open, + destroyOnClose: true, + title: "\u7EDF\u8BA1\u70B9\u4F4D", + width: "948px", + footer: null, + onCancel: onCancel + }, modalProps), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Radio.Group, _extends({ + onChange: function onChange(e) { + setType(e.target.value); + onRadioChange === null || onRadioChange === void 0 || onRadioChange(e); + }, + style: { + marginLeft: '24px', + padding: '20px 0' + }, + value: type, + options: BOX_TYPE_LIST + }, radioProps)), /*#__PURE__*/React.createElement(Select, _extends({ + defaultValue: '', + style: { + marginLeft: 200, + width: 150 + }, + options: ALL_LIST, + onSelect: onSelect + }, selectProps))), type === 'box' ? /*#__PURE__*/React.createElement(TreeTransfer, { + dataSource: dataSource, + targetItems: targetItems, + checkedKeys: checkedKeys, + onTreeCheck: onTreeCheck, + onItemDelete: onItemDelete, + onOk: onOk, + onReset: onReset + }) : /*#__PURE__*/React.createElement(TreeTransfer, { + dataSource: dataSource, + targetItems: targetItems, + checkedKeys: checkedKeys, + onTreeCheck: onTreeCheck, + onItemDelete: onItemDelete, + onOk: onOk, + onReset: onReset + }), /*#__PURE__*/React.createElement("p", { + style: { + textAlign: 'right' + } + }, "\u5DF2\u9009\u4E2D", targetItems.length, "\u4E2A\u70B9\u4F4D"))); +}; +export default TreeTransferModal; \ No newline at end of file diff --git a/packages/biz/es/treeTransferModal/index.d.ts b/packages/biz/es/treeTransferModal/index.d.ts new file mode 100644 index 0000000..8e5245a --- /dev/null +++ b/packages/biz/es/treeTransferModal/index.d.ts @@ -0,0 +1,3 @@ +import TreeTransferModal from './TreeTransferModal'; +export type { TreeTransferModalProps } from './TreeTransferModal'; +export default TreeTransferModal; diff --git a/packages/biz/es/treeTransferModal/index.js b/packages/biz/es/treeTransferModal/index.js new file mode 100644 index 0000000..3c464e7 --- /dev/null +++ b/packages/biz/es/treeTransferModal/index.js @@ -0,0 +1,2 @@ +import TreeTransferModal from "./TreeTransferModal"; +export default TreeTransferModal; \ No newline at end of file diff --git a/packages/biz/lib/BigImageModal/BigImageModal.d.ts b/packages/biz/lib/BigImageModal/BigImageModal.d.ts new file mode 100644 index 0000000..ae5e46d --- /dev/null +++ b/packages/biz/lib/BigImageModal/BigImageModal.d.ts @@ -0,0 +1,40 @@ +import React from 'react'; +import type { ModalProps, DescriptionsProps, TabsProps, VideoViewRef, ImgViewRef } from '@zhst/meta'; +import './index.less'; +export declare const componentPrefix = "zhst-image"; +export type TAB_TYPE = 'COMPATER' | 'NORMAL' | 'VIDEO'; +export type MODEL_TYPE = 'VIDEO' | 'IMAGE'; +export interface BigImageModalProps extends ModalProps { + visible: boolean; + activeTab?: TAB_TYPE; + attributeList: { + title: string; + children: Pick; + }; + tabs: { + data: Pick & { + key: TAB_TYPE; + }; + }; + dataSource: any; + imageData: any; + relatedData: any; + isRelated?: boolean; + footer?: React.ReactNode; + showCarousel?: boolean; + onTabChange?: (newVal?: TAB_TYPE, oldVal?: TAB_TYPE) => void; + onIndexChange?: (newVal?: number, oldVal?: number) => void; + transformPropFunc: (data: any) => void; +} +interface BigModalRef { + tab: TAB_TYPE; + setTab: (tab: TAB_TYPE) => void; + modalRef: ModalProps; + activeKey: string; + setActiveKey: (val: string) => void; + videoPlayerRef: VideoViewRef; + combineImageRef: any; + bigImagePreviewRef: ImgViewRef; +} +declare const BigImageModal: React.FC; +export default BigImageModal; diff --git a/packages/biz/lib/BigImageModal/components/CombineImage/index.d.ts b/packages/biz/lib/BigImageModal/components/CombineImage/index.d.ts new file mode 100644 index 0000000..19dbaa2 --- /dev/null +++ b/packages/biz/lib/BigImageModal/components/CombineImage/index.d.ts @@ -0,0 +1,11 @@ +import { FC } from 'react'; +interface ComBineImageProps { + data: { + imgSummary: string; + compaterImages: string[]; + imageKey: string; + score: number; + }; +} +declare const ComBineImage: FC; +export default ComBineImage; diff --git a/packages/biz/lib/BigImageModal/components/CombineImage/index.js b/packages/biz/lib/BigImageModal/components/CombineImage/index.js new file mode 100644 index 0000000..aa5aca2 --- /dev/null +++ b/packages/biz/lib/BigImageModal/components/CombineImage/index.js @@ -0,0 +1,71 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/BigImageModal/components/CombineImage/index.tsx +var CombineImage_exports = {}; +__export(CombineImage_exports, { + default: () => CombineImage_default +}); +module.exports = __toCommonJS(CombineImage_exports); +var import_react = __toESM(require("react")); +var import_meta = require("@zhst/meta"); +var ComBineImage = (0, import_react.forwardRef)((props, ref) => { + const { data } = props; + const { imgSummary, compaterImages = [] } = data; + const targetImageRef = (0, import_react.useRef)(null); + const compareImageRef = (0, import_react.useRef)(null); + const [targetIndex, setTargetIndex] = (0, import_react.useState)(compaterImages.findIndex((_url) => imgSummary === _url) || 0); + (0, import_react.useImperativeHandle)(ref, () => ({ + compareImageRef, + targetImageRef + })); + return /* @__PURE__ */ import_react.default.createElement(import_meta.Flex, { justify: "space-evenly", align: "center", style: { padding: "0 32px" } }, /* @__PURE__ */ import_react.default.createElement( + import_meta.CompareImage, + { + ref: targetImageRef, + preDisable: targetIndex === 0, + nextDisable: targetIndex >= compaterImages.length - 1, + onNext: () => setTargetIndex(targetIndex + 1), + onPre: () => setTargetIndex(targetIndex - 1), + showScore: false, + openRoll: !!compaterImages.length, + url: compaterImages[targetIndex] || imgSummary, + label: "目标图" + } + ), /* @__PURE__ */ import_react.default.createElement(import_meta.Score, { score: data.score }), /* @__PURE__ */ import_react.default.createElement( + import_meta.CompareImage, + { + ref: compareImageRef, + url: data.imageKey, + openRoll: false, + score: data.score, + label: "对比图" + } + )); +}); +var CombineImage_default = ComBineImage; diff --git a/packages/biz/lib/BigImageModal/components/navigation/index.d.ts b/packages/biz/lib/BigImageModal/components/navigation/index.d.ts new file mode 100644 index 0000000..78b1ca8 --- /dev/null +++ b/packages/biz/lib/BigImageModal/components/navigation/index.d.ts @@ -0,0 +1,13 @@ +import * as React from 'react'; +import './index.less'; +declare const Navigation: React.FC<{ + show?: boolean; + onClick?: React.MouseEventHandler; + prev?: boolean; + next?: boolean; + disabled?: boolean; + className?: string; + color?: string; + hoverColor?: string; +}>; +export default Navigation; diff --git a/packages/biz/lib/BigImageModal/mock.d.ts b/packages/biz/lib/BigImageModal/mock.d.ts new file mode 100644 index 0000000..68ff4e3 --- /dev/null +++ b/packages/biz/lib/BigImageModal/mock.d.ts @@ -0,0 +1,245 @@ +export declare const IMAGE_DATA: { + enAbleDeleteFeature: boolean; + tabsFilter: string[]; + selectIndex: number; + disableBtn: number[]; + dataSource: { + objectId: string; + condition: { + featureInfo: null; + featureData: string; + imageData: string; + alg: string; + rect: { + x: number; + y: number; + w: number; + h: number; + }; + objectImageUrl: string; + srcImageUrl: string; + }; + score: number; + timestamp: number; + deviceId: string; + id: string; + name: string; + dirid: string; + status: string; + longitude: number; + latitude: number; + caseId: string; + caseGroup: string; + isDeleted: string; + objectIndex: { + objectId: string; + solutionId: string; + deviceId: string; + fragmentId: string; + }; + objectType: string; + isObjectTrack: boolean; + pathId: string; + frameInfo: { + frameId: string; + frameTimestamp: string; + width: number; + height: number; + originWidth: number; + originHeight: number; + offsetTime: string; + skipNumber: string; + }; + level: number; + bboxInFrame: { + x: number; + y: number; + w: number; + h: number; + }; + bboxExtInFrame: { + x: number; + y: number; + w: number; + h: number; + }; + objectImageKey: string; + objectExtImageKey: string; + frameImageKey: string; + confidence: number; + sourceObjectId: string; + storeTimestamp: string; + gbNumber: string; + qualityScore: number; + subObjectCount: number; + subObjectType: string[]; + subObjectIds: string[]; + solutionId: string; + fragmentId: string; + contrastKey: string; + compaterImages: string[]; + imgSummary: string; + imageKey: string; + srcImageUrl: string; + algorithmVersion: string; + cameraId: string; + cameraName: string; + }[]; + isArchiveDetail: boolean; + ToolProps: { + renderVideoBtn: boolean; + disableVideo: boolean; + }; + specialTitle: string; +}; +export declare const BIG_IMAGE_DATA: ({ + imageKey: string; + imgSummary: string; + flvUrl: string; + compaterImages: string[]; + odRect: { + x: number; + y: number; + w: number; + h: number; + }; + attachImg: { + url: string; + label: string; + }[]; + score: string; + showScore: boolean; + cameraPosition: string; + time: string; + objects: { + objectIndex: { + objectId: string; + solutionId: string; + deviceId: string; + fragmentId: string; + }; + objectType: string; + sourceObjectId: string; + level: number; + confidence: number; + frameInfo: { + frameId: string; + frameTimestamp: string; + width: number; + height: number; + originWidth: number; + originHeight: number; + offsetTime: string; + skipNumber: string; + }; + infoOnSource: { + bboxInFrame: { + bboxRatio: { + x: number; + y: number; + w: number; + h: number; + }; + }; + countInSource: number; + indexInSource: number; + }; + qualityScore: number; + }[]; +} | { + imageKey: string; + imgSummary: string; + odRect: { + x: number; + y: number; + w: number; + h: number; + }; + attachImg: { + url: string; + label: string; + }[]; + flvUrl: string; + score: number; + showScore: boolean; + cameraPosition: string; + time: string; + objects: ({ + objectIndex: { + objectId: string; + solutionId: string; + deviceId: string; + fragmentId: string; + }; + objectType: string; + sourceObjectId: string; + frameInfo: { + frameId: string; + frameTimestamp: string; + width: number; + height: number; + originWidth: number; + originHeight: number; + offsetTime: string; + skipNumber: string; + }; + infoOnSource: { + bboxInFrame: { + bboxRatio: { + x: number; + y: number; + w: number; + h: number; + }; + }; + countInSource: number; + indexInSource: number; + }; + qualityScore: number; + level?: undefined; + confidence?: undefined; + } | { + objectIndex: { + objectId: string; + solutionId: string; + deviceId: string; + fragmentId: string; + }; + objectType: string; + sourceObjectId: string; + level: number; + confidence: number; + frameInfo: { + frameId: string; + frameTimestamp: string; + width: number; + height: number; + originWidth: number; + originHeight: number; + offsetTime: string; + skipNumber: string; + }; + infoOnSource: { + bboxInFrame: { + bboxRatio: { + x: number; + y: number; + w: number; + h: number; + }; + }; + countInSource: number; + indexInSource: number; + }; + qualityScore: number; + })[]; + compaterImages?: undefined; +})[]; +export declare const attributeList: { + title: string; + children: { + key: string; + label: string; + children: string; + }[]; +}[]; diff --git a/packages/biz/lib/BigImageModal/util/bigImageModalAdapter.d.ts b/packages/biz/lib/BigImageModal/util/bigImageModalAdapter.d.ts new file mode 100644 index 0000000..185982d --- /dev/null +++ b/packages/biz/lib/BigImageModal/util/bigImageModalAdapter.d.ts @@ -0,0 +1,118 @@ +/** + * 适配老的大屏组件数据格式传入 + */ +import React from 'react'; +import { AlgorithmVersionStr, HumanProperty, ObjectType, Rect } from '@zhst/types'; +import { VideoViewProps, ImgViewProps, VideoViewRef, ImgViewRef } from '@zhst/meta'; +export type TAB_TYPE = 'COMPATER' | 'NORMAL' | 'TRACK'; +export type MODEL_TYPE = 'VIDEO' | 'IMAGE'; +export interface CarouselProps { + hasPre?: boolean; + hasNext?: boolean; + selectIndex: number; + setSelectIndex: React.Dispatch>; + dataSource: Array<{ + key: string; + url: string; + }>; +} +export type ISelectItem = Partial> & Partial>; +/** + * 描述列表 description + */ +export interface HeaderProps { + value: TAB_TYPE; + onChange: (type: TAB_TYPE) => void; + tabsFilter: TAB_TYPE[]; +} +export interface ParamProps { + tab: string; + selectItem: ISelectItem; + imgViewRef: React.MutableRefObject; + VideoViewRef: React.MutableRefObject; + model: MODEL_TYPE; + setModel: React.Dispatch>; + scale$: number; + showCrop$: boolean; +} +/** + * 工具栏 + */ +export interface ToolProps { + renderRight?: (props: ParamProps) => React.ReactNode; + renderLeft?: (props: ParamProps) => React.ReactNode; + renderVideoBtn?: boolean; + param: ParamProps; + disableVideo: boolean; +} +export interface BigImageData { + extendRectList: (Rect & { + algorithmVersion: AlgorithmVersionStr; + imageKey: string; + })[]; + rectList: (Rect & { + algorithmVersion: AlgorithmVersionStr; + imageKey: string; + })[]; + attachImg: { + url: string; + label: '形体' | '人脸'; + }[]; + odRect: Rect; + compaterImages: string[]; + constractKey: string; + frameImageKey: string; + imageKey?: string; + imgSummary: string; + objectExtImageKey: string; + attributeList: { + label: string; + list: any[]; + }[]; + archiveImages?: any; + spaceName: string; + objectIndex?: { + deviceId: string; + fragmentId: string; + objectId: string; + solutionId: string; + }; + objectType: ObjectType; + objectId: string; + bodyObjectId?: string; + faceObjectId?: string; + sourceObjectId?: string; + cameraId: string; + cameraName: string; + selectIndex: number; + humanProperty: HumanProperty; + qualityScore?: number; + score: number; + timestamp: string; + bodyImageUrl: string; + faceImageUrl: string; + algorithmVersion: AlgorithmVersionStr; + bodySpaceName: string; + faceSpaceName: string; + position: { + lat: number; + lng: number; + }; + solutionId?: string; + [index: string]: any; +} +export interface ImageModalDataProps { + targetData: BigImageData[]; + compactData: BigImageData[]; +} +export interface ModalAdapterConfigProps { + oldMode?: boolean; +} +/** + * 大图组件适配器,兼容老接口 + * @param Cmp 大图组件 + * @param config 额外配置 + * @returns 大图组件 + */ +declare const adapter: (Cmp: any, config: ModalAdapterConfigProps) => any; +export default adapter; diff --git a/packages/biz/lib/BigImageModal/util/bigImageModalAdapter.js b/packages/biz/lib/BigImageModal/util/bigImageModalAdapter.js new file mode 100644 index 0000000..cc45b23 --- /dev/null +++ b/packages/biz/lib/BigImageModal/util/bigImageModalAdapter.js @@ -0,0 +1,57 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/BigImageModal/util/bigImageModalAdapter.tsx +var bigImageModalAdapter_exports = {}; +__export(bigImageModalAdapter_exports, { + default: () => bigImageModalAdapter_default +}); +module.exports = __toCommonJS(bigImageModalAdapter_exports); +var import_react = __toESM(require("react")); +var translateOldImageData = (_data) => { + return { + ..._data, + open: _data.visible, + onCancel: _data.onClose + }; +}; +var adapter = (Cmp, config) => { + const { oldMode = false } = config; + return (props) => { + const newProps = oldMode ? translateOldImageData(props) : props; + console.log("adapter----适配数据", props, newProps); + delete newProps.visible; + return /* @__PURE__ */ import_react.default.createElement( + Cmp, + { + ...newProps + } + ); + }; +}; +var bigImageModalAdapter_default = adapter; diff --git a/packages/biz/lib/Demo/index.d.ts b/packages/biz/lib/Demo/index.d.ts new file mode 100644 index 0000000..bcc157c --- /dev/null +++ b/packages/biz/lib/Demo/index.d.ts @@ -0,0 +1,3 @@ +import React from 'react'; +declare const _default: () => React.JSX.Element; +export default _default; diff --git a/packages/biz/lib/RealTimeMonitor/RealTimeMonitor.d.ts b/packages/biz/lib/RealTimeMonitor/RealTimeMonitor.d.ts new file mode 100644 index 0000000..a3f147f --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/RealTimeMonitor.d.ts @@ -0,0 +1,21 @@ +import React from 'react'; +import { IRecord, VideoPlayerCardProps, ViewLargerImageModalRef } from '@zhst/biz'; +interface RealTimeMonitorProps { + videoDataSource?: VideoPlayerCardProps[]; + handleWindowClick?: (key?: string) => void; + handleCloseButtonClick?: (key?: string) => void; + selectedWindowKey?: string; + warningDataSource?: IRecord[]; + viewLargerImageModalRef?: React.RefObject; + handleDownloadImg?: (imgSrc?: string) => void; + onRecordClick?: (record?: IRecord) => void; + selectedRecordId?: string; + isRecordListLoading?: boolean; + recordListTitle?: string; + style?: React.CSSProperties; + cardStyle?: React.CSSProperties; + imgStyle?: React.CSSProperties; + largeImageTitle?: string; +} +export declare const RealTimeMonitor: React.FC; +export default RealTimeMonitor; diff --git a/packages/biz/lib/RealTimeMonitor/RealTimeMonitor.js b/packages/biz/lib/RealTimeMonitor/RealTimeMonitor.js new file mode 100644 index 0000000..48ad4dc --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/RealTimeMonitor.js @@ -0,0 +1,77 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/RealTimeMonitor/RealTimeMonitor.tsx +var RealTimeMonitor_exports = {}; +__export(RealTimeMonitor_exports, { + RealTimeMonitor: () => RealTimeMonitor, + default: () => RealTimeMonitor_default +}); +module.exports = __toCommonJS(RealTimeMonitor_exports); +var import_react = __toESM(require("react")); +var import_WindowToggle = __toESM(require("./components/WindowToggle")); +var import_WarningRecordList = __toESM(require("./components/WarningRecordList")); +var RealTimeMonitor = (props) => { + const { + videoDataSource, + handleWindowClick, + handleCloseButtonClick, + selectedWindowKey, + warningDataSource, + viewLargerImageModalRef, + handleDownloadImg, + onRecordClick, + selectedRecordId, + isRecordListLoading + } = props; + return /* @__PURE__ */ import_react.default.createElement("div", { className: "zhst-biz-real-time-monitor", style: { display: "flex" } }, /* @__PURE__ */ import_react.default.createElement( + import_WindowToggle.default, + { + selectedWindowKey, + dataSource: videoDataSource, + handleWindowClick, + handleCloseButtonClick + } + ), /* @__PURE__ */ import_react.default.createElement( + import_WarningRecordList.default, + { + dataSource: warningDataSource, + handleDownloadImg, + onRecordClick, + selectedRecordId, + viewLargerImageModalRef, + isRecordListLoading, + recordListTitle: "监控预警记录" + } + )); +}; +var RealTimeMonitor_default = RealTimeMonitor; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + RealTimeMonitor +}); diff --git a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts new file mode 100644 index 0000000..6489299 --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.d.ts @@ -0,0 +1,18 @@ +import React from 'react'; +import { IRecord, ViewLargerImageModalRef } from '@zhst/biz'; +import "./index.less"; +interface WarningRecordListProps { + dataSource?: IRecord[]; + viewLargerImageModalRef?: React.RefObject; + handleDownloadImg?: (imgSrc?: string) => void; + onRecordClick?: (record?: IRecord) => void; + selectedRecordId?: string; + isRecordListLoading?: boolean; + recordListTitle?: string; + style?: React.CSSProperties; + cardStyle?: React.CSSProperties; + imgStyle?: React.CSSProperties; + largeImageTitle?: string; +} +declare const WarningRecordList: React.FC; +export default WarningRecordList; diff --git a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js new file mode 100644 index 0000000..a2441e3 --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/WarningRecordList.js @@ -0,0 +1,74 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/RealTimeMonitor/components/WarningRecordList/WarningRecordList.tsx +var WarningRecordList_exports = {}; +__export(WarningRecordList_exports, { + default: () => WarningRecordList_default +}); +module.exports = __toCommonJS(WarningRecordList_exports); +var import_react = __toESM(require("react")); +var import_biz = require("@zhst/biz"); +var import_antd = require("antd"); +var import_index = require("./index.less"); +var import_icons = require("@ant-design/icons"); +var WarningRecordList = (props) => { + const { + dataSource = [], + viewLargerImageModalRef, + selectedRecordId, + handleDownloadImg, + onRecordClick, + isRecordListLoading, + recordListTitle, + style, + cardStyle, + imgStyle, + largeImageTitle + } = props; + return /* @__PURE__ */ import_react.default.createElement("div", { className: "zhst-biz-warning-record-list", style }, /* @__PURE__ */ import_react.default.createElement("div", { className: "header" }, recordListTitle), /* @__PURE__ */ import_react.default.createElement("div", { className: "body" }, isRecordListLoading ? /* @__PURE__ */ import_react.default.createElement("div", { style: { height: "100%", display: "flex", justifyContent: "center", alignItems: "center" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Spin, { indicator: /* @__PURE__ */ import_react.default.createElement(import_icons.LoadingOutlined, { style: { fontSize: 24 } }) })) : (dataSource == null ? void 0 : dataSource.length) > 0 ? /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { direction: "vertical", size: 10 }, dataSource == null ? void 0 : dataSource.map( + (record, index) => { + if (index > 2) + return; + return /* @__PURE__ */ import_react.default.createElement( + import_biz.WarningRecordCard, + { + key: record == null ? void 0 : record.id, + record, + onRecordClick: (record2) => { + onRecordClick == null ? void 0 : onRecordClick(record2); + }, + selectedRecordId, + cardStyle: { width: 300, height: 264, ...cardStyle }, + imgStyle: { width: 280, height: 169, ...imgStyle } + } + ); + } + )) : /* @__PURE__ */ import_react.default.createElement("div", { style: { height: "100%", display: "flex", justifyContent: "center", alignItems: "center" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Empty, { description: "暂无数据" }))), /* @__PURE__ */ import_react.default.createElement(import_biz.ViewLargerImageModal, { ref: viewLargerImageModalRef, downloadImg: handleDownloadImg, title: largeImageTitle })); +}; +var WarningRecordList_default = WarningRecordList; diff --git a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.d.ts b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.d.ts new file mode 100644 index 0000000..b50da75 --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.d.ts @@ -0,0 +1,2 @@ +import WarningRecordList from './WarningRecordList'; +export default WarningRecordList; diff --git a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.js b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.js new file mode 100644 index 0000000..6f47b77 --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/RealTimeMonitor/components/WarningRecordList/index.tsx +var WarningRecordList_exports = {}; +__export(WarningRecordList_exports, { + default: () => WarningRecordList_default +}); +module.exports = __toCommonJS(WarningRecordList_exports); +var import_WarningRecordList = __toESM(require("./WarningRecordList")); +var WarningRecordList_default = import_WarningRecordList.default; diff --git a/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.less b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.less new file mode 100644 index 0000000..e348f82 --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/components/WarningRecordList/index.less @@ -0,0 +1,20 @@ +.zhst-biz-warning-record-list { + display: flex; + flex-direction: column; + border-left: solid 1px #00000026; + width: 320px; + + .header { + width: 100%; + height: 48px; + background-color: #EFF2F4; + padding: 10px 20px; + box-sizing: border-box; + } + + .body { + padding: 10px; + overflow: hidden; + flex: 1; + } +} \ No newline at end of file diff --git a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts new file mode 100644 index 0000000..c67b407 --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.d.ts @@ -0,0 +1,11 @@ +import React from 'react'; +import { VideoPlayerCardProps } from '@zhst/biz'; +import './index.less'; +interface WindowToggleProps { + dataSource?: VideoPlayerCardProps[]; + handleWindowClick?: (key?: string) => void; + handleCloseButtonClick?: (key?: string) => void; + selectedWindowKey?: string; +} +export declare const WindowToggle: React.FC; +export default WindowToggle; diff --git a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.js b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.js new file mode 100644 index 0000000..ccd71ed --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/WindowToggle.js @@ -0,0 +1,88 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/RealTimeMonitor/components/WindowToggle/WindowToggle.tsx +var WindowToggle_exports = {}; +__export(WindowToggle_exports, { + WindowToggle: () => WindowToggle, + default: () => WindowToggle_default +}); +module.exports = __toCommonJS(WindowToggle_exports); +var import_react = __toESM(require("react")); +var import_antd = require("antd"); +var import_icons = require("@ant-design/icons"); +var import_biz = require("@zhst/biz"); +var import_index = require("./index.less"); +var import_lib = require("antd/lib"); +var WindowToggle = (props) => { + const { dataSource = [], handleWindowClick, handleCloseButtonClick, selectedWindowKey } = props; + const [size, setSize] = (0, import_react.useState)("large"); + const { useToken } = import_lib.theme; + const { token } = useToken(); + const getLabelStyle = (isSelected) => ({ + padding: "0 11px", + background: "#fff", + ...isSelected ? { background: token.colorPrimary, color: "#fff" } : {} + }); + return /* @__PURE__ */ import_react.default.createElement("div", { className: "zhst-biz-window-toggle" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "header" }, /* @__PURE__ */ import_react.default.createElement( + import_antd.Segmented, + { + defaultValue: "large", + options: [ + { value: "large", label: /* @__PURE__ */ import_react.default.createElement("div", { style: getLabelStyle(size === "large") }, /* @__PURE__ */ import_react.default.createElement(import_icons.BarsOutlined, null)) }, + { value: "small", label: /* @__PURE__ */ import_react.default.createElement("div", { style: getLabelStyle(size === "small") }, /* @__PURE__ */ import_react.default.createElement(import_icons.AppstoreOutlined, null)) } + ], + onChange: (value) => { + if (value === "large" && dataSource.length > 0) { + const { windowKey } = dataSource[0]; + handleWindowClick == null ? void 0 : handleWindowClick(windowKey); + } + setSize(value); + } + } + )), /* @__PURE__ */ import_react.default.createElement("div", { className: "body" }, dataSource == null ? void 0 : dataSource.map((item, index) => { + if (size === "large" && index > 0) + return; + return /* @__PURE__ */ import_react.default.createElement( + import_biz.VideoPlayerCard, + { + key: item.windowKey, + selectedWindowKey, + size, + ...item, + handleWindowClick, + handleCloseButtonClick + } + ); + }))); +}; +var WindowToggle_default = WindowToggle; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + WindowToggle +}); diff --git a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.d.ts b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.d.ts new file mode 100644 index 0000000..3b57a45 --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.d.ts @@ -0,0 +1,2 @@ +import WindowToggle from './WindowToggle'; +export default WindowToggle; diff --git a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.js b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.js new file mode 100644 index 0000000..9f8c4b6 --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/RealTimeMonitor/components/WindowToggle/index.tsx +var WindowToggle_exports = {}; +__export(WindowToggle_exports, { + default: () => WindowToggle_default +}); +module.exports = __toCommonJS(WindowToggle_exports); +var import_WindowToggle = __toESM(require("./WindowToggle")); +var WindowToggle_default = import_WindowToggle.default; diff --git a/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.less b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.less new file mode 100644 index 0000000..61c77bd --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/components/WindowToggle/index.less @@ -0,0 +1,45 @@ +.zhst-biz-window-toggle { + display: flex; + flex-direction: column; + flex: 1; + + .header { + width: 100%; + height: 48px; + background-color: #EFF2F4; + padding: 10px 20px; + box-sizing: border-box; + + .ant-segmented { + padding: 0; + + .ant-segmented-group { + border-radius: 4px; + overflow: hidden; + + .ant-segmented-item { + border-radius: 0; + + .ant-segmented-item-label { + padding: 0; + } + } + } + } + } + + .body { + flex: 1; + width: 100%; + background-color: #E5EAEC; + padding: 10px; + box-sizing: border-box; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + + >div { + margin: 10px; + } + } +} \ No newline at end of file diff --git a/packages/biz/lib/RealTimeMonitor/index.d.ts b/packages/biz/lib/RealTimeMonitor/index.d.ts new file mode 100644 index 0000000..9013d29 --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/index.d.ts @@ -0,0 +1,2 @@ +import RealTimeMonitor from './RealTimeMonitor'; +export default RealTimeMonitor; diff --git a/packages/biz/lib/RealTimeMonitor/index.js b/packages/biz/lib/RealTimeMonitor/index.js new file mode 100644 index 0000000..041c33e --- /dev/null +++ b/packages/biz/lib/RealTimeMonitor/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/RealTimeMonitor/index.tsx +var RealTimeMonitor_exports = {}; +__export(RealTimeMonitor_exports, { + default: () => RealTimeMonitor_default +}); +module.exports = __toCommonJS(RealTimeMonitor_exports); +var import_RealTimeMonitor = __toESM(require("./RealTimeMonitor")); +var RealTimeMonitor_default = import_RealTimeMonitor.default; diff --git a/packages/biz/lib/VideoPlayerCard/VideoPlayerCard.d.ts b/packages/biz/lib/VideoPlayerCard/VideoPlayerCard.d.ts new file mode 100644 index 0000000..cd1775e --- /dev/null +++ b/packages/biz/lib/VideoPlayerCard/VideoPlayerCard.d.ts @@ -0,0 +1,19 @@ +import { CardProps } from 'antd'; +import React, { ReactNode } from 'react'; +import './index.less'; +export interface VideoPlayerCardProps { + windowKey?: string; + selectedWindowKey?: string; + showType?: 'video' | "image"; + imgSrc?: string; + videoSrc?: string; + cardProps?: CardProps; + errorReasonText?: string; + isWindowLoading?: boolean; + size?: 'large' | 'small'; + title?: string | ReactNode; + handleCloseButtonClick?: (key?: string) => void; + handleWindowClick?: (key?: string) => void; +} +export declare const VideoPlayerCard: React.FC; +export default VideoPlayerCard; diff --git a/packages/biz/lib/VideoPlayerCard/VideoPlayerCard.js b/packages/biz/lib/VideoPlayerCard/VideoPlayerCard.js new file mode 100644 index 0000000..8dae8f4 --- /dev/null +++ b/packages/biz/lib/VideoPlayerCard/VideoPlayerCard.js @@ -0,0 +1,99 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/VideoPlayerCard/VideoPlayerCard.tsx +var VideoPlayerCard_exports = {}; +__export(VideoPlayerCard_exports, { + VideoPlayerCard: () => VideoPlayerCard, + default: () => VideoPlayerCard_default +}); +module.exports = __toCommonJS(VideoPlayerCard_exports); +var import_antd = require("antd"); +var import_lib = require("antd/lib"); +var import_meta = require("@zhst/meta"); +var import_react = __toESM(require("react")); +var import_icons = require("@ant-design/icons"); +var import_index = require("./index.less"); +var VideoPlayerCard = (props) => { + const componentName = `zhst-biz-video-player-card`; + const { showType, imgSrc, videoSrc, cardProps, isWindowLoading, errorReasonText, size, title, handleCloseButtonClick, handleWindowClick, windowKey, selectedWindowKey = "" } = props; + const [cardContent, setCardContent] = (0, import_react.useState)(null); + const { useToken } = import_lib.theme; + const { token } = useToken(); + const videoRef = (0, import_react.useRef)(null); + const selectedBorderStyle = { + border: `2px solid ${token.colorPrimary}`, + boxShadow: " 0px 2px 9px 0px rgba(0,0,0,0.16)" + }; + const cardStyle = { + ...size === "large" ? { height: 931 } : { height: 456, cursor: "pointer" }, + ...size === "small" && selectedWindowKey === windowKey ? selectedBorderStyle : {} + }; + const videoPlayerCardStyle = size === "small" ? { width: "calc(50% - 20px)" } : { flex: 1 }; + (0, import_react.useEffect)(() => { + var _a; + if (!isWindowLoading && (videoSrc || imgSrc)) { + let contentElement = null; + if (videoSrc) { + contentElement = /* @__PURE__ */ import_react.default.createElement(import_meta.VideoPlayer, { ref: videoRef, url: videoSrc }); + (_a = videoRef.current) == null ? void 0 : _a.setShowCrop(true); + } else if (imgSrc) { + contentElement = /* @__PURE__ */ import_react.default.createElement( + "img", + { + alt: "首帧图", + src: imgSrc, + style: { width: "100%", height: "100%", display: "block" } + } + ); + } + setCardContent(contentElement); + } else { + setCardContent(null); + } + }, [showType, imgSrc, videoSrc, isWindowLoading]); + return /* @__PURE__ */ import_react.default.createElement("div", { className: componentName, onClick: () => { + handleWindowClick == null ? void 0 : handleWindowClick(windowKey); + }, style: videoPlayerCardStyle }, /* @__PURE__ */ import_react.default.createElement( + import_antd.Card, + { + title: /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { style: { width: "100%", justifyContent: "space-between" } }, /* @__PURE__ */ import_react.default.createElement("div", null, title), /* @__PURE__ */ import_react.default.createElement("div", { className: "card-close-button" }, /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "text", onClick: () => { + handleCloseButtonClick == null ? void 0 : handleCloseButtonClick(windowKey); + } }, /* @__PURE__ */ import_react.default.createElement(import_icons.CloseOutlined, null)))), + style: { display: "flex", flexDirection: "column", borderRadius: 4, overflow: "hidden", ...cardStyle }, + bodyStyle: { flex: 1 }, + ...cardProps + }, + cardContent ? /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, cardContent) : /* @__PURE__ */ import_react.default.createElement("div", { style: { backgroundColor: "#000", height: "100%", display: "flex", padding: "20px", boxSizing: "border-box" } }, isWindowLoading ? /* @__PURE__ */ import_react.default.createElement("div", { style: { flex: 1, display: "flex", justifyContent: "center", alignItems: "center" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Spin, { indicator: /* @__PURE__ */ import_react.default.createElement(import_icons.LoadingOutlined, { style: { fontSize: 24 } }) })) : !!errorReasonText && /* @__PURE__ */ import_react.default.createElement("span", { style: { color: token.colorError } }, errorReasonText)) + )); +}; +var VideoPlayerCard_default = VideoPlayerCard; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + VideoPlayerCard +}); diff --git a/packages/biz/lib/VideoPlayerCard/index.d.ts b/packages/biz/lib/VideoPlayerCard/index.d.ts new file mode 100644 index 0000000..41afa58 --- /dev/null +++ b/packages/biz/lib/VideoPlayerCard/index.d.ts @@ -0,0 +1,3 @@ +import VideoPlayerCard from './VideoPlayerCard'; +export type { VideoPlayerCardProps } from './VideoPlayerCard'; +export default VideoPlayerCard; diff --git a/packages/biz/lib/VideoPlayerCard/index.js b/packages/biz/lib/VideoPlayerCard/index.js new file mode 100644 index 0000000..7810d71 --- /dev/null +++ b/packages/biz/lib/VideoPlayerCard/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/VideoPlayerCard/index.tsx +var VideoPlayerCard_exports = {}; +__export(VideoPlayerCard_exports, { + default: () => VideoPlayerCard_default +}); +module.exports = __toCommonJS(VideoPlayerCard_exports); +var import_VideoPlayerCard = __toESM(require("./VideoPlayerCard")); +var VideoPlayerCard_default = import_VideoPlayerCard.default; diff --git a/packages/biz/lib/VideoPlayerCard/index.less b/packages/biz/lib/VideoPlayerCard/index.less new file mode 100644 index 0000000..0f87e3e --- /dev/null +++ b/packages/biz/lib/VideoPlayerCard/index.less @@ -0,0 +1,30 @@ +.zhst-biz-video-player-card { + .ant-card-head { + padding: 0 20px; + } + + .ant-card-body { + padding: 0; + overflow: hidden; + border-radius: 0; + + .zhst-image__video-view { + height: 100%; + } + } + + .card-close-button { + .ant-btn { + padding: 0 3px; + height: 22px; + color: #00000073; + } + + .ant-btn:hover { + padding: 0 3px; + height: 22px; + color: #000000e0; + } + } + +} \ No newline at end of file diff --git a/packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.d.ts b/packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.d.ts new file mode 100644 index 0000000..d82a52e --- /dev/null +++ b/packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.d.ts @@ -0,0 +1,25 @@ +import React from 'react'; +import { ModalProps, SpaceProps } from 'antd'; +import './index.less'; +type ViewLargerImageModalParams = { + imgSrc?: string; + warningData?: { + label?: string; + value?: string; + }[]; +}; +export interface ViewLargerImageModalRef { + show: (params?: ViewLargerImageModalParams) => void; + handleCancel: () => void; +} +export interface ViewLargerImageModalProps { + imgStyle?: React.CSSProperties; + downloadImg?: (imgSrc?: string) => void; + title?: string; + downloadText?: string; + modalProps?: ModalProps; + spaceProps?: SpaceProps; +} +export declare const ViewLargerImageModal: React.ForwardRefExoticComponent>; +export default ViewLargerImageModal; +export declare const useViewLargerImageModal: () => React.RefObject; diff --git a/packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.js b/packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.js new file mode 100644 index 0000000..9d5ef6f --- /dev/null +++ b/packages/biz/lib/ViewLargerImageModal/ViewLargerImageModal.js @@ -0,0 +1,87 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/ViewLargerImageModal/ViewLargerImageModal.tsx +var ViewLargerImageModal_exports = {}; +__export(ViewLargerImageModal_exports, { + ViewLargerImageModal: () => ViewLargerImageModal, + default: () => ViewLargerImageModal_default, + useViewLargerImageModal: () => useViewLargerImageModal +}); +module.exports = __toCommonJS(ViewLargerImageModal_exports); +var import_react = __toESM(require("react")); +var import_antd = require("antd"); +var import_theme = __toESM(require("antd/lib/theme")); +var import_icons = require("@ant-design/icons"); +var import_index = require("./index.less"); +var ViewLargerImageModal = (0, import_react.forwardRef)( + (props, ref) => { + const { modalProps, downloadImg, imgStyle, title = "预警大图", downloadText = "下载大图", spaceProps } = props; + const { useToken } = import_theme.default; + const { token } = useToken(); + const [open, setOpen] = (0, import_react.useState)(false); + const [imgSrc, setImgSrc] = (0, import_react.useState)(); + const [warningData, setWarningData] = (0, import_react.useState)(); + const handleCancel = () => { + setOpen(false); + }; + (0, import_react.useImperativeHandle)(ref, () => { + return { + show: (_params) => { + setOpen(true); + setImgSrc(_params == null ? void 0 : _params.imgSrc); + setWarningData(_params == null ? void 0 : _params.warningData); + }, + handleCancel + }; + }); + return /* @__PURE__ */ import_react.default.createElement( + import_antd.Modal, + { + className: "zhst-biz-view-warning-larger-image-modal", + open, + destroyOnClose: true, + title, + width: "1029px", + footer: null, + onCancel: handleCancel, + ...modalProps + }, + /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { size: 0, styles: { item: { backgroundColor: "#F6F9FAFF" } }, ...spaceProps }, /* @__PURE__ */ import_react.default.createElement("img", { alt: title, src: imgSrc, style: { width: 789, height: 444, display: "block", ...imgStyle } }), /* @__PURE__ */ import_react.default.createElement("div", { className: "right-context" }, warningData == null ? void 0 : warningData.map(({ label, value }) => /* @__PURE__ */ import_react.default.createElement("div", { key: label }, /* @__PURE__ */ import_react.default.createElement("span", { className: "context-key" }, `${label}: `), value)), imgSrc && downloadImg && /* @__PURE__ */ import_react.default.createElement("div", { className: "img-download", style: { color: token.colorPrimary }, onClick: () => downloadImg == null ? void 0 : downloadImg(imgSrc) }, /* @__PURE__ */ import_react.default.createElement(import_icons.DownloadOutlined, null), /* @__PURE__ */ import_react.default.createElement("span", { style: { paddingLeft: 3 } }, downloadText)))) + ); + } +); +var ViewLargerImageModal_default = ViewLargerImageModal; +var useViewLargerImageModal = () => { + return (0, import_react.useRef)(null); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ViewLargerImageModal, + useViewLargerImageModal +}); diff --git a/packages/biz/lib/ViewLargerImageModal/index.d.ts b/packages/biz/lib/ViewLargerImageModal/index.d.ts new file mode 100644 index 0000000..417e8be --- /dev/null +++ b/packages/biz/lib/ViewLargerImageModal/index.d.ts @@ -0,0 +1,4 @@ +import ViewLargerImageModal, { useViewLargerImageModal } from './ViewLargerImageModal'; +export type { ViewLargerImageModalRef, ViewLargerImageModalProps } from './ViewLargerImageModal'; +export default ViewLargerImageModal; +export { useViewLargerImageModal }; diff --git a/packages/biz/lib/ViewLargerImageModal/index.js b/packages/biz/lib/ViewLargerImageModal/index.js new file mode 100644 index 0000000..936db94 --- /dev/null +++ b/packages/biz/lib/ViewLargerImageModal/index.js @@ -0,0 +1,41 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/ViewLargerImageModal/index.tsx +var ViewLargerImageModal_exports = {}; +__export(ViewLargerImageModal_exports, { + default: () => ViewLargerImageModal_default, + useViewLargerImageModal: () => import_ViewLargerImageModal.useViewLargerImageModal +}); +module.exports = __toCommonJS(ViewLargerImageModal_exports); +var import_ViewLargerImageModal = __toESM(require("./ViewLargerImageModal")); +var ViewLargerImageModal_default = import_ViewLargerImageModal.default; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + useViewLargerImageModal +}); diff --git a/packages/biz/lib/ViewLargerImageModal/index.less b/packages/biz/lib/ViewLargerImageModal/index.less new file mode 100644 index 0000000..32363d0 --- /dev/null +++ b/packages/biz/lib/ViewLargerImageModal/index.less @@ -0,0 +1,62 @@ +.zhst-biz-view-warning-larger-image-modal { + font-family: MicrosoftYaHei; + + .ant-modal-content { + padding: 0; + height: 492px; + border-radius: 6px; + overflow: hidden; + + .ant-modal-close { + top: 14px; + right: 16px; + } + + .ant-modal-header { + height: 48px; + line-height: 48px; + margin-bottom: 0; + + .ant-modal-title { + height: 100%; + line-height: 48px; + font-weight: bold; + padding-left: 20px; + } + } + + .ant-modal-body { + height: 444px; + + >div { + width: 100%; + height: 100%; + align-items: flex-start; + + >div:nth-child(2) { + position: relative; + flex: 1; + box-sizing: border-box; + height: 100%; + padding: 30px 16px; + + .right-context>div { + margin-bottom: 20px; + } + + .right-context .context-key { + font-weight: bold; + } + + .img-download { + position: absolute; + bottom: 0; + cursor: pointer; + } + + } + + } + } + } +} \ No newline at end of file diff --git a/packages/biz/lib/WarningRecordCard/WarningRecordCard.d.ts b/packages/biz/lib/WarningRecordCard/WarningRecordCard.d.ts new file mode 100644 index 0000000..966998b --- /dev/null +++ b/packages/biz/lib/WarningRecordCard/WarningRecordCard.d.ts @@ -0,0 +1,30 @@ +import { CardProps } from 'antd'; +import React from 'react'; +import './index.less'; +export interface IRecord { + imgSrc?: string; + id?: string; + /** + * 预警类型 + */ + warningType?: string; + warningInfo?: string[]; + boxId: string; + position: string; + cabietId?: string; + cabietText?: string; + warningTime?: string; + warningTimestamp?: string | number; + warningTimeFormat?: string; +} +export interface WarningRecordCardProps { + record?: IRecord; + onRecordClick?: (record?: IRecord) => void; + style?: React.CSSProperties; + cardProps?: CardProps; + selectedRecordId?: string; + cardStyle?: React.CSSProperties; + imgStyle?: React.CSSProperties; +} +export declare const WarningRecordCard: React.FC; +export default WarningRecordCard; diff --git a/packages/biz/lib/WarningRecordCard/WarningRecordCard.js b/packages/biz/lib/WarningRecordCard/WarningRecordCard.js new file mode 100644 index 0000000..b5de8e4 --- /dev/null +++ b/packages/biz/lib/WarningRecordCard/WarningRecordCard.js @@ -0,0 +1,74 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/WarningRecordCard/WarningRecordCard.tsx +var WarningRecordCard_exports = {}; +__export(WarningRecordCard_exports, { + WarningRecordCard: () => WarningRecordCard, + default: () => WarningRecordCard_default +}); +module.exports = __toCommonJS(WarningRecordCard_exports); +var import_antd = require("antd"); +var import_lib = require("antd/lib"); +var import_react = __toESM(require("react")); +var import_dayjs = __toESM(require("dayjs")); +var import_index = require("./index.less"); +var WarningRecordCard = (props) => { + const componentName = `zhst-biz-warning-record-card`; + const { record, onRecordClick, style, cardProps, selectedRecordId, cardStyle, imgStyle } = props; + const { imgSrc, id, warningType, warningInfo = [], cabietText, warningTime, warningTimestamp, warningTimeFormat = "YYYY-MM-DD HH:mm:ss" } = record || {}; + const formattedDate = warningTimestamp ? (0, import_dayjs.default)(warningTimestamp).format(warningTimeFormat) : ""; + const warningTimeShow = warningTime ? warningTime : formattedDate; + const { useToken } = import_lib.theme; + const { token } = useToken(); + const selectedBorderStyle = { + border: `2px solid ${token.colorPrimary}`, + boxShadow: " 0px 2px 9px 0px rgba(0,0,0,0.16)" + }; + const selectedCardStyle = { + ...selectedRecordId === (record == null ? void 0 : record.id) ? selectedBorderStyle : {} + }; + const handleClick = () => { + onRecordClick == null ? void 0 : onRecordClick(record); + }; + return /* @__PURE__ */ import_react.default.createElement("div", { className: componentName, key: id, onClick: handleClick, style }, /* @__PURE__ */ import_react.default.createElement( + import_antd.Card, + { + cover: /* @__PURE__ */ import_react.default.createElement("img", { alt: "预警图", src: imgSrc, style: { width: 336, height: 203, borderRadius: 0, ...imgStyle } }), + style: { width: 356, height: 302, padding: 10, borderRadius: 4, ...selectedCardStyle, ...cardStyle }, + ...cardProps + }, + /* @__PURE__ */ import_react.default.createElement("div", { className: "left-context" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "warning-type" }, warningType), /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { size: 0, split: /* @__PURE__ */ import_react.default.createElement(import_antd.Divider, { type: "vertical" }) }, warningInfo == null ? void 0 : warningInfo.map((item, index) => /* @__PURE__ */ import_react.default.createElement("div", { key: index, className: "info-item" }, item))), /* @__PURE__ */ import_react.default.createElement("div", { className: "warning-time" }, warningTimeShow)), + /* @__PURE__ */ import_react.default.createElement("div", { className: "cabietInfo" }, cabietText) + )); +}; +var WarningRecordCard_default = WarningRecordCard; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + WarningRecordCard +}); diff --git a/packages/biz/lib/WarningRecordCard/index.d.ts b/packages/biz/lib/WarningRecordCard/index.d.ts new file mode 100644 index 0000000..8b82d36 --- /dev/null +++ b/packages/biz/lib/WarningRecordCard/index.d.ts @@ -0,0 +1,3 @@ +import WarningRecordCard from './WarningRecordCard'; +export type { IRecord, WarningRecordCardProps } from './WarningRecordCard'; +export default WarningRecordCard; diff --git a/packages/biz/lib/WarningRecordCard/index.js b/packages/biz/lib/WarningRecordCard/index.js new file mode 100644 index 0000000..9d01a95 --- /dev/null +++ b/packages/biz/lib/WarningRecordCard/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/WarningRecordCard/index.tsx +var WarningRecordCard_exports = {}; +__export(WarningRecordCard_exports, { + default: () => WarningRecordCard_default +}); +module.exports = __toCommonJS(WarningRecordCard_exports); +var import_WarningRecordCard = __toESM(require("./WarningRecordCard")); +var WarningRecordCard_default = import_WarningRecordCard.default; diff --git a/packages/biz/lib/WarningRecordCard/index.less b/packages/biz/lib/WarningRecordCard/index.less new file mode 100644 index 0000000..7cfba38 --- /dev/null +++ b/packages/biz/lib/WarningRecordCard/index.less @@ -0,0 +1,27 @@ +.zhst-biz-warning-record-card { + cursor: pointer; + + .ant-card-body { + padding: 0; + font-family: MicrosoftYaHei; + line-height: 19px; + display: flex; + margin-top: 10px; + + .left-context { + flex: 1; + + >div { + margin-top: 6px; + } + + >div:nth-child(1) { + margin-top: 0; + } + } + + .warning-type { + font-weight: bold; + } + } +} \ No newline at end of file diff --git a/packages/biz/lib/boxSelectTree/boxSelectTree.d.ts b/packages/biz/lib/boxSelectTree/boxSelectTree.d.ts new file mode 100644 index 0000000..0690e8f --- /dev/null +++ b/packages/biz/lib/boxSelectTree/boxSelectTree.d.ts @@ -0,0 +1,9 @@ +import { FC } from 'react'; +import { TabsProps } from 'antd'; +import type { BoxPanelProps } from './components/boxPanel'; +export interface BoxSelectTreeProps extends BoxPanelProps { + onTabChange?: (e: any) => void; + tabsProps?: TabsProps; +} +declare const BoxSelectTree: FC; +export default BoxSelectTree; diff --git a/packages/biz/lib/boxSelectTree/boxSelectTree.js b/packages/biz/lib/boxSelectTree/boxSelectTree.js new file mode 100644 index 0000000..79df21b --- /dev/null +++ b/packages/biz/lib/boxSelectTree/boxSelectTree.js @@ -0,0 +1,124 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/boxSelectTree/boxSelectTree.tsx +var boxSelectTree_exports = {}; +__export(boxSelectTree_exports, { + default: () => boxSelectTree_default +}); +module.exports = __toCommonJS(boxSelectTree_exports); +var import_react = __toESM(require("react")); +var import_antd = require("antd"); +var import_boxPanel = __toESM(require("./components/boxPanel")); +var BoxSelectTree = (props) => { + const { + data, + boxDataSource = [], + onTabChange, + onSearch, + onItemCheck, + onItemSelect, + onBoxBatchDelete, + onBoxDelete, + onCreateSubmit, + onClockClick, + onImport, + onCreate, + tabsProps, + searchInputProps, + treeProps, + customImport, + showOptions, + extraBtns + } = props; + const items = [ + { + key: "1", + label: /* @__PURE__ */ import_react.default.createElement("div", { style: { textAlign: "center", width: "160px" } }, "盒子组"), + children: /* @__PURE__ */ import_react.default.createElement( + import_boxPanel.default, + { + searchInputProps, + boxDataSource, + treeProps, + data, + onCreate, + onCreateSubmit, + onBoxBatchDelete, + onBoxDelete, + onSearch, + onItemCheck, + onItemSelect, + showOptions, + customImport, + extraBtns, + onClockClick, + onImport + } + ) + }, + { + key: "2", + label: /* @__PURE__ */ import_react.default.createElement("div", { style: { textAlign: "center", width: "160px" } }, "盒子"), + children: /* @__PURE__ */ import_react.default.createElement( + import_boxPanel.default, + { + boxDataSource, + searchInputProps, + treeProps, + data, + onCreate, + onBoxBatchDelete, + onCreateSubmit, + onBoxDelete, + onSearch, + onItemCheck, + onItemSelect, + showOptions, + customImport, + extraBtns, + onClockClick, + onImport + } + ) + } + ]; + return /* @__PURE__ */ import_react.default.createElement( + import_antd.Tabs, + { + defaultActiveKey: "1", + centered: true, + items, + onChange: onTabChange, + tabBarGutter: 0, + indicator: { size: (origin) => origin, align: "center" }, + ...tabsProps + } + ); +}; +var boxSelectTree_default = BoxSelectTree; diff --git a/packages/biz/lib/boxSelectTree/components/boxPanel/index.js b/packages/biz/lib/boxSelectTree/components/boxPanel/index.js new file mode 100644 index 0000000..6fafeaa --- /dev/null +++ b/packages/biz/lib/boxSelectTree/components/boxPanel/index.js @@ -0,0 +1,179 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/boxSelectTree/components/boxPanel/index.tsx +var boxPanel_exports = {}; +__export(boxPanel_exports, { + default: () => boxPanel_default +}); +module.exports = __toCommonJS(boxPanel_exports); +var import_react = __toESM(require("react")); +var import_antd = require("antd"); +var import_pro_components = require("@ant-design/pro-components"); +var import_icons = require("@ant-design/icons"); +var import_treeTransferModal = __toESM(require("../../../treeTransferModal")); +var import_tree = __toESM(require("../../../tree")); +var BoxPanel = (props) => { + var _a, _b, _c; + const { + searchInputProps, + showOptions = true, + extraBtns, + data = [], + onSearch, + treeProps, + onItemCheck, + onItemSelect, + onCreateSubmit, + onBoxBatchDelete, + onBoxDelete, + onClockClick, + onImport, + onBatch, + onCreate, + boxDataSource, + customImport + } = props; + const [isTreeCheckable, setIsTreeCheckable] = (0, import_react.useState)(false); + const [targetItems, setTargetItems] = (0, import_react.useState)([]); + const [boxChoiceOpen, setBoxChoiceOpen] = (0, import_react.useState)(false); + const [checkedKeys, setCheckedKeys] = (0, import_react.useState)([]); + const createFormRef = (0, import_react.useRef)(); + const handleCheckable = () => { + setIsTreeCheckable((pre) => !pre); + }; + const onTreeCheck = (keys, info) => { + let _targetItems = []; + setCheckedKeys(keys); + info.checkedNodes.forEach((o) => { + o.isLeaf && _targetItems.push(o); + }); + setTargetItems(_targetItems); + }; + const onItemDelete = (key, { keys }) => { + setCheckedKeys((pre) => { + const newKeys = pre.filter((_key) => !keys.includes(_key)); + return newKeys; + }); + setTargetItems((pre) => pre.filter((o) => o.key !== key)); + }; + const onBoxChoiceOk = async (data2) => { + var _a2, _b2, _c2; + (_a2 = createFormRef.current) == null ? void 0 : _a2.setFieldValue("boxList", data2); + (_b2 = createFormRef.current) == null ? void 0 : _b2.setFieldValue("boxName", 123); + console.log((_c2 = createFormRef.current) == null ? void 0 : _c2.getFieldValue("boxList")); + setBoxChoiceOpen(false); + }; + const onBoxChoiceReset = () => { + setCheckedKeys([]); + setTargetItems([]); + }; + return /* @__PURE__ */ import_react.default.createElement("div", { style: { padding: "0 16px" } }, /* @__PURE__ */ import_react.default.createElement( + import_treeTransferModal.default, + { + open: boxChoiceOpen, + onCancel: () => setBoxChoiceOpen(false), + onRadioChange: (e) => console.log("radio", e.target.value), + dataSource: boxDataSource, + targetItems, + checkedKeys, + onReset: onBoxChoiceReset, + onOk: onBoxChoiceOk, + onTreeCheck, + onItemDelete + } + ), /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { size: 12, direction: "vertical", style: { width: "100%" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { size: 4, style: { width: "100%", justifyContent: "space-between" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Input, { size: "middle", onChange: (e) => onSearch == null ? void 0 : onSearch(e), placeholder: "请输入盒子名称", ...searchInputProps }), customImport || /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "text", onClick: () => (onBatch == null ? void 0 : onBatch()) || handleCheckable(), icon: isTreeCheckable ? /* @__PURE__ */ import_react.default.createElement(import_icons.SwitcherOutlined, null) : /* @__PURE__ */ import_react.default.createElement(import_icons.DiffOutlined, null) }), /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "text", onClick: () => onClockClick == null ? void 0 : onClockClick(), icon: /* @__PURE__ */ import_react.default.createElement(import_icons.ClockCircleOutlined, null) }))), showOptions && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { align: "center" }, /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "text", style: { padding: "4px 8px" }, onClick: () => onImport == null ? void 0 : onImport(), icon: /* @__PURE__ */ import_react.default.createElement(import_icons.ImportOutlined, null) }, "导入盒子"), /* @__PURE__ */ import_react.default.createElement(import_antd.Divider, { type: "vertical", style: { margin: "8px 0" } }), onCreate ? /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { onClick: onCreate, type: "text", style: { padding: "4px 8px" }, icon: /* @__PURE__ */ import_react.default.createElement(import_icons.FolderAddOutlined, null) }, "新建组") : /* @__PURE__ */ import_react.default.createElement( + import_pro_components.ModalForm, + { + width: "600px", + open: onCreate ? false : void 0, + formRef: createFormRef, + title: "新建组", + modalProps: { destroyOnClose: true }, + layout: "horizontal", + labelCol: { span: 6 }, + wrapperCol: { span: 18 }, + trigger: /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "text", style: { padding: "4px 8px" }, icon: /* @__PURE__ */ import_react.default.createElement(import_icons.FolderAddOutlined, null) }, "新建组"), + submitter: { + searchConfig: { + submitText: "确定", + resetText: "取消" + } + }, + onFinish: onCreateSubmit + }, + /* @__PURE__ */ import_react.default.createElement( + import_pro_components.ProFormText, + { + rules: [ + { + required: true, + max: 20 + }, + { + pattern: /^[^\s]*$/g, + message: "禁止输入空格" + } + ], + fieldProps: { showCount: true }, + width: "md", + name: "name", + label: "盒子组名称", + placeholder: "请输入盒子名称" + } + ), + /* @__PURE__ */ import_react.default.createElement( + import_pro_components.ProFormText, + { + width: "md", + name: "boxList", + label: "盒子选择", + fieldProps: { + readOnly: true, + value: `已选择${((_b = (_a = createFormRef.current) == null ? void 0 : _a.getFieldValue("boxList")) == null ? void 0 : _b.length) || 0}个盒子`, + suffix: /* @__PURE__ */ import_react.default.createElement(import_antd.Space, null, /* @__PURE__ */ import_react.default.createElement("a", { onClick: () => { + var _a2; + (_a2 = createFormRef.current) == null ? void 0 : _a2.setFieldValue("boxList", null); + onBoxChoiceReset(); + } }, "恢复默认"), /* @__PURE__ */ import_react.default.createElement("a", { onClick: () => setBoxChoiceOpen(true) }, "范围选择")) + } + } + ) + ), /* @__PURE__ */ import_react.default.createElement(import_antd.Divider, { type: "vertical", style: { margin: "8px 0" } }), /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { danger: true, type: "text", style: { padding: "4px 8px" }, icon: /* @__PURE__ */ import_react.default.createElement(import_icons.CloseCircleOutlined, null), disabled: ((_c = treeProps == null ? void 0 : treeProps.checkedKeys) == null ? void 0 : _c.length) <= 0, onClick: onBoxBatchDelete }, "删除")), /* @__PURE__ */ import_react.default.createElement(import_antd.Divider, { style: { margin: 0 } })), extraBtns, /* @__PURE__ */ import_react.default.createElement( + import_tree.default, + { + treeCheckable: isTreeCheckable, + data, + onItemSelect, + onItemCheck, + onItemDelete: onBoxDelete, + ...treeProps + } + ))); +}; +var boxPanel_default = BoxPanel; diff --git a/packages/biz/lib/boxSelectTree/index.d.ts b/packages/biz/lib/boxSelectTree/index.d.ts new file mode 100644 index 0000000..2ff0f1e --- /dev/null +++ b/packages/biz/lib/boxSelectTree/index.d.ts @@ -0,0 +1,3 @@ +import BoxSelectTree from './boxSelectTree'; +export type { BoxSelectTreeProps } from './boxSelectTree'; +export default BoxSelectTree; diff --git a/packages/biz/lib/boxSelectTree/index.js b/packages/biz/lib/boxSelectTree/index.js new file mode 100644 index 0000000..74ef62f --- /dev/null +++ b/packages/biz/lib/boxSelectTree/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/boxSelectTree/index.tsx +var boxSelectTree_exports = {}; +__export(boxSelectTree_exports, { + default: () => boxSelectTree_default +}); +module.exports = __toCommonJS(boxSelectTree_exports); +var import_boxSelectTree = __toESM(require("./boxSelectTree")); +var boxSelectTree_default = import_boxSelectTree.default; diff --git a/packages/biz/lib/boxSelectTree/mock.d.ts b/packages/biz/lib/boxSelectTree/mock.d.ts new file mode 100644 index 0000000..84026eb --- /dev/null +++ b/packages/biz/lib/boxSelectTree/mock.d.ts @@ -0,0 +1,2 @@ +import { TreeDataNode } from "antd"; +export declare const treeData: TreeDataNode[]; diff --git a/packages/biz/lib/boxSelectTree/mock.js b/packages/biz/lib/boxSelectTree/mock.js new file mode 100644 index 0000000..5160e1d --- /dev/null +++ b/packages/biz/lib/boxSelectTree/mock.js @@ -0,0 +1,60 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/boxSelectTree/mock.tsx +var mock_exports = {}; +__export(mock_exports, { + treeData: () => treeData +}); +module.exports = __toCommonJS(mock_exports); +var treeData = [ + { + title: "全部盒子", + key: "0-0", + children: [ + { + title: "盒子组1", + key: "0-0-0", + children: [ + { + title: "摄像头1", + key: "0-0-0-0" + }, + { + title: "摄像头2", + key: "0-0-0-1" + } + ] + }, + { + title: "盒子组2", + key: "0-0-1", + children: [ + { + title: "摄像头4", + key: "0-0-1-0" + } + ] + } + ] + } +]; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + treeData +}); diff --git a/packages/biz/lib/tree/boxTree.d.ts b/packages/biz/lib/tree/boxTree.d.ts new file mode 100644 index 0000000..5e34aef --- /dev/null +++ b/packages/biz/lib/tree/boxTree.d.ts @@ -0,0 +1,17 @@ +import { FC } from 'react'; +import { TreeDataNode, TreeProps } from 'antd'; +import './index.less'; +export interface BoxTreeProps extends TreeProps { + data: TreeDataNode[]; + treeCheckable?: boolean; + showItemOption?: boolean; + customOptions?: any; + onItemCheck?: TreeProps['onCheck']; + onItemSelect?: TreeProps['onSelect']; + onItemSetting?: (_data: any) => void; + onItemDelete?: (_data: any) => void; + onItemRename?: (_nodeData: any) => void; + onItemRenameFinish?: (_data: any, _nodeData: any) => Promise; +} +declare const boxTree: FC; +export default boxTree; diff --git a/packages/biz/lib/tree/boxTree.js b/packages/biz/lib/tree/boxTree.js new file mode 100644 index 0000000..835a8f7 --- /dev/null +++ b/packages/biz/lib/tree/boxTree.js @@ -0,0 +1,134 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/tree/boxTree.tsx +var boxTree_exports = {}; +__export(boxTree_exports, { + default: () => boxTree_default +}); +module.exports = __toCommonJS(boxTree_exports); +var import_react = __toESM(require("react")); +var import_antd = require("antd"); +var import_theme = __toESM(require("antd/es/theme")); +var import_icons = require("@ant-design/icons"); +var import_pro_components = require("@ant-design/pro-components"); +var import_index = require("./index.less"); +var componentName = "zhst-biz-tree"; +var { useToken } = import_theme.default; +var boxTree = (props) => { + const { + onItemSelect, + onItemCheck, + onItemSetting, + onItemDelete, + data = [], + showItemOption = true, + treeCheckable = false, + onItemRename, + onItemRenameFinish, + customOptions + } = props; + const { token } = useToken(); + const [checkedItem, setCheckedItem] = (0, import_react.useState)(""); + const cameraStatus = /* @__PURE__ */ new Map([ + ["0", "error"], + ["1", "success"], + ["3", "processing"], + ["4", "default"] + ]); + return /* @__PURE__ */ import_react.default.createElement( + import_antd.Tree, + { + checkable: treeCheckable, + blockNode: true, + onSelect: (selectedKeys, info) => { + setCheckedItem(selectedKeys[0]); + onItemSelect == null ? void 0 : onItemSelect(selectedKeys, info); + }, + onCheck: onItemCheck, + treeData: data, + titleRender: (_nodeData) => { + return /* @__PURE__ */ import_react.default.createElement("div", { className: `${componentName}-item-render` }, !_nodeData.children && _nodeData.isCamera && /* @__PURE__ */ import_react.default.createElement(import_antd.Badge, { style: { marginRight: "6px" }, status: cameraStatus.get(_nodeData.status || "4") }), /* @__PURE__ */ import_react.default.createElement( + "span", + { + style: checkedItem === _nodeData.key && _nodeData.isCamera ? { + color: token.colorPrimary + } : {} + }, + _nodeData.title + ), showItemOption && /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { className: `${componentName}-item-render_right`, style: { float: "right" } }, customOptions || /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement( + import_pro_components.ModalForm, + { + title: "重命名", + width: 600, + modalProps: { destroyOnClose: true }, + layout: "horizontal", + labelCol: { span: 6 }, + wrapperCol: { span: 18 }, + trigger: /* @__PURE__ */ import_react.default.createElement(import_icons.EditOutlined, { onClick: (e) => { + e.preventDefault(); + e.stopPropagation(); + onItemRename == null ? void 0 : onItemRename(_nodeData); + } }), + submitter: { + searchConfig: { + submitText: "确定", + resetText: "取消" + } + }, + onFinish: async (value) => onItemRenameFinish == null ? void 0 : onItemRenameFinish(value, _nodeData) + }, + /* @__PURE__ */ import_react.default.createElement( + import_pro_components.ProFormText, + { + rules: [ + { + required: true + } + ], + width: "md", + name: "name", + label: "盒子名称", + placeholder: "请输入盒子名称" + } + ) + ), /* @__PURE__ */ import_react.default.createElement(import_icons.SettingOutlined, { onClick: (e) => { + e.preventDefault(); + e.stopPropagation(); + onItemSetting == null ? void 0 : onItemSetting(_nodeData); + } }), /* @__PURE__ */ import_react.default.createElement(import_icons.CloseOutlined, { onClick: (e) => { + e.preventDefault(); + e.stopPropagation(); + onItemDelete == null ? void 0 : onItemDelete(_nodeData); + } })))); + }, + ...props + } + ); +}; +var boxTree_default = boxTree; diff --git a/packages/biz/lib/tree/index.d.ts b/packages/biz/lib/tree/index.d.ts new file mode 100644 index 0000000..4082eb0 --- /dev/null +++ b/packages/biz/lib/tree/index.d.ts @@ -0,0 +1,13 @@ +import { TreeDataNode } from 'antd'; +import BoxTree from './boxTree'; +export interface TreeData extends TreeDataNode { + children?: TreeDataNode['children'] & { + isCamera?: boolean; + /** + * 0-失败 1-成功 2-进行中 3-未知 + */ + status?: '0' | '1' | '2' | '3'; + }[]; +} +export type { BoxTreeProps } from './boxTree'; +export default BoxTree; diff --git a/packages/biz/lib/tree/index.js b/packages/biz/lib/tree/index.js new file mode 100644 index 0000000..46783d3 --- /dev/null +++ b/packages/biz/lib/tree/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/tree/index.tsx +var tree_exports = {}; +__export(tree_exports, { + default: () => tree_default +}); +module.exports = __toCommonJS(tree_exports); +var import_boxTree = __toESM(require("./boxTree")); +var tree_default = import_boxTree.default; diff --git a/packages/biz/lib/tree/index.less b/packages/biz/lib/tree/index.less new file mode 100644 index 0000000..9da4e2d --- /dev/null +++ b/packages/biz/lib/tree/index.less @@ -0,0 +1,9 @@ +.zhst-biz-tree-item-render { + &_right { + display: none; + } + + &:hover &_right { + display: inline-flex; + } +} diff --git a/packages/biz/lib/treeTransfer/TreeTransfer.d.ts b/packages/biz/lib/treeTransfer/TreeTransfer.d.ts new file mode 100644 index 0000000..b74b4f3 --- /dev/null +++ b/packages/biz/lib/treeTransfer/TreeTransfer.d.ts @@ -0,0 +1,22 @@ +import React from 'react'; +import { InputProps } from 'antd'; +import { TransferProps, TreeDataNode, TreeProps } from 'antd'; +import './index.less'; +export interface TreeTransferProps { + dataSource: TreeDataNode[]; + treeProps?: TreeProps; + searchInputProps?: InputProps; + targetItems: TreeDataNode[]; + checkedKeys: string[]; + onTreeSelect?: TreeProps['onSelect']; + onTreeCheck?: TreeProps['onCheck']; + onItemDelete?: (key: string, info?: { + root: TreeDataNode[]; + keys: string[]; + }) => void; + onChange?: TransferProps['onChange']; + onOk?: (data: any) => void; + onReset?: () => void; +} +declare const TreeTransfer: React.FC; +export default TreeTransfer; diff --git a/packages/biz/lib/treeTransfer/TreeTransfer.js b/packages/biz/lib/treeTransfer/TreeTransfer.js new file mode 100644 index 0000000..5c8aa59 --- /dev/null +++ b/packages/biz/lib/treeTransfer/TreeTransfer.js @@ -0,0 +1,137 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/treeTransfer/TreeTransfer.tsx +var TreeTransfer_exports = {}; +__export(TreeTransfer_exports, { + default: () => TreeTransfer_default +}); +module.exports = __toCommonJS(TreeTransfer_exports); +var import_react = __toESM(require("react")); +var import_antd = require("antd"); +var import_theme = __toESM(require("antd/es/theme")); +var import_index = require("./index.less"); +var import_icons = require("@ant-design/icons"); +var import_treeTransferHelper = require("./treeTransferHelper"); +var componentName = "zhst-biz-treeTransfer"; +var { useToken } = import_theme.default; +var TreeTransfer = ({ + dataSource, + treeProps, + searchInputProps, + targetItems = [], + checkedKeys = [], + onTreeCheck, + onTreeSelect, + onItemDelete, + onOk, + onReset +}) => { + const { token } = useToken(); + const [keyWords, setKeyWords] = (0, import_react.useState)(""); + function findNodesWithKeyword(_keyWords, _treeData) { + function dfs(node) { + return node.filter((item) => item.title.includes(_keyWords)); + } + const data = dfs(_treeData); + return data || []; + } + return /* @__PURE__ */ import_react.default.createElement(import_antd.Flex, { gap: 20, className: componentName, align: "center", justify: "center" }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${componentName}-left` }, /* @__PURE__ */ import_react.default.createElement( + import_antd.Card, + { + className: `${componentName}-left_card`, + title: /* @__PURE__ */ import_react.default.createElement("div", { style: { textAlign: "center" } }, "可选择的范围"), + bodyStyle: { padding: 12 } + }, + /* @__PURE__ */ import_react.default.createElement(import_antd.Input, { prefix: /* @__PURE__ */ import_react.default.createElement(import_icons.SearchOutlined, null), onChange: (e) => setKeyWords(e.target.value), placeholder: "请输入设备名称", ...searchInputProps }), + /* @__PURE__ */ import_react.default.createElement( + import_antd.Tree, + { + style: { marginTop: "6px" }, + height: 420, + blockNode: true, + checkable: true, + checkedKeys, + treeData: findNodesWithKeyword(keyWords, dataSource), + onCheck: (keys, info) => onTreeCheck == null ? void 0 : onTreeCheck(keys, info), + onSelect: (keys, info) => onTreeSelect == null ? void 0 : onTreeSelect(keys, info), + ...treeProps + } + ) + )), /* @__PURE__ */ import_react.default.createElement(import_icons.DoubleRightOutlined, null), /* @__PURE__ */ import_react.default.createElement("div", { className: `${componentName}-right` }, /* @__PURE__ */ import_react.default.createElement( + import_antd.Card, + { + className: `${componentName}-right_card`, + title: /* @__PURE__ */ import_react.default.createElement("div", { style: { textAlign: "center" } }, "已选择的范围"), + bodyStyle: { padding: 0 } + }, + /* @__PURE__ */ import_react.default.createElement( + "div", + { + className: `${componentName}-right_card__items` + }, + targetItems.map((item) => /* @__PURE__ */ import_react.default.createElement( + "div", + { + className: `${componentName}-right_card__items___item`, + key: item.key, + onMouseEnter: (e) => { + e.target.style.backgroundColor = token.colorPrimaryBg; + e.target.style.color = token.colorPrimary; + }, + onMouseLeave: (e) => { + e.target.style.color = token.colorText; + e.target.style.backgroundColor = null; + } + }, + item.title, + /* @__PURE__ */ import_react.default.createElement("div", { style: { float: "right" } }, /* @__PURE__ */ import_react.default.createElement(import_icons.DeleteOutlined, { onClick: () => { + const { root, keys } = (0, import_treeTransferHelper.getAllRootKeyById)(item.key, dataSource); + onItemDelete == null ? void 0 : onItemDelete(item.key, { root, keys }); + } })) + )) + ), + /* @__PURE__ */ import_react.default.createElement( + import_antd.Flex, + { + className: `${componentName}-right_card__btns` + }, + /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { style: { marginRight: 8, width: "50%" }, disabled: targetItems.length <= 0, onClick: onReset }, "重置"), + /* @__PURE__ */ import_react.default.createElement( + import_antd.Button, + { + style: { width: "50%" }, + type: "primary", + onClick: () => onOk == null ? void 0 : onOk(targetItems) + }, + "确定" + ) + ) + ))); +}; +var TreeTransfer_default = TreeTransfer; diff --git a/packages/biz/lib/treeTransfer/index.d.ts b/packages/biz/lib/treeTransfer/index.d.ts new file mode 100644 index 0000000..7ea5c47 --- /dev/null +++ b/packages/biz/lib/treeTransfer/index.d.ts @@ -0,0 +1,4 @@ +import TreeTransfer from "./TreeTransfer"; +export type { TreeTransferProps } from './TreeTransfer'; +export * from './treeTransferHelper'; +export default TreeTransfer; diff --git a/packages/biz/lib/treeTransfer/index.js b/packages/biz/lib/treeTransfer/index.js new file mode 100644 index 0000000..7e50781 --- /dev/null +++ b/packages/biz/lib/treeTransfer/index.js @@ -0,0 +1,42 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/treeTransfer/index.tsx +var treeTransfer_exports = {}; +__export(treeTransfer_exports, { + default: () => treeTransfer_default +}); +module.exports = __toCommonJS(treeTransfer_exports); +var import_TreeTransfer = __toESM(require("./TreeTransfer")); +__reExport(treeTransfer_exports, require("./treeTransferHelper"), module.exports); +var treeTransfer_default = import_TreeTransfer.default; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./treeTransferHelper") +}); diff --git a/packages/biz/lib/treeTransfer/index.less b/packages/biz/lib/treeTransfer/index.less new file mode 100644 index 0000000..9ffe8cd --- /dev/null +++ b/packages/biz/lib/treeTransfer/index.less @@ -0,0 +1,43 @@ +.zhst-biz-treeTransfer { + &-left { + &_card { + width: 500px; + height: 522px; + background-color: #FCFCFC; + } + } + + &-right { + &_card { + width: 300px; + height: 522px; + background-color: #FCFCFC; + + &__items { + padding: 8px 4px; + overflow: scroll; + + &::-webkit-scrollbar { + display: none; + } + + &___item { + margin: 0; + padding: 4px 12px; + cursor: pointer; + } + } + + &__btns { + width: 100%; + padding: 8px; + position: absolute; + bottom: 0; + left: 50%; + transform: translateX(-50%); + box-sizing: border-box; + border-top: 1px solid #f0f0f0; + } + } + } +} diff --git a/packages/biz/lib/treeTransfer/treeTransferHelper.d.ts b/packages/biz/lib/treeTransfer/treeTransferHelper.d.ts new file mode 100644 index 0000000..705684c --- /dev/null +++ b/packages/biz/lib/treeTransfer/treeTransferHelper.d.ts @@ -0,0 +1,12 @@ +export declare const isChecked: (selectedKeys: React.Key[], eventKey: React.Key) => boolean; +/** + * 通过子元素找到父级节点 + * @param objects + * @param element + * @returns + */ +export declare const findParentByChild: (objects: any[], propertyValue: string | number, propertyKey?: string) => any; +export declare const getAllRootKeyById: (val: string | number, list: any[], key?: string) => { + root: any; + keys: any[]; +}; diff --git a/packages/biz/lib/treeTransfer/treeTransferHelper.js b/packages/biz/lib/treeTransfer/treeTransferHelper.js new file mode 100644 index 0000000..1c3c4eb --- /dev/null +++ b/packages/biz/lib/treeTransfer/treeTransferHelper.js @@ -0,0 +1,77 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/treeTransfer/treeTransferHelper.ts +var treeTransferHelper_exports = {}; +__export(treeTransferHelper_exports, { + findParentByChild: () => findParentByChild, + getAllRootKeyById: () => getAllRootKeyById, + isChecked: () => isChecked +}); +module.exports = __toCommonJS(treeTransferHelper_exports); +var isChecked = (selectedKeys, eventKey) => selectedKeys.includes(eventKey); +function isObject(value) { + return value !== null && typeof value === "object" && !Array.isArray(value); +} +var findParentByChild = (objects, propertyValue, propertyKey = "key") => { + for (let i = 0; i < objects.length; i++) { + const obj = objects[i]; + if (obj[propertyKey] === propertyValue) { + return obj; + } else if (typeof obj === "object") { + const found = findParentByChild(Object.values(obj), propertyValue); + if (found) { + return obj; + } + } + } + return null; +}; +var getAllRootKeyById = (val, list, key = "key") => { + let keys = []; + const findParentByChild2 = (propertyValue, objects, propertyKey) => { + for (let i = 0; i < objects.length; i++) { + const obj = objects[i]; + if (obj[propertyKey] === propertyValue) { + console.log("obj", obj); + return obj; + } else if (typeof obj === "object") { + const found = findParentByChild2(propertyValue, Object.values(obj), propertyKey); + if (found) { + if (isObject(found)) { + keys.push(found.key); + } + return obj; + } + } + } + return null; + }; + const data = findParentByChild2(val, list, key); + data.key && keys.push(data.key); + return { + root: data, + keys + }; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + findParentByChild, + getAllRootKeyById, + isChecked +}); diff --git a/packages/biz/lib/treeTransferModal/TreeTransferModal.d.ts b/packages/biz/lib/treeTransferModal/TreeTransferModal.d.ts new file mode 100644 index 0000000..e0a0d0e --- /dev/null +++ b/packages/biz/lib/treeTransferModal/TreeTransferModal.d.ts @@ -0,0 +1,26 @@ +import { FC } from 'react'; +import { ModalProps, RadioGroupProps, SelectProps, TransferProps, TreeDataNode, TreeProps } from 'antd'; +export interface TreeTransferModalProps { + dataSource: TreeDataNode[]; + treeProps?: TreeProps; + targetItems: TreeDataNode[]; + checkedKeys: string[]; + onTreeSelect?: TreeProps['onSelect']; + onTreeCheck?: TreeProps['onCheck']; + onItemDelete?: (key: string, info?: { + root: TreeDataNode[]; + keys: string[]; + }) => void; + onChange?: TransferProps['onChange']; + onOk?: (data: any) => void; + onReset?: () => void; + open?: boolean; + onCancel?: ModalProps['onCancel']; + onRadioChange?: RadioGroupProps['onChange']; + onSelect?: SelectProps['onSelect']; + modalProps?: ModalProps; + radioProps?: RadioGroupProps; + selectProps?: SelectProps; +} +declare const TreeTransferModal: FC; +export default TreeTransferModal; diff --git a/packages/biz/lib/treeTransferModal/TreeTransferModal.js b/packages/biz/lib/treeTransferModal/TreeTransferModal.js new file mode 100644 index 0000000..5c20927 --- /dev/null +++ b/packages/biz/lib/treeTransferModal/TreeTransferModal.js @@ -0,0 +1,114 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/treeTransferModal/TreeTransferModal.tsx +var TreeTransferModal_exports = {}; +__export(TreeTransferModal_exports, { + default: () => TreeTransferModal_default +}); +module.exports = __toCommonJS(TreeTransferModal_exports); +var import_react = __toESM(require("react")); +var import_antd = require("antd"); +var import_treeTransfer = __toESM(require("../treeTransfer")); +var import_constants = require("../utils/constants"); +var TreeTransferModal = (props) => { + const { + open, + dataSource = [], + checkedKeys, + onItemDelete, + onOk, + onCancel, + onReset, + onRadioChange, + onTreeCheck, + onSelect, + targetItems, + modalProps, + radioProps, + selectProps + } = props; + const [type, setType] = (0, import_react.useState)("1"); + return /* @__PURE__ */ import_react.default.createElement( + import_antd.Modal, + { + open, + destroyOnClose: true, + title: "统计点位", + width: "948px", + footer: null, + onCancel, + ...modalProps + }, + /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement( + import_antd.Radio.Group, + { + onChange: (e) => { + setType(e.target.value); + onRadioChange == null ? void 0 : onRadioChange(e); + }, + style: { marginLeft: "24px", padding: "20px 0" }, + value: type, + options: import_constants.BOX_TYPE_LIST, + ...radioProps + } + ), /* @__PURE__ */ import_react.default.createElement( + import_antd.Select, + { + defaultValue: "", + style: { marginLeft: 200, width: 150 }, + options: import_constants.ALL_LIST, + onSelect, + ...selectProps + } + )), type === "box" ? /* @__PURE__ */ import_react.default.createElement( + import_treeTransfer.default, + { + dataSource, + targetItems, + checkedKeys, + onTreeCheck, + onItemDelete, + onOk, + onReset + } + ) : /* @__PURE__ */ import_react.default.createElement( + import_treeTransfer.default, + { + dataSource, + targetItems, + checkedKeys, + onTreeCheck, + onItemDelete, + onOk, + onReset + } + ), /* @__PURE__ */ import_react.default.createElement("p", { style: { textAlign: "right" } }, "已选中", targetItems.length, "个点位")) + ); +}; +var TreeTransferModal_default = TreeTransferModal; diff --git a/packages/biz/lib/treeTransferModal/index.d.ts b/packages/biz/lib/treeTransferModal/index.d.ts new file mode 100644 index 0000000..8e5245a --- /dev/null +++ b/packages/biz/lib/treeTransferModal/index.d.ts @@ -0,0 +1,3 @@ +import TreeTransferModal from './TreeTransferModal'; +export type { TreeTransferModalProps } from './TreeTransferModal'; +export default TreeTransferModal; diff --git a/packages/biz/lib/treeTransferModal/index.js b/packages/biz/lib/treeTransferModal/index.js new file mode 100644 index 0000000..19037a6 --- /dev/null +++ b/packages/biz/lib/treeTransferModal/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/treeTransferModal/index.tsx +var treeTransferModal_exports = {}; +__export(treeTransferModal_exports, { + default: () => treeTransferModal_default +}); +module.exports = __toCommonJS(treeTransferModal_exports); +var import_TreeTransferModal = __toESM(require("./TreeTransferModal")); +var treeTransferModal_default = import_TreeTransferModal.default; diff --git a/packages/biz/package.json b/packages/biz/package.json index 87a6497..3144210 100644 --- a/packages/biz/package.json +++ b/packages/biz/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/biz", - "version": "0.10.1", + "version": "0.11.3", "description": "业务库", "keywords": [ "business", diff --git a/packages/biz/src/BigImageModal/index.md b/packages/biz/src/BigImageModal/index.md index f73b68a..0b24759 100644 --- a/packages/biz/src/BigImageModal/index.md +++ b/packages/biz/src/BigImageModal/index.md @@ -2,6 +2,7 @@ group: 进阶组件 category: Components subtitle: 大图预览组件 +toc: content title: BigImagePreview 大图预览组件 demo: cols: 2 diff --git a/packages/biz/src/RealTimeMonitor/index.md b/packages/biz/src/RealTimeMonitor/index.md index e18579f..6571d69 100644 --- a/packages/biz/src/RealTimeMonitor/index.md +++ b/packages/biz/src/RealTimeMonitor/index.md @@ -1,6 +1,7 @@ --- group: 数据展示 category: Components +toc: content subtitle: 实时监控页面 title: RealTimeMonitor 实时监控页面 --- diff --git a/packages/biz/src/VideoPlayerCard/index.md b/packages/biz/src/VideoPlayerCard/index.md index a888603..44bff14 100644 --- a/packages/biz/src/VideoPlayerCard/index.md +++ b/packages/biz/src/VideoPlayerCard/index.md @@ -2,6 +2,7 @@ group: 数据展示 category: Components subtitle: 视频播放卡片 +toc: content title: VideoPlayerCard 视频播放卡片 --- diff --git a/packages/biz/src/ViewLargerImageModal/index.md b/packages/biz/src/ViewLargerImageModal/index.md index d4ae110..3ee9fe7 100644 --- a/packages/biz/src/ViewLargerImageModal/index.md +++ b/packages/biz/src/ViewLargerImageModal/index.md @@ -2,6 +2,7 @@ group: 数据展示 category: Components subtitle: 查看大图弹窗 +toc: content title: ViewLargerImageModal 查看大图弹窗 --- diff --git a/packages/biz/src/boxSelectTree/components/boxPanel/index.tsx b/packages/biz/src/boxSelectTree/components/boxPanel/index.tsx index 2699227..396e375 100644 --- a/packages/biz/src/boxSelectTree/components/boxPanel/index.tsx +++ b/packages/biz/src/boxSelectTree/components/boxPanel/index.tsx @@ -6,7 +6,6 @@ import type { TreeProps, InputProps } from 'antd'; import type { BoxTreeProps } from '../../../tree'; import TreeTransferModal from '../../../treeTransferModal' import BoxTree from '../../../tree'; -// import './index.less' export interface BoxPanelProps { searchInputProps?: InputProps diff --git a/packages/biz/src/boxSelectTree/index.md b/packages/biz/src/boxSelectTree/index.md index a377225..48c22b1 100644 --- a/packages/biz/src/boxSelectTree/index.md +++ b/packages/biz/src/boxSelectTree/index.md @@ -1,11 +1,11 @@ --- category: Components title: BoxSelectTree 盒子树 +toc: content demo: cols: 2 group: title: 进阶组件 - order: 2 --- 盒子树 diff --git a/packages/biz/src/changelog/index.md b/packages/biz/src/changelog/index.md index d4333e4..c6bd0b1 100644 --- a/packages/biz/src/changelog/index.md +++ b/packages/biz/src/changelog/index.md @@ -1,8 +1,10 @@ --- nav: - title: 元组件 -title: 版本更新日志 -order: 99 + title: 组件库 +title: 业务组件 +toc: content --- + + diff --git a/packages/biz/src/tree/index.md b/packages/biz/src/tree/index.md index b54b366..164a658 100644 --- a/packages/biz/src/tree/index.md +++ b/packages/biz/src/tree/index.md @@ -1,6 +1,7 @@ --- category: Components title: Tree 树 +toc: content demo: cols: 2 group: diff --git a/packages/biz/src/treeTransfer/TreeTransfer.tsx b/packages/biz/src/treeTransfer/TreeTransfer.tsx index 5777f7e..c755380 100644 --- a/packages/biz/src/treeTransfer/TreeTransfer.tsx +++ b/packages/biz/src/treeTransfer/TreeTransfer.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { Button, Card, Flex, Input, Tree } from 'antd'; +import { Button, Card, Flex, Input, InputProps, Tree } from 'antd'; import theme from 'antd/es/theme' import { TransferProps, TreeDataNode, TreeProps } from 'antd'; import './index.less' @@ -11,6 +11,7 @@ const componentName = 'zhst-biz-treeTransfer' export interface TreeTransferProps { dataSource: TreeDataNode[] treeProps?: TreeProps + searchInputProps?: InputProps targetItems: TreeDataNode[]; checkedKeys: string[]; onTreeSelect?: TreeProps['onSelect'] @@ -26,6 +27,7 @@ const { useToken } = theme const TreeTransfer: React.FC = ({ dataSource, treeProps, + searchInputProps, targetItems = [], checkedKeys = [], onTreeCheck, @@ -56,7 +58,7 @@ const TreeTransfer: React.FC = ({ title={
可选择的范围
} bodyStyle={{ padding: 12 }} > - } onChange={e => setKeyWords(e.target.value)} placeholder='请输入设备名称' /> + } onChange={e => setKeyWords(e.target.value)} placeholder='请输入设备名称' {...searchInputProps} /> { onItemDelete={onItemDelete} onOk={onOk} onReset={onReset} + searchInputProps={{ + onChange: e => console.log('123123') + }} /> ) }; diff --git a/packages/biz/src/treeTransfer/index.md b/packages/biz/src/treeTransfer/index.md index 678b494..38f801f 100644 --- a/packages/biz/src/treeTransfer/index.md +++ b/packages/biz/src/treeTransfer/index.md @@ -1,6 +1,7 @@ --- category: Components title: TreeTransfer 树穿梭框 +toc: content group: title: 数据展示 order: 2 diff --git a/packages/biz/src/treeTransferModal/index.md b/packages/biz/src/treeTransferModal/index.md index 34ec4e6..de3a40e 100644 --- a/packages/biz/src/treeTransferModal/index.md +++ b/packages/biz/src/treeTransferModal/index.md @@ -1,8 +1,9 @@ --- category: Components title: TreeTransferModal 树穿梭框弹框 +toc: content group: - title: 数据展示 + title: 进阶组件 order: 2 --- diff --git a/packages/constants/CHANGELOG.md b/packages/constants/CHANGELOG.md index 7ee2ac3..988d737 100644 --- a/packages/constants/CHANGELOG.md +++ b/packages/constants/CHANGELOG.md @@ -1,5 +1,17 @@ # @zhst/biz +## 0.6.2 + +### Patch Changes + +- 初始化物料库 + +## 0.6.1 + +### Patch Changes + +- 初始化物料包 + ## 0.6.0 ### Minor Changes diff --git a/packages/constants/es/base/index.d.ts b/packages/constants/es/base/index.d.ts deleted file mode 100644 index 45a9a99..0000000 --- a/packages/constants/es/base/index.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -export declare const OBJECT_GRNER_THRESHOLD = 0.8; -export declare const OBJECT_AGE_TYPE_THRESHOLD = 0.5; -export declare const MODE_KEY = "test_mode"; -export declare const SEARCH_IMG_COUNT = 10; -export declare const GLOBAL_IS_ITEM_NUMBER_SHOW = false; -export declare const publicPath = "hummingbird"; -export declare const ENTER_CIRCLE = "MONITORTYPE_ENTER_CIRCLE"; -export declare const OUT_CIRCLE = "MONITORTYPE_OUT_CIRCLE"; -export declare const TEMP = "MONITORTYPE_TEMP"; -export declare const GLOBAL_IS_BOX_VMS_SHOW = true; -export declare const BODY_SEARCH_THRESHOID = 0.45; -export declare const RECORD_VERSION = "3.0.0"; -export declare const DeviceTab: { - EMPTY: number; - REAL_CAMERA: number; - PREPROCESS_CAMERA: number; - TAG_CAMERA: number; - HISTORY_VIDEO_GROUP: number; - VIRTUAL_CAMERA: number; - REAL_CAMERA_NOFACE: number; - REAL_CAMERA_ONLYFACE: number; - REAL_CAMERA_NOFACE_NOBOX_NODIRECONNECT: number; -}; diff --git a/packages/constants/es/camera/index.d.ts b/packages/constants/es/camera/index.d.ts deleted file mode 100644 index 5151b76..0000000 --- a/packages/constants/es/camera/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const TYPE = ""; diff --git a/packages/constants/es/index.d.ts b/packages/constants/es/index.d.ts deleted file mode 100644 index fb5e936..0000000 --- a/packages/constants/es/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './camera'; -export * from './base'; -export * from './user'; diff --git a/packages/constants/lib/base/index.d.ts b/packages/constants/lib/base/index.d.ts deleted file mode 100644 index 45a9a99..0000000 --- a/packages/constants/lib/base/index.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -export declare const OBJECT_GRNER_THRESHOLD = 0.8; -export declare const OBJECT_AGE_TYPE_THRESHOLD = 0.5; -export declare const MODE_KEY = "test_mode"; -export declare const SEARCH_IMG_COUNT = 10; -export declare const GLOBAL_IS_ITEM_NUMBER_SHOW = false; -export declare const publicPath = "hummingbird"; -export declare const ENTER_CIRCLE = "MONITORTYPE_ENTER_CIRCLE"; -export declare const OUT_CIRCLE = "MONITORTYPE_OUT_CIRCLE"; -export declare const TEMP = "MONITORTYPE_TEMP"; -export declare const GLOBAL_IS_BOX_VMS_SHOW = true; -export declare const BODY_SEARCH_THRESHOID = 0.45; -export declare const RECORD_VERSION = "3.0.0"; -export declare const DeviceTab: { - EMPTY: number; - REAL_CAMERA: number; - PREPROCESS_CAMERA: number; - TAG_CAMERA: number; - HISTORY_VIDEO_GROUP: number; - VIRTUAL_CAMERA: number; - REAL_CAMERA_NOFACE: number; - REAL_CAMERA_ONLYFACE: number; - REAL_CAMERA_NOFACE_NOBOX_NODIRECONNECT: number; -}; diff --git a/packages/constants/lib/base/index.js b/packages/constants/lib/base/index.js deleted file mode 100644 index c4bcc93..0000000 --- a/packages/constants/lib/base/index.js +++ /dev/null @@ -1,80 +0,0 @@ -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/base/index.ts -var base_exports = {}; -__export(base_exports, { - BODY_SEARCH_THRESHOID: () => BODY_SEARCH_THRESHOID, - DeviceTab: () => DeviceTab, - ENTER_CIRCLE: () => ENTER_CIRCLE, - GLOBAL_IS_BOX_VMS_SHOW: () => GLOBAL_IS_BOX_VMS_SHOW, - GLOBAL_IS_ITEM_NUMBER_SHOW: () => GLOBAL_IS_ITEM_NUMBER_SHOW, - MODE_KEY: () => MODE_KEY, - OBJECT_AGE_TYPE_THRESHOLD: () => OBJECT_AGE_TYPE_THRESHOLD, - OBJECT_GRNER_THRESHOLD: () => OBJECT_GRNER_THRESHOLD, - OUT_CIRCLE: () => OUT_CIRCLE, - RECORD_VERSION: () => RECORD_VERSION, - SEARCH_IMG_COUNT: () => SEARCH_IMG_COUNT, - TEMP: () => TEMP, - publicPath: () => publicPath -}); -module.exports = __toCommonJS(base_exports); -var OBJECT_GRNER_THRESHOLD = 0.8; -var OBJECT_AGE_TYPE_THRESHOLD = 0.5; -var MODE_KEY = "test_mode"; -var SEARCH_IMG_COUNT = 10; -var GLOBAL_IS_ITEM_NUMBER_SHOW = false; -var publicPath = "hummingbird"; -var ENTER_CIRCLE = "MONITORTYPE_ENTER_CIRCLE"; -var OUT_CIRCLE = "MONITORTYPE_OUT_CIRCLE"; -var TEMP = "MONITORTYPE_TEMP"; -var GLOBAL_IS_BOX_VMS_SHOW = true; -var BODY_SEARCH_THRESHOID = 0.45; -var RECORD_VERSION = "3.0.0"; -var DeviceTab = { - EMPTY: 0, - REAL_CAMERA: 1, - PREPROCESS_CAMERA: 2, - //摄像头列表 - TAG_CAMERA: 3, - //预案列表 - HISTORY_VIDEO_GROUP: 4, - //录像回放 - VIRTUAL_CAMERA: 5, - //离线视频 - REAL_CAMERA_NOFACE: 6, - REAL_CAMERA_ONLYFACE: 7, - REAL_CAMERA_NOFACE_NOBOX_NODIRECONNECT: 8 - // 只有普通摄像头,没有人脸、没有盒子、直连 -}; -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - BODY_SEARCH_THRESHOID, - DeviceTab, - ENTER_CIRCLE, - GLOBAL_IS_BOX_VMS_SHOW, - GLOBAL_IS_ITEM_NUMBER_SHOW, - MODE_KEY, - OBJECT_AGE_TYPE_THRESHOLD, - OBJECT_GRNER_THRESHOLD, - OUT_CIRCLE, - RECORD_VERSION, - SEARCH_IMG_COUNT, - TEMP, - publicPath -}); diff --git a/packages/constants/lib/camera/index.d.ts b/packages/constants/lib/camera/index.d.ts deleted file mode 100644 index 5151b76..0000000 --- a/packages/constants/lib/camera/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const TYPE = ""; diff --git a/packages/constants/lib/index.d.ts b/packages/constants/lib/index.d.ts deleted file mode 100644 index fb5e936..0000000 --- a/packages/constants/lib/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './camera'; -export * from './base'; -export * from './user'; diff --git a/packages/constants/package.json b/packages/constants/package.json index 5563c81..9d7fcd3 100644 --- a/packages/constants/package.json +++ b/packages/constants/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/constants", - "version": "0.6.0", + "version": "0.6.2", "description": "常量库", "keywords": [ "constants", diff --git a/packages/constants/src/changelog/index.md b/packages/constants/src/changelog/index.md index d4333e4..7dcf5e1 100644 --- a/packages/constants/src/changelog/index.md +++ b/packages/constants/src/changelog/index.md @@ -1,8 +1,10 @@ --- nav: - title: 元组件 -title: 版本更新日志 -order: 99 + title: 其它 +title: 静态变量库 +toc: content --- + + diff --git a/packages/constants/src/index.md b/packages/constants/src/index.md deleted file mode 100644 index ddf2e95..0000000 --- a/packages/constants/src/index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -nav: - title: 其它 -order: 1 -title: 快速上手 ---- - - diff --git a/packages/func/CHANGELOG.md b/packages/func/CHANGELOG.md index dc0e051..38b33d5 100644 --- a/packages/func/CHANGELOG.md +++ b/packages/func/CHANGELOG.md @@ -1,5 +1,56 @@ # @zhst/utils +## 0.9.1 + +### Patch Changes + +- Updated dependencies +- Updated dependencies + - @zhst/request@0.9.0 + +## 0.9.0 + +### Minor Changes + +- 优化 slave 跳转方法 + +### Patch Changes + +- @zhst/request@0.8.9 + +## 0.8.3 + +### Patch Changes + +- 初始化物料库 +- Updated dependencies + - @zhst/request@0.8.8 + +## 0.8.2 + +### Patch Changes + +- 初始化物料包 +- Updated dependencies + - @zhst/request@0.8.7 + +## 0.8.1 + +### Patch Changes + +- 修改 getValueByUrl 判断逻辑 + - @zhst/request@0.8.6 + +## 0.8.0 + +### Minor Changes + +- func 包添加 getValueByUrl 方法 + +### Patch Changes + +- @zhst/request@0.8.5 + ## 0.7.5 ### Patch Changes diff --git a/packages/func/es/camera/constants.d.ts b/packages/func/es/camera/constants.d.ts new file mode 100644 index 0000000..0658bd8 --- /dev/null +++ b/packages/func/es/camera/constants.d.ts @@ -0,0 +1,41 @@ +/** + * 设备类型枚举 + */ +export declare const DeviceType: { + VMS: string; + DIR: string; + CAMERA: string; +}; +export declare const LOCAL_KEY = "local"; +export declare const DIRE_CONNECT_KEY = "direconnect"; +export declare const BOX_LIST_KEY = "boxlist"; +export declare enum VmsplatformOpt { + VMSPLATFORMOPT_ID = 0, + VMSPLATFORMOPT_PLATFORMNAME = 1, + VMSPLATFORMOPT_PLUGINNAME = 2, + VMSPLATFORMOPT_IP = 3, + VMSPLATFORMOPT_PORT = 4, + VMSPLATFORMOPT_USERNAME = 5, + VMSPLATFORMOPT_PASSWORD = 6 +} +export declare enum OPT { + OR = 0, + AND = 1, + ORNOT = 2, + ANDNOT = 3 +} +export declare enum DevicemanagerCameraType { + DEVICEMANAGER_CAMERA_TYPE_DEFAULT = 0, + DEVICEMANAGER_CAMERA_TYPE_NORMAL = 1, + DEVICEMANAGER_CAMERA_TYPE_1400 = 97, + DEVICEMANAGER_CAMERA_TYPE_DHGRABBER = 98, + DEVICEMANAGER_CAMERA_TYPE_HKGRABBER = 99, + DEVICEMANAGER_CAMERA_TYPE_LOCAL = 100 +} +export declare const BOX_DIRECONNECT_PLATFORM_FILTER: { + filtervmsplatformList: { + opt: OPT; + vmsplatformOpt: VmsplatformOpt; + value: string; + }[]; +}; diff --git a/packages/func/es/camera/index.d.ts b/packages/func/es/camera/index.d.ts new file mode 100644 index 0000000..c47dcdd --- /dev/null +++ b/packages/func/es/camera/index.d.ts @@ -0,0 +1,40 @@ +import { DevicemanagerCameraType } from './constants'; +export declare const isFaceCamera: (type: DevicemanagerCameraType) => boolean; +/** + * + * @param value 传入的数据 可以是 item(camera/vms/dirs)/ deviceID + * @param isId + */ +export declare function getDeviceType(value: { + [x: string]: any; + id: any; +} | string): any; +/** + * 后端设备id/vmsid/dirid是三张表 合并在一起不保证唯一 前端生成唯一key + * @param id 设备id + * @param type 设备类型 + */ +export declare function deviceIDToDeviceKey(id: any, type: string, vmsId?: any): string; +/** + * 后端设备id/vmsid/dirid是三张表 合并在一起不保证唯一 前端生成唯一key + * @param item camera/vms/dirs + */ +export declare function deviceToDeviceKey(item: { + [x: string]: any; + id: any; +}): string; +/** + * 设备树key 转 后端设备原始id dirid是string/vms&camera 是number 和后端保持一致 + * @param deviceKey 设备树的id + */ +export declare function deviceKeyToDeviceId(deviceKey: { + split: (arg0: string) => [any, any]; +}): any; +export declare const getVmsIdByDeviceId: (key: string) => string; +/** + * 通过设备id或设备key在树里面找摄像头 + * @param ids cameraId + * @param deviceTree 树 + * @param type "id" | "key" + */ +export declare const findCamerasByInDeviceTree: (ids: never[] | undefined, deviceTree: any, type?: string) => any[]; diff --git a/packages/func/es/file/index.d.ts b/packages/func/es/file/index.d.ts new file mode 100644 index 0000000..2f4e705 --- /dev/null +++ b/packages/func/es/file/index.d.ts @@ -0,0 +1,80 @@ +export type Rect = { + x: number; + y: number; + w: number; + h: number; +}; +/** + * + * @param url 需要转为图片的链接 + * @returns 图片的 dom + */ +export declare const urlToImg: (url: string) => Promise; +export declare const base64DecodeImageKey: (base64ImgKey: string) => string; +/** + * 通过url获取图片的base64字符串 + * @param src 图片链接 + * @param outputFormat 图片格式 + * @returns base64 @string + */ +export declare const getBase64ByUrl: (src: string | URL, outputFormat?: string) => Promise; +/** + * 把文件转base64 + * @param file @file 文件 + * @returns @string + */ +export declare const fileToBase64: (file: any) => Promise; +/** + * + * @param image @file 图片文件 + * @param width @number 宽度 + * @param height @number 高度 + * @returns @string base64 + */ +export declare const getBase64Image: (image: any, width?: any, height?: any) => string; +/** + * 通过图片获取base64 + * @param src 图片地址 + * @returns @string + */ +export declare const getBase64ByImage: (src: string) => Promise; +/** + * url转base64 + * @param {String} url - url地址 + */ +export declare const urlToBase64V2: (url: string) => Promise; +/** + * base64转Blob + * @param {String} base64 - base64 + */ +export declare function base64toBlob(base64: string): Blob | undefined; +/** + * 图片集打包压缩下载 + * 1. url -> base64 -> blob + * 2. 将blob加入jsZip文件夹内,用file-saver保存 + * @param {Array<{url:string,name:string}>} imgDataList + * @param {string} zipName + */ +export declare const downloadPackageImages: (imgDataList: string | any[], zipName: string) => Promise; +export declare function getFileSize(size: number): string; +export declare const dataURLToBlob: (dataurl: string) => Blob; +/** + * key 转 http 链接 + * @param originImgkey 图片的值 ,可以是 base64 也可以是 http链接 + * @param host 图片的域值 + * @returns {string} + */ +export declare const generateImg: (imgKey: string, host?: string) => string; +/** + * 获取指定字符串后面的部分 + * @param imageKey v1_开头的字符串 + * @returns + */ +export declare const getImageKey: (imageKey: string, preFix?: string) => string; +/** + * 获取图片 + * @param img 图片的url链接 + * @param odRect + * @returns file + */ +export declare const getFileByRect: (img: string, odRect: Rect) => Promise; diff --git a/packages/func/es/index.d.ts b/packages/func/es/index.d.ts new file mode 100644 index 0000000..39ccf20 --- /dev/null +++ b/packages/func/es/index.d.ts @@ -0,0 +1,10 @@ +export * from 'lodash-es'; +export * from './file'; +export * from './map'; +export * from './performance'; +export * from './string'; +export * from './number'; +export * from './time'; +export * from './utils'; +export * from './camera'; +export * from './math'; diff --git a/packages/func/es/map/index.d.ts b/packages/func/es/map/index.d.ts new file mode 100644 index 0000000..08fa4a2 --- /dev/null +++ b/packages/func/es/map/index.d.ts @@ -0,0 +1,10 @@ +/** + * 获取经纬信息 + * @param lngLat 位置信息 + * @returns @object { long, lat } + */ +export declare const fixedLngLat: (lngLat?: string) => string; +export declare const transformLngLat: (lngLat?: string) => { + longitude: number; + latitude: number; +} | null; diff --git a/packages/constants/es/user/index.d.ts b/packages/func/es/math/index.d.ts similarity index 100% rename from packages/constants/es/user/index.d.ts rename to packages/func/es/math/index.d.ts diff --git a/packages/func/es/number/index.d.ts b/packages/func/es/number/index.d.ts new file mode 100644 index 0000000..b8e65be --- /dev/null +++ b/packages/func/es/number/index.d.ts @@ -0,0 +1,14 @@ +/** + * 设置数据的精度 + * @param originNumber + * @param accuracy 精度 以原点为中心向左为正,向右为负, + * @param isCeil 是否为向上取整 + * @returns number + */ +export declare const setNumberAccuracy: (originNumber: number, accuracy?: number, isCeil?: boolean) => number; +/** + * 获取数字 + * @param number 需要校验的数值 + * @returns @number + */ +export declare const toRealNumber: (number: any) => any; diff --git a/packages/func/es/performance/index.d.ts b/packages/func/es/performance/index.d.ts new file mode 100644 index 0000000..22dd838 --- /dev/null +++ b/packages/func/es/performance/index.d.ts @@ -0,0 +1 @@ +export declare const speedConvert: (bps: number, contertUnit?: number) => string; diff --git a/packages/func/es/string/demo/getValueByUrl.js b/packages/func/es/string/demo/getValueByUrl.js new file mode 100644 index 0000000..afe0071 --- /dev/null +++ b/packages/func/es/string/demo/getValueByUrl.js @@ -0,0 +1,43 @@ +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +/** + * Created by jiangzhixiong on 2024/03/20 + */ + +import React, { useState } from 'react'; +import { getValueByUrl } from '@zhst/func'; +import { Input, Button, Space } from 'antd'; +var demo = function demo() { + var _useState = useState(null), + _useState2 = _slicedToArray(_useState, 2), + url = _useState2[0], + setUrl = _useState2[1]; + var _useState3 = useState(null), + _useState4 = _slicedToArray(_useState3, 2), + keyword = _useState4[0], + setKeyword = _useState4[1]; + var _useState5 = useState(null), + _useState6 = _slicedToArray(_useState5, 2), + outputVal = _useState6[0], + setOutPutVal = _useState6[1]; + var handleClick = function handleClick() { + var val = getValueByUrl(keyword, url); + setOutPutVal(val); + }; + return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Space, null, "\u94FE\u63A5\uFF1A", /*#__PURE__*/React.createElement(Input, { + onChange: function onChange(e) { + return setUrl(e.target.value); + } + }), "\u83B7\u53D6\u5B57\u6BB5\uFF1A", /*#__PURE__*/React.createElement(Input, { + onChange: function onChange(e) { + return setKeyword(e.target.value); + } + }), /*#__PURE__*/React.createElement(Button, { + onClick: handleClick + }, "\u63D0\u4EA4")), /*#__PURE__*/React.createElement("p", null, "\u8F93\u51FA\uFF1A", outputVal)); +}; +export default demo; \ No newline at end of file diff --git a/packages/func/es/string/index.js b/packages/func/es/string/index.js index e33c9cb..7e842b1 100644 --- a/packages/func/es/string/index.js +++ b/packages/func/es/string/index.js @@ -42,4 +42,33 @@ export var cutStr = function cutstr(str, len) { if (str_length < len) { return str; } +}; + +/** + * 查看字符串是否为可访问链接 + * @param str 待检查链接 + * @returns + */ +export var isUrl = function isUrl(str) { + try { + new URL(str); + return true; + } catch (err) { + return false; + } +}; + +/** + * 通过url获取值 + * @param key 想要获取的值 + * @param url 需要截取的链接 + */ +export var getValueByUrl = function getValueByUrl(key, str) { + var result = null; + if (isUrl(str)) { + result = new URL(str).searchParams.get(key); + } else { + result = new URLSearchParams(str.indexOf('?') > -1 ? str : "?".concat(str)).get(key); + } + return result; }; \ No newline at end of file diff --git a/packages/func/es/time/index.d.ts b/packages/func/es/time/index.d.ts new file mode 100644 index 0000000..28b4d03 --- /dev/null +++ b/packages/func/es/time/index.d.ts @@ -0,0 +1,11 @@ +export declare const formateDuration: (diff: number) => string; +export declare function generateTime(): { + startDateTime: number; + endDateTime: number; +}; +/** + * 格式化时间为 00:00 + * @param seconds 时间,单位秒 + * @returns + */ +export declare function formatDurationTime(seconds: number): string; diff --git a/packages/func/es/utils/index.d.ts b/packages/func/es/utils/index.d.ts new file mode 100644 index 0000000..4a5e574 --- /dev/null +++ b/packages/func/es/utils/index.d.ts @@ -0,0 +1,36 @@ +export { default as isChrome } from './isChrome'; +export declare const matchS3Prefix: (str: string) => boolean; +/** + * 通过文件名获取文件类型 + * @param fileName 文件名称 + * @returns 文件类型 + */ +export declare const getFileSuffix: (fileName: string) => string; +/** + * 通过类型获取文件名 + * @param type 类型 + * @returns + */ +export declare const getImageSuffixByFileType: (type: string) => string; +export declare function getChromeVersion(): number | false; +export declare const nextTick: (func: (value: void) => void | PromiseLike) => void; +export declare const loop: (items: string | any[], callback: (arg0: any) => any) => void; +export declare const addEventListenerWrapper: (target: any, eventType: string, cb: any, option?: any) => { + remove: () => void; +}; +/** + * Get transforms base on the given object. + * @param {Object} obj - The target object. + * @returns {string} A string contains transform values. + */ +export declare function getTransforms({ rotate, scaleX, scaleY, translateX, translateY, }: { + rotate?: number; + scaleX?: number; + scaleY?: number; + translateX?: number; + translateY?: number; +}): { + WebkitTransform: string; + msTransform: string; + transform: string; +}; diff --git a/packages/func/es/utils/isChrome.d.ts b/packages/func/es/utils/isChrome.d.ts new file mode 100644 index 0000000..2d07ceb --- /dev/null +++ b/packages/func/es/utils/isChrome.d.ts @@ -0,0 +1,3 @@ +export declare const isBrowser: boolean; +declare const isChrome: () => boolean; +export default isChrome; diff --git a/packages/func/lib/camera/constants.d.ts b/packages/func/lib/camera/constants.d.ts new file mode 100644 index 0000000..0658bd8 --- /dev/null +++ b/packages/func/lib/camera/constants.d.ts @@ -0,0 +1,41 @@ +/** + * 设备类型枚举 + */ +export declare const DeviceType: { + VMS: string; + DIR: string; + CAMERA: string; +}; +export declare const LOCAL_KEY = "local"; +export declare const DIRE_CONNECT_KEY = "direconnect"; +export declare const BOX_LIST_KEY = "boxlist"; +export declare enum VmsplatformOpt { + VMSPLATFORMOPT_ID = 0, + VMSPLATFORMOPT_PLATFORMNAME = 1, + VMSPLATFORMOPT_PLUGINNAME = 2, + VMSPLATFORMOPT_IP = 3, + VMSPLATFORMOPT_PORT = 4, + VMSPLATFORMOPT_USERNAME = 5, + VMSPLATFORMOPT_PASSWORD = 6 +} +export declare enum OPT { + OR = 0, + AND = 1, + ORNOT = 2, + ANDNOT = 3 +} +export declare enum DevicemanagerCameraType { + DEVICEMANAGER_CAMERA_TYPE_DEFAULT = 0, + DEVICEMANAGER_CAMERA_TYPE_NORMAL = 1, + DEVICEMANAGER_CAMERA_TYPE_1400 = 97, + DEVICEMANAGER_CAMERA_TYPE_DHGRABBER = 98, + DEVICEMANAGER_CAMERA_TYPE_HKGRABBER = 99, + DEVICEMANAGER_CAMERA_TYPE_LOCAL = 100 +} +export declare const BOX_DIRECONNECT_PLATFORM_FILTER: { + filtervmsplatformList: { + opt: OPT; + vmsplatformOpt: VmsplatformOpt; + value: string; + }[]; +}; diff --git a/packages/func/lib/camera/constants.js b/packages/func/lib/camera/constants.js new file mode 100644 index 0000000..efd28fa --- /dev/null +++ b/packages/func/lib/camera/constants.js @@ -0,0 +1,90 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/camera/constants.ts +var constants_exports = {}; +__export(constants_exports, { + BOX_DIRECONNECT_PLATFORM_FILTER: () => BOX_DIRECONNECT_PLATFORM_FILTER, + BOX_LIST_KEY: () => BOX_LIST_KEY, + DIRE_CONNECT_KEY: () => DIRE_CONNECT_KEY, + DeviceType: () => DeviceType, + DevicemanagerCameraType: () => DevicemanagerCameraType, + LOCAL_KEY: () => LOCAL_KEY, + OPT: () => OPT, + VmsplatformOpt: () => VmsplatformOpt +}); +module.exports = __toCommonJS(constants_exports); +var DeviceType = { + VMS: "vms", + DIR: "dir", + CAMERA: "camera" +}; +var LOCAL_KEY = "local"; +var DIRE_CONNECT_KEY = "direconnect"; +var BOX_LIST_KEY = "boxlist"; +var VmsplatformOpt = /* @__PURE__ */ ((VmsplatformOpt2) => { + VmsplatformOpt2[VmsplatformOpt2["VMSPLATFORMOPT_ID"] = 0] = "VMSPLATFORMOPT_ID"; + VmsplatformOpt2[VmsplatformOpt2["VMSPLATFORMOPT_PLATFORMNAME"] = 1] = "VMSPLATFORMOPT_PLATFORMNAME"; + VmsplatformOpt2[VmsplatformOpt2["VMSPLATFORMOPT_PLUGINNAME"] = 2] = "VMSPLATFORMOPT_PLUGINNAME"; + VmsplatformOpt2[VmsplatformOpt2["VMSPLATFORMOPT_IP"] = 3] = "VMSPLATFORMOPT_IP"; + VmsplatformOpt2[VmsplatformOpt2["VMSPLATFORMOPT_PORT"] = 4] = "VMSPLATFORMOPT_PORT"; + VmsplatformOpt2[VmsplatformOpt2["VMSPLATFORMOPT_USERNAME"] = 5] = "VMSPLATFORMOPT_USERNAME"; + VmsplatformOpt2[VmsplatformOpt2["VMSPLATFORMOPT_PASSWORD"] = 6] = "VMSPLATFORMOPT_PASSWORD"; + return VmsplatformOpt2; +})(VmsplatformOpt || {}); +var OPT = /* @__PURE__ */ ((OPT2) => { + OPT2[OPT2["OR"] = 0] = "OR"; + OPT2[OPT2["AND"] = 1] = "AND"; + OPT2[OPT2["ORNOT"] = 2] = "ORNOT"; + OPT2[OPT2["ANDNOT"] = 3] = "ANDNOT"; + return OPT2; +})(OPT || {}); +var DevicemanagerCameraType = /* @__PURE__ */ ((DevicemanagerCameraType2) => { + DevicemanagerCameraType2[DevicemanagerCameraType2["DEVICEMANAGER_CAMERA_TYPE_DEFAULT"] = 0] = "DEVICEMANAGER_CAMERA_TYPE_DEFAULT"; + DevicemanagerCameraType2[DevicemanagerCameraType2["DEVICEMANAGER_CAMERA_TYPE_NORMAL"] = 1] = "DEVICEMANAGER_CAMERA_TYPE_NORMAL"; + DevicemanagerCameraType2[DevicemanagerCameraType2["DEVICEMANAGER_CAMERA_TYPE_1400"] = 97] = "DEVICEMANAGER_CAMERA_TYPE_1400"; + DevicemanagerCameraType2[DevicemanagerCameraType2["DEVICEMANAGER_CAMERA_TYPE_DHGRABBER"] = 98] = "DEVICEMANAGER_CAMERA_TYPE_DHGRABBER"; + DevicemanagerCameraType2[DevicemanagerCameraType2["DEVICEMANAGER_CAMERA_TYPE_HKGRABBER"] = 99] = "DEVICEMANAGER_CAMERA_TYPE_HKGRABBER"; + DevicemanagerCameraType2[DevicemanagerCameraType2["DEVICEMANAGER_CAMERA_TYPE_LOCAL"] = 100] = "DEVICEMANAGER_CAMERA_TYPE_LOCAL"; + return DevicemanagerCameraType2; +})(DevicemanagerCameraType || {}); +var BOX_DIRECONNECT_PLATFORM_FILTER = { + filtervmsplatformList: [ + { + opt: 0 /* OR */, + vmsplatformOpt: 1 /* VMSPLATFORMOPT_PLATFORMNAME */, + value: "direconnect" + }, + { + opt: 0 /* OR */, + vmsplatformOpt: 1 /* VMSPLATFORMOPT_PLATFORMNAME */, + value: "boxlist" + } + ] +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + BOX_DIRECONNECT_PLATFORM_FILTER, + BOX_LIST_KEY, + DIRE_CONNECT_KEY, + DeviceType, + DevicemanagerCameraType, + LOCAL_KEY, + OPT, + VmsplatformOpt +}); diff --git a/packages/func/lib/camera/index.d.ts b/packages/func/lib/camera/index.d.ts new file mode 100644 index 0000000..c47dcdd --- /dev/null +++ b/packages/func/lib/camera/index.d.ts @@ -0,0 +1,40 @@ +import { DevicemanagerCameraType } from './constants'; +export declare const isFaceCamera: (type: DevicemanagerCameraType) => boolean; +/** + * + * @param value 传入的数据 可以是 item(camera/vms/dirs)/ deviceID + * @param isId + */ +export declare function getDeviceType(value: { + [x: string]: any; + id: any; +} | string): any; +/** + * 后端设备id/vmsid/dirid是三张表 合并在一起不保证唯一 前端生成唯一key + * @param id 设备id + * @param type 设备类型 + */ +export declare function deviceIDToDeviceKey(id: any, type: string, vmsId?: any): string; +/** + * 后端设备id/vmsid/dirid是三张表 合并在一起不保证唯一 前端生成唯一key + * @param item camera/vms/dirs + */ +export declare function deviceToDeviceKey(item: { + [x: string]: any; + id: any; +}): string; +/** + * 设备树key 转 后端设备原始id dirid是string/vms&camera 是number 和后端保持一致 + * @param deviceKey 设备树的id + */ +export declare function deviceKeyToDeviceId(deviceKey: { + split: (arg0: string) => [any, any]; +}): any; +export declare const getVmsIdByDeviceId: (key: string) => string; +/** + * 通过设备id或设备key在树里面找摄像头 + * @param ids cameraId + * @param deviceTree 树 + * @param type "id" | "key" + */ +export declare const findCamerasByInDeviceTree: (ids: never[] | undefined, deviceTree: any, type?: string) => any[]; diff --git a/packages/func/lib/camera/index.js b/packages/func/lib/camera/index.js new file mode 100644 index 0000000..b7ae6f1 --- /dev/null +++ b/packages/func/lib/camera/index.js @@ -0,0 +1,143 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/camera/index.ts +var camera_exports = {}; +__export(camera_exports, { + deviceIDToDeviceKey: () => deviceIDToDeviceKey, + deviceKeyToDeviceId: () => deviceKeyToDeviceId, + deviceToDeviceKey: () => deviceToDeviceKey, + findCamerasByInDeviceTree: () => findCamerasByInDeviceTree, + getDeviceType: () => getDeviceType, + getVmsIdByDeviceId: () => getVmsIdByDeviceId, + isFaceCamera: () => isFaceCamera +}); +module.exports = __toCommonJS(camera_exports); +var import_lodash_es = require("lodash-es"); +var import_utils = require("../utils"); +var import_constants = require("./constants"); +var isFaceCamera = (type) => { + return [ + import_constants.DevicemanagerCameraType.DEVICEMANAGER_CAMERA_TYPE_1400, + import_constants.DevicemanagerCameraType.DEVICEMANAGER_CAMERA_TYPE_HKGRABBER, + import_constants.DevicemanagerCameraType.DEVICEMANAGER_CAMERA_TYPE_DHGRABBER + ].includes(type); +}; +function getDeviceType(value) { + let type; + let isDeviceKey = (0, import_lodash_es.isString)(value); + if (isDeviceKey) { + type = value.split("_")[0]; + } else { + if ((0, import_lodash_es.has)(value, "longitude")) { + type = import_constants.DeviceType["CAMERA"]; + } + if ((0, import_lodash_es.has)(value, "ip")) { + type = import_constants.DeviceType["VMS"]; + } + if (!type) { + type = import_constants.DeviceType["DIR"]; + } + } + return type; +} +function deviceIDToDeviceKey(id, type, vmsId) { + if (type == import_constants.DeviceType["DIR"]) { + return `${type}_${id}_${vmsId}`; + } else { + return `${type}_${id}`; + } +} +function deviceToDeviceKey(item) { + let deviceKey = ""; + let type = getDeviceType(item); + if (!type) { + console.error("device type is null!"); + } + switch (type) { + case import_constants.DeviceType["DIR"]: + { + let dirId = item["dirid"] || item["dirId"]; + if (!dirId && dirId !== 0) { + console.error("dirId type is null!"); + } + let vmsId = (0, import_lodash_es.get)(item, "extendInfo.vmsPlatformId"); + if (!vmsId && vmsId !== 0) { + console.error("vmsId type is null!"); + } + deviceKey = `${type}_${dirId}_${vmsId}`; + } + break; + case import_constants.DeviceType["VMS"]: + deviceKey = `${type}_${item["id"]}`; + break; + case import_constants.DeviceType["CAMERA"]: + { + let vmsId = (0, import_lodash_es.get)(item, "extendInfo.vmsPlatformId"); + if (!vmsId && vmsId !== 0) { + console.error("vmsId type is null!"); + } + deviceKey = `${type}_${item.id}`; + } + break; + } + return deviceKey; +} +function deviceKeyToDeviceId(deviceKey) { + let [type, id] = deviceKey.split("_"); + return type === import_constants.DeviceType["DIR"] ? id : Number(id); +} +var getVmsIdByDeviceId = (key) => { + const type = getDeviceType(key); + let vmsId = ""; + switch (type) { + case import_constants.DeviceType["CAMERA"]: + case import_constants.DeviceType["DIR"]: + vmsId = key.split("_")[2]; + break; + case import_constants.DeviceType["VMS"]: + vmsId = key.split("_")[1]; + break; + } + if (!vmsId) { + console.error("vmsid is null!"); + } + return vmsId; +}; +var findCamerasByInDeviceTree = (ids = [], deviceTree, type = "id") => { + let cameraInfoList = []; + let _ids = ids.map((v) => String(v)); + (0, import_utils.loop)(deviceTree, (item) => { + let isCamera = getDeviceType((0, import_lodash_es.get)(item, "key", "")) === import_constants.DeviceType["CAMERA"]; + let isMatch = type === "key" ? _ids.includes((0, import_lodash_es.get)(item, "key")) : _ids.includes(`${(0, import_lodash_es.get)(item, "origin.id")}`); + if (isCamera && isMatch) { + cameraInfoList.push(item); + } + }); + return cameraInfoList; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + deviceIDToDeviceKey, + deviceKeyToDeviceId, + deviceToDeviceKey, + findCamerasByInDeviceTree, + getDeviceType, + getVmsIdByDeviceId, + isFaceCamera +}); diff --git a/packages/func/lib/file/index.d.ts b/packages/func/lib/file/index.d.ts new file mode 100644 index 0000000..2f4e705 --- /dev/null +++ b/packages/func/lib/file/index.d.ts @@ -0,0 +1,80 @@ +export type Rect = { + x: number; + y: number; + w: number; + h: number; +}; +/** + * + * @param url 需要转为图片的链接 + * @returns 图片的 dom + */ +export declare const urlToImg: (url: string) => Promise; +export declare const base64DecodeImageKey: (base64ImgKey: string) => string; +/** + * 通过url获取图片的base64字符串 + * @param src 图片链接 + * @param outputFormat 图片格式 + * @returns base64 @string + */ +export declare const getBase64ByUrl: (src: string | URL, outputFormat?: string) => Promise; +/** + * 把文件转base64 + * @param file @file 文件 + * @returns @string + */ +export declare const fileToBase64: (file: any) => Promise; +/** + * + * @param image @file 图片文件 + * @param width @number 宽度 + * @param height @number 高度 + * @returns @string base64 + */ +export declare const getBase64Image: (image: any, width?: any, height?: any) => string; +/** + * 通过图片获取base64 + * @param src 图片地址 + * @returns @string + */ +export declare const getBase64ByImage: (src: string) => Promise; +/** + * url转base64 + * @param {String} url - url地址 + */ +export declare const urlToBase64V2: (url: string) => Promise; +/** + * base64转Blob + * @param {String} base64 - base64 + */ +export declare function base64toBlob(base64: string): Blob | undefined; +/** + * 图片集打包压缩下载 + * 1. url -> base64 -> blob + * 2. 将blob加入jsZip文件夹内,用file-saver保存 + * @param {Array<{url:string,name:string}>} imgDataList + * @param {string} zipName + */ +export declare const downloadPackageImages: (imgDataList: string | any[], zipName: string) => Promise; +export declare function getFileSize(size: number): string; +export declare const dataURLToBlob: (dataurl: string) => Blob; +/** + * key 转 http 链接 + * @param originImgkey 图片的值 ,可以是 base64 也可以是 http链接 + * @param host 图片的域值 + * @returns {string} + */ +export declare const generateImg: (imgKey: string, host?: string) => string; +/** + * 获取指定字符串后面的部分 + * @param imageKey v1_开头的字符串 + * @returns + */ +export declare const getImageKey: (imageKey: string, preFix?: string) => string; +/** + * 获取图片 + * @param img 图片的url链接 + * @param odRect + * @returns file + */ +export declare const getFileByRect: (img: string, odRect: Rect) => Promise; diff --git a/packages/func/lib/file/index.js b/packages/func/lib/file/index.js new file mode 100644 index 0000000..22c9b0a --- /dev/null +++ b/packages/func/lib/file/index.js @@ -0,0 +1,317 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/file/index.ts +var file_exports = {}; +__export(file_exports, { + base64DecodeImageKey: () => base64DecodeImageKey, + base64toBlob: () => base64toBlob, + dataURLToBlob: () => dataURLToBlob, + downloadPackageImages: () => downloadPackageImages, + fileToBase64: () => fileToBase64, + generateImg: () => generateImg, + getBase64ByImage: () => getBase64ByImage, + getBase64ByUrl: () => getBase64ByUrl, + getBase64Image: () => getBase64Image, + getFileByRect: () => getFileByRect, + getFileSize: () => getFileSize, + getImageKey: () => getImageKey, + urlToBase64V2: () => urlToBase64V2, + urlToImg: () => urlToImg +}); +module.exports = __toCommonJS(file_exports); +var import_base_64 = __toESM(require("base-64")); +var import_jszip = __toESM(require("jszip")); +var import_file_saver = __toESM(require("file-saver")); +var import_utils = require("../utils"); +var import_lodash_es = require("lodash-es"); +var urlToImg = (url) => { + const resImage = new Promise((resolve) => { + const image = new Image(); + image.crossOrigin = ""; + image.src = url; + image.onload = () => { + resolve(image); + }; + }); + return resImage; +}; +var base64DecodeImageKey = (base64ImgKey) => { + let tempStr = base64ImgKey; + if ((0, import_utils.matchS3Prefix)(tempStr)) { + tempStr = tempStr.replace(/^v[0-9]_/, ""); + tempStr = import_base_64.default.decode(tempStr); + } + const [bucket, ...pathArr] = tempStr.split("_"); + return tempStr = `${bucket}/${pathArr.join("_")}`; +}; +var getBase64ByUrl = function(src, outputFormat = "image/png") { + return new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest(); + xhr.open("GET", src, true); + xhr.responseType = "arraybuffer"; + xhr.onload = function(e) { + if (Number(xhr.status) === 200) { + const uInt8Array = new Uint8Array(xhr.response); + let i = uInt8Array.length; + const binaryString = new Array(i); + while (i--) { + binaryString[i] = String.fromCharCode(uInt8Array[i]); + } + const data = binaryString.join(""); + const base64 = window.btoa(data); + const dataUrl = "data:" + (outputFormat || "image/png") + ";base64," + base64; + resolve(dataUrl); + } else { + reject(e); + } + }; + xhr.onerror = (e) => { + reject(e); + }; + xhr.send(); + }); +}; +var fileToBase64 = (file) => { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = function(e) { + resolve(e == null ? void 0 : e.target.result); + }; + reader.onerror = function(e) { + reject(e); + }; + }); +}; +var getBase64Image = (image, width, height) => { + const canvas = document.createElement("canvas"); + canvas.width = width !== void 0 ? width : image.width; + canvas.height = height !== void 0 ? height : image.height; + const ctx = canvas.getContext("2d"); + ctx == null ? void 0 : ctx.drawImage(image, 0, 0, canvas.width, canvas.height); + const ext = image.src.substring(image.src.lastIndexOf(".") + 1).toLowerCase(); + const dataURL = canvas.toDataURL("image/" + ext); + return dataURL; +}; +var getBase64ByImage = function(src) { + return new Promise((resolve, reject) => { + const image = new Image(); + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const imgUrl = src + "?" + timestamp; + image.src = imgUrl; + image.onload = function() { + function getBase64Image2(img) { + const canvas = document.createElement("canvas"); + canvas.width = img.width; + canvas.height = img.height; + const ctx = canvas.getContext("2d"); + ctx == null ? void 0 : ctx.drawImage(img, 0, 0, img.width, img.height); + const ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase(); + const dataURL = canvas.toDataURL("image/" + ext); + return dataURL; + } + const base64 = getBase64Image2(image); + resolve(base64); + }; + image.onerror = (e) => { + reject(e); + }; + }); +}; +var urlToBase64V2 = (url) => { + return new Promise((resolve, reject) => { + let image = new Image(); + image.onload = function() { + var _a; + let canvas = document.createElement("canvas"); + canvas.width = image.naturalWidth; + canvas.height = image.naturalHeight; + (_a = canvas == null ? void 0 : canvas.getContext("2d")) == null ? void 0 : _a.drawImage(image, 0, 0); + let result = canvas.toDataURL("image/png"); + resolve(result); + }; + const imgUrl = url; + image.setAttribute("crossOrigin", "Anonymous"); + image.src = imgUrl; + image.onerror = () => { + reject(new Error("Images fail to load")); + }; + }).catch((error) => { + throw new Error(error); + }); +}; +function base64toBlob(base64) { + if (!base64) + return; + var arr = base64.split(","), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new Blob([u8arr], { type: mime }); +} +var downloadPackageImages = async (imgDataList, zipName) => { + let imgDataDownLoadList = []; + let imgBlobList = []; + let imageSuffix = []; + let zip = new import_jszip.default(); + let img = zip.folder(zipName); + try { + for (let i2 = 0; i2 < imgDataList.length; i2++) { + let src = imgDataList[i2].url; + let suffix = src.substring(src.lastIndexOf(".")); + let base64ByUrl = await urlToBase64V2(imgDataList[i2].url); + if (!base64ByUrl) + continue; + let blob = base64toBlob(base64ByUrl); + imgDataDownLoadList.push(imgDataList[i2]); + imgBlobList.push(blob); + imageSuffix.push(suffix); + } + if (imgBlobList.length === 0) + throw new Error("The number of pictures is zero !"); + if (imgBlobList.length > 0) { + for (var i = 0; i < imgBlobList.length; i++) { + img == null ? void 0 : img.file( + imgDataDownLoadList[i].name + (0, import_lodash_es.get)(imageSuffix, `.${i}`, imageSuffix[0]), + // @ts-ignore + imgBlobList[i], + { + base64: true + } + ); + } + } + zip.generateAsync({ type: "blob" }).then(function(content) { + import_file_saver.default.saveAs(content, zipName + ".zip"); + }); + } catch (error) { + throw new Error(error); + } +}; +function getFileSize(size) { + if (!size) + return ""; + var num = 1024; + if (size < num) + return size + "B"; + if (size < Math.pow(num, 2)) + return (size / num).toFixed(2) + "K"; + if (size < Math.pow(num, 3)) + return (size / Math.pow(num, 2)).toFixed(2) + "M"; + if (size < Math.pow(num, 4)) + return (size / Math.pow(num, 3)).toFixed(2) + "G"; + return (size / Math.pow(num, 4)).toFixed(2) + "T"; +} +var dataURLToBlob = (dataurl) => { + const arr = dataurl.split(","); + const mime = arr[0].match(/:(.*?);/)[1]; + const bstr = atob(arr[1]); + let n = bstr.length; + const u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new Blob([u8arr], { type: mime }); +}; +var generateImg = (_imgKey, host = "http://10.0.0.120") => { + let imgKey = _imgKey; + let imgUrl = ""; + if (!imgKey) + return ""; + if (/(http|https):\/\/([\w.]+\/?)\S*/ig.test(imgKey)) { + return imgKey; + } + try { + if ((0, import_utils.matchS3Prefix)(imgKey)) { + imgKey = base64DecodeImageKey(imgKey); + if (imgKey.endsWith("/")) { + const i = imgKey.substring(0, imgKey.length - 1); + imgKey = i; + } + } + imgUrl = `${host}/file/${imgKey}`; + if (_imgKey.includes("v3")) { + imgUrl = `${host}/minio/${imgKey}`; + } + } catch (error) { + console.error(error); + imgUrl = ""; + } + return imgUrl; +}; +var getImageKey = (imageKey, preFix) => { + const splitIndex = preFix || "v1_"; + if (imageKey.startsWith(splitIndex)) { + return window.atob(imageKey.split(splitIndex)[1]).replace("_", "/"); + } else { + return imageKey; + } +}; +var getFileByRect = async (img, odRect) => { + var _a; + let image; + if ((0, import_lodash_es.isString)(img)) { + const url = generateImg(img); + image = await urlToImg(url); + } else { + image = img; + } + const commonCanvas = document.createElement("canvas"); + commonCanvas.width = odRect.w * image.width; + commonCanvas.height = odRect.h * image.height; + commonCanvas.style.display = "none"; + document.body.appendChild(commonCanvas); + const commonCtx = commonCanvas.getContext("2d"); + commonCtx == null ? void 0 : commonCtx.translate(-odRect.x * image.width, -odRect.y * image.height); + commonCtx == null ? void 0 : commonCtx.drawImage(image, 0, 0); + const base64 = commonCanvas.toDataURL("image/jpeg"); + const blobData = dataURLToBlob(base64); + (_a = commonCanvas.parentNode) == null ? void 0 : _a.removeChild(commonCanvas); + const file = new window.File([blobData], `${(/* @__PURE__ */ new Date()).getTime()}`, { + type: "image/jpeg" + }); + return file; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + base64DecodeImageKey, + base64toBlob, + dataURLToBlob, + downloadPackageImages, + fileToBase64, + generateImg, + getBase64ByImage, + getBase64ByUrl, + getBase64Image, + getFileByRect, + getFileSize, + getImageKey, + urlToBase64V2, + urlToImg +}); diff --git a/packages/func/lib/index.d.ts b/packages/func/lib/index.d.ts new file mode 100644 index 0000000..39ccf20 --- /dev/null +++ b/packages/func/lib/index.d.ts @@ -0,0 +1,10 @@ +export * from 'lodash-es'; +export * from './file'; +export * from './map'; +export * from './performance'; +export * from './string'; +export * from './number'; +export * from './time'; +export * from './utils'; +export * from './camera'; +export * from './math'; diff --git a/packages/func/lib/index.js b/packages/func/lib/index.js new file mode 100644 index 0000000..eb2aaa8 --- /dev/null +++ b/packages/func/lib/index.js @@ -0,0 +1,41 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.tsx +var src_exports = {}; +module.exports = __toCommonJS(src_exports); +__reExport(src_exports, require("lodash-es"), module.exports); +__reExport(src_exports, require("./file"), module.exports); +__reExport(src_exports, require("./map"), module.exports); +__reExport(src_exports, require("./performance"), module.exports); +__reExport(src_exports, require("./string"), module.exports); +__reExport(src_exports, require("./number"), module.exports); +__reExport(src_exports, require("./time"), module.exports); +__reExport(src_exports, require("./utils"), module.exports); +__reExport(src_exports, require("./camera"), module.exports); +__reExport(src_exports, require("./math"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("lodash-es"), + ...require("./file"), + ...require("./map"), + ...require("./performance"), + ...require("./string"), + ...require("./number"), + ...require("./time"), + ...require("./utils"), + ...require("./camera"), + ...require("./math") +}); diff --git a/packages/func/lib/map/index.d.ts b/packages/func/lib/map/index.d.ts new file mode 100644 index 0000000..08fa4a2 --- /dev/null +++ b/packages/func/lib/map/index.d.ts @@ -0,0 +1,10 @@ +/** + * 获取经纬信息 + * @param lngLat 位置信息 + * @returns @object { long, lat } + */ +export declare const fixedLngLat: (lngLat?: string) => string; +export declare const transformLngLat: (lngLat?: string) => { + longitude: number; + latitude: number; +} | null; diff --git a/packages/func/lib/map/index.js b/packages/func/lib/map/index.js new file mode 100644 index 0000000..39c614a --- /dev/null +++ b/packages/func/lib/map/index.js @@ -0,0 +1,54 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/map/index.ts +var map_exports = {}; +__export(map_exports, { + fixedLngLat: () => fixedLngLat, + transformLngLat: () => transformLngLat +}); +module.exports = __toCommonJS(map_exports); +var fixedLngLat = (lngLat) => { + if (!lngLat) { + return ""; + } + const lngLatArr = lngLat.split(","); + const longitude = Number(lngLatArr[0]).toFixed(6); + const latitude = Number(lngLatArr[1]).toFixed(6); + if (lngLatArr.length < 2) { + return ""; + } + return `${longitude},${latitude}`; +}; +var transformLngLat = (lngLat) => { + if (lngLat) { + const lngLatArr = lngLat ? lngLat.split(",") : []; + const longitude = Number(lngLatArr[0]); + const latitude = Number(lngLatArr[1]); + if (lngLatArr.length < 2) { + return null; + } + return { longitude, latitude }; + } + return null; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + fixedLngLat, + transformLngLat +}); diff --git a/packages/constants/lib/user/index.d.ts b/packages/func/lib/math/index.d.ts similarity index 100% rename from packages/constants/lib/user/index.d.ts rename to packages/func/lib/math/index.d.ts diff --git a/packages/constants/lib/user/index.js b/packages/func/lib/math/index.js similarity index 82% rename from packages/constants/lib/user/index.js rename to packages/func/lib/math/index.js index eef01d8..7b14521 100644 --- a/packages/constants/lib/user/index.js +++ b/packages/func/lib/math/index.js @@ -16,10 +16,10 @@ var __copyProps = (to, from, except, desc) => { }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -// src/user/index.ts -var user_exports = {}; -__export(user_exports, { - default: () => user_default +// src/math/index.ts +var math_exports = {}; +__export(math_exports, { + default: () => math_default }); -module.exports = __toCommonJS(user_exports); -var user_default = {}; +module.exports = __toCommonJS(math_exports); +var math_default = {}; diff --git a/packages/func/lib/number/index.d.ts b/packages/func/lib/number/index.d.ts new file mode 100644 index 0000000..b8e65be --- /dev/null +++ b/packages/func/lib/number/index.d.ts @@ -0,0 +1,14 @@ +/** + * 设置数据的精度 + * @param originNumber + * @param accuracy 精度 以原点为中心向左为正,向右为负, + * @param isCeil 是否为向上取整 + * @returns number + */ +export declare const setNumberAccuracy: (originNumber: number, accuracy?: number, isCeil?: boolean) => number; +/** + * 获取数字 + * @param number 需要校验的数值 + * @returns @number + */ +export declare const toRealNumber: (number: any) => any; diff --git a/packages/func/lib/number/index.js b/packages/func/lib/number/index.js new file mode 100644 index 0000000..371a003 --- /dev/null +++ b/packages/func/lib/number/index.js @@ -0,0 +1,53 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/number/index.ts +var number_exports = {}; +__export(number_exports, { + setNumberAccuracy: () => setNumberAccuracy, + toRealNumber: () => toRealNumber +}); +module.exports = __toCommonJS(number_exports); +var setNumberAccuracy = (originNumber, accuracy = 0, isCeil = true) => { + if (originNumber === 0) { + return 0; + } + let returnData = 0; + if (isCeil) { + returnData = Math.ceil(originNumber / Math.pow(10, accuracy)) * Math.pow(10, accuracy); + } else { + returnData = Math.floor(originNumber / Math.pow(10, accuracy)) * Math.pow(10, accuracy); + } + if (accuracy < 0) { + returnData = Number(returnData.toFixed(-accuracy)); + } else { + returnData = Number(returnData.toFixed(0)); + } + return returnData; +}; +var toRealNumber = (number) => { + if (isNaN(number) || number === Infinity) { + return 0; + } else + return number; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + setNumberAccuracy, + toRealNumber +}); diff --git a/packages/func/lib/performance/index.d.ts b/packages/func/lib/performance/index.d.ts new file mode 100644 index 0000000..22dd838 --- /dev/null +++ b/packages/func/lib/performance/index.d.ts @@ -0,0 +1 @@ +export declare const speedConvert: (bps: number, contertUnit?: number) => string; diff --git a/packages/func/lib/performance/index.js b/packages/func/lib/performance/index.js new file mode 100644 index 0000000..1d12f21 --- /dev/null +++ b/packages/func/lib/performance/index.js @@ -0,0 +1,41 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/performance/index.ts +var performance_exports = {}; +__export(performance_exports, { + speedConvert: () => speedConvert +}); +module.exports = __toCommonJS(performance_exports); +var speedConvert = (bps, contertUnit = 8) => { + if (bps === void 0) + return `0KB/s`; + const byte = bps / contertUnit; + if (bps > 1024 * 1024 * 1024) { + return `${(byte / 1024 / 1024 / 1024).toFixed(2)}GB/s`; + } else if (byte > 1024 * 1024) { + return `${(byte / 1024 / 1024).toFixed(2)}MB/s`; + } else if (byte > 1024) { + return `${(byte / 1024).toFixed(2)}KB/s`; + } + return `${byte}KB/s`; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + speedConvert +}); diff --git a/packages/func/lib/string/demo/getValueByUrl.js b/packages/func/lib/string/demo/getValueByUrl.js new file mode 100644 index 0000000..73be0dd --- /dev/null +++ b/packages/func/lib/string/demo/getValueByUrl.js @@ -0,0 +1,48 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/string/demo/getValueByUrl.tsx +var getValueByUrl_exports = {}; +__export(getValueByUrl_exports, { + default: () => getValueByUrl_default +}); +module.exports = __toCommonJS(getValueByUrl_exports); +var import_react = __toESM(require("react")); +var import_func = require("@zhst/func"); +var import_antd = require("antd"); +var demo = () => { + const [url, setUrl] = (0, import_react.useState)(null); + const [keyword, setKeyword] = (0, import_react.useState)(null); + const [outputVal, setOutPutVal] = (0, import_react.useState)(null); + const handleClick = () => { + let val = (0, import_func.getValueByUrl)(keyword, url); + setOutPutVal(val); + }; + return /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(import_antd.Space, null, "链接:", /* @__PURE__ */ import_react.default.createElement(import_antd.Input, { onChange: (e) => setUrl(e.target.value) }), "获取字段:", /* @__PURE__ */ import_react.default.createElement(import_antd.Input, { onChange: (e) => setKeyword(e.target.value) }), /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { onClick: handleClick }, "提交")), /* @__PURE__ */ import_react.default.createElement("p", null, "输出:", outputVal)); +}; +var getValueByUrl_default = demo; diff --git a/packages/func/lib/string/index.js b/packages/func/lib/string/index.js new file mode 100644 index 0000000..0bab8ba --- /dev/null +++ b/packages/func/lib/string/index.js @@ -0,0 +1,83 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/string/index.ts +var string_exports = {}; +__export(string_exports, { + cutStr: () => cutStr, + getStrLength: () => getStrLength, + getValueByUrl: () => getValueByUrl, + isUrl: () => isUrl +}); +module.exports = __toCommonJS(string_exports); +var getStrLength = function(str) { + var realLength = 0, len = str.length, charCode = -1; + for (var i = 0; i < len; i++) { + charCode = str.charCodeAt(i); + if (charCode >= 0 && charCode <= 128) + realLength += 1; + else + realLength += 2; + } + return realLength; +}; +var cutStr = function cutstr(str, len) { + var str_length = 0; + var str_len = 0; + let str_cut = new String(); + str_len = str.length; + for (var i = 0; i < str_len; i++) { + let a = str.charAt(i); + str_length++; + if (escape(a).length > 4) { + str_length++; + } + str_cut = str_cut.concat(a); + if (str_length >= len) { + str_cut = str_cut.concat("..."); + return str_cut; + } + } + if (str_length < len) { + return str; + } +}; +var isUrl = (str) => { + try { + new URL(str); + return true; + } catch (err) { + return false; + } +}; +var getValueByUrl = (key, str) => { + let result = null; + if (isUrl(str)) { + result = new URL(str).searchParams.get(key); + } else { + result = new URLSearchParams(str.indexOf("?") > -1 ? str : `?${str}`).get(key); + } + return result; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + cutStr, + getStrLength, + getValueByUrl, + isUrl +}); diff --git a/packages/func/lib/time/index.d.ts b/packages/func/lib/time/index.d.ts new file mode 100644 index 0000000..28b4d03 --- /dev/null +++ b/packages/func/lib/time/index.d.ts @@ -0,0 +1,11 @@ +export declare const formateDuration: (diff: number) => string; +export declare function generateTime(): { + startDateTime: number; + endDateTime: number; +}; +/** + * 格式化时间为 00:00 + * @param seconds 时间,单位秒 + * @returns + */ +export declare function formatDurationTime(seconds: number): string; diff --git a/packages/func/lib/time/index.js b/packages/func/lib/time/index.js new file mode 100644 index 0000000..cf77388 --- /dev/null +++ b/packages/func/lib/time/index.js @@ -0,0 +1,73 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time/index.ts +var time_exports = {}; +__export(time_exports, { + formatDurationTime: () => formatDurationTime, + formateDuration: () => formateDuration, + generateTime: () => generateTime +}); +module.exports = __toCommonJS(time_exports); +var import_dayjs = __toESM(require("dayjs")); +var formateDuration = (diff) => { + var days = Math.floor(diff / (24 * 3600 * 1e3)); + var leave1 = diff % (24 * 3600 * 1e3); + var hours = Math.floor(leave1 / (3600 * 1e3)); + var leave2 = leave1 % (3600 * 1e3); + var minutes = Math.floor(leave2 / (60 * 1e3)); + var leave3 = leave2 % (60 * 1e3); + var seconds = Math.round(leave3 / 1e3); + var returnStr = seconds + "秒"; + if (minutes > 0) { + returnStr = minutes + "分"; + } + if (hours > 0) { + returnStr = hours + "小时"; + } + if (days > 0) { + returnStr = days + "天"; + } + return returnStr; +}; +function generateTime() { + let endDateTime = (0, import_dayjs.default)().endOf("day").unix(); + let startDateTime = (0, import_dayjs.default)().startOf("day").unix(); + return { startDateTime, endDateTime }; +} +function formatDurationTime(seconds) { + var minutes = Math.floor(seconds / 60) || 0; + var remainingSeconds = Math.floor(seconds % 60); + return (minutes < 10 ? `0${minutes}` : minutes) + ":" + (remainingSeconds < 10 ? "0" : "") + remainingSeconds; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + formatDurationTime, + formateDuration, + generateTime +}); diff --git a/packages/func/lib/utils/index.d.ts b/packages/func/lib/utils/index.d.ts new file mode 100644 index 0000000..4a5e574 --- /dev/null +++ b/packages/func/lib/utils/index.d.ts @@ -0,0 +1,36 @@ +export { default as isChrome } from './isChrome'; +export declare const matchS3Prefix: (str: string) => boolean; +/** + * 通过文件名获取文件类型 + * @param fileName 文件名称 + * @returns 文件类型 + */ +export declare const getFileSuffix: (fileName: string) => string; +/** + * 通过类型获取文件名 + * @param type 类型 + * @returns + */ +export declare const getImageSuffixByFileType: (type: string) => string; +export declare function getChromeVersion(): number | false; +export declare const nextTick: (func: (value: void) => void | PromiseLike) => void; +export declare const loop: (items: string | any[], callback: (arg0: any) => any) => void; +export declare const addEventListenerWrapper: (target: any, eventType: string, cb: any, option?: any) => { + remove: () => void; +}; +/** + * Get transforms base on the given object. + * @param {Object} obj - The target object. + * @returns {string} A string contains transform values. + */ +export declare function getTransforms({ rotate, scaleX, scaleY, translateX, translateY, }: { + rotate?: number; + scaleX?: number; + scaleY?: number; + translateX?: number; + translateY?: number; +}): { + WebkitTransform: string; + msTransform: string; + transform: string; +}; diff --git a/packages/func/lib/utils/index.js b/packages/func/lib/utils/index.js new file mode 100644 index 0000000..78022ad --- /dev/null +++ b/packages/func/lib/utils/index.js @@ -0,0 +1,171 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/utils/index.ts +var utils_exports = {}; +__export(utils_exports, { + addEventListenerWrapper: () => addEventListenerWrapper, + getChromeVersion: () => getChromeVersion, + getFileSuffix: () => getFileSuffix, + getImageSuffixByFileType: () => getImageSuffixByFileType, + getTransforms: () => getTransforms, + isChrome: () => import_isChrome.default, + loop: () => loop, + matchS3Prefix: () => matchS3Prefix, + nextTick: () => nextTick +}); +module.exports = __toCommonJS(utils_exports); +var import_lodash_es = require("lodash-es"); +var import_react_dom = __toESM(require("react-dom")); +var import_isChrome = __toESM(require("./isChrome")); +var matchS3Prefix = (str) => { + return /^v[0-9]_/.test(str); +}; +var getFileSuffix = (fileName) => { + const splitArr = fileName.split("."); + return splitArr.length < 2 ? "" : splitArr[splitArr.length - 1]; +}; +var getImageSuffixByFileType = (type) => { + let imageSuffix = ""; + switch (type) { + case "jpeg": { + imageSuffix = ".jpg"; + break; + } + case "gif": { + imageSuffix = ".gif"; + break; + } + case "png": { + imageSuffix = ".png"; + break; + } + case "vnd.wap.wbmp": { + imageSuffix = ".wbmp"; + break; + } + case "x-up-wpng": { + imageSuffix = ".wpng"; + break; + } + case "nbmp": { + imageSuffix = ".nbmp"; + break; + } + } + return imageSuffix; +}; +function getChromeVersion() { + const arr = navigator.userAgent.split(" "); + let chromeVersion = ""; + for (let i = 0; i < arr.length; i++) { + if (/chrome/i.test(arr[i])) + chromeVersion = arr[i]; + } + if (chromeVersion) { + return Number(chromeVersion.split("/")[1].split(".")[0]); + } else { + return false; + } +} +var nextTick = (func) => { + if (queueMicrotask) { + queueMicrotask(func); + return; + } + Promise.resolve().then(func); +}; +var loop = (items, callback) => { + for (let i = 0; i < items.length; i++) { + const element = items[i]; + let isBreak = callback(element); + if (isBreak) { + return; + } + if (element["children"]) { + loop(element["children"], callback); + } + } +}; +var addEventListenerWrapper = (target, eventType, cb, option) => { + const callback = import_react_dom.default.unstable_batchedUpdates ? function run(e) { + import_react_dom.default.unstable_batchedUpdates(cb, e); + } : cb; + if (target.addEventListener) { + target.addEventListener(eventType, callback, option); + } + return { + remove: () => { + if (target.removeEventListener) { + target.removeEventListener(eventType, callback); + } + } + }; +}; +function getTransforms({ + rotate, + scaleX, + scaleY, + translateX, + translateY +}) { + const values = []; + if ((0, import_lodash_es.isNumber)(translateX) && translateX !== 0) { + values.push(`translateX(${translateX}px)`); + } + if ((0, import_lodash_es.isNumber)(translateY) && translateY !== 0) { + values.push(`translateY(${translateY}px)`); + } + if ((0, import_lodash_es.isNumber)(rotate) && rotate !== 0) { + values.push(`rotate(${rotate}deg)`); + } + if ((0, import_lodash_es.isNumber)(scaleX) && scaleX !== 1) { + values.push(`scaleX(${scaleX})`); + } + if ((0, import_lodash_es.isNumber)(scaleY) && scaleY !== 1) { + values.push(`scaleY(${scaleY})`); + } + const transform = values.length ? values.join(" ") : "none"; + return { + WebkitTransform: transform, + msTransform: transform, + transform + }; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + addEventListenerWrapper, + getChromeVersion, + getFileSuffix, + getImageSuffixByFileType, + getTransforms, + isChrome, + loop, + matchS3Prefix, + nextTick +}); diff --git a/packages/func/lib/utils/isChrome.d.ts b/packages/func/lib/utils/isChrome.d.ts new file mode 100644 index 0000000..2d07ceb --- /dev/null +++ b/packages/func/lib/utils/isChrome.d.ts @@ -0,0 +1,3 @@ +export declare const isBrowser: boolean; +declare const isChrome: () => boolean; +export default isChrome; diff --git a/packages/func/lib/utils/isChrome.js b/packages/func/lib/utils/isChrome.js new file mode 100644 index 0000000..4ad2681 --- /dev/null +++ b/packages/func/lib/utils/isChrome.js @@ -0,0 +1,42 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/utils/isChrome.ts +var isChrome_exports = {}; +__export(isChrome_exports, { + default: () => isChrome_default, + isBrowser: () => isBrowser +}); +module.exports = __toCommonJS(isChrome_exports); +var isBrowser = !!(typeof window !== "undefined" && window.document && window.document.createElement); +var isChrome = () => { + const winNav = isBrowser && window.navigator; + const vendorName = winNav && (winNav == null ? void 0 : winNav.vendor); + const userAgent = winNav && winNav.userAgent; + const isChromium = isBrowser && typeof chrome !== "undefined"; + const isOpera = isBrowser && typeof opr !== "undefined"; + const isIEedge = userAgent && userAgent.indexOf("Edge") > -1; + const isIOSChrome = !!(userAgent && userAgent.match("CriOS")); + const isDesktopChrome = isChromium && vendorName === "Google Inc." && !isOpera && !isIEedge; + return isIOSChrome || isDesktopChrome; +}; +var isChrome_default = isChrome; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + isBrowser +}); diff --git a/packages/func/package.json b/packages/func/package.json index d2ff344..702a401 100644 --- a/packages/func/package.json +++ b/packages/func/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/func", - "version": "0.7.5", + "version": "0.9.1", "description": "函数合集", "keywords": [ "hooks" @@ -38,6 +38,7 @@ }, "dependencies": { "@zhst/request": "workspace:^", + "antd": "^5.15.4", "base-64": "^1.0.0", "dayjs": "^1.11.10", "file-saver": "^2.0.5", @@ -49,7 +50,6 @@ "@types/base-64": "^1.0.2", "@types/file-saver": "^2.0.7", "@types/lodash-es": "^4.17.12", - "@types/uuid": "^9.0.7", - "@types/zhst": "workspace:^" + "@types/uuid": "^9.0.7" } } diff --git a/packages/func/src/camera/index.md b/packages/func/src/camera/index.md index 3c163f4..ac82bfb 100644 --- a/packages/func/src/camera/index.md +++ b/packages/func/src/camera/index.md @@ -1,7 +1,4 @@ --- -nav: - title: func - order: 2 title: 相机相关 --- diff --git a/packages/func/src/changelog/index.md b/packages/func/src/changelog/index.md index d4333e4..aa03361 100644 --- a/packages/func/src/changelog/index.md +++ b/packages/func/src/changelog/index.md @@ -1,7 +1,6 @@ --- -nav: - title: 元组件 title: 版本更新日志 +toc: content order: 99 --- diff --git a/packages/func/src/demo.md b/packages/func/src/demo.md index 2510d1e..34802df 100644 --- a/packages/func/src/demo.md +++ b/packages/func/src/demo.md @@ -1,6 +1,7 @@ --- nav: - title: func + title: 函数库 + order: 4 title: 其它 order: 4 --- diff --git a/packages/func/src/file/index.md b/packages/func/src/file/index.md index 0295156..14fbb4d 100644 --- a/packages/func/src/file/index.md +++ b/packages/func/src/file/index.md @@ -1,7 +1,4 @@ --- -nav: - title: func - order: 2 title: 文件处理 --- diff --git a/packages/func/src/index.md b/packages/func/src/index.md index bf7ec61..67add21 100644 --- a/packages/func/src/index.md +++ b/packages/func/src/index.md @@ -1,6 +1,6 @@ --- nav: - title: utils + title: 函数库 order: 1 title: 快速上手 --- diff --git a/packages/func/src/map/index.md b/packages/func/src/map/index.md index 4946382..6d2a762 100644 --- a/packages/func/src/map/index.md +++ b/packages/func/src/map/index.md @@ -1,7 +1,4 @@ --- -nav: - title: func - order: 3 title: 地图相关 --- diff --git a/packages/func/src/string/demo/getValueByUrl.tsx b/packages/func/src/string/demo/getValueByUrl.tsx new file mode 100644 index 0000000..2bfe135 --- /dev/null +++ b/packages/func/src/string/demo/getValueByUrl.tsx @@ -0,0 +1,31 @@ +/** + * Created by jiangzhixiong on 2024/03/20 + */ + +import React, { useState } from 'react' +import { getValueByUrl } from '@zhst/func' +import { Input, Button, Space } from 'antd' + +const demo = () => { + const [url, setUrl ] = useState(null) + const [keyword, setKeyword ] = useState(null) + const [outputVal, setOutPutVal ] = useState(null) + + const handleClick = () => { + let val = getValueByUrl(keyword, url) + setOutPutVal(val) + } + + return ( +
+ + 链接: setUrl(e.target.value)} /> + 获取字段: setKeyword(e.target.value)} /> + + +

输出:{outputVal}

+
+ ) +} + +export default demo diff --git a/packages/func/src/string/index.md b/packages/func/src/string/index.md new file mode 100644 index 0000000..82cf768 --- /dev/null +++ b/packages/func/src/string/index.md @@ -0,0 +1,23 @@ +--- +title: 字符串相关 +toc: content +--- + +## 代码演示 + +## getValueByUrl + +通过 url 返回想要的参数 + +```js +import { getValueByUrl } from '@zhst/func' + +const value = getValueByUrl('a', 'http://localhost:30058?a=123&token=asdfasdfsdf') +// --> 123 +const value2 = getValueByUrl('a', '?a=123&token=asdfasdfsdf') +// --> 123 +const value3 = getValueByUrl('a', 'a=123&token=asdfasdfsdf') +// --> 123 +``` + +调试台 diff --git a/packages/func/src/string/index.ts b/packages/func/src/string/index.ts index 2709285..996a23d 100644 --- a/packages/func/src/string/index.ts +++ b/packages/func/src/string/index.ts @@ -47,3 +47,34 @@ export const cutStr = function cutstr(str: string, len: number) { return str; } }; + +/** + * 查看字符串是否为可访问链接 + * @param str 待检查链接 + * @returns + */ +export const isUrl = (str: string) => { + try { + new URL(str); + return true; + } catch (err) { + return false; + } +} + +/** + * 通过url获取值 + * @param key 想要获取的值 + * @param url 需要截取的链接 + */ +export const getValueByUrl = (key: string, str: string) => { + let result = null + + if (isUrl(str)) { + result = new URL(str).searchParams.get(key) + } else { + result = new URLSearchParams(str.indexOf('?') > -1 ? str : `?${str}`).get(key) + } + + return result +} diff --git a/packages/func/src/time/index.md b/packages/func/src/time/index.md new file mode 100644 index 0000000..5ca2ffd --- /dev/null +++ b/packages/func/src/time/index.md @@ -0,0 +1,4 @@ +--- +title: 时间相关 +order: 4 +--- diff --git a/packages/hooks/CHANGELOG.md b/packages/hooks/CHANGELOG.md index 88e0890..a7f0f66 100644 --- a/packages/hooks/CHANGELOG.md +++ b/packages/hooks/CHANGELOG.md @@ -1,5 +1,48 @@ # @zhst/hooks +## 0.8.10 + +### Patch Changes + +- @zhst/func@0.9.1 + +## 0.8.9 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.9.0 + +## 0.8.8 + +### Patch Changes + +- 初始化物料库 +- Updated dependencies + - @zhst/func@0.8.3 + +## 0.8.7 + +### Patch Changes + +- 初始化物料包 +- Updated dependencies + - @zhst/func@0.8.2 + +## 0.8.6 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.8.1 + +## 0.8.5 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.8.0 + ## 0.8.4 ### Patch Changes diff --git a/packages/hooks/README.md b/packages/hooks/README.md index 69f4d8c..ed73682 100644 --- a/packages/hooks/README.md +++ b/packages/hooks/README.md @@ -1,6 +1,8 @@ +# @zhst/hooks + ## 介绍 -业务中常用函数方法 +常用函数方法 ## 安装 diff --git a/packages/hooks/es/useActivateWrapper/index.d.ts b/packages/hooks/es/useActivateWrapper/index.d.ts new file mode 100644 index 0000000..8c35f0c --- /dev/null +++ b/packages/hooks/es/useActivateWrapper/index.d.ts @@ -0,0 +1,4 @@ +export declare const useUnActivateWrapper: (cb: () => void) => void; +export declare const useActivateWrapper: (cb: any) => null; +export declare const useActivateState: () => boolean; +export default useActivateWrapper; diff --git a/packages/hooks/es/useDeepMemo/index.d.ts b/packages/hooks/es/useDeepMemo/index.d.ts new file mode 100644 index 0000000..ba9fabc --- /dev/null +++ b/packages/hooks/es/useDeepMemo/index.d.ts @@ -0,0 +1,2 @@ +import { DependencyList } from 'react'; +export default function useDeepMemo(factory: () => T, deps: DependencyList | undefined): T; diff --git a/packages/zhst-types/index.d.ts b/packages/hooks/es/useSocket/index.d.ts similarity index 100% rename from packages/zhst-types/index.d.ts rename to packages/hooks/es/useSocket/index.d.ts diff --git a/packages/hooks/lib/useActivateWrapper/index.d.ts b/packages/hooks/lib/useActivateWrapper/index.d.ts new file mode 100644 index 0000000..8c35f0c --- /dev/null +++ b/packages/hooks/lib/useActivateWrapper/index.d.ts @@ -0,0 +1,4 @@ +export declare const useUnActivateWrapper: (cb: () => void) => void; +export declare const useActivateWrapper: (cb: any) => null; +export declare const useActivateState: () => boolean; +export default useActivateWrapper; diff --git a/packages/hooks/lib/useDeepMemo/index.d.ts b/packages/hooks/lib/useDeepMemo/index.d.ts new file mode 100644 index 0000000..ba9fabc --- /dev/null +++ b/packages/hooks/lib/useDeepMemo/index.d.ts @@ -0,0 +1,2 @@ +import { DependencyList } from 'react'; +export default function useDeepMemo(factory: () => T, deps: DependencyList | undefined): T; diff --git a/packages/hooks/lib/useSocket/index.d.ts b/packages/hooks/lib/useSocket/index.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/hooks/package.json b/packages/hooks/package.json index 768c890..7df2d88 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/hooks", - "version": "0.8.4", + "version": "0.8.10", "description": "hooks合集", "keywords": [ "hooks" @@ -36,9 +36,7 @@ "access": "public", "registry": "http://10.0.0.77:4874" }, - "devDependencies": { - "@types/zhst": "workspace:^" - }, + "devDependencies": {}, "dependencies": { "@zhst/func": "workspace:^", "ahooks": "^3.7.8", diff --git a/packages/hooks/src/changelog/index.md b/packages/hooks/src/changelog/index.md index d4333e4..f19e2e6 100644 --- a/packages/hooks/src/changelog/index.md +++ b/packages/hooks/src/changelog/index.md @@ -2,6 +2,7 @@ nav: title: 元组件 title: 版本更新日志 +toc: content order: 99 --- diff --git a/packages/icon/.fatherrc.ts b/packages/icon/.fatherrc.ts new file mode 100644 index 0000000..9e3a0ef --- /dev/null +++ b/packages/icon/.fatherrc.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'father'; + +export default defineConfig({ + // more father config: https://github.com/umijs/father/blob/master/docs/config.md + esm: { output: 'es' }, + cjs: { output: 'lib' }, +}); diff --git a/packages/icon/CHANGELOG.md b/packages/icon/CHANGELOG.md new file mode 100644 index 0000000..5b91928 --- /dev/null +++ b/packages/icon/CHANGELOG.md @@ -0,0 +1,7 @@ +# @zhst/icon + +## 0.2.0 + +### Minor Changes + +- 初始化 icon 包 diff --git a/packages/icon/README.md b/packages/icon/README.md new file mode 100644 index 0000000..10249ec --- /dev/null +++ b/packages/icon/README.md @@ -0,0 +1,16 @@ +# @zhst/icon + +## 介绍 + +静态变量库 + +## 安装 + +> pnpm install @zhst/icon + +## 使用 + +```js +import React from 'react'; +import { Arrow } from '@zhst/icon' +``` diff --git a/packages/icon/es/Iconfont.js b/packages/icon/es/Iconfont.js new file mode 100644 index 0000000..fd9fed8 --- /dev/null +++ b/packages/icon/es/Iconfont.js @@ -0,0 +1,42 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +import { createFromIconfontCN } from '@ant-design/icons'; +import React from 'react'; +var Icon = createFromIconfontCN({ + scriptUrl: require("./font/iconfont.js") +}); +var IconFont = function IconFont(props) { + var _ref = props || {}, + _ref$title = _ref.title, + title = _ref$title === void 0 ? '' : _ref$title, + _ref$styles = _ref.styles, + styles = _ref$styles === void 0 ? {} : _ref$styles, + icon = _ref.icon, + _ref$size = _ref.size, + size = _ref$size === void 0 ? 14 : _ref$size, + onIconClick = _ref.onIconClick, + children = _ref.children, + _ref$active = _ref.active, + active = _ref$active === void 0 ? false : _ref$active, + _ref$color = _ref.color, + color = _ref$color === void 0 ? '' : _ref$color; + return /*#__PURE__*/React.createElement(Icon, { + title: title, + onClick: function onClick(e) { + onIconClick && onIconClick(e); + }, + style: _objectSpread(_objectSpread({}, styles), {}, { + cursor: 'pointer', + fontSize: size, + color: color + }, active ? { + color: '#09f' + } : {}), + type: icon + }, children); +}; +export default IconFont; \ No newline at end of file diff --git a/packages/icon/es/demo/basic.js b/packages/icon/es/demo/basic.js new file mode 100644 index 0000000..10131a8 --- /dev/null +++ b/packages/icon/es/demo/basic.js @@ -0,0 +1,8 @@ +import React from 'react'; +import { IconFont } from '@zhst/icon'; +var demo = function demo() { + return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(IconFont, { + icon: "icon-daoru1" + })); +}; +export default demo; \ No newline at end of file diff --git a/packages/icon/es/demo/demo.js b/packages/icon/es/demo/demo.js new file mode 100644 index 0000000..b6dc50b --- /dev/null +++ b/packages/icon/es/demo/demo.js @@ -0,0 +1,33 @@ +import React from 'react'; +var iconJson = require("../font/iconfont.json"); +import { IconFont } from '@zhst/icon'; +import "./index.less"; +import { message } from '@zhst/meta'; +var demo = function demo() { + var iconArr = iconJson['glyphs']; + return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("ul", { + className: 'demo-ul' + }, iconArr.map(function (item) { + var font_class = item.font_class, + name = item.name; + var fontName = "icon-".concat(font_class); + return /*#__PURE__*/React.createElement("li", { + className: 'demo-li' + }, /*#__PURE__*/React.createElement(IconFont, { + styles: { + marginBottom: 20 + }, + icon: fontName, + size: 32, + onIconClick: function onIconClick() { + navigator.clipboard.writeText(fontName); + message.success("\u590D\u5236".concat(fontName, "\u6210\u529F")); + } + }), /*#__PURE__*/React.createElement("div", { + className: "demo-li-name" + }, name), /*#__PURE__*/React.createElement("div", { + className: "demo-li-name" + }, fontName)); + }))); +}; +export default demo; \ No newline at end of file diff --git a/packages/icon/es/demo/index.less b/packages/icon/es/demo/index.less new file mode 100644 index 0000000..70b6c9d --- /dev/null +++ b/packages/icon/es/demo/index.less @@ -0,0 +1,20 @@ +.demo { + &-ul { + list-style-type: none; + display: flex; + flex-wrap: wrap; + } + + &-li { + display: flex; + flex-direction: column; + align-items: center; + height: 150px; + width: 150px; + + &-name { + color: #666; + font-size: 12px; + } + } +} \ No newline at end of file diff --git a/packages/icon/es/font/iconfont.css b/packages/icon/es/font/iconfont.css new file mode 100644 index 0000000..ef9f9d5 --- /dev/null +++ b/packages/icon/es/font/iconfont.css @@ -0,0 +1,1743 @@ +@font-face { + font-family: iconfont; /* Project id 1739270 */ + src: url('iconfont.woff2?t=1711094074098') format('woff2'), + url('iconfont.woff?t=1711094074098') format('woff'), + url('iconfont.ttf?t=1711094074098') format('truetype'); +} + +.iconfont { + font-family: iconfont !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-shezhi1::before { + content: "\e7fb"; +} + +.icon-bofang1::before { + content: "\e7fc"; +} + +.icon-zanting2::before { + content: "\e7fa"; +} + +.icon-bangzhu2::before { + content: "\e7f9"; +} + +.icon-daochu2::before { + content: "\e7f7"; +} + +.icon-daoru1::before { + content: "\e7f8"; +} + +.icon-jindonglogo::before { + content: "\e7f6"; +} + +.icon-guankongyujingselect::before { + content: "\e7ef"; +} + +.icon-guankongyujingnor::before { + content: "\e7f0"; +} + +.icon-guankongyuannor::before { + content: "\e7f1"; +} + +.icon-quancengyuanselectbeifen::before { + content: "\e7f2"; +} + +.icon-quancengyujingnor::before { + content: "\e7f3"; +} + +.icon-quancengyuannor::before { + content: "\e7f4"; +} + +.icon-quancengyuanselect::before { + content: "\e7f5"; +} + +.icon-guankongyuanselect::before { + content: "\e7ee"; +} + +.icon-jindong::before { + content: "\e7ed"; +} + +.icon-danganxiangqing_hangweifenxi::before { + content: "\e78d"; +} + +.icon-danganxiangqing_shujuganzhi::before { + content: "\e78e"; +} + +.icon-danganxiangqing_huodongguiji::before { + content: "\e78f"; +} + +.icon-danganxiangqing_jibenxinxi::before { + content: "\e7ea"; +} + +.icon-danganxiangqing_fushuwupin::before { + content: "\e7eb"; +} + +.icon-danganxiangqing_jizhanyingyong::before { + content: "\e7ec"; +} + +.icon-jiarudanganku::before { + content: "\e787"; +} + +.icon-dangankunor::before { + content: "\e793"; +} + +.icon-bukongrenwuselect::before { + content: "\e799"; +} + +.icon-bukongrenwunor1::before { + content: "\e79a"; +} + +.icon-dangankuselect::before { + content: "\e79b"; +} + +.icon-jizhanfanor::before { + content: "\e79c"; +} + +.icon-feijidongchechaxunnor::before { + content: "\e79d"; +} + +.icon-jidongchechaxunselect::before { + content: "\e79e"; +} + +.icon-a-lixianfenxiselect2::before { + content: "\e7a1"; +} + +.icon-huisufenxiselect::before { + content: "\e7a2"; +} + +.icon-jizhanfaselect::before { + content: "\e7a3"; +} + +.icon-mubiaojiansuonor::before { + content: "\e7ae"; +} + +.icon-lurenkuselect::before { + content: "\e7b1"; +} + +.icon-shujujiashicangselect::before { + content: "\e7b2"; +} + +.icon-shishijiexiselect::before { + content: "\e7b4"; +} + +.icon-shishijiexinor::before { + content: "\e7b9"; +} + +.icon-jidongchechaxunnor::before { + content: "\e7c1"; +} + +.icon-lurenkunor1::before { + content: "\e7cf"; +} + +.icon-mubiaotezhengchaxunnor::before { + content: "\e7e1"; +} + +.icon-yujingjiluselect::before { + content: "\e7e2"; +} + +.icon-mubiaotezhengchaxunselect::before { + content: "\e7e3"; +} + +.icon-feijidongchechaxunselect::before { + content: "\e7e4"; +} + +.icon-yujingjilunor::before { + content: "\e7e5"; +} + +.icon-lixianfenxiselect::before { + content: "\e7e6"; +} + +.icon-huisufenxinor::before { + content: "\e7e7"; +} + +.icon-shujujiashicangnor::before { + content: "\e7e8"; +} + +.icon-mubiaojiansuoselect::before { + content: "\e7e9"; +} + +.icon-kuangxuangongju::before { + content: "\e796"; +} + +.icon-fengniao::before { + content: "\e792"; +} + +.icon-zhankai::before { + content: "\e790"; +} + +.icon-shouqi::before { + content: "\e791"; +} + +.icon-shijian::before { + content: "\e786"; +} + +.icon-dingwei2::before { + content: "\e613"; +} + +.icon-renyuan::before { + content: "\e784"; +} + +.icon-houtai::before { + content: "\e785"; +} + +.icon-zuo::before { + content: "\e781"; +} + +.icon-you::before { + content: "\e783"; +} + +.icon-kakou::before { + content: "\e780"; +} + +.icon-yujing1::before { + content: "\e77e"; +} + +.icon-yuan2::before { + content: "\e77d"; +} + +.icon-moxingpengzhuang::before { + content: "\e777"; +} + +.icon-moxingpengzhuangnor::before { + content: "\e778"; +} + +.icon-lurenku::before { + content: "\e77b"; +} + +.icon-lurenkunor::before { + content: "\e77c"; +} + +.icon-shiming::before { + content: "\e776"; +} + +.icon-suoxiao2::before { + content: "\e774"; +} + +.icon-fangda1::before { + content: "\e775"; +} + +.icon-guanbi2::before { + content: "\e772"; +} + +.icon-fanhui1::before { + content: "\e773"; +} + +.icon-xiansuomopai::before { + content: "\e76f"; +} + +.icon-xiansuomopainor::before { + content: "\e76e"; +} + +.icon-zhajiyujing::before { + content: "\e770"; +} + +.icon-zhajiyujingnor::before { + content: "\e771"; +} + +.icon-zhuizongpeizhi::before { + content: "\e76c"; +} + +.icon-zhuizongpeizhinor::before { + content: "\e76d"; +} + +.icon-dapingqiehuan::before { + content: "\e76b"; +} + +.icon-xuanze::before { + content: "\e769"; +} + +.icon-shaixuan1::before { + content: "\e76a"; +} + +.icon-chekashebei::before { + content: "\e764"; +} + +.icon-imsishebei::before { + content: "\e765"; +} + +.icon-xingtishebei::before { + content: "\e766"; +} + +.icon-renlianshebei::before { + content: "\e767"; +} + +.icon-wifishebei::before { + content: "\e768"; +} + +.icon-a-miaozhun2::before { + content: "\e762"; +} + +.icon-a-bianzu19::before { + content: "\e763"; +} + +.icon-fanye::before { + content: "\e75e"; +} + +.icon-shenfenzheng::before { + content: "\e75f"; +} + +.icon-dizhi::before { + content: "\e760"; +} + +.icon-guanbi::before { + content: "\e761"; +} + +.icon-dianwei1::before { + content: "\e75b"; +} + +.icon-weikakou::before { + content: "\e757"; +} + +.icon-weikakounor::before { + content: "\e758"; +} + +.icon-changsuoma::before { + content: "\e759"; +} + +.icon-changsuomanor::before { + content: "\e75a"; +} + +.icon-yujing::before { + content: "\e756"; +} + +.icon-jiansuonor::before { + content: "\e747"; +} + +.icon-tonghangrenfenxinor1::before { + content: "\e748"; +} + +.icon-zhinengyanpannor::before { + content: "\e749"; +} + +.icon-bukongyujingnor::before { + content: "\e74a"; +} + +.icon-bukongrenwunor::before { + content: "\e74b"; +} + +.icon-dianziditunor::before { + content: "\e754"; +} + +.icon-zhuizongnor1::before { + content: "\e755"; +} + +.icon-zhuizong1::before { + content: "\e746"; +} + +.icon-bukongrenwu3::before { + content: "\e74c"; +} + +.icon-dianziditu::before { + content: "\e74d"; +} + +.icon-bukongyujing::before { + content: "\e750"; +} + +.icon-tonghangrenfenxi1::before { + content: "\e751"; +} + +.icon-zhinengyanpan::before { + content: "\e752"; +} + +.icon-jiansuo1::before { + content: "\e753"; +} + +.icon-kaiqijulei::before { + content: "\e745"; +} + +.icon-tongbu::before { + content: "\e744"; +} + +.icon-tonghangrenfenxi::before { + content: "\e743"; +} + +.icon-tonghangrenfenxinor::before { + content: "\e742"; +} + +.icon-jizhanyingyong::before { + content: "\e741"; +} + +.icon-haikangrenlianbukongnor::before { + content: "\e740"; +} + +.icon-haikangrenlianbukong::before { + content: "\e73f"; +} + +.icon-tuozhanshouduantishi::before { + content: "\e73e"; +} + +.icon-fanhuimopailiebiao::before { + content: "\e73d"; +} + +.icon-toukuijiancenor::before { + content: "\e73c"; +} + +.icon-toukuijiance::before { + content: "\e718"; +} + +.icon-zhuixing::before { + content: "\e717"; +} + +.icon-tishi4::before { + content: "\e73b"; +} + +.icon-a-shaixuanfeiji::before { + content: "\e733"; +} + +.icon-a-zidongtiaozhengfanweifeiji::before { + content: "\e73a"; +} + +.icon-heziyunwei::before { + content: "\e739"; +} + +.icon-qiehuan::before { + content: "\e738"; +} + +.icon-disanfangxiaoxinor::before { + content: "\e737"; +} + +.icon-disanfangxiaoxi::before { + content: "\e736"; +} + +.icon-daohang::before { + content: "\e735"; +} + +.icon-yonghu::before { + content: "\e734"; +} + +.icon-feiji::before { + content: "\e732"; +} + +.icon-jieshuzhuizong::before { + content: "\e730"; +} + +.icon-huisuzhoubian::before { + content: "\e731"; +} + +.icon-jixuzhuizong::before { + content: "\e72d"; +} + +.icon-tiaozhengfanwei::before { + content: "\e72e"; +} + +.icon-jiansuo::before { + content: "\e72f"; +} + +.icon-guiji::before { + content: "\e72c"; +} + +.icon-jichuxinxi::before { + content: "\e72b"; +} + +.icon-danganzhaiyao::before { + content: "\e72a"; +} + +.icon-jingzhunbukongicon_on::before { + content: "\e728"; +} + +.icon-jingzhunbukongicon_off::before { + content: "\e729"; +} + +.icon-tiaozhuan::before { + content: "\e727"; +} + +.icon-shezhi::before { + content: "\e726"; +} + +.icon-bangzhu1::before { + content: "\e725"; +} + +.icon-shuaxin1::before { + content: "\e724"; +} + +.icon-duosucaibeifen::before { + content: "\e722"; +} + +.icon-duosucai::before { + content: "\e723"; +} + +.icon-shujutongji::before { + content: "\e721"; +} + +.icon-renlian::before { + content: "\e71c"; +} + +.icon-xingti::before { + content: "\e71d"; +} + +.icon-jidongche::before { + content: "\e71e"; +} + +.icon-huisufenxi4::before { + content: "\e71f"; +} + +.icon-lixianfenxi4::before { + content: "\e720"; +} + +.icon-feijidongche::before { + content: "\e71b"; +} + +.icon-shujudaping::before { + content: "\e71a"; +} + +.icon-peizhisuanfa::before { + content: "\e719"; +} + +.icon-zhuizong::before { + content: "\e715"; +} + +.icon-zhuizongnor::before { + content: "\e716"; +} + +.icon-dianwei::before { + content: "\e714"; +} + +.icon-Container::before { + content: "\e713"; +} + +.icon-Attachment::before { + content: "\e712"; +} + +.icon-cha::before { + content: "\e711"; +} + +.icon-gou::before { + content: "\e710"; +} + +.icon-daoru::before { + content: "\e70f"; +} + +.icon-quanxijiansuo::before { + content: "\e70e"; +} + +.icon-chakanjiankong::before { + content: "\e70c"; +} + +.icon-tishi3::before { + content: "\e70d"; +} + +.icon-heiyemoshi::before { + content: "\e70b"; +} + +.icon-zhengchangmoshi::before { + content: "\e70a"; +} + +.icon-dingwei1::before { + content: "\e709"; +} + +.icon-paixu::before { + content: "\e708"; +} + +.icon-tianjiayuan::before { + content: "\e707"; +} + +.icon-juleidangankunor::before { + content: "\e705"; +} + +.icon-juleidanganku::before { + content: "\e706"; +} + +.icon-guanlian::before { + content: "\e704"; +} + +.icon-renlianbiaozhu::before { + content: "\e703"; +} + +.icon-juleijieguo::before { + content: "\e6ec"; +} + +.icon-juleirenwunor::before { + content: "\e6fb"; +} + +.icon-juleijieguonor::before { + content: "\e701"; +} + +.icon-juleirenwu::before { + content: "\e702"; +} + +.icon-zhongzhi3::before { + content: "\e8ff"; +} + +.icon-xuanzhuan1::before { + content: "\e6fd"; +} + +.icon-shuangmubiaozhu1::before { + content: "\e700"; +} + +.icon-shoudongkuangxuan::before { + content: "\e6f9"; +} + +.icon-zanting1::before { + content: "\e6fe"; +} + +.icon-zhongzhi1::before { + content: "\e6ff"; +} + +.icon-shoudong::before { + content: "\e6fa"; +} + +.icon-zidong::before { + content: "\e6fc"; +} + +.icon-zhenduan::before { + content: "\e6f8"; +} + +.icon-Check-Circle-Fill1::before { + content: "\e6f3"; +} + +.icon-Info--Circle-Fill::before { + content: "\e6f4"; +} + +.icon-Close-Circle-Fill::before { + content: "\e6f5"; +} + +.icon-Warning-Circle-Fill::before { + content: "\e6f6"; +} + +.icon-Question-Circle-Fill::before { + content: "\e6f7"; +} + +.icon-zancunjia::before { + content: "\e6f2"; +} + +.icon-Check-Circle-Fill::before { + content: "\e6f1"; +} + +.icon-tupianji::before { + content: "\e6f0"; +} + +.icon-quanping1::before { + content: "\e6ed"; +} + +.icon-yinliang::before { + content: "\e6ee"; +} + +.icon-suoxiao1::before { + content: "\e6ef"; +} + +.icon-home::before { + content: "\e6eb"; +} + +.icon-zuixiaohua::before { + content: "\e6e9"; +} + +.icon-zuidahua::before { + content: "\e6ea"; +} + +.icon-biaozhunhua::before { + content: "\e6e6"; +} + +.icon-julei::before { + content: "\e6e5"; +} + +.icon-bianzu::before { + content: "\e6e7"; +} + +.icon-bianzu3::before { + content: "\e6e8"; +} + +.icon-bianzu7::before { + content: "\e6e3"; +} + +.icon-bianzu2::before { + content: "\e6e4"; +} + +.icon-kapianqiehuan::before { + content: "\e6e2"; +} + +.icon-duobianxing1::before { + content: "\e6e0"; +} + +.icon-fang1::before { + content: "\e6e1"; +} + +.icon-yuan1::before { + content: "\e6df"; +} + +.icon-cejuli::before { + content: "\e6de"; +} + +.icon-wanggekuangxuannor::before { + content: "\e6dc"; +} + +.icon-lujingkuangxuannor::before { + content: "\e6dd"; +} + +.icon-chuansuo::before { + content: "\e6db"; +} + +.icon-bianyuanhezinor::before { + content: "\e6d8"; +} + +.icon-wujiankuhov::before { + content: "\e6d9"; +} + +.icon-caozuorizhinor::before { + content: "\e6da"; +} + +.icon-collect_dot::before { + content: "\e619"; +} + +.icon-chuxiandingweibg::before { + content: "\e6d4"; +} + +.icon-chuxiandingweiicon::before { + content: "\e6d5"; +} + +.icon-shexiangtoudingweibg::before { + content: "\e6d6"; +} + +.icon-shexiangtoudingweiicon::before { + content: "\e6d7"; +} + +.icon-xiafajieguo::before { + content: "\e6d2"; +} + +.icon-daochu1::before { + content: "\e6d3"; +} + +.icon-zuijinchuxian::before { + content: "\e6cc"; +} + +.icon-leijizhuapai::before { + content: "\e6d0"; +} + +.icon-yichangshijian::before { + content: "\e6d1"; +} + +.icon-dingwei::before { + content: "\e6cb"; +} + +.icon-tupian::before { + content: "\e6ad"; +} + +.icon-wenti::before { + content: "\e6ac"; +} + +.icon-lixian1::before { + content: "\e6ab"; +} + +.icon-yichang::before { + content: "\e6a8"; +} + +.icon-zhuixing-xiugaidianwei::before { + content: "\e6a7"; +} + +.icon-wenhao1::before { + content: "\e69e"; +} + +.icon-ditu_dingwei::before { + content: "\e69d"; +} + +.icon-ditu_fangda::before { + content: "\e689"; +} + +.icon-ditu_suoxiao::before { + content: "\e69a"; +} + +.icon-chakanbukongrenwu::before { + content: "\e688"; +} + +.icon-lietu::before { + content: "\e687"; +} + +.icon-zhongzhi::before { + content: "\e67e"; +} + +.icon-xialada::before { + content: "\e67f"; +} + +.icon-zhinengguanlian_xingti::before { + content: "\e67b"; +} + +.icon-zhinengguanlian_renlian::before { + content: "\e67c"; +} + +.icon-xiajiantou::before { + content: "\e75c"; +} + +.icon-zhinengguanlian_xiaojiantou::before { + content: "\e67d"; +} + +.icon-zhinengguanlian_jiantou::before { + content: "\e67a"; +} + +.icon-shangjiantou::before { + content: "\e75d"; +} + +.icon-banbenxinxi::before { + content: "\e679"; +} + +.icon-wenhao::before { + content: "\e61f"; +} + +.icon-bianjirenyuan::before { + content: "\e7e0"; +} + +.icon-tishi2::before { + content: "\e7df"; +} + +.icon-shexiangji2::before { + content: "\e7de"; +} + +.icon-guijizhuizong::before { + content: "\e7dd"; +} + +.icon-jiezhen1::before { + content: "\e7dc"; +} + +.icon-tianjiaguijihuisu::before { + content: "\e7db"; +} + +.icon-tingzhi::before { + content: "\e7cd"; +} + +.icon-baoweiquan::before { + content: "\e7ce"; +} + +.icon-shangchuanshipin::before { + content: "\e7d0"; +} + +.icon-yidong::before { + content: "\e7d1"; +} + +.icon-chuangjianxinbukong1::before { + content: "\e7d2"; +} + +.icon-yichu1::before { + content: "\e7d3"; +} + +.icon-tishi1::before { + content: "\e7d4"; +} + +.icon-VS::before { + content: "\e7d5"; +} + +.icon-quanjuzonglan::before { + content: "\e7d6"; +} + +.icon-chakanfenxirenwu1::before { + content: "\e7d7"; +} + +.icon-xiaoxi::before { + content: "\e7d8"; +} + +.icon-yonghuming::before { + content: "\e7d9"; +} + +.icon-tuichu::before { + content: "\e7da"; +} + +.icon-guijizhuizongnor::before { + content: "\e7cb"; +} + +.icon-guijizhuizong2::before { + content: "\e7cc"; +} + +.icon-bukongrenwu1::before { + content: "\e7b7"; +} + +.icon-shexiangji::before { + content: "\e7b8"; +} + +.icon-yujingditu::before { + content: "\e7ba"; +} + +.icon-lixianfenxi2::before { + content: "\e7bb"; +} + +.icon-yuanguanli1::before { + content: "\e7bc"; +} + +.icon-danganku::before { + content: "\e7bd"; +} + +.icon-huisufenxi2::before { + content: "\e7be"; +} + +.icon-kuneijiansuo::before { + content: "\e7bf"; +} + +.icon-jiegouhuachaxun::before { + content: "\e7c0"; +} + +.icon-bukongrenwu2::before { + content: "\e7c2"; +} + +.icon-yuanguanli2::before { + content: "\e7c3"; +} + +.icon-shexiangji1::before { + content: "\e7c4"; +} + +.icon-kuneijiansuo1::before { + content: "\e7c5"; +} + +.icon-lixianfenxi3::before { + content: "\e7c6"; +} + +.icon-danganku1::before { + content: "\e7c7"; +} + +.icon-yujingditu1::before { + content: "\e7c8"; +} + +.icon-huisufenxi3::before { + content: "\e7c9"; +} + +.icon-jiegouhuachaxunnor::before { + content: "\e7ca"; +} + +.icon-chuangjianxinbukong::before { + content: "\e7b6"; +} + +.icon-kuangxuan::before { + content: "\e77f"; +} + +.icon-gaojishaixuan::before { + content: "\e779"; +} + +.icon-gaojishaixuanshouqi::before { + content: "\e77a"; +} + +.icon-bukongrenwu::before { + content: "\e7b5"; +} + +.icon-riqi::before { + content: "\e74f"; +} + +.icon-shijianqiehuan::before { + content: "\e797"; +} + +.icon-shouquan1::before { + content: "\e7b3"; +} + +.icon-video-play::before { + content: "\e653"; +} + +.icon-shishifenxi::before { + content: "\e7af"; +} + +.icon-chakanfenxirenwu::before { + content: "\e7b0"; +} + +.icon-jiegouhuafenxi::before { + content: "\e7ad"; +} + +.icon-tianjiaguiji2::before { + content: "\e6aa"; +} + +.icon-tianjiajiansuomubiao::before { + content: "\e6b0"; +} + +.icon-add::before { + content: "\e661"; +} + +.icon-didian::before { + content: "\e798"; +} + +.icon-bofanghov::before { + content: "\e79f"; +} + +.icon-bofang3::before { + content: "\e7a0"; +} + +.icon-jinggao::before { + content: "\e788"; +} + +.icon-tishi::before { + content: "\e789"; +} + +.icon-bangzhu::before { + content: "\e78a"; +} + +.icon-guanbi1::before { + content: "\e78b"; +} + +.icon-chenggong::before { + content: "\e78c"; +} + +.icon-qianwang::before { + content: "\e7ac"; +} + +.icon-shouquan::before { + content: "\e7ab"; +} + +.icon-jingweidu::before { + content: "\e7aa"; +} + +.icon-shanchu1::before { + content: "\e74e"; +} + +.icon-daochu::before { + content: "\e782"; +} + +.icon-ziyuanguanli::before { + content: "\e7a4"; +} + +.icon-fuwuqishouquan::before { + content: "\e7a5"; +} + +.icon-xiugaimima::before { + content: "\e7a6"; +} + +.icon-zhanghaoguanli::before { + content: "\e7a7"; +} + +.icon-suanlipeie::before { + content: "\e7a8"; +} + +.icon-VMSpeizhi::before { + content: "\e7a9"; +} + +.icon-tianjia1::before { + content: "\e794"; +} + +.icon-yichu::before { + content: "\e795"; +} + +.icon-lujing::before { + content: "\e6cf"; +} + +.icon-jiankongxinxi::before { + content: "\e6c8"; +} + +.icon-fanwei::before { + content: "\e6c9"; +} + +.icon-anfadidian::before { + content: "\e6ca"; +} + +.icon-gongjuxiang::before { + content: "\e6cd"; +} + +.icon-gongjuxiangguanbi1::before { + content: "\e6ce"; +} + +.icon-jiezhen::before { + content: "\e6c2"; +} + +.icon-huisufenxi1::before { + content: "\e6c6"; +} + +.icon-huisufenxi::before { + content: "\e6c7"; +} + +.icon-tianjiashipinwenjian1::before { + content: "\e6c5"; +} + +.icon-jiazaishibai::before { + content: "\e6c3"; +} + +.icon-shuaxin::before { + content: "\e6c4"; +} + +.icon-quanping::before { + content: "\e6c0"; +} + +.icon-quxiaoquanping::before { + content: "\e6c1"; +} + +.icon-shipinbofang::before { + content: "\e6be"; +} + +.icon-shipinzanting::before { + content: "\e6bf"; +} + +.icon-lixianguiji::before { + content: "\e6bd"; +} + +.icon-lixian::before { + content: "\e6bc"; +} + +.icon-xiaojiaobiao::before { + content: "\e6bb"; +} + +.icon-shangchuan1::before { + content: "\e6ba"; +} + +.icon-tianjiaweijiansuoduixiang::before { + content: "\e6b8"; +} + +.icon-tianjiaweijiansuojilu::before { + content: "\e6b9"; +} + +.icon-lixianfenxi1::before { + content: "\e6b7"; +} + +.icon-kuaisujiansuohov::before { + content: "\e6b5"; +} + +.icon-kuaisujiansuo1::before { + content: "\e6b6"; +} + +.icon-kuaisujiansuo::before { + content: "\e6b4"; +} + +.icon-yuanguanli::before { + content: "\e6b1"; +} + +.icon-shexiangtou::before { + content: "\e6b2"; +} + +.icon-lixianfenxi::before { + content: "\e6b3"; +} + +.icon-filter::before { + content: "\e61a"; +} + +.icon-tianjiaweizhuizongduixiang2::before { + content: "\e6af"; +} + +.icon-tianjiaweizhuizongduixiang1::before { + content: "\e6ae"; +} + +.icon-baocun1::before { + content: "\e6a9"; +} + +.icon-tianjiashipinwenjianjia::before { + content: "\e6a5"; +} + +.icon-tianjiashipinwenjian::before { + content: "\e6a6"; +} + +.icon-ditu::before { + content: "\e6a4"; +} + +.icon-xinjianshexiangtou::before { + content: "\e6a3"; +} + +.icon-lishihuisu::before { + content: "\e6a2"; +} + +.icon-decoyitianjiaweiguiji::before { + content: "\e69f"; +} + +.icon-bofangqiehuan::before { + content: "\e6a0"; +} + +.icon-tianjia::before { + content: "\e6a1"; +} + +.icon-baocun::before { + content: "\e698"; +} + +.icon-gongjuxiangguanbi::before { + content: "\e699"; +} + +.icon-shangchuan::before { + content: "\e69b"; +} + +.icon-gongjuxiang1::before { + content: "\e69c"; +} + +.icon-logo::before { + content: "\e692"; +} + +.icon-setting::before { + content: "\e627"; +} + +.icon-user::before { + content: "\e628"; +} + +.icon-quit::before { + content: "\e629"; +} + +.icon-arrowzhankaimeixuanzhong::before { + content: "\e693"; +} + +.icon-arrowzhankaixuanzhong::before { + content: "\e694"; +} + +.icon-xuanzexuanzhong::before { + content: "\e695"; +} + +.icon-xuanzebanxuan::before { + content: "\e696"; +} + +.icon-xuanzenor::before { + content: "\e697"; +} + +.icon-shaixuanguanbinor::before { + content: "\e691"; +} + +.icon-gengduo::before { + content: "\e68e"; +} + +.icon-youzhankai::before { + content: "\e68f"; +} + +.icon-zuoshouqi::before { + content: "\e690"; +} + +.icon-yuan::before { + content: "\e68a"; +} + +.icon-duobianxing::before { + content: "\e68b"; +} + +.icon-fang::before { + content: "\e68c"; +} + +.icon-ceju::before { + content: "\e68d"; +} + +.icon-shishizhuizong1::before { + content: "\e683"; +} + +.icon-guijihuisu1::before { + content: "\e684"; +} + +.icon-tianjiaguiji::before { + content: "\e685"; +} + +.icon-yichuguiji::before { + content: "\e686"; +} + +.icon-fangda::before { + content: "\e680"; +} + +.icon-suoxiao::before { + content: "\e681"; +} + +.icon-xiazai::before { + content: "\e682"; +} + +.icon-fanhui::before { + content: "\e678"; +} + +.icon-sousuo::before { + content: "\e669"; +} + +.icon-quxiaoxuanzhong::before { + content: "\e66a"; +} + +.icon-piliangxuanzenor::before { + content: "\e66b"; +} + +.icon-kaiqifenxi::before { + content: "\e66c"; +} + +.icon-quxiaofenxi::before { + content: "\e66d"; +} + +.icon-shaixuan::before { + content: "\e66e"; +} + +.icon-dangan::before { + content: "\e66f"; +} + +.icon-bofang::before { + content: "\e670"; +} + +.icon-zanting::before { + content: "\e671"; +} + +.icon-shanchu::before { + content: "\e672"; +} + +.icon-tianjiaweizhuizongduixiang::before { + content: "\e673"; +} + +.icon-chakandatu::before { + content: "\e674"; +} + +.icon-jiansuojilu::before { + content: "\e675"; +} + +.icon-yuzhi::before { + content: "\e676"; +} + +.icon-chakanxiangqing::before { + content: "\e677"; +} + +.icon-guijihuisu::before { + content: "\e65c"; +} + +.icon-dianweipeizhinor::before { + content: "\e65d"; +} + +.icon-yirenyidang::before { + content: "\e65e"; +} + +.icon-tongbanfenxi::before { + content: "\e65f"; +} + +.icon-qiehuanzuo::before { + content: "\e662"; +} + +.icon-qiehuanyou::before { + content: "\e663"; +} + +.icon-tingzhidengdai::before { + content: "\e664"; +} + +.icon-yiguanbi::before { + content: "\e665"; +} + +.icon-danchuangguanbi::before { + content: "\e666"; +} + +.icon-lishijilu::before { + content: "\e64a"; +} + +.icon-xuanzhuan::before { + content: "\e648"; +} + +.icon-qingchu::before { + content: "\e649"; +} + +.icon-dangantianjia::before { + content: "\e63d"; +} + +.icon-bianji::before { + content: "\e63e"; +} + +.icon-fullscreen::before { + content: "\e63b"; +} + +.icon-cancle_fullscreen::before { + content: "\e63c"; +} + +.icon-quanyujiansuo_nor::before { + content: "\e639"; +} + +.icon-guijihuisu_nor::before { + content: "\e63a"; +} + diff --git a/packages/icon/es/font/iconfont.js b/packages/icon/es/font/iconfont.js new file mode 100644 index 0000000..6af13ff --- /dev/null +++ b/packages/icon/es/font/iconfont.js @@ -0,0 +1 @@ +window._iconfont_svg_string_1739270='',function(h){var a=(a=document.getElementsByTagName("script"))[a.length-1],l=a.getAttribute("data-injectcss"),a=a.getAttribute("data-disable-injectsvg");if(!a){var c,_i,o,z,t,m=function m(a,l){l.parentNode.insertBefore(a,l);};if(l&&!h.__iconfont__svg__cssinject__){h.__iconfont__svg__cssinject__=!0;try{document.write("");}catch(a){console&&console.log(a);}}c=function c(){var a,l=document.createElement("div");l.innerHTML=h._iconfont_svg_string_1739270,(l=l.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",l=l,(a=document.body).firstChild?m(l,a.firstChild):a.appendChild(l));},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(_i=function i(){document.removeEventListener("DOMContentLoaded",_i,!1),c();},document.addEventListener("DOMContentLoaded",_i,!1)):document.attachEvent&&(o=c,z=h.document,t=!1,v(),z.onreadystatechange=function(){"complete"==z.readyState&&(z.onreadystatechange=null,p());});}function p(){t||(t=!0,o());}function v(){try{z.documentElement.doScroll("left");}catch(a){return void setTimeout(v,50);}p();}}(window); \ No newline at end of file diff --git a/packages/icon/es/font/iconfont.json b/packages/icon/es/font/iconfont.json new file mode 100644 index 0000000..8466528 --- /dev/null +++ b/packages/icon/es/font/iconfont.json @@ -0,0 +1,3033 @@ +{ + "id": "1739270", + "name": "蜂鸟实时布控系统", + "font_family": "iconfont", + "css_prefix_text": "icon-", + "description": "", + "glyphs": [ + { + "icon_id": "39554305", + "name": "设置", + "font_class": "shezhi1", + "unicode": "e7fb", + "unicode_decimal": 59387 + }, + { + "icon_id": "39554304", + "name": "播放", + "font_class": "bofang1", + "unicode": "e7fc", + "unicode_decimal": 59388 + }, + { + "icon_id": "39554349", + "name": "暂停", + "font_class": "zanting2", + "unicode": "e7fa", + "unicode_decimal": 59386 + }, + { + "icon_id": "38794757", + "name": "帮助", + "font_class": "bangzhu2", + "unicode": "e7f9", + "unicode_decimal": 59385 + }, + { + "icon_id": "38736535", + "name": "导出", + "font_class": "daochu2", + "unicode": "e7f7", + "unicode_decimal": 59383 + }, + { + "icon_id": "38736534", + "name": "导入", + "font_class": "daoru1", + "unicode": "e7f8", + "unicode_decimal": 59384 + }, + { + "icon_id": "38439162", + "name": "金东logo", + "font_class": "jindonglogo", + "unicode": "e7f6", + "unicode_decimal": 59382 + }, + { + "icon_id": "38353195", + "name": "管控预警select", + "font_class": "guankongyujingselect", + "unicode": "e7ef", + "unicode_decimal": 59375 + }, + { + "icon_id": "38353194", + "name": "管控预警nor", + "font_class": "guankongyujingnor", + "unicode": "e7f0", + "unicode_decimal": 59376 + }, + { + "icon_id": "38353193", + "name": "管控预案nor", + "font_class": "guankongyuannor", + "unicode": "e7f1", + "unicode_decimal": 59377 + }, + { + "icon_id": "38353188", + "name": "圈层预案select备份", + "font_class": "quancengyuanselectbeifen", + "unicode": "e7f2", + "unicode_decimal": 59378 + }, + { + "icon_id": "38353187", + "name": "圈层预警nor", + "font_class": "quancengyujingnor", + "unicode": "e7f3", + "unicode_decimal": 59379 + }, + { + "icon_id": "38353186", + "name": "圈层预案nor", + "font_class": "quancengyuannor", + "unicode": "e7f4", + "unicode_decimal": 59380 + }, + { + "icon_id": "38353185", + "name": "圈层预案select", + "font_class": "quancengyuanselect", + "unicode": "e7f5", + "unicode_decimal": 59381 + }, + { + "icon_id": "38353196", + "name": "管控预案select", + "font_class": "guankongyuanselect", + "unicode": "e7ee", + "unicode_decimal": 59374 + }, + { + "icon_id": "37989025", + "name": "金东", + "font_class": "jindong", + "unicode": "e7ed", + "unicode_decimal": 59373 + }, + { + "icon_id": "36344792", + "name": "档案详情_行为分析", + "font_class": "danganxiangqing_hangweifenxi", + "unicode": "e78d", + "unicode_decimal": 59277 + }, + { + "icon_id": "36344793", + "name": "档案详情_数据感知", + "font_class": "danganxiangqing_shujuganzhi", + "unicode": "e78e", + "unicode_decimal": 59278 + }, + { + "icon_id": "36344794", + "name": "档案详情_活动轨迹", + "font_class": "danganxiangqing_huodongguiji", + "unicode": "e78f", + "unicode_decimal": 59279 + }, + { + "icon_id": "36344795", + "name": "档案详情_基本信息", + "font_class": "danganxiangqing_jibenxinxi", + "unicode": "e7ea", + "unicode_decimal": 59370 + }, + { + "icon_id": "36344796", + "name": "档案详情_附属物品", + "font_class": "danganxiangqing_fushuwupin", + "unicode": "e7eb", + "unicode_decimal": 59371 + }, + { + "icon_id": "36344797", + "name": "档案详情_技战应用", + "font_class": "danganxiangqing_jizhanyingyong", + "unicode": "e7ec", + "unicode_decimal": 59372 + }, + { + "icon_id": "36101866", + "name": "加入档案库", + "font_class": "jiarudanganku", + "unicode": "e787", + "unicode_decimal": 59271 + }, + { + "icon_id": "36091918", + "name": "档案库nor", + "font_class": "dangankunor", + "unicode": "e793", + "unicode_decimal": 59283 + }, + { + "icon_id": "36091919", + "name": "布控任务select", + "font_class": "bukongrenwuselect", + "unicode": "e799", + "unicode_decimal": 59289 + }, + { + "icon_id": "36091920", + "name": "布控任务nor", + "font_class": "bukongrenwunor1", + "unicode": "e79a", + "unicode_decimal": 59290 + }, + { + "icon_id": "36091921", + "name": "档案库select", + "font_class": "dangankuselect", + "unicode": "e79b", + "unicode_decimal": 59291 + }, + { + "icon_id": "36091922", + "name": "技战法nor", + "font_class": "jizhanfanor", + "unicode": "e79c", + "unicode_decimal": 59292 + }, + { + "icon_id": "36091923", + "name": "非机动车查询nor", + "font_class": "feijidongchechaxunnor", + "unicode": "e79d", + "unicode_decimal": 59293 + }, + { + "icon_id": "36091924", + "name": "机动车查询select", + "font_class": "jidongchechaxunselect", + "unicode": "e79e", + "unicode_decimal": 59294 + }, + { + "icon_id": "36091925", + "name": "离线分析select 2", + "font_class": "a-lixianfenxiselect2", + "unicode": "e7a1", + "unicode_decimal": 59297 + }, + { + "icon_id": "36091926", + "name": "回溯分析select", + "font_class": "huisufenxiselect", + "unicode": "e7a2", + "unicode_decimal": 59298 + }, + { + "icon_id": "36091927", + "name": "技战法select", + "font_class": "jizhanfaselect", + "unicode": "e7a3", + "unicode_decimal": 59299 + }, + { + "icon_id": "36091928", + "name": "目标检索nor", + "font_class": "mubiaojiansuonor", + "unicode": "e7ae", + "unicode_decimal": 59310 + }, + { + "icon_id": "36091929", + "name": "路人库select", + "font_class": "lurenkuselect", + "unicode": "e7b1", + "unicode_decimal": 59313 + }, + { + "icon_id": "36091930", + "name": "数据驾驶舱select", + "font_class": "shujujiashicangselect", + "unicode": "e7b2", + "unicode_decimal": 59314 + }, + { + "icon_id": "36091931", + "name": "实时解析select", + "font_class": "shishijiexiselect", + "unicode": "e7b4", + "unicode_decimal": 59316 + }, + { + "icon_id": "36091932", + "name": "实时解析nor", + "font_class": "shishijiexinor", + "unicode": "e7b9", + "unicode_decimal": 59321 + }, + { + "icon_id": "36091933", + "name": "机动车查询nor", + "font_class": "jidongchechaxunnor", + "unicode": "e7c1", + "unicode_decimal": 59329 + }, + { + "icon_id": "36091934", + "name": "路人库nor", + "font_class": "lurenkunor1", + "unicode": "e7cf", + "unicode_decimal": 59343 + }, + { + "icon_id": "36091935", + "name": "目标特征查询nor", + "font_class": "mubiaotezhengchaxunnor", + "unicode": "e7e1", + "unicode_decimal": 59361 + }, + { + "icon_id": "36091936", + "name": "预警记录select", + "font_class": "yujingjiluselect", + "unicode": "e7e2", + "unicode_decimal": 59362 + }, + { + "icon_id": "36091937", + "name": "目标特征查询select", + "font_class": "mubiaotezhengchaxunselect", + "unicode": "e7e3", + "unicode_decimal": 59363 + }, + { + "icon_id": "36091938", + "name": "非机动车查询select", + "font_class": "feijidongchechaxunselect", + "unicode": "e7e4", + "unicode_decimal": 59364 + }, + { + "icon_id": "36091939", + "name": "预警记录nor", + "font_class": "yujingjilunor", + "unicode": "e7e5", + "unicode_decimal": 59365 + }, + { + "icon_id": "36091940", + "name": "离线分析select", + "font_class": "lixianfenxiselect", + "unicode": "e7e6", + "unicode_decimal": 59366 + }, + { + "icon_id": "36091941", + "name": "回溯分析nor", + "font_class": "huisufenxinor", + "unicode": "e7e7", + "unicode_decimal": 59367 + }, + { + "icon_id": "36091942", + "name": "数据驾驶舱nor", + "font_class": "shujujiashicangnor", + "unicode": "e7e8", + "unicode_decimal": 59368 + }, + { + "icon_id": "36091943", + "name": "目标检索select", + "font_class": "mubiaojiansuoselect", + "unicode": "e7e9", + "unicode_decimal": 59369 + }, + { + "icon_id": "35927785", + "name": "框选工具", + "font_class": "kuangxuangongju", + "unicode": "e796", + "unicode_decimal": 59286 + }, + { + "icon_id": "35652507", + "name": "蜂鸟", + "font_class": "fengniao", + "unicode": "e792", + "unicode_decimal": 59282 + }, + { + "icon_id": "35648087", + "name": "展开", + "font_class": "zhankai", + "unicode": "e790", + "unicode_decimal": 59280 + }, + { + "icon_id": "35648088", + "name": "收起", + "font_class": "shouqi", + "unicode": "e791", + "unicode_decimal": 59281 + }, + { + "icon_id": "6056161", + "name": "时间", + "font_class": "shijian", + "unicode": "e786", + "unicode_decimal": 59270 + }, + { + "icon_id": "16105260", + "name": "定位", + "font_class": "dingwei2", + "unicode": "e613", + "unicode_decimal": 58899 + }, + { + "icon_id": "34994072", + "name": "人员", + "font_class": "renyuan", + "unicode": "e784", + "unicode_decimal": 59268 + }, + { + "icon_id": "34994073", + "name": "后台", + "font_class": "houtai", + "unicode": "e785", + "unicode_decimal": 59269 + }, + { + "icon_id": "34324424", + "name": "左", + "font_class": "zuo", + "unicode": "e781", + "unicode_decimal": 59265 + }, + { + "icon_id": "34324425", + "name": "右", + "font_class": "you", + "unicode": "e783", + "unicode_decimal": 59267 + }, + { + "icon_id": "33566924", + "name": "卡口", + "font_class": "kakou", + "unicode": "e780", + "unicode_decimal": 59264 + }, + { + "icon_id": "33541952", + "name": "预警", + "font_class": "yujing1", + "unicode": "e77e", + "unicode_decimal": 59262 + }, + { + "icon_id": "32497852", + "name": "预案", + "font_class": "yuan2", + "unicode": "e77d", + "unicode_decimal": 59261 + }, + { + "icon_id": "32189295", + "name": "模型碰撞", + "font_class": "moxingpengzhuang", + "unicode": "e777", + "unicode_decimal": 59255 + }, + { + "icon_id": "32189296", + "name": "模型碰撞nor", + "font_class": "moxingpengzhuangnor", + "unicode": "e778", + "unicode_decimal": 59256 + }, + { + "icon_id": "32189298", + "name": "路人库", + "font_class": "lurenku", + "unicode": "e77b", + "unicode_decimal": 59259 + }, + { + "icon_id": "32190455", + "name": "路人库nor", + "font_class": "lurenkunor", + "unicode": "e77c", + "unicode_decimal": 59260 + }, + { + "icon_id": "32477562", + "name": "实名", + "font_class": "shiming", + "unicode": "e776", + "unicode_decimal": 59254 + }, + { + "icon_id": "32356230", + "name": "缩小", + "font_class": "suoxiao2", + "unicode": "e774", + "unicode_decimal": 59252 + }, + { + "icon_id": "32356231", + "name": "放大", + "font_class": "fangda1", + "unicode": "e775", + "unicode_decimal": 59253 + }, + { + "icon_id": "32305021", + "name": "关闭", + "font_class": "guanbi2", + "unicode": "e772", + "unicode_decimal": 59250 + }, + { + "icon_id": "32305022", + "name": "返回", + "font_class": "fanhui1", + "unicode": "e773", + "unicode_decimal": 59251 + }, + { + "icon_id": "31879940", + "name": "线索摸排", + "font_class": "xiansuomopai", + "unicode": "e76f", + "unicode_decimal": 59247 + }, + { + "icon_id": "31879931", + "name": "线索摸排nor", + "font_class": "xiansuomopainor", + "unicode": "e76e", + "unicode_decimal": 59246 + }, + { + "icon_id": "31879839", + "name": "闸机预警", + "font_class": "zhajiyujing", + "unicode": "e770", + "unicode_decimal": 59248 + }, + { + "icon_id": "31879840", + "name": "闸机预警nor", + "font_class": "zhajiyujingnor", + "unicode": "e771", + "unicode_decimal": 59249 + }, + { + "icon_id": "31879545", + "name": "追踪配置", + "font_class": "zhuizongpeizhi", + "unicode": "e76c", + "unicode_decimal": 59244 + }, + { + "icon_id": "31879546", + "name": "追踪配置nor", + "font_class": "zhuizongpeizhinor", + "unicode": "e76d", + "unicode_decimal": 59245 + }, + { + "icon_id": "31298167", + "name": "大屏切换 ", + "font_class": "dapingqiehuan", + "unicode": "e76b", + "unicode_decimal": 59243 + }, + { + "icon_id": "31293396", + "name": "选择", + "font_class": "xuanze", + "unicode": "e769", + "unicode_decimal": 59241 + }, + { + "icon_id": "31293397", + "name": "筛选", + "font_class": "shaixuan1", + "unicode": "e76a", + "unicode_decimal": 59242 + }, + { + "icon_id": "31281773", + "name": "车卡设备", + "font_class": "chekashebei", + "unicode": "e764", + "unicode_decimal": 59236 + }, + { + "icon_id": "31281774", + "name": "imsi设备", + "font_class": "imsishebei", + "unicode": "e765", + "unicode_decimal": 59237 + }, + { + "icon_id": "31281775", + "name": "形体设备", + "font_class": "xingtishebei", + "unicode": "e766", + "unicode_decimal": 59238 + }, + { + "icon_id": "31281776", + "name": "人脸设备", + "font_class": "renlianshebei", + "unicode": "e767", + "unicode_decimal": 59239 + }, + { + "icon_id": "31281777", + "name": "wifi设备", + "font_class": "wifishebei", + "unicode": "e768", + "unicode_decimal": 59240 + }, + { + "icon_id": "31175954", + "name": "瞄准 (2)", + "font_class": "a-miaozhun2", + "unicode": "e762", + "unicode_decimal": 59234 + }, + { + "icon_id": "31175955", + "name": "编组 19", + "font_class": "a-bianzu19", + "unicode": "e763", + "unicode_decimal": 59235 + }, + { + "icon_id": "31109996", + "name": "翻页", + "font_class": "fanye", + "unicode": "e75e", + "unicode_decimal": 59230 + }, + { + "icon_id": "31109998", + "name": "身份证", + "font_class": "shenfenzheng", + "unicode": "e75f", + "unicode_decimal": 59231 + }, + { + "icon_id": "31110000", + "name": "地址", + "font_class": "dizhi", + "unicode": "e760", + "unicode_decimal": 59232 + }, + { + "icon_id": "31110045", + "name": "关闭", + "font_class": "guanbi", + "unicode": "e761", + "unicode_decimal": 59233 + }, + { + "icon_id": "31088147", + "name": "点位", + "font_class": "dianwei1", + "unicode": "e75b", + "unicode_decimal": 59227 + }, + { + "icon_id": "30952366", + "name": "微卡口", + "font_class": "weikakou", + "unicode": "e757", + "unicode_decimal": 59223 + }, + { + "icon_id": "30952367", + "name": "微卡口nor", + "font_class": "weikakounor", + "unicode": "e758", + "unicode_decimal": 59224 + }, + { + "icon_id": "30952370", + "name": "场所码", + "font_class": "changsuoma", + "unicode": "e759", + "unicode_decimal": 59225 + }, + { + "icon_id": "30952371", + "name": "场所码nor", + "font_class": "changsuomanor", + "unicode": "e75a", + "unicode_decimal": 59226 + }, + { + "icon_id": "9974390", + "name": "预警", + "font_class": "yujing", + "unicode": "e756", + "unicode_decimal": 59222 + }, + { + "icon_id": "29552660", + "name": "检索nor", + "font_class": "jiansuonor", + "unicode": "e747", + "unicode_decimal": 59207 + }, + { + "icon_id": "29552661", + "name": "同行人分析nor", + "font_class": "tonghangrenfenxinor1", + "unicode": "e748", + "unicode_decimal": 59208 + }, + { + "icon_id": "29552662", + "name": "智能研判nor", + "font_class": "zhinengyanpannor", + "unicode": "e749", + "unicode_decimal": 59209 + }, + { + "icon_id": "29552663", + "name": "布控预警nor", + "font_class": "bukongyujingnor", + "unicode": "e74a", + "unicode_decimal": 59210 + }, + { + "icon_id": "29552664", + "name": "布控任务nor", + "font_class": "bukongrenwunor", + "unicode": "e74b", + "unicode_decimal": 59211 + }, + { + "icon_id": "29552665", + "name": "电子地图nor", + "font_class": "dianziditunor", + "unicode": "e754", + "unicode_decimal": 59220 + }, + { + "icon_id": "29552666", + "name": "追踪nor", + "font_class": "zhuizongnor1", + "unicode": "e755", + "unicode_decimal": 59221 + }, + { + "icon_id": "29552487", + "name": "追踪", + "font_class": "zhuizong1", + "unicode": "e746", + "unicode_decimal": 59206 + }, + { + "icon_id": "29552240", + "name": "布控任务", + "font_class": "bukongrenwu3", + "unicode": "e74c", + "unicode_decimal": 59212 + }, + { + "icon_id": "29552241", + "name": "电子地图", + "font_class": "dianziditu", + "unicode": "e74d", + "unicode_decimal": 59213 + }, + { + "icon_id": "29552242", + "name": "布控预警", + "font_class": "bukongyujing", + "unicode": "e750", + "unicode_decimal": 59216 + }, + { + "icon_id": "29552243", + "name": "同行人分析", + "font_class": "tonghangrenfenxi1", + "unicode": "e751", + "unicode_decimal": 59217 + }, + { + "icon_id": "29552244", + "name": "智能研判", + "font_class": "zhinengyanpan", + "unicode": "e752", + "unicode_decimal": 59218 + }, + { + "icon_id": "29552245", + "name": "检索", + "font_class": "jiansuo1", + "unicode": "e753", + "unicode_decimal": 59219 + }, + { + "icon_id": "29416924", + "name": "开启聚类", + "font_class": "kaiqijulei", + "unicode": "e745", + "unicode_decimal": 59205 + }, + { + "icon_id": "29416893", + "name": "同步", + "font_class": "tongbu", + "unicode": "e744", + "unicode_decimal": 59204 + }, + { + "icon_id": "28913138", + "name": "同行人分析", + "font_class": "tonghangrenfenxi", + "unicode": "e743", + "unicode_decimal": 59203 + }, + { + "icon_id": "28913111", + "name": "同行人分析nor", + "font_class": "tonghangrenfenxinor", + "unicode": "e742", + "unicode_decimal": 59202 + }, + { + "icon_id": "28603735", + "name": "技战应用", + "font_class": "jizhanyingyong", + "unicode": "e741", + "unicode_decimal": 59201 + }, + { + "icon_id": "28122666", + "name": "海康人脸布控nor", + "font_class": "haikangrenlianbukongnor", + "unicode": "e740", + "unicode_decimal": 59200 + }, + { + "icon_id": "28122657", + "name": "海康人脸布控", + "font_class": "haikangrenlianbukong", + "unicode": "e73f", + "unicode_decimal": 59199 + }, + { + "icon_id": "28028942", + "name": "拓展手段提示", + "font_class": "tuozhanshouduantishi", + "unicode": "e73e", + "unicode_decimal": 59198 + }, + { + "icon_id": "28022750", + "name": "返回摸排列表", + "font_class": "fanhuimopailiebiao", + "unicode": "e73d", + "unicode_decimal": 59197 + }, + { + "icon_id": "26859533", + "name": "头盔检测nor", + "font_class": "toukuijiancenor", + "unicode": "e73c", + "unicode_decimal": 59196 + }, + { + "icon_id": "26859527", + "name": "头盔检测", + "font_class": "toukuijiance", + "unicode": "e718", + "unicode_decimal": 59160 + }, + { + "icon_id": "26859240", + "name": "追形", + "font_class": "zhuixing", + "unicode": "e717", + "unicode_decimal": 59159 + }, + { + "icon_id": "26840606", + "name": "提示", + "font_class": "tishi4", + "unicode": "e73b", + "unicode_decimal": 59195 + }, + { + "icon_id": "26691196", + "name": "筛选(飞机)", + "font_class": "a-shaixuanfeiji", + "unicode": "e733", + "unicode_decimal": 59187 + }, + { + "icon_id": "26690614", + "name": "自动调整范围(飞机)", + "font_class": "a-zidongtiaozhengfanweifeiji", + "unicode": "e73a", + "unicode_decimal": 59194 + }, + { + "icon_id": "26630396", + "name": "盒子运维", + "font_class": "heziyunwei", + "unicode": "e739", + "unicode_decimal": 59193 + }, + { + "icon_id": "26620389", + "name": "切换", + "font_class": "qiehuan", + "unicode": "e738", + "unicode_decimal": 59192 + }, + { + "icon_id": "26523829", + "name": "第三方消息nor", + "font_class": "disanfangxiaoxinor", + "unicode": "e737", + "unicode_decimal": 59191 + }, + { + "icon_id": "26523827", + "name": "第三方消息", + "font_class": "disanfangxiaoxi", + "unicode": "e736", + "unicode_decimal": 59190 + }, + { + "icon_id": "25930570", + "name": "导航", + "font_class": "daohang", + "unicode": "e735", + "unicode_decimal": 59189 + }, + { + "icon_id": "25930569", + "name": "用户", + "font_class": "yonghu", + "unicode": "e734", + "unicode_decimal": 59188 + }, + { + "icon_id": "25878393", + "name": "飞机", + "font_class": "feiji", + "unicode": "e732", + "unicode_decimal": 59186 + }, + { + "icon_id": "25809480", + "name": "结束追踪", + "font_class": "jieshuzhuizong", + "unicode": "e730", + "unicode_decimal": 59184 + }, + { + "icon_id": "25809481", + "name": "回溯周边", + "font_class": "huisuzhoubian", + "unicode": "e731", + "unicode_decimal": 59185 + }, + { + "icon_id": "25809477", + "name": "继续追踪", + "font_class": "jixuzhuizong", + "unicode": "e72d", + "unicode_decimal": 59181 + }, + { + "icon_id": "25809478", + "name": "调整范围", + "font_class": "tiaozhengfanwei", + "unicode": "e72e", + "unicode_decimal": 59182 + }, + { + "icon_id": "25809479", + "name": "检索", + "font_class": "jiansuo", + "unicode": "e72f", + "unicode_decimal": 59183 + }, + { + "icon_id": "25796784", + "name": "轨迹", + "font_class": "guiji", + "unicode": "e72c", + "unicode_decimal": 59180 + }, + { + "icon_id": "25796636", + "name": "基础信息", + "font_class": "jichuxinxi", + "unicode": "e72b", + "unicode_decimal": 59179 + }, + { + "icon_id": "25796635", + "name": "档案摘要", + "font_class": "danganzhaiyao", + "unicode": "e72a", + "unicode_decimal": 59178 + }, + { + "icon_id": "25778781", + "name": "精准布控icon_on", + "font_class": "jingzhunbukongicon_on", + "unicode": "e728", + "unicode_decimal": 59176 + }, + { + "icon_id": "25778782", + "name": "精准布控icon_off", + "font_class": "jingzhunbukongicon_off", + "unicode": "e729", + "unicode_decimal": 59177 + }, + { + "icon_id": "25528851", + "name": "跳转", + "font_class": "tiaozhuan", + "unicode": "e727", + "unicode_decimal": 59175 + }, + { + "icon_id": "25364398", + "name": "设置", + "font_class": "shezhi", + "unicode": "e726", + "unicode_decimal": 59174 + }, + { + "icon_id": "25364282", + "name": "帮助", + "font_class": "bangzhu1", + "unicode": "e725", + "unicode_decimal": 59173 + }, + { + "icon_id": "25156298", + "name": "刷新", + "font_class": "shuaxin1", + "unicode": "e724", + "unicode_decimal": 59172 + }, + { + "icon_id": "25011432", + "name": "多素材备份", + "font_class": "duosucaibeifen", + "unicode": "e722", + "unicode_decimal": 59170 + }, + { + "icon_id": "25011433", + "name": "多素材", + "font_class": "duosucai", + "unicode": "e723", + "unicode_decimal": 59171 + }, + { + "icon_id": "24963746", + "name": "数据统计", + "font_class": "shujutongji", + "unicode": "e721", + "unicode_decimal": 59169 + }, + { + "icon_id": "24944893", + "name": "人脸", + "font_class": "renlian", + "unicode": "e71c", + "unicode_decimal": 59164 + }, + { + "icon_id": "24944894", + "name": "形体", + "font_class": "xingti", + "unicode": "e71d", + "unicode_decimal": 59165 + }, + { + "icon_id": "24944895", + "name": "机动车", + "font_class": "jidongche", + "unicode": "e71e", + "unicode_decimal": 59166 + }, + { + "icon_id": "24944896", + "name": "回溯分析", + "font_class": "huisufenxi4", + "unicode": "e71f", + "unicode_decimal": 59167 + }, + { + "icon_id": "24944897", + "name": "离线分析", + "font_class": "lixianfenxi4", + "unicode": "e720", + "unicode_decimal": 59168 + }, + { + "icon_id": "24944892", + "name": "非机动车", + "font_class": "feijidongche", + "unicode": "e71b", + "unicode_decimal": 59163 + }, + { + "icon_id": "24936781", + "name": "数据大屏", + "font_class": "shujudaping", + "unicode": "e71a", + "unicode_decimal": 59162 + }, + { + "icon_id": "24913034", + "name": "配置算法", + "font_class": "peizhisuanfa", + "unicode": "e719", + "unicode_decimal": 59161 + }, + { + "icon_id": "24685855", + "name": "追踪", + "font_class": "zhuizong", + "unicode": "e715", + "unicode_decimal": 59157 + }, + { + "icon_id": "24685856", + "name": "追踪nor", + "font_class": "zhuizongnor", + "unicode": "e716", + "unicode_decimal": 59158 + }, + { + "icon_id": "24661441", + "name": "点位", + "font_class": "dianwei", + "unicode": "e714", + "unicode_decimal": 59156 + }, + { + "icon_id": "24661326", + "name": "Container", + "font_class": "Container", + "unicode": "e713", + "unicode_decimal": 59155 + }, + { + "icon_id": "24661126", + "name": "Attachment", + "font_class": "Attachment", + "unicode": "e712", + "unicode_decimal": 59154 + }, + { + "icon_id": "24630118", + "name": "叉", + "font_class": "cha", + "unicode": "e711", + "unicode_decimal": 59153 + }, + { + "icon_id": "24630116", + "name": "勾", + "font_class": "gou", + "unicode": "e710", + "unicode_decimal": 59152 + }, + { + "icon_id": "24630033", + "name": "导入", + "font_class": "daoru", + "unicode": "e70f", + "unicode_decimal": 59151 + }, + { + "icon_id": "24607250", + "name": "全息检索", + "font_class": "quanxijiansuo", + "unicode": "e70e", + "unicode_decimal": 59150 + }, + { + "icon_id": "24604837", + "name": "查看监控", + "font_class": "chakanjiankong", + "unicode": "e70c", + "unicode_decimal": 59148 + }, + { + "icon_id": "24604704", + "name": "提示", + "font_class": "tishi3", + "unicode": "e70d", + "unicode_decimal": 59149 + }, + { + "icon_id": "24604626", + "name": "黑夜模式", + "font_class": "heiyemoshi", + "unicode": "e70b", + "unicode_decimal": 59147 + }, + { + "icon_id": "24604623", + "name": "正常模式", + "font_class": "zhengchangmoshi", + "unicode": "e70a", + "unicode_decimal": 59146 + }, + { + "icon_id": "24554896", + "name": "定位", + "font_class": "dingwei1", + "unicode": "e709", + "unicode_decimal": 59145 + }, + { + "icon_id": "24442799", + "name": "排序", + "font_class": "paixu", + "unicode": "e708", + "unicode_decimal": 59144 + }, + { + "icon_id": "24420402", + "name": "添加预案", + "font_class": "tianjiayuan", + "unicode": "e707", + "unicode_decimal": 59143 + }, + { + "icon_id": "23916590", + "name": "聚类档案库nor", + "font_class": "juleidangankunor", + "unicode": "e705", + "unicode_decimal": 59141 + }, + { + "icon_id": "23916591", + "name": "聚类档案库", + "font_class": "juleidanganku", + "unicode": "e706", + "unicode_decimal": 59142 + }, + { + "icon_id": "23499142", + "name": "关联", + "font_class": "guanlian", + "unicode": "e704", + "unicode_decimal": 59140 + }, + { + "icon_id": "23444887", + "name": "人脸标注", + "font_class": "renlianbiaozhu", + "unicode": "e703", + "unicode_decimal": 59139 + }, + { + "icon_id": "23304285", + "name": "聚类结果", + "font_class": "juleijieguo", + "unicode": "e6ec", + "unicode_decimal": 59116 + }, + { + "icon_id": "23304286", + "name": "聚类任务nor", + "font_class": "juleirenwunor", + "unicode": "e6fb", + "unicode_decimal": 59131 + }, + { + "icon_id": "23304287", + "name": "聚类结果nor", + "font_class": "juleijieguonor", + "unicode": "e701", + "unicode_decimal": 59137 + }, + { + "icon_id": "23304288", + "name": "聚类任务", + "font_class": "juleirenwu", + "unicode": "e702", + "unicode_decimal": 59138 + }, + { + "icon_id": "20290678", + "name": "重置", + "font_class": "zhongzhi3", + "unicode": "e8ff", + "unicode_decimal": 59647 + }, + { + "icon_id": "23210742", + "name": "旋转", + "font_class": "xuanzhuan1", + "unicode": "e6fd", + "unicode_decimal": 59133 + }, + { + "icon_id": "23254545", + "name": "双目标注", + "font_class": "shuangmubiaozhu1", + "unicode": "e700", + "unicode_decimal": 59136 + }, + { + "icon_id": "23203403", + "name": "手动框选", + "font_class": "shoudongkuangxuan", + "unicode": "e6f9", + "unicode_decimal": 59129 + }, + { + "icon_id": "23234078", + "name": "暂停", + "font_class": "zanting1", + "unicode": "e6fe", + "unicode_decimal": 59134 + }, + { + "icon_id": "23234079", + "name": "中止", + "font_class": "zhongzhi1", + "unicode": "e6ff", + "unicode_decimal": 59135 + }, + { + "icon_id": "23203404", + "name": "手动", + "font_class": "shoudong", + "unicode": "e6fa", + "unicode_decimal": 59130 + }, + { + "icon_id": "23203406", + "name": "自动", + "font_class": "zidong", + "unicode": "e6fc", + "unicode_decimal": 59132 + }, + { + "icon_id": "23203224", + "name": "诊断", + "font_class": "zhenduan", + "unicode": "e6f8", + "unicode_decimal": 59128 + }, + { + "icon_id": "23203126", + "name": "Check-Circle-Fill", + "font_class": "Check-Circle-Fill1", + "unicode": "e6f3", + "unicode_decimal": 59123 + }, + { + "icon_id": "23203127", + "name": "Info--Circle-Fill", + "font_class": "Info--Circle-Fill", + "unicode": "e6f4", + "unicode_decimal": 59124 + }, + { + "icon_id": "23203128", + "name": "Close-Circle-Fill", + "font_class": "Close-Circle-Fill", + "unicode": "e6f5", + "unicode_decimal": 59125 + }, + { + "icon_id": "23203129", + "name": "Warning-Circle-Fill", + "font_class": "Warning-Circle-Fill", + "unicode": "e6f6", + "unicode_decimal": 59126 + }, + { + "icon_id": "23203130", + "name": "Question-Circle-Fill", + "font_class": "Question-Circle-Fill", + "unicode": "e6f7", + "unicode_decimal": 59127 + }, + { + "icon_id": "23071890", + "name": "暂存架", + "font_class": "zancunjia", + "unicode": "e6f2", + "unicode_decimal": 59122 + }, + { + "icon_id": "22907690", + "name": "Check-Circle-Fill", + "font_class": "Check-Circle-Fill", + "unicode": "e6f1", + "unicode_decimal": 59121 + }, + { + "icon_id": "22884339", + "name": "图片集", + "font_class": "tupianji", + "unicode": "e6f0", + "unicode_decimal": 59120 + }, + { + "icon_id": "22871348", + "name": "全屏", + "font_class": "quanping1", + "unicode": "e6ed", + "unicode_decimal": 59117 + }, + { + "icon_id": "22871349", + "name": "音量", + "font_class": "yinliang", + "unicode": "e6ee", + "unicode_decimal": 59118 + }, + { + "icon_id": "22871350", + "name": "缩小", + "font_class": "suoxiao1", + "unicode": "e6ef", + "unicode_decimal": 59119 + }, + { + "icon_id": "22658169", + "name": "home", + "font_class": "home", + "unicode": "e6eb", + "unicode_decimal": 59115 + }, + { + "icon_id": "22658130", + "name": "最小化", + "font_class": "zuixiaohua", + "unicode": "e6e9", + "unicode_decimal": 59113 + }, + { + "icon_id": "22658131", + "name": "最大化", + "font_class": "zuidahua", + "unicode": "e6ea", + "unicode_decimal": 59114 + }, + { + "icon_id": "22658054", + "name": "标准化", + "font_class": "biaozhunhua", + "unicode": "e6e6", + "unicode_decimal": 59110 + }, + { + "icon_id": "22544357", + "name": "聚类", + "font_class": "julei", + "unicode": "e6e5", + "unicode_decimal": 59109 + }, + { + "icon_id": "21829058", + "name": "密码可见", + "font_class": "bianzu", + "unicode": "e6e7", + "unicode_decimal": 59111 + }, + { + "icon_id": "21829059", + "name": "密码不可见", + "font_class": "bianzu3", + "unicode": "e6e8", + "unicode_decimal": 59112 + }, + { + "icon_id": "21780473", + "name": "编组 7", + "font_class": "bianzu7", + "unicode": "e6e3", + "unicode_decimal": 59107 + }, + { + "icon_id": "21780474", + "name": "编组 2", + "font_class": "bianzu2", + "unicode": "e6e4", + "unicode_decimal": 59108 + }, + { + "icon_id": "21738272", + "name": "卡片切换", + "font_class": "kapianqiehuan", + "unicode": "e6e2", + "unicode_decimal": 59106 + }, + { + "icon_id": "21695431", + "name": "多边形", + "font_class": "duobianxing1", + "unicode": "e6e0", + "unicode_decimal": 59104 + }, + { + "icon_id": "21695432", + "name": "方", + "font_class": "fang1", + "unicode": "e6e1", + "unicode_decimal": 59105 + }, + { + "icon_id": "21695430", + "name": "圆", + "font_class": "yuan1", + "unicode": "e6df", + "unicode_decimal": 59103 + }, + { + "icon_id": "21695426", + "name": "测距离", + "font_class": "cejuli", + "unicode": "e6de", + "unicode_decimal": 59102 + }, + { + "icon_id": "21694880", + "name": "网格框选nor", + "font_class": "wanggekuangxuannor", + "unicode": "e6dc", + "unicode_decimal": 59100 + }, + { + "icon_id": "21694881", + "name": "路径框选nor", + "font_class": "lujingkuangxuannor", + "unicode": "e6dd", + "unicode_decimal": 59101 + }, + { + "icon_id": "21600424", + "name": "穿梭", + "font_class": "chuansuo", + "unicode": "e6db", + "unicode_decimal": 59099 + }, + { + "icon_id": "21248188", + "name": "边缘盒子", + "font_class": "bianyuanhezinor", + "unicode": "e6d8", + "unicode_decimal": 59096 + }, + { + "icon_id": "21248189", + "name": "误检库", + "font_class": "wujiankuhov", + "unicode": "e6d9", + "unicode_decimal": 59097 + }, + { + "icon_id": "21248190", + "name": "操作日志", + "font_class": "caozuorizhinor", + "unicode": "e6da", + "unicode_decimal": 59098 + }, + { + "icon_id": "13838312", + "name": "collect_dot", + "font_class": "collect_dot", + "unicode": "e619", + "unicode_decimal": 58905 + }, + { + "icon_id": "20982904", + "name": "出现定位bg", + "font_class": "chuxiandingweibg", + "unicode": "e6d4", + "unicode_decimal": 59092 + }, + { + "icon_id": "20982905", + "name": "出现定位icon", + "font_class": "chuxiandingweiicon", + "unicode": "e6d5", + "unicode_decimal": 59093 + }, + { + "icon_id": "20982843", + "name": "摄像头定位bg", + "font_class": "shexiangtoudingweibg", + "unicode": "e6d6", + "unicode_decimal": 59094 + }, + { + "icon_id": "20982844", + "name": "摄像头定位icon", + "font_class": "shexiangtoudingweiicon", + "unicode": "e6d7", + "unicode_decimal": 59095 + }, + { + "icon_id": "20933994", + "name": "下发结果", + "font_class": "xiafajieguo", + "unicode": "e6d2", + "unicode_decimal": 59090 + }, + { + "icon_id": "20933996", + "name": "导出", + "font_class": "daochu1", + "unicode": "e6d3", + "unicode_decimal": 59091 + }, + { + "icon_id": "20933901", + "name": "最近出现", + "font_class": "zuijinchuxian", + "unicode": "e6cc", + "unicode_decimal": 59084 + }, + { + "icon_id": "20933902", + "name": "累计抓拍", + "font_class": "leijizhuapai", + "unicode": "e6d0", + "unicode_decimal": 59088 + }, + { + "icon_id": "20933907", + "name": "异常事件", + "font_class": "yichangshijian", + "unicode": "e6d1", + "unicode_decimal": 59089 + }, + { + "icon_id": "20925063", + "name": "定位", + "font_class": "dingwei", + "unicode": "e6cb", + "unicode_decimal": 59083 + }, + { + "icon_id": "20894407", + "name": "图片", + "font_class": "tupian", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "20433461", + "name": "失败原因", + "font_class": "wenti", + "unicode": "e6ac", + "unicode_decimal": 59052 + }, + { + "icon_id": "20432083", + "name": "点位-已选中", + "font_class": "lixian1", + "unicode": "e6ab", + "unicode_decimal": 59051 + }, + { + "icon_id": "20415322", + "name": "异常", + "font_class": "yichang", + "unicode": "e6a8", + "unicode_decimal": 59048 + }, + { + "icon_id": "19332242", + "name": "追形-修改点位", + "font_class": "zhuixing-xiugaidianwei", + "unicode": "e6a7", + "unicode_decimal": 59047 + }, + { + "icon_id": "19049729", + "name": "问号", + "font_class": "wenhao1", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "19041610", + "name": "地图_定位", + "font_class": "ditu_dingwei", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "19041571", + "name": "地图_放大", + "font_class": "ditu_fangda", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "19041572", + "name": "地图_缩小", + "font_class": "ditu_suoxiao", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "19039288", + "name": "查看布控任务", + "font_class": "chakanbukongrenwu", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "18985662", + "name": "裂图", + "font_class": "lietu", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "18907313", + "name": "重置", + "font_class": "zhongzhi", + "unicode": "e67e", + "unicode_decimal": 59006 + }, + { + "icon_id": "18907314", + "name": "下拉大", + "font_class": "xialada", + "unicode": "e67f", + "unicode_decimal": 59007 + }, + { + "icon_id": "18905520", + "name": "智能关联_形体", + "font_class": "zhinengguanlian_xingti", + "unicode": "e67b", + "unicode_decimal": 59003 + }, + { + "icon_id": "18905521", + "name": "智能关联_人脸", + "font_class": "zhinengguanlian_renlian", + "unicode": "e67c", + "unicode_decimal": 59004 + }, + { + "icon_id": "16018461", + "name": "下箭头", + "font_class": "xiajiantou", + "unicode": "e75c", + "unicode_decimal": 59228 + }, + { + "icon_id": "18885308", + "name": "智能关联_小箭头", + "font_class": "zhinengguanlian_xiaojiantou", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "18883781", + "name": "智能关联_箭头", + "font_class": "zhinengguanlian_jiantou", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "16018463", + "name": "上箭头", + "font_class": "shangjiantou", + "unicode": "e75d", + "unicode_decimal": 59229 + }, + { + "icon_id": "18686782", + "name": "版本信息", + "font_class": "banbenxinxi", + "unicode": "e679", + "unicode_decimal": 59001 + }, + { + "icon_id": "1330924", + "name": "问号", + "font_class": "wenhao", + "unicode": "e61f", + "unicode_decimal": 58911 + }, + { + "icon_id": "17614568", + "name": "编辑人员", + "font_class": "bianjirenyuan", + "unicode": "e7e0", + "unicode_decimal": 59360 + }, + { + "icon_id": "17416216", + "name": "提示", + "font_class": "tishi2", + "unicode": "e7df", + "unicode_decimal": 59359 + }, + { + "icon_id": "17292128", + "name": "摄像机", + "font_class": "shexiangji2", + "unicode": "e7de", + "unicode_decimal": 59358 + }, + { + "icon_id": "17255570", + "name": "轨迹追踪", + "font_class": "guijizhuizong", + "unicode": "e7dd", + "unicode_decimal": 59357 + }, + { + "icon_id": "17255389", + "name": "截帧", + "font_class": "jiezhen1", + "unicode": "e7dc", + "unicode_decimal": 59356 + }, + { + "icon_id": "17254424", + "name": "添加轨迹回溯", + "font_class": "tianjiaguijihuisu", + "unicode": "e7db", + "unicode_decimal": 59355 + }, + { + "icon_id": "17251847", + "name": "停止", + "font_class": "tingzhi", + "unicode": "e7cd", + "unicode_decimal": 59341 + }, + { + "icon_id": "17251960", + "name": "包围圈", + "font_class": "baoweiquan", + "unicode": "e7ce", + "unicode_decimal": 59342 + }, + { + "icon_id": "17252131", + "name": "上传视频", + "font_class": "shangchuanshipin", + "unicode": "e7d0", + "unicode_decimal": 59344 + }, + { + "icon_id": "17252147", + "name": "移动", + "font_class": "yidong", + "unicode": "e7d1", + "unicode_decimal": 59345 + }, + { + "icon_id": "17252288", + "name": "创建新布控", + "font_class": "chuangjianxinbukong1", + "unicode": "e7d2", + "unicode_decimal": 59346 + }, + { + "icon_id": "17253015", + "name": "移除", + "font_class": "yichu1", + "unicode": "e7d3", + "unicode_decimal": 59347 + }, + { + "icon_id": "17253033", + "name": "提示", + "font_class": "tishi1", + "unicode": "e7d4", + "unicode_decimal": 59348 + }, + { + "icon_id": "17253112", + "name": "VS", + "font_class": "VS", + "unicode": "e7d5", + "unicode_decimal": 59349 + }, + { + "icon_id": "17253139", + "name": "全局总览", + "font_class": "quanjuzonglan", + "unicode": "e7d6", + "unicode_decimal": 59350 + }, + { + "icon_id": "17253187", + "name": "查看分析任务", + "font_class": "chakanfenxirenwu1", + "unicode": "e7d7", + "unicode_decimal": 59351 + }, + { + "icon_id": "17253208", + "name": "消息", + "font_class": "xiaoxi", + "unicode": "e7d8", + "unicode_decimal": 59352 + }, + { + "icon_id": "17254065", + "name": "用户名", + "font_class": "yonghuming", + "unicode": "e7d9", + "unicode_decimal": 59353 + }, + { + "icon_id": "17254204", + "name": "退出", + "font_class": "tuichu", + "unicode": "e7da", + "unicode_decimal": 59354 + }, + { + "icon_id": "17251737", + "name": "轨迹追踪nor", + "font_class": "guijizhuizongnor", + "unicode": "e7cb", + "unicode_decimal": 59339 + }, + { + "icon_id": "17251738", + "name": "轨迹追踪", + "font_class": "guijizhuizong2", + "unicode": "e7cc", + "unicode_decimal": 59340 + }, + { + "icon_id": "17190034", + "name": "布控任务", + "font_class": "bukongrenwu1", + "unicode": "e7b7", + "unicode_decimal": 59319 + }, + { + "icon_id": "17190035", + "name": "摄像机", + "font_class": "shexiangji", + "unicode": "e7b8", + "unicode_decimal": 59320 + }, + { + "icon_id": "17190037", + "name": "预警地图", + "font_class": "yujingditu", + "unicode": "e7ba", + "unicode_decimal": 59322 + }, + { + "icon_id": "17190038", + "name": "离线分析", + "font_class": "lixianfenxi2", + "unicode": "e7bb", + "unicode_decimal": 59323 + }, + { + "icon_id": "17190039", + "name": "预案管理", + "font_class": "yuanguanli1", + "unicode": "e7bc", + "unicode_decimal": 59324 + }, + { + "icon_id": "17190040", + "name": "档案库", + "font_class": "danganku", + "unicode": "e7bd", + "unicode_decimal": 59325 + }, + { + "icon_id": "17190041", + "name": "回溯分析", + "font_class": "huisufenxi2", + "unicode": "e7be", + "unicode_decimal": 59326 + }, + { + "icon_id": "17190042", + "name": "库内检索", + "font_class": "kuneijiansuo", + "unicode": "e7bf", + "unicode_decimal": 59327 + }, + { + "icon_id": "17190043", + "name": "结构化查询", + "font_class": "jiegouhuachaxun", + "unicode": "e7c0", + "unicode_decimal": 59328 + }, + { + "icon_id": "17190062", + "name": "布控任务", + "font_class": "bukongrenwu2", + "unicode": "e7c2", + "unicode_decimal": 59330 + }, + { + "icon_id": "17190063", + "name": "预案管理", + "font_class": "yuanguanli2", + "unicode": "e7c3", + "unicode_decimal": 59331 + }, + { + "icon_id": "17190064", + "name": "摄像机", + "font_class": "shexiangji1", + "unicode": "e7c4", + "unicode_decimal": 59332 + }, + { + "icon_id": "17190065", + "name": "库内检索", + "font_class": "kuneijiansuo1", + "unicode": "e7c5", + "unicode_decimal": 59333 + }, + { + "icon_id": "17190066", + "name": "离线分析", + "font_class": "lixianfenxi3", + "unicode": "e7c6", + "unicode_decimal": 59334 + }, + { + "icon_id": "17190067", + "name": "档案库", + "font_class": "danganku1", + "unicode": "e7c7", + "unicode_decimal": 59335 + }, + { + "icon_id": "17190068", + "name": "预警地图", + "font_class": "yujingditu1", + "unicode": "e7c8", + "unicode_decimal": 59336 + }, + { + "icon_id": "17190069", + "name": "回溯分析", + "font_class": "huisufenxi3", + "unicode": "e7c9", + "unicode_decimal": 59337 + }, + { + "icon_id": "17190167", + "name": "结构化查询nor", + "font_class": "jiegouhuachaxunnor", + "unicode": "e7ca", + "unicode_decimal": 59338 + }, + { + "icon_id": "17073967", + "name": "创建新布控", + "font_class": "chuangjianxinbukong", + "unicode": "e7b6", + "unicode_decimal": 59318 + }, + { + "icon_id": "16018746", + "name": "框选", + "font_class": "kuangxuan", + "unicode": "e77f", + "unicode_decimal": 59263 + }, + { + "icon_id": "16018715", + "name": "高级筛选", + "font_class": "gaojishaixuan", + "unicode": "e779", + "unicode_decimal": 59257 + }, + { + "icon_id": "16018716", + "name": "高级筛选收起", + "font_class": "gaojishaixuanshouqi", + "unicode": "e77a", + "unicode_decimal": 59258 + }, + { + "icon_id": "16924391", + "name": "布控任务", + "font_class": "bukongrenwu", + "unicode": "e7b5", + "unicode_decimal": 59317 + }, + { + "icon_id": "16018385", + "name": "日期", + "font_class": "riqi", + "unicode": "e74f", + "unicode_decimal": 59215 + }, + { + "icon_id": "16301333", + "name": "时间切换", + "font_class": "shijianqiehuan", + "unicode": "e797", + "unicode_decimal": 59287 + }, + { + "icon_id": "16905699", + "name": "授权", + "font_class": "shouquan1", + "unicode": "e7b3", + "unicode_decimal": 59315 + }, + { + "icon_id": "647455", + "name": "播放", + "font_class": "video-play", + "unicode": "e653", + "unicode_decimal": 58963 + }, + { + "icon_id": "16611521", + "name": "实时分析", + "font_class": "shishifenxi", + "unicode": "e7af", + "unicode_decimal": 59311 + }, + { + "icon_id": "16611522", + "name": "查看分析任务", + "font_class": "chakanfenxirenwu", + "unicode": "e7b0", + "unicode_decimal": 59312 + }, + { + "icon_id": "16611335", + "name": "结构化分析", + "font_class": "jiegouhuafenxi", + "unicode": "e7ad", + "unicode_decimal": 59309 + }, + { + "icon_id": "14985809", + "name": "添加轨迹", + "font_class": "tianjiaguiji2", + "unicode": "e6aa", + "unicode_decimal": 59050 + }, + { + "icon_id": "15056394", + "name": "添加检索目标", + "font_class": "tianjiajiansuomubiao", + "unicode": "e6b0", + "unicode_decimal": 59056 + }, + { + "icon_id": "14677591", + "name": "add", + "font_class": "add", + "unicode": "e661", + "unicode_decimal": 58977 + }, + { + "icon_id": "16320529", + "name": "地点", + "font_class": "didian", + "unicode": "e798", + "unicode_decimal": 59288 + }, + { + "icon_id": "16406202", + "name": "播放hov", + "font_class": "bofanghov", + "unicode": "e79f", + "unicode_decimal": 59295 + }, + { + "icon_id": "16406205", + "name": "播放", + "font_class": "bofang3", + "unicode": "e7a0", + "unicode_decimal": 59296 + }, + { + "icon_id": "16018760", + "name": "警告", + "font_class": "jinggao", + "unicode": "e788", + "unicode_decimal": 59272 + }, + { + "icon_id": "16018761", + "name": "提示", + "font_class": "tishi", + "unicode": "e789", + "unicode_decimal": 59273 + }, + { + "icon_id": "16018772", + "name": "帮助", + "font_class": "bangzhu", + "unicode": "e78a", + "unicode_decimal": 59274 + }, + { + "icon_id": "16018774", + "name": "关闭", + "font_class": "guanbi1", + "unicode": "e78b", + "unicode_decimal": 59275 + }, + { + "icon_id": "16018783", + "name": "成功", + "font_class": "chenggong", + "unicode": "e78c", + "unicode_decimal": 59276 + }, + { + "icon_id": "16438442", + "name": "前往", + "font_class": "qianwang", + "unicode": "e7ac", + "unicode_decimal": 59308 + }, + { + "icon_id": "16437744", + "name": "授权", + "font_class": "shouquan", + "unicode": "e7ab", + "unicode_decimal": 59307 + }, + { + "icon_id": "16436820", + "name": "经纬度", + "font_class": "jingweidu", + "unicode": "e7aa", + "unicode_decimal": 59306 + }, + { + "icon_id": "16018384", + "name": "删除", + "font_class": "shanchu1", + "unicode": "e74e", + "unicode_decimal": 59214 + }, + { + "icon_id": "16018750", + "name": "导出", + "font_class": "daochu", + "unicode": "e782", + "unicode_decimal": 59266 + }, + { + "icon_id": "16436718", + "name": "资源管理", + "font_class": "ziyuanguanli", + "unicode": "e7a4", + "unicode_decimal": 59300 + }, + { + "icon_id": "16436719", + "name": "服务器授权", + "font_class": "fuwuqishouquan", + "unicode": "e7a5", + "unicode_decimal": 59301 + }, + { + "icon_id": "16436720", + "name": "修改密码", + "font_class": "xiugaimima", + "unicode": "e7a6", + "unicode_decimal": 59302 + }, + { + "icon_id": "16436721", + "name": "账号管理", + "font_class": "zhanghaoguanli", + "unicode": "e7a7", + "unicode_decimal": 59303 + }, + { + "icon_id": "16436722", + "name": "算力配额", + "font_class": "suanlipeie", + "unicode": "e7a8", + "unicode_decimal": 59304 + }, + { + "icon_id": "16436723", + "name": "VMS配置", + "font_class": "VMSpeizhi", + "unicode": "e7a9", + "unicode_decimal": 59305 + }, + { + "icon_id": "16059984", + "name": "添加", + "font_class": "tianjia1", + "unicode": "e794", + "unicode_decimal": 59284 + }, + { + "icon_id": "16059985", + "name": "移除", + "font_class": "yichu", + "unicode": "e795", + "unicode_decimal": 59285 + }, + { + "icon_id": "15809722", + "name": "路径", + "font_class": "lujing", + "unicode": "e6cf", + "unicode_decimal": 59087 + }, + { + "icon_id": "15809625", + "name": "监控信息", + "font_class": "jiankongxinxi", + "unicode": "e6c8", + "unicode_decimal": 59080 + }, + { + "icon_id": "15809627", + "name": "范围", + "font_class": "fanwei", + "unicode": "e6c9", + "unicode_decimal": 59081 + }, + { + "icon_id": "15809628", + "name": "案发地点", + "font_class": "anfadidian", + "unicode": "e6ca", + "unicode_decimal": 59082 + }, + { + "icon_id": "15809688", + "name": "工具箱", + "font_class": "gongjuxiang", + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "15809690", + "name": "工具箱关闭1", + "font_class": "gongjuxiangguanbi1", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "15663416", + "name": "截侦", + "font_class": "jiezhen", + "unicode": "e6c2", + "unicode_decimal": 59074 + }, + { + "icon_id": "15660940", + "name": "回溯分析1", + "font_class": "huisufenxi1", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "15660941", + "name": "回溯分析", + "font_class": "huisufenxi", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "15492023", + "name": "添加视频文件", + "font_class": "tianjiashipinwenjian1", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "15415140", + "name": "加载失败", + "font_class": "jiazaishibai", + "unicode": "e6c3", + "unicode_decimal": 59075 + }, + { + "icon_id": "15415141", + "name": "刷新", + "font_class": "shuaxin", + "unicode": "e6c4", + "unicode_decimal": 59076 + }, + { + "icon_id": "15340138", + "name": "全屏", + "font_class": "quanping", + "unicode": "e6c0", + "unicode_decimal": 59072 + }, + { + "icon_id": "15340139", + "name": "取消全屏", + "font_class": "quxiaoquanping", + "unicode": "e6c1", + "unicode_decimal": 59073 + }, + { + "icon_id": "15329202", + "name": "视频播放", + "font_class": "shipinbofang", + "unicode": "e6be", + "unicode_decimal": 59070 + }, + { + "icon_id": "15329203", + "name": "视频暂停", + "font_class": "shipinzanting", + "unicode": "e6bf", + "unicode_decimal": 59071 + }, + { + "icon_id": "15291283", + "name": "离线轨迹", + "font_class": "lixianguiji", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "15291280", + "name": "离线", + "font_class": "lixian", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "15208512", + "name": "小角标", + "font_class": "xiaojiaobiao", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "15136409", + "name": "上传", + "font_class": "shangchuan1", + "unicode": "e6ba", + "unicode_decimal": 59066 + }, + { + "icon_id": "15136380", + "name": "添加为检索对象", + "font_class": "tianjiaweijiansuoduixiang", + "unicode": "e6b8", + "unicode_decimal": 59064 + }, + { + "icon_id": "15136381", + "name": "添加为检索记录", + "font_class": "tianjiaweijiansuojilu", + "unicode": "e6b9", + "unicode_decimal": 59065 + }, + { + "icon_id": "15085430", + "name": "离线分析", + "font_class": "lixianfenxi1", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "15078532", + "name": "快速检索hov", + "font_class": "kuaisujiansuohov", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "15078533", + "name": "快速检索", + "font_class": "kuaisujiansuo1", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "15076848", + "name": "快速检索", + "font_class": "kuaisujiansuo", + "unicode": "e6b4", + "unicode_decimal": 59060 + }, + { + "icon_id": "15076727", + "name": "预案管理", + "font_class": "yuanguanli", + "unicode": "e6b1", + "unicode_decimal": 59057 + }, + { + "icon_id": "15076728", + "name": "摄像头", + "font_class": "shexiangtou", + "unicode": "e6b2", + "unicode_decimal": 59058 + }, + { + "icon_id": "15076729", + "name": "离线分析", + "font_class": "lixianfenxi", + "unicode": "e6b3", + "unicode_decimal": 59059 + }, + { + "icon_id": "13838314", + "name": "filter", + "font_class": "filter", + "unicode": "e61a", + "unicode_decimal": 58906 + }, + { + "icon_id": "15010235", + "name": "添加为追踪对象", + "font_class": "tianjiaweizhuizongduixiang2", + "unicode": "e6af", + "unicode_decimal": 59055 + }, + { + "icon_id": "14986007", + "name": "添加为追踪对象", + "font_class": "tianjiaweizhuizongduixiang1", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "14982860", + "name": "保存", + "font_class": "baocun1", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "14981791", + "name": "添加视频文件夹", + "font_class": "tianjiashipinwenjianjia", + "unicode": "e6a5", + "unicode_decimal": 59045 + }, + { + "icon_id": "14981792", + "name": "添加视频文件", + "font_class": "tianjiashipinwenjian", + "unicode": "e6a6", + "unicode_decimal": 59046 + }, + { + "icon_id": "14981667", + "name": "地图", + "font_class": "ditu", + "unicode": "e6a4", + "unicode_decimal": 59044 + }, + { + "icon_id": "14981619", + "name": "新建摄像头", + "font_class": "xinjianshexiangtou", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "14981570", + "name": "历史回溯", + "font_class": "lishihuisu", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "14796345", + "name": "deco已添加为轨迹", + "font_class": "decoyitianjiaweiguiji", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "14796466", + "name": "播放切换", + "font_class": "bofangqiehuan", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "14796642", + "name": "添加", + "font_class": "tianjia", + "unicode": "e6a1", + "unicode_decimal": 59041 + }, + { + "icon_id": "14795587", + "name": "保存", + "font_class": "baocun", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "14795971", + "name": "工具箱关闭", + "font_class": "gongjuxiangguanbi", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "14795973", + "name": "上传", + "font_class": "shangchuan", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "14795974", + "name": "工具箱", + "font_class": "gongjuxiang1", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "14682024", + "name": "logo", + "font_class": "logo", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "13841331", + "name": "setting", + "font_class": "setting", + "unicode": "e627", + "unicode_decimal": 58919 + }, + { + "icon_id": "13841332", + "name": "user", + "font_class": "user", + "unicode": "e628", + "unicode_decimal": 58920 + }, + { + "icon_id": "13841333", + "name": "quit", + "font_class": "quit", + "unicode": "e629", + "unicode_decimal": 58921 + }, + { + "icon_id": "14681873", + "name": "arrow展开没选中", + "font_class": "arrowzhankaimeixuanzhong", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "14681874", + "name": "arrow展开选中", + "font_class": "arrowzhankaixuanzhong", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "14681940", + "name": "选择选中", + "font_class": "xuanzexuanzhong", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "14681960", + "name": "选择半选", + "font_class": "xuanzebanxuan", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "14681963", + "name": "选择nor", + "font_class": "xuanzenor", + "unicode": "e697", + "unicode_decimal": 59031 + }, + { + "icon_id": "14681709", + "name": "筛选关闭nor", + "font_class": "shaixuanguanbinor", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "14681588", + "name": "更多", + "font_class": "gengduo", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "14681594", + "name": "右展开", + "font_class": "youzhankai", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "14681599", + "name": "左收起", + "font_class": "zuoshouqi", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "14681557", + "name": "圆", + "font_class": "yuan", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "14681559", + "name": "多边形", + "font_class": "duobianxing", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "14681564", + "name": "方", + "font_class": "fang", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "14681566", + "name": "测距", + "font_class": "ceju", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "14681437", + "name": "实时追踪", + "font_class": "shishizhuizong1", + "unicode": "e683", + "unicode_decimal": 59011 + }, + { + "icon_id": "14681438", + "name": "轨迹回溯", + "font_class": "guijihuisu1", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "14681441", + "name": "添加轨迹", + "font_class": "tianjiaguiji", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "14681442", + "name": "移除轨迹", + "font_class": "yichuguiji", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "14681327", + "name": "放大", + "font_class": "fangda", + "unicode": "e680", + "unicode_decimal": 59008 + }, + { + "icon_id": "14681332", + "name": "缩小", + "font_class": "suoxiao", + "unicode": "e681", + "unicode_decimal": 59009 + }, + { + "icon_id": "14681337", + "name": "下载", + "font_class": "xiazai", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "14681144", + "name": "返回", + "font_class": "fanhui", + "unicode": "e678", + "unicode_decimal": 59000 + }, + { + "icon_id": "14681046", + "name": "搜索", + "font_class": "sousuo", + "unicode": "e669", + "unicode_decimal": 58985 + }, + { + "icon_id": "14681047", + "name": "取消选中", + "font_class": "quxiaoxuanzhong", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "14681048", + "name": "批量选择nor", + "font_class": "piliangxuanzenor", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "14681051", + "name": "开启分析", + "font_class": "kaiqifenxi", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "14681060", + "name": "取消分析", + "font_class": "quxiaofenxi", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "14681062", + "name": "筛选", + "font_class": "shaixuan", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "14681067", + "name": "档案", + "font_class": "dangan", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "14681071", + "name": "播放", + "font_class": "bofang", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "14681073", + "name": "暂停", + "font_class": "zanting", + "unicode": "e671", + "unicode_decimal": 58993 + }, + { + "icon_id": "14681075", + "name": "删除", + "font_class": "shanchu", + "unicode": "e672", + "unicode_decimal": 58994 + }, + { + "icon_id": "14681083", + "name": "添加为追踪对象", + "font_class": "tianjiaweizhuizongduixiang", + "unicode": "e673", + "unicode_decimal": 58995 + }, + { + "icon_id": "14681086", + "name": "查看大图", + "font_class": "chakandatu", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "14681091", + "name": "检索记录", + "font_class": "jiansuojilu", + "unicode": "e675", + "unicode_decimal": 58997 + }, + { + "icon_id": "14681108", + "name": "阈值", + "font_class": "yuzhi", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "14681117", + "name": "查看详情", + "font_class": "chakanxiangqing", + "unicode": "e677", + "unicode_decimal": 58999 + }, + { + "icon_id": "14677552", + "name": "轨迹回溯", + "font_class": "guijihuisu", + "unicode": "e65c", + "unicode_decimal": 58972 + }, + { + "icon_id": "14677553", + "name": "点位配置nor", + "font_class": "dianweipeizhinor", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "14677554", + "name": "一人一档", + "font_class": "yirenyidang", + "unicode": "e65e", + "unicode_decimal": 58974 + }, + { + "icon_id": "14677555", + "name": "同伴分析", + "font_class": "tongbanfenxi", + "unicode": "e65f", + "unicode_decimal": 58975 + }, + { + "icon_id": "14677595", + "name": "切换左", + "font_class": "qiehuanzuo", + "unicode": "e662", + "unicode_decimal": 58978 + }, + { + "icon_id": "14677596", + "name": "切换右", + "font_class": "qiehuanyou", + "unicode": "e663", + "unicode_decimal": 58979 + }, + { + "icon_id": "14677606", + "name": "停止等待", + "font_class": "tingzhidengdai", + "unicode": "e664", + "unicode_decimal": 58980 + }, + { + "icon_id": "14677607", + "name": "已关闭", + "font_class": "yiguanbi", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "14677648", + "name": "弹窗关闭", + "font_class": "danchuangguanbi", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "14071593", + "name": "历史记录", + "font_class": "lishijilu", + "unicode": "e64a", + "unicode_decimal": 58954 + }, + { + "icon_id": "14070176", + "name": "旋转", + "font_class": "xuanzhuan", + "unicode": "e648", + "unicode_decimal": 58952 + }, + { + "icon_id": "14070177", + "name": "清除", + "font_class": "qingchu", + "unicode": "e649", + "unicode_decimal": 58953 + }, + { + "icon_id": "14000087", + "name": "dangantianjia", + "font_class": "dangantianjia", + "unicode": "e63d", + "unicode_decimal": 58941 + }, + { + "icon_id": "14000088", + "name": "bianji", + "font_class": "bianji", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "13979358", + "name": "fullscreen", + "font_class": "fullscreen", + "unicode": "e63b", + "unicode_decimal": 58939 + }, + { + "icon_id": "13979359", + "name": "cancle_fullscreen", + "font_class": "cancle_fullscreen", + "unicode": "e63c", + "unicode_decimal": 58940 + }, + { + "icon_id": "13979335", + "name": "quanyujiansuo_nor", + "font_class": "quanyujiansuo_nor", + "unicode": "e639", + "unicode_decimal": 58937 + }, + { + "icon_id": "13979336", + "name": "guijihuisu_nor", + "font_class": "guijihuisu_nor", + "unicode": "e63a", + "unicode_decimal": 58938 + } + ] +} diff --git a/packages/icon/es/font/iconfont.ttf b/packages/icon/es/font/iconfont.ttf new file mode 100644 index 0000000..c466c9f Binary files /dev/null and b/packages/icon/es/font/iconfont.ttf differ diff --git a/packages/icon/es/font/iconfont.woff b/packages/icon/es/font/iconfont.woff new file mode 100644 index 0000000..f5b4968 Binary files /dev/null and b/packages/icon/es/font/iconfont.woff differ diff --git a/packages/icon/es/font/iconfont.woff2 b/packages/icon/es/font/iconfont.woff2 new file mode 100644 index 0000000..325adce Binary files /dev/null and b/packages/icon/es/font/iconfont.woff2 differ diff --git a/packages/icon/es/index.js b/packages/icon/es/index.js new file mode 100644 index 0000000..1733337 --- /dev/null +++ b/packages/icon/es/index.js @@ -0,0 +1 @@ +export { default as IconFont } from "./Iconfont"; \ No newline at end of file diff --git a/packages/icon/es/index.less b/packages/icon/es/index.less new file mode 100644 index 0000000..23f5dce --- /dev/null +++ b/packages/icon/es/index.less @@ -0,0 +1,3 @@ +.icon:hover { + color: #6accca !important; +} diff --git a/packages/icon/package.json b/packages/icon/package.json new file mode 100644 index 0000000..959dcb5 --- /dev/null +++ b/packages/icon/package.json @@ -0,0 +1,42 @@ +{ + "name": "@zhst/icon", + "version": "0.2.0", + "description": "图标库", + "keywords": [ + "icon", + "zhst", + "图标库" + ], + "license": "ISC", + "author": "dev", + "sideEffects": [ + "dist/*", + "es/**/style/*", + "lib/**/style/*", + "*.less" + ], + "main": "lib/index.js", + "module": "es/index.js", + "typings": "es/index.d.ts", + "exports": { + ".": { + "require": "./lib/index.js", + "import": "./es/index.js", + "default": "./es/index.js" + } + }, + "files": [ + "es", + "lib" + ], + "scripts": { + "build": "father build" + }, + "publishConfig": { + "access": "public", + "registry": "http://10.0.0.77:4874" + }, + "dependencies": { + "@ant-design/icons": "^5.3.0" + } +} diff --git a/packages/icon/src/Iconfont.tsx b/packages/icon/src/Iconfont.tsx new file mode 100644 index 0000000..ced0757 --- /dev/null +++ b/packages/icon/src/Iconfont.tsx @@ -0,0 +1,50 @@ +import { createFromIconfontCN } from '@ant-design/icons'; +import React from 'react'; +import { ReactNode } from 'react'; + +interface IconFontProps { + styles?: React.CSSProperties; + icon: string; + size?: number; + color?: string; + title?: string; + className?: string; + onIconClick?: (e: React.MouseEvent) => void; + children?: ReactNode; + active?: boolean; + disable?: boolean; +} +const Icon = createFromIconfontCN({ + scriptUrl: require('./font/iconfont.js'), +}); +const IconFont: React.FC = (props) => { + const { + title = '', + styles = {}, + icon, + size = 14, + onIconClick, + children, + active = false, + color = '', + } = props || {}; + return ( + { + onIconClick && onIconClick(e); + }} + style={{ + ...styles, + cursor: 'pointer', + fontSize: size, + color, + ...(active ? { color: '#09f' } : {}), + }} + type={icon} + > + {children} + + ); +}; +export default IconFont; diff --git a/packages/icon/src/demo/basic.tsx b/packages/icon/src/demo/basic.tsx new file mode 100644 index 0000000..9d66d39 --- /dev/null +++ b/packages/icon/src/demo/basic.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import { IconFont } from '@zhst/icon'; + +const demo = () => { + + return ( +
+ +
+ ); +}; + +export default demo; diff --git a/packages/icon/src/demo/demo.tsx b/packages/icon/src/demo/demo.tsx new file mode 100644 index 0000000..f415dd7 --- /dev/null +++ b/packages/icon/src/demo/demo.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +const iconJson = require('../font/iconfont.json') +import { IconFont } from '@zhst/icon'; +import './index.less'; +import { message } from '@zhst/meta'; +const demo = ()=>{ + const iconArr = iconJson['glyphs'] + return ( +
+
    + {iconArr.map((item: any)=>{ + const {font_class,name}= item; + const fontName = `icon-${font_class}` + return
  • + { + navigator.clipboard.writeText(fontName) + message.success(`复制${fontName}成功`) + }}> + +
    {name}
    +
    {fontName}
    +
  • + })} +
+
+ ); +} +export default demo \ No newline at end of file diff --git a/packages/icon/src/demo/index.less b/packages/icon/src/demo/index.less new file mode 100644 index 0000000..70b6c9d --- /dev/null +++ b/packages/icon/src/demo/index.less @@ -0,0 +1,20 @@ +.demo { + &-ul { + list-style-type: none; + display: flex; + flex-wrap: wrap; + } + + &-li { + display: flex; + flex-direction: column; + align-items: center; + height: 150px; + width: 150px; + + &-name { + color: #666; + font-size: 12px; + } + } +} \ No newline at end of file diff --git a/packages/icon/src/font/iconfont.css b/packages/icon/src/font/iconfont.css new file mode 100644 index 0000000..ef9f9d5 --- /dev/null +++ b/packages/icon/src/font/iconfont.css @@ -0,0 +1,1743 @@ +@font-face { + font-family: iconfont; /* Project id 1739270 */ + src: url('iconfont.woff2?t=1711094074098') format('woff2'), + url('iconfont.woff?t=1711094074098') format('woff'), + url('iconfont.ttf?t=1711094074098') format('truetype'); +} + +.iconfont { + font-family: iconfont !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-shezhi1::before { + content: "\e7fb"; +} + +.icon-bofang1::before { + content: "\e7fc"; +} + +.icon-zanting2::before { + content: "\e7fa"; +} + +.icon-bangzhu2::before { + content: "\e7f9"; +} + +.icon-daochu2::before { + content: "\e7f7"; +} + +.icon-daoru1::before { + content: "\e7f8"; +} + +.icon-jindonglogo::before { + content: "\e7f6"; +} + +.icon-guankongyujingselect::before { + content: "\e7ef"; +} + +.icon-guankongyujingnor::before { + content: "\e7f0"; +} + +.icon-guankongyuannor::before { + content: "\e7f1"; +} + +.icon-quancengyuanselectbeifen::before { + content: "\e7f2"; +} + +.icon-quancengyujingnor::before { + content: "\e7f3"; +} + +.icon-quancengyuannor::before { + content: "\e7f4"; +} + +.icon-quancengyuanselect::before { + content: "\e7f5"; +} + +.icon-guankongyuanselect::before { + content: "\e7ee"; +} + +.icon-jindong::before { + content: "\e7ed"; +} + +.icon-danganxiangqing_hangweifenxi::before { + content: "\e78d"; +} + +.icon-danganxiangqing_shujuganzhi::before { + content: "\e78e"; +} + +.icon-danganxiangqing_huodongguiji::before { + content: "\e78f"; +} + +.icon-danganxiangqing_jibenxinxi::before { + content: "\e7ea"; +} + +.icon-danganxiangqing_fushuwupin::before { + content: "\e7eb"; +} + +.icon-danganxiangqing_jizhanyingyong::before { + content: "\e7ec"; +} + +.icon-jiarudanganku::before { + content: "\e787"; +} + +.icon-dangankunor::before { + content: "\e793"; +} + +.icon-bukongrenwuselect::before { + content: "\e799"; +} + +.icon-bukongrenwunor1::before { + content: "\e79a"; +} + +.icon-dangankuselect::before { + content: "\e79b"; +} + +.icon-jizhanfanor::before { + content: "\e79c"; +} + +.icon-feijidongchechaxunnor::before { + content: "\e79d"; +} + +.icon-jidongchechaxunselect::before { + content: "\e79e"; +} + +.icon-a-lixianfenxiselect2::before { + content: "\e7a1"; +} + +.icon-huisufenxiselect::before { + content: "\e7a2"; +} + +.icon-jizhanfaselect::before { + content: "\e7a3"; +} + +.icon-mubiaojiansuonor::before { + content: "\e7ae"; +} + +.icon-lurenkuselect::before { + content: "\e7b1"; +} + +.icon-shujujiashicangselect::before { + content: "\e7b2"; +} + +.icon-shishijiexiselect::before { + content: "\e7b4"; +} + +.icon-shishijiexinor::before { + content: "\e7b9"; +} + +.icon-jidongchechaxunnor::before { + content: "\e7c1"; +} + +.icon-lurenkunor1::before { + content: "\e7cf"; +} + +.icon-mubiaotezhengchaxunnor::before { + content: "\e7e1"; +} + +.icon-yujingjiluselect::before { + content: "\e7e2"; +} + +.icon-mubiaotezhengchaxunselect::before { + content: "\e7e3"; +} + +.icon-feijidongchechaxunselect::before { + content: "\e7e4"; +} + +.icon-yujingjilunor::before { + content: "\e7e5"; +} + +.icon-lixianfenxiselect::before { + content: "\e7e6"; +} + +.icon-huisufenxinor::before { + content: "\e7e7"; +} + +.icon-shujujiashicangnor::before { + content: "\e7e8"; +} + +.icon-mubiaojiansuoselect::before { + content: "\e7e9"; +} + +.icon-kuangxuangongju::before { + content: "\e796"; +} + +.icon-fengniao::before { + content: "\e792"; +} + +.icon-zhankai::before { + content: "\e790"; +} + +.icon-shouqi::before { + content: "\e791"; +} + +.icon-shijian::before { + content: "\e786"; +} + +.icon-dingwei2::before { + content: "\e613"; +} + +.icon-renyuan::before { + content: "\e784"; +} + +.icon-houtai::before { + content: "\e785"; +} + +.icon-zuo::before { + content: "\e781"; +} + +.icon-you::before { + content: "\e783"; +} + +.icon-kakou::before { + content: "\e780"; +} + +.icon-yujing1::before { + content: "\e77e"; +} + +.icon-yuan2::before { + content: "\e77d"; +} + +.icon-moxingpengzhuang::before { + content: "\e777"; +} + +.icon-moxingpengzhuangnor::before { + content: "\e778"; +} + +.icon-lurenku::before { + content: "\e77b"; +} + +.icon-lurenkunor::before { + content: "\e77c"; +} + +.icon-shiming::before { + content: "\e776"; +} + +.icon-suoxiao2::before { + content: "\e774"; +} + +.icon-fangda1::before { + content: "\e775"; +} + +.icon-guanbi2::before { + content: "\e772"; +} + +.icon-fanhui1::before { + content: "\e773"; +} + +.icon-xiansuomopai::before { + content: "\e76f"; +} + +.icon-xiansuomopainor::before { + content: "\e76e"; +} + +.icon-zhajiyujing::before { + content: "\e770"; +} + +.icon-zhajiyujingnor::before { + content: "\e771"; +} + +.icon-zhuizongpeizhi::before { + content: "\e76c"; +} + +.icon-zhuizongpeizhinor::before { + content: "\e76d"; +} + +.icon-dapingqiehuan::before { + content: "\e76b"; +} + +.icon-xuanze::before { + content: "\e769"; +} + +.icon-shaixuan1::before { + content: "\e76a"; +} + +.icon-chekashebei::before { + content: "\e764"; +} + +.icon-imsishebei::before { + content: "\e765"; +} + +.icon-xingtishebei::before { + content: "\e766"; +} + +.icon-renlianshebei::before { + content: "\e767"; +} + +.icon-wifishebei::before { + content: "\e768"; +} + +.icon-a-miaozhun2::before { + content: "\e762"; +} + +.icon-a-bianzu19::before { + content: "\e763"; +} + +.icon-fanye::before { + content: "\e75e"; +} + +.icon-shenfenzheng::before { + content: "\e75f"; +} + +.icon-dizhi::before { + content: "\e760"; +} + +.icon-guanbi::before { + content: "\e761"; +} + +.icon-dianwei1::before { + content: "\e75b"; +} + +.icon-weikakou::before { + content: "\e757"; +} + +.icon-weikakounor::before { + content: "\e758"; +} + +.icon-changsuoma::before { + content: "\e759"; +} + +.icon-changsuomanor::before { + content: "\e75a"; +} + +.icon-yujing::before { + content: "\e756"; +} + +.icon-jiansuonor::before { + content: "\e747"; +} + +.icon-tonghangrenfenxinor1::before { + content: "\e748"; +} + +.icon-zhinengyanpannor::before { + content: "\e749"; +} + +.icon-bukongyujingnor::before { + content: "\e74a"; +} + +.icon-bukongrenwunor::before { + content: "\e74b"; +} + +.icon-dianziditunor::before { + content: "\e754"; +} + +.icon-zhuizongnor1::before { + content: "\e755"; +} + +.icon-zhuizong1::before { + content: "\e746"; +} + +.icon-bukongrenwu3::before { + content: "\e74c"; +} + +.icon-dianziditu::before { + content: "\e74d"; +} + +.icon-bukongyujing::before { + content: "\e750"; +} + +.icon-tonghangrenfenxi1::before { + content: "\e751"; +} + +.icon-zhinengyanpan::before { + content: "\e752"; +} + +.icon-jiansuo1::before { + content: "\e753"; +} + +.icon-kaiqijulei::before { + content: "\e745"; +} + +.icon-tongbu::before { + content: "\e744"; +} + +.icon-tonghangrenfenxi::before { + content: "\e743"; +} + +.icon-tonghangrenfenxinor::before { + content: "\e742"; +} + +.icon-jizhanyingyong::before { + content: "\e741"; +} + +.icon-haikangrenlianbukongnor::before { + content: "\e740"; +} + +.icon-haikangrenlianbukong::before { + content: "\e73f"; +} + +.icon-tuozhanshouduantishi::before { + content: "\e73e"; +} + +.icon-fanhuimopailiebiao::before { + content: "\e73d"; +} + +.icon-toukuijiancenor::before { + content: "\e73c"; +} + +.icon-toukuijiance::before { + content: "\e718"; +} + +.icon-zhuixing::before { + content: "\e717"; +} + +.icon-tishi4::before { + content: "\e73b"; +} + +.icon-a-shaixuanfeiji::before { + content: "\e733"; +} + +.icon-a-zidongtiaozhengfanweifeiji::before { + content: "\e73a"; +} + +.icon-heziyunwei::before { + content: "\e739"; +} + +.icon-qiehuan::before { + content: "\e738"; +} + +.icon-disanfangxiaoxinor::before { + content: "\e737"; +} + +.icon-disanfangxiaoxi::before { + content: "\e736"; +} + +.icon-daohang::before { + content: "\e735"; +} + +.icon-yonghu::before { + content: "\e734"; +} + +.icon-feiji::before { + content: "\e732"; +} + +.icon-jieshuzhuizong::before { + content: "\e730"; +} + +.icon-huisuzhoubian::before { + content: "\e731"; +} + +.icon-jixuzhuizong::before { + content: "\e72d"; +} + +.icon-tiaozhengfanwei::before { + content: "\e72e"; +} + +.icon-jiansuo::before { + content: "\e72f"; +} + +.icon-guiji::before { + content: "\e72c"; +} + +.icon-jichuxinxi::before { + content: "\e72b"; +} + +.icon-danganzhaiyao::before { + content: "\e72a"; +} + +.icon-jingzhunbukongicon_on::before { + content: "\e728"; +} + +.icon-jingzhunbukongicon_off::before { + content: "\e729"; +} + +.icon-tiaozhuan::before { + content: "\e727"; +} + +.icon-shezhi::before { + content: "\e726"; +} + +.icon-bangzhu1::before { + content: "\e725"; +} + +.icon-shuaxin1::before { + content: "\e724"; +} + +.icon-duosucaibeifen::before { + content: "\e722"; +} + +.icon-duosucai::before { + content: "\e723"; +} + +.icon-shujutongji::before { + content: "\e721"; +} + +.icon-renlian::before { + content: "\e71c"; +} + +.icon-xingti::before { + content: "\e71d"; +} + +.icon-jidongche::before { + content: "\e71e"; +} + +.icon-huisufenxi4::before { + content: "\e71f"; +} + +.icon-lixianfenxi4::before { + content: "\e720"; +} + +.icon-feijidongche::before { + content: "\e71b"; +} + +.icon-shujudaping::before { + content: "\e71a"; +} + +.icon-peizhisuanfa::before { + content: "\e719"; +} + +.icon-zhuizong::before { + content: "\e715"; +} + +.icon-zhuizongnor::before { + content: "\e716"; +} + +.icon-dianwei::before { + content: "\e714"; +} + +.icon-Container::before { + content: "\e713"; +} + +.icon-Attachment::before { + content: "\e712"; +} + +.icon-cha::before { + content: "\e711"; +} + +.icon-gou::before { + content: "\e710"; +} + +.icon-daoru::before { + content: "\e70f"; +} + +.icon-quanxijiansuo::before { + content: "\e70e"; +} + +.icon-chakanjiankong::before { + content: "\e70c"; +} + +.icon-tishi3::before { + content: "\e70d"; +} + +.icon-heiyemoshi::before { + content: "\e70b"; +} + +.icon-zhengchangmoshi::before { + content: "\e70a"; +} + +.icon-dingwei1::before { + content: "\e709"; +} + +.icon-paixu::before { + content: "\e708"; +} + +.icon-tianjiayuan::before { + content: "\e707"; +} + +.icon-juleidangankunor::before { + content: "\e705"; +} + +.icon-juleidanganku::before { + content: "\e706"; +} + +.icon-guanlian::before { + content: "\e704"; +} + +.icon-renlianbiaozhu::before { + content: "\e703"; +} + +.icon-juleijieguo::before { + content: "\e6ec"; +} + +.icon-juleirenwunor::before { + content: "\e6fb"; +} + +.icon-juleijieguonor::before { + content: "\e701"; +} + +.icon-juleirenwu::before { + content: "\e702"; +} + +.icon-zhongzhi3::before { + content: "\e8ff"; +} + +.icon-xuanzhuan1::before { + content: "\e6fd"; +} + +.icon-shuangmubiaozhu1::before { + content: "\e700"; +} + +.icon-shoudongkuangxuan::before { + content: "\e6f9"; +} + +.icon-zanting1::before { + content: "\e6fe"; +} + +.icon-zhongzhi1::before { + content: "\e6ff"; +} + +.icon-shoudong::before { + content: "\e6fa"; +} + +.icon-zidong::before { + content: "\e6fc"; +} + +.icon-zhenduan::before { + content: "\e6f8"; +} + +.icon-Check-Circle-Fill1::before { + content: "\e6f3"; +} + +.icon-Info--Circle-Fill::before { + content: "\e6f4"; +} + +.icon-Close-Circle-Fill::before { + content: "\e6f5"; +} + +.icon-Warning-Circle-Fill::before { + content: "\e6f6"; +} + +.icon-Question-Circle-Fill::before { + content: "\e6f7"; +} + +.icon-zancunjia::before { + content: "\e6f2"; +} + +.icon-Check-Circle-Fill::before { + content: "\e6f1"; +} + +.icon-tupianji::before { + content: "\e6f0"; +} + +.icon-quanping1::before { + content: "\e6ed"; +} + +.icon-yinliang::before { + content: "\e6ee"; +} + +.icon-suoxiao1::before { + content: "\e6ef"; +} + +.icon-home::before { + content: "\e6eb"; +} + +.icon-zuixiaohua::before { + content: "\e6e9"; +} + +.icon-zuidahua::before { + content: "\e6ea"; +} + +.icon-biaozhunhua::before { + content: "\e6e6"; +} + +.icon-julei::before { + content: "\e6e5"; +} + +.icon-bianzu::before { + content: "\e6e7"; +} + +.icon-bianzu3::before { + content: "\e6e8"; +} + +.icon-bianzu7::before { + content: "\e6e3"; +} + +.icon-bianzu2::before { + content: "\e6e4"; +} + +.icon-kapianqiehuan::before { + content: "\e6e2"; +} + +.icon-duobianxing1::before { + content: "\e6e0"; +} + +.icon-fang1::before { + content: "\e6e1"; +} + +.icon-yuan1::before { + content: "\e6df"; +} + +.icon-cejuli::before { + content: "\e6de"; +} + +.icon-wanggekuangxuannor::before { + content: "\e6dc"; +} + +.icon-lujingkuangxuannor::before { + content: "\e6dd"; +} + +.icon-chuansuo::before { + content: "\e6db"; +} + +.icon-bianyuanhezinor::before { + content: "\e6d8"; +} + +.icon-wujiankuhov::before { + content: "\e6d9"; +} + +.icon-caozuorizhinor::before { + content: "\e6da"; +} + +.icon-collect_dot::before { + content: "\e619"; +} + +.icon-chuxiandingweibg::before { + content: "\e6d4"; +} + +.icon-chuxiandingweiicon::before { + content: "\e6d5"; +} + +.icon-shexiangtoudingweibg::before { + content: "\e6d6"; +} + +.icon-shexiangtoudingweiicon::before { + content: "\e6d7"; +} + +.icon-xiafajieguo::before { + content: "\e6d2"; +} + +.icon-daochu1::before { + content: "\e6d3"; +} + +.icon-zuijinchuxian::before { + content: "\e6cc"; +} + +.icon-leijizhuapai::before { + content: "\e6d0"; +} + +.icon-yichangshijian::before { + content: "\e6d1"; +} + +.icon-dingwei::before { + content: "\e6cb"; +} + +.icon-tupian::before { + content: "\e6ad"; +} + +.icon-wenti::before { + content: "\e6ac"; +} + +.icon-lixian1::before { + content: "\e6ab"; +} + +.icon-yichang::before { + content: "\e6a8"; +} + +.icon-zhuixing-xiugaidianwei::before { + content: "\e6a7"; +} + +.icon-wenhao1::before { + content: "\e69e"; +} + +.icon-ditu_dingwei::before { + content: "\e69d"; +} + +.icon-ditu_fangda::before { + content: "\e689"; +} + +.icon-ditu_suoxiao::before { + content: "\e69a"; +} + +.icon-chakanbukongrenwu::before { + content: "\e688"; +} + +.icon-lietu::before { + content: "\e687"; +} + +.icon-zhongzhi::before { + content: "\e67e"; +} + +.icon-xialada::before { + content: "\e67f"; +} + +.icon-zhinengguanlian_xingti::before { + content: "\e67b"; +} + +.icon-zhinengguanlian_renlian::before { + content: "\e67c"; +} + +.icon-xiajiantou::before { + content: "\e75c"; +} + +.icon-zhinengguanlian_xiaojiantou::before { + content: "\e67d"; +} + +.icon-zhinengguanlian_jiantou::before { + content: "\e67a"; +} + +.icon-shangjiantou::before { + content: "\e75d"; +} + +.icon-banbenxinxi::before { + content: "\e679"; +} + +.icon-wenhao::before { + content: "\e61f"; +} + +.icon-bianjirenyuan::before { + content: "\e7e0"; +} + +.icon-tishi2::before { + content: "\e7df"; +} + +.icon-shexiangji2::before { + content: "\e7de"; +} + +.icon-guijizhuizong::before { + content: "\e7dd"; +} + +.icon-jiezhen1::before { + content: "\e7dc"; +} + +.icon-tianjiaguijihuisu::before { + content: "\e7db"; +} + +.icon-tingzhi::before { + content: "\e7cd"; +} + +.icon-baoweiquan::before { + content: "\e7ce"; +} + +.icon-shangchuanshipin::before { + content: "\e7d0"; +} + +.icon-yidong::before { + content: "\e7d1"; +} + +.icon-chuangjianxinbukong1::before { + content: "\e7d2"; +} + +.icon-yichu1::before { + content: "\e7d3"; +} + +.icon-tishi1::before { + content: "\e7d4"; +} + +.icon-VS::before { + content: "\e7d5"; +} + +.icon-quanjuzonglan::before { + content: "\e7d6"; +} + +.icon-chakanfenxirenwu1::before { + content: "\e7d7"; +} + +.icon-xiaoxi::before { + content: "\e7d8"; +} + +.icon-yonghuming::before { + content: "\e7d9"; +} + +.icon-tuichu::before { + content: "\e7da"; +} + +.icon-guijizhuizongnor::before { + content: "\e7cb"; +} + +.icon-guijizhuizong2::before { + content: "\e7cc"; +} + +.icon-bukongrenwu1::before { + content: "\e7b7"; +} + +.icon-shexiangji::before { + content: "\e7b8"; +} + +.icon-yujingditu::before { + content: "\e7ba"; +} + +.icon-lixianfenxi2::before { + content: "\e7bb"; +} + +.icon-yuanguanli1::before { + content: "\e7bc"; +} + +.icon-danganku::before { + content: "\e7bd"; +} + +.icon-huisufenxi2::before { + content: "\e7be"; +} + +.icon-kuneijiansuo::before { + content: "\e7bf"; +} + +.icon-jiegouhuachaxun::before { + content: "\e7c0"; +} + +.icon-bukongrenwu2::before { + content: "\e7c2"; +} + +.icon-yuanguanli2::before { + content: "\e7c3"; +} + +.icon-shexiangji1::before { + content: "\e7c4"; +} + +.icon-kuneijiansuo1::before { + content: "\e7c5"; +} + +.icon-lixianfenxi3::before { + content: "\e7c6"; +} + +.icon-danganku1::before { + content: "\e7c7"; +} + +.icon-yujingditu1::before { + content: "\e7c8"; +} + +.icon-huisufenxi3::before { + content: "\e7c9"; +} + +.icon-jiegouhuachaxunnor::before { + content: "\e7ca"; +} + +.icon-chuangjianxinbukong::before { + content: "\e7b6"; +} + +.icon-kuangxuan::before { + content: "\e77f"; +} + +.icon-gaojishaixuan::before { + content: "\e779"; +} + +.icon-gaojishaixuanshouqi::before { + content: "\e77a"; +} + +.icon-bukongrenwu::before { + content: "\e7b5"; +} + +.icon-riqi::before { + content: "\e74f"; +} + +.icon-shijianqiehuan::before { + content: "\e797"; +} + +.icon-shouquan1::before { + content: "\e7b3"; +} + +.icon-video-play::before { + content: "\e653"; +} + +.icon-shishifenxi::before { + content: "\e7af"; +} + +.icon-chakanfenxirenwu::before { + content: "\e7b0"; +} + +.icon-jiegouhuafenxi::before { + content: "\e7ad"; +} + +.icon-tianjiaguiji2::before { + content: "\e6aa"; +} + +.icon-tianjiajiansuomubiao::before { + content: "\e6b0"; +} + +.icon-add::before { + content: "\e661"; +} + +.icon-didian::before { + content: "\e798"; +} + +.icon-bofanghov::before { + content: "\e79f"; +} + +.icon-bofang3::before { + content: "\e7a0"; +} + +.icon-jinggao::before { + content: "\e788"; +} + +.icon-tishi::before { + content: "\e789"; +} + +.icon-bangzhu::before { + content: "\e78a"; +} + +.icon-guanbi1::before { + content: "\e78b"; +} + +.icon-chenggong::before { + content: "\e78c"; +} + +.icon-qianwang::before { + content: "\e7ac"; +} + +.icon-shouquan::before { + content: "\e7ab"; +} + +.icon-jingweidu::before { + content: "\e7aa"; +} + +.icon-shanchu1::before { + content: "\e74e"; +} + +.icon-daochu::before { + content: "\e782"; +} + +.icon-ziyuanguanli::before { + content: "\e7a4"; +} + +.icon-fuwuqishouquan::before { + content: "\e7a5"; +} + +.icon-xiugaimima::before { + content: "\e7a6"; +} + +.icon-zhanghaoguanli::before { + content: "\e7a7"; +} + +.icon-suanlipeie::before { + content: "\e7a8"; +} + +.icon-VMSpeizhi::before { + content: "\e7a9"; +} + +.icon-tianjia1::before { + content: "\e794"; +} + +.icon-yichu::before { + content: "\e795"; +} + +.icon-lujing::before { + content: "\e6cf"; +} + +.icon-jiankongxinxi::before { + content: "\e6c8"; +} + +.icon-fanwei::before { + content: "\e6c9"; +} + +.icon-anfadidian::before { + content: "\e6ca"; +} + +.icon-gongjuxiang::before { + content: "\e6cd"; +} + +.icon-gongjuxiangguanbi1::before { + content: "\e6ce"; +} + +.icon-jiezhen::before { + content: "\e6c2"; +} + +.icon-huisufenxi1::before { + content: "\e6c6"; +} + +.icon-huisufenxi::before { + content: "\e6c7"; +} + +.icon-tianjiashipinwenjian1::before { + content: "\e6c5"; +} + +.icon-jiazaishibai::before { + content: "\e6c3"; +} + +.icon-shuaxin::before { + content: "\e6c4"; +} + +.icon-quanping::before { + content: "\e6c0"; +} + +.icon-quxiaoquanping::before { + content: "\e6c1"; +} + +.icon-shipinbofang::before { + content: "\e6be"; +} + +.icon-shipinzanting::before { + content: "\e6bf"; +} + +.icon-lixianguiji::before { + content: "\e6bd"; +} + +.icon-lixian::before { + content: "\e6bc"; +} + +.icon-xiaojiaobiao::before { + content: "\e6bb"; +} + +.icon-shangchuan1::before { + content: "\e6ba"; +} + +.icon-tianjiaweijiansuoduixiang::before { + content: "\e6b8"; +} + +.icon-tianjiaweijiansuojilu::before { + content: "\e6b9"; +} + +.icon-lixianfenxi1::before { + content: "\e6b7"; +} + +.icon-kuaisujiansuohov::before { + content: "\e6b5"; +} + +.icon-kuaisujiansuo1::before { + content: "\e6b6"; +} + +.icon-kuaisujiansuo::before { + content: "\e6b4"; +} + +.icon-yuanguanli::before { + content: "\e6b1"; +} + +.icon-shexiangtou::before { + content: "\e6b2"; +} + +.icon-lixianfenxi::before { + content: "\e6b3"; +} + +.icon-filter::before { + content: "\e61a"; +} + +.icon-tianjiaweizhuizongduixiang2::before { + content: "\e6af"; +} + +.icon-tianjiaweizhuizongduixiang1::before { + content: "\e6ae"; +} + +.icon-baocun1::before { + content: "\e6a9"; +} + +.icon-tianjiashipinwenjianjia::before { + content: "\e6a5"; +} + +.icon-tianjiashipinwenjian::before { + content: "\e6a6"; +} + +.icon-ditu::before { + content: "\e6a4"; +} + +.icon-xinjianshexiangtou::before { + content: "\e6a3"; +} + +.icon-lishihuisu::before { + content: "\e6a2"; +} + +.icon-decoyitianjiaweiguiji::before { + content: "\e69f"; +} + +.icon-bofangqiehuan::before { + content: "\e6a0"; +} + +.icon-tianjia::before { + content: "\e6a1"; +} + +.icon-baocun::before { + content: "\e698"; +} + +.icon-gongjuxiangguanbi::before { + content: "\e699"; +} + +.icon-shangchuan::before { + content: "\e69b"; +} + +.icon-gongjuxiang1::before { + content: "\e69c"; +} + +.icon-logo::before { + content: "\e692"; +} + +.icon-setting::before { + content: "\e627"; +} + +.icon-user::before { + content: "\e628"; +} + +.icon-quit::before { + content: "\e629"; +} + +.icon-arrowzhankaimeixuanzhong::before { + content: "\e693"; +} + +.icon-arrowzhankaixuanzhong::before { + content: "\e694"; +} + +.icon-xuanzexuanzhong::before { + content: "\e695"; +} + +.icon-xuanzebanxuan::before { + content: "\e696"; +} + +.icon-xuanzenor::before { + content: "\e697"; +} + +.icon-shaixuanguanbinor::before { + content: "\e691"; +} + +.icon-gengduo::before { + content: "\e68e"; +} + +.icon-youzhankai::before { + content: "\e68f"; +} + +.icon-zuoshouqi::before { + content: "\e690"; +} + +.icon-yuan::before { + content: "\e68a"; +} + +.icon-duobianxing::before { + content: "\e68b"; +} + +.icon-fang::before { + content: "\e68c"; +} + +.icon-ceju::before { + content: "\e68d"; +} + +.icon-shishizhuizong1::before { + content: "\e683"; +} + +.icon-guijihuisu1::before { + content: "\e684"; +} + +.icon-tianjiaguiji::before { + content: "\e685"; +} + +.icon-yichuguiji::before { + content: "\e686"; +} + +.icon-fangda::before { + content: "\e680"; +} + +.icon-suoxiao::before { + content: "\e681"; +} + +.icon-xiazai::before { + content: "\e682"; +} + +.icon-fanhui::before { + content: "\e678"; +} + +.icon-sousuo::before { + content: "\e669"; +} + +.icon-quxiaoxuanzhong::before { + content: "\e66a"; +} + +.icon-piliangxuanzenor::before { + content: "\e66b"; +} + +.icon-kaiqifenxi::before { + content: "\e66c"; +} + +.icon-quxiaofenxi::before { + content: "\e66d"; +} + +.icon-shaixuan::before { + content: "\e66e"; +} + +.icon-dangan::before { + content: "\e66f"; +} + +.icon-bofang::before { + content: "\e670"; +} + +.icon-zanting::before { + content: "\e671"; +} + +.icon-shanchu::before { + content: "\e672"; +} + +.icon-tianjiaweizhuizongduixiang::before { + content: "\e673"; +} + +.icon-chakandatu::before { + content: "\e674"; +} + +.icon-jiansuojilu::before { + content: "\e675"; +} + +.icon-yuzhi::before { + content: "\e676"; +} + +.icon-chakanxiangqing::before { + content: "\e677"; +} + +.icon-guijihuisu::before { + content: "\e65c"; +} + +.icon-dianweipeizhinor::before { + content: "\e65d"; +} + +.icon-yirenyidang::before { + content: "\e65e"; +} + +.icon-tongbanfenxi::before { + content: "\e65f"; +} + +.icon-qiehuanzuo::before { + content: "\e662"; +} + +.icon-qiehuanyou::before { + content: "\e663"; +} + +.icon-tingzhidengdai::before { + content: "\e664"; +} + +.icon-yiguanbi::before { + content: "\e665"; +} + +.icon-danchuangguanbi::before { + content: "\e666"; +} + +.icon-lishijilu::before { + content: "\e64a"; +} + +.icon-xuanzhuan::before { + content: "\e648"; +} + +.icon-qingchu::before { + content: "\e649"; +} + +.icon-dangantianjia::before { + content: "\e63d"; +} + +.icon-bianji::before { + content: "\e63e"; +} + +.icon-fullscreen::before { + content: "\e63b"; +} + +.icon-cancle_fullscreen::before { + content: "\e63c"; +} + +.icon-quanyujiansuo_nor::before { + content: "\e639"; +} + +.icon-guijihuisu_nor::before { + content: "\e63a"; +} + diff --git a/packages/icon/src/font/iconfont.js b/packages/icon/src/font/iconfont.js new file mode 100644 index 0000000..c009008 --- /dev/null +++ b/packages/icon/src/font/iconfont.js @@ -0,0 +1 @@ +window._iconfont_svg_string_1739270='',function(h){var a=(a=document.getElementsByTagName("script"))[a.length-1],l=a.getAttribute("data-injectcss"),a=a.getAttribute("data-disable-injectsvg");if(!a){var c,i,o,z,t,m=function(a,l){l.parentNode.insertBefore(a,l)};if(l&&!h.__iconfont__svg__cssinject__){h.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}c=function(){var a,l=document.createElement("div");l.innerHTML=h._iconfont_svg_string_1739270,(l=l.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",l=l,(a=document.body).firstChild?m(l,a.firstChild):a.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),c()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(o=c,z=h.document,t=!1,v(),z.onreadystatechange=function(){"complete"==z.readyState&&(z.onreadystatechange=null,p())})}function p(){t||(t=!0,o())}function v(){try{z.documentElement.doScroll("left")}catch(a){return void setTimeout(v,50)}p()}}(window); \ No newline at end of file diff --git a/packages/icon/src/font/iconfont.json b/packages/icon/src/font/iconfont.json new file mode 100644 index 0000000..8466528 --- /dev/null +++ b/packages/icon/src/font/iconfont.json @@ -0,0 +1,3033 @@ +{ + "id": "1739270", + "name": "蜂鸟实时布控系统", + "font_family": "iconfont", + "css_prefix_text": "icon-", + "description": "", + "glyphs": [ + { + "icon_id": "39554305", + "name": "设置", + "font_class": "shezhi1", + "unicode": "e7fb", + "unicode_decimal": 59387 + }, + { + "icon_id": "39554304", + "name": "播放", + "font_class": "bofang1", + "unicode": "e7fc", + "unicode_decimal": 59388 + }, + { + "icon_id": "39554349", + "name": "暂停", + "font_class": "zanting2", + "unicode": "e7fa", + "unicode_decimal": 59386 + }, + { + "icon_id": "38794757", + "name": "帮助", + "font_class": "bangzhu2", + "unicode": "e7f9", + "unicode_decimal": 59385 + }, + { + "icon_id": "38736535", + "name": "导出", + "font_class": "daochu2", + "unicode": "e7f7", + "unicode_decimal": 59383 + }, + { + "icon_id": "38736534", + "name": "导入", + "font_class": "daoru1", + "unicode": "e7f8", + "unicode_decimal": 59384 + }, + { + "icon_id": "38439162", + "name": "金东logo", + "font_class": "jindonglogo", + "unicode": "e7f6", + "unicode_decimal": 59382 + }, + { + "icon_id": "38353195", + "name": "管控预警select", + "font_class": "guankongyujingselect", + "unicode": "e7ef", + "unicode_decimal": 59375 + }, + { + "icon_id": "38353194", + "name": "管控预警nor", + "font_class": "guankongyujingnor", + "unicode": "e7f0", + "unicode_decimal": 59376 + }, + { + "icon_id": "38353193", + "name": "管控预案nor", + "font_class": "guankongyuannor", + "unicode": "e7f1", + "unicode_decimal": 59377 + }, + { + "icon_id": "38353188", + "name": "圈层预案select备份", + "font_class": "quancengyuanselectbeifen", + "unicode": "e7f2", + "unicode_decimal": 59378 + }, + { + "icon_id": "38353187", + "name": "圈层预警nor", + "font_class": "quancengyujingnor", + "unicode": "e7f3", + "unicode_decimal": 59379 + }, + { + "icon_id": "38353186", + "name": "圈层预案nor", + "font_class": "quancengyuannor", + "unicode": "e7f4", + "unicode_decimal": 59380 + }, + { + "icon_id": "38353185", + "name": "圈层预案select", + "font_class": "quancengyuanselect", + "unicode": "e7f5", + "unicode_decimal": 59381 + }, + { + "icon_id": "38353196", + "name": "管控预案select", + "font_class": "guankongyuanselect", + "unicode": "e7ee", + "unicode_decimal": 59374 + }, + { + "icon_id": "37989025", + "name": "金东", + "font_class": "jindong", + "unicode": "e7ed", + "unicode_decimal": 59373 + }, + { + "icon_id": "36344792", + "name": "档案详情_行为分析", + "font_class": "danganxiangqing_hangweifenxi", + "unicode": "e78d", + "unicode_decimal": 59277 + }, + { + "icon_id": "36344793", + "name": "档案详情_数据感知", + "font_class": "danganxiangqing_shujuganzhi", + "unicode": "e78e", + "unicode_decimal": 59278 + }, + { + "icon_id": "36344794", + "name": "档案详情_活动轨迹", + "font_class": "danganxiangqing_huodongguiji", + "unicode": "e78f", + "unicode_decimal": 59279 + }, + { + "icon_id": "36344795", + "name": "档案详情_基本信息", + "font_class": "danganxiangqing_jibenxinxi", + "unicode": "e7ea", + "unicode_decimal": 59370 + }, + { + "icon_id": "36344796", + "name": "档案详情_附属物品", + "font_class": "danganxiangqing_fushuwupin", + "unicode": "e7eb", + "unicode_decimal": 59371 + }, + { + "icon_id": "36344797", + "name": "档案详情_技战应用", + "font_class": "danganxiangqing_jizhanyingyong", + "unicode": "e7ec", + "unicode_decimal": 59372 + }, + { + "icon_id": "36101866", + "name": "加入档案库", + "font_class": "jiarudanganku", + "unicode": "e787", + "unicode_decimal": 59271 + }, + { + "icon_id": "36091918", + "name": "档案库nor", + "font_class": "dangankunor", + "unicode": "e793", + "unicode_decimal": 59283 + }, + { + "icon_id": "36091919", + "name": "布控任务select", + "font_class": "bukongrenwuselect", + "unicode": "e799", + "unicode_decimal": 59289 + }, + { + "icon_id": "36091920", + "name": "布控任务nor", + "font_class": "bukongrenwunor1", + "unicode": "e79a", + "unicode_decimal": 59290 + }, + { + "icon_id": "36091921", + "name": "档案库select", + "font_class": "dangankuselect", + "unicode": "e79b", + "unicode_decimal": 59291 + }, + { + "icon_id": "36091922", + "name": "技战法nor", + "font_class": "jizhanfanor", + "unicode": "e79c", + "unicode_decimal": 59292 + }, + { + "icon_id": "36091923", + "name": "非机动车查询nor", + "font_class": "feijidongchechaxunnor", + "unicode": "e79d", + "unicode_decimal": 59293 + }, + { + "icon_id": "36091924", + "name": "机动车查询select", + "font_class": "jidongchechaxunselect", + "unicode": "e79e", + "unicode_decimal": 59294 + }, + { + "icon_id": "36091925", + "name": "离线分析select 2", + "font_class": "a-lixianfenxiselect2", + "unicode": "e7a1", + "unicode_decimal": 59297 + }, + { + "icon_id": "36091926", + "name": "回溯分析select", + "font_class": "huisufenxiselect", + "unicode": "e7a2", + "unicode_decimal": 59298 + }, + { + "icon_id": "36091927", + "name": "技战法select", + "font_class": "jizhanfaselect", + "unicode": "e7a3", + "unicode_decimal": 59299 + }, + { + "icon_id": "36091928", + "name": "目标检索nor", + "font_class": "mubiaojiansuonor", + "unicode": "e7ae", + "unicode_decimal": 59310 + }, + { + "icon_id": "36091929", + "name": "路人库select", + "font_class": "lurenkuselect", + "unicode": "e7b1", + "unicode_decimal": 59313 + }, + { + "icon_id": "36091930", + "name": "数据驾驶舱select", + "font_class": "shujujiashicangselect", + "unicode": "e7b2", + "unicode_decimal": 59314 + }, + { + "icon_id": "36091931", + "name": "实时解析select", + "font_class": "shishijiexiselect", + "unicode": "e7b4", + "unicode_decimal": 59316 + }, + { + "icon_id": "36091932", + "name": "实时解析nor", + "font_class": "shishijiexinor", + "unicode": "e7b9", + "unicode_decimal": 59321 + }, + { + "icon_id": "36091933", + "name": "机动车查询nor", + "font_class": "jidongchechaxunnor", + "unicode": "e7c1", + "unicode_decimal": 59329 + }, + { + "icon_id": "36091934", + "name": "路人库nor", + "font_class": "lurenkunor1", + "unicode": "e7cf", + "unicode_decimal": 59343 + }, + { + "icon_id": "36091935", + "name": "目标特征查询nor", + "font_class": "mubiaotezhengchaxunnor", + "unicode": "e7e1", + "unicode_decimal": 59361 + }, + { + "icon_id": "36091936", + "name": "预警记录select", + "font_class": "yujingjiluselect", + "unicode": "e7e2", + "unicode_decimal": 59362 + }, + { + "icon_id": "36091937", + "name": "目标特征查询select", + "font_class": "mubiaotezhengchaxunselect", + "unicode": "e7e3", + "unicode_decimal": 59363 + }, + { + "icon_id": "36091938", + "name": "非机动车查询select", + "font_class": "feijidongchechaxunselect", + "unicode": "e7e4", + "unicode_decimal": 59364 + }, + { + "icon_id": "36091939", + "name": "预警记录nor", + "font_class": "yujingjilunor", + "unicode": "e7e5", + "unicode_decimal": 59365 + }, + { + "icon_id": "36091940", + "name": "离线分析select", + "font_class": "lixianfenxiselect", + "unicode": "e7e6", + "unicode_decimal": 59366 + }, + { + "icon_id": "36091941", + "name": "回溯分析nor", + "font_class": "huisufenxinor", + "unicode": "e7e7", + "unicode_decimal": 59367 + }, + { + "icon_id": "36091942", + "name": "数据驾驶舱nor", + "font_class": "shujujiashicangnor", + "unicode": "e7e8", + "unicode_decimal": 59368 + }, + { + "icon_id": "36091943", + "name": "目标检索select", + "font_class": "mubiaojiansuoselect", + "unicode": "e7e9", + "unicode_decimal": 59369 + }, + { + "icon_id": "35927785", + "name": "框选工具", + "font_class": "kuangxuangongju", + "unicode": "e796", + "unicode_decimal": 59286 + }, + { + "icon_id": "35652507", + "name": "蜂鸟", + "font_class": "fengniao", + "unicode": "e792", + "unicode_decimal": 59282 + }, + { + "icon_id": "35648087", + "name": "展开", + "font_class": "zhankai", + "unicode": "e790", + "unicode_decimal": 59280 + }, + { + "icon_id": "35648088", + "name": "收起", + "font_class": "shouqi", + "unicode": "e791", + "unicode_decimal": 59281 + }, + { + "icon_id": "6056161", + "name": "时间", + "font_class": "shijian", + "unicode": "e786", + "unicode_decimal": 59270 + }, + { + "icon_id": "16105260", + "name": "定位", + "font_class": "dingwei2", + "unicode": "e613", + "unicode_decimal": 58899 + }, + { + "icon_id": "34994072", + "name": "人员", + "font_class": "renyuan", + "unicode": "e784", + "unicode_decimal": 59268 + }, + { + "icon_id": "34994073", + "name": "后台", + "font_class": "houtai", + "unicode": "e785", + "unicode_decimal": 59269 + }, + { + "icon_id": "34324424", + "name": "左", + "font_class": "zuo", + "unicode": "e781", + "unicode_decimal": 59265 + }, + { + "icon_id": "34324425", + "name": "右", + "font_class": "you", + "unicode": "e783", + "unicode_decimal": 59267 + }, + { + "icon_id": "33566924", + "name": "卡口", + "font_class": "kakou", + "unicode": "e780", + "unicode_decimal": 59264 + }, + { + "icon_id": "33541952", + "name": "预警", + "font_class": "yujing1", + "unicode": "e77e", + "unicode_decimal": 59262 + }, + { + "icon_id": "32497852", + "name": "预案", + "font_class": "yuan2", + "unicode": "e77d", + "unicode_decimal": 59261 + }, + { + "icon_id": "32189295", + "name": "模型碰撞", + "font_class": "moxingpengzhuang", + "unicode": "e777", + "unicode_decimal": 59255 + }, + { + "icon_id": "32189296", + "name": "模型碰撞nor", + "font_class": "moxingpengzhuangnor", + "unicode": "e778", + "unicode_decimal": 59256 + }, + { + "icon_id": "32189298", + "name": "路人库", + "font_class": "lurenku", + "unicode": "e77b", + "unicode_decimal": 59259 + }, + { + "icon_id": "32190455", + "name": "路人库nor", + "font_class": "lurenkunor", + "unicode": "e77c", + "unicode_decimal": 59260 + }, + { + "icon_id": "32477562", + "name": "实名", + "font_class": "shiming", + "unicode": "e776", + "unicode_decimal": 59254 + }, + { + "icon_id": "32356230", + "name": "缩小", + "font_class": "suoxiao2", + "unicode": "e774", + "unicode_decimal": 59252 + }, + { + "icon_id": "32356231", + "name": "放大", + "font_class": "fangda1", + "unicode": "e775", + "unicode_decimal": 59253 + }, + { + "icon_id": "32305021", + "name": "关闭", + "font_class": "guanbi2", + "unicode": "e772", + "unicode_decimal": 59250 + }, + { + "icon_id": "32305022", + "name": "返回", + "font_class": "fanhui1", + "unicode": "e773", + "unicode_decimal": 59251 + }, + { + "icon_id": "31879940", + "name": "线索摸排", + "font_class": "xiansuomopai", + "unicode": "e76f", + "unicode_decimal": 59247 + }, + { + "icon_id": "31879931", + "name": "线索摸排nor", + "font_class": "xiansuomopainor", + "unicode": "e76e", + "unicode_decimal": 59246 + }, + { + "icon_id": "31879839", + "name": "闸机预警", + "font_class": "zhajiyujing", + "unicode": "e770", + "unicode_decimal": 59248 + }, + { + "icon_id": "31879840", + "name": "闸机预警nor", + "font_class": "zhajiyujingnor", + "unicode": "e771", + "unicode_decimal": 59249 + }, + { + "icon_id": "31879545", + "name": "追踪配置", + "font_class": "zhuizongpeizhi", + "unicode": "e76c", + "unicode_decimal": 59244 + }, + { + "icon_id": "31879546", + "name": "追踪配置nor", + "font_class": "zhuizongpeizhinor", + "unicode": "e76d", + "unicode_decimal": 59245 + }, + { + "icon_id": "31298167", + "name": "大屏切换 ", + "font_class": "dapingqiehuan", + "unicode": "e76b", + "unicode_decimal": 59243 + }, + { + "icon_id": "31293396", + "name": "选择", + "font_class": "xuanze", + "unicode": "e769", + "unicode_decimal": 59241 + }, + { + "icon_id": "31293397", + "name": "筛选", + "font_class": "shaixuan1", + "unicode": "e76a", + "unicode_decimal": 59242 + }, + { + "icon_id": "31281773", + "name": "车卡设备", + "font_class": "chekashebei", + "unicode": "e764", + "unicode_decimal": 59236 + }, + { + "icon_id": "31281774", + "name": "imsi设备", + "font_class": "imsishebei", + "unicode": "e765", + "unicode_decimal": 59237 + }, + { + "icon_id": "31281775", + "name": "形体设备", + "font_class": "xingtishebei", + "unicode": "e766", + "unicode_decimal": 59238 + }, + { + "icon_id": "31281776", + "name": "人脸设备", + "font_class": "renlianshebei", + "unicode": "e767", + "unicode_decimal": 59239 + }, + { + "icon_id": "31281777", + "name": "wifi设备", + "font_class": "wifishebei", + "unicode": "e768", + "unicode_decimal": 59240 + }, + { + "icon_id": "31175954", + "name": "瞄准 (2)", + "font_class": "a-miaozhun2", + "unicode": "e762", + "unicode_decimal": 59234 + }, + { + "icon_id": "31175955", + "name": "编组 19", + "font_class": "a-bianzu19", + "unicode": "e763", + "unicode_decimal": 59235 + }, + { + "icon_id": "31109996", + "name": "翻页", + "font_class": "fanye", + "unicode": "e75e", + "unicode_decimal": 59230 + }, + { + "icon_id": "31109998", + "name": "身份证", + "font_class": "shenfenzheng", + "unicode": "e75f", + "unicode_decimal": 59231 + }, + { + "icon_id": "31110000", + "name": "地址", + "font_class": "dizhi", + "unicode": "e760", + "unicode_decimal": 59232 + }, + { + "icon_id": "31110045", + "name": "关闭", + "font_class": "guanbi", + "unicode": "e761", + "unicode_decimal": 59233 + }, + { + "icon_id": "31088147", + "name": "点位", + "font_class": "dianwei1", + "unicode": "e75b", + "unicode_decimal": 59227 + }, + { + "icon_id": "30952366", + "name": "微卡口", + "font_class": "weikakou", + "unicode": "e757", + "unicode_decimal": 59223 + }, + { + "icon_id": "30952367", + "name": "微卡口nor", + "font_class": "weikakounor", + "unicode": "e758", + "unicode_decimal": 59224 + }, + { + "icon_id": "30952370", + "name": "场所码", + "font_class": "changsuoma", + "unicode": "e759", + "unicode_decimal": 59225 + }, + { + "icon_id": "30952371", + "name": "场所码nor", + "font_class": "changsuomanor", + "unicode": "e75a", + "unicode_decimal": 59226 + }, + { + "icon_id": "9974390", + "name": "预警", + "font_class": "yujing", + "unicode": "e756", + "unicode_decimal": 59222 + }, + { + "icon_id": "29552660", + "name": "检索nor", + "font_class": "jiansuonor", + "unicode": "e747", + "unicode_decimal": 59207 + }, + { + "icon_id": "29552661", + "name": "同行人分析nor", + "font_class": "tonghangrenfenxinor1", + "unicode": "e748", + "unicode_decimal": 59208 + }, + { + "icon_id": "29552662", + "name": "智能研判nor", + "font_class": "zhinengyanpannor", + "unicode": "e749", + "unicode_decimal": 59209 + }, + { + "icon_id": "29552663", + "name": "布控预警nor", + "font_class": "bukongyujingnor", + "unicode": "e74a", + "unicode_decimal": 59210 + }, + { + "icon_id": "29552664", + "name": "布控任务nor", + "font_class": "bukongrenwunor", + "unicode": "e74b", + "unicode_decimal": 59211 + }, + { + "icon_id": "29552665", + "name": "电子地图nor", + "font_class": "dianziditunor", + "unicode": "e754", + "unicode_decimal": 59220 + }, + { + "icon_id": "29552666", + "name": "追踪nor", + "font_class": "zhuizongnor1", + "unicode": "e755", + "unicode_decimal": 59221 + }, + { + "icon_id": "29552487", + "name": "追踪", + "font_class": "zhuizong1", + "unicode": "e746", + "unicode_decimal": 59206 + }, + { + "icon_id": "29552240", + "name": "布控任务", + "font_class": "bukongrenwu3", + "unicode": "e74c", + "unicode_decimal": 59212 + }, + { + "icon_id": "29552241", + "name": "电子地图", + "font_class": "dianziditu", + "unicode": "e74d", + "unicode_decimal": 59213 + }, + { + "icon_id": "29552242", + "name": "布控预警", + "font_class": "bukongyujing", + "unicode": "e750", + "unicode_decimal": 59216 + }, + { + "icon_id": "29552243", + "name": "同行人分析", + "font_class": "tonghangrenfenxi1", + "unicode": "e751", + "unicode_decimal": 59217 + }, + { + "icon_id": "29552244", + "name": "智能研判", + "font_class": "zhinengyanpan", + "unicode": "e752", + "unicode_decimal": 59218 + }, + { + "icon_id": "29552245", + "name": "检索", + "font_class": "jiansuo1", + "unicode": "e753", + "unicode_decimal": 59219 + }, + { + "icon_id": "29416924", + "name": "开启聚类", + "font_class": "kaiqijulei", + "unicode": "e745", + "unicode_decimal": 59205 + }, + { + "icon_id": "29416893", + "name": "同步", + "font_class": "tongbu", + "unicode": "e744", + "unicode_decimal": 59204 + }, + { + "icon_id": "28913138", + "name": "同行人分析", + "font_class": "tonghangrenfenxi", + "unicode": "e743", + "unicode_decimal": 59203 + }, + { + "icon_id": "28913111", + "name": "同行人分析nor", + "font_class": "tonghangrenfenxinor", + "unicode": "e742", + "unicode_decimal": 59202 + }, + { + "icon_id": "28603735", + "name": "技战应用", + "font_class": "jizhanyingyong", + "unicode": "e741", + "unicode_decimal": 59201 + }, + { + "icon_id": "28122666", + "name": "海康人脸布控nor", + "font_class": "haikangrenlianbukongnor", + "unicode": "e740", + "unicode_decimal": 59200 + }, + { + "icon_id": "28122657", + "name": "海康人脸布控", + "font_class": "haikangrenlianbukong", + "unicode": "e73f", + "unicode_decimal": 59199 + }, + { + "icon_id": "28028942", + "name": "拓展手段提示", + "font_class": "tuozhanshouduantishi", + "unicode": "e73e", + "unicode_decimal": 59198 + }, + { + "icon_id": "28022750", + "name": "返回摸排列表", + "font_class": "fanhuimopailiebiao", + "unicode": "e73d", + "unicode_decimal": 59197 + }, + { + "icon_id": "26859533", + "name": "头盔检测nor", + "font_class": "toukuijiancenor", + "unicode": "e73c", + "unicode_decimal": 59196 + }, + { + "icon_id": "26859527", + "name": "头盔检测", + "font_class": "toukuijiance", + "unicode": "e718", + "unicode_decimal": 59160 + }, + { + "icon_id": "26859240", + "name": "追形", + "font_class": "zhuixing", + "unicode": "e717", + "unicode_decimal": 59159 + }, + { + "icon_id": "26840606", + "name": "提示", + "font_class": "tishi4", + "unicode": "e73b", + "unicode_decimal": 59195 + }, + { + "icon_id": "26691196", + "name": "筛选(飞机)", + "font_class": "a-shaixuanfeiji", + "unicode": "e733", + "unicode_decimal": 59187 + }, + { + "icon_id": "26690614", + "name": "自动调整范围(飞机)", + "font_class": "a-zidongtiaozhengfanweifeiji", + "unicode": "e73a", + "unicode_decimal": 59194 + }, + { + "icon_id": "26630396", + "name": "盒子运维", + "font_class": "heziyunwei", + "unicode": "e739", + "unicode_decimal": 59193 + }, + { + "icon_id": "26620389", + "name": "切换", + "font_class": "qiehuan", + "unicode": "e738", + "unicode_decimal": 59192 + }, + { + "icon_id": "26523829", + "name": "第三方消息nor", + "font_class": "disanfangxiaoxinor", + "unicode": "e737", + "unicode_decimal": 59191 + }, + { + "icon_id": "26523827", + "name": "第三方消息", + "font_class": "disanfangxiaoxi", + "unicode": "e736", + "unicode_decimal": 59190 + }, + { + "icon_id": "25930570", + "name": "导航", + "font_class": "daohang", + "unicode": "e735", + "unicode_decimal": 59189 + }, + { + "icon_id": "25930569", + "name": "用户", + "font_class": "yonghu", + "unicode": "e734", + "unicode_decimal": 59188 + }, + { + "icon_id": "25878393", + "name": "飞机", + "font_class": "feiji", + "unicode": "e732", + "unicode_decimal": 59186 + }, + { + "icon_id": "25809480", + "name": "结束追踪", + "font_class": "jieshuzhuizong", + "unicode": "e730", + "unicode_decimal": 59184 + }, + { + "icon_id": "25809481", + "name": "回溯周边", + "font_class": "huisuzhoubian", + "unicode": "e731", + "unicode_decimal": 59185 + }, + { + "icon_id": "25809477", + "name": "继续追踪", + "font_class": "jixuzhuizong", + "unicode": "e72d", + "unicode_decimal": 59181 + }, + { + "icon_id": "25809478", + "name": "调整范围", + "font_class": "tiaozhengfanwei", + "unicode": "e72e", + "unicode_decimal": 59182 + }, + { + "icon_id": "25809479", + "name": "检索", + "font_class": "jiansuo", + "unicode": "e72f", + "unicode_decimal": 59183 + }, + { + "icon_id": "25796784", + "name": "轨迹", + "font_class": "guiji", + "unicode": "e72c", + "unicode_decimal": 59180 + }, + { + "icon_id": "25796636", + "name": "基础信息", + "font_class": "jichuxinxi", + "unicode": "e72b", + "unicode_decimal": 59179 + }, + { + "icon_id": "25796635", + "name": "档案摘要", + "font_class": "danganzhaiyao", + "unicode": "e72a", + "unicode_decimal": 59178 + }, + { + "icon_id": "25778781", + "name": "精准布控icon_on", + "font_class": "jingzhunbukongicon_on", + "unicode": "e728", + "unicode_decimal": 59176 + }, + { + "icon_id": "25778782", + "name": "精准布控icon_off", + "font_class": "jingzhunbukongicon_off", + "unicode": "e729", + "unicode_decimal": 59177 + }, + { + "icon_id": "25528851", + "name": "跳转", + "font_class": "tiaozhuan", + "unicode": "e727", + "unicode_decimal": 59175 + }, + { + "icon_id": "25364398", + "name": "设置", + "font_class": "shezhi", + "unicode": "e726", + "unicode_decimal": 59174 + }, + { + "icon_id": "25364282", + "name": "帮助", + "font_class": "bangzhu1", + "unicode": "e725", + "unicode_decimal": 59173 + }, + { + "icon_id": "25156298", + "name": "刷新", + "font_class": "shuaxin1", + "unicode": "e724", + "unicode_decimal": 59172 + }, + { + "icon_id": "25011432", + "name": "多素材备份", + "font_class": "duosucaibeifen", + "unicode": "e722", + "unicode_decimal": 59170 + }, + { + "icon_id": "25011433", + "name": "多素材", + "font_class": "duosucai", + "unicode": "e723", + "unicode_decimal": 59171 + }, + { + "icon_id": "24963746", + "name": "数据统计", + "font_class": "shujutongji", + "unicode": "e721", + "unicode_decimal": 59169 + }, + { + "icon_id": "24944893", + "name": "人脸", + "font_class": "renlian", + "unicode": "e71c", + "unicode_decimal": 59164 + }, + { + "icon_id": "24944894", + "name": "形体", + "font_class": "xingti", + "unicode": "e71d", + "unicode_decimal": 59165 + }, + { + "icon_id": "24944895", + "name": "机动车", + "font_class": "jidongche", + "unicode": "e71e", + "unicode_decimal": 59166 + }, + { + "icon_id": "24944896", + "name": "回溯分析", + "font_class": "huisufenxi4", + "unicode": "e71f", + "unicode_decimal": 59167 + }, + { + "icon_id": "24944897", + "name": "离线分析", + "font_class": "lixianfenxi4", + "unicode": "e720", + "unicode_decimal": 59168 + }, + { + "icon_id": "24944892", + "name": "非机动车", + "font_class": "feijidongche", + "unicode": "e71b", + "unicode_decimal": 59163 + }, + { + "icon_id": "24936781", + "name": "数据大屏", + "font_class": "shujudaping", + "unicode": "e71a", + "unicode_decimal": 59162 + }, + { + "icon_id": "24913034", + "name": "配置算法", + "font_class": "peizhisuanfa", + "unicode": "e719", + "unicode_decimal": 59161 + }, + { + "icon_id": "24685855", + "name": "追踪", + "font_class": "zhuizong", + "unicode": "e715", + "unicode_decimal": 59157 + }, + { + "icon_id": "24685856", + "name": "追踪nor", + "font_class": "zhuizongnor", + "unicode": "e716", + "unicode_decimal": 59158 + }, + { + "icon_id": "24661441", + "name": "点位", + "font_class": "dianwei", + "unicode": "e714", + "unicode_decimal": 59156 + }, + { + "icon_id": "24661326", + "name": "Container", + "font_class": "Container", + "unicode": "e713", + "unicode_decimal": 59155 + }, + { + "icon_id": "24661126", + "name": "Attachment", + "font_class": "Attachment", + "unicode": "e712", + "unicode_decimal": 59154 + }, + { + "icon_id": "24630118", + "name": "叉", + "font_class": "cha", + "unicode": "e711", + "unicode_decimal": 59153 + }, + { + "icon_id": "24630116", + "name": "勾", + "font_class": "gou", + "unicode": "e710", + "unicode_decimal": 59152 + }, + { + "icon_id": "24630033", + "name": "导入", + "font_class": "daoru", + "unicode": "e70f", + "unicode_decimal": 59151 + }, + { + "icon_id": "24607250", + "name": "全息检索", + "font_class": "quanxijiansuo", + "unicode": "e70e", + "unicode_decimal": 59150 + }, + { + "icon_id": "24604837", + "name": "查看监控", + "font_class": "chakanjiankong", + "unicode": "e70c", + "unicode_decimal": 59148 + }, + { + "icon_id": "24604704", + "name": "提示", + "font_class": "tishi3", + "unicode": "e70d", + "unicode_decimal": 59149 + }, + { + "icon_id": "24604626", + "name": "黑夜模式", + "font_class": "heiyemoshi", + "unicode": "e70b", + "unicode_decimal": 59147 + }, + { + "icon_id": "24604623", + "name": "正常模式", + "font_class": "zhengchangmoshi", + "unicode": "e70a", + "unicode_decimal": 59146 + }, + { + "icon_id": "24554896", + "name": "定位", + "font_class": "dingwei1", + "unicode": "e709", + "unicode_decimal": 59145 + }, + { + "icon_id": "24442799", + "name": "排序", + "font_class": "paixu", + "unicode": "e708", + "unicode_decimal": 59144 + }, + { + "icon_id": "24420402", + "name": "添加预案", + "font_class": "tianjiayuan", + "unicode": "e707", + "unicode_decimal": 59143 + }, + { + "icon_id": "23916590", + "name": "聚类档案库nor", + "font_class": "juleidangankunor", + "unicode": "e705", + "unicode_decimal": 59141 + }, + { + "icon_id": "23916591", + "name": "聚类档案库", + "font_class": "juleidanganku", + "unicode": "e706", + "unicode_decimal": 59142 + }, + { + "icon_id": "23499142", + "name": "关联", + "font_class": "guanlian", + "unicode": "e704", + "unicode_decimal": 59140 + }, + { + "icon_id": "23444887", + "name": "人脸标注", + "font_class": "renlianbiaozhu", + "unicode": "e703", + "unicode_decimal": 59139 + }, + { + "icon_id": "23304285", + "name": "聚类结果", + "font_class": "juleijieguo", + "unicode": "e6ec", + "unicode_decimal": 59116 + }, + { + "icon_id": "23304286", + "name": "聚类任务nor", + "font_class": "juleirenwunor", + "unicode": "e6fb", + "unicode_decimal": 59131 + }, + { + "icon_id": "23304287", + "name": "聚类结果nor", + "font_class": "juleijieguonor", + "unicode": "e701", + "unicode_decimal": 59137 + }, + { + "icon_id": "23304288", + "name": "聚类任务", + "font_class": "juleirenwu", + "unicode": "e702", + "unicode_decimal": 59138 + }, + { + "icon_id": "20290678", + "name": "重置", + "font_class": "zhongzhi3", + "unicode": "e8ff", + "unicode_decimal": 59647 + }, + { + "icon_id": "23210742", + "name": "旋转", + "font_class": "xuanzhuan1", + "unicode": "e6fd", + "unicode_decimal": 59133 + }, + { + "icon_id": "23254545", + "name": "双目标注", + "font_class": "shuangmubiaozhu1", + "unicode": "e700", + "unicode_decimal": 59136 + }, + { + "icon_id": "23203403", + "name": "手动框选", + "font_class": "shoudongkuangxuan", + "unicode": "e6f9", + "unicode_decimal": 59129 + }, + { + "icon_id": "23234078", + "name": "暂停", + "font_class": "zanting1", + "unicode": "e6fe", + "unicode_decimal": 59134 + }, + { + "icon_id": "23234079", + "name": "中止", + "font_class": "zhongzhi1", + "unicode": "e6ff", + "unicode_decimal": 59135 + }, + { + "icon_id": "23203404", + "name": "手动", + "font_class": "shoudong", + "unicode": "e6fa", + "unicode_decimal": 59130 + }, + { + "icon_id": "23203406", + "name": "自动", + "font_class": "zidong", + "unicode": "e6fc", + "unicode_decimal": 59132 + }, + { + "icon_id": "23203224", + "name": "诊断", + "font_class": "zhenduan", + "unicode": "e6f8", + "unicode_decimal": 59128 + }, + { + "icon_id": "23203126", + "name": "Check-Circle-Fill", + "font_class": "Check-Circle-Fill1", + "unicode": "e6f3", + "unicode_decimal": 59123 + }, + { + "icon_id": "23203127", + "name": "Info--Circle-Fill", + "font_class": "Info--Circle-Fill", + "unicode": "e6f4", + "unicode_decimal": 59124 + }, + { + "icon_id": "23203128", + "name": "Close-Circle-Fill", + "font_class": "Close-Circle-Fill", + "unicode": "e6f5", + "unicode_decimal": 59125 + }, + { + "icon_id": "23203129", + "name": "Warning-Circle-Fill", + "font_class": "Warning-Circle-Fill", + "unicode": "e6f6", + "unicode_decimal": 59126 + }, + { + "icon_id": "23203130", + "name": "Question-Circle-Fill", + "font_class": "Question-Circle-Fill", + "unicode": "e6f7", + "unicode_decimal": 59127 + }, + { + "icon_id": "23071890", + "name": "暂存架", + "font_class": "zancunjia", + "unicode": "e6f2", + "unicode_decimal": 59122 + }, + { + "icon_id": "22907690", + "name": "Check-Circle-Fill", + "font_class": "Check-Circle-Fill", + "unicode": "e6f1", + "unicode_decimal": 59121 + }, + { + "icon_id": "22884339", + "name": "图片集", + "font_class": "tupianji", + "unicode": "e6f0", + "unicode_decimal": 59120 + }, + { + "icon_id": "22871348", + "name": "全屏", + "font_class": "quanping1", + "unicode": "e6ed", + "unicode_decimal": 59117 + }, + { + "icon_id": "22871349", + "name": "音量", + "font_class": "yinliang", + "unicode": "e6ee", + "unicode_decimal": 59118 + }, + { + "icon_id": "22871350", + "name": "缩小", + "font_class": "suoxiao1", + "unicode": "e6ef", + "unicode_decimal": 59119 + }, + { + "icon_id": "22658169", + "name": "home", + "font_class": "home", + "unicode": "e6eb", + "unicode_decimal": 59115 + }, + { + "icon_id": "22658130", + "name": "最小化", + "font_class": "zuixiaohua", + "unicode": "e6e9", + "unicode_decimal": 59113 + }, + { + "icon_id": "22658131", + "name": "最大化", + "font_class": "zuidahua", + "unicode": "e6ea", + "unicode_decimal": 59114 + }, + { + "icon_id": "22658054", + "name": "标准化", + "font_class": "biaozhunhua", + "unicode": "e6e6", + "unicode_decimal": 59110 + }, + { + "icon_id": "22544357", + "name": "聚类", + "font_class": "julei", + "unicode": "e6e5", + "unicode_decimal": 59109 + }, + { + "icon_id": "21829058", + "name": "密码可见", + "font_class": "bianzu", + "unicode": "e6e7", + "unicode_decimal": 59111 + }, + { + "icon_id": "21829059", + "name": "密码不可见", + "font_class": "bianzu3", + "unicode": "e6e8", + "unicode_decimal": 59112 + }, + { + "icon_id": "21780473", + "name": "编组 7", + "font_class": "bianzu7", + "unicode": "e6e3", + "unicode_decimal": 59107 + }, + { + "icon_id": "21780474", + "name": "编组 2", + "font_class": "bianzu2", + "unicode": "e6e4", + "unicode_decimal": 59108 + }, + { + "icon_id": "21738272", + "name": "卡片切换", + "font_class": "kapianqiehuan", + "unicode": "e6e2", + "unicode_decimal": 59106 + }, + { + "icon_id": "21695431", + "name": "多边形", + "font_class": "duobianxing1", + "unicode": "e6e0", + "unicode_decimal": 59104 + }, + { + "icon_id": "21695432", + "name": "方", + "font_class": "fang1", + "unicode": "e6e1", + "unicode_decimal": 59105 + }, + { + "icon_id": "21695430", + "name": "圆", + "font_class": "yuan1", + "unicode": "e6df", + "unicode_decimal": 59103 + }, + { + "icon_id": "21695426", + "name": "测距离", + "font_class": "cejuli", + "unicode": "e6de", + "unicode_decimal": 59102 + }, + { + "icon_id": "21694880", + "name": "网格框选nor", + "font_class": "wanggekuangxuannor", + "unicode": "e6dc", + "unicode_decimal": 59100 + }, + { + "icon_id": "21694881", + "name": "路径框选nor", + "font_class": "lujingkuangxuannor", + "unicode": "e6dd", + "unicode_decimal": 59101 + }, + { + "icon_id": "21600424", + "name": "穿梭", + "font_class": "chuansuo", + "unicode": "e6db", + "unicode_decimal": 59099 + }, + { + "icon_id": "21248188", + "name": "边缘盒子", + "font_class": "bianyuanhezinor", + "unicode": "e6d8", + "unicode_decimal": 59096 + }, + { + "icon_id": "21248189", + "name": "误检库", + "font_class": "wujiankuhov", + "unicode": "e6d9", + "unicode_decimal": 59097 + }, + { + "icon_id": "21248190", + "name": "操作日志", + "font_class": "caozuorizhinor", + "unicode": "e6da", + "unicode_decimal": 59098 + }, + { + "icon_id": "13838312", + "name": "collect_dot", + "font_class": "collect_dot", + "unicode": "e619", + "unicode_decimal": 58905 + }, + { + "icon_id": "20982904", + "name": "出现定位bg", + "font_class": "chuxiandingweibg", + "unicode": "e6d4", + "unicode_decimal": 59092 + }, + { + "icon_id": "20982905", + "name": "出现定位icon", + "font_class": "chuxiandingweiicon", + "unicode": "e6d5", + "unicode_decimal": 59093 + }, + { + "icon_id": "20982843", + "name": "摄像头定位bg", + "font_class": "shexiangtoudingweibg", + "unicode": "e6d6", + "unicode_decimal": 59094 + }, + { + "icon_id": "20982844", + "name": "摄像头定位icon", + "font_class": "shexiangtoudingweiicon", + "unicode": "e6d7", + "unicode_decimal": 59095 + }, + { + "icon_id": "20933994", + "name": "下发结果", + "font_class": "xiafajieguo", + "unicode": "e6d2", + "unicode_decimal": 59090 + }, + { + "icon_id": "20933996", + "name": "导出", + "font_class": "daochu1", + "unicode": "e6d3", + "unicode_decimal": 59091 + }, + { + "icon_id": "20933901", + "name": "最近出现", + "font_class": "zuijinchuxian", + "unicode": "e6cc", + "unicode_decimal": 59084 + }, + { + "icon_id": "20933902", + "name": "累计抓拍", + "font_class": "leijizhuapai", + "unicode": "e6d0", + "unicode_decimal": 59088 + }, + { + "icon_id": "20933907", + "name": "异常事件", + "font_class": "yichangshijian", + "unicode": "e6d1", + "unicode_decimal": 59089 + }, + { + "icon_id": "20925063", + "name": "定位", + "font_class": "dingwei", + "unicode": "e6cb", + "unicode_decimal": 59083 + }, + { + "icon_id": "20894407", + "name": "图片", + "font_class": "tupian", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "20433461", + "name": "失败原因", + "font_class": "wenti", + "unicode": "e6ac", + "unicode_decimal": 59052 + }, + { + "icon_id": "20432083", + "name": "点位-已选中", + "font_class": "lixian1", + "unicode": "e6ab", + "unicode_decimal": 59051 + }, + { + "icon_id": "20415322", + "name": "异常", + "font_class": "yichang", + "unicode": "e6a8", + "unicode_decimal": 59048 + }, + { + "icon_id": "19332242", + "name": "追形-修改点位", + "font_class": "zhuixing-xiugaidianwei", + "unicode": "e6a7", + "unicode_decimal": 59047 + }, + { + "icon_id": "19049729", + "name": "问号", + "font_class": "wenhao1", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "19041610", + "name": "地图_定位", + "font_class": "ditu_dingwei", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "19041571", + "name": "地图_放大", + "font_class": "ditu_fangda", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "19041572", + "name": "地图_缩小", + "font_class": "ditu_suoxiao", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "19039288", + "name": "查看布控任务", + "font_class": "chakanbukongrenwu", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "18985662", + "name": "裂图", + "font_class": "lietu", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "18907313", + "name": "重置", + "font_class": "zhongzhi", + "unicode": "e67e", + "unicode_decimal": 59006 + }, + { + "icon_id": "18907314", + "name": "下拉大", + "font_class": "xialada", + "unicode": "e67f", + "unicode_decimal": 59007 + }, + { + "icon_id": "18905520", + "name": "智能关联_形体", + "font_class": "zhinengguanlian_xingti", + "unicode": "e67b", + "unicode_decimal": 59003 + }, + { + "icon_id": "18905521", + "name": "智能关联_人脸", + "font_class": "zhinengguanlian_renlian", + "unicode": "e67c", + "unicode_decimal": 59004 + }, + { + "icon_id": "16018461", + "name": "下箭头", + "font_class": "xiajiantou", + "unicode": "e75c", + "unicode_decimal": 59228 + }, + { + "icon_id": "18885308", + "name": "智能关联_小箭头", + "font_class": "zhinengguanlian_xiaojiantou", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "18883781", + "name": "智能关联_箭头", + "font_class": "zhinengguanlian_jiantou", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "16018463", + "name": "上箭头", + "font_class": "shangjiantou", + "unicode": "e75d", + "unicode_decimal": 59229 + }, + { + "icon_id": "18686782", + "name": "版本信息", + "font_class": "banbenxinxi", + "unicode": "e679", + "unicode_decimal": 59001 + }, + { + "icon_id": "1330924", + "name": "问号", + "font_class": "wenhao", + "unicode": "e61f", + "unicode_decimal": 58911 + }, + { + "icon_id": "17614568", + "name": "编辑人员", + "font_class": "bianjirenyuan", + "unicode": "e7e0", + "unicode_decimal": 59360 + }, + { + "icon_id": "17416216", + "name": "提示", + "font_class": "tishi2", + "unicode": "e7df", + "unicode_decimal": 59359 + }, + { + "icon_id": "17292128", + "name": "摄像机", + "font_class": "shexiangji2", + "unicode": "e7de", + "unicode_decimal": 59358 + }, + { + "icon_id": "17255570", + "name": "轨迹追踪", + "font_class": "guijizhuizong", + "unicode": "e7dd", + "unicode_decimal": 59357 + }, + { + "icon_id": "17255389", + "name": "截帧", + "font_class": "jiezhen1", + "unicode": "e7dc", + "unicode_decimal": 59356 + }, + { + "icon_id": "17254424", + "name": "添加轨迹回溯", + "font_class": "tianjiaguijihuisu", + "unicode": "e7db", + "unicode_decimal": 59355 + }, + { + "icon_id": "17251847", + "name": "停止", + "font_class": "tingzhi", + "unicode": "e7cd", + "unicode_decimal": 59341 + }, + { + "icon_id": "17251960", + "name": "包围圈", + "font_class": "baoweiquan", + "unicode": "e7ce", + "unicode_decimal": 59342 + }, + { + "icon_id": "17252131", + "name": "上传视频", + "font_class": "shangchuanshipin", + "unicode": "e7d0", + "unicode_decimal": 59344 + }, + { + "icon_id": "17252147", + "name": "移动", + "font_class": "yidong", + "unicode": "e7d1", + "unicode_decimal": 59345 + }, + { + "icon_id": "17252288", + "name": "创建新布控", + "font_class": "chuangjianxinbukong1", + "unicode": "e7d2", + "unicode_decimal": 59346 + }, + { + "icon_id": "17253015", + "name": "移除", + "font_class": "yichu1", + "unicode": "e7d3", + "unicode_decimal": 59347 + }, + { + "icon_id": "17253033", + "name": "提示", + "font_class": "tishi1", + "unicode": "e7d4", + "unicode_decimal": 59348 + }, + { + "icon_id": "17253112", + "name": "VS", + "font_class": "VS", + "unicode": "e7d5", + "unicode_decimal": 59349 + }, + { + "icon_id": "17253139", + "name": "全局总览", + "font_class": "quanjuzonglan", + "unicode": "e7d6", + "unicode_decimal": 59350 + }, + { + "icon_id": "17253187", + "name": "查看分析任务", + "font_class": "chakanfenxirenwu1", + "unicode": "e7d7", + "unicode_decimal": 59351 + }, + { + "icon_id": "17253208", + "name": "消息", + "font_class": "xiaoxi", + "unicode": "e7d8", + "unicode_decimal": 59352 + }, + { + "icon_id": "17254065", + "name": "用户名", + "font_class": "yonghuming", + "unicode": "e7d9", + "unicode_decimal": 59353 + }, + { + "icon_id": "17254204", + "name": "退出", + "font_class": "tuichu", + "unicode": "e7da", + "unicode_decimal": 59354 + }, + { + "icon_id": "17251737", + "name": "轨迹追踪nor", + "font_class": "guijizhuizongnor", + "unicode": "e7cb", + "unicode_decimal": 59339 + }, + { + "icon_id": "17251738", + "name": "轨迹追踪", + "font_class": "guijizhuizong2", + "unicode": "e7cc", + "unicode_decimal": 59340 + }, + { + "icon_id": "17190034", + "name": "布控任务", + "font_class": "bukongrenwu1", + "unicode": "e7b7", + "unicode_decimal": 59319 + }, + { + "icon_id": "17190035", + "name": "摄像机", + "font_class": "shexiangji", + "unicode": "e7b8", + "unicode_decimal": 59320 + }, + { + "icon_id": "17190037", + "name": "预警地图", + "font_class": "yujingditu", + "unicode": "e7ba", + "unicode_decimal": 59322 + }, + { + "icon_id": "17190038", + "name": "离线分析", + "font_class": "lixianfenxi2", + "unicode": "e7bb", + "unicode_decimal": 59323 + }, + { + "icon_id": "17190039", + "name": "预案管理", + "font_class": "yuanguanli1", + "unicode": "e7bc", + "unicode_decimal": 59324 + }, + { + "icon_id": "17190040", + "name": "档案库", + "font_class": "danganku", + "unicode": "e7bd", + "unicode_decimal": 59325 + }, + { + "icon_id": "17190041", + "name": "回溯分析", + "font_class": "huisufenxi2", + "unicode": "e7be", + "unicode_decimal": 59326 + }, + { + "icon_id": "17190042", + "name": "库内检索", + "font_class": "kuneijiansuo", + "unicode": "e7bf", + "unicode_decimal": 59327 + }, + { + "icon_id": "17190043", + "name": "结构化查询", + "font_class": "jiegouhuachaxun", + "unicode": "e7c0", + "unicode_decimal": 59328 + }, + { + "icon_id": "17190062", + "name": "布控任务", + "font_class": "bukongrenwu2", + "unicode": "e7c2", + "unicode_decimal": 59330 + }, + { + "icon_id": "17190063", + "name": "预案管理", + "font_class": "yuanguanli2", + "unicode": "e7c3", + "unicode_decimal": 59331 + }, + { + "icon_id": "17190064", + "name": "摄像机", + "font_class": "shexiangji1", + "unicode": "e7c4", + "unicode_decimal": 59332 + }, + { + "icon_id": "17190065", + "name": "库内检索", + "font_class": "kuneijiansuo1", + "unicode": "e7c5", + "unicode_decimal": 59333 + }, + { + "icon_id": "17190066", + "name": "离线分析", + "font_class": "lixianfenxi3", + "unicode": "e7c6", + "unicode_decimal": 59334 + }, + { + "icon_id": "17190067", + "name": "档案库", + "font_class": "danganku1", + "unicode": "e7c7", + "unicode_decimal": 59335 + }, + { + "icon_id": "17190068", + "name": "预警地图", + "font_class": "yujingditu1", + "unicode": "e7c8", + "unicode_decimal": 59336 + }, + { + "icon_id": "17190069", + "name": "回溯分析", + "font_class": "huisufenxi3", + "unicode": "e7c9", + "unicode_decimal": 59337 + }, + { + "icon_id": "17190167", + "name": "结构化查询nor", + "font_class": "jiegouhuachaxunnor", + "unicode": "e7ca", + "unicode_decimal": 59338 + }, + { + "icon_id": "17073967", + "name": "创建新布控", + "font_class": "chuangjianxinbukong", + "unicode": "e7b6", + "unicode_decimal": 59318 + }, + { + "icon_id": "16018746", + "name": "框选", + "font_class": "kuangxuan", + "unicode": "e77f", + "unicode_decimal": 59263 + }, + { + "icon_id": "16018715", + "name": "高级筛选", + "font_class": "gaojishaixuan", + "unicode": "e779", + "unicode_decimal": 59257 + }, + { + "icon_id": "16018716", + "name": "高级筛选收起", + "font_class": "gaojishaixuanshouqi", + "unicode": "e77a", + "unicode_decimal": 59258 + }, + { + "icon_id": "16924391", + "name": "布控任务", + "font_class": "bukongrenwu", + "unicode": "e7b5", + "unicode_decimal": 59317 + }, + { + "icon_id": "16018385", + "name": "日期", + "font_class": "riqi", + "unicode": "e74f", + "unicode_decimal": 59215 + }, + { + "icon_id": "16301333", + "name": "时间切换", + "font_class": "shijianqiehuan", + "unicode": "e797", + "unicode_decimal": 59287 + }, + { + "icon_id": "16905699", + "name": "授权", + "font_class": "shouquan1", + "unicode": "e7b3", + "unicode_decimal": 59315 + }, + { + "icon_id": "647455", + "name": "播放", + "font_class": "video-play", + "unicode": "e653", + "unicode_decimal": 58963 + }, + { + "icon_id": "16611521", + "name": "实时分析", + "font_class": "shishifenxi", + "unicode": "e7af", + "unicode_decimal": 59311 + }, + { + "icon_id": "16611522", + "name": "查看分析任务", + "font_class": "chakanfenxirenwu", + "unicode": "e7b0", + "unicode_decimal": 59312 + }, + { + "icon_id": "16611335", + "name": "结构化分析", + "font_class": "jiegouhuafenxi", + "unicode": "e7ad", + "unicode_decimal": 59309 + }, + { + "icon_id": "14985809", + "name": "添加轨迹", + "font_class": "tianjiaguiji2", + "unicode": "e6aa", + "unicode_decimal": 59050 + }, + { + "icon_id": "15056394", + "name": "添加检索目标", + "font_class": "tianjiajiansuomubiao", + "unicode": "e6b0", + "unicode_decimal": 59056 + }, + { + "icon_id": "14677591", + "name": "add", + "font_class": "add", + "unicode": "e661", + "unicode_decimal": 58977 + }, + { + "icon_id": "16320529", + "name": "地点", + "font_class": "didian", + "unicode": "e798", + "unicode_decimal": 59288 + }, + { + "icon_id": "16406202", + "name": "播放hov", + "font_class": "bofanghov", + "unicode": "e79f", + "unicode_decimal": 59295 + }, + { + "icon_id": "16406205", + "name": "播放", + "font_class": "bofang3", + "unicode": "e7a0", + "unicode_decimal": 59296 + }, + { + "icon_id": "16018760", + "name": "警告", + "font_class": "jinggao", + "unicode": "e788", + "unicode_decimal": 59272 + }, + { + "icon_id": "16018761", + "name": "提示", + "font_class": "tishi", + "unicode": "e789", + "unicode_decimal": 59273 + }, + { + "icon_id": "16018772", + "name": "帮助", + "font_class": "bangzhu", + "unicode": "e78a", + "unicode_decimal": 59274 + }, + { + "icon_id": "16018774", + "name": "关闭", + "font_class": "guanbi1", + "unicode": "e78b", + "unicode_decimal": 59275 + }, + { + "icon_id": "16018783", + "name": "成功", + "font_class": "chenggong", + "unicode": "e78c", + "unicode_decimal": 59276 + }, + { + "icon_id": "16438442", + "name": "前往", + "font_class": "qianwang", + "unicode": "e7ac", + "unicode_decimal": 59308 + }, + { + "icon_id": "16437744", + "name": "授权", + "font_class": "shouquan", + "unicode": "e7ab", + "unicode_decimal": 59307 + }, + { + "icon_id": "16436820", + "name": "经纬度", + "font_class": "jingweidu", + "unicode": "e7aa", + "unicode_decimal": 59306 + }, + { + "icon_id": "16018384", + "name": "删除", + "font_class": "shanchu1", + "unicode": "e74e", + "unicode_decimal": 59214 + }, + { + "icon_id": "16018750", + "name": "导出", + "font_class": "daochu", + "unicode": "e782", + "unicode_decimal": 59266 + }, + { + "icon_id": "16436718", + "name": "资源管理", + "font_class": "ziyuanguanli", + "unicode": "e7a4", + "unicode_decimal": 59300 + }, + { + "icon_id": "16436719", + "name": "服务器授权", + "font_class": "fuwuqishouquan", + "unicode": "e7a5", + "unicode_decimal": 59301 + }, + { + "icon_id": "16436720", + "name": "修改密码", + "font_class": "xiugaimima", + "unicode": "e7a6", + "unicode_decimal": 59302 + }, + { + "icon_id": "16436721", + "name": "账号管理", + "font_class": "zhanghaoguanli", + "unicode": "e7a7", + "unicode_decimal": 59303 + }, + { + "icon_id": "16436722", + "name": "算力配额", + "font_class": "suanlipeie", + "unicode": "e7a8", + "unicode_decimal": 59304 + }, + { + "icon_id": "16436723", + "name": "VMS配置", + "font_class": "VMSpeizhi", + "unicode": "e7a9", + "unicode_decimal": 59305 + }, + { + "icon_id": "16059984", + "name": "添加", + "font_class": "tianjia1", + "unicode": "e794", + "unicode_decimal": 59284 + }, + { + "icon_id": "16059985", + "name": "移除", + "font_class": "yichu", + "unicode": "e795", + "unicode_decimal": 59285 + }, + { + "icon_id": "15809722", + "name": "路径", + "font_class": "lujing", + "unicode": "e6cf", + "unicode_decimal": 59087 + }, + { + "icon_id": "15809625", + "name": "监控信息", + "font_class": "jiankongxinxi", + "unicode": "e6c8", + "unicode_decimal": 59080 + }, + { + "icon_id": "15809627", + "name": "范围", + "font_class": "fanwei", + "unicode": "e6c9", + "unicode_decimal": 59081 + }, + { + "icon_id": "15809628", + "name": "案发地点", + "font_class": "anfadidian", + "unicode": "e6ca", + "unicode_decimal": 59082 + }, + { + "icon_id": "15809688", + "name": "工具箱", + "font_class": "gongjuxiang", + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "15809690", + "name": "工具箱关闭1", + "font_class": "gongjuxiangguanbi1", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "15663416", + "name": "截侦", + "font_class": "jiezhen", + "unicode": "e6c2", + "unicode_decimal": 59074 + }, + { + "icon_id": "15660940", + "name": "回溯分析1", + "font_class": "huisufenxi1", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "15660941", + "name": "回溯分析", + "font_class": "huisufenxi", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "15492023", + "name": "添加视频文件", + "font_class": "tianjiashipinwenjian1", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "15415140", + "name": "加载失败", + "font_class": "jiazaishibai", + "unicode": "e6c3", + "unicode_decimal": 59075 + }, + { + "icon_id": "15415141", + "name": "刷新", + "font_class": "shuaxin", + "unicode": "e6c4", + "unicode_decimal": 59076 + }, + { + "icon_id": "15340138", + "name": "全屏", + "font_class": "quanping", + "unicode": "e6c0", + "unicode_decimal": 59072 + }, + { + "icon_id": "15340139", + "name": "取消全屏", + "font_class": "quxiaoquanping", + "unicode": "e6c1", + "unicode_decimal": 59073 + }, + { + "icon_id": "15329202", + "name": "视频播放", + "font_class": "shipinbofang", + "unicode": "e6be", + "unicode_decimal": 59070 + }, + { + "icon_id": "15329203", + "name": "视频暂停", + "font_class": "shipinzanting", + "unicode": "e6bf", + "unicode_decimal": 59071 + }, + { + "icon_id": "15291283", + "name": "离线轨迹", + "font_class": "lixianguiji", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "15291280", + "name": "离线", + "font_class": "lixian", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "15208512", + "name": "小角标", + "font_class": "xiaojiaobiao", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "15136409", + "name": "上传", + "font_class": "shangchuan1", + "unicode": "e6ba", + "unicode_decimal": 59066 + }, + { + "icon_id": "15136380", + "name": "添加为检索对象", + "font_class": "tianjiaweijiansuoduixiang", + "unicode": "e6b8", + "unicode_decimal": 59064 + }, + { + "icon_id": "15136381", + "name": "添加为检索记录", + "font_class": "tianjiaweijiansuojilu", + "unicode": "e6b9", + "unicode_decimal": 59065 + }, + { + "icon_id": "15085430", + "name": "离线分析", + "font_class": "lixianfenxi1", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "15078532", + "name": "快速检索hov", + "font_class": "kuaisujiansuohov", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "15078533", + "name": "快速检索", + "font_class": "kuaisujiansuo1", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "15076848", + "name": "快速检索", + "font_class": "kuaisujiansuo", + "unicode": "e6b4", + "unicode_decimal": 59060 + }, + { + "icon_id": "15076727", + "name": "预案管理", + "font_class": "yuanguanli", + "unicode": "e6b1", + "unicode_decimal": 59057 + }, + { + "icon_id": "15076728", + "name": "摄像头", + "font_class": "shexiangtou", + "unicode": "e6b2", + "unicode_decimal": 59058 + }, + { + "icon_id": "15076729", + "name": "离线分析", + "font_class": "lixianfenxi", + "unicode": "e6b3", + "unicode_decimal": 59059 + }, + { + "icon_id": "13838314", + "name": "filter", + "font_class": "filter", + "unicode": "e61a", + "unicode_decimal": 58906 + }, + { + "icon_id": "15010235", + "name": "添加为追踪对象", + "font_class": "tianjiaweizhuizongduixiang2", + "unicode": "e6af", + "unicode_decimal": 59055 + }, + { + "icon_id": "14986007", + "name": "添加为追踪对象", + "font_class": "tianjiaweizhuizongduixiang1", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "14982860", + "name": "保存", + "font_class": "baocun1", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "14981791", + "name": "添加视频文件夹", + "font_class": "tianjiashipinwenjianjia", + "unicode": "e6a5", + "unicode_decimal": 59045 + }, + { + "icon_id": "14981792", + "name": "添加视频文件", + "font_class": "tianjiashipinwenjian", + "unicode": "e6a6", + "unicode_decimal": 59046 + }, + { + "icon_id": "14981667", + "name": "地图", + "font_class": "ditu", + "unicode": "e6a4", + "unicode_decimal": 59044 + }, + { + "icon_id": "14981619", + "name": "新建摄像头", + "font_class": "xinjianshexiangtou", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "14981570", + "name": "历史回溯", + "font_class": "lishihuisu", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "14796345", + "name": "deco已添加为轨迹", + "font_class": "decoyitianjiaweiguiji", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "14796466", + "name": "播放切换", + "font_class": "bofangqiehuan", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "14796642", + "name": "添加", + "font_class": "tianjia", + "unicode": "e6a1", + "unicode_decimal": 59041 + }, + { + "icon_id": "14795587", + "name": "保存", + "font_class": "baocun", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "14795971", + "name": "工具箱关闭", + "font_class": "gongjuxiangguanbi", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "14795973", + "name": "上传", + "font_class": "shangchuan", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "14795974", + "name": "工具箱", + "font_class": "gongjuxiang1", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "14682024", + "name": "logo", + "font_class": "logo", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "13841331", + "name": "setting", + "font_class": "setting", + "unicode": "e627", + "unicode_decimal": 58919 + }, + { + "icon_id": "13841332", + "name": "user", + "font_class": "user", + "unicode": "e628", + "unicode_decimal": 58920 + }, + { + "icon_id": "13841333", + "name": "quit", + "font_class": "quit", + "unicode": "e629", + "unicode_decimal": 58921 + }, + { + "icon_id": "14681873", + "name": "arrow展开没选中", + "font_class": "arrowzhankaimeixuanzhong", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "14681874", + "name": "arrow展开选中", + "font_class": "arrowzhankaixuanzhong", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "14681940", + "name": "选择选中", + "font_class": "xuanzexuanzhong", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "14681960", + "name": "选择半选", + "font_class": "xuanzebanxuan", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "14681963", + "name": "选择nor", + "font_class": "xuanzenor", + "unicode": "e697", + "unicode_decimal": 59031 + }, + { + "icon_id": "14681709", + "name": "筛选关闭nor", + "font_class": "shaixuanguanbinor", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "14681588", + "name": "更多", + "font_class": "gengduo", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "14681594", + "name": "右展开", + "font_class": "youzhankai", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "14681599", + "name": "左收起", + "font_class": "zuoshouqi", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "14681557", + "name": "圆", + "font_class": "yuan", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "14681559", + "name": "多边形", + "font_class": "duobianxing", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "14681564", + "name": "方", + "font_class": "fang", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "14681566", + "name": "测距", + "font_class": "ceju", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "14681437", + "name": "实时追踪", + "font_class": "shishizhuizong1", + "unicode": "e683", + "unicode_decimal": 59011 + }, + { + "icon_id": "14681438", + "name": "轨迹回溯", + "font_class": "guijihuisu1", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "14681441", + "name": "添加轨迹", + "font_class": "tianjiaguiji", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "14681442", + "name": "移除轨迹", + "font_class": "yichuguiji", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "14681327", + "name": "放大", + "font_class": "fangda", + "unicode": "e680", + "unicode_decimal": 59008 + }, + { + "icon_id": "14681332", + "name": "缩小", + "font_class": "suoxiao", + "unicode": "e681", + "unicode_decimal": 59009 + }, + { + "icon_id": "14681337", + "name": "下载", + "font_class": "xiazai", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "14681144", + "name": "返回", + "font_class": "fanhui", + "unicode": "e678", + "unicode_decimal": 59000 + }, + { + "icon_id": "14681046", + "name": "搜索", + "font_class": "sousuo", + "unicode": "e669", + "unicode_decimal": 58985 + }, + { + "icon_id": "14681047", + "name": "取消选中", + "font_class": "quxiaoxuanzhong", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "14681048", + "name": "批量选择nor", + "font_class": "piliangxuanzenor", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "14681051", + "name": "开启分析", + "font_class": "kaiqifenxi", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "14681060", + "name": "取消分析", + "font_class": "quxiaofenxi", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "14681062", + "name": "筛选", + "font_class": "shaixuan", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "14681067", + "name": "档案", + "font_class": "dangan", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "14681071", + "name": "播放", + "font_class": "bofang", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "14681073", + "name": "暂停", + "font_class": "zanting", + "unicode": "e671", + "unicode_decimal": 58993 + }, + { + "icon_id": "14681075", + "name": "删除", + "font_class": "shanchu", + "unicode": "e672", + "unicode_decimal": 58994 + }, + { + "icon_id": "14681083", + "name": "添加为追踪对象", + "font_class": "tianjiaweizhuizongduixiang", + "unicode": "e673", + "unicode_decimal": 58995 + }, + { + "icon_id": "14681086", + "name": "查看大图", + "font_class": "chakandatu", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "14681091", + "name": "检索记录", + "font_class": "jiansuojilu", + "unicode": "e675", + "unicode_decimal": 58997 + }, + { + "icon_id": "14681108", + "name": "阈值", + "font_class": "yuzhi", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "14681117", + "name": "查看详情", + "font_class": "chakanxiangqing", + "unicode": "e677", + "unicode_decimal": 58999 + }, + { + "icon_id": "14677552", + "name": "轨迹回溯", + "font_class": "guijihuisu", + "unicode": "e65c", + "unicode_decimal": 58972 + }, + { + "icon_id": "14677553", + "name": "点位配置nor", + "font_class": "dianweipeizhinor", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "14677554", + "name": "一人一档", + "font_class": "yirenyidang", + "unicode": "e65e", + "unicode_decimal": 58974 + }, + { + "icon_id": "14677555", + "name": "同伴分析", + "font_class": "tongbanfenxi", + "unicode": "e65f", + "unicode_decimal": 58975 + }, + { + "icon_id": "14677595", + "name": "切换左", + "font_class": "qiehuanzuo", + "unicode": "e662", + "unicode_decimal": 58978 + }, + { + "icon_id": "14677596", + "name": "切换右", + "font_class": "qiehuanyou", + "unicode": "e663", + "unicode_decimal": 58979 + }, + { + "icon_id": "14677606", + "name": "停止等待", + "font_class": "tingzhidengdai", + "unicode": "e664", + "unicode_decimal": 58980 + }, + { + "icon_id": "14677607", + "name": "已关闭", + "font_class": "yiguanbi", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "14677648", + "name": "弹窗关闭", + "font_class": "danchuangguanbi", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "14071593", + "name": "历史记录", + "font_class": "lishijilu", + "unicode": "e64a", + "unicode_decimal": 58954 + }, + { + "icon_id": "14070176", + "name": "旋转", + "font_class": "xuanzhuan", + "unicode": "e648", + "unicode_decimal": 58952 + }, + { + "icon_id": "14070177", + "name": "清除", + "font_class": "qingchu", + "unicode": "e649", + "unicode_decimal": 58953 + }, + { + "icon_id": "14000087", + "name": "dangantianjia", + "font_class": "dangantianjia", + "unicode": "e63d", + "unicode_decimal": 58941 + }, + { + "icon_id": "14000088", + "name": "bianji", + "font_class": "bianji", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "13979358", + "name": "fullscreen", + "font_class": "fullscreen", + "unicode": "e63b", + "unicode_decimal": 58939 + }, + { + "icon_id": "13979359", + "name": "cancle_fullscreen", + "font_class": "cancle_fullscreen", + "unicode": "e63c", + "unicode_decimal": 58940 + }, + { + "icon_id": "13979335", + "name": "quanyujiansuo_nor", + "font_class": "quanyujiansuo_nor", + "unicode": "e639", + "unicode_decimal": 58937 + }, + { + "icon_id": "13979336", + "name": "guijihuisu_nor", + "font_class": "guijihuisu_nor", + "unicode": "e63a", + "unicode_decimal": 58938 + } + ] +} diff --git a/packages/icon/src/font/iconfont.ttf b/packages/icon/src/font/iconfont.ttf new file mode 100644 index 0000000..c466c9f Binary files /dev/null and b/packages/icon/src/font/iconfont.ttf differ diff --git a/packages/icon/src/font/iconfont.woff b/packages/icon/src/font/iconfont.woff new file mode 100644 index 0000000..f5b4968 Binary files /dev/null and b/packages/icon/src/font/iconfont.woff differ diff --git a/packages/icon/src/font/iconfont.woff2 b/packages/icon/src/font/iconfont.woff2 new file mode 100644 index 0000000..325adce Binary files /dev/null and b/packages/icon/src/font/iconfont.woff2 differ diff --git a/packages/icon/src/index.less b/packages/icon/src/index.less new file mode 100644 index 0000000..23f5dce --- /dev/null +++ b/packages/icon/src/index.less @@ -0,0 +1,3 @@ +.icon:hover { + color: #6accca !important; +} diff --git a/packages/icon/src/index.md b/packages/icon/src/index.md new file mode 100644 index 0000000..e3ddd6a --- /dev/null +++ b/packages/icon/src/index.md @@ -0,0 +1,22 @@ +--- +nav: + title: Icon +order: 1 +toc: content +title: 快速上手 +--- + + + +基本用法 +icon列表 +## API + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| title | 标题 | string | '' | - | +| styles | 样式 | cssProperties | {} | - | +| icon | fontClass名 | string | '' | - | +| size | fontClass名 | integer | 14 | - | +| onIconClick | icon点击事件 | function | ()=>{} | - | +| color | 图标颜色 | string | '' | - | \ No newline at end of file diff --git a/packages/icon/src/index.ts b/packages/icon/src/index.ts new file mode 100644 index 0000000..f9fa9f3 --- /dev/null +++ b/packages/icon/src/index.ts @@ -0,0 +1 @@ +export { default as IconFont } from './Iconfont'; diff --git a/packages/map/.fatherrc.ts b/packages/map/.fatherrc.ts new file mode 100644 index 0000000..447d06b --- /dev/null +++ b/packages/map/.fatherrc.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'father'; + +export default defineConfig({ + // more father config: https://github.com/umijs/father/blob/master/docs/config.md + esm: { + output: 'es', + ignores: ['**/demo/*', 'src/**/demo/*'] + }, + cjs: { + output: 'lib', + ignores: ['**/demo/*', 'src/**/demo/*'] + }, +}); diff --git a/packages/map/CHANGELOG.md b/packages/map/CHANGELOG.md new file mode 100644 index 0000000..7eaf889 --- /dev/null +++ b/packages/map/CHANGELOG.md @@ -0,0 +1,13 @@ +# @zhst/map + +## 0.2.1 + +### Patch Changes + +- 添加 react + +## 0.2.0 + +### Minor Changes + +- 完善地图例子,抛出 mapConfig 定制化参数传入,完善 API 说明 diff --git a/packages/map/README.md b/packages/map/README.md new file mode 100644 index 0000000..ffa1663 --- /dev/null +++ b/packages/map/README.md @@ -0,0 +1,16 @@ +# @zhst/map + +## 介绍 + +地图库,基于map-box开发 + +## 安装 + +> pnpm install @zhst/map + +## 使用 + +```js +import React from 'react'; +import { MapBox } from '@zhst/map' +``` diff --git a/packages/map/es/MapBox.js b/packages/map/es/MapBox.js new file mode 100644 index 0000000..29e7f4b --- /dev/null +++ b/packages/map/es/MapBox.js @@ -0,0 +1,52 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +var _excluded = ["style", "children", "mapRef", "onLoad", "mapCenter", "mapConfig"]; +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } +import 'mapbox-gl/dist/mapbox-gl.css'; +import Map from 'react-map-gl'; +import "./index.less"; +import React from 'react'; +import { merge } from "./utils"; +import { MAP_CENTER, defaultMapConfig } from "./constants"; +var MapBox = function MapBox(props) { + var _ref = props || {}, + _ref$style = _ref.style, + style = _ref$style === void 0 ? {} : _ref$style, + children = _ref.children, + mapRef = _ref.mapRef, + _onLoad = _ref.onLoad, + _ref$mapCenter = _ref.mapCenter, + mapCenter = _ref$mapCenter === void 0 ? MAP_CENTER : _ref$mapCenter, + _ref$mapConfig = _ref.mapConfig, + mapConfig = _ref$mapConfig === void 0 ? {} : _ref$mapConfig, + others = _objectWithoutProperties(_ref, _excluded); + return ( + /*#__PURE__*/ + //@ts-ignore + React.createElement(Map, _extends({ + ref: function ref(e) { + if (mapRef) { + mapRef.current = e; + } + }, + onLoad: function onLoad(e) { + _onLoad && _onLoad(e); + }, + style: _objectSpread({ + width: '100%', + height: 600 + }, style) + }, merge(defaultMapConfig, mapConfig), { + initialViewState: _objectSpread(_objectSpread({}, mapCenter), {}, { + zoom: 10 + }) + }, others), children) + ); +}; +export default MapBox; \ No newline at end of file diff --git a/packages/map/es/constants.js b/packages/map/es/constants.js new file mode 100644 index 0000000..13c186f --- /dev/null +++ b/packages/map/es/constants.js @@ -0,0 +1,47 @@ +export var mapboxAccessToken = 'pk.eyJ1IjoiZGluZ2xpMTIzIiwiYSI6ImNra204ODhjczBobTgyeHJ6MmJpZHMxNWgifQ.NbKrXh_hb2gvjr5CEMDnyQ'; +export var MAP_CENTER = { + longitude: 120.2667694313269, + latitude: 30.180942826533766 +}; //地图中心 +var MapUrl = 'http://10.0.0.120:30003/map'; +export var defaultMapConfig = { + mapboxAccessToken: mapboxAccessToken, + maxZoom: 18, + minZoom: 4, + dragRotate: false, + mapStyle: { + version: 8, + name: 'Mapbox Streets', + // sprite: `${location.origin}/mapbox/sprite`, // 地图图标 + glyphs: 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf', + // 字体 + sources: { + //数据源 + 'osm-tiles': { + type: 'raster', + //栅格切片。vector:矢量切片 + // Z-瓦片层级,一般支持0-18级,越大代表越清晰; + // X-瓦片列号,从西向东(0->360),依次0,1,2,……; + // Y-瓦片行号,从北向南(有些也可能是从南向北),依次0,1,2,……; + tiles: ["".concat(MapUrl, "/api/tilesets/mapfile/{z}/{x}/{y}.png")], + //在线地址,先写死120 + tileSize: 256 //切片的最小展示尺寸(可选,单位:像素,默认值为 512,即 1024/2 + } + }, + layers: [ + // 图层。图层指定了如何渲染数据源提供的数据 + { + id: 'zhstLayer', + //唯一id + type: 'raster', + //类型 栅格。circle,symbol,line... + source: 'osm-tiles', + // 'source-layer': 'osmtiles',//数据源必须是type:vector + minZoom: 4, + //最小层级 + maxZoom: 17, + //最大层级 + renderingMode: '2d' + }] + } +}; \ No newline at end of file diff --git a/packages/map/es/index.js b/packages/map/es/index.js new file mode 100644 index 0000000..1662d0f --- /dev/null +++ b/packages/map/es/index.js @@ -0,0 +1 @@ +export { default as MapBox } from "./MapBox"; \ No newline at end of file diff --git a/packages/map/es/index.less b/packages/map/es/index.less new file mode 100644 index 0000000..ac327e9 --- /dev/null +++ b/packages/map/es/index.less @@ -0,0 +1,3 @@ +.mapboxgl-ctrl-attrib-button { + display: none; +} diff --git a/packages/map/es/interface.js b/packages/map/es/interface.js new file mode 100644 index 0000000..8cec2e9 --- /dev/null +++ b/packages/map/es/interface.js @@ -0,0 +1 @@ +export {}; \ No newline at end of file diff --git a/packages/map/es/utils.js b/packages/map/es/utils.js new file mode 100644 index 0000000..3e2ee23 --- /dev/null +++ b/packages/map/es/utils.js @@ -0,0 +1,36 @@ +var getRawType = function getRawType(val) { + return Object.prototype.toString.call(val).slice(8, -1); +}; +var isPlainObjectOrArray = function isPlainObjectOrArray(val) { + return isPlainObject(val) || Array.isArray(val); +}; +var isPlainObject = function isPlainObject(val) { + return getRawType(val) === 'Object'; +}; +export var merge = function merge(object) { + for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + sources[_key - 1] = arguments[_key]; + } + for (var _i = 0, _sources = sources; _i < _sources.length; _i++) { + var source = _sources[_i]; + for (var key in source) { + if (source[key] === undefined && key in object) { + continue; + } + if (isPlainObjectOrArray(source[key])) { + if (getRawType(object[key] === getRawType(source[key]))) { + if (isPlainObject(object[key])) { + merge(object[key], source[key]); + } else { + object[key] = object[key].concat(source[key]); + } + } else { + object[key] = source[key]; + } + } else { + object[key] = source[key]; + } + } + } + return object; +}; \ No newline at end of file diff --git a/packages/map/package.json b/packages/map/package.json new file mode 100644 index 0000000..907a3cf --- /dev/null +++ b/packages/map/package.json @@ -0,0 +1,43 @@ +{ + "name": "@zhst/map", + "version": "0.2.1", + "description": "地图库", + "keywords": [ + "map", + "zhst", + "地图库" + ], + "license": "ISC", + "author": "dev", + "sideEffects": [ + "dist/*", + "es/**/style/*", + "lib/**/style/*", + "*.less" + ], + "main": "lib/index.js", + "module": "es/index.js", + "typings": "es/index.d.ts", + "exports": { + ".": { + "require": "./lib/index.js", + "import": "./es/index.js", + "default": "./es/index.js" + } + }, + "files": [ + "es", + "lib" + ], + "scripts": { + "build": "father build" + }, + "publishConfig": { + "access": "public", + "registry": "http://10.0.0.77:4874" + }, + "dependencies": { + "react-map-gl": "^7.1.7", + "mapbox-gl": "^2.15.0" + } +} diff --git a/packages/map/src/MapBox.tsx b/packages/map/src/MapBox.tsx new file mode 100644 index 0000000..4cd886a --- /dev/null +++ b/packages/map/src/MapBox.tsx @@ -0,0 +1,40 @@ +import 'mapbox-gl/dist/mapbox-gl.css'; +import Map from 'react-map-gl'; +import './index.less'; +import React from 'react'; +import { MapProps } from './interface'; +import { merge } from './utils'; +import { MAP_CENTER, defaultMapConfig } from './constants'; + +const MapBox: React.FC = (props) => { + const { + style = {}, + children, + mapRef, + onLoad, + mapCenter = MAP_CENTER, + mapConfig = {}, + ...others + } = props || {}; + return ( + //@ts-ignore + { + if (mapRef) { + mapRef.current = e!; + } + }} + onLoad={(e) => { + onLoad && onLoad(e); + }} + style={{ width: '100%', height: 600, ...style }} + {...merge(defaultMapConfig, mapConfig)} + initialViewState={{ ...mapCenter, zoom: 10 }} + {...others} + > + {children} + + ); +}; + +export default MapBox; diff --git a/packages/map/src/constants.ts b/packages/map/src/constants.ts new file mode 100644 index 0000000..e06b0dc --- /dev/null +++ b/packages/map/src/constants.ts @@ -0,0 +1,42 @@ +export const mapboxAccessToken = + 'pk.eyJ1IjoiZGluZ2xpMTIzIiwiYSI6ImNra204ODhjczBobTgyeHJ6MmJpZHMxNWgifQ.NbKrXh_hb2gvjr5CEMDnyQ'; +export const MAP_CENTER = { + longitude: 120.2667694313269, + latitude: 30.180942826533766, +}; //地图中心 +const MapUrl = 'http://10.0.0.120:30003/map'; +export const defaultMapConfig = { + mapboxAccessToken, + maxZoom: 18, + minZoom: 4, + dragRotate: false, + mapStyle: { + version: 8, + name: 'Mapbox Streets', + // sprite: `${location.origin}/mapbox/sprite`, // 地图图标 + glyphs: 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf', // 字体 + sources: { + //数据源 + 'osm-tiles': { + type: 'raster', //栅格切片。vector:矢量切片 + // Z-瓦片层级,一般支持0-18级,越大代表越清晰; + // X-瓦片列号,从西向东(0->360),依次0,1,2,……; + // Y-瓦片行号,从北向南(有些也可能是从南向北),依次0,1,2,……; + tiles: [`${MapUrl}/api/tilesets/mapfile/{z}/{x}/{y}.png`], //在线地址,先写死120 + tileSize: 256, //切片的最小展示尺寸(可选,单位:像素,默认值为 512,即 1024/2 + }, + }, + layers: [ + // 图层。图层指定了如何渲染数据源提供的数据 + { + id: 'zhstLayer', //唯一id + type: 'raster', //类型 栅格。circle,symbol,line... + source: 'osm-tiles', + // 'source-layer': 'osmtiles',//数据源必须是type:vector + minZoom: 4, //最小层级 + maxZoom: 17, //最大层级 + renderingMode: '2d', + }, + ], + }, +}; \ No newline at end of file diff --git a/packages/map/src/demo/basic.tsx b/packages/map/src/demo/basic.tsx new file mode 100644 index 0000000..0f6c999 --- /dev/null +++ b/packages/map/src/demo/basic.tsx @@ -0,0 +1,25 @@ +import React, { useRef } from 'react'; +import { MapBox } from '@zhst/map'; + +const demo = () => { + const mapRef = useRef(null); + const handleMapLoad = (e: mapboxgl.MapboxEvent) => { + const map = e.target; + if (!map) { + return; + } + map.flyTo({ + center: [120,30], + zoom: map?.getMaxZoom(), + }); + }; + return ( +
+ +
+ ); +}; + +export default demo; diff --git a/packages/map/src/index.less b/packages/map/src/index.less new file mode 100644 index 0000000..ac327e9 --- /dev/null +++ b/packages/map/src/index.less @@ -0,0 +1,3 @@ +.mapboxgl-ctrl-attrib-button { + display: none; +} diff --git a/packages/map/src/index.md b/packages/map/src/index.md new file mode 100644 index 0000000..5cd4835 --- /dev/null +++ b/packages/map/src/index.md @@ -0,0 +1,20 @@ +--- +nav: + title: 地图库 +order: 1 +toc: content +title: 快速上手 +--- + + +基本用法 +## API + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| mapRef | 标题 | React.MutableRefObject | '' | - | +| style | 地图样式 | cssProperties | {} | - | +| mapCenter | 地图中心点 | {longitude: number, latitude: number} | {longitude: 120.2667694313269, latitude: 30.180942826533766} | - | +| children | 内部元素 | JSX.Element或JSX.Element[]或Array | {} | - | +| mapConfig | 地图配置 | MapConfigProps | defaultMapConfig | - | +| onLoad | 地图加载事件 | function | ()=>{} | - | diff --git a/packages/map/src/index.ts b/packages/map/src/index.ts new file mode 100644 index 0000000..6581359 --- /dev/null +++ b/packages/map/src/index.ts @@ -0,0 +1 @@ +export { default as MapBox } from './MapBox'; diff --git a/packages/map/src/interface.ts b/packages/map/src/interface.ts new file mode 100644 index 0000000..4001f43 --- /dev/null +++ b/packages/map/src/interface.ts @@ -0,0 +1,19 @@ +import { CSSProperties } from "react"; +import { MapRef, MapStyle } from "react-map-gl"; + +export interface MapProps { + onLoad?: (e: mapboxgl.MapboxEvent) => void; + mapRef?: React.MutableRefObject; + style?: CSSProperties; + children?: JSX.Element | JSX.Element[] | Array; + mapConfig?: MapConfigProps + mapCenter: {longitude: number, latitude: number} +} + +export interface MapConfigProps { + mapboxAccessToken?: string; //token + minZoom?: number; //最小层级 + maxZoom?: number; //最大层级 + dragRotate?: boolean; //是否支持拖拽旋转 + mapStyle?: MapStyle; //地图样式 +} \ No newline at end of file diff --git a/packages/map/src/utils.ts b/packages/map/src/utils.ts new file mode 100644 index 0000000..f095cdc --- /dev/null +++ b/packages/map/src/utils.ts @@ -0,0 +1,35 @@ +const getRawType = (val: any) => { + return Object.prototype.toString.call(val).slice(8, -1) +} + +const isPlainObjectOrArray = (val: any) => { + return isPlainObject(val) || Array.isArray(val) +} + +const isPlainObject = (val: any) => { + return getRawType(val) === 'Object' +} + +export const merge = (object: any, ...sources: any) => { + for(const source of sources) { + for(const key in source) { + if(source[key] === undefined && key in object) { + continue + } + if(isPlainObjectOrArray(source[key])) { + if(getRawType(object[key] === getRawType(source[key]))) { + if(isPlainObject(object[key])) { + merge(object[key], source[key]) + } else { + object[key] = object[key].concat(source[key]) + } + } else { + object[key] = source[key] + } + } else { + object[key] = source[key] + } + } + } + return object; +} \ No newline at end of file diff --git a/packages/material/.fatherrc.ts b/packages/material/.fatherrc.ts new file mode 100644 index 0000000..447d06b --- /dev/null +++ b/packages/material/.fatherrc.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'father'; + +export default defineConfig({ + // more father config: https://github.com/umijs/father/blob/master/docs/config.md + esm: { + output: 'es', + ignores: ['**/demo/*', 'src/**/demo/*'] + }, + cjs: { + output: 'lib', + ignores: ['**/demo/*', 'src/**/demo/*'] + }, +}); diff --git a/packages/material/CHANGELOG.md b/packages/material/CHANGELOG.md new file mode 100644 index 0000000..e29de51 --- /dev/null +++ b/packages/material/CHANGELOG.md @@ -0,0 +1,103 @@ +# @zhst/material + +## 0.7.7 + +### Patch Changes + +- 修改 schema 物料透出 + +## 0.7.6 + +### Patch Changes + +- 修改文件引用出错 + +## 0.7.5 + +### Patch Changes + +- @zhst/func@0.9.1 +- @zhst/biz@0.11.3 +- @zhst/hooks@0.8.10 +- @zhst/meta@0.9.7 + +## 0.7.4 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.9.0 + - @zhst/biz@0.11.2 + - @zhst/hooks@0.8.9 + - @zhst/meta@0.9.6 + +## 0.7.3 + +### Patch Changes + +- Updated dependencies + - @zhst/biz@0.11.1 + +## 0.7.2 + +### Patch Changes + +- Updated dependencies + - @zhst/biz@0.11.0 + +## 0.7.1 + +### Patch Changes + +- 添加登录 css 属性 + +## 0.7.0 + +### Minor Changes + +- 初始化物料库 + +## 0.3.3 + +### Patch Changes + +- 初始化 + +## 0.3.2 + +### Patch Changes + +- 初始化物料库 +- Updated dependencies + - @zhst/hooks@0.8.8 + - @zhst/func@0.8.3 + - @zhst/meta@0.9.5 + - @zhst/biz@0.10.5 + +## 0.3.1 + +### Patch Changes + +- Updated dependencies + - @zhst/hooks@0.8.7 + - @zhst/func@0.8.2 + - @zhst/meta@0.9.4 + - @zhst/biz@0.10.4 + +## 0.3.0 + +### Minor Changes + +- 新增登录与修改密码模块 + +## 0.2.0 + +### Minor Changes + +- 优化单个算法配置绘制方法 + +## 0.1.0 + +### Minor Changes + +- 添加批量算法配置模块 diff --git a/packages/material/README.md b/packages/material/README.md new file mode 100644 index 0000000..a57949f --- /dev/null +++ b/packages/material/README.md @@ -0,0 +1,16 @@ +## 介绍 + +基于 lambo 的物料库 + +## 安装 + +> pnpm install @zhst/material + +## 使用 + +```js +import React from 'react'; +import { Login } from '@zhst/material' + +export () => +``` diff --git a/packages/material/es/algorithmConfig/algorithmConfig.d.ts b/packages/material/es/algorithmConfig/algorithmConfig.d.ts new file mode 100644 index 0000000..9c0101e --- /dev/null +++ b/packages/material/es/algorithmConfig/algorithmConfig.d.ts @@ -0,0 +1,53 @@ +import React from 'react'; +import { AlgorithmTableProps } from './components/algorithmTable/AlgorithmTable'; +import { TimeTemplateTableProps } from './components/timeTemplateTable/TimeTemplateTable'; +export interface AlgorithmConfigProps { + onAddAlgorithm?: () => void; + /** + * 单选的图片数据 + */ + drawData?: { + imageKey: string; + odRect?: { + x: number; + y: number; + w: number; + h: number; + }; + score?: string; + time?: string; + }; + /** + * 单选状态圈选后的监听事件 + */ + drawListener?: (data: any) => void; + algorithmTableDataSource?: { + id: string; + templateName: string; + operatingCycle: string; + algorithmOccupied: number; + }[]; + timeTemplateDataSource?: { + id: string; + templateName: string; + operatingCycle: string; + arrangeWeek: string; + algorithmOccupied: string; + }[]; + boxList: { + id: string; + name: string; + }[]; + algorithmTableProps?: AlgorithmTableProps; + timeTemplateTableProps?: TimeTemplateTableProps; + selectedKey?: string; + rowKey?: string; + type: AlgorithmTableProps['tableType']; + onSelect?: (key: string, info?: any) => void; +} +export interface AlgorithmConfigRef { + draw: () => void; + cancelDraw: () => void; +} +declare const AlgorithmConfig: React.ForwardRefExoticComponent>; +export default AlgorithmConfig; diff --git a/packages/material/es/algorithmConfig/algorithmConfig.js b/packages/material/es/algorithmConfig/algorithmConfig.js new file mode 100644 index 0000000..f283541 --- /dev/null +++ b/packages/material/es/algorithmConfig/algorithmConfig.js @@ -0,0 +1,141 @@ +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +import React, { useRef, forwardRef, useImperativeHandle } from 'react'; +import { Flex, Image } from "antd"; +import theme from 'antd/es/theme'; +import { BigImagePreview } from '@zhst/meta'; +import { AlgorithmConfigImg, ErrorImage } from "../utils/base64Images"; +import AlgorithmTable from "./components/algorithmTable"; +import TimeTemplateTable from "./components/timeTemplateTable"; +var useToken = theme.useToken; +var Title = function Title(props) { + return /*#__PURE__*/React.createElement("h2", { + style: { + margin: '18px 16px', + fontSize: '14px', + color: 'rgba(0, 0, 0, 0.88)' + } + }, props.children); +}; +var AlgorithmConfig = /*#__PURE__*/forwardRef(function (props, ref) { + var _props$algorithmTable = props.algorithmTableDataSource, + algorithmTableDataSource = _props$algorithmTable === void 0 ? [] : _props$algorithmTable, + _props$timeTemplateDa = props.timeTemplateDataSource, + timeTemplateDataSource = _props$timeTemplateDa === void 0 ? [] : _props$timeTemplateDa, + _props$boxList = props.boxList, + boxList = _props$boxList === void 0 ? [] : _props$boxList, + drawData = props.drawData, + drawListener = props.drawListener, + algorithmTableProps = props.algorithmTableProps, + timeTemplateTableProps = props.timeTemplateTableProps, + selectedKey = props.selectedKey, + _props$type = props.type, + type = _props$type === void 0 ? 'multiple' : _props$type, + _props$rowKey = props.rowKey, + rowKey = _props$rowKey === void 0 ? 'id' : _props$rowKey, + onSelect = props.onSelect; + var drawImageRef = useRef(null); + var _useToken = useToken(), + token = _useToken.token; + useImperativeHandle(ref, function () { + return { + draw: function draw() { + var _drawImageRef$current; + (_drawImageRef$current = drawImageRef.current) === null || _drawImageRef$current === void 0 || _drawImageRef$current.setShowCrop(true); + }, + cancelDraw: function cancelDraw() { + var _drawImageRef$current2; + (_drawImageRef$current2 = drawImageRef.current) === null || _drawImageRef$current2 === void 0 || _drawImageRef$current2.setShowCrop(false); + } + }; + }); + return /*#__PURE__*/React.createElement(Flex, { + style: { + border: "1px solid ".concat(token.colorBorder), + backgroundColor: token.colorBgBase + } + }, /*#__PURE__*/React.createElement("div", { + title: "\u76D2\u5B50\u5217\u8868", + style: { + width: '13.9%' + } + }, /*#__PURE__*/React.createElement(Title, null, "\u76D2\u5B50\u5217\u8868"), /*#__PURE__*/React.createElement("div", { + style: { + borderTop: "1px solid ".concat(token.colorBorder) + } + }, boxList.map(function (item) { + return /*#__PURE__*/React.createElement("p", { + key: item.id, + onClick: function onClick() { + return onSelect === null || onSelect === void 0 ? void 0 : onSelect(item.id, item); + }, + style: { + margin: 0, + padding: "".concat(token.paddingXXS, "px ").concat(token.paddingLG, "px"), + cursor: 'pointer', + // @ts-ignore + color: selectedKey === item[rowKey] ? token.colorPrimary : token.colorText, + // @ts-ignore + backgroundColor: selectedKey === item[rowKey] ? token.blue1 : token.colorBgBase, + transition: '0.2s ease' + } + }, item.name); + }))), /*#__PURE__*/React.createElement("div", { + style: { + boxSizing: 'border-box', + width: '46.3%', + textAlign: 'center', + borderLeft: "1px solid ".concat(token.colorBorder), + borderRight: "1px solid ".concat(token.colorBorder) + } + }, type === 'single' ? /*#__PURE__*/React.createElement(BigImagePreview, { + ref: drawImageRef, + hideTypeBtns: true, + type: "CUSTOM", + screenshotButtonRender: function screenshotButtonRender() { + return /*#__PURE__*/React.createElement(React.Fragment, null); + } + // @ts-ignore + , + data: drawData, + onDraw: drawListener + }) : /*#__PURE__*/React.createElement("div", { + style: { + padding: '84px' + } + }, /*#__PURE__*/React.createElement(Image, { + width: '62.5%', + src: AlgorithmConfigImg, + preview: false, + fallback: ErrorImage + }), /*#__PURE__*/React.createElement("h2", null, "\u8BF7\u8FDB\u884C\u6279\u91CF\u914D\u7F6E"), /*#__PURE__*/React.createElement("ul", { + style: { + display: 'inline-block', + paddingLeft: 0, + width: '51.8%', + listStyle: 'none', + textAlign: 'left', + color: token.colorTextLabel + } + }, /*#__PURE__*/React.createElement("li", null, "\xB7 \u76D2\u5B50\u6279\u91CF\u914D\u7F6E\u4EC5\u652F\u6301\u540C\u578B\u53F7\u76D2\u5B50\uFF1B"), /*#__PURE__*/React.createElement("li", null, "\xB7 \u91C7\u53D6\u8986\u76D6\u5F0F\u66F4\u65B0\uFF0C\u4E0D\u4FDD\u7559\u539F\u6709\u914D\u7F6E\uFF0C\u4E14\u9884\u8B66\u68C0\u6D4B\u6846\u9ED8\u8BA4\u5168\u5C4F\u8303\u56F4\uFF1B"), /*#__PURE__*/React.createElement("li", null, "\xB7 \u4EBA\u6D41\u91CF\u7EDF\u8BA1\u9ED8\u8BA4\u68C0\u6D4B\u7EBF\u4E3A\u5C4F\u5E55\u4E2D\u592E\u6A2A\u5411\u7EBF\u6761\uFF0C\u4E14\u7BAD\u5934\u6307\u5411\u4E0B\u65B9\uFF1B"), /*#__PURE__*/React.createElement("li", null, "\xB7 \u4F18\u5148\u9009\u62E9\u62C9\u6D41\u6B63\u5E38\u7684\u6444\u50CF\u5934\u3002")))), /*#__PURE__*/React.createElement("div", { + style: { + width: '39.8%' + } + }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Title, null, "\u65F6\u95F4\u6A21\u677F"), /*#__PURE__*/React.createElement("div", { + style: { + padding: "".concat(token.paddingMD, "px ").concat(token.paddingSM, "px"), + borderTop: "1px solid ".concat(token.colorBorder), + borderBottom: "1px solid ".concat(token.colorBorder) + } + }, /*#__PURE__*/React.createElement(TimeTemplateTable, _extends({ + dataSource: timeTemplateDataSource + }, timeTemplateTableProps)))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Title, null, "\u7B97\u6CD5\u5E94\u7528"), /*#__PURE__*/React.createElement("div", { + style: { + padding: "".concat(token.paddingMD, "px ").concat(token.paddingSM, "px"), + borderTop: "1px solid ".concat(token.colorBorder) + } + }, /*#__PURE__*/React.createElement(AlgorithmTable, _extends({ + dataSource: algorithmTableDataSource, + tableType: type + }, algorithmTableProps)))))); +}); +export default AlgorithmConfig; \ No newline at end of file diff --git a/packages/material/es/algorithmConfig/components/algorithmTable/AlgorithmTable.js b/packages/material/es/algorithmConfig/components/algorithmTable/AlgorithmTable.js new file mode 100644 index 0000000..e952508 --- /dev/null +++ b/packages/material/es/algorithmConfig/components/algorithmTable/AlgorithmTable.js @@ -0,0 +1,129 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } +import React from 'react'; +import { DeleteFilled, EditFilled, ImportOutlined, PlusCircleFilled } from '@ant-design/icons'; +import { ProTable } from '@ant-design/pro-components'; +import { Popconfirm, Select, Space, Switch } from 'antd'; +import theme from 'antd/es/theme'; +import SchemaFormModal from "../schemaFormModal"; +var useToken = theme.useToken; +var AlgorithmTable = function AlgorithmTable(props) { + var onAddAlgorithm = props.onAddAlgorithm, + onItemSwitch = props.onItemSwitch, + onItemEdit = props.onItemEdit, + onItemDelete = props.onItemDelete, + onSortSelect = props.onSortSelect, + selectedKey = props.selectedKey, + onDraw = props.onDraw, + _props$tableType = props.tableType, + tableType = _props$tableType === void 0 ? 'multiple' : _props$tableType, + _props$sortList = props.sortList, + sortList = _props$sortList === void 0 ? [] : _props$sortList; + var _useToken = useToken(), + token = _useToken.token; + var columns = [{ + title: '模板名称', + dataIndex: 'templateName' + }, { + title: '运行周期', + dataIndex: 'runCycle', + valueType: 'select', + width: 80, + valueEnum: { + 1: { + text: '黑夜' + }, + 0: { + text: '白天' + } + } + }, { + title: '算力占用', + dataIndex: 'powerOccupy' + }, { + title: '操作', + key: 'option', + valueType: 'option', + fixed: true, + render: function render(_DOM, record) { + return [/*#__PURE__*/React.createElement(Switch, { + value: record.status, + onChange: function onChange(_status) { + return onItemSwitch === null || onItemSwitch === void 0 ? void 0 : onItemSwitch(_status, record.id, record); + } + }), /*#__PURE__*/React.createElement("a", { + onClick: function onClick() { + return onDraw === null || onDraw === void 0 ? void 0 : onDraw(record.id, record); + }, + style: { + display: tableType === 'single' ? 'block' : 'none' + }, + href: "#" + }, /*#__PURE__*/React.createElement(ImportOutlined, null)), /*#__PURE__*/React.createElement(SchemaFormModal, { + type: record.templateType, + onFinish: ( /*#__PURE__*/function () { + var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(values) { + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", onItemEdit === null || onItemEdit === void 0 ? void 0 : onItemEdit(values, record)); + case 1: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function (_x) { + return _ref.apply(this, arguments); + }; + }()), + trigger: /*#__PURE__*/React.createElement("a", { + href: "#" + }, /*#__PURE__*/React.createElement(EditFilled, null)) + }), /*#__PURE__*/React.createElement(Popconfirm, { + title: "\u786E\u5B9A\u5220\u9664\u5417\uFF1F", + onConfirm: function onConfirm() { + return onItemDelete === null || onItemDelete === void 0 ? void 0 : onItemDelete(record.id, record); + } + }, /*#__PURE__*/React.createElement("a", { + href: "#" + }, /*#__PURE__*/React.createElement(DeleteFilled, null)))]; + } + }]; + return /*#__PURE__*/React.createElement(ProTable, _extends({ + columns: columns, + bordered: true, + scroll: { + y: 240 + }, + dataSource: [], + headerTitle: /*#__PURE__*/React.createElement(Space, { + size: 16 + }, /*#__PURE__*/React.createElement(Select, { + value: selectedKey, + style: { + width: 320 + }, + onChange: onSortSelect, + options: sortList + }), /*#__PURE__*/React.createElement(PlusCircleFilled, { + onClick: function onClick() { + return onAddAlgorithm === null || onAddAlgorithm === void 0 ? void 0 : onAddAlgorithm(); + }, + style: { + fontSize: '24px', + color: token.colorPrimary, + cursor: 'pointer' + } + })), + toolbar: undefined, + rowKey: "id", + search: false, + options: false, + pagination: false + }, props)); +}; +export default AlgorithmTable; \ No newline at end of file diff --git a/packages/material/es/algorithmConfig/components/algorithmTable/index.d.ts b/packages/material/es/algorithmConfig/components/algorithmTable/index.d.ts new file mode 100644 index 0000000..42d422c --- /dev/null +++ b/packages/material/es/algorithmConfig/components/algorithmTable/index.d.ts @@ -0,0 +1,3 @@ +import AlgorithmTable from './AlgorithmTable'; +export type { AlgorithmTableProps } from './AlgorithmTable'; +export default AlgorithmTable; diff --git a/packages/material/es/algorithmConfig/components/algorithmTable/index.js b/packages/material/es/algorithmConfig/components/algorithmTable/index.js new file mode 100644 index 0000000..345e650 --- /dev/null +++ b/packages/material/es/algorithmConfig/components/algorithmTable/index.js @@ -0,0 +1,2 @@ +import AlgorithmTable from "./AlgorithmTable"; +export default AlgorithmTable; \ No newline at end of file diff --git a/packages/material/es/algorithmConfig/components/schemaFormModal/index.js b/packages/material/es/algorithmConfig/components/schemaFormModal/index.js new file mode 100644 index 0000000..deeb691 --- /dev/null +++ b/packages/material/es/algorithmConfig/components/schemaFormModal/index.js @@ -0,0 +1,2 @@ +import SchemaFormModal from "./schemaFormModal"; +export default SchemaFormModal; \ No newline at end of file diff --git a/packages/material/es/algorithmConfig/components/schemaFormModal/schemaFormModal.d.ts b/packages/material/es/algorithmConfig/components/schemaFormModal/schemaFormModal.d.ts new file mode 100644 index 0000000..2c2d7cd --- /dev/null +++ b/packages/material/es/algorithmConfig/components/schemaFormModal/schemaFormModal.d.ts @@ -0,0 +1,8 @@ +import { FC } from 'react'; +import type { ModalFormProps } from '@ant-design/pro-components'; +export interface SchemaFormModalProps extends ModalFormProps { + type: 'fire' | 'smoke' | 'traffic' | 'face' | 'destroy' | 'wander' | 'gather' | 'cameraBlock'; +} +export declare const SCHEME_TYPE_LIST: Map; +declare const SchemaFormModal: FC; +export default SchemaFormModal; diff --git a/packages/material/es/algorithmConfig/components/schemaFormModal/schemaFormModal.js b/packages/material/es/algorithmConfig/components/schemaFormModal/schemaFormModal.js new file mode 100644 index 0000000..b1c56e2 --- /dev/null +++ b/packages/material/es/algorithmConfig/components/schemaFormModal/schemaFormModal.js @@ -0,0 +1,128 @@ +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +import React from 'react'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Input, Space } from 'antd'; +export var SCHEME_TYPE_LIST = new Map([['fire', '火焰识别'], ['smoke', '烟雾识别'], ['traffic', '人流量统计'], ['face', '面部遮挡识别'], ['destroy', '人员破坏识别'], ['wander', '人员徘徊识别'], ['gather', '人员聚集识别'], ['cameraBlock', '摄像头遮挡识别']]); +var SchemaFormModal = function SchemaFormModal(props) { + var _props$type = props.type, + type = _props$type === void 0 ? 'fire' : _props$type, + onFinish = props.onFinish; + var getColumnsByType = function getColumnsByType(type) { + if (!type) return []; + var arr = []; + if (type === 'gather') { + arr.push({ + title: '预警人数:', + dataIndex: 'alarmMember', + formItemProps: { + rules: [{ + required: true, + message: '此项为必填项' + }] + }, + renderFormItem: function renderFormItem() { + return /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement(Input, null), "\u4EBA\uFF083~10\uFF09"); + }, + width: 'm' + }); + } + if (type === 'cameraBlock') { + arr.push({ + title: '遮挡百分比:', + dataIndex: 'blockPercent', + formItemProps: { + rules: [{ + required: true, + message: '此项为必填项' + }] + }, + renderFormItem: function renderFormItem() { + return /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement(Input, null), "%\uFF0830~80\uFF09"); + }, + width: 'm' + }); + } + if (type !== 'traffic') { + arr.push({ + title: '最短持续时间:', + dataIndex: 'minTime', + formItemProps: { + rules: [{ + required: true, + message: '此项为必填项' + }] + }, + renderFormItem: function renderFormItem() { + return /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement(Input, null), "\u79D2\uFF082~10\uFF09"); + }, + width: 'm' + }); + arr.push({ + title: '报警间隔时间:', + dataIndex: 'alarmTime', + formItemProps: { + rules: [{ + required: true, + message: '此项为必填项' + }] + }, + renderFormItem: function renderFormItem() { + return /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement(Input, null), "\u79D2\uFF0810~600\uFF09"); + }, + width: 'm' + }); + } else if (type === 'traffic') { + arr.push({ + title: '灵敏度:', + dataIndex: 'sensitivity', + formItemProps: { + rules: [{ + required: true, + message: '此项为必填项' + }] + }, + renderFormItem: function renderFormItem() { + return /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement(Input, null), "\uFF080~100\uFF09"); + }, + width: 'm' + }); + } + arr.push({ + title: '灵敏度:', + dataIndex: 'sensitivity', + formItemProps: { + rules: [{ + required: true, + message: '此项为必填项' + }] + }, + renderFormItem: function renderFormItem() { + return /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement(Input, null), "\uFF080~100\uFF09"); + }, + width: 'm' + }); + return arr; + }; + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(BetaSchemaForm, _extends({ + width: 600 + // @ts-ignore + , + title: SCHEME_TYPE_LIST.get(type), + shouldUpdate: false, + layoutType: "ModalForm", + layout: "horizontal", + labelCol: { + span: 6 + }, + wrapperCol: { + span: 18 + }, + preserve: false, + modalProps: { + destroyOnClose: true + }, + onFinish: onFinish, + columns: getColumnsByType(type) + }, props))); +}; +export default SchemaFormModal; \ No newline at end of file diff --git a/packages/material/es/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.d.ts b/packages/material/es/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.d.ts new file mode 100644 index 0000000..102d04a --- /dev/null +++ b/packages/material/es/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.d.ts @@ -0,0 +1,8 @@ +import React from 'react'; +import type { ParamsType, ProTableProps } from '@ant-design/pro-components'; +import { AnyObject } from 'antd/es/_util/type'; +export interface TimeTemplateTableProps extends ProTableProps { + onItemBlur?: (value?: number | string, id?: any, record?: any) => void; +} +declare const TimeTemplateTable: (props: TimeTemplateTableProps) => React.JSX.Element; +export default TimeTemplateTable; diff --git a/packages/material/es/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.js b/packages/material/es/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.js new file mode 100644 index 0000000..aa4c75e --- /dev/null +++ b/packages/material/es/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.js @@ -0,0 +1,47 @@ +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +import React from 'react'; +import { ProTable } from '@ant-design/pro-components'; +import { InputNumber } from 'antd'; +var TimeTemplateTable = function TimeTemplateTable(props) { + var onItemBlur = props.onItemBlur; + var columns = [{ + title: '模板名称', + dataIndex: 'templateName' + }, { + title: '运行周期', + dataIndex: 'runCycle' + }, { + title: '布控星期', + dataIndex: 'arrangeDay' + }, { + title: '算力占用', + dataIndex: 'powerOccupy' + }, { + title: '配置路数', + key: 'option', + valueType: 'option', + render: function render(_, record) { + return /*#__PURE__*/React.createElement(InputNumber, { + value: record.lineNum, + onBlur: function onBlur(e) { + return onItemBlur === null || onItemBlur === void 0 ? void 0 : onItemBlur(e.target.value, record.id, record); + }, + min: 0 + }); + } + }]; + return /*#__PURE__*/React.createElement(ProTable, _extends({ + columns: columns, + bordered: true, + scroll: { + y: 95 + }, + toolbar: undefined, + rowKey: "id", + search: false, + options: false, + pagination: false, + dataSource: [] + }, props)); +}; +export default TimeTemplateTable; \ No newline at end of file diff --git a/packages/material/es/algorithmConfig/components/timeTemplateTable/index.d.ts b/packages/material/es/algorithmConfig/components/timeTemplateTable/index.d.ts new file mode 100644 index 0000000..fefdc38 --- /dev/null +++ b/packages/material/es/algorithmConfig/components/timeTemplateTable/index.d.ts @@ -0,0 +1,3 @@ +import TimeTemplateTable from './TimeTemplateTable'; +export type { TimeTemplateTableProps } from './TimeTemplateTable'; +export default TimeTemplateTable; diff --git a/packages/material/es/algorithmConfig/components/timeTemplateTable/index.js b/packages/material/es/algorithmConfig/components/timeTemplateTable/index.js new file mode 100644 index 0000000..c169e92 --- /dev/null +++ b/packages/material/es/algorithmConfig/components/timeTemplateTable/index.js @@ -0,0 +1,2 @@ +import TimeTemplateTable from "./TimeTemplateTable"; +export default TimeTemplateTable; \ No newline at end of file diff --git a/packages/material/es/algorithmConfig/index.d.ts b/packages/material/es/algorithmConfig/index.d.ts new file mode 100644 index 0000000..7f2faa9 --- /dev/null +++ b/packages/material/es/algorithmConfig/index.d.ts @@ -0,0 +1,5 @@ +import AlgorithmConfig from './algorithmConfig'; +export type { AlgorithmConfigProps, AlgorithmConfigRef } from './algorithmConfig'; +export type { AlgorithmTableProps } from './components/algorithmTable'; +export type { TimeTemplateTableProps } from './components/timeTemplateTable'; +export default AlgorithmConfig; diff --git a/packages/material/es/algorithmConfig/index.js b/packages/material/es/algorithmConfig/index.js new file mode 100644 index 0000000..d37d374 --- /dev/null +++ b/packages/material/es/algorithmConfig/index.js @@ -0,0 +1,2 @@ +import AlgorithmConfig from "./algorithmConfig"; +export default AlgorithmConfig; \ No newline at end of file diff --git a/packages/material/es/algorithmConfigModal/algorithmConfigModal.d.ts b/packages/material/es/algorithmConfigModal/algorithmConfigModal.d.ts new file mode 100644 index 0000000..41b21e2 --- /dev/null +++ b/packages/material/es/algorithmConfigModal/algorithmConfigModal.d.ts @@ -0,0 +1,8 @@ +import { FC } from 'react'; +import { ModalProps } from "antd"; +import { AlgorithmConfigProps } from '../algorithmConfig/algorithmConfig'; +export interface AlgorithmConfigModalProps extends ModalProps { + algorithmConfigProps: AlgorithmConfigProps; +} +declare const AlgorithmConfigModal: FC; +export default AlgorithmConfigModal; diff --git a/packages/material/es/algorithmConfigModal/algorithmConfigModal.js b/packages/material/es/algorithmConfigModal/algorithmConfigModal.js new file mode 100644 index 0000000..6b0abfe --- /dev/null +++ b/packages/material/es/algorithmConfigModal/algorithmConfigModal.js @@ -0,0 +1,22 @@ +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +import React from 'react'; +import { ConfigProvider, Modal } from "antd"; +import AlgorithmConfig from "../algorithmConfig/algorithmConfig"; +var AlgorithmConfigModal = function AlgorithmConfigModal(props) { + var algorithmConfigProps = props.algorithmConfigProps; + return /*#__PURE__*/React.createElement(ConfigProvider, { + theme: { + components: { + Modal: { + headerBg: '#EFF2F4', + footerBg: '#EFF2F4', + contentBg: '#EFF2F4' + } + } + } + }, /*#__PURE__*/React.createElement(Modal, _extends({ + okText: "\u786E\u5B9A", + cancelText: "\u53D6\u6D88" + }, props), /*#__PURE__*/React.createElement(AlgorithmConfig, algorithmConfigProps))); +}; +export default AlgorithmConfigModal; \ No newline at end of file diff --git a/packages/material/es/algorithmConfigModal/index.d.ts b/packages/material/es/algorithmConfigModal/index.d.ts new file mode 100644 index 0000000..873cc35 --- /dev/null +++ b/packages/material/es/algorithmConfigModal/index.d.ts @@ -0,0 +1,2 @@ +import AlgorithmConfigModal from './algorithmConfigModal'; +export default AlgorithmConfigModal; diff --git a/packages/material/es/algorithmConfigModal/index.js b/packages/material/es/algorithmConfigModal/index.js new file mode 100644 index 0000000..3a3b16f --- /dev/null +++ b/packages/material/es/algorithmConfigModal/index.js @@ -0,0 +1,2 @@ +import AlgorithmConfigModal from "./algorithmConfigModal"; +export default AlgorithmConfigModal; \ No newline at end of file diff --git a/packages/material/es/index.d.ts b/packages/material/es/index.d.ts new file mode 100644 index 0000000..997d45d --- /dev/null +++ b/packages/material/es/index.d.ts @@ -0,0 +1,7 @@ +export { default as AlgorithmConfigModal } from './algorithmConfigModal'; +export { default as AlgorithmConfig } from './algorithmConfig'; +export type { AlgorithmConfigRef, AlgorithmConfigProps } from './algorithmConfig'; +export { default as Login } from './login'; +export { default as Password } from './password'; +export { default as SchemaFormModal } from './algorithmConfig/components/schemaFormModal'; +export * from 'rc-util'; diff --git a/packages/material/es/index.js b/packages/material/es/index.js new file mode 100644 index 0000000..1b18d5e --- /dev/null +++ b/packages/material/es/index.js @@ -0,0 +1,6 @@ +export { default as AlgorithmConfigModal } from "./algorithmConfigModal"; +export { default as AlgorithmConfig } from "./algorithmConfig"; +export { default as Login } from "./login"; +export { default as Password } from "./password"; +export { default as SchemaFormModal } from "./algorithmConfig/components/schemaFormModal"; +export * from 'rc-util'; \ No newline at end of file diff --git a/packages/material/es/login/Login.js b/packages/material/es/login/Login.js new file mode 100644 index 0000000..66e1f6e --- /dev/null +++ b/packages/material/es/login/Login.js @@ -0,0 +1,125 @@ +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +/** + * Created by jiangzhixiong on 2024/03/18 + */ + +import React from 'react'; +import { Button, Checkbox, Flex, Form, Image, Input, theme } from 'antd'; +import { HomeOutlined } from '@ant-design/icons'; +import { isNumber } from '@zhst/func'; +import "./index.less"; +var materialName = 'zhst-material-login'; +var useToken = theme.useToken; +var Login = function Login(props) { + var title = props.title, + onIconClick = props.onIconClick, + _props$rememberPasswo = props.rememberPassword, + rememberPassword = _props$rememberPasswo === void 0 ? true : _props$rememberPasswo, + imageUrl = props.imageUrl, + width = props.width, + height = props.height, + onFinish = props.onFinish; + var _Form$useForm = Form.useForm(), + _Form$useForm2 = _slicedToArray(_Form$useForm, 1), + form = _Form$useForm2[0]; + var _useToken = useToken(), + token = _useToken.token; + console.log('width', width); + return /*#__PURE__*/React.createElement(Flex, { + className: materialName, + style: { + width: isNumber(width) ? "".concat(width, "px") : width, + height: isNumber(height) ? "".concat(height, "px") : height + } + }, /*#__PURE__*/React.createElement(Flex, { + align: "center", + justify: "center", + style: { + position: 'relative', + width: '40%', + padding: "30px" + } + }, /*#__PURE__*/React.createElement(HomeOutlined, { + onClick: onIconClick, + style: { + position: 'absolute', + top: '30px', + left: '30px', + fontSize: "".concat(token.sizeLG, "px"), + cursor: 'pointer' + } + }), /*#__PURE__*/React.createElement("div", { + style: { + width: '56%' + } + }, /*#__PURE__*/React.createElement("h2", { + style: { + margin: '30px 0', + fontSize: '30px' + } + }, title), /*#__PURE__*/React.createElement(Form, { + layout: "vertical", + form: form, + onFinish: onFinish + }, /*#__PURE__*/React.createElement(Form.Item, { + name: "account", + label: "\u8D26\u53F7", + rules: [{ + required: true, + message: '请输入账号!' + }] + }, /*#__PURE__*/React.createElement(Input, { + placeholder: "\u8BF7\u8F93\u5165\u8D26\u53F7", + variant: "borderless", + style: { + border: 'none', + borderBottom: '1px solid rgba(0, 0, 0, 0.06)' + } + })), /*#__PURE__*/React.createElement(Form.Item, { + name: "password", + label: "\u5BC6\u7801", + rules: [{ + required: true, + message: '请输入密码!' + }] + }, /*#__PURE__*/React.createElement(Input.Password, { + placeholder: "\u8BF7\u8F93\u5165\u5BC6\u7801", + variant: "borderless", + style: { + border: 'none', + borderBottom: '1px solid rgba(0, 0, 0, 0.06)' + } + })), /*#__PURE__*/React.createElement(Form.Item, { + style: { + display: rememberPassword ? 'block' : 'none' + } + }, /*#__PURE__*/React.createElement(Form.Item, { + name: "remember", + valuePropName: "checked", + noStyle: true + }, /*#__PURE__*/React.createElement(Checkbox, null, "\u8BB0\u4F4F\u5BC6\u7801"))), /*#__PURE__*/React.createElement(Form.Item, null, /*#__PURE__*/React.createElement(Button, { + block: true, + type: "primary", + htmlType: "submit" + }, "\u767B\u5F55"))))), /*#__PURE__*/React.createElement("div", { + style: { + width: '60%', + height: '100%' + } + }, /*#__PURE__*/React.createElement(Image, { + style: { + width: '100%' + }, + src: imageUrl, + width: '100%', + height: '100%', + preview: false, + fallback: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAADDCAYAAADQvc6UAAABRWlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8LAwSDCIMogwMCcmFxc4BgQ4ANUwgCjUcG3awyMIPqyLsis7PPOq3QdDFcvjV3jOD1boQVTPQrgSkktTgbSf4A4LbmgqISBgTEFyFYuLykAsTuAbJEioKOA7DkgdjqEvQHEToKwj4DVhAQ5A9k3gGyB5IxEoBmML4BsnSQk8XQkNtReEOBxcfXxUQg1Mjc0dyHgXNJBSWpFCYh2zi+oLMpMzyhRcASGUqqCZ16yno6CkYGRAQMDKMwhqj/fAIcloxgHQqxAjIHBEugw5sUIsSQpBobtQPdLciLEVJYzMPBHMDBsayhILEqEO4DxG0txmrERhM29nYGBddr//5/DGRjYNRkY/l7////39v///y4Dmn+LgeHANwDrkl1AuO+pmgAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAwqADAAQAAAABAAAAwwAAAAD9b/HnAAAHlklEQVR4Ae3dP3PTWBSGcbGzM6GCKqlIBRV0dHRJFarQ0eUT8LH4BnRU0NHR0UEFVdIlFRV7TzRksomPY8uykTk/zewQfKw/9znv4yvJynLv4uLiV2dBoDiBf4qP3/ARuCRABEFAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghgg0Aj8i0JO4OzsrPv69Wv+hi2qPHr0qNvf39+iI97soRIh4f3z58/u7du3SXX7Xt7Z2enevHmzfQe+oSN2apSAPj09TSrb+XKI/f379+08+A0cNRE2ANkupk+ACNPvkSPcAAEibACyXUyfABGm3yNHuAECRNgAZLuYPgEirKlHu7u7XdyytGwHAd8jjNyng4OD7vnz51dbPT8/7z58+NB9+/bt6jU/TI+AGWHEnrx48eJ/EsSmHzx40L18+fLyzxF3ZVMjEyDCiEDjMYZZS5wiPXnyZFbJaxMhQIQRGzHvWR7XCyOCXsOmiDAi1HmPMMQjDpbpEiDCiL358eNHurW/5SnWdIBbXiDCiA38/Pnzrce2YyZ4//59F3ePLNMl4PbpiL2J0L979+7yDtHDhw8vtzzvdGnEXdvUigSIsCLAWavHp/+qM0BcXMd/q25n1vF57TYBp0a3mUzilePj4+7k5KSLb6gt6ydAhPUzXnoPR0dHl79WGTNCfBnn1uvSCJdegQhLI1vvCk+fPu2ePXt2tZOYEV6/fn31dz+shwAR1sP1cqvLntbEN9MxA9xcYjsxS1jWR4AIa2Ibzx0tc44fYX/16lV6NDFLXH+YL32jwiACRBiEbf5KcXoTIsQSpzXx4N28Ja4BQoK7rgXiydbHjx/P25TaQAJEGAguWy0+2Q8PD6/Ki4R8EVl+bzBOnZY95fq9rj9zAkTI2SxdidBHqG9+skdw43borCXO/ZcJdraPWdv22uIEiLA4q7nvvCug8WTqzQveOH26fodo7g6uFe/a17W3+nFBAkRYENRdb1vkkz1CH9cPsVy/jrhr27PqMYvENYNlHAIesRiBYwRy0V+8iXP8+/fvX11Mr7L7ECueb/r48eMqm7FuI2BGWDEG8cm+7G3NEOfmdcTQw4h9/55lhm7DekRYKQPZF2ArbXTAyu4kDYB2YxUzwg0gi/41ztHnfQG26HbGel/crVrm7tNY+/1btkOEAZ2M05r4FB7r9GbAIdxaZYrHdOsgJ/wCEQY0J74TmOKnbxxT9n3FgGGWWsVdowHtjt9Nnvf7yQM2aZU/TIAIAxrw6dOnAWtZZcoEnBpNuTuObWMEiLAx1HY0ZQJEmHJ3HNvGCBBhY6jtaMoEiJB0Z29vL6ls58vxPcO8/zfrdo5qvKO+d3Fx8Wu8zf1dW4p/cPzLly/dtv9Ts/EbcvGAHhHyfBIhZ6NSiIBTo0LNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiEC/wGgKKC4YMA4TAAAAABJRU5ErkJggg==" + }))); +}; +export default Login; \ No newline at end of file diff --git a/packages/material/es/login/images/ai-suanfa.png b/packages/material/es/login/images/ai-suanfa.png new file mode 100644 index 0000000..848fc3a Binary files /dev/null and b/packages/material/es/login/images/ai-suanfa.png differ diff --git a/packages/material/es/login/images/ai-video.png b/packages/material/es/login/images/ai-video.png new file mode 100644 index 0000000..99304b7 Binary files /dev/null and b/packages/material/es/login/images/ai-video.png differ diff --git a/packages/material/es/login/images/box-manage.png b/packages/material/es/login/images/box-manage.png new file mode 100644 index 0000000..fcaca42 Binary files /dev/null and b/packages/material/es/login/images/box-manage.png differ diff --git a/packages/material/es/login/index.d.ts b/packages/material/es/login/index.d.ts new file mode 100644 index 0000000..189be5f --- /dev/null +++ b/packages/material/es/login/index.d.ts @@ -0,0 +1,2 @@ +import Login from './Login'; +export default Login; diff --git a/packages/material/es/login/index.js b/packages/material/es/login/index.js new file mode 100644 index 0000000..11d767f --- /dev/null +++ b/packages/material/es/login/index.js @@ -0,0 +1,2 @@ +import Login from "./Login"; +export default Login; \ No newline at end of file diff --git a/packages/material/es/password/Password.d.ts b/packages/material/es/password/Password.d.ts new file mode 100644 index 0000000..47f9c0f --- /dev/null +++ b/packages/material/es/password/Password.d.ts @@ -0,0 +1,11 @@ +/** + * Created by jiangzhixiong on 2024/03/18 + */ +import { FC } from 'react'; +import { FormProps } from 'antd'; +interface PasswordProps { + onFinish: FormProps['onFinish']; + onCancel: () => void; +} +declare const Password: FC; +export default Password; diff --git a/packages/material/es/password/Password.js b/packages/material/es/password/Password.js new file mode 100644 index 0000000..07c03ee --- /dev/null +++ b/packages/material/es/password/Password.js @@ -0,0 +1,101 @@ +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +/** + * Created by jiangzhixiong on 2024/03/18 + */ + +import React from 'react'; +import { Button, Form, Input, Space } from 'antd'; +var Password = function Password(props) { + var onFinish = props.onFinish, + onCancel = props.onCancel; + var _Form$useForm = Form.useForm(), + _Form$useForm2 = _slicedToArray(_Form$useForm, 1), + form = _Form$useForm2[0]; + return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h2", { + style: { + marginTop: '0', + fontSize: '20px' + } + }, "\u4FEE\u6539\u5BC6\u7801"), /*#__PURE__*/React.createElement(Form, { + labelCol: { + span: 4 + }, + wrapperCol: { + span: 20 + }, + form: form, + onFinish: onFinish + }, /*#__PURE__*/React.createElement(Form.Item, { + name: "password", + label: "\u539F\u5BC6\u7801", + rules: [{ + required: true, + message: '请输入密码!' + }] + }, /*#__PURE__*/React.createElement(Input.Password, { + variant: "borderless", + style: { + border: 'none', + borderBottom: '1px solid rgba(0, 0, 0, 0.06)' + } + })), /*#__PURE__*/React.createElement(Form.Item, { + name: "newPassword", + label: "\u65B0\u5BC6\u7801", + rules: [{ + required: true, + message: '请输入新密码!' + }] + }, /*#__PURE__*/React.createElement(Input.Password, { + variant: "borderless", + style: { + border: 'none', + borderBottom: '1px solid rgba(0, 0, 0, 0.06)' + } + })), /*#__PURE__*/React.createElement(Form.Item, { + name: "rePassword", + label: "\u786E\u8BA4\u5BC6\u7801", + dependencies: ['password'], + rules: [{ + required: true, + message: '请再次输入密码!' + }, function (_ref) { + var getFieldValue = _ref.getFieldValue; + return { + validator: function validator(_, value) { + if (!value || getFieldValue('password') === value) { + return Promise.resolve(); + } + return Promise.reject(new Error('两次输入的密码不一致!')); + } + }; + }] + }, /*#__PURE__*/React.createElement(Input.Password, { + variant: "borderless", + style: { + border: 'none', + borderBottom: '1px solid rgba(0, 0, 0, 0.06)' + } + })), /*#__PURE__*/React.createElement("div", { + style: { + textAlign: 'right' + } + }, /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement(Button, { + htmlType: "reset", + onClick: onCancel, + style: { + width: '100px' + } + }, "\u53D6\u6D88"), /*#__PURE__*/React.createElement(Button, { + type: "primary", + htmlType: "submit", + style: { + width: '100px' + } + }, "\u786E\u8BA4"))))); +}; +export default Password; \ No newline at end of file diff --git a/packages/material/es/password/index.d.ts b/packages/material/es/password/index.d.ts new file mode 100644 index 0000000..b102ba8 --- /dev/null +++ b/packages/material/es/password/index.d.ts @@ -0,0 +1,2 @@ +import Password from './Password'; +export default Password; diff --git a/packages/material/es/password/index.js b/packages/material/es/password/index.js new file mode 100644 index 0000000..19f86b0 --- /dev/null +++ b/packages/material/es/password/index.js @@ -0,0 +1,2 @@ +import Password from "./Password"; +export default Password; \ No newline at end of file diff --git a/packages/material/es/utils/base64Images.d.ts b/packages/material/es/utils/base64Images.d.ts new file mode 100644 index 0000000..0cd9cac --- /dev/null +++ b/packages/material/es/utils/base64Images.d.ts @@ -0,0 +1,2 @@ +export declare const AlgorithmConfigImg = "data:image/png;base64,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"; +export declare const ErrorImage = "data:image/png;base64,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"; diff --git a/packages/material/es/utils/base64Images.js b/packages/material/es/utils/base64Images.js new file mode 100644 index 0000000..26e6b03 --- /dev/null +++ b/packages/material/es/utils/base64Images.js @@ -0,0 +1,2 @@ +export var AlgorithmConfigImg = 'data:image/png;base64,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'; +export var ErrorImage = 'data:image/png;base64,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'; \ No newline at end of file diff --git a/packages/material/es/utils/constants.d.ts b/packages/material/es/utils/constants.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/material/es/utils/constants.js b/packages/material/es/utils/constants.js new file mode 100644 index 0000000..e69de29 diff --git a/packages/material/es/utils/index.d.ts b/packages/material/es/utils/index.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/material/es/utils/index.js b/packages/material/es/utils/index.js new file mode 100644 index 0000000..e69de29 diff --git a/packages/material/es/utils/types.d.ts b/packages/material/es/utils/types.d.ts new file mode 100644 index 0000000..69d3304 --- /dev/null +++ b/packages/material/es/utils/types.d.ts @@ -0,0 +1 @@ +export type AnyObject = Record; diff --git a/packages/material/es/utils/types.js b/packages/material/es/utils/types.js new file mode 100644 index 0000000..8cec2e9 --- /dev/null +++ b/packages/material/es/utils/types.js @@ -0,0 +1 @@ +export {}; \ No newline at end of file diff --git a/packages/material/lib/algorithmConfig/algorithmConfig.d.ts b/packages/material/lib/algorithmConfig/algorithmConfig.d.ts new file mode 100644 index 0000000..9c0101e --- /dev/null +++ b/packages/material/lib/algorithmConfig/algorithmConfig.d.ts @@ -0,0 +1,53 @@ +import React from 'react'; +import { AlgorithmTableProps } from './components/algorithmTable/AlgorithmTable'; +import { TimeTemplateTableProps } from './components/timeTemplateTable/TimeTemplateTable'; +export interface AlgorithmConfigProps { + onAddAlgorithm?: () => void; + /** + * 单选的图片数据 + */ + drawData?: { + imageKey: string; + odRect?: { + x: number; + y: number; + w: number; + h: number; + }; + score?: string; + time?: string; + }; + /** + * 单选状态圈选后的监听事件 + */ + drawListener?: (data: any) => void; + algorithmTableDataSource?: { + id: string; + templateName: string; + operatingCycle: string; + algorithmOccupied: number; + }[]; + timeTemplateDataSource?: { + id: string; + templateName: string; + operatingCycle: string; + arrangeWeek: string; + algorithmOccupied: string; + }[]; + boxList: { + id: string; + name: string; + }[]; + algorithmTableProps?: AlgorithmTableProps; + timeTemplateTableProps?: TimeTemplateTableProps; + selectedKey?: string; + rowKey?: string; + type: AlgorithmTableProps['tableType']; + onSelect?: (key: string, info?: any) => void; +} +export interface AlgorithmConfigRef { + draw: () => void; + cancelDraw: () => void; +} +declare const AlgorithmConfig: React.ForwardRefExoticComponent>; +export default AlgorithmConfig; diff --git a/packages/material/lib/algorithmConfig/algorithmConfig.js b/packages/material/lib/algorithmConfig/algorithmConfig.js new file mode 100644 index 0000000..b21feb9 --- /dev/null +++ b/packages/material/lib/algorithmConfig/algorithmConfig.js @@ -0,0 +1,122 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/algorithmConfig/algorithmConfig.tsx +var algorithmConfig_exports = {}; +__export(algorithmConfig_exports, { + default: () => algorithmConfig_default +}); +module.exports = __toCommonJS(algorithmConfig_exports); +var import_react = __toESM(require("react")); +var import_antd = require("antd"); +var import_theme = __toESM(require("antd/es/theme")); +var import_meta = require("@zhst/meta"); +var import_base64Images = require("../utils/base64Images"); +var import_algorithmTable = __toESM(require("./components/algorithmTable")); +var import_timeTemplateTable = __toESM(require("./components/timeTemplateTable")); +var { useToken } = import_theme.default; +var Title = (props) => /* @__PURE__ */ import_react.default.createElement("h2", { style: { margin: "18px 16px", fontSize: "14px", color: "rgba(0, 0, 0, 0.88)" } }, props.children); +var AlgorithmConfig = (0, import_react.forwardRef)((props, ref) => { + const { + algorithmTableDataSource = [], + timeTemplateDataSource = [], + boxList = [], + drawData, + drawListener, + algorithmTableProps, + timeTemplateTableProps, + selectedKey, + type = "multiple", + rowKey = "id", + onSelect + } = props; + const drawImageRef = (0, import_react.useRef)(null); + const { token } = useToken(); + (0, import_react.useImperativeHandle)(ref, () => ({ + draw: () => { + var _a; + (_a = drawImageRef.current) == null ? void 0 : _a.setShowCrop(true); + }, + cancelDraw: () => { + var _a; + (_a = drawImageRef.current) == null ? void 0 : _a.setShowCrop(false); + } + })); + return /* @__PURE__ */ import_react.default.createElement(import_antd.Flex, { style: { border: `1px solid ${token.colorBorder}`, backgroundColor: token.colorBgBase } }, /* @__PURE__ */ import_react.default.createElement("div", { title: "盒子列表", style: { width: "13.9%" } }, /* @__PURE__ */ import_react.default.createElement(Title, null, "盒子列表"), /* @__PURE__ */ import_react.default.createElement("div", { style: { borderTop: `1px solid ${token.colorBorder}` } }, boxList.map((item) => { + return /* @__PURE__ */ import_react.default.createElement( + "p", + { + key: item.id, + onClick: () => onSelect == null ? void 0 : onSelect(item.id, item), + style: { + margin: 0, + padding: `${token.paddingXXS}px ${token.paddingLG}px`, + cursor: "pointer", + // @ts-ignore + color: selectedKey === item[rowKey] ? token.colorPrimary : token.colorText, + // @ts-ignore + backgroundColor: selectedKey === item[rowKey] ? token.blue1 : token.colorBgBase, + transition: "0.2s ease" + } + }, + item.name + ); + }))), /* @__PURE__ */ import_react.default.createElement("div", { style: { boxSizing: "border-box", width: "46.3%", textAlign: "center", borderLeft: `1px solid ${token.colorBorder}`, borderRight: `1px solid ${token.colorBorder}` } }, type === "single" ? /* @__PURE__ */ import_react.default.createElement( + import_meta.BigImagePreview, + { + ref: drawImageRef, + hideTypeBtns: true, + type: "CUSTOM", + screenshotButtonRender: () => /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null), + data: drawData, + onDraw: drawListener + } + ) : /* @__PURE__ */ import_react.default.createElement("div", { style: { padding: "84px" } }, /* @__PURE__ */ import_react.default.createElement( + import_antd.Image, + { + width: "62.5%", + src: import_base64Images.AlgorithmConfigImg, + preview: false, + fallback: import_base64Images.ErrorImage + } + ), /* @__PURE__ */ import_react.default.createElement("h2", null, "请进行批量配置"), /* @__PURE__ */ import_react.default.createElement("ul", { style: { display: "inline-block", paddingLeft: 0, width: "51.8%", listStyle: "none", textAlign: "left", color: token.colorTextLabel } }, /* @__PURE__ */ import_react.default.createElement("li", null, "· 盒子批量配置仅支持同型号盒子;"), /* @__PURE__ */ import_react.default.createElement("li", null, "· 采取覆盖式更新,不保留原有配置,且预警检测框默认全屏范围;"), /* @__PURE__ */ import_react.default.createElement("li", null, "· 人流量统计默认检测线为屏幕中央横向线条,且箭头指向下方;"), /* @__PURE__ */ import_react.default.createElement("li", null, "· 优先选择拉流正常的摄像头。")))), /* @__PURE__ */ import_react.default.createElement("div", { style: { width: "39.8%" } }, /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(Title, null, "时间模板"), /* @__PURE__ */ import_react.default.createElement("div", { style: { padding: `${token.paddingMD}px ${token.paddingSM}px`, borderTop: `1px solid ${token.colorBorder}`, borderBottom: `1px solid ${token.colorBorder}` } }, /* @__PURE__ */ import_react.default.createElement( + import_timeTemplateTable.default, + { + dataSource: timeTemplateDataSource, + ...timeTemplateTableProps + } + ))), /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(Title, null, "算法应用"), /* @__PURE__ */ import_react.default.createElement("div", { style: { padding: `${token.paddingMD}px ${token.paddingSM}px`, borderTop: `1px solid ${token.colorBorder}` } }, /* @__PURE__ */ import_react.default.createElement( + import_algorithmTable.default, + { + dataSource: algorithmTableDataSource, + tableType: type, + ...algorithmTableProps + } + ))))); +}); +var algorithmConfig_default = AlgorithmConfig; diff --git a/packages/material/lib/algorithmConfig/components/algorithmTable/AlgorithmTable.js b/packages/material/lib/algorithmConfig/components/algorithmTable/AlgorithmTable.js new file mode 100644 index 0000000..ced7659 --- /dev/null +++ b/packages/material/lib/algorithmConfig/components/algorithmTable/AlgorithmTable.js @@ -0,0 +1,126 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/algorithmConfig/components/algorithmTable/AlgorithmTable.tsx +var AlgorithmTable_exports = {}; +__export(AlgorithmTable_exports, { + default: () => AlgorithmTable_default +}); +module.exports = __toCommonJS(AlgorithmTable_exports); +var import_react = __toESM(require("react")); +var import_icons = require("@ant-design/icons"); +var import_pro_components = require("@ant-design/pro-components"); +var import_antd = require("antd"); +var import_theme = __toESM(require("antd/es/theme")); +var import_schemaFormModal = __toESM(require("../schemaFormModal")); +var { useToken } = import_theme.default; +var AlgorithmTable = (props) => { + const { + onAddAlgorithm, + onItemSwitch, + onItemEdit, + onItemDelete, + onSortSelect, + selectedKey, + onDraw, + tableType = "multiple", + sortList = [] + } = props; + const { token } = useToken(); + const columns = [ + { + title: "模板名称", + dataIndex: "templateName" + }, + { + title: "运行周期", + dataIndex: "runCycle", + valueType: "select", + width: 80, + valueEnum: { + 1: { text: "黑夜" }, + 0: { text: "白天" } + } + }, + { + title: "算力占用", + dataIndex: "powerOccupy" + }, + { + title: "操作", + key: "option", + valueType: "option", + fixed: true, + render: (_DOM, record) => [ + /* @__PURE__ */ import_react.default.createElement(import_antd.Switch, { value: record.status, onChange: (_status) => onItemSwitch == null ? void 0 : onItemSwitch(_status, record.id, record) }), + /* @__PURE__ */ import_react.default.createElement("a", { onClick: () => onDraw == null ? void 0 : onDraw(record.id, record), style: { display: tableType === "single" ? "block" : "none" }, href: "#" }, /* @__PURE__ */ import_react.default.createElement(import_icons.ImportOutlined, null)), + /* @__PURE__ */ import_react.default.createElement( + import_schemaFormModal.default, + { + type: record.templateType, + onFinish: async (values) => onItemEdit == null ? void 0 : onItemEdit(values, record), + trigger: /* @__PURE__ */ import_react.default.createElement("a", { href: "#" }, /* @__PURE__ */ import_react.default.createElement(import_icons.EditFilled, null)) + } + ), + /* @__PURE__ */ import_react.default.createElement( + import_antd.Popconfirm, + { + title: "确定删除吗?", + onConfirm: () => onItemDelete == null ? void 0 : onItemDelete(record.id, record) + }, + /* @__PURE__ */ import_react.default.createElement("a", { href: "#" }, /* @__PURE__ */ import_react.default.createElement(import_icons.DeleteFilled, null)) + ) + ] + } + ]; + return /* @__PURE__ */ import_react.default.createElement( + import_pro_components.ProTable, + { + columns, + bordered: true, + scroll: { y: 240 }, + dataSource: [], + headerTitle: /* @__PURE__ */ import_react.default.createElement(import_antd.Space, { size: 16 }, /* @__PURE__ */ import_react.default.createElement( + import_antd.Select, + { + value: selectedKey, + style: { width: 320 }, + onChange: onSortSelect, + options: sortList + } + ), /* @__PURE__ */ import_react.default.createElement(import_icons.PlusCircleFilled, { onClick: () => onAddAlgorithm == null ? void 0 : onAddAlgorithm(), style: { fontSize: "24px", color: token.colorPrimary, cursor: "pointer" } })), + toolbar: void 0, + rowKey: "id", + search: false, + options: false, + pagination: false, + ...props + } + ); +}; +var AlgorithmTable_default = AlgorithmTable; diff --git a/packages/material/lib/algorithmConfig/components/algorithmTable/index.d.ts b/packages/material/lib/algorithmConfig/components/algorithmTable/index.d.ts new file mode 100644 index 0000000..42d422c --- /dev/null +++ b/packages/material/lib/algorithmConfig/components/algorithmTable/index.d.ts @@ -0,0 +1,3 @@ +import AlgorithmTable from './AlgorithmTable'; +export type { AlgorithmTableProps } from './AlgorithmTable'; +export default AlgorithmTable; diff --git a/packages/material/lib/algorithmConfig/components/algorithmTable/index.js b/packages/material/lib/algorithmConfig/components/algorithmTable/index.js new file mode 100644 index 0000000..8c7d5fc --- /dev/null +++ b/packages/material/lib/algorithmConfig/components/algorithmTable/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/algorithmConfig/components/algorithmTable/index.tsx +var algorithmTable_exports = {}; +__export(algorithmTable_exports, { + default: () => algorithmTable_default +}); +module.exports = __toCommonJS(algorithmTable_exports); +var import_AlgorithmTable = __toESM(require("./AlgorithmTable")); +var algorithmTable_default = import_AlgorithmTable.default; diff --git a/packages/material/lib/algorithmConfig/components/schemaFormModal/index.js b/packages/material/lib/algorithmConfig/components/schemaFormModal/index.js new file mode 100644 index 0000000..c0d23b6 --- /dev/null +++ b/packages/material/lib/algorithmConfig/components/schemaFormModal/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/algorithmConfig/components/schemaFormModal/index.tsx +var schemaFormModal_exports = {}; +__export(schemaFormModal_exports, { + default: () => schemaFormModal_default +}); +module.exports = __toCommonJS(schemaFormModal_exports); +var import_schemaFormModal = __toESM(require("./schemaFormModal")); +var schemaFormModal_default = import_schemaFormModal.default; diff --git a/packages/material/lib/algorithmConfig/components/schemaFormModal/schemaFormModal.d.ts b/packages/material/lib/algorithmConfig/components/schemaFormModal/schemaFormModal.d.ts new file mode 100644 index 0000000..2c2d7cd --- /dev/null +++ b/packages/material/lib/algorithmConfig/components/schemaFormModal/schemaFormModal.d.ts @@ -0,0 +1,8 @@ +import { FC } from 'react'; +import type { ModalFormProps } from '@ant-design/pro-components'; +export interface SchemaFormModalProps extends ModalFormProps { + type: 'fire' | 'smoke' | 'traffic' | 'face' | 'destroy' | 'wander' | 'gather' | 'cameraBlock'; +} +export declare const SCHEME_TYPE_LIST: Map; +declare const SchemaFormModal: FC; +export default SchemaFormModal; diff --git a/packages/material/lib/algorithmConfig/components/schemaFormModal/schemaFormModal.js b/packages/material/lib/algorithmConfig/components/schemaFormModal/schemaFormModal.js new file mode 100644 index 0000000..25b7dfd --- /dev/null +++ b/packages/material/lib/algorithmConfig/components/schemaFormModal/schemaFormModal.js @@ -0,0 +1,173 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/algorithmConfig/components/schemaFormModal/schemaFormModal.tsx +var schemaFormModal_exports = {}; +__export(schemaFormModal_exports, { + SCHEME_TYPE_LIST: () => SCHEME_TYPE_LIST, + default: () => schemaFormModal_default +}); +module.exports = __toCommonJS(schemaFormModal_exports); +var import_react = __toESM(require("react")); +var import_pro_components = require("@ant-design/pro-components"); +var import_antd = require("antd"); +var SCHEME_TYPE_LIST = /* @__PURE__ */ new Map([ + ["fire", "火焰识别"], + ["smoke", "烟雾识别"], + ["traffic", "人流量统计"], + ["face", "面部遮挡识别"], + ["destroy", "人员破坏识别"], + ["wander", "人员徘徊识别"], + ["gather", "人员聚集识别"], + ["cameraBlock", "摄像头遮挡识别"] +]); +var SchemaFormModal = (props) => { + const { + type = "fire", + onFinish + } = props; + const getColumnsByType = (type2) => { + if (!type2) + return []; + let arr = []; + if (type2 === "gather") { + arr.push({ + title: "预警人数:", + dataIndex: "alarmMember", + formItemProps: { + rules: [ + { + required: true, + message: "此项为必填项" + } + ] + }, + renderFormItem: () => /* @__PURE__ */ import_react.default.createElement(import_antd.Space, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Input, null), "人(3~10)"), + width: "m" + }); + } + if (type2 === "cameraBlock") { + arr.push({ + title: "遮挡百分比:", + dataIndex: "blockPercent", + formItemProps: { + rules: [ + { + required: true, + message: "此项为必填项" + } + ] + }, + renderFormItem: () => /* @__PURE__ */ import_react.default.createElement(import_antd.Space, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Input, null), "%(30~80)"), + width: "m" + }); + } + if (type2 !== "traffic") { + arr.push({ + title: "最短持续时间:", + dataIndex: "minTime", + formItemProps: { + rules: [ + { + required: true, + message: "此项为必填项" + } + ] + }, + renderFormItem: () => /* @__PURE__ */ import_react.default.createElement(import_antd.Space, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Input, null), "秒(2~10)"), + width: "m" + }); + arr.push({ + title: "报警间隔时间:", + dataIndex: "alarmTime", + formItemProps: { + rules: [ + { + required: true, + message: "此项为必填项" + } + ] + }, + renderFormItem: () => /* @__PURE__ */ import_react.default.createElement(import_antd.Space, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Input, null), "秒(10~600)"), + width: "m" + }); + } else if (type2 === "traffic") { + arr.push({ + title: "灵敏度:", + dataIndex: "sensitivity", + formItemProps: { + rules: [ + { + required: true, + message: "此项为必填项" + } + ] + }, + renderFormItem: () => /* @__PURE__ */ import_react.default.createElement(import_antd.Space, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Input, null), "(0~100)"), + width: "m" + }); + } + arr.push({ + title: "灵敏度:", + dataIndex: "sensitivity", + formItemProps: { + rules: [ + { + required: true, + message: "此项为必填项" + } + ] + }, + renderFormItem: () => /* @__PURE__ */ import_react.default.createElement(import_antd.Space, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Input, null), "(0~100)"), + width: "m" + }); + return arr; + }; + return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement( + import_pro_components.BetaSchemaForm, + { + width: 600, + title: SCHEME_TYPE_LIST.get(type), + shouldUpdate: false, + layoutType: "ModalForm", + layout: "horizontal", + labelCol: { span: 6 }, + wrapperCol: { span: 18 }, + preserve: false, + modalProps: { destroyOnClose: true }, + onFinish, + columns: getColumnsByType(type), + ...props + } + )); +}; +var schemaFormModal_default = SchemaFormModal; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + SCHEME_TYPE_LIST +}); diff --git a/packages/material/lib/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.d.ts b/packages/material/lib/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.d.ts new file mode 100644 index 0000000..102d04a --- /dev/null +++ b/packages/material/lib/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.d.ts @@ -0,0 +1,8 @@ +import React from 'react'; +import type { ParamsType, ProTableProps } from '@ant-design/pro-components'; +import { AnyObject } from 'antd/es/_util/type'; +export interface TimeTemplateTableProps extends ProTableProps { + onItemBlur?: (value?: number | string, id?: any, record?: any) => void; +} +declare const TimeTemplateTable: (props: TimeTemplateTableProps) => React.JSX.Element; +export default TimeTemplateTable; diff --git a/packages/material/lib/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.js b/packages/material/lib/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.js new file mode 100644 index 0000000..a4c1075 --- /dev/null +++ b/packages/material/lib/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.js @@ -0,0 +1,82 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.tsx +var TimeTemplateTable_exports = {}; +__export(TimeTemplateTable_exports, { + default: () => TimeTemplateTable_default +}); +module.exports = __toCommonJS(TimeTemplateTable_exports); +var import_react = __toESM(require("react")); +var import_pro_components = require("@ant-design/pro-components"); +var import_antd = require("antd"); +var TimeTemplateTable = (props) => { + const { + onItemBlur + } = props; + const columns = [ + { + title: "模板名称", + dataIndex: "templateName" + }, + { + title: "运行周期", + dataIndex: "runCycle" + }, + { + title: "布控星期", + dataIndex: "arrangeDay" + }, + { + title: "算力占用", + dataIndex: "powerOccupy" + }, + { + title: "配置路数", + key: "option", + valueType: "option", + render: (_, record) => /* @__PURE__ */ import_react.default.createElement(import_antd.InputNumber, { value: record.lineNum, onBlur: (e) => onItemBlur == null ? void 0 : onItemBlur(e.target.value, record.id, record), min: 0 }) + } + ]; + return /* @__PURE__ */ import_react.default.createElement( + import_pro_components.ProTable, + { + columns, + bordered: true, + scroll: { y: 95 }, + toolbar: void 0, + rowKey: "id", + search: false, + options: false, + pagination: false, + dataSource: [], + ...props + } + ); +}; +var TimeTemplateTable_default = TimeTemplateTable; diff --git a/packages/material/lib/algorithmConfig/components/timeTemplateTable/index.d.ts b/packages/material/lib/algorithmConfig/components/timeTemplateTable/index.d.ts new file mode 100644 index 0000000..fefdc38 --- /dev/null +++ b/packages/material/lib/algorithmConfig/components/timeTemplateTable/index.d.ts @@ -0,0 +1,3 @@ +import TimeTemplateTable from './TimeTemplateTable'; +export type { TimeTemplateTableProps } from './TimeTemplateTable'; +export default TimeTemplateTable; diff --git a/packages/material/lib/algorithmConfig/components/timeTemplateTable/index.js b/packages/material/lib/algorithmConfig/components/timeTemplateTable/index.js new file mode 100644 index 0000000..3ec41fb --- /dev/null +++ b/packages/material/lib/algorithmConfig/components/timeTemplateTable/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/algorithmConfig/components/timeTemplateTable/index.tsx +var timeTemplateTable_exports = {}; +__export(timeTemplateTable_exports, { + default: () => timeTemplateTable_default +}); +module.exports = __toCommonJS(timeTemplateTable_exports); +var import_TimeTemplateTable = __toESM(require("./TimeTemplateTable")); +var timeTemplateTable_default = import_TimeTemplateTable.default; diff --git a/packages/material/lib/algorithmConfig/index.d.ts b/packages/material/lib/algorithmConfig/index.d.ts new file mode 100644 index 0000000..7f2faa9 --- /dev/null +++ b/packages/material/lib/algorithmConfig/index.d.ts @@ -0,0 +1,5 @@ +import AlgorithmConfig from './algorithmConfig'; +export type { AlgorithmConfigProps, AlgorithmConfigRef } from './algorithmConfig'; +export type { AlgorithmTableProps } from './components/algorithmTable'; +export type { TimeTemplateTableProps } from './components/timeTemplateTable'; +export default AlgorithmConfig; diff --git a/packages/material/lib/algorithmConfig/index.js b/packages/material/lib/algorithmConfig/index.js new file mode 100644 index 0000000..2f05c2f --- /dev/null +++ b/packages/material/lib/algorithmConfig/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/algorithmConfig/index.tsx +var algorithmConfig_exports = {}; +__export(algorithmConfig_exports, { + default: () => algorithmConfig_default +}); +module.exports = __toCommonJS(algorithmConfig_exports); +var import_algorithmConfig = __toESM(require("./algorithmConfig")); +var algorithmConfig_default = import_algorithmConfig.default; diff --git a/packages/material/lib/algorithmConfigModal/algorithmConfigModal.d.ts b/packages/material/lib/algorithmConfigModal/algorithmConfigModal.d.ts new file mode 100644 index 0000000..41b21e2 --- /dev/null +++ b/packages/material/lib/algorithmConfigModal/algorithmConfigModal.d.ts @@ -0,0 +1,8 @@ +import { FC } from 'react'; +import { ModalProps } from "antd"; +import { AlgorithmConfigProps } from '../algorithmConfig/algorithmConfig'; +export interface AlgorithmConfigModalProps extends ModalProps { + algorithmConfigProps: AlgorithmConfigProps; +} +declare const AlgorithmConfigModal: FC; +export default AlgorithmConfigModal; diff --git a/packages/material/lib/algorithmConfigModal/algorithmConfigModal.js b/packages/material/lib/algorithmConfigModal/algorithmConfigModal.js new file mode 100644 index 0000000..4ca5a6f --- /dev/null +++ b/packages/material/lib/algorithmConfigModal/algorithmConfigModal.js @@ -0,0 +1,71 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/algorithmConfigModal/algorithmConfigModal.tsx +var algorithmConfigModal_exports = {}; +__export(algorithmConfigModal_exports, { + default: () => algorithmConfigModal_default +}); +module.exports = __toCommonJS(algorithmConfigModal_exports); +var import_react = __toESM(require("react")); +var import_antd = require("antd"); +var import_algorithmConfig = __toESM(require("../algorithmConfig/algorithmConfig")); +var AlgorithmConfigModal = (props) => { + const { + algorithmConfigProps + } = props; + return /* @__PURE__ */ import_react.default.createElement( + import_antd.ConfigProvider, + { + theme: { + components: { + Modal: { + headerBg: "#EFF2F4", + footerBg: "#EFF2F4", + contentBg: "#EFF2F4" + } + } + } + }, + /* @__PURE__ */ import_react.default.createElement( + import_antd.Modal, + { + okText: "确定", + cancelText: "取消", + ...props + }, + /* @__PURE__ */ import_react.default.createElement( + import_algorithmConfig.default, + { + ...algorithmConfigProps + } + ) + ) + ); +}; +var algorithmConfigModal_default = AlgorithmConfigModal; diff --git a/packages/material/lib/algorithmConfigModal/index.d.ts b/packages/material/lib/algorithmConfigModal/index.d.ts new file mode 100644 index 0000000..873cc35 --- /dev/null +++ b/packages/material/lib/algorithmConfigModal/index.d.ts @@ -0,0 +1,2 @@ +import AlgorithmConfigModal from './algorithmConfigModal'; +export default AlgorithmConfigModal; diff --git a/packages/material/lib/algorithmConfigModal/index.js b/packages/material/lib/algorithmConfigModal/index.js new file mode 100644 index 0000000..820ec00 --- /dev/null +++ b/packages/material/lib/algorithmConfigModal/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/algorithmConfigModal/index.tsx +var algorithmConfigModal_exports = {}; +__export(algorithmConfigModal_exports, { + default: () => algorithmConfigModal_default +}); +module.exports = __toCommonJS(algorithmConfigModal_exports); +var import_algorithmConfigModal = __toESM(require("./algorithmConfigModal")); +var algorithmConfigModal_default = import_algorithmConfigModal.default; diff --git a/packages/material/lib/index.d.ts b/packages/material/lib/index.d.ts new file mode 100644 index 0000000..997d45d --- /dev/null +++ b/packages/material/lib/index.d.ts @@ -0,0 +1,7 @@ +export { default as AlgorithmConfigModal } from './algorithmConfigModal'; +export { default as AlgorithmConfig } from './algorithmConfig'; +export type { AlgorithmConfigRef, AlgorithmConfigProps } from './algorithmConfig'; +export { default as Login } from './login'; +export { default as Password } from './password'; +export { default as SchemaFormModal } from './algorithmConfig/components/schemaFormModal'; +export * from 'rc-util'; diff --git a/packages/material/lib/index.js b/packages/material/lib/index.js new file mode 100644 index 0000000..b86b1de --- /dev/null +++ b/packages/material/lib/index.js @@ -0,0 +1,54 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.tsx +var src_exports = {}; +__export(src_exports, { + AlgorithmConfig: () => import_algorithmConfig.default, + AlgorithmConfigModal: () => import_algorithmConfigModal.default, + Login: () => import_login.default, + Password: () => import_password.default, + SchemaFormModal: () => import_schemaFormModal.default +}); +module.exports = __toCommonJS(src_exports); +var import_algorithmConfigModal = __toESM(require("./algorithmConfigModal")); +var import_algorithmConfig = __toESM(require("./algorithmConfig")); +var import_login = __toESM(require("./login")); +var import_password = __toESM(require("./password")); +var import_schemaFormModal = __toESM(require("./algorithmConfig/components/schemaFormModal")); +__reExport(src_exports, require("rc-util"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + AlgorithmConfig, + AlgorithmConfigModal, + Login, + Password, + SchemaFormModal, + ...require("rc-util") +}); diff --git a/packages/material/lib/login/Login.js b/packages/material/lib/login/Login.js new file mode 100644 index 0000000..d0ad60a --- /dev/null +++ b/packages/material/lib/login/Login.js @@ -0,0 +1,110 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/login/Login.tsx +var Login_exports = {}; +__export(Login_exports, { + default: () => Login_default +}); +module.exports = __toCommonJS(Login_exports); +var import_react = __toESM(require("react")); +var import_antd = require("antd"); +var import_icons = require("@ant-design/icons"); +var import_func = require("@zhst/func"); +var import_index = require("./index.less"); +var materialName = "zhst-material-login"; +var { useToken } = import_antd.theme; +var Login = (props) => { + const { + title, + onIconClick, + rememberPassword = true, + imageUrl, + width, + height, + onFinish + } = props; + const [form] = import_antd.Form.useForm(); + const { token } = useToken(); + console.log("width", width); + return /* @__PURE__ */ import_react.default.createElement(import_antd.Flex, { className: materialName, style: { width: (0, import_func.isNumber)(width) ? `${width}px` : width, height: (0, import_func.isNumber)(height) ? `${height}px` : height } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Flex, { align: "center", justify: "center", style: { position: "relative", width: "40%", padding: `30px` } }, /* @__PURE__ */ import_react.default.createElement( + import_icons.HomeOutlined, + { + onClick: onIconClick, + style: { + position: "absolute", + top: "30px", + left: "30px", + fontSize: `${token.sizeLG}px`, + cursor: "pointer" + } + } + ), /* @__PURE__ */ import_react.default.createElement("div", { style: { width: "56%" } }, /* @__PURE__ */ import_react.default.createElement("h2", { style: { margin: "30px 0", fontSize: "30px" } }, title), /* @__PURE__ */ import_react.default.createElement( + import_antd.Form, + { + layout: "vertical", + form, + onFinish + }, + /* @__PURE__ */ import_react.default.createElement( + import_antd.Form.Item, + { + name: "account", + label: "账号", + rules: [ + { required: true, message: "请输入账号!" } + ] + }, + /* @__PURE__ */ import_react.default.createElement(import_antd.Input, { placeholder: "请输入账号", variant: "borderless", style: { border: "none", borderBottom: "1px solid rgba(0, 0, 0, 0.06)" } }) + ), + /* @__PURE__ */ import_react.default.createElement( + import_antd.Form.Item, + { + name: "password", + label: "密码", + rules: [ + { required: true, message: "请输入密码!" } + ] + }, + /* @__PURE__ */ import_react.default.createElement(import_antd.Input.Password, { placeholder: "请输入密码", variant: "borderless", style: { border: "none", borderBottom: "1px solid rgba(0, 0, 0, 0.06)" } }) + ), + /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, { style: { display: rememberPassword ? "block" : "none" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, { name: "remember", valuePropName: "checked", noStyle: true }, /* @__PURE__ */ import_react.default.createElement(import_antd.Checkbox, null, "记住密码"))), + /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { block: true, type: "primary", htmlType: "submit" }, "登录")) + ))), /* @__PURE__ */ import_react.default.createElement("div", { style: { width: "60%", height: "100%" } }, /* @__PURE__ */ import_react.default.createElement( + import_antd.Image, + { + style: { width: "100%" }, + src: imageUrl, + width: "100%", + height: "100%", + preview: false, + fallback: "data:image/png;base64,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" + } + ))); +}; +var Login_default = Login; diff --git a/packages/material/lib/login/images/ai-suanfa.png b/packages/material/lib/login/images/ai-suanfa.png new file mode 100644 index 0000000..848fc3a Binary files /dev/null and b/packages/material/lib/login/images/ai-suanfa.png differ diff --git a/packages/material/lib/login/images/ai-video.png b/packages/material/lib/login/images/ai-video.png new file mode 100644 index 0000000..99304b7 Binary files /dev/null and b/packages/material/lib/login/images/ai-video.png differ diff --git a/packages/material/lib/login/images/box-manage.png b/packages/material/lib/login/images/box-manage.png new file mode 100644 index 0000000..fcaca42 Binary files /dev/null and b/packages/material/lib/login/images/box-manage.png differ diff --git a/packages/material/lib/login/index.d.ts b/packages/material/lib/login/index.d.ts new file mode 100644 index 0000000..189be5f --- /dev/null +++ b/packages/material/lib/login/index.d.ts @@ -0,0 +1,2 @@ +import Login from './Login'; +export default Login; diff --git a/packages/material/lib/login/index.js b/packages/material/lib/login/index.js new file mode 100644 index 0000000..9b816ba --- /dev/null +++ b/packages/material/lib/login/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/login/index.tsx +var login_exports = {}; +__export(login_exports, { + default: () => login_default +}); +module.exports = __toCommonJS(login_exports); +var import_Login = __toESM(require("./Login")); +var login_default = import_Login.default; diff --git a/packages/material/lib/password/Password.d.ts b/packages/material/lib/password/Password.d.ts new file mode 100644 index 0000000..47f9c0f --- /dev/null +++ b/packages/material/lib/password/Password.d.ts @@ -0,0 +1,11 @@ +/** + * Created by jiangzhixiong on 2024/03/18 + */ +import { FC } from 'react'; +import { FormProps } from 'antd'; +interface PasswordProps { + onFinish: FormProps['onFinish']; + onCancel: () => void; +} +declare const Password: FC; +export default Password; diff --git a/packages/material/lib/password/Password.js b/packages/material/lib/password/Password.js new file mode 100644 index 0000000..127eefb --- /dev/null +++ b/packages/material/lib/password/Password.js @@ -0,0 +1,96 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/password/Password.tsx +var Password_exports = {}; +__export(Password_exports, { + default: () => Password_default +}); +module.exports = __toCommonJS(Password_exports); +var import_react = __toESM(require("react")); +var import_antd = require("antd"); +var Password = (props) => { + const { + onFinish, + onCancel + } = props; + const [form] = import_antd.Form.useForm(); + return /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement("h2", { style: { marginTop: "0", fontSize: "20px" } }, "修改密码"), /* @__PURE__ */ import_react.default.createElement( + import_antd.Form, + { + labelCol: { span: 4 }, + wrapperCol: { span: 20 }, + form, + onFinish + }, + /* @__PURE__ */ import_react.default.createElement( + import_antd.Form.Item, + { + name: "password", + label: "原密码", + rules: [ + { required: true, message: "请输入密码!" } + ] + }, + /* @__PURE__ */ import_react.default.createElement(import_antd.Input.Password, { variant: "borderless", style: { border: "none", borderBottom: "1px solid rgba(0, 0, 0, 0.06)" } }) + ), + /* @__PURE__ */ import_react.default.createElement( + import_antd.Form.Item, + { + name: "newPassword", + label: "新密码", + rules: [ + { required: true, message: "请输入新密码!" } + ] + }, + /* @__PURE__ */ import_react.default.createElement(import_antd.Input.Password, { variant: "borderless", style: { border: "none", borderBottom: "1px solid rgba(0, 0, 0, 0.06)" } }) + ), + /* @__PURE__ */ import_react.default.createElement( + import_antd.Form.Item, + { + name: "rePassword", + label: "确认密码", + dependencies: ["password"], + rules: [ + { required: true, message: "请再次输入密码!" }, + ({ getFieldValue }) => ({ + validator(_, value) { + if (!value || getFieldValue("password") === value) { + return Promise.resolve(); + } + return Promise.reject(new Error("两次输入的密码不一致!")); + } + }) + ] + }, + /* @__PURE__ */ import_react.default.createElement(import_antd.Input.Password, { variant: "borderless", style: { border: "none", borderBottom: "1px solid rgba(0, 0, 0, 0.06)" } }) + ), + /* @__PURE__ */ import_react.default.createElement("div", { style: { textAlign: "right" } }, /* @__PURE__ */ import_react.default.createElement(import_antd.Space, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { htmlType: "reset", onClick: onCancel, style: { width: "100px" } }, "取消"), /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "primary", htmlType: "submit", style: { width: "100px" } }, "确认"))) + )); +}; +var Password_default = Password; diff --git a/packages/material/lib/password/index.d.ts b/packages/material/lib/password/index.d.ts new file mode 100644 index 0000000..b102ba8 --- /dev/null +++ b/packages/material/lib/password/index.d.ts @@ -0,0 +1,2 @@ +import Password from './Password'; +export default Password; diff --git a/packages/material/lib/password/index.js b/packages/material/lib/password/index.js new file mode 100644 index 0000000..2112309 --- /dev/null +++ b/packages/material/lib/password/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/password/index.tsx +var password_exports = {}; +__export(password_exports, { + default: () => password_default +}); +module.exports = __toCommonJS(password_exports); +var import_Password = __toESM(require("./Password")); +var password_default = import_Password.default; diff --git a/packages/material/lib/utils/base64Images.d.ts b/packages/material/lib/utils/base64Images.d.ts new file mode 100644 index 0000000..0cd9cac --- /dev/null +++ b/packages/material/lib/utils/base64Images.d.ts @@ -0,0 +1,2 @@ +export declare const AlgorithmConfigImg = "data:image/png;base64,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"; +export declare const ErrorImage = "data:image/png;base64,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"; diff --git a/packages/material/lib/utils/base64Images.js b/packages/material/lib/utils/base64Images.js new file mode 100644 index 0000000..fab01bf --- /dev/null +++ b/packages/material/lib/utils/base64Images.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/utils/base64Images.ts +var base64Images_exports = {}; +__export(base64Images_exports, { + AlgorithmConfigImg: () => AlgorithmConfigImg, + ErrorImage: () => ErrorImage +}); +module.exports = __toCommonJS(base64Images_exports); +var AlgorithmConfigImg = "data:image/png;base64,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"; +var ErrorImage = "data:image/png;base64,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"; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + AlgorithmConfigImg, + ErrorImage +}); diff --git a/packages/material/lib/utils/constants.d.ts b/packages/material/lib/utils/constants.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/material/lib/utils/constants.js b/packages/material/lib/utils/constants.js new file mode 100644 index 0000000..e69de29 diff --git a/packages/material/lib/utils/index.d.ts b/packages/material/lib/utils/index.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/material/lib/utils/index.js b/packages/material/lib/utils/index.js new file mode 100644 index 0000000..e69de29 diff --git a/packages/material/lib/utils/types.d.ts b/packages/material/lib/utils/types.d.ts new file mode 100644 index 0000000..69d3304 --- /dev/null +++ b/packages/material/lib/utils/types.d.ts @@ -0,0 +1 @@ +export type AnyObject = Record; diff --git a/packages/material/lib/utils/types.js b/packages/material/lib/utils/types.js new file mode 100644 index 0000000..f863ceb --- /dev/null +++ b/packages/material/lib/utils/types.js @@ -0,0 +1,17 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/utils/types.ts +var types_exports = {}; +module.exports = __toCommonJS(types_exports); diff --git a/packages/material/package.json b/packages/material/package.json new file mode 100644 index 0000000..7adce7b --- /dev/null +++ b/packages/material/package.json @@ -0,0 +1,48 @@ +{ + "name": "@zhst/material", + "version": "0.7.7", + "description": "物料库", + "keywords": [ + "business", + "biz", + "zhst" + ], + "license": "ISC", + "author": "dev", + "sideEffects": [ + "dist/*", + "es/**/style/*", + "lib/**/style/*", + "*.less" + ], + "main": "lib/index.js", + "module": "es/index.js", + "typings": "es/index.d.ts", + "exports": { + ".": { + "import": "./es/index.js" + } + }, + "files": [ + "es", + "lib" + ], + "scripts": { + "build": "father build" + }, + "publishConfig": { + "access": "public", + "registry": "http://10.0.0.77:4874" + }, + "dependencies": { + "@ant-design/icons": "^5.2.6", + "@ant-design/pro-components": "^2.6.49", + "@zhst/biz": "workspace:^", + "@zhst/func": "workspace:^", + "@zhst/hooks": "workspace:^", + "@zhst/meta": "workspace:^", + "antd": "^5.14.2", + "classnames": "^2.5.1", + "rc-util": "^5.38.1" + } +} diff --git a/packages/material/src/algorithmConfig/algorithmConfig.tsx b/packages/material/src/algorithmConfig/algorithmConfig.tsx new file mode 100644 index 0000000..f50c382 --- /dev/null +++ b/packages/material/src/algorithmConfig/algorithmConfig.tsx @@ -0,0 +1,176 @@ +import React, { useRef, forwardRef, useImperativeHandle } from 'react'; +import { Flex, Image } from "antd"; +import theme from 'antd/es/theme' +import { BigImagePreview } from '@zhst/meta' +import type { ImgViewRef } from '@zhst/meta' +import { AlgorithmConfigImg, ErrorImage } from '../utils/base64Images' +import AlgorithmTable from './components/algorithmTable' +import TimeTemplateTable from './components/timeTemplateTable'; +import { AlgorithmTableProps } from './components/algorithmTable/AlgorithmTable'; +import { TimeTemplateTableProps } from './components/timeTemplateTable/TimeTemplateTable'; + +const { useToken } = theme + +const Title = (props: any) =>

{props.children}

+ +export interface AlgorithmConfigProps { + onAddAlgorithm?: () => void + /** + * 单选的图片数据 + */ + drawData?: { + imageKey: string + odRect?: { + x: number + y: number + w: number + h: number + } + score?: string + time?: string + } + /** + * 单选状态圈选后的监听事件 + */ + drawListener?: (data: any) => void; + algorithmTableDataSource?: { + id: string; + // 模板名称 + templateName: string; + // 运行周期 + operatingCycle: string; + // 算力占用 + algorithmOccupied: number; + }[]; + timeTemplateDataSource?: { + id: string; + templateName: string; + operatingCycle: string; + arrangeWeek: string; + algorithmOccupied: string; + }[] + boxList: { + id: string; + name: string; + }[] + algorithmTableProps?: AlgorithmTableProps + timeTemplateTableProps?: TimeTemplateTableProps + selectedKey?: string + rowKey?: string + type: AlgorithmTableProps['tableType'] + onSelect?: (key: string, info?: any) => void +} + +export interface AlgorithmConfigRef { + draw: () => void; + cancelDraw: () => void; +} + +const AlgorithmConfig = forwardRef((props, ref) => { + const { + algorithmTableDataSource = [], + timeTemplateDataSource = [], + boxList = [], + drawData, + drawListener, + algorithmTableProps, + timeTemplateTableProps, + selectedKey, + type = 'multiple', + rowKey = 'id', + onSelect + } = props + const drawImageRef = useRef(null) + const { token } = useToken() + + useImperativeHandle(ref, () => ({ + draw: () => { + drawImageRef.current?.setShowCrop(true) + }, + cancelDraw: () => { + drawImageRef.current?.setShowCrop(false) + }, + })) + + return ( + +
+ 盒子列表 +
+ {boxList.map(item => { + return ( +

onSelect?.(item.id, item)} + style={{ + margin: 0, + padding: `${token.paddingXXS}px ${token.paddingLG}px`, + cursor: 'pointer', + // @ts-ignore + color: selectedKey === item[rowKey] ? token.colorPrimary : token.colorText, + // @ts-ignore + backgroundColor: selectedKey === item[rowKey] ? token.blue1 : token.colorBgBase, + transition: '0.2s ease' + }} + >{item.name}

+ ) + })} +
+
+
+ {type === 'single' ? ( + <>} + // @ts-ignore + data={drawData} + onDraw={drawListener} + /> + ) : ( +
+ +

请进行批量配置

+
    +
  • · 盒子批量配置仅支持同型号盒子;
  • +
  • · 采取覆盖式更新,不保留原有配置,且预警检测框默认全屏范围;
  • +
  • · 人流量统计默认检测线为屏幕中央横向线条,且箭头指向下方;
  • +
  • · 优先选择拉流正常的摄像头。
  • +
+
+ ) + } +
+
+
+ 时间模板 +
+ +
+
+
+ 算法应用 +
+ +
+
+
+
+ ); +}); + +export default AlgorithmConfig; + diff --git a/packages/material/src/algorithmConfig/components/algorithmTable/AlgorithmTable.tsx b/packages/material/src/algorithmConfig/components/algorithmTable/AlgorithmTable.tsx new file mode 100644 index 0000000..ae47860 --- /dev/null +++ b/packages/material/src/algorithmConfig/components/algorithmTable/AlgorithmTable.tsx @@ -0,0 +1,117 @@ +import React from 'react'; +import { DeleteFilled, EditFilled, ImportOutlined, PlusCircleFilled } from '@ant-design/icons'; +import type { ParamsType, ProColumns, ProTableProps } from '@ant-design/pro-components'; +import { + ProTable, +} from '@ant-design/pro-components'; +import { Popconfirm, Select, Space, Switch } from 'antd'; +import theme from 'antd/es/theme'; +import { AnyObject } from 'antd/es/_util/type'; +import { SelectProps } from 'antd/lib'; +import SchemaFormModal from '../schemaFormModal'; + +const { useToken } = theme + +export interface AlgorithmTableProps extends ProTableProps { + onAddAlgorithm?: (id?: string, record?: any) => void + onItemSwitch?: (status?: boolean, id?: string, info?: any) => void + onItemEdit?: (values?: any, info?: any) => void + onItemDelete?: (id?: string, info?: any) => void + onSortSelect?: SelectProps['onChange'] + onDraw?: (id: any, info?: any) => void + selectedKey?: string + sortList?: { + label: string; + value: string; + }[] + tableType?: 'multiple' | 'single' // 多选/单选 +} + +const AlgorithmTable= ( + props: AlgorithmTableProps +) => { + const { + onAddAlgorithm, + onItemSwitch, + onItemEdit, + onItemDelete, + onSortSelect, + selectedKey, + onDraw, + tableType = 'multiple', + sortList = [], + } = props + + const { token } = useToken() + + const columns: ProColumns[] = [ + { + title: '模板名称', + dataIndex: 'templateName', + }, + { + title: '运行周期', + dataIndex: 'runCycle', + valueType: 'select', + width: 80, + valueEnum: { + 1: { text: '黑夜' }, + 0: { text: '白天' }, + }, + }, + { + title: '算力占用', + dataIndex: 'powerOccupy', + }, + { + title: '操作', + key: 'option', + valueType: 'option', + fixed: true, + render: (_DOM, record) => [ + onItemSwitch?.(_status, record.id, record)} />, + onDraw?.(record.id, record)} style={{ display: tableType === 'single' ? 'block' : 'none' }} href="#">, + onItemEdit?.(values, record)} + trigger={} + /> + , + onItemDelete?.(record.id, record)} + > + + , + ], + }, + ]; + + return ( + + columns={columns} + bordered + scroll={{ y: 240 }} + dataSource={[]} + headerTitle={( + + + 人(3~10) + + ), + width: 'm', + }) + } + + if (type === 'cameraBlock') { + arr.push({ + title: '遮挡百分比:', + dataIndex: 'blockPercent', + formItemProps: { + rules: [ + { + required: true, + message: '此项为必填项', + }, + ], + }, + renderFormItem: () => ( + + + %(30~80) + + ), + width: 'm', + }) + } + + if (type !== 'traffic') { + arr.push({ + title: '最短持续时间:', + dataIndex: 'minTime', + formItemProps: { + rules: [ + { + required: true, + message: '此项为必填项', + }, + ], + }, + renderFormItem: () => ( + + + 秒(2~10) + + ), + width: 'm', + }) + arr.push({ + title: '报警间隔时间:', + dataIndex: 'alarmTime', + formItemProps: { + rules: [ + { + required: true, + message: '此项为必填项', + }, + ], + }, + renderFormItem: () => ( + + + 秒(10~600) + + ), + width: 'm', + }) + } else if (type === 'traffic') { + arr.push({ + title: '灵敏度:', + dataIndex: 'sensitivity', + formItemProps: { + rules: [ + { + required: true, + message: '此项为必填项', + }, + ], + }, + renderFormItem: () => ( + + + (0~100) + + ), + width: 'm', + }) + } + + arr.push({ + title: '灵敏度:', + dataIndex: 'sensitivity', + formItemProps: { + rules: [ + { + required: true, + message: '此项为必填项', + }, + ], + }, + renderFormItem: () => ( + + + (0~100) + + ), + width: 'm', + }) + + return arr + } + + return ( + <> + + + ); +}; + +export default SchemaFormModal diff --git a/packages/material/src/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.tsx b/packages/material/src/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.tsx new file mode 100644 index 0000000..3272ded --- /dev/null +++ b/packages/material/src/algorithmConfig/components/timeTemplateTable/TimeTemplateTable.tsx @@ -0,0 +1,62 @@ +import React from 'react'; +import type { ParamsType, ProColumns, ProTableProps } from '@ant-design/pro-components'; +import { + ProTable, +} from '@ant-design/pro-components'; +import { InputNumber } from 'antd'; +import { AnyObject } from 'antd/es/_util/type'; + +export interface TimeTemplateTableProps extends ProTableProps { + onItemBlur?: (value?: number | string, id?: any, record?: any) => void, +} + +const TimeTemplateTable = ( + props: TimeTemplateTableProps +) => { + const { + onItemBlur, + } = props + + + const columns: ProColumns[] = [ + { + title: '模板名称', + dataIndex: 'templateName', + }, + { + title: '运行周期', + dataIndex: 'runCycle', + }, + { + title: '布控星期', + dataIndex: 'arrangeDay', + }, + { + title: '算力占用', + dataIndex: 'powerOccupy', + }, + { + title: '配置路数', + key: 'option', + valueType: 'option', + render: (_, record) => onItemBlur?.(e.target.value, record.id, record)} min={0} />, + }, + ]; + + return ( + + columns={columns} + bordered + scroll={{ y: 95 }} + toolbar={undefined} + rowKey="id" + search={false} + options={false} + pagination={false} + dataSource={[]} + {...props} + /> + ) +} + +export default TimeTemplateTable diff --git a/packages/material/src/algorithmConfig/components/timeTemplateTable/index.tsx b/packages/material/src/algorithmConfig/components/timeTemplateTable/index.tsx new file mode 100644 index 0000000..9c01038 --- /dev/null +++ b/packages/material/src/algorithmConfig/components/timeTemplateTable/index.tsx @@ -0,0 +1,5 @@ +import TimeTemplateTable from './TimeTemplateTable'; + +export type { TimeTemplateTableProps } from './TimeTemplateTable' + +export default TimeTemplateTable; diff --git a/packages/material/src/algorithmConfig/demo/basic.tsx b/packages/material/src/algorithmConfig/demo/basic.tsx new file mode 100644 index 0000000..8afd974 --- /dev/null +++ b/packages/material/src/algorithmConfig/demo/basic.tsx @@ -0,0 +1,126 @@ +import React, { useRef, useState } from 'react'; +import { AlgorithmConfig, AlgorithmConfigRef } from '@zhst/material'; +import type { AlgorithmConfigProps } from '@zhst/material'; +import { Button, Space, Switch } from 'antd'; + + +const algorithmTableDataSource: any = [] +const timeTemplateDataSource: any = [] +const boxListData: any[] | (() => any[]) = [] + +for (let i = 0; i < 5; i += 1) { + algorithmTableDataSource.push({ + id: String(i), + templateName: '算法模板' + (i + 1), + templateType: 'fire', // 用来判断操作的标记弹窗 + status: i % 2 !== 0, + powerOccupy: Math.floor(Math.random() * 20), + imageKey: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', + odRect:{ + "x":0.553125,"y":0.29722223,"w":0.048958335,"h":0.2462963 + }, + runCycle: i % 2 !== 0 ? '白天' : '黑夜', + creator: Math.floor(Math.random() * 20), + }); + timeTemplateDataSource.push({ + id: String(i), + templateName: '时间模板' + (i + 1), + lineNum: i + 1, + powerOccupy: Math.floor(Math.random() * 20), + runCycle: i % 2 !== 0 ? '白天' : '黑夜', + arrangeDay: Math.floor(Math.random() * 20), + creator: Math.floor(Math.random() * 20), + }); + boxListData.push({ + id: String(i), + name: '盒子' + (i + 1) + }) +} + +const demo = () => { + const [algorithmTableList, setAlgorithmTableList] = useState(algorithmTableDataSource) + const [timeTemplateData, setTimeTemplateData] = useState(timeTemplateDataSource) + const [boxList, setBoxList] = useState(boxListData) + const [selectedKey, setSelectedKey] = useState('1') + const [algorithmSelectedKey, setAlgorithmSelectedKey] = useState('1') + const [tableType, setTableType] = useState('multiple') + const [drawData, setDrawData] = useState<{ + imageKey: string; + odRect?: { x: number; y: number; h: number; w: number } + }>({ + imageKey: '', + }) + + const algorithmConfigRef = useRef(null) + + // 绘画事件 + const handleDraw = (id: any, info: any) => { + console.log('箭头圈选事件', id, info) + // 先赋值绘画框对象,再打开绘画功能 + setDrawData({ + imageKey: info.imageKey, + odRect: info.odRect, + }) + algorithmConfigRef.current?.draw() + } + + return ( + + + setTableType(_status ? 'single': 'multiple')} /> + + + console.log('监听圈选后的事件', o)} + selectedKey={selectedKey} + onSelect={key => { + setSelectedKey(key) + // setTimeTemplateData([]) + // setTableList([]) + // setBoxList([]) + }} + type={tableType} + algorithmTableProps={{ + onItemSwitch: (status, id) => { + console.log('算法状态 switch 变更') + setAlgorithmTableList((pre: any[]) => { + let arr = pre.map(o => { + if (o.id === id) { + o.status = status + } + return o + }) + return arr + }) + }, + onItemEdit: async (values, itemInfo) => { + console.log('算法单项编辑表单提交', values, itemInfo) + return true + }, + onDraw: (id, info) => handleDraw(id, info), + onItemDelete: (id, itemInfo) => console.log('删除', id, itemInfo), + onAddAlgorithm: (id) => console.log('添加模板', id), + selectedKey: algorithmSelectedKey, + onSortSelect: (value) => setAlgorithmSelectedKey(value), + sortList: [ + { label: '白天', value: '1' }, + { label: '黑夜', value: '2' }, + ] + }} + timeTemplateTableProps={{ + onItemBlur: (val, id, itemInfo) => console.log('失焦事件', val, id, itemInfo), + }} + /> + + ); +}; + +export default demo; diff --git a/packages/material/src/algorithmConfig/demo/empty.tsx b/packages/material/src/algorithmConfig/demo/empty.tsx new file mode 100644 index 0000000..96824e3 --- /dev/null +++ b/packages/material/src/algorithmConfig/demo/empty.tsx @@ -0,0 +1,28 @@ +import React, { useState } from 'react'; +import { AlgorithmConfig, AlgorithmConfigProps } from '@zhst/material'; +import { Space, Switch } from 'antd'; + + +const algorithmTableDataSource: any = [] +const timeTemplateDataSource: any = [] +const boxListData: any[] | (() => any[]) = [] + +const demo = () => { + const [tableType, setTableType] = useState('multiple') + + return ( +
+ + setTableType(_status ? 'single': 'multiple')} /> + + +
+ ); +}; + +export default demo; diff --git a/packages/material/src/algorithmConfig/demo/useSchemaFormModal.tsx b/packages/material/src/algorithmConfig/demo/useSchemaFormModal.tsx new file mode 100644 index 0000000..a051e94 --- /dev/null +++ b/packages/material/src/algorithmConfig/demo/useSchemaFormModal.tsx @@ -0,0 +1,20 @@ +import React from 'react' +import { SchemaFormModal } from '@zhst/material' +import { Button, Space } from 'antd' + +export default () => { + return ( + + console.log('values', values)} + trigger={} + /> + console.log('values', values)} + trigger={} + /> + + ) +} diff --git a/packages/material/src/algorithmConfig/index.md b/packages/material/src/algorithmConfig/index.md new file mode 100644 index 0000000..cf21815 --- /dev/null +++ b/packages/material/src/algorithmConfig/index.md @@ -0,0 +1,71 @@ +--- +category: Components +title: 批量算法配置 +toc: content +group: + title: 智能柜 + order: 2 +--- + +批量算法配置 + +## 代码演示 + +基本用法 +空数据状态 +单独使用schemaFormModal + +## API + + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| boxList | 盒子列表 | Array[] | [] | - | +| algorithmTableDataSource | 算法应用列表 | Array[] | [] | - | +| timeTemplateDataSource | 事件模板列表 | Array[] | [] | - | +| timeTemplateDataSource | 事件模板列表 | Array[] | [] | - | +| selectedKey | 盒子列表选中项 | string | - | - | +| onSelect | 盒子列表选中监听事件 | (key) => void | - | - | +| drawData | 单选状态绘图数据 | 看 meta 组件的 ImgViewProps -> data | - | - | +| drawListener | 单选状态绘图的返回参数 | 看 meta 组件的 ImgViewProps -> onDraw 的回参 | - | - | +| algorithmTableProps | 算法应用表单,在 ProTable 组件基础上拓展 | ant-pro -> ProTable | 见下文 | - | +| timeTemplateTableProps | 时间模板表单,在ProTable 组件基础上拓展 | ant-pro -> ProTable | 见下文 | - | +| ref | algorithmConfigRef | ref| 见下文 | - | + +### algorithmTableProps + +算法应用组件透传,继承 ProTable + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| onItemSwitch | 表单项开关事件监听 | (status?: boolean, id?: string, info?: any) => void | [] | - | +| onItemEdit | 表单项编辑事件监听 | (id?: string, info?: any) => void | - | - | +| onItemDelete | 表单项删除事件监听 | (id?: string, info?: any) => void | - | - | +| onAddAlgorithm | 表单项新增算法规则事件监听 | (id?: string, record?: any) => void | [] | - | +| selectedKey | 过滤选中项 | string | - | - | +| onSortSelect | 筛选下拉框点击事件 | SelectProps['onChange'] | [] | - | +| sortList | 筛选下拉框 | Array[{ label: string; value: string; }] | [] | - | + +### SchemaFormModalProps + +时间模板组件透传,继承 pro-Components 的 BetaSchemaForm + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| type | fire 火焰、smoke:烟雾、traffic: 人流量、face: 面部遮挡、destroy:人员损坏、wander:人员徘徊、cameraBlock:摄像头遮挡、gather:人员聚集 | string | fire | - | +| onFinish | 提交事件,可以通过返回布尔值来判定 | async (values) => Promise | - | - | + +### algorithmConfigRef + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| onDraw | 绘制 | () => void | - | - | +| cancelDraw | 取消绘制 | () => void | - | - | + +### timeTemplateTableProps + +时间模板组件透传,继承 ProTable + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| onItemBlur | 失焦监听事件 | (value?: number | string, id?: any, record?: any) => void | - | diff --git a/packages/material/src/algorithmConfig/index.tsx b/packages/material/src/algorithmConfig/index.tsx new file mode 100644 index 0000000..7666bad --- /dev/null +++ b/packages/material/src/algorithmConfig/index.tsx @@ -0,0 +1,8 @@ +import AlgorithmConfig from './algorithmConfig'; + +export type { AlgorithmConfigProps, AlgorithmConfigRef } from './algorithmConfig' + +export type { AlgorithmTableProps } from './components/algorithmTable' +export type { TimeTemplateTableProps } from './components/timeTemplateTable' + +export default AlgorithmConfig; diff --git a/packages/material/src/algorithmConfigModal/algorithmConfigModal.tsx b/packages/material/src/algorithmConfigModal/algorithmConfigModal.tsx new file mode 100644 index 0000000..555641b --- /dev/null +++ b/packages/material/src/algorithmConfigModal/algorithmConfigModal.tsx @@ -0,0 +1,39 @@ +import React, { FC } from 'react'; +import { ConfigProvider, Modal, ModalProps } from "antd"; +import AlgorithmConfig, { AlgorithmConfigProps } from '../algorithmConfig/algorithmConfig'; +export interface AlgorithmConfigModalProps extends ModalProps { + algorithmConfigProps: AlgorithmConfigProps +} + +const AlgorithmConfigModal: FC = (props) => { + const { + algorithmConfigProps + } = props + + return ( + + + + + + ); +}; + +export default AlgorithmConfigModal; + diff --git a/packages/material/src/algorithmConfigModal/demo/basic.tsx b/packages/material/src/algorithmConfigModal/demo/basic.tsx new file mode 100644 index 0000000..6e3af35 --- /dev/null +++ b/packages/material/src/algorithmConfigModal/demo/basic.tsx @@ -0,0 +1,74 @@ +import React, { useState } from 'react'; +import { AlgorithmConfigModal } from '@zhst/material'; + +const algorithmTableDataSource: any = [] +const timeTemplateDataSource: any = [] +const boxListData: any[] | (() => any[]) = [] + +for (let i = 0; i < 5; i += 1) { + algorithmTableDataSource.push({ + id: i, + name: '算法模板' + (i + 1), + templateType: 'fire', // 用来判断操作的标记弹窗 + round: Math.floor(Math.random() * 1), + creator: Math.floor(Math.random() * 20), + }); + timeTemplateDataSource.push({ + id: i, + tempName: 'AppName' + (i + 1), + count: Math.floor(Math.random() * 1), + creator: Math.floor(Math.random() * 20), + }); + boxListData.push({ + id: i, + name: '盒子' + (i + 1) + }) +} + +const demo = () => { + const [open, setOpen] = useState(true) + const [algorithmTableList, setAlgorithmTableList] = useState(algorithmTableDataSource) + const [timeTemplateData, setTimeTemplateData] = useState(timeTemplateDataSource) + const [boxList, setBoxList] = useState(boxListData) + const [selectedKey, setSelectedKey] = useState('') + const [algorithmSelectedKey, setAlgorithmSelectedKey] = useState('1') + + return ( +
+ setOpen(false)} + algorithmConfigProps={{ + boxList, + selectedKey, + algorithmTableDataSource: algorithmTableList, + timeTemplateDataSource: timeTemplateData, + onSelect: _key => setSelectedKey(_key), + algorithmTableProps: { + onItemSwitch: (status, itemInfo) => console.log('修改开关', status, itemInfo), + onItemEdit: async (values, itemInfo) => { + console.log('算法单项编辑表单提交', values, itemInfo) + return true + }, + onItemDelete: (id, itemInfo) => console.log('删除', id, itemInfo), + onAddAlgorithm: (id) => console.log('添加模板', id), + selectedKey: algorithmSelectedKey, + onSortSelect: (value) => setAlgorithmSelectedKey(value), + sortList: [ + { label: '白天', value: '1' }, + { label: '黑夜', value: '2' }, + ] + }, + timeTemplateTableProps: { + onItemBlur: (id, itemInfo) => console.log('失焦事件', id, itemInfo), + } + }} + /> +
+ ); +}; + +export default demo; diff --git a/packages/material/src/algorithmConfigModal/demo/mock.ts b/packages/material/src/algorithmConfigModal/demo/mock.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/material/src/algorithmConfigModal/index.md b/packages/material/src/algorithmConfigModal/index.md new file mode 100644 index 0000000..6ece9d4 --- /dev/null +++ b/packages/material/src/algorithmConfigModal/index.md @@ -0,0 +1,23 @@ +--- +category: Components +title: 批量算法配置弹框 +toc: content +demo: + cols: 2 +group: + title: 智能柜 + order: 2 +--- + +批量算法配置弹框 + +## 代码演示 + + +基本用法 + +## API + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| data | 数据源 | Array[] | [] | - | diff --git a/packages/material/src/algorithmConfigModal/index.tsx b/packages/material/src/algorithmConfigModal/index.tsx new file mode 100644 index 0000000..d38f217 --- /dev/null +++ b/packages/material/src/algorithmConfigModal/index.tsx @@ -0,0 +1,3 @@ +import AlgorithmConfigModal from './algorithmConfigModal'; + +export default AlgorithmConfigModal; diff --git a/packages/material/src/changelog/index.md b/packages/material/src/changelog/index.md new file mode 100644 index 0000000..aa03361 --- /dev/null +++ b/packages/material/src/changelog/index.md @@ -0,0 +1,7 @@ +--- +title: 版本更新日志 +toc: content +order: 99 +--- + + diff --git a/packages/biz/src/index.md b/packages/material/src/index.md similarity index 71% rename from packages/biz/src/index.md rename to packages/material/src/index.md index 6ee14d4..86187b2 100644 --- a/packages/biz/src/index.md +++ b/packages/material/src/index.md @@ -1,7 +1,8 @@ --- nav: - title: 业务组件 + title: 物料库 order: 1 +toc: content title: 快速上手 --- diff --git a/packages/material/src/index.tsx b/packages/material/src/index.tsx new file mode 100644 index 0000000..8f16ac8 --- /dev/null +++ b/packages/material/src/index.tsx @@ -0,0 +1,7 @@ +export { default as AlgorithmConfigModal } from './algorithmConfigModal'; +export { default as AlgorithmConfig } from './algorithmConfig'; +export type { AlgorithmConfigRef, AlgorithmConfigProps } from './algorithmConfig'; +export { default as Login } from './login'; +export { default as Password } from './password'; +export { default as SchemaFormModal } from './algorithmConfig/components/schemaFormModal'; +export * from 'rc-util' diff --git a/packages/material/src/login/Login.tsx b/packages/material/src/login/Login.tsx new file mode 100644 index 0000000..ec32d5e --- /dev/null +++ b/packages/material/src/login/Login.tsx @@ -0,0 +1,103 @@ +/** + * Created by jiangzhixiong on 2024/03/18 + */ + +import React, { FC } from 'react' +import { Button, Checkbox, Flex, Form, FormProps, Image, Input, theme } from 'antd'; +import { HomeOutlined } from '@ant-design/icons'; +import { isNumber } from '@zhst/func'; +import './index.less' + +const materialName = 'zhst-material-login' + +const { useToken } = theme + +interface LoginProps { + title: string; + onIconClick?: () => void + rememberPassword?: boolean + imageUrl: string; + onFinish: FormProps['onFinish'] + width?: string | number + height?: string | number +} + +const Login: FC = (props) => { + const { + title, + onIconClick, + rememberPassword = true, + imageUrl, + width, + height, + onFinish + } = props + const [form] = Form.useForm(); + const { token } = useToken() + + console.log('width', width) + + return ( + + + +
+

{title}

+
+ + + + + + + + + 记住密码 + + + + + +
+
+
+
+ +
+
+ ) +} + +export default Login diff --git a/packages/material/src/login/demo/basic.tsx b/packages/material/src/login/demo/basic.tsx new file mode 100644 index 0000000..21684dc --- /dev/null +++ b/packages/material/src/login/demo/basic.tsx @@ -0,0 +1,20 @@ +import React, { useState } from 'react'; +import { Login } from '@zhst/material'; + +import bg1 from '../images/ai-suanfa.png' + +const demo = () => { + + return ( +
+ console.log('val', val)} + /> +
+ ); +}; + +export default demo; diff --git a/packages/material/src/login/images/ai-suanfa.png b/packages/material/src/login/images/ai-suanfa.png new file mode 100644 index 0000000..848fc3a Binary files /dev/null and b/packages/material/src/login/images/ai-suanfa.png differ diff --git a/packages/material/src/login/images/ai-video.png b/packages/material/src/login/images/ai-video.png new file mode 100644 index 0000000..99304b7 Binary files /dev/null and b/packages/material/src/login/images/ai-video.png differ diff --git a/packages/material/src/login/images/box-manage.png b/packages/material/src/login/images/box-manage.png new file mode 100644 index 0000000..fcaca42 Binary files /dev/null and b/packages/material/src/login/images/box-manage.png differ diff --git a/packages/material/src/login/index.less b/packages/material/src/login/index.less new file mode 100644 index 0000000..ccd5c73 --- /dev/null +++ b/packages/material/src/login/index.less @@ -0,0 +1,5 @@ +.zhst-material-login { + &::-webkit-scrollbar { + display: none; + } +} diff --git a/packages/material/src/login/index.md b/packages/material/src/login/index.md new file mode 100644 index 0000000..d9d04f3 --- /dev/null +++ b/packages/material/src/login/index.md @@ -0,0 +1,24 @@ +--- +category: Components +title: Login 登录 +toc: content +group: + title: 通用 + order: 2 +--- + +登录事件 + +## 代码演示 + +基本用法 + +## API + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| title | 标题 | string | - | - | +| onIconClick | 房子点击触发事件 | () => void | [] | - | +| rememberPassword | 是否显示记住密码 | boolean | true | - | +| imageUrl | 大图链接 | string | - | - | +| onFinish | 登录提交事件 | FormProps['onFinish'] | - | - | diff --git a/packages/material/src/login/index.tsx b/packages/material/src/login/index.tsx new file mode 100644 index 0000000..393a6df --- /dev/null +++ b/packages/material/src/login/index.tsx @@ -0,0 +1,3 @@ +import Login from './Login' + +export default Login diff --git a/packages/material/src/password/Password.tsx b/packages/material/src/password/Password.tsx new file mode 100644 index 0000000..3477c46 --- /dev/null +++ b/packages/material/src/password/Password.tsx @@ -0,0 +1,76 @@ +/** + * Created by jiangzhixiong on 2024/03/18 + */ + +import React, { FC } from 'react' +import { Button, Form, FormProps, Input, Space } from 'antd' + +interface PasswordProps { + onFinish: FormProps['onFinish'] + onCancel: () => void +} + +const Password: FC = (props) => { + const { + onFinish, + onCancel, + } = props + const [form] = Form.useForm(); + + return ( +
+

修改密码

+
+ + + + + + + ({ + validator(_, value) { + if (!value || getFieldValue('password') === value) { + return Promise.resolve(); + } + return Promise.reject(new Error('两次输入的密码不一致!')); + }, + }), + ]} + > + + +
+ + + + +
+
+
+ ) +} + +export default Password diff --git a/packages/material/src/password/demo/basic.tsx b/packages/material/src/password/demo/basic.tsx new file mode 100644 index 0000000..85efb49 --- /dev/null +++ b/packages/material/src/password/demo/basic.tsx @@ -0,0 +1,16 @@ +import React, { useState } from 'react'; +import { Password } from '@zhst/material'; + +const demo = () => { + + return ( +
+ console.log('val', val)} + onCancel={() => console.log('cancel')} + /> +
+ ); +}; + +export default demo; diff --git a/packages/material/src/password/index.md b/packages/material/src/password/index.md new file mode 100644 index 0000000..4963661 --- /dev/null +++ b/packages/material/src/password/index.md @@ -0,0 +1,21 @@ +--- +category: Components +title: Password 修改密码 +toc: content +group: + title: 通用 + order: 2 +--- + +盒子树 + +## 代码演示 + +基本用法 + +## API + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| onFinish | 提交事件 | FormProps['onFinish'] | - | - | +| onCancel | 取消 | () => void | - | - | diff --git a/packages/material/src/password/index.tsx b/packages/material/src/password/index.tsx new file mode 100644 index 0000000..fa82596 --- /dev/null +++ b/packages/material/src/password/index.tsx @@ -0,0 +1,3 @@ +import Password from './Password' + +export default Password diff --git a/packages/material/src/utils/base64Images.ts b/packages/material/src/utils/base64Images.ts new file mode 100644 index 0000000..0e4d127 --- /dev/null +++ b/packages/material/src/utils/base64Images.ts @@ -0,0 +1,3 @@ +export const AlgorithmConfigImg = 'data:image/png;base64,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' + +export const ErrorImage = 'data:image/png;base64,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' diff --git a/packages/material/src/utils/constants.ts b/packages/material/src/utils/constants.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/material/src/utils/index.ts b/packages/material/src/utils/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/material/src/utils/types.ts b/packages/material/src/utils/types.ts new file mode 100644 index 0000000..69d3304 --- /dev/null +++ b/packages/material/src/utils/types.ts @@ -0,0 +1 @@ +export type AnyObject = Record; diff --git a/packages/meta/CHANGELOG.md b/packages/meta/CHANGELOG.md index e471c8a..7bf6e8f 100644 --- a/packages/meta/CHANGELOG.md +++ b/packages/meta/CHANGELOG.md @@ -1,5 +1,60 @@ # @zhst/utils +## 0.9.7 + +### Patch Changes + +- @zhst/func@0.9.1 +- @zhst/hooks@0.8.10 +- @zhst/meta@0.9.7 + +## 0.9.6 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.9.0 + - @zhst/hooks@0.8.9 + - @zhst/meta@0.9.6 + +## 0.9.5 + +### Patch Changes + +- 初始化物料库 +- Updated dependencies + - @zhst/hooks@0.8.8 + - @zhst/func@0.8.3 + - @zhst/meta@0.9.5 + +## 0.9.4 + +### Patch Changes + +- 初始化物料包 +- Updated dependencies + - @zhst/hooks@0.8.7 + - @zhst/func@0.8.2 + - @zhst/meta@0.9.4 + +## 0.9.3 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.8.1 + - @zhst/hooks@0.8.6 + - @zhst/meta@0.9.3 + +## 0.9.2 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.8.0 + - @zhst/hooks@0.8.5 + - @zhst/meta@0.9.2 + ## 0.9.1 ### Patch Changes diff --git a/packages/meta/lib/VideoPlayer/VideoPlayer.d.ts b/packages/meta/lib/VideoPlayer/VideoPlayer.d.ts new file mode 100644 index 0000000..cf56091 --- /dev/null +++ b/packages/meta/lib/VideoPlayer/VideoPlayer.d.ts @@ -0,0 +1,18 @@ +import React, { Dispatch, ReactElement, SetStateAction } from 'react'; +import { Rect, IScreenshotButtonProp, AlignType } from '@zhst/types'; +import './index.less'; +export interface VideoViewProps { + url: string; + maxDuration?: number; + screenshotButtonAlign?: AlignType; + screenshotButtonRender?: (screenshotButtonProp: IScreenshotButtonProp) => ReactElement; + defautlNormalizationRect?: Rect; + onCropChange?: (showCrop: boolean, normalizationRect: null | Rect) => void; +} +export interface VideoViewRef { + cropAble: boolean; + setShowCrop: Dispatch>; + downloadVideoframe: () => void; +} +declare const VideoPlayer: React.ForwardRefExoticComponent>; +export default VideoPlayer; diff --git a/packages/meta/lib/VideoPlayer/VideoPlayer.js b/packages/meta/lib/VideoPlayer/VideoPlayer.js new file mode 100644 index 0000000..64b8172 --- /dev/null +++ b/packages/meta/lib/VideoPlayer/VideoPlayer.js @@ -0,0 +1,592 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/VideoPlayer/VideoPlayer.tsx +var VideoPlayer_exports = {}; +__export(VideoPlayer_exports, { + default: () => VideoPlayer_default +}); +module.exports = __toCommonJS(VideoPlayer_exports); +var import_react = __toESM(require("react")); +var import_func = require("@zhst/func"); +var import_rc_align = __toESM(require("rc-align")); +var import_hooks = require("@zhst/hooks"); +var import_classnames = __toESM(require("classnames")); +var import_downloadjs = __toESM(require("downloadjs")); +var import__ = require(".."); +var import_iconfont = __toESM(require("../iconfont")); +var import_ImageEditor = require("../ImageEditor"); +var import_FlvPlayer = __toESM(require("./components/FlvPlayer")); +var import_Progress = __toESM(require("./components/Progress")); +var import_Loading = __toESM(require("./components/Loading")); +var import_constants = require("../utils/constants"); +var import_videoPlayerHelper = require("./videoPlayerHelper"); +var import_index = require("./index.less"); +var componentName = `zhst-image__video-view`; +var VideoPlayer = (0, import_react.forwardRef)((props, ref) => { + const { + url, + maxDuration = 20, + screenshotButtonAlign = { + points: ["bl", "br"], + offset: [6, 0], + overflow: { + adjustX: true, + adjustY: true + } + }, + screenshotButtonRender = () => /* @__PURE__ */ import_react.default.createElement("div", { style: { color: "#fff", width: "80px", top: 0 } }, "回调DOM"), + onCropChange, + defautlNormalizationRect: defaultNormalizationRect + } = props; + const containerRef = (0, import_react.useRef)(null); + const videoRef = (0, import_react.useRef)(null); + const videoInsRef = (0, import_react.useRef)(null); + const [playSeq, setPlaySeq] = (0, import_react.useState)(0); + const videoRemoveListener = (0, import_react.useRef)(import_func.noop); + const loadingTimeRef = (0, import_react.useRef)(0); + const delayLoadingTimer = (0, import_react.useRef)(null); + const [isReady, setIsReady] = (0, import_react.useState)(false); + const [isPlay, setIsPlay] = (0, import_react.useState)(false); + const [isEnd, setIsEnd] = (0, import_react.useState)(false); + const [isError, setIsError] = (0, import_react.useState)(false); + const [isVideoLoadFinished, setIsVideoLoadFinish] = (0, import_react.useState)(false); + const [playTime, setPlayTime] = (0, import_react.useState)(0); + const [isLoadingVideo, setIsLoadingVideo] = (0, import_react.useState)(true); + const [isDelayLoading, setIsDelayLoading] = (0, import_react.useState)(false); + const latestIsLoadingVideo = (0, import_hooks.useLatest)(isLoadingVideo); + const setIsLoadingVideoWrapper = (isLoading) => { + setIsLoadingVideo((preLoading) => { + if (!preLoading && isLoading) { + loadingTimeRef.current = (/* @__PURE__ */ new Date()).getTime(); + } + if (!isLoading) { + loadingTimeRef.current = null; + } + if (!isLoading) { + setIsDelayLoading(false); + } + if (!delayLoadingTimer.current && preLoading) { + delayLoadingTimer.current = setTimeout(() => { + if (latestIsLoadingVideo.current) { + setIsDelayLoading(true); + } + delayLoadingTimer.current = null; + }, 200); + } + return isLoading; + }); + }; + (0, import_react.useEffect)(() => { + let timer = setInterval(() => { + if (loadingTimeRef.current) { + if ((/* @__PURE__ */ new Date()).getTime() - loadingTimeRef.current > 1e3 * 30) { + checkIsErr(); + } + } + }, 1e3); + return () => { + clearInterval(timer); + }; + }, []); + (0, import_hooks.useUpdateEffect)(() => { + var _a, _b; + if (isEnd) { + (_b = (_a = videoInsRef == null ? void 0 : videoInsRef.current) == null ? void 0 : _a.pause) == null ? void 0 : _b.call(_a); + } + }, [isEnd]); + const checkIsErr = () => { + var _a, _b; + setIsError(true); + try { + (_b = (_a = videoInsRef == null ? void 0 : videoInsRef.current) == null ? void 0 : _a.destroy) == null ? void 0 : _b.call(_a); + } catch (error) { + console.error(error); + } + }; + const latestMaxDuration = (0, import_hooks.useLatest)(maxDuration); + const initPlayer = (0, import_react.useCallback)((ins, dom) => { + videoRef.current = dom; + videoInsRef.current = ins; + const maxDuration2 = latestMaxDuration.current || 0; + let video = dom; + let errorLister = (e) => { + checkIsErr(); + console.error("视频出错了", e, video.currentTime); + }; + let waitingListener = () => { + setIsLoadingVideoWrapper(true); + }; + let playingListener = () => { + setIsLoadingVideoWrapper(false); + setIsError(false); + }; + let playLister = () => { + setIsPlay(true); + setIsError(false); + }; + let pauseListener = () => { + setIsPlay(false); + }; + let endedListner = () => { + setIsEnd(true); + setIsVideoLoadFinish(true); + }; + let timeupdateListner = () => { + let nowTime = video.currentTime; + if (nowTime >= maxDuration2) { + setIsEnd(true); + setIsVideoLoadFinish(true); + } + setPlayTime(nowTime); + }; + let windowErrorHandle = (errorEvent) => { + try { + if (errorEvent["message"] == "Uncaught TypeError: Cannot read property 'flushStashedSamples' of null") { + checkIsErr(); + console.error("视频出错了 window监听", errorEvent); + } + } catch (error) { + console.error(error); + } + }; + video.addEventListener("error", errorLister); + video.addEventListener("waiting", waitingListener); + video.addEventListener("playing", playingListener); + video.addEventListener("play", playLister); + video.addEventListener("pause", pauseListener); + video.addEventListener("ended", endedListner); + video.addEventListener("timeupdate", timeupdateListner); + window.addEventListener("error", windowErrorHandle); + videoRemoveListener.current = () => { + video.removeEventListener("error", errorLister); + video.removeEventListener("waiting", waitingListener); + video.removeEventListener("playing", playingListener); + video.removeEventListener("play", playLister); + video.removeEventListener("pause", pauseListener); + video.removeEventListener("ended", endedListner); + video.removeEventListener("timeupdate", timeupdateListner); + window.removeEventListener("error", windowErrorHandle); + }; + videoInsRef == null ? void 0 : videoInsRef.current.on(import_FlvPlayer.FLV_EVENT.ERROR, (type, errDetail, info) => { + checkIsErr(); + console.error("videoInsRef 错误", type, errDetail, info, video.currentTime); + }); + let playPromise = videoInsRef == null ? void 0 : videoInsRef.current.play(); + setIsReady(true); + playPromise.then(() => { + setIsReady(true); + }).catch((...arg) => { + try { + } catch (error) { + } + console.error("playPromise视频出错了", arg); + }); + }, []); + (0, import_hooks.useUnmount)(() => { + try { + videoRemoveListener.current(); + } catch (e) { + console.error(e); + } + }); + const reload = async () => { + if (videoInsRef.current) { + let oldTime = videoInsRef.current.currentTime; + videoInsRef.current.currentTime = 0; + if (oldTime === videoInsRef.current.currentTime) { + setIsReady(false); + setIsPlay(false); + setIsLoadingVideoWrapper(false); + setIsReady(false); + setIsEnd(false); + setIsVideoLoadFinish(false); + setPlayTime(0); + try { + videoRemoveListener.current(); + } catch (error) { + console.error(error); + } + setPlaySeq((pre) => pre + 1); + return; + } + videoInsRef.current.play(); + } + setPlayTime(0); + setIsEnd(false); + }; + const seek = (v) => { + if (videoInsRef.current && isVideoLoadFinished) { + setPlayTime(parseFloat(v)); + videoInsRef.current.currentTime = parseFloat(v); + } else { + import__.message.warning("待视频加载完,才可操作进度条"); + } + }; + const [isFullscreen, { toggleFullscreen }] = (0, import_hooks.useFullscreen)(containerRef, { + pageFullscreen: true + }); + const showMaxDuration = !!maxDuration ? maxDuration : (0, import_func.toRealNumber)((0, import_func.get)(videoRef, "current.duration", 0)); + const showSlider = videoInsRef.current && isVideoLoadFinished; + const showStatus = (0, import_videoPlayerHelper.getShowStatus)(isDelayLoading, isEnd, isError); + const corpContainerRef = (0, import_react.useRef)(); + const cropInsRef = (0, import_react.useRef)(null); + const [showCrop, setShowCrop] = (0, import_react.useState)(false); + const isFirstFlagRef = (0, import_react.useRef)(true); + (0, import_react.useEffect)(() => { + const isFirst = isFirstFlagRef.current; + if (!isLoadingVideo && isReady && isFirst && defaultNormalizationRect && !showStatus) { + (0, import_func.nextTick)(() => { + setShowCrop(true); + }); + } + }, [isLoadingVideo, showStatus]); + const alginContainerRef = (0, import_react.useRef)(null); + const alignRef = (0, import_react.useRef)(null); + const [cropRect, setCropRect] = (0, import_react.useState)(null); + (0, import_react.useEffect)(() => { + var _a, _b; + showCrop ? (_a = videoInsRef == null ? void 0 : videoInsRef.current) == null ? void 0 : _a.pause() : (_b = videoInsRef == null ? void 0 : videoInsRef.current) == null ? void 0 : _b.play(); + }, [showCrop]); + (0, import_react.useEffect)(() => { + var _a; + let handlerCropStart; + let handlerCropEnd; + setCropRect(null); + if (!isReady) + return; + if (showCrop) { + handlerCropStart = (0, import_func.addEventListenerWrapper)(corpContainerRef.current, import_ImageEditor.EVENT_CROP_START, () => { + setCropRect(null); + }); + handlerCropEnd = (0, import_func.addEventListenerWrapper)(corpContainerRef.current, import_ImageEditor.EVENT_CROP_END, (event) => { + var _a2, _b; + const data = event.detail; + setCropRect({ + x: data.left, + y: data.top, + w: data.width, + h: data.height + }); + (_b = (_a2 = alignRef == null ? void 0 : alignRef.current) == null ? void 0 : _a2.forceAlign) == null ? void 0 : _b.call(_a2); + }); + let video = videoRef.current; + let scale = Math.min( + video.offsetWidth / video.videoWidth, + video.offsetHeight / video.videoHeight + ); + let finalVideoWidth = video.videoWidth * scale; + let finalVideoHeight = video.videoHeight * scale; + let cropBoxLimited = { + width: finalVideoWidth, + height: finalVideoHeight, + top: (video.offsetHeight - finalVideoHeight) / 2, + left: (video.offsetWidth - finalVideoWidth) / 2 + }; + let canvas = document.createElement("canvas"); + canvas.width = video.offsetWidth; + canvas.height = video.offsetHeight; + canvas.style.display = "none"; + document.body.appendChild(canvas); + let ctx = canvas.getContext("2d"); + ctx == null ? void 0 : ctx.drawImage( + video, + (video.offsetWidth - finalVideoWidth) / 2, + (video.offsetHeight - finalVideoHeight) / 2, + finalVideoWidth, + finalVideoHeight + ); + let imageData = canvas.toDataURL("image/png"); + (_a = canvas.parentNode) == null ? void 0 : _a.removeChild(canvas); + const isFirst = isFirstFlagRef.current; + let initialCropBoxData = null; + if (isFirst && defaultNormalizationRect) { + initialCropBoxData = { + left: defaultNormalizationRect.x * finalVideoWidth + cropBoxLimited.left, + top: defaultNormalizationRect.y * finalVideoHeight + cropBoxLimited.top, + width: defaultNormalizationRect.w * finalVideoWidth, + height: defaultNormalizationRect.h * finalVideoHeight + }; + } + isFirstFlagRef.current = false; + cropInsRef.current = new import_ImageEditor.Cropper(corpContainerRef.current, { + showMask: true, + cropBoxLimited, + img: imageData, + initialCropBoxData + }); + } + return () => { + var _a2, _b; + handlerCropStart == null ? void 0 : handlerCropStart.remove(); + handlerCropEnd == null ? void 0 : handlerCropEnd.remove(); + (_b = (_a2 = cropInsRef == null ? void 0 : cropInsRef.current) == null ? void 0 : _a2.destroy) == null ? void 0 : _b.call(_a2); + cropInsRef.current = null; + }; + }, [showCrop, isReady]); + const latestCropRect = (0, import_hooks.useLatest)(cropRect); + const getCropInfo = async () => { + var _a; + const cropRect2 = latestCropRect.current; + let video = videoRef.current; + if (!video) + return; + let rectList = []; + let extendRectList = []; + let selectIndex = 0; + let scale = Math.min( + video.offsetWidth / video.videoWidth, + video.offsetHeight / video.videoHeight + ); + let finalVideoWidth = video.videoWidth * scale; + let finalVideoHeight = video.videoHeight * scale; + let canvas = document.createElement("canvas"); + canvas.width = finalVideoWidth; + canvas.height = finalVideoHeight; + canvas.style.display = "none"; + document.body.appendChild(canvas); + let ctx = canvas.getContext("2d"); + ctx.drawImage( + video, + 0, + 0, + finalVideoWidth, + finalVideoHeight + ); + let base64 = canvas.toDataURL("image/jpeg"); + const blobData = (0, import_func.dataURLToBlob)(base64); + (_a = canvas.parentNode) == null ? void 0 : _a.removeChild(canvas); + const file = new window.File([blobData], `${(/* @__PURE__ */ new Date()).getTime()}`); + let newRect = { + w: cropRect2.w / finalVideoWidth, + h: cropRect2.h / finalVideoHeight, + x: (cropRect2.x - (video.offsetWidth - finalVideoWidth) / 2) / finalVideoWidth, + y: (cropRect2.y - (video.offsetHeight - finalVideoHeight) / 2) / finalVideoHeight + }; + rectList.push(newRect); + extendRectList.push(newRect); + extendRectList.forEach(async (rect, index) => { + extendRectList[index] = { + ...rect + }; + }); + return { + rectList, + extendRectList, + selectIndex, + file + }; + }; + (0, import_react.useEffect)(() => { + let normalizationRect = null; + if (showCrop && cropRect) { + let video = videoRef.current; + let scale = Math.min( + video.offsetWidth / video.videoWidth, + video.offsetHeight / video.videoHeight + ); + let finalVideoWidth = video.videoWidth * scale; + let finalVideoHeight = video.videoHeight * scale; + let cropBoxLimited = { + width: finalVideoWidth, + height: finalVideoHeight, + top: (video.offsetHeight - finalVideoHeight) / 2, + left: (video.offsetWidth - finalVideoWidth) / 2 + }; + normalizationRect = { + x: (cropRect.x - cropBoxLimited.left) / cropBoxLimited.width, + y: (cropRect.y - cropBoxLimited.top) / cropBoxLimited.height, + w: cropRect.w / cropBoxLimited.width, + h: cropRect.h / cropBoxLimited.height + }; + } + onCropChange == null ? void 0 : onCropChange(showCrop, normalizationRect); + }, [showCrop, cropRect]); + const downloadVideoframe = (0, import_react.useCallback)(async () => { + var _a, _b; + try { + (_b = (_a = videoInsRef == null ? void 0 : videoInsRef.current) == null ? void 0 : _a.pause) == null ? void 0 : _b.call(_a); + let video = videoRef.current; + var canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + let base64; + if (video.readyState === 0) { + ctx == null ? void 0 : ctx.clearRect(0, 0, canvas.width, canvas.height); + canvas.width = video.offsetWidth; + canvas.height = video.offsetHeight; + ctx.fillStyle = "black"; + ctx == null ? void 0 : ctx.fillRect(0, 0, canvas.width, canvas.height); + base64 = canvas.toDataURL(); + } else { + canvas.width = video.videoWidth; + canvas.height = video.videoHeight; + ctx == null ? void 0 : ctx.drawImage(video, 0, 0, canvas.width, canvas.height); + base64 = canvas.toDataURL("image/png"); + } + (0, import_downloadjs.default)(base64); + } catch (error) { + console.error(error); + } + }, []); + const latestIsReady = (0, import_hooks.useLatest)(isReady); + const cropAble = !showStatus && isReady; + (0, import_react.useImperativeHandle)(ref, () => ({ + cropAble, + setShowCrop: (dispatch) => { + const isReady2 = latestIsReady.current; + if (!isReady2) + return; + setShowCrop(dispatch); + }, + downloadVideoframe + })); + return /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_classnames.default)(`${componentName}`), ref: containerRef }, url && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement( + import_FlvPlayer.default, + { + playId: playSeq, + autoPlay: true, + className: (0, import_classnames.default)(`${componentName}-flv`), + type: url.startsWith("http") ? "mp4" : "flv", + url, + config: { + enableStashBuffer: true, + stashInitialSize: 1024 * 700, + isLive: true, + hasAudio: false, + hasVideo: true + }, + onCreat: initPlayer + } + ), /* @__PURE__ */ import_react.default.createElement( + "div", + { + className: (0, import_classnames.default)(`${componentName}-crop-container`), + ref: corpContainerRef, + style: { + display: isFullscreen ? "none" : "block" + } + } + ), showCrop && cropRect && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement( + "div", + { + ref: alginContainerRef, + className: (0, import_classnames.default)(`${componentName}-align`), + style: Object.assign( + { + width: cropRect.w, + height: cropRect.h + }, + (0, import_func.getTransforms)({ + translateX: cropRect.x, + translateY: cropRect.y + }) + ) + } + ), /* @__PURE__ */ import_react.default.createElement( + import_rc_align.default, + { + ref: alignRef, + monitorWindowResize: true, + align: screenshotButtonAlign, + target: function() { + return alginContainerRef.current; + } + }, + screenshotButtonRender({ + model: "IMAGE", + getCropInfo, + setShowCrop, + cropType: import_constants.CROP_TYPE["CUSTOM"] + }) + )), !showCrop && /* @__PURE__ */ import_react.default.createElement("div", { className: `${componentName}-opt` }, /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement( + import__.Button, + { + type: "text", + onClick: () => { + var _a, _b; + if (!isPlay) { + (_a = videoInsRef == null ? void 0 : videoInsRef.current) == null ? void 0 : _a.play(); + setShowCrop(false); + } else { + (_b = videoInsRef == null ? void 0 : videoInsRef.current) == null ? void 0 : _b.pause(); + } + } + }, + /* @__PURE__ */ import_react.default.createElement( + import_iconfont.default, + { + styles: { + color: "#fff", + display: "flex" + }, + color: "#1890ff", + icon: !isPlay ? "icon-shipinbofang" : "icon-shipinzanting" + } + ) + )), /* @__PURE__ */ import_react.default.createElement( + "div", + { + className: `${componentName}-opt-range`, + onClick: (e) => { + e.stopPropagation(); + } + }, + /* @__PURE__ */ import_react.default.createElement( + import_Progress.default, + { + value: playTime, + min: 0, + max: showMaxDuration, + showSlider, + onChange: seek + } + ), + /* @__PURE__ */ import_react.default.createElement("div", null, (0, import_func.formatDurationTime)(playTime), "/", (0, import_func.formatDurationTime)(showMaxDuration)) + ), /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement( + import__.Button, + { + type: "text", + onClick: (e) => { + e.stopPropagation(); + toggleFullscreen(); + } + }, + /* @__PURE__ */ import_react.default.createElement( + import_iconfont.default, + { + styles: { + color: "#fff", + display: "flex" + }, + size: 18, + icon: isFullscreen ? "icon-cancle_fullscreen" : "icon-fullscreen" + } + ) + ))), !!showStatus && /* @__PURE__ */ import_react.default.createElement(import_Loading.default, { status: showStatus, reload: () => reload() }))); +}); +var VideoPlayer_default = VideoPlayer; diff --git a/packages/meta/lib/VideoPlayer/components/FlvPlayer/index.d.ts b/packages/meta/lib/VideoPlayer/components/FlvPlayer/index.d.ts new file mode 100644 index 0000000..646b267 --- /dev/null +++ b/packages/meta/lib/VideoPlayer/components/FlvPlayer/index.d.ts @@ -0,0 +1,46 @@ +import React, { Component, CSSProperties } from 'react'; +import flvjs from 'flv.js'; +export declare const FLV_EVENT: Readonly; +export interface VideoPlayerProps { + className: string; + style?: CSSProperties; + type: string; + isLive?: boolean; + cors?: boolean; + withCredentials?: boolean; + playId?: number; + hasAudio?: boolean; + hasVideo?: boolean; + duration?: number; + filesize?: number; + url?: string; + autoPlay?: boolean; + onCreat?: any; + /** + * @see https://github.com/Bilibili/flv.js/blob/master/docs/api.md#config + */ + config: object; +} +export default class VideoPlayer extends Component { + state: { + curPlayUrl: string; + shouldReinit: boolean; + }; + flvPlayer: any; + videoElement: null; + static getDerivedStateFromProps: (nextProps: { + url?: any; + playId?: any; + }, prevState: { + curPlayUrl?: any; + playId?: any; + }) => { + playId: any; + curPlayUrl: any; + shouldReinit: boolean; + } | null; + initFlv: ($video: null) => void; + componentWillUnmount(): void; + componentDidUpdate(): void; + render(): React.JSX.Element; +} diff --git a/packages/meta/lib/VideoPlayer/components/FlvPlayer/index.js b/packages/meta/lib/VideoPlayer/components/FlvPlayer/index.js new file mode 100644 index 0000000..38230d2 --- /dev/null +++ b/packages/meta/lib/VideoPlayer/components/FlvPlayer/index.js @@ -0,0 +1,144 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/VideoPlayer/components/FlvPlayer/index.tsx +var FlvPlayer_exports = {}; +__export(FlvPlayer_exports, { + FLV_EVENT: () => FLV_EVENT, + default: () => VideoPlayer +}); +module.exports = __toCommonJS(FlvPlayer_exports); +var import_react = __toESM(require("react")); +var import_flv = __toESM(require("flv.js")); +var import_func = require("@zhst/func"); +var FLV_EVENT = import_flv.default.Events; +var VideoPlayer = class extends import_react.Component { + constructor() { + super(...arguments); + this.state = { + curPlayUrl: "", + shouldReinit: false + }; + this.flvPlayer = null; + this.videoElement = null; + this.initFlv = ($video) => { + this.videoElement = $video; + const { className, autoPlay = true, config = {}, onCreat, playId, ...others } = this.props; + if ($video) { + if (import_flv.default.isSupported() && this.props.url && this.props.url) { + const reload = () => { + if (this.flvPlayer && this.flvPlayer.destroy) { + try { + this.flvPlayer.destroy(); + } catch (error) { + console.error(error); + } + } + let flvPlayer = import_flv.default.createPlayer({ ...others }, { + deferLoadAfterSourceOpen: false, + ...config + }); + flvPlayer.attachMediaElement($video); + flvPlayer.load(); + this.flvPlayer = flvPlayer; + let controller = this.flvPlayer._transmuxer._controller; + let wsLoader = controller._ioctl._loader; + const oldWsOnCompleteFunc = wsLoader._onComplete; + wsLoader._onComplete = function() { + if (!controller._remuxer) { + controller._remuxer = { + destroy: () => { + console.log("组件销毁"); + }, + flushStashedSamples: () => { + console.log("flushStashedSamples"); + } + }; + } + oldWsOnCompleteFunc(); + }; + this.flvPlayer.reload = reload; + onCreat && onCreat(this.flvPlayer, $video); + }; + reload(); + onCreat && onCreat(this.flvPlayer, $video); + } + } + }; + } + componentWillUnmount() { + var _a, _b; + if (this.flvPlayer) { + (_a = this.flvPlayer) == null ? void 0 : _a.unload(); + (_b = this.flvPlayer) == null ? void 0 : _b.detachMediaElement(); + } + } + componentDidUpdate() { + if (this.state.shouldReinit) { + this.setState({ shouldReinit: false }); + this.initFlv(this.videoElement); + } + } + render() { + const { className, style } = this.props; + return /* @__PURE__ */ import_react.default.createElement( + "video", + { + muted: true, + preload: "metadata", + className, + style: Object.assign( + { + width: "100%", + height: "100%" + }, + style ? style : {} + ), + ref: this.initFlv + } + ); + } +}; +VideoPlayer.getDerivedStateFromProps = (nextProps, prevState) => { + const { playId = 0 } = nextProps; + const { playId: prePlayId = 0 } = prevState; + if (nextProps.url !== void 0) { + if (!(0, import_func.isEqual)(nextProps.url, prevState.curPlayUrl) || !(0, import_func.isEqual)(playId, prePlayId)) { + return { + playId, + curPlayUrl: nextProps.url, + shouldReinit: true + }; + } + } + return null; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + FLV_EVENT +}); diff --git a/packages/meta/lib/VideoPlayer/components/Loading/index.d.ts b/packages/meta/lib/VideoPlayer/components/Loading/index.d.ts new file mode 100644 index 0000000..1509947 --- /dev/null +++ b/packages/meta/lib/VideoPlayer/components/Loading/index.d.ts @@ -0,0 +1,8 @@ +import { FC } from 'react'; +import './index.less'; +export interface ILoading { + status: 'LOADING' | 'COMPLETED' | 'END' | 'ERROR' | null; + reload: () => void; +} +declare const Loading: FC; +export default Loading; diff --git a/packages/meta/lib/VideoPlayer/components/Loading/index.js b/packages/meta/lib/VideoPlayer/components/Loading/index.js new file mode 100644 index 0000000..150c54d --- /dev/null +++ b/packages/meta/lib/VideoPlayer/components/Loading/index.js @@ -0,0 +1,84 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/VideoPlayer/components/Loading/index.tsx +var Loading_exports = {}; +__export(Loading_exports, { + default: () => Loading_default +}); +module.exports = __toCommonJS(Loading_exports); +var import_react = __toESM(require("react")); +var import_antd = require("antd"); +var import_classnames = __toESM(require("classnames")); +var import_iconfont = __toESM(require("../../../iconfont")); +var import_index = require("./index.less"); +var componentName = `zhst-image__video-view`; +var Loading = (props) => { + const { status, reload } = props; + return /* @__PURE__ */ import_react.default.createElement( + "div", + { + className: (0, import_classnames.default)(`${componentName}__player-mask`), + onClick: (e) => { + e.stopPropagation(); + } + }, + status === "LOADING" && /* @__PURE__ */ import_react.default.createElement(import_antd.Spin, { tip: "加载中...", spinning: status === "LOADING" }), + status === "END" && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement( + "div", + { + onClick: () => { + reload(); + }, + className: (0, import_classnames.default)(`${componentName}__icon-wraper`) + }, + /* @__PURE__ */ import_react.default.createElement( + import_iconfont.default, + { + styles: { + fill: "#ffffff", + color: "#ffffff" + }, + size: 54, + icon: "icon-shuaxin" + } + ) + ), /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_classnames.default)(`${componentName}__player-mask-title`) }, "点击刷新后,将重新播放")), + status === "ERROR" && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_classnames.default)(`${componentName}__icon-wraper`) }, /* @__PURE__ */ import_react.default.createElement( + import_iconfont.default, + { + styles: { + color: "#ffffff" + }, + size: 54, + icon: "icon-jiazaishibai" + } + )), /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_classnames.default)(`${componentName}__player-mask-title`) }, "视频加载失败,", /* @__PURE__ */ import_react.default.createElement("a", { onClick: reload }, " ", "刷新"))) + ); +}; +var Loading_default = Loading; diff --git a/packages/meta/lib/VideoPlayer/components/Loading/index.less b/packages/meta/lib/VideoPlayer/components/Loading/index.less new file mode 100644 index 0000000..b6c11a2 --- /dev/null +++ b/packages/meta/lib/VideoPlayer/components/Loading/index.less @@ -0,0 +1,53 @@ +.zhst-image__video-view__player-mask { + position: absolute; + width: 100%; + height: 100%; + z-index: 99; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: rgb(4 4 4 / 70%); + + &--bg { + z-index: 999; + background-color: rgb(4 4 4 / 100%); + } + + i { + cursor: pointer; + } + + &-title { + margin-top: 12px; + color: #fff; + text-align: center; + + & a { + color: #09f; + cursor: pointer; + text-decoration: underline; + } + } +} + +.zhst-image__video-view__icon-wraper { + display: flex; + width: 80px; + height: 80px; + align-items: center; + justify-content: center; + background-color: rgb(255 255 255 / 10%); + border-radius: 50%; + cursor: pointer; + line-height: 80px; + text-align: center; + + // &:hover { + // background: #0099ff; + // } +} diff --git a/packages/meta/lib/VideoPlayer/components/Progress/index.d.ts b/packages/meta/lib/VideoPlayer/components/Progress/index.d.ts new file mode 100644 index 0000000..7fb0a10 --- /dev/null +++ b/packages/meta/lib/VideoPlayer/components/Progress/index.d.ts @@ -0,0 +1,10 @@ +import React from 'react'; +import type { SliderSingleProps } from 'antd'; +import './index.less'; +export interface RangeWrapperProps extends SliderSingleProps { + showSlider: boolean; + className?: string; + min: number; +} +export declare const Range: React.FC; +export default Range; diff --git a/packages/meta/lib/VideoPlayer/components/Progress/index.js b/packages/meta/lib/VideoPlayer/components/Progress/index.js new file mode 100644 index 0000000..92e0d85 --- /dev/null +++ b/packages/meta/lib/VideoPlayer/components/Progress/index.js @@ -0,0 +1,60 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/VideoPlayer/components/Progress/index.tsx +var Progress_exports = {}; +__export(Progress_exports, { + Range: () => Range, + default: () => Progress_default +}); +module.exports = __toCommonJS(Progress_exports); +var import_react = __toESM(require("react")); +var import_classnames = __toESM(require("classnames")); +var import_antd = require("antd"); +var import_index = require("./index.less"); +var componentName = `zhst-image__range`; +var Range = (props) => { + const { className, style, showSlider = true, ...others } = props; + return /* @__PURE__ */ import_react.default.createElement( + "div", + { + style, + className: (0, import_classnames.default)( + `${componentName}`, + !showSlider && `${componentName}--no-slider`, + className + ) + }, + /* @__PURE__ */ import_react.default.createElement(import_antd.Slider, { ...others }) + ); +}; +var Progress_default = Range; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + Range +}); diff --git a/packages/meta/lib/VideoPlayer/components/Progress/index.less b/packages/meta/lib/VideoPlayer/components/Progress/index.less new file mode 100644 index 0000000..e922211 --- /dev/null +++ b/packages/meta/lib/VideoPlayer/components/Progress/index.less @@ -0,0 +1,49 @@ +.zhst-image__range { + position: relative; + + &--no-slider { + .next-range-slider { + display: none; + } + } + + & .next-range .next-range-track { + height: 8px; + margin-top: -4px; + border-radius: 8px; + } + + & .next-range .next-range-selected { + height: 8px; + margin-top: -4px; + border-radius: 8px; + } + + & .next-range .next-range-slider-inner { + width: 14px; + height: 14px; + border-color: #fff; + margin-top: -7px; + margin-left: -7px; + background-color: #0098ff; + } + + & .next-range .next-range-slider { + width: 14px; + height: 14px; + margin-top: -7px; + margin-left: -7px; + } + + & .next-range.simulation-click>.next-range-slider-inner { + border: 2px solid #fff !important; + } + + & .next-range .next-range-frag.next-range-active .next-range-slider .next-range-slider-inner { + border: 2px solid #fff !important; + } + + & .next-range .next-range-slider.next-range-slider-moving .next-range-slider-inner { + border: 2px solid #fff !important; + } +} diff --git a/packages/meta/lib/VideoPlayer/index.d.ts b/packages/meta/lib/VideoPlayer/index.d.ts new file mode 100644 index 0000000..a1993e1 --- /dev/null +++ b/packages/meta/lib/VideoPlayer/index.d.ts @@ -0,0 +1,3 @@ +import VideoPlayer from './VideoPlayer'; +export type { VideoViewProps, VideoViewRef } from './VideoPlayer'; +export default VideoPlayer; diff --git a/packages/meta/lib/VideoPlayer/index.js b/packages/meta/lib/VideoPlayer/index.js new file mode 100644 index 0000000..7d136ea --- /dev/null +++ b/packages/meta/lib/VideoPlayer/index.js @@ -0,0 +1,36 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/VideoPlayer/index.tsx +var VideoPlayer_exports = {}; +__export(VideoPlayer_exports, { + default: () => VideoPlayer_default +}); +module.exports = __toCommonJS(VideoPlayer_exports); +var import_VideoPlayer = __toESM(require("./VideoPlayer")); +var VideoPlayer_default = import_VideoPlayer.default; diff --git a/packages/meta/lib/VideoPlayer/index.less b/packages/meta/lib/VideoPlayer/index.less new file mode 100644 index 0000000..181e65c --- /dev/null +++ b/packages/meta/lib/VideoPlayer/index.less @@ -0,0 +1,75 @@ +.zhst-image__video-view { + position: relative; + overflow: hidden; + width: 100%; + height: 532px; + background-color: #333; + + // &-flv { + // width: 85%; + // } + &-screenshot { + position: absolute; + z-index: 10; + } + + &-crop-container { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } + + &-align { + position: absolute; + top: 0; + left: 0; + pointer-events: none; + } + + &-opt { + position: absolute; + z-index: 99; + bottom: 0; + display: flex; + width: 100%; + height: 32px; + box-sizing: border-box; + align-items: center; + padding: 0 12px; + background-color: rgb(0 0 0 / 80%); + line-height: 32px; + + &>div:first-child { + display: flex; + align-items: center; + margin-right: 12px; + } + + &>div:last-child { + display: flex; + align-items: center; + margin-left: 12px; + } + + &-range { + display: flex; + height: 32px; + flex: 1; + align-items: center; + line-height: 32px; + text-align: center; + + &>div:first-child { + flex: 1; + } + + &>div:last-child { + width: 100px; + margin-left: 8px; + color: #fff; + } + } + } +} diff --git a/packages/meta/lib/VideoPlayer/videoPlayerHelper.d.ts b/packages/meta/lib/VideoPlayer/videoPlayerHelper.d.ts new file mode 100644 index 0000000..661a7c1 --- /dev/null +++ b/packages/meta/lib/VideoPlayer/videoPlayerHelper.d.ts @@ -0,0 +1 @@ +export declare function getShowStatus(isLoadingVideo: boolean, isEnd: boolean, isError: boolean): string | null; diff --git a/packages/meta/lib/VideoPlayer/videoPlayerHelper.js b/packages/meta/lib/VideoPlayer/videoPlayerHelper.js new file mode 100644 index 0000000..6ef0b97 --- /dev/null +++ b/packages/meta/lib/VideoPlayer/videoPlayerHelper.js @@ -0,0 +1,41 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/VideoPlayer/videoPlayerHelper.ts +var videoPlayerHelper_exports = {}; +__export(videoPlayerHelper_exports, { + getShowStatus: () => getShowStatus +}); +module.exports = __toCommonJS(videoPlayerHelper_exports); +function getShowStatus(isLoadingVideo, isEnd, isError) { + let status = null; + if (isLoadingVideo) { + status = "LOADING"; + } + if (isError) { + status = "ERROR"; + } + if (isEnd) { + status = "END"; + } + return status; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getShowStatus +}); diff --git a/packages/meta/lib/_util/ActionButton.d.ts b/packages/meta/lib/_util/ActionButton.d.ts new file mode 100644 index 0000000..c4f4df3 --- /dev/null +++ b/packages/meta/lib/_util/ActionButton.d.ts @@ -0,0 +1,19 @@ +import * as React from 'react'; +import type { ButtonProps, LegacyButtonType } from '../button/button'; +export interface ActionButtonProps { + type?: LegacyButtonType; + actionFn?: (...args: any[]) => any | PromiseLike; + close?: Function; + autoFocus?: boolean; + prefixCls: string; + buttonProps?: ButtonProps; + emitEvent?: boolean; + quitOnNullishReturnValue?: boolean; + children?: React.ReactNode; + /** + * Do not throw if is await mode + */ + isSilent?: () => boolean; +} +declare const ActionButton: React.FC; +export default ActionButton; diff --git a/packages/meta/lib/_util/ActionButton.js b/packages/meta/lib/_util/ActionButton.js new file mode 100644 index 0000000..dff757d --- /dev/null +++ b/packages/meta/lib/_util/ActionButton.js @@ -0,0 +1,138 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/ActionButton.tsx +var ActionButton_exports = {}; +__export(ActionButton_exports, { + default: () => ActionButton_default +}); +module.exports = __toCommonJS(ActionButton_exports); +var import_useState = __toESM(require("rc-util/lib/hooks/useState")); +var React = __toESM(require("react")); +var import_button = __toESM(require("../button")); +var import_buttonHelpers = require("../button/buttonHelpers"); +function isThenable(thing) { + return !!(thing && thing.then); +} +var ActionButton = (props) => { + const { + type, + children, + prefixCls, + buttonProps, + close, + autoFocus, + emitEvent, + isSilent, + quitOnNullishReturnValue, + actionFn + } = props; + const clickedRef = React.useRef(false); + const buttonRef = React.useRef(null); + const [loading, setLoading] = (0, import_useState.default)(false); + const onInternalClose = (...args) => { + close == null ? void 0 : close(...args); + }; + React.useEffect(() => { + let timeoutId = null; + if (autoFocus) { + timeoutId = setTimeout(() => { + var _a; + (_a = buttonRef.current) == null ? void 0 : _a.focus(); + }); + } + return () => { + if (timeoutId) { + clearTimeout(timeoutId); + } + }; + }, []); + const handlePromiseOnOk = (returnValueOfOnOk) => { + if (!isThenable(returnValueOfOnOk)) { + return; + } + setLoading(true); + returnValueOfOnOk.then( + (...args) => { + setLoading(false, true); + onInternalClose(...args); + clickedRef.current = false; + }, + (e) => { + setLoading(false, true); + clickedRef.current = false; + if (isSilent == null ? void 0 : isSilent()) { + return; + } + return Promise.reject(e); + } + ); + }; + const onClick = (e) => { + if (clickedRef.current) { + return; + } + clickedRef.current = true; + if (!actionFn) { + onInternalClose(); + return; + } + let returnValueOfOnOk; + if (emitEvent) { + returnValueOfOnOk = actionFn(e); + if (quitOnNullishReturnValue && !isThenable(returnValueOfOnOk)) { + clickedRef.current = false; + onInternalClose(e); + return; + } + } else if (actionFn.length) { + returnValueOfOnOk = actionFn(close); + clickedRef.current = false; + } else { + returnValueOfOnOk = actionFn(); + if (!returnValueOfOnOk) { + onInternalClose(); + return; + } + } + handlePromiseOnOk(returnValueOfOnOk); + }; + return /* @__PURE__ */ React.createElement( + import_button.default, + { + ...(0, import_buttonHelpers.convertLegacyProps)(type), + onClick, + loading, + prefixCls, + ...buttonProps, + ref: buttonRef + }, + children + ); +}; +var ActionButton_default = ActionButton; diff --git a/packages/meta/lib/_util/PurePanel.d.ts b/packages/meta/lib/_util/PurePanel.d.ts new file mode 100644 index 0000000..6637350 --- /dev/null +++ b/packages/meta/lib/_util/PurePanel.d.ts @@ -0,0 +1,9 @@ +import * as React from 'react'; +import type { AnyObject } from './type'; +export declare function withPureRenderTheme(Component: React.FC): (props: T) => React.JSX.Element; +export interface BaseProps { + prefixCls?: string; + style?: React.CSSProperties; +} +declare const genPurePanel: (Component: any, defaultPrefixCls?: string, getDropdownCls?: ((prefixCls: string) => string) | null | undefined, postProps?: ((props: ComponentProps) => ComponentProps) | undefined) => (props: AnyObject) => React.JSX.Element; +export default genPurePanel; diff --git a/packages/meta/lib/_util/PurePanel.js b/packages/meta/lib/_util/PurePanel.js new file mode 100644 index 0000000..b3e5440 --- /dev/null +++ b/packages/meta/lib/_util/PurePanel.js @@ -0,0 +1,102 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/PurePanel.tsx +var PurePanel_exports = {}; +__export(PurePanel_exports, { + default: () => PurePanel_default, + withPureRenderTheme: () => withPureRenderTheme +}); +module.exports = __toCommonJS(PurePanel_exports); +var React = __toESM(require("react")); +var import_useMergedState = __toESM(require("rc-util/lib/hooks/useMergedState")); +var import_config_provider = __toESM(require("../config-provider")); +function withPureRenderTheme(Component) { + return (props) => /* @__PURE__ */ React.createElement(import_config_provider.default, { theme: { token: { motion: false, zIndexPopupBase: 0 } } }, /* @__PURE__ */ React.createElement(Component, { ...props })); +} +var genPurePanel = (Component, defaultPrefixCls, getDropdownCls, postProps) => { + const PurePanel = (props) => { + const { prefixCls: customizePrefixCls, style } = props; + const holderRef = React.useRef(null); + const [popupHeight, setPopupHeight] = React.useState(0); + const [popupWidth, setPopupWidth] = React.useState(0); + const [open, setOpen] = (0, import_useMergedState.default)(false, { + value: props.open + }); + const { getPrefixCls } = React.useContext(import_config_provider.ConfigContext); + const prefixCls = getPrefixCls(defaultPrefixCls || "select", customizePrefixCls); + React.useEffect(() => { + setOpen(true); + if (typeof ResizeObserver !== "undefined") { + const resizeObserver = new ResizeObserver((entries) => { + const element = entries[0].target; + setPopupHeight(element.offsetHeight + 8); + setPopupWidth(element.offsetWidth); + }); + const interval = setInterval(() => { + var _a; + const dropdownCls = getDropdownCls ? `.${getDropdownCls(prefixCls)}` : `.${prefixCls}-dropdown`; + const popup = (_a = holderRef.current) == null ? void 0 : _a.querySelector(dropdownCls); + if (popup) { + clearInterval(interval); + resizeObserver.observe(popup); + } + }, 10); + return () => { + clearInterval(interval); + resizeObserver.disconnect(); + }; + } + }, []); + let mergedProps = { + ...props, + style: { + ...style, + margin: 0 + }, + open, + visible: open, + getPopupContainer: () => holderRef.current + }; + if (postProps) { + mergedProps = postProps(mergedProps); + } + const mergedStyle = { + paddingBottom: popupHeight, + position: "relative", + minWidth: popupWidth + }; + return /* @__PURE__ */ React.createElement("div", { ref: holderRef, style: mergedStyle }, /* @__PURE__ */ React.createElement(Component, { ...mergedProps })); + }; + return withPureRenderTheme(PurePanel); +}; +var PurePanel_default = genPurePanel; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + withPureRenderTheme +}); diff --git a/packages/meta/lib/_util/capitalize.d.ts b/packages/meta/lib/_util/capitalize.d.ts new file mode 100644 index 0000000..56a42d7 --- /dev/null +++ b/packages/meta/lib/_util/capitalize.d.ts @@ -0,0 +1 @@ +export default function capitalize(str: T): Capitalize; diff --git a/packages/meta/lib/_util/capitalize.js b/packages/meta/lib/_util/capitalize.js new file mode 100644 index 0000000..9a44513 --- /dev/null +++ b/packages/meta/lib/_util/capitalize.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/capitalize.ts +var capitalize_exports = {}; +__export(capitalize_exports, { + default: () => capitalize +}); +module.exports = __toCommonJS(capitalize_exports); +function capitalize(str) { + if (typeof str !== "string") { + return str; + } + const ret = str.charAt(0).toUpperCase() + str.slice(1); + return ret; +} diff --git a/packages/meta/lib/_util/colors.d.ts b/packages/meta/lib/_util/colors.d.ts new file mode 100644 index 0000000..a058c3d --- /dev/null +++ b/packages/meta/lib/_util/colors.d.ts @@ -0,0 +1,13 @@ +import type { PresetColorKey } from '../theme/interface'; +type InverseColor = `${PresetColorKey}-inverse`; +export declare const PresetStatusColorTypes: readonly ["success", "processing", "error", "default", "warning"]; +export type PresetColorType = PresetColorKey | InverseColor; +export type PresetStatusColorType = typeof PresetStatusColorTypes[number]; +/** + * determine if the color keyword belongs to the `Ant Design` {@link PresetColors}. + * @param color color to be judged + * @param includeInverse whether to include reversed colors + */ +export declare function isPresetColor(color?: any, includeInverse?: boolean): boolean; +export declare function isPresetStatusColor(color?: any): color is PresetStatusColorType; +export {}; diff --git a/packages/meta/lib/_util/colors.js b/packages/meta/lib/_util/colors.js new file mode 100644 index 0000000..b066b89 --- /dev/null +++ b/packages/meta/lib/_util/colors.js @@ -0,0 +1,50 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/colors.ts +var colors_exports = {}; +__export(colors_exports, { + PresetStatusColorTypes: () => PresetStatusColorTypes, + isPresetColor: () => isPresetColor, + isPresetStatusColor: () => isPresetStatusColor +}); +module.exports = __toCommonJS(colors_exports); +var import_interface = require("../theme/interface"); +var inverseColors = import_interface.PresetColors.map((color) => `${color}-inverse`); +var PresetStatusColorTypes = [ + "success", + "processing", + "error", + "default", + "warning" +]; +function isPresetColor(color, includeInverse = true) { + if (includeInverse) { + return [...inverseColors, ...import_interface.PresetColors].includes(color); + } + return import_interface.PresetColors.includes(color); +} +function isPresetStatusColor(color) { + return PresetStatusColorTypes.includes(color); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + PresetStatusColorTypes, + isPresetColor, + isPresetStatusColor +}); diff --git a/packages/meta/lib/_util/easings.d.ts b/packages/meta/lib/_util/easings.d.ts new file mode 100644 index 0000000..86c44ba --- /dev/null +++ b/packages/meta/lib/_util/easings.d.ts @@ -0,0 +1 @@ +export declare function easeInOutCubic(t: number, b: number, c: number, d: number): number; diff --git a/packages/constants/lib/index.js b/packages/meta/lib/_util/easings.js similarity index 60% rename from packages/constants/lib/index.js rename to packages/meta/lib/_util/easings.js index 4aa07fe..ad48853 100644 --- a/packages/constants/lib/index.js +++ b/packages/meta/lib/_util/easings.js @@ -2,6 +2,10 @@ var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) @@ -10,18 +14,23 @@ var __copyProps = (to, from, except, desc) => { } return to; }; -var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -// src/index.ts -var src_exports = {}; -module.exports = __toCommonJS(src_exports); -__reExport(src_exports, require("./camera"), module.exports); -__reExport(src_exports, require("./base"), module.exports); -__reExport(src_exports, require("./user"), module.exports); +// src/_util/easings.ts +var easings_exports = {}; +__export(easings_exports, { + easeInOutCubic: () => easeInOutCubic +}); +module.exports = __toCommonJS(easings_exports); +function easeInOutCubic(t, b, c, d) { + const cc = c - b; + t /= d / 2; + if (t < 1) { + return cc / 2 * t * t * t + b; + } + return cc / 2 * ((t -= 2) * t * t + 2) + b; +} // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { - ...require("./camera"), - ...require("./base"), - ...require("./user") + easeInOutCubic }); diff --git a/packages/meta/lib/_util/extendsObject.d.ts b/packages/meta/lib/_util/extendsObject.d.ts new file mode 100644 index 0000000..66ece2f --- /dev/null +++ b/packages/meta/lib/_util/extendsObject.d.ts @@ -0,0 +1,3 @@ +import type { AnyObject } from './type'; +declare const extendsObject: (...list: T[]) => AnyObject; +export default extendsObject; diff --git a/packages/meta/lib/_util/extendsObject.js b/packages/meta/lib/_util/extendsObject.js new file mode 100644 index 0000000..d69f012 --- /dev/null +++ b/packages/meta/lib/_util/extendsObject.js @@ -0,0 +1,40 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/extendsObject.ts +var extendsObject_exports = {}; +__export(extendsObject_exports, { + default: () => extendsObject_default +}); +module.exports = __toCommonJS(extendsObject_exports); +var extendsObject = (...list) => { + const result = { ...list[0] }; + for (let i = 1; i < list.length; i++) { + const obj = list[i]; + if (obj) { + Object.keys(obj).forEach((key) => { + const val = obj[key]; + if (val !== void 0) { + result[key] = val; + } + }); + } + } + return result; +}; +var extendsObject_default = extendsObject; diff --git a/packages/meta/lib/_util/gapSize.d.ts b/packages/meta/lib/_util/gapSize.d.ts new file mode 100644 index 0000000..c0ad4d6 --- /dev/null +++ b/packages/meta/lib/_util/gapSize.d.ts @@ -0,0 +1,3 @@ +import type { SizeType } from '../config-provider/SizeContext'; +export declare function isPresetSize(size?: SizeType | string | number): size is SizeType; +export declare function isValidGapNumber(size?: SizeType | string | number): size is number; diff --git a/packages/meta/lib/_util/gapSize.js b/packages/meta/lib/_util/gapSize.js new file mode 100644 index 0000000..b329bcc --- /dev/null +++ b/packages/meta/lib/_util/gapSize.js @@ -0,0 +1,39 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/gapSize.ts +var gapSize_exports = {}; +__export(gapSize_exports, { + isPresetSize: () => isPresetSize, + isValidGapNumber: () => isValidGapNumber +}); +module.exports = __toCommonJS(gapSize_exports); +function isPresetSize(size) { + return ["small", "middle", "large"].includes(size); +} +function isValidGapNumber(size) { + if (!size) { + return false; + } + return typeof size === "number" && !Number.isNaN(size); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + isPresetSize, + isValidGapNumber +}); diff --git a/packages/meta/lib/_util/getRenderPropValue.d.ts b/packages/meta/lib/_util/getRenderPropValue.d.ts new file mode 100644 index 0000000..76a463b --- /dev/null +++ b/packages/meta/lib/_util/getRenderPropValue.d.ts @@ -0,0 +1,3 @@ +import type * as React from 'react'; +export type RenderFunction = () => React.ReactNode; +export declare const getRenderPropValue: (propValue?: React.ReactNode | RenderFunction) => React.ReactNode; diff --git a/packages/meta/lib/_util/getRenderPropValue.js b/packages/meta/lib/_util/getRenderPropValue.js new file mode 100644 index 0000000..c5fc23a --- /dev/null +++ b/packages/meta/lib/_util/getRenderPropValue.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/getRenderPropValue.ts +var getRenderPropValue_exports = {}; +__export(getRenderPropValue_exports, { + getRenderPropValue: () => getRenderPropValue +}); +module.exports = __toCommonJS(getRenderPropValue_exports); +var getRenderPropValue = (propValue) => { + if (!propValue) { + return null; + } + return typeof propValue === "function" ? propValue() : propValue; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getRenderPropValue +}); diff --git a/packages/meta/lib/_util/getScroll.d.ts b/packages/meta/lib/_util/getScroll.d.ts new file mode 100644 index 0000000..6db588e --- /dev/null +++ b/packages/meta/lib/_util/getScroll.d.ts @@ -0,0 +1,2 @@ +export declare function isWindow(obj: any): obj is Window; +export default function getScroll(target: HTMLElement | Window | Document | null, top: boolean): number; diff --git a/packages/meta/lib/_util/getScroll.js b/packages/meta/lib/_util/getScroll.js new file mode 100644 index 0000000..fabc0bb --- /dev/null +++ b/packages/meta/lib/_util/getScroll.js @@ -0,0 +1,53 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/getScroll.ts +var getScroll_exports = {}; +__export(getScroll_exports, { + default: () => getScroll, + isWindow: () => isWindow +}); +module.exports = __toCommonJS(getScroll_exports); +function isWindow(obj) { + return obj !== null && obj !== void 0 && obj === obj.window; +} +function getScroll(target, top) { + var _a; + if (typeof window === "undefined") { + return 0; + } + const method = top ? "scrollTop" : "scrollLeft"; + let result = 0; + if (isWindow(target)) { + result = target[top ? "pageYOffset" : "pageXOffset"]; + } else if (target instanceof Document) { + result = target.documentElement[method]; + } else if (target instanceof HTMLElement) { + result = target[method]; + } else if (target) { + result = target[method]; + } + if (target && !isWindow(target) && typeof result !== "number") { + result = (_a = (target.ownerDocument ?? target).documentElement) == null ? void 0 : _a[method]; + } + return result; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + isWindow +}); diff --git a/packages/meta/lib/_util/hooks/useClosable.d.ts b/packages/meta/lib/_util/hooks/useClosable.d.ts new file mode 100644 index 0000000..eea0042 --- /dev/null +++ b/packages/meta/lib/_util/hooks/useClosable.d.ts @@ -0,0 +1,10 @@ +import type { ReactNode } from 'react'; +import React from 'react'; +export type UseClosableParams = { + closable?: boolean; + closeIcon?: boolean | ReactNode; + defaultClosable?: boolean; + defaultCloseIcon?: ReactNode; + customCloseIconRender?: (closeIcon: ReactNode) => ReactNode; +}; +export default function useClosable(closable?: boolean, closeIcon?: boolean | ReactNode, customCloseIconRender?: (closeIcon: ReactNode) => ReactNode, defaultCloseIcon?: ReactNode, defaultClosable?: boolean): [closable: boolean, closeIcon: React.ReactNode | null]; diff --git a/packages/meta/lib/_util/hooks/useClosable.js b/packages/meta/lib/_util/hooks/useClosable.js new file mode 100644 index 0000000..7760da8 --- /dev/null +++ b/packages/meta/lib/_util/hooks/useClosable.js @@ -0,0 +1,53 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/hooks/useClosable.tsx +var useClosable_exports = {}; +__export(useClosable_exports, { + default: () => useClosable +}); +module.exports = __toCommonJS(useClosable_exports); +var import_CloseOutlined = __toESM(require("@ant-design/icons/CloseOutlined")); +var import_react = __toESM(require("react")); +function useInnerClosable(closable, closeIcon, defaultClosable) { + if (typeof closable === "boolean") { + return closable; + } + if (closeIcon === void 0) { + return !!defaultClosable; + } + return closeIcon !== false && closeIcon !== null; +} +function useClosable(closable, closeIcon, customCloseIconRender, defaultCloseIcon = /* @__PURE__ */ import_react.default.createElement(import_CloseOutlined.default, null), defaultClosable = false) { + const mergedClosable = useInnerClosable(closable, closeIcon, defaultClosable); + if (!mergedClosable) { + return [false, null]; + } + const mergedCloseIcon = typeof closeIcon === "boolean" || closeIcon === void 0 || closeIcon === null ? defaultCloseIcon : closeIcon; + return [true, customCloseIconRender ? customCloseIconRender(mergedCloseIcon) : mergedCloseIcon]; +} diff --git a/packages/meta/lib/_util/hooks/useForceUpdate.d.ts b/packages/meta/lib/_util/hooks/useForceUpdate.d.ts new file mode 100644 index 0000000..b6b0e9f --- /dev/null +++ b/packages/meta/lib/_util/hooks/useForceUpdate.d.ts @@ -0,0 +1,2 @@ +import * as React from 'react'; +export default function useForceUpdate(): React.DispatchWithoutAction; diff --git a/packages/meta/lib/_util/hooks/useForceUpdate.js b/packages/meta/lib/_util/hooks/useForceUpdate.js new file mode 100644 index 0000000..54beae2 --- /dev/null +++ b/packages/meta/lib/_util/hooks/useForceUpdate.js @@ -0,0 +1,39 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/hooks/useForceUpdate.ts +var useForceUpdate_exports = {}; +__export(useForceUpdate_exports, { + default: () => useForceUpdate +}); +module.exports = __toCommonJS(useForceUpdate_exports); +var React = __toESM(require("react")); +function useForceUpdate() { + const [, forceUpdate] = React.useReducer((x) => x + 1, 0); + return forceUpdate; +} diff --git a/packages/meta/lib/_util/hooks/useMultipleSelect.d.ts b/packages/meta/lib/_util/hooks/useMultipleSelect.d.ts new file mode 100644 index 0000000..d613a5c --- /dev/null +++ b/packages/meta/lib/_util/hooks/useMultipleSelect.d.ts @@ -0,0 +1,6 @@ +export type PrevSelectedIndex = null | number; +/** + * @title multipleSelect hooks + * @description multipleSelect by hold down shift key + */ +export default function useMultipleSelect(getKey: (item: T) => K): readonly [(currentSelectedIndex: number, data: T[], selectedKeys: Set) => K[], (val: PrevSelectedIndex) => void]; diff --git a/packages/meta/lib/_util/hooks/useMultipleSelect.js b/packages/meta/lib/_util/hooks/useMultipleSelect.js new file mode 100644 index 0000000..50139cf --- /dev/null +++ b/packages/meta/lib/_util/hooks/useMultipleSelect.js @@ -0,0 +1,56 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/hooks/useMultipleSelect.ts +var useMultipleSelect_exports = {}; +__export(useMultipleSelect_exports, { + default: () => useMultipleSelect +}); +module.exports = __toCommonJS(useMultipleSelect_exports); +var import_react = require("react"); +function useMultipleSelect(getKey) { + const [prevSelectedIndex, setPrevSelectedIndex] = (0, import_react.useState)(null); + const multipleSelect = (0, import_react.useCallback)( + (currentSelectedIndex, data, selectedKeys) => { + const configPrevSelectedIndex = prevSelectedIndex ?? currentSelectedIndex; + const startIndex = Math.min(configPrevSelectedIndex || 0, currentSelectedIndex); + const endIndex = Math.max(configPrevSelectedIndex || 0, currentSelectedIndex); + const rangeKeys = data.slice(startIndex, endIndex + 1).map((item) => getKey(item)); + const shouldSelected = rangeKeys.some((rangeKey) => !selectedKeys.has(rangeKey)); + const changedKeys = []; + rangeKeys.forEach((item) => { + if (shouldSelected) { + if (!selectedKeys.has(item)) { + changedKeys.push(item); + } + selectedKeys.add(item); + } else { + selectedKeys.delete(item); + changedKeys.push(item); + } + }); + setPrevSelectedIndex(shouldSelected ? endIndex : null); + return changedKeys; + }, + [prevSelectedIndex] + ); + const updatePrevSelectedIndex = (val) => { + setPrevSelectedIndex(val); + }; + return [multipleSelect, updatePrevSelectedIndex]; +} diff --git a/packages/meta/lib/_util/hooks/usePatchElement.d.ts b/packages/meta/lib/_util/hooks/usePatchElement.d.ts new file mode 100644 index 0000000..e53aa7e --- /dev/null +++ b/packages/meta/lib/_util/hooks/usePatchElement.d.ts @@ -0,0 +1,5 @@ +import * as React from 'react'; +export default function usePatchElement(): [ + React.ReactElement[], + (element: React.ReactElement) => Function +]; diff --git a/packages/meta/lib/_util/hooks/usePatchElement.js b/packages/meta/lib/_util/hooks/usePatchElement.js new file mode 100644 index 0000000..75aa9f1 --- /dev/null +++ b/packages/meta/lib/_util/hooks/usePatchElement.js @@ -0,0 +1,45 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/hooks/usePatchElement.ts +var usePatchElement_exports = {}; +__export(usePatchElement_exports, { + default: () => usePatchElement +}); +module.exports = __toCommonJS(usePatchElement_exports); +var React = __toESM(require("react")); +function usePatchElement() { + const [elements, setElements] = React.useState([]); + const patchElement = React.useCallback((element) => { + setElements((originElements) => [...originElements, element]); + return () => { + setElements((originElements) => originElements.filter((ele) => ele !== element)); + }; + }, []); + return [elements, patchElement]; +} diff --git a/packages/meta/lib/_util/hooks/useProxyImperativeHandle.d.ts b/packages/meta/lib/_util/hooks/useProxyImperativeHandle.d.ts new file mode 100644 index 0000000..2004e3b --- /dev/null +++ b/packages/meta/lib/_util/hooks/useProxyImperativeHandle.d.ts @@ -0,0 +1,4 @@ +import { type Ref } from 'react'; +export default function useProxyImperativeHandle(ref: Ref | undefined, init: () => ReturnRefType): void; diff --git a/packages/meta/lib/_util/hooks/useProxyImperativeHandle.js b/packages/meta/lib/_util/hooks/useProxyImperativeHandle.js new file mode 100644 index 0000000..8d180d5 --- /dev/null +++ b/packages/meta/lib/_util/hooks/useProxyImperativeHandle.js @@ -0,0 +1,53 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/hooks/useProxyImperativeHandle.ts +var useProxyImperativeHandle_exports = {}; +__export(useProxyImperativeHandle_exports, { + default: () => useProxyImperativeHandle +}); +module.exports = __toCommonJS(useProxyImperativeHandle_exports); +var import_react = require("react"); +function fillProxy(element, handler) { + element._antProxy = element._antProxy || {}; + Object.keys(handler).forEach((key) => { + if (!(key in element._antProxy)) { + const ori = element[key]; + element._antProxy[key] = ori; + element[key] = handler[key]; + } + }); + return element; +} +function useProxyImperativeHandle(ref, init) { + return (0, import_react.useImperativeHandle)(ref, () => { + const refObj = init(); + const { nativeElement } = refObj; + if (typeof Proxy !== "undefined") { + return new Proxy(nativeElement, { + get(obj, prop) { + if (refObj[prop]) { + return refObj[prop]; + } + return Reflect.get(obj, prop); + } + }); + } + return fillProxy(nativeElement, refObj); + }); +} diff --git a/packages/meta/lib/_util/hooks/useSyncState.d.ts b/packages/meta/lib/_util/hooks/useSyncState.d.ts new file mode 100644 index 0000000..ad9131c --- /dev/null +++ b/packages/meta/lib/_util/hooks/useSyncState.d.ts @@ -0,0 +1,3 @@ +type UseSyncStateProps = readonly [() => T, (newValue: T) => void]; +export default function useSyncState(initialValue: T): UseSyncStateProps; +export {}; diff --git a/packages/meta/lib/_util/hooks/useSyncState.js b/packages/meta/lib/_util/hooks/useSyncState.js new file mode 100644 index 0000000..d30dd81 --- /dev/null +++ b/packages/meta/lib/_util/hooks/useSyncState.js @@ -0,0 +1,47 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/hooks/useSyncState.ts +var useSyncState_exports = {}; +__export(useSyncState_exports, { + default: () => useSyncState +}); +module.exports = __toCommonJS(useSyncState_exports); +var React = __toESM(require("react")); +var import_useForceUpdate = __toESM(require("./useForceUpdate")); +function useSyncState(initialValue) { + const ref = React.useRef(initialValue); + const forceUpdate = (0, import_useForceUpdate.default)(); + return [ + () => ref.current, + (newValue) => { + ref.current = newValue; + forceUpdate(); + } + ]; +} diff --git a/packages/meta/lib/_util/hooks/useZIndex.d.ts b/packages/meta/lib/_util/hooks/useZIndex.d.ts new file mode 100644 index 0000000..856f9d3 --- /dev/null +++ b/packages/meta/lib/_util/hooks/useZIndex.d.ts @@ -0,0 +1,6 @@ +export type ZIndexContainer = 'Modal' | 'Drawer' | 'Popover' | 'Popconfirm' | 'Tooltip' | 'Tour'; +export type ZIndexConsumer = 'SelectLike' | 'Dropdown' | 'DatePicker' | 'Menu' | 'ImagePreview'; +export declare const CONTAINER_MAX_OFFSET: number; +export declare const containerBaseZIndexOffset: Record; +export declare const consumerBaseZIndexOffset: Record; +export declare function useZIndex(componentType: ZIndexContainer | ZIndexConsumer, customZIndex?: number): [zIndex: number | undefined, contextZIndex: number]; diff --git a/packages/meta/lib/_util/hooks/useZIndex.js b/packages/meta/lib/_util/hooks/useZIndex.js new file mode 100644 index 0000000..4654505 --- /dev/null +++ b/packages/meta/lib/_util/hooks/useZIndex.js @@ -0,0 +1,86 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/hooks/useZIndex.ts +var useZIndex_exports = {}; +__export(useZIndex_exports, { + CONTAINER_MAX_OFFSET: () => CONTAINER_MAX_OFFSET, + consumerBaseZIndexOffset: () => consumerBaseZIndexOffset, + containerBaseZIndexOffset: () => containerBaseZIndexOffset, + useZIndex: () => useZIndex +}); +module.exports = __toCommonJS(useZIndex_exports); +var import_react = __toESM(require("react")); +var import_useToken = __toESM(require("../../theme/useToken")); +var import_zindexContext = __toESM(require("../zindexContext")); +var CONTAINER_OFFSET = 100; +var CONTAINER_OFFSET_MAX_COUNT = 10; +var CONTAINER_MAX_OFFSET = CONTAINER_OFFSET * CONTAINER_OFFSET_MAX_COUNT; +var containerBaseZIndexOffset = { + Modal: CONTAINER_OFFSET, + Drawer: CONTAINER_OFFSET, + Popover: CONTAINER_OFFSET, + Popconfirm: CONTAINER_OFFSET, + Tooltip: CONTAINER_OFFSET, + Tour: CONTAINER_OFFSET +}; +var consumerBaseZIndexOffset = { + SelectLike: 50, + Dropdown: 50, + DatePicker: 50, + Menu: 50, + ImagePreview: 1 +}; +function isContainerType(type) { + return type in containerBaseZIndexOffset; +} +function useZIndex(componentType, customZIndex) { + const [, token] = (0, import_useToken.default)(); + const parentZIndex = import_react.default.useContext(import_zindexContext.default); + const isContainer = isContainerType(componentType); + if (customZIndex !== void 0) { + return [customZIndex, customZIndex]; + } + let zIndex = parentZIndex ?? 0; + if (isContainer) { + zIndex += // Use preset token zIndex by default but not stack when has parent container + (parentZIndex ? 0 : token.zIndexPopupBase) + // Container offset + containerBaseZIndexOffset[componentType]; + zIndex = Math.min(zIndex, token.zIndexPopupBase + CONTAINER_MAX_OFFSET); + } else { + zIndex += consumerBaseZIndexOffset[componentType]; + } + return [parentZIndex === void 0 ? customZIndex : zIndex, zIndex]; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + CONTAINER_MAX_OFFSET, + consumerBaseZIndexOffset, + containerBaseZIndexOffset, + useZIndex +}); diff --git a/packages/meta/lib/_util/isNumeric.d.ts b/packages/meta/lib/_util/isNumeric.d.ts new file mode 100644 index 0000000..249431b --- /dev/null +++ b/packages/meta/lib/_util/isNumeric.d.ts @@ -0,0 +1,2 @@ +declare const isNumeric: (value: any) => boolean; +export default isNumeric; diff --git a/packages/meta/lib/_util/isNumeric.js b/packages/meta/lib/_util/isNumeric.js new file mode 100644 index 0000000..7cfc437 --- /dev/null +++ b/packages/meta/lib/_util/isNumeric.js @@ -0,0 +1,26 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/isNumeric.ts +var isNumeric_exports = {}; +__export(isNumeric_exports, { + default: () => isNumeric_default +}); +module.exports = __toCommonJS(isNumeric_exports); +var isNumeric = (value) => !isNaN(parseFloat(value)) && isFinite(value); +var isNumeric_default = isNumeric; diff --git a/packages/meta/lib/_util/motion.d.ts b/packages/meta/lib/_util/motion.d.ts new file mode 100644 index 0000000..db7cff4 --- /dev/null +++ b/packages/meta/lib/_util/motion.d.ts @@ -0,0 +1,7 @@ +import type { CSSMotionProps } from 'rc-motion'; +declare const initCollapseMotion: (rootCls?: string) => CSSMotionProps; +declare const SelectPlacements: readonly ["bottomLeft", "bottomRight", "topLeft", "topRight"]; +export type SelectCommonPlacement = typeof SelectPlacements[number]; +declare const getTransitionName: (rootPrefixCls: string, motion: string, transitionName?: string) => string; +export { getTransitionName }; +export default initCollapseMotion; diff --git a/packages/meta/lib/_util/motion.js b/packages/meta/lib/_util/motion.js new file mode 100644 index 0000000..6f886c6 --- /dev/null +++ b/packages/meta/lib/_util/motion.js @@ -0,0 +1,56 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/motion.ts +var motion_exports = {}; +__export(motion_exports, { + default: () => motion_default, + getTransitionName: () => getTransitionName +}); +module.exports = __toCommonJS(motion_exports); +var getCollapsedHeight = () => ({ height: 0, opacity: 0 }); +var getRealHeight = (node) => { + const { scrollHeight } = node; + return { height: scrollHeight, opacity: 1 }; +}; +var getCurrentHeight = (node) => ({ height: node ? node.offsetHeight : 0 }); +var skipOpacityTransition = (_, event) => (event == null ? void 0 : event.deadline) === true || event.propertyName === "height"; +var initCollapseMotion = (rootCls = "ant") => ({ + motionName: `${rootCls}-motion-collapse`, + onAppearStart: getCollapsedHeight, + onEnterStart: getCollapsedHeight, + onAppearActive: getRealHeight, + onEnterActive: getRealHeight, + onLeaveStart: getCurrentHeight, + onLeaveActive: getCollapsedHeight, + onAppearEnd: skipOpacityTransition, + onEnterEnd: skipOpacityTransition, + onLeaveEnd: skipOpacityTransition, + motionDeadline: 500 +}); +var getTransitionName = (rootPrefixCls, motion, transitionName) => { + if (transitionName !== void 0) { + return transitionName; + } + return `${rootPrefixCls}-${motion}`; +}; +var motion_default = initCollapseMotion; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getTransitionName +}); diff --git a/packages/meta/lib/_util/placements.d.ts b/packages/meta/lib/_util/placements.d.ts new file mode 100644 index 0000000..de2bf6b --- /dev/null +++ b/packages/meta/lib/_util/placements.d.ts @@ -0,0 +1,21 @@ +import type { BuildInPlacements } from '@rc-component/trigger'; +import { getArrowOffsetToken } from '../style/placementArrow'; +export interface AdjustOverflow { + adjustX?: 0 | 1; + adjustY?: 0 | 1; +} +export interface PlacementsConfig { + arrowWidth: number; + arrowPointAtCenter?: boolean; + autoAdjustOverflow?: boolean | AdjustOverflow; + offset: number; + borderRadius: number; + visibleFirst?: boolean; +} +export declare function getOverflowOptions(placement: string, arrowOffset: ReturnType, arrowWidth: number, autoAdjustOverflow?: boolean | AdjustOverflow): { + adjustX?: number | boolean | undefined; + adjustY?: number | boolean | undefined; + shiftX?: number | boolean | undefined; + shiftY?: number | boolean | undefined; +}; +export default function getPlacements(config: PlacementsConfig): BuildInPlacements; diff --git a/packages/meta/lib/_util/placements.js b/packages/meta/lib/_util/placements.js new file mode 100644 index 0000000..8e3c118 --- /dev/null +++ b/packages/meta/lib/_util/placements.js @@ -0,0 +1,207 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/placements.ts +var placements_exports = {}; +__export(placements_exports, { + default: () => getPlacements, + getOverflowOptions: () => getOverflowOptions +}); +module.exports = __toCommonJS(placements_exports); +var import_placementArrow = require("../style/placementArrow"); +function getOverflowOptions(placement, arrowOffset, arrowWidth, autoAdjustOverflow) { + if (autoAdjustOverflow === false) { + return { + adjustX: false, + adjustY: false + }; + } + const overflow = autoAdjustOverflow && typeof autoAdjustOverflow === "object" ? autoAdjustOverflow : {}; + const baseOverflow = {}; + switch (placement) { + case "top": + case "bottom": + baseOverflow.shiftX = arrowOffset.arrowOffsetHorizontal * 2 + arrowWidth; + baseOverflow.shiftY = true; + baseOverflow.adjustY = true; + break; + case "left": + case "right": + baseOverflow.shiftY = arrowOffset.arrowOffsetVertical * 2 + arrowWidth; + baseOverflow.shiftX = true; + baseOverflow.adjustX = true; + break; + } + const mergedOverflow = { + ...baseOverflow, + ...overflow + }; + if (!mergedOverflow.shiftX) { + mergedOverflow.adjustX = true; + } + if (!mergedOverflow.shiftY) { + mergedOverflow.adjustY = true; + } + return mergedOverflow; +} +var PlacementAlignMap = { + left: { + points: ["cr", "cl"] + }, + right: { + points: ["cl", "cr"] + }, + top: { + points: ["bc", "tc"] + }, + bottom: { + points: ["tc", "bc"] + }, + topLeft: { + points: ["bl", "tl"] + }, + leftTop: { + points: ["tr", "tl"] + }, + topRight: { + points: ["br", "tr"] + }, + rightTop: { + points: ["tl", "tr"] + }, + bottomRight: { + points: ["tr", "br"] + }, + rightBottom: { + points: ["bl", "br"] + }, + bottomLeft: { + points: ["tl", "bl"] + }, + leftBottom: { + points: ["br", "bl"] + } +}; +var ArrowCenterPlacementAlignMap = { + topLeft: { + points: ["bl", "tc"] + }, + leftTop: { + points: ["tr", "cl"] + }, + topRight: { + points: ["br", "tc"] + }, + rightTop: { + points: ["tl", "cr"] + }, + bottomRight: { + points: ["tr", "bc"] + }, + rightBottom: { + points: ["bl", "cr"] + }, + bottomLeft: { + points: ["tl", "bc"] + }, + leftBottom: { + points: ["br", "cl"] + } +}; +var DisableAutoArrowList = /* @__PURE__ */ new Set([ + "topLeft", + "topRight", + "bottomLeft", + "bottomRight", + "leftTop", + "leftBottom", + "rightTop", + "rightBottom" +]); +function getPlacements(config) { + const { arrowWidth, autoAdjustOverflow, arrowPointAtCenter, offset, borderRadius, visibleFirst } = config; + const halfArrowWidth = arrowWidth / 2; + const placementMap = {}; + Object.keys(PlacementAlignMap).forEach((key) => { + const template = arrowPointAtCenter && ArrowCenterPlacementAlignMap[key] || PlacementAlignMap[key]; + const placementInfo = { + ...template, + offset: [0, 0], + dynamicInset: true + }; + placementMap[key] = placementInfo; + if (DisableAutoArrowList.has(key)) { + placementInfo.autoArrow = false; + } + switch (key) { + case "top": + case "topLeft": + case "topRight": + placementInfo.offset[1] = -halfArrowWidth - offset; + break; + case "bottom": + case "bottomLeft": + case "bottomRight": + placementInfo.offset[1] = halfArrowWidth + offset; + break; + case "left": + case "leftTop": + case "leftBottom": + placementInfo.offset[0] = -halfArrowWidth - offset; + break; + case "right": + case "rightTop": + case "rightBottom": + placementInfo.offset[0] = halfArrowWidth + offset; + break; + } + const arrowOffset = (0, import_placementArrow.getArrowOffsetToken)({ + contentRadius: borderRadius, + limitVerticalRadius: true + }); + if (arrowPointAtCenter) { + switch (key) { + case "topLeft": + case "bottomLeft": + placementInfo.offset[0] = -arrowOffset.arrowOffsetHorizontal - halfArrowWidth; + break; + case "topRight": + case "bottomRight": + placementInfo.offset[0] = arrowOffset.arrowOffsetHorizontal + halfArrowWidth; + break; + case "leftTop": + case "rightTop": + placementInfo.offset[1] = -arrowOffset.arrowOffsetHorizontal - halfArrowWidth; + break; + case "leftBottom": + case "rightBottom": + placementInfo.offset[1] = arrowOffset.arrowOffsetHorizontal + halfArrowWidth; + break; + } + } + placementInfo.overflow = getOverflowOptions(key, arrowOffset, arrowWidth, autoAdjustOverflow); + if (visibleFirst) { + placementInfo.htmlRegion = "visibleFirst"; + } + }); + return placementMap; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getOverflowOptions +}); diff --git a/packages/meta/lib/_util/reactNode.d.ts b/packages/meta/lib/_util/reactNode.d.ts new file mode 100644 index 0000000..76a8884 --- /dev/null +++ b/packages/meta/lib/_util/reactNode.d.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; +import type { AnyObject } from './type'; +export declare const isValidElement: typeof React.isValidElement; +export declare function isFragment(child: any): boolean; +type RenderProps = AnyObject | ((originProps: AnyObject) => AnyObject | void); +export declare function replaceElement(element: React.ReactNode, replacement: React.ReactNode, props?: RenderProps): React.ReactNode; +export declare function cloneElement(element: React.ReactNode, props?: RenderProps): React.ReactElement; +export {}; diff --git a/packages/meta/lib/_util/reactNode.js b/packages/meta/lib/_util/reactNode.js new file mode 100644 index 0000000..6d6f752 --- /dev/null +++ b/packages/meta/lib/_util/reactNode.js @@ -0,0 +1,61 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/reactNode.ts +var reactNode_exports = {}; +__export(reactNode_exports, { + cloneElement: () => cloneElement2, + isFragment: () => isFragment, + isValidElement: () => isValidElement, + replaceElement: () => replaceElement +}); +module.exports = __toCommonJS(reactNode_exports); +var React = __toESM(require("react")); +var { isValidElement } = React; +function isFragment(child) { + return child && isValidElement(child) && child.type === React.Fragment; +} +function replaceElement(element, replacement, props) { + if (!isValidElement(element)) { + return replacement; + } + return React.cloneElement( + element, + typeof props === "function" ? props(element.props || {}) : props + ); +} +function cloneElement2(element, props) { + return replaceElement(element, element, props); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + cloneElement, + isFragment, + isValidElement, + replaceElement +}); diff --git a/packages/meta/lib/_util/responsiveObserver.d.ts b/packages/meta/lib/_util/responsiveObserver.d.ts new file mode 100644 index 0000000..275cc88 --- /dev/null +++ b/packages/meta/lib/_util/responsiveObserver.d.ts @@ -0,0 +1,22 @@ +export type Breakpoint = 'xxl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs'; +export type BreakpointMap = Record; +export type ScreenMap = Partial>; +export type ScreenSizeMap = Partial>; +export declare const responsiveArray: Breakpoint[]; +type SubscribeFunc = (screens: ScreenMap) => void; +export default function useResponsiveObserver(): { + matchHandlers: { + [prop: string]: { + mql: MediaQueryList; + listener: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null; + }; + }; + dispatch(pointMap: ScreenMap): boolean; + subscribe(func: SubscribeFunc): number; + unsubscribe(paramToken: number): void; + unregister(): void; + register(): void; + responsiveMap: BreakpointMap; +}; +export declare const matchScreen: (screens: ScreenMap, screenSizes?: ScreenSizeMap) => number | undefined; +export {}; diff --git a/packages/meta/lib/_util/responsiveObserver.js b/packages/meta/lib/_util/responsiveObserver.js new file mode 100644 index 0000000..7ffe879 --- /dev/null +++ b/packages/meta/lib/_util/responsiveObserver.js @@ -0,0 +1,149 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/responsiveObserver.ts +var responsiveObserver_exports = {}; +__export(responsiveObserver_exports, { + default: () => useResponsiveObserver, + matchScreen: () => matchScreen, + responsiveArray: () => responsiveArray +}); +module.exports = __toCommonJS(responsiveObserver_exports); +var import_react = __toESM(require("react")); +var import_internal = require("../theme/internal"); +var responsiveArray = ["xxl", "xl", "lg", "md", "sm", "xs"]; +var getResponsiveMap = (token) => ({ + xs: `(max-width: ${token.screenXSMax}px)`, + sm: `(min-width: ${token.screenSM}px)`, + md: `(min-width: ${token.screenMD}px)`, + lg: `(min-width: ${token.screenLG}px)`, + xl: `(min-width: ${token.screenXL}px)`, + xxl: `(min-width: ${token.screenXXL}px)` +}); +var validateBreakpoints = (token) => { + const indexableToken = token; + const revBreakpoints = [...responsiveArray].reverse(); + revBreakpoints.forEach((breakpoint, i) => { + const breakpointUpper = breakpoint.toUpperCase(); + const screenMin = `screen${breakpointUpper}Min`; + const screen = `screen${breakpointUpper}`; + if (!(indexableToken[screenMin] <= indexableToken[screen])) { + throw new Error( + `${screenMin}<=${screen} fails : !(${indexableToken[screenMin]}<=${indexableToken[screen]})` + ); + } + if (i < revBreakpoints.length - 1) { + const screenMax = `screen${breakpointUpper}Max`; + if (!(indexableToken[screen] <= indexableToken[screenMax])) { + throw new Error( + `${screen}<=${screenMax} fails : !(${indexableToken[screen]}<=${indexableToken[screenMax]})` + ); + } + const nextBreakpointUpperMin = revBreakpoints[i + 1].toUpperCase(); + const nextScreenMin = `screen${nextBreakpointUpperMin}Min`; + if (!(indexableToken[screenMax] <= indexableToken[nextScreenMin])) { + throw new Error( + `${screenMax}<=${nextScreenMin} fails : !(${indexableToken[screenMax]}<=${indexableToken[nextScreenMin]})` + ); + } + } + }); + return token; +}; +function useResponsiveObserver() { + const [, token] = (0, import_internal.useToken)(); + const responsiveMap = getResponsiveMap(validateBreakpoints(token)); + return import_react.default.useMemo(() => { + const subscribers = /* @__PURE__ */ new Map(); + let subUid = -1; + let screens = {}; + return { + matchHandlers: {}, + dispatch(pointMap) { + screens = pointMap; + subscribers.forEach((func) => func(screens)); + return subscribers.size >= 1; + }, + subscribe(func) { + if (!subscribers.size) + this.register(); + subUid += 1; + subscribers.set(subUid, func); + func(screens); + return subUid; + }, + unsubscribe(paramToken) { + subscribers.delete(paramToken); + if (!subscribers.size) + this.unregister(); + }, + unregister() { + Object.keys(responsiveMap).forEach((screen) => { + const matchMediaQuery = responsiveMap[screen]; + const handler = this.matchHandlers[matchMediaQuery]; + handler == null ? void 0 : handler.mql.removeListener(handler == null ? void 0 : handler.listener); + }); + subscribers.clear(); + }, + register() { + Object.keys(responsiveMap).forEach((screen) => { + const matchMediaQuery = responsiveMap[screen]; + const listener = ({ matches }) => { + this.dispatch({ + ...screens, + [screen]: matches + }); + }; + const mql = window.matchMedia(matchMediaQuery); + mql.addListener(listener); + this.matchHandlers[matchMediaQuery] = { + mql, + listener + }; + listener(mql); + }); + }, + responsiveMap + }; + }, [token]); +} +var matchScreen = (screens, screenSizes) => { + if (screenSizes && typeof screenSizes === "object") { + for (let i = 0; i < responsiveArray.length; i++) { + const breakpoint = responsiveArray[i]; + if (screens[breakpoint] && screenSizes[breakpoint] !== void 0) { + return screenSizes[breakpoint]; + } + } + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + matchScreen, + responsiveArray +}); diff --git a/packages/meta/lib/_util/scrollTo.d.ts b/packages/meta/lib/_util/scrollTo.d.ts new file mode 100644 index 0000000..21fd3f9 --- /dev/null +++ b/packages/meta/lib/_util/scrollTo.d.ts @@ -0,0 +1,10 @@ +interface ScrollToOptions { + /** Scroll container, default as window */ + getContainer?: () => HTMLElement | Window | Document; + /** Scroll end callback */ + callback?: () => void; + /** Animation duration, default as 450 */ + duration?: number; +} +export default function scrollTo(y: number, options?: ScrollToOptions): void; +export {}; diff --git a/packages/meta/lib/_util/scrollTo.js b/packages/meta/lib/_util/scrollTo.js new file mode 100644 index 0000000..e37c33c --- /dev/null +++ b/packages/meta/lib/_util/scrollTo.js @@ -0,0 +1,61 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/scrollTo.ts +var scrollTo_exports = {}; +__export(scrollTo_exports, { + default: () => scrollTo +}); +module.exports = __toCommonJS(scrollTo_exports); +var import_raf = __toESM(require("rc-util/lib/raf")); +var import_easings = require("./easings"); +var import_getScroll = __toESM(require("./getScroll")); +function scrollTo(y, options = {}) { + const { getContainer = () => window, callback, duration = 450 } = options; + const container = getContainer(); + const scrollTop = (0, import_getScroll.default)(container, true); + const startTime = Date.now(); + const frameFunc = () => { + const timestamp = Date.now(); + const time = timestamp - startTime; + const nextScrollTop = (0, import_easings.easeInOutCubic)(time > duration ? duration : time, scrollTop, y, duration); + if ((0, import_getScroll.isWindow)(container)) { + container.scrollTo(window.pageXOffset, nextScrollTop); + } else if (container instanceof Document || container.constructor.name === "HTMLDocument") { + container.documentElement.scrollTop = nextScrollTop; + } else { + container.scrollTop = nextScrollTop; + } + if (time < duration) { + (0, import_raf.default)(frameFunc); + } else if (typeof callback === "function") { + callback(); + } + }; + (0, import_raf.default)(frameFunc); +} diff --git a/packages/meta/lib/_util/statusUtils.d.ts b/packages/meta/lib/_util/statusUtils.d.ts new file mode 100644 index 0000000..c66d2a1 --- /dev/null +++ b/packages/meta/lib/_util/statusUtils.d.ts @@ -0,0 +1,6 @@ +import type { ValidateStatus } from '../form/FormItem'; +declare const InputStatuses: readonly ["warning", "error", ""]; +export type InputStatus = typeof InputStatuses[number]; +export declare function getStatusClassNames(prefixCls: string, status?: ValidateStatus, hasFeedback?: boolean): string; +export declare const getMergedStatus: (contextStatus?: ValidateStatus, customStatus?: InputStatus) => "" | "success" | "error" | "warning" | "validating" | undefined; +export {}; diff --git a/packages/meta/lib/_util/statusUtils.js b/packages/meta/lib/_util/statusUtils.js new file mode 100644 index 0000000..2867bfd --- /dev/null +++ b/packages/meta/lib/_util/statusUtils.js @@ -0,0 +1,51 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/statusUtils.ts +var statusUtils_exports = {}; +__export(statusUtils_exports, { + getMergedStatus: () => getMergedStatus, + getStatusClassNames: () => getStatusClassNames +}); +module.exports = __toCommonJS(statusUtils_exports); +var import_classnames = __toESM(require("classnames")); +function getStatusClassNames(prefixCls, status, hasFeedback) { + return (0, import_classnames.default)({ + [`${prefixCls}-status-success`]: status === "success", + [`${prefixCls}-status-warning`]: status === "warning", + [`${prefixCls}-status-error`]: status === "error", + [`${prefixCls}-status-validating`]: status === "validating", + [`${prefixCls}-has-feedback`]: hasFeedback + }); +} +var getMergedStatus = (contextStatus, customStatus) => customStatus || contextStatus; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getMergedStatus, + getStatusClassNames +}); diff --git a/packages/meta/lib/_util/styleChecker.d.ts b/packages/meta/lib/_util/styleChecker.d.ts new file mode 100644 index 0000000..d7cf1e9 --- /dev/null +++ b/packages/meta/lib/_util/styleChecker.d.ts @@ -0,0 +1,3 @@ +import { isStyleSupport } from 'rc-util/lib/Dom/styleChecker'; +export declare const canUseDocElement: () => false | HTMLElement; +export { isStyleSupport }; diff --git a/packages/meta/lib/_util/styleChecker.js b/packages/meta/lib/_util/styleChecker.js new file mode 100644 index 0000000..399b851 --- /dev/null +++ b/packages/meta/lib/_util/styleChecker.js @@ -0,0 +1,43 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/styleChecker.ts +var styleChecker_exports = {}; +__export(styleChecker_exports, { + canUseDocElement: () => canUseDocElement, + isStyleSupport: () => import_styleChecker.isStyleSupport +}); +module.exports = __toCommonJS(styleChecker_exports); +var import_canUseDom = __toESM(require("rc-util/lib/Dom/canUseDom")); +var import_styleChecker = require("rc-util/lib/Dom/styleChecker"); +var canUseDocElement = () => (0, import_canUseDom.default)() && window.document.documentElement; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + canUseDocElement, + isStyleSupport +}); diff --git a/packages/meta/lib/_util/throttleByAnimationFrame.d.ts b/packages/meta/lib/_util/throttleByAnimationFrame.d.ts new file mode 100644 index 0000000..a19c9ca --- /dev/null +++ b/packages/meta/lib/_util/throttleByAnimationFrame.d.ts @@ -0,0 +1,5 @@ +declare function throttleByAnimationFrame(fn: (...args: T) => void): { + (...args: T): void; + cancel(): void; +}; +export default throttleByAnimationFrame; diff --git a/packages/meta/lib/_util/throttleByAnimationFrame.js b/packages/meta/lib/_util/throttleByAnimationFrame.js new file mode 100644 index 0000000..7f0a50c --- /dev/null +++ b/packages/meta/lib/_util/throttleByAnimationFrame.js @@ -0,0 +1,53 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/throttleByAnimationFrame.ts +var throttleByAnimationFrame_exports = {}; +__export(throttleByAnimationFrame_exports, { + default: () => throttleByAnimationFrame_default +}); +module.exports = __toCommonJS(throttleByAnimationFrame_exports); +var import_raf = __toESM(require("rc-util/lib/raf")); +function throttleByAnimationFrame(fn) { + let requestId; + const later = (args) => () => { + requestId = null; + fn(...args); + }; + const throttled = (...args) => { + if (requestId == null) { + requestId = (0, import_raf.default)(later(args)); + } + }; + throttled.cancel = () => { + import_raf.default.cancel(requestId); + requestId = null; + }; + return throttled; +} +var throttleByAnimationFrame_default = throttleByAnimationFrame; diff --git a/packages/meta/lib/_util/transButton.d.ts b/packages/meta/lib/_util/transButton.d.ts new file mode 100644 index 0000000..e12e191 --- /dev/null +++ b/packages/meta/lib/_util/transButton.d.ts @@ -0,0 +1,9 @@ +import * as React from 'react'; +interface TransButtonProps extends React.HTMLAttributes { + onClick?: (e?: React.MouseEvent) => void; + noStyle?: boolean; + autoFocus?: boolean; + disabled?: boolean; +} +declare const TransButton: React.ForwardRefExoticComponent>; +export default TransButton; diff --git a/packages/meta/lib/_util/transButton.js b/packages/meta/lib/_util/transButton.js new file mode 100644 index 0000000..ef6cd78 --- /dev/null +++ b/packages/meta/lib/_util/transButton.js @@ -0,0 +1,85 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/transButton.tsx +var transButton_exports = {}; +__export(transButton_exports, { + default: () => transButton_default +}); +module.exports = __toCommonJS(transButton_exports); +var import_KeyCode = __toESM(require("rc-util/lib/KeyCode")); +var React = __toESM(require("react")); +var inlineStyle = { + border: 0, + background: "transparent", + padding: 0, + lineHeight: "inherit", + display: "inline-block" +}; +var TransButton = React.forwardRef((props, ref) => { + const onKeyDown = (event) => { + const { keyCode } = event; + if (keyCode === import_KeyCode.default.ENTER) { + event.preventDefault(); + } + }; + const onKeyUp = (event) => { + const { keyCode } = event; + const { onClick } = props; + if (keyCode === import_KeyCode.default.ENTER && onClick) { + onClick(); + } + }; + const { style, noStyle, disabled, ...restProps } = props; + let mergedStyle = {}; + if (!noStyle) { + mergedStyle = { + ...inlineStyle + }; + } + if (disabled) { + mergedStyle.pointerEvents = "none"; + } + mergedStyle = { + ...mergedStyle, + ...style + }; + return /* @__PURE__ */ React.createElement( + "div", + { + role: "button", + tabIndex: 0, + ref, + ...restProps, + onKeyDown, + onKeyUp, + style: mergedStyle + } + ); +}); +var transButton_default = TransButton; diff --git a/packages/meta/lib/_util/transKeys.d.ts b/packages/meta/lib/_util/transKeys.d.ts new file mode 100644 index 0000000..50106b1 --- /dev/null +++ b/packages/meta/lib/_util/transKeys.d.ts @@ -0,0 +1,2 @@ +export declare const groupKeysMap: (keys: string[]) => Map; +export declare const groupDisabledKeysMap: (dataSource: RecordType) => Map; diff --git a/packages/meta/lib/_util/transKeys.js b/packages/meta/lib/_util/transKeys.js new file mode 100644 index 0000000..97bda1c --- /dev/null +++ b/packages/meta/lib/_util/transKeys.js @@ -0,0 +1,46 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/transKeys.ts +var transKeys_exports = {}; +__export(transKeys_exports, { + groupDisabledKeysMap: () => groupDisabledKeysMap, + groupKeysMap: () => groupKeysMap +}); +module.exports = __toCommonJS(transKeys_exports); +var groupKeysMap = (keys) => { + const map = /* @__PURE__ */ new Map(); + keys.forEach((key, index) => { + map.set(key, index); + }); + return map; +}; +var groupDisabledKeysMap = (dataSource) => { + const map = /* @__PURE__ */ new Map(); + dataSource.forEach(({ disabled, key }, index) => { + if (disabled) { + map.set(key, index); + } + }); + return map; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + groupDisabledKeysMap, + groupKeysMap +}); diff --git a/packages/meta/lib/_util/type.d.ts b/packages/meta/lib/_util/type.d.ts new file mode 100644 index 0000000..691eb85 --- /dev/null +++ b/packages/meta/lib/_util/type.d.ts @@ -0,0 +1,5 @@ +/// +/** https://github.com/Microsoft/TypeScript/issues/29729 */ +export type LiteralUnion = T | (string & {}); +export type AnyObject = Record; +export type CustomComponent

= React.ComponentType

| string; diff --git a/packages/meta/lib/_util/type.js b/packages/meta/lib/_util/type.js new file mode 100644 index 0000000..65dea9e --- /dev/null +++ b/packages/meta/lib/_util/type.js @@ -0,0 +1,17 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/type.ts +var type_exports = {}; +module.exports = __toCommonJS(type_exports); diff --git a/packages/meta/lib/_util/warning.d.ts b/packages/meta/lib/_util/warning.d.ts new file mode 100644 index 0000000..bbacf62 --- /dev/null +++ b/packages/meta/lib/_util/warning.d.ts @@ -0,0 +1,26 @@ +import * as React from 'react'; +export declare function noop(): void; +export declare function resetWarned(): void; +type Warning = (valid: boolean, component: string, message?: string) => void; +declare let warning: Warning; +type BaseTypeWarning = (valid: boolean, +/** + * - deprecated: Some API will be removed in future but still support now. + * - usage: Some API usage is not correct. + * - breaking: Breaking change like API is removed. + */ +type: 'deprecated' | 'usage' | 'breaking', message?: string) => void; +type TypeWarning = BaseTypeWarning & { + deprecated: (valid: boolean, oldProp: string, newProp: string, message?: string) => void; +}; +export interface WarningContextProps { + strict?: boolean; +} +export declare const WarningContext: React.Context; +/** + * This is a hook but we not named as `useWarning` + * since this is only used in development. + * We should always wrap this in `if (process.env.NODE_ENV !== 'production')` condition + */ +export declare const devUseWarning: (component: string) => TypeWarning; +export default warning; diff --git a/packages/meta/lib/_util/warning.js b/packages/meta/lib/_util/warning.js new file mode 100644 index 0000000..deca5aa --- /dev/null +++ b/packages/meta/lib/_util/warning.js @@ -0,0 +1,103 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/warning.ts +var warning_exports = {}; +__export(warning_exports, { + WarningContext: () => WarningContext, + default: () => warning_default, + devUseWarning: () => devUseWarning, + noop: () => noop, + resetWarned: () => resetWarned +}); +module.exports = __toCommonJS(warning_exports); +var React = __toESM(require("react")); +var import_warning = __toESM(require("rc-util/lib/warning")); +function noop() { +} +var deprecatedWarnList = null; +function resetWarned() { + deprecatedWarnList = null; + (0, import_warning.resetWarned)(); +} +var warning = noop; +if (process.env.NODE_ENV !== "production") { + warning = (valid, component, message) => { + (0, import_warning.default)(valid, `[antd: ${component}] ${message}`); + if (process.env.NODE_ENV === "test") { + resetWarned(); + } + }; +} +var WarningContext = React.createContext({}); +var devUseWarning = process.env.NODE_ENV !== "production" ? (component) => { + const { strict } = React.useContext(WarningContext); + const typeWarning = (valid, type, message) => { + if (!valid) { + if (strict === false && type === "deprecated") { + const existWarning = deprecatedWarnList; + if (!deprecatedWarnList) { + deprecatedWarnList = {}; + } + deprecatedWarnList[component] = deprecatedWarnList[component] || []; + if (!deprecatedWarnList[component].includes(message || "")) { + deprecatedWarnList[component].push(message || ""); + } + if (!existWarning) { + console.warn( + "[antd] There exists deprecated usage in your code:", + deprecatedWarnList + ); + } + } else { + warning(valid, component, message); + } + } + }; + typeWarning.deprecated = (valid, oldProp, newProp, message) => { + typeWarning( + valid, + "deprecated", + `\`${oldProp}\` is deprecated. Please use \`${newProp}\` instead.${message ? ` ${message}` : ""}` + ); + }; + return typeWarning; +} : () => { + const noopWarning = () => { + }; + noopWarning.deprecated = noop; + return noopWarning; +}; +var warning_default = warning; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + WarningContext, + devUseWarning, + noop, + resetWarned +}); diff --git a/packages/meta/lib/_util/wave/WaveEffect.d.ts b/packages/meta/lib/_util/wave/WaveEffect.d.ts new file mode 100644 index 0000000..37d4798 --- /dev/null +++ b/packages/meta/lib/_util/wave/WaveEffect.d.ts @@ -0,0 +1,8 @@ +import { type ShowWaveEffect } from './interface'; +export interface WaveEffectProps { + className: string; + target: HTMLElement; + component?: string; +} +declare const showWaveEffect: ShowWaveEffect; +export default showWaveEffect; diff --git a/packages/meta/lib/_util/wave/WaveEffect.js b/packages/meta/lib/_util/wave/WaveEffect.js new file mode 100644 index 0000000..3d282ab --- /dev/null +++ b/packages/meta/lib/_util/wave/WaveEffect.js @@ -0,0 +1,157 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/wave/WaveEffect.tsx +var WaveEffect_exports = {}; +__export(WaveEffect_exports, { + default: () => WaveEffect_default +}); +module.exports = __toCommonJS(WaveEffect_exports); +var import_classnames = __toESM(require("classnames")); +var import_rc_motion = __toESM(require("rc-motion")); +var import_render = require("rc-util/lib/React/render"); +var import_raf = __toESM(require("rc-util/lib/raf")); +var React = __toESM(require("react")); +var import_util = require("./util"); +var import_interface = require("./interface"); +function validateNum(value) { + return Number.isNaN(value) ? 0 : value; +} +var WaveEffect = (props) => { + const { className, target, component } = props; + const divRef = React.useRef(null); + const [color, setWaveColor] = React.useState(null); + const [borderRadius, setBorderRadius] = React.useState([]); + const [left, setLeft] = React.useState(0); + const [top, setTop] = React.useState(0); + const [width, setWidth] = React.useState(0); + const [height, setHeight] = React.useState(0); + const [enabled, setEnabled] = React.useState(false); + const waveStyle = { + left, + top, + width, + height, + borderRadius: borderRadius.map((radius) => `${radius}px`).join(" ") + }; + if (color) { + waveStyle["--wave-color"] = color; + } + function syncPos() { + const nodeStyle = getComputedStyle(target); + setWaveColor((0, import_util.getTargetWaveColor)(target)); + const isStatic = nodeStyle.position === "static"; + const { borderLeftWidth, borderTopWidth } = nodeStyle; + setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth))); + setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth))); + setWidth(target.offsetWidth); + setHeight(target.offsetHeight); + const { + borderTopLeftRadius, + borderTopRightRadius, + borderBottomLeftRadius, + borderBottomRightRadius + } = nodeStyle; + setBorderRadius( + [ + borderTopLeftRadius, + borderTopRightRadius, + borderBottomRightRadius, + borderBottomLeftRadius + ].map((radius) => validateNum(parseFloat(radius))) + ); + } + React.useEffect(() => { + if (target) { + const id = (0, import_raf.default)(() => { + syncPos(); + setEnabled(true); + }); + let resizeObserver; + if (typeof ResizeObserver !== "undefined") { + resizeObserver = new ResizeObserver(syncPos); + resizeObserver.observe(target); + } + return () => { + import_raf.default.cancel(id); + resizeObserver == null ? void 0 : resizeObserver.disconnect(); + }; + } + }, []); + if (!enabled) { + return null; + } + const isSmallComponent = (component === "Checkbox" || component === "Radio") && (target == null ? void 0 : target.classList.contains(import_interface.TARGET_CLS)); + return /* @__PURE__ */ React.createElement( + import_rc_motion.default, + { + visible: true, + motionAppear: true, + motionName: "wave-motion", + motionDeadline: 5e3, + onAppearEnd: (_, event) => { + var _a; + if (event.deadline || event.propertyName === "opacity") { + const holder = (_a = divRef.current) == null ? void 0 : _a.parentElement; + (0, import_render.unmount)(holder).then(() => { + holder == null ? void 0 : holder.remove(); + }); + } + return false; + } + }, + ({ className: motionClassName }) => /* @__PURE__ */ React.createElement( + "div", + { + ref: divRef, + className: (0, import_classnames.default)( + className, + { + "wave-quick": isSmallComponent + }, + motionClassName + ), + style: waveStyle + } + ) + ); +}; +var showWaveEffect = (target, info) => { + var _a; + const { component } = info; + if (component === "Checkbox" && !((_a = target.querySelector("input")) == null ? void 0 : _a.checked)) { + return; + } + const holder = document.createElement("div"); + holder.style.position = "absolute"; + holder.style.left = "0px"; + holder.style.top = "0px"; + target == null ? void 0 : target.insertBefore(holder, target == null ? void 0 : target.firstChild); + (0, import_render.render)(/* @__PURE__ */ React.createElement(WaveEffect, { ...info, target }), holder); +}; +var WaveEffect_default = showWaveEffect; diff --git a/packages/meta/lib/_util/wave/index.d.ts b/packages/meta/lib/_util/wave/index.d.ts new file mode 100644 index 0000000..e53b2e7 --- /dev/null +++ b/packages/meta/lib/_util/wave/index.d.ts @@ -0,0 +1,8 @@ +import React from 'react'; +export interface WaveProps { + disabled?: boolean; + children?: React.ReactNode; + component?: string; +} +declare const Wave: React.FC; +export default Wave; diff --git a/packages/meta/lib/_util/wave/index.js b/packages/meta/lib/_util/wave/index.js new file mode 100644 index 0000000..d26c96c --- /dev/null +++ b/packages/meta/lib/_util/wave/index.js @@ -0,0 +1,76 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/wave/index.ts +var wave_exports = {}; +__export(wave_exports, { + default: () => wave_default +}); +module.exports = __toCommonJS(wave_exports); +var import_classnames = __toESM(require("classnames")); +var import_ref = require("rc-util/lib/ref"); +var import_isVisible = __toESM(require("rc-util/lib/Dom/isVisible")); +var import_react = __toESM(require("react")); +var import_config_provider = require("../../config-provider"); +var import_reactNode = require("../reactNode"); +var import_style = __toESM(require("./style")); +var import_useWave = __toESM(require("./useWave")); +var Wave = (props) => { + const { children, disabled, component } = props; + const { getPrefixCls } = (0, import_react.useContext)(import_config_provider.ConfigContext); + const containerRef = (0, import_react.useRef)(null); + const prefixCls = getPrefixCls("wave"); + const [, hashId] = (0, import_style.default)(prefixCls); + const showWave = (0, import_useWave.default)(containerRef, (0, import_classnames.default)(prefixCls, hashId), component); + import_react.default.useEffect(() => { + const node = containerRef.current; + if (!node || node.nodeType !== 1 || disabled) { + return; + } + const onClick = (e) => { + if (!(0, import_isVisible.default)(e.target) || // No need wave + !node.getAttribute || node.getAttribute("disabled") || node.disabled || node.className.includes("disabled") || node.className.includes("-leave")) { + return; + } + showWave(e); + }; + node.addEventListener("click", onClick, true); + return () => { + node.removeEventListener("click", onClick, true); + }; + }, [disabled]); + if (!import_react.default.isValidElement(children)) { + return children ?? null; + } + const ref = (0, import_ref.supportRef)(children) ? (0, import_ref.composeRef)(children.ref, containerRef) : containerRef; + return (0, import_reactNode.cloneElement)(children, { ref }); +}; +if (process.env.NODE_ENV !== "production") { + Wave.displayName = "Wave"; +} +var wave_default = Wave; diff --git a/packages/meta/lib/_util/wave/interface.d.ts b/packages/meta/lib/_util/wave/interface.d.ts new file mode 100644 index 0000000..2431aec --- /dev/null +++ b/packages/meta/lib/_util/wave/interface.d.ts @@ -0,0 +1,10 @@ +import type { GlobalToken } from '../../theme'; +export declare const TARGET_CLS = "ant-wave-target"; +export type ShowWaveEffect = (element: HTMLElement, info: { + className: string; + token: GlobalToken; + component?: string; + event: MouseEvent; + hashId: string; +}) => void; +export type ShowWave = (event: MouseEvent) => void; diff --git a/packages/constants/lib/camera/index.js b/packages/meta/lib/_util/wave/interface.js similarity index 80% rename from packages/constants/lib/camera/index.js rename to packages/meta/lib/_util/wave/interface.js index 19931cc..a83dd84 100644 --- a/packages/constants/lib/camera/index.js +++ b/packages/meta/lib/_util/wave/interface.js @@ -16,14 +16,14 @@ var __copyProps = (to, from, except, desc) => { }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -// src/camera/index.ts -var camera_exports = {}; -__export(camera_exports, { - TYPE: () => TYPE +// src/_util/wave/interface.ts +var interface_exports = {}; +__export(interface_exports, { + TARGET_CLS: () => TARGET_CLS }); -module.exports = __toCommonJS(camera_exports); -var TYPE = ""; +module.exports = __toCommonJS(interface_exports); +var TARGET_CLS = "ant-wave-target"; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { - TYPE + TARGET_CLS }); diff --git a/packages/meta/lib/_util/wave/style.d.ts b/packages/meta/lib/_util/wave/style.d.ts new file mode 100644 index 0000000..afdaedb --- /dev/null +++ b/packages/meta/lib/_util/wave/style.d.ts @@ -0,0 +1,7 @@ +import type { FullToken } from '../../theme/internal'; +export interface ComponentToken { +} +export interface WaveToken extends FullToken<'Wave'> { +} +declare const _default: (prefixCls: string) => import("../../theme/interface").UseComponentStyleResult; +export default _default; diff --git a/packages/meta/lib/_util/wave/style.js b/packages/meta/lib/_util/wave/style.js new file mode 100644 index 0000000..eacd24d --- /dev/null +++ b/packages/meta/lib/_util/wave/style.js @@ -0,0 +1,57 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/wave/style.ts +var style_exports = {}; +__export(style_exports, { + default: () => style_default +}); +module.exports = __toCommonJS(style_exports); +var import_internal = require("../../theme/internal"); +var genWaveStyle = (token) => { + const { componentCls, colorPrimary } = token; + return { + [componentCls]: { + position: "absolute", + background: "transparent", + pointerEvents: "none", + boxSizing: "border-box", + color: `var(--wave-color, ${colorPrimary})`, + boxShadow: `0 0 0 0 currentcolor`, + opacity: 0.2, + // =================== Motion =================== + "&.wave-motion-appear": { + transition: [ + `box-shadow 0.4s ${token.motionEaseOutCirc}`, + `opacity 2s ${token.motionEaseOutCirc}` + ].join(","), + "&-active": { + boxShadow: `0 0 0 6px currentcolor`, + opacity: 0 + }, + "&.wave-quick": { + transition: [ + `box-shadow 0.3s ${token.motionEaseInOut}`, + `opacity 0.35s ${token.motionEaseInOut}` + ].join(",") + } + } + } + }; +}; +var style_default = (0, import_internal.genComponentStyleHook)("Wave", (token) => [genWaveStyle(token)]); diff --git a/packages/meta/lib/_util/wave/useWave.d.ts b/packages/meta/lib/_util/wave/useWave.d.ts new file mode 100644 index 0000000..312e512 --- /dev/null +++ b/packages/meta/lib/_util/wave/useWave.d.ts @@ -0,0 +1,3 @@ +import * as React from 'react'; +import { type ShowWave } from './interface'; +export default function useWave(nodeRef: React.RefObject, className: string, component?: string): ShowWave; diff --git a/packages/meta/lib/_util/wave/useWave.js b/packages/meta/lib/_util/wave/useWave.js new file mode 100644 index 0000000..142c3ad --- /dev/null +++ b/packages/meta/lib/_util/wave/useWave.js @@ -0,0 +1,62 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/wave/useWave.ts +var useWave_exports = {}; +__export(useWave_exports, { + default: () => useWave +}); +module.exports = __toCommonJS(useWave_exports); +var React = __toESM(require("react")); +var import_rc_util = require("rc-util"); +var import_raf = __toESM(require("rc-util/lib/raf")); +var import_WaveEffect = __toESM(require("./WaveEffect")); +var import_config_provider = require("../../config-provider"); +var import_useToken = __toESM(require("../../theme/useToken")); +var import_interface = require("./interface"); +function useWave(nodeRef, className, component) { + const { wave } = React.useContext(import_config_provider.ConfigContext); + const [, token, hashId] = (0, import_useToken.default)(); + const showWave = (0, import_rc_util.useEvent)((event) => { + const node = nodeRef.current; + if ((wave == null ? void 0 : wave.disabled) || !node) { + return; + } + const targetNode = node.querySelector(`.${import_interface.TARGET_CLS}`) || node; + const { showEffect } = wave || {}; + (showEffect || import_WaveEffect.default)(targetNode, { className, token, component, event, hashId }); + }); + const rafId = React.useRef(); + const showDebounceWave = (event) => { + import_raf.default.cancel(rafId.current); + rafId.current = (0, import_raf.default)(() => { + showWave(event); + }); + }; + return showDebounceWave; +} diff --git a/packages/meta/lib/_util/wave/util.d.ts b/packages/meta/lib/_util/wave/util.d.ts new file mode 100644 index 0000000..f2c1ead --- /dev/null +++ b/packages/meta/lib/_util/wave/util.d.ts @@ -0,0 +1,3 @@ +export declare function isNotGrey(color: string): boolean; +export declare function isValidWaveColor(color: string): boolean | ""; +export declare function getTargetWaveColor(node: HTMLElement): string | null; diff --git a/packages/meta/lib/_util/wave/util.js b/packages/meta/lib/_util/wave/util.js new file mode 100644 index 0000000..66b5324 --- /dev/null +++ b/packages/meta/lib/_util/wave/util.js @@ -0,0 +1,56 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/wave/util.ts +var util_exports = {}; +__export(util_exports, { + getTargetWaveColor: () => getTargetWaveColor, + isNotGrey: () => isNotGrey, + isValidWaveColor: () => isValidWaveColor +}); +module.exports = __toCommonJS(util_exports); +function isNotGrey(color) { + const match = (color || "").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/); + if (match && match[1] && match[2] && match[3]) { + return !(match[1] === match[2] && match[2] === match[3]); + } + return true; +} +function isValidWaveColor(color) { + return color && color !== "#fff" && color !== "#ffffff" && color !== "rgb(255, 255, 255)" && color !== "rgba(255, 255, 255, 1)" && isNotGrey(color) && !/rgba\((?:\d*, ){3}0\)/.test(color) && // any transparent rgba color + color !== "transparent"; +} +function getTargetWaveColor(node) { + const { borderTopColor, borderColor, backgroundColor } = getComputedStyle(node); + if (isValidWaveColor(borderTopColor)) { + return borderTopColor; + } + if (isValidWaveColor(borderColor)) { + return borderColor; + } + if (isValidWaveColor(backgroundColor)) { + return backgroundColor; + } + return null; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getTargetWaveColor, + isNotGrey, + isValidWaveColor +}); diff --git a/packages/meta/lib/_util/zindexContext.d.ts b/packages/meta/lib/_util/zindexContext.d.ts new file mode 100644 index 0000000..e5c11be --- /dev/null +++ b/packages/meta/lib/_util/zindexContext.d.ts @@ -0,0 +1,3 @@ +import React from 'react'; +declare const zIndexContext: React.Context; +export default zIndexContext; diff --git a/packages/meta/lib/_util/zindexContext.js b/packages/meta/lib/_util/zindexContext.js new file mode 100644 index 0000000..2ce2106 --- /dev/null +++ b/packages/meta/lib/_util/zindexContext.js @@ -0,0 +1,40 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/_util/zindexContext.ts +var zindexContext_exports = {}; +__export(zindexContext_exports, { + default: () => zindexContext_default +}); +module.exports = __toCommonJS(zindexContext_exports); +var import_react = __toESM(require("react")); +var zIndexContext = import_react.default.createContext(void 0); +if (process.env.NODE_ENV !== "production") { + zIndexContext.displayName = "zIndexContext"; +} +var zindexContext_default = zIndexContext; diff --git a/packages/meta/lib/theme/internal.d.ts b/packages/meta/lib/theme/internal.d.ts new file mode 100644 index 0000000..67c4f77 --- /dev/null +++ b/packages/meta/lib/theme/internal.d.ts @@ -0,0 +1,13 @@ +import { useStyleRegister } from '@ant-design/cssinjs'; +import type { AliasToken, GenerateStyle, PresetColorKey, PresetColorType, SeedToken, UseComponentStyleResult } from './interface'; +import { PresetColors } from './interface'; +import useToken from './useToken'; +import type { FullToken, GetDefaultToken } from './util/genComponentStyleHook'; +import genComponentStyleHook, { genSubStyleComponent, genStyleHooks } from './util/genComponentStyleHook'; +import genPresetColor from './util/genPresetColor'; +import statisticToken, { merge as mergeToken } from './util/statistic'; +import useResetIconStyle from './util/useResetIconStyle'; +import calc from './util/calc'; +export { DesignTokenContext, defaultConfig } from './context'; +export { PresetColors, genComponentStyleHook, genSubStyleComponent, genPresetColor, genStyleHooks, mergeToken, statisticToken, calc, useResetIconStyle, useStyleRegister, useToken, }; +export type { AliasToken, AliasToken as DerivativeToken, FullToken, GenerateStyle, PresetColorKey, PresetColorType, SeedToken, UseComponentStyleResult, GetDefaultToken, }; diff --git a/packages/meta/lib/theme/internal.js b/packages/meta/lib/theme/internal.js new file mode 100644 index 0000000..92f8c77 --- /dev/null +++ b/packages/meta/lib/theme/internal.js @@ -0,0 +1,71 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/internal.ts +var internal_exports = {}; +__export(internal_exports, { + DesignTokenContext: () => import_context.DesignTokenContext, + PresetColors: () => import_interface.PresetColors, + calc: () => import_calc.default, + defaultConfig: () => import_context.defaultConfig, + genComponentStyleHook: () => import_genComponentStyleHook.default, + genPresetColor: () => import_genPresetColor.default, + genStyleHooks: () => import_genComponentStyleHook.genStyleHooks, + genSubStyleComponent: () => import_genComponentStyleHook.genSubStyleComponent, + mergeToken: () => import_statistic.merge, + statisticToken: () => import_statistic.default, + useResetIconStyle: () => import_useResetIconStyle.default, + useStyleRegister: () => import_cssinjs.useStyleRegister, + useToken: () => import_useToken.default +}); +module.exports = __toCommonJS(internal_exports); +var import_cssinjs = require("@ant-design/cssinjs"); +var import_interface = require("./interface"); +var import_useToken = __toESM(require("./useToken")); +var import_genComponentStyleHook = __toESM(require("./util/genComponentStyleHook")); +var import_genPresetColor = __toESM(require("./util/genPresetColor")); +var import_statistic = __toESM(require("./util/statistic")); +var import_useResetIconStyle = __toESM(require("./util/useResetIconStyle")); +var import_calc = __toESM(require("./util/calc")); +var import_context = require("./context"); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + DesignTokenContext, + PresetColors, + calc, + defaultConfig, + genComponentStyleHook, + genPresetColor, + genStyleHooks, + genSubStyleComponent, + mergeToken, + statisticToken, + useResetIconStyle, + useStyleRegister, + useToken +}); diff --git a/packages/meta/lib/theme/themes/ColorMap.d.ts b/packages/meta/lib/theme/themes/ColorMap.d.ts new file mode 100644 index 0000000..be0dba1 --- /dev/null +++ b/packages/meta/lib/theme/themes/ColorMap.d.ts @@ -0,0 +1,15 @@ +import type { ColorNeutralMapToken } from '../interface'; +export interface ColorMap { + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; +} +export type GenerateColorMap = (baseColor: string) => ColorMap; +export type GenerateNeutralColorMap = (bgBaseColor: string, textBaseColor: string) => ColorNeutralMapToken; diff --git a/packages/meta/lib/theme/themes/ColorMap.js b/packages/meta/lib/theme/themes/ColorMap.js new file mode 100644 index 0000000..b56de09 --- /dev/null +++ b/packages/meta/lib/theme/themes/ColorMap.js @@ -0,0 +1,17 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/ColorMap.ts +var ColorMap_exports = {}; +module.exports = __toCommonJS(ColorMap_exports); diff --git a/packages/meta/lib/theme/themes/compact/genCompactSizeMapToken.d.ts b/packages/meta/lib/theme/themes/compact/genCompactSizeMapToken.d.ts new file mode 100644 index 0000000..87332e7 --- /dev/null +++ b/packages/meta/lib/theme/themes/compact/genCompactSizeMapToken.d.ts @@ -0,0 +1,2 @@ +import type { SeedToken, SizeMapToken } from '../../interface'; +export default function genSizeMapToken(token: SeedToken): SizeMapToken; diff --git a/packages/meta/lib/theme/themes/compact/genCompactSizeMapToken.js b/packages/meta/lib/theme/themes/compact/genCompactSizeMapToken.js new file mode 100644 index 0000000..fef3a77 --- /dev/null +++ b/packages/meta/lib/theme/themes/compact/genCompactSizeMapToken.js @@ -0,0 +1,39 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/compact/genCompactSizeMapToken.ts +var genCompactSizeMapToken_exports = {}; +__export(genCompactSizeMapToken_exports, { + default: () => genSizeMapToken +}); +module.exports = __toCommonJS(genCompactSizeMapToken_exports); +function genSizeMapToken(token) { + const { sizeUnit, sizeStep } = token; + const compactSizeStep = sizeStep - 2; + return { + sizeXXL: sizeUnit * (compactSizeStep + 10), + sizeXL: sizeUnit * (compactSizeStep + 6), + sizeLG: sizeUnit * (compactSizeStep + 2), + sizeMD: sizeUnit * (compactSizeStep + 2), + sizeMS: sizeUnit * (compactSizeStep + 1), + size: sizeUnit * compactSizeStep, + sizeSM: sizeUnit * compactSizeStep, + sizeXS: sizeUnit * (compactSizeStep - 1), + sizeXXS: sizeUnit * (compactSizeStep - 1) + }; +} diff --git a/packages/meta/lib/theme/themes/compact/index.d.ts b/packages/meta/lib/theme/themes/compact/index.d.ts new file mode 100644 index 0000000..d5901cb --- /dev/null +++ b/packages/meta/lib/theme/themes/compact/index.d.ts @@ -0,0 +1,4 @@ +import type { DerivativeFunc } from '@ant-design/cssinjs'; +import type { MapToken, SeedToken } from '../../interface'; +declare const derivative: DerivativeFunc; +export default derivative; diff --git a/packages/meta/lib/theme/themes/compact/index.js b/packages/meta/lib/theme/themes/compact/index.js new file mode 100644 index 0000000..55c93d6 --- /dev/null +++ b/packages/meta/lib/theme/themes/compact/index.js @@ -0,0 +1,53 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/compact/index.ts +var compact_exports = {}; +__export(compact_exports, { + default: () => compact_default +}); +module.exports = __toCommonJS(compact_exports); +var import_genControlHeight = __toESM(require("../shared/genControlHeight")); +var import_default = __toESM(require("../default")); +var import_genCompactSizeMapToken = __toESM(require("./genCompactSizeMapToken")); +var import_genFontMapToken = __toESM(require("../shared/genFontMapToken")); +var derivative = (token, mapToken) => { + const mergedMapToken = mapToken ?? (0, import_default.default)(token); + const fontSize = mergedMapToken.fontSizeSM; + const controlHeight = mergedMapToken.controlHeight - 4; + return { + ...mergedMapToken, + ...(0, import_genCompactSizeMapToken.default)(mapToken ?? token), + // font + ...(0, import_genFontMapToken.default)(fontSize), + // controlHeight + controlHeight, + ...(0, import_genControlHeight.default)({ ...mergedMapToken, controlHeight }) + }; +}; +var compact_default = derivative; diff --git a/packages/meta/lib/theme/themes/dark/colorAlgorithm.d.ts b/packages/meta/lib/theme/themes/dark/colorAlgorithm.d.ts new file mode 100644 index 0000000..e1b0d62 --- /dev/null +++ b/packages/meta/lib/theme/themes/dark/colorAlgorithm.d.ts @@ -0,0 +1,2 @@ +export declare const getAlphaColor: (baseColor: string, alpha: number) => string; +export declare const getSolidColor: (baseColor: string, brightness: number) => string; diff --git a/packages/meta/lib/theme/themes/dark/colorAlgorithm.js b/packages/meta/lib/theme/themes/dark/colorAlgorithm.js new file mode 100644 index 0000000..c550320 --- /dev/null +++ b/packages/meta/lib/theme/themes/dark/colorAlgorithm.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/dark/colorAlgorithm.ts +var colorAlgorithm_exports = {}; +__export(colorAlgorithm_exports, { + getAlphaColor: () => getAlphaColor, + getSolidColor: () => getSolidColor +}); +module.exports = __toCommonJS(colorAlgorithm_exports); +var import_tinycolor = require("@ctrl/tinycolor"); +var getAlphaColor = (baseColor, alpha) => new import_tinycolor.TinyColor(baseColor).setAlpha(alpha).toRgbString(); +var getSolidColor = (baseColor, brightness) => { + const instance = new import_tinycolor.TinyColor(baseColor); + return instance.lighten(brightness).toHexString(); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getAlphaColor, + getSolidColor +}); diff --git a/packages/meta/lib/theme/themes/dark/colors.d.ts b/packages/meta/lib/theme/themes/dark/colors.d.ts new file mode 100644 index 0000000..80ddcce --- /dev/null +++ b/packages/meta/lib/theme/themes/dark/colors.d.ts @@ -0,0 +1,3 @@ +import type { GenerateColorMap, GenerateNeutralColorMap } from '../ColorMap'; +export declare const generateColorPalettes: GenerateColorMap; +export declare const generateNeutralColorPalettes: GenerateNeutralColorMap; diff --git a/packages/meta/lib/theme/themes/dark/colors.js b/packages/meta/lib/theme/themes/dark/colors.js new file mode 100644 index 0000000..24c081b --- /dev/null +++ b/packages/meta/lib/theme/themes/dark/colors.js @@ -0,0 +1,73 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/dark/colors.ts +var colors_exports = {}; +__export(colors_exports, { + generateColorPalettes: () => generateColorPalettes, + generateNeutralColorPalettes: () => generateNeutralColorPalettes +}); +module.exports = __toCommonJS(colors_exports); +var import_colors = require("@ant-design/colors"); +var import_colorAlgorithm = require("./colorAlgorithm"); +var generateColorPalettes = (baseColor) => { + const colors = (0, import_colors.generate)(baseColor, { theme: "dark" }); + return { + 1: colors[0], + 2: colors[1], + 3: colors[2], + 4: colors[3], + 5: colors[6], + 6: colors[5], + 7: colors[4], + 8: colors[6], + 9: colors[5], + 10: colors[4] + // 8: colors[9], + // 9: colors[8], + // 10: colors[7], + }; +}; +var generateNeutralColorPalettes = (bgBaseColor, textBaseColor) => { + const colorBgBase = bgBaseColor || "#000"; + const colorTextBase = textBaseColor || "#fff"; + return { + colorBgBase, + colorTextBase, + colorText: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.85), + colorTextSecondary: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.65), + colorTextTertiary: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.45), + colorTextQuaternary: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.25), + colorFill: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.18), + colorFillSecondary: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.12), + colorFillTertiary: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.08), + colorFillQuaternary: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.04), + colorBgElevated: (0, import_colorAlgorithm.getSolidColor)(colorBgBase, 12), + colorBgContainer: (0, import_colorAlgorithm.getSolidColor)(colorBgBase, 8), + colorBgLayout: (0, import_colorAlgorithm.getSolidColor)(colorBgBase, 0), + colorBgSpotlight: (0, import_colorAlgorithm.getSolidColor)(colorBgBase, 26), + colorBgBlur: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.04), + colorBorder: (0, import_colorAlgorithm.getSolidColor)(colorBgBase, 26), + colorBorderSecondary: (0, import_colorAlgorithm.getSolidColor)(colorBgBase, 19) + }; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + generateColorPalettes, + generateNeutralColorPalettes +}); diff --git a/packages/meta/lib/theme/themes/dark/index.d.ts b/packages/meta/lib/theme/themes/dark/index.d.ts new file mode 100644 index 0000000..d5901cb --- /dev/null +++ b/packages/meta/lib/theme/themes/dark/index.d.ts @@ -0,0 +1,4 @@ +import type { DerivativeFunc } from '@ant-design/cssinjs'; +import type { MapToken, SeedToken } from '../../interface'; +declare const derivative: DerivativeFunc; +export default derivative; diff --git a/packages/meta/lib/theme/themes/dark/index.js b/packages/meta/lib/theme/themes/dark/index.js new file mode 100644 index 0000000..3bafb34 --- /dev/null +++ b/packages/meta/lib/theme/themes/dark/index.js @@ -0,0 +1,70 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/dark/index.ts +var dark_exports = {}; +__export(dark_exports, { + default: () => dark_default +}); +module.exports = __toCommonJS(dark_exports); +var import_colors = require("@ant-design/colors"); +var import_seed = require("../seed"); +var import_genColorMapToken = __toESM(require("../shared/genColorMapToken")); +var import_colors2 = require("./colors"); +var import_default = __toESM(require("../default")); +var derivative = (token, mapToken) => { + const colorPalettes = Object.keys(import_seed.defaultPresetColors).map((colorKey) => { + const colors = (0, import_colors.generate)(token[colorKey], { theme: "dark" }); + return new Array(10).fill(1).reduce((prev, _, i) => { + prev[`${colorKey}-${i + 1}`] = colors[i]; + prev[`${colorKey}${i + 1}`] = colors[i]; + return prev; + }, {}); + }).reduce( + (prev, cur) => { + prev = { + ...prev, + ...cur + }; + return prev; + }, + {} + ); + const mergedMapToken = mapToken ?? (0, import_default.default)(token); + return { + ...mergedMapToken, + // Dark tokens + ...colorPalettes, + // Colors + ...(0, import_genColorMapToken.default)(token, { + generateColorPalettes: import_colors2.generateColorPalettes, + generateNeutralColorPalettes: import_colors2.generateNeutralColorPalettes + }) + }; +}; +var dark_default = derivative; diff --git a/packages/meta/lib/theme/themes/default/colorAlgorithm.d.ts b/packages/meta/lib/theme/themes/default/colorAlgorithm.d.ts new file mode 100644 index 0000000..e1b0d62 --- /dev/null +++ b/packages/meta/lib/theme/themes/default/colorAlgorithm.d.ts @@ -0,0 +1,2 @@ +export declare const getAlphaColor: (baseColor: string, alpha: number) => string; +export declare const getSolidColor: (baseColor: string, brightness: number) => string; diff --git a/packages/meta/lib/theme/themes/default/colorAlgorithm.js b/packages/meta/lib/theme/themes/default/colorAlgorithm.js new file mode 100644 index 0000000..18fabc8 --- /dev/null +++ b/packages/meta/lib/theme/themes/default/colorAlgorithm.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/default/colorAlgorithm.ts +var colorAlgorithm_exports = {}; +__export(colorAlgorithm_exports, { + getAlphaColor: () => getAlphaColor, + getSolidColor: () => getSolidColor +}); +module.exports = __toCommonJS(colorAlgorithm_exports); +var import_tinycolor = require("@ctrl/tinycolor"); +var getAlphaColor = (baseColor, alpha) => new import_tinycolor.TinyColor(baseColor).setAlpha(alpha).toRgbString(); +var getSolidColor = (baseColor, brightness) => { + const instance = new import_tinycolor.TinyColor(baseColor); + return instance.darken(brightness).toHexString(); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getAlphaColor, + getSolidColor +}); diff --git a/packages/meta/lib/theme/themes/default/colors.d.ts b/packages/meta/lib/theme/themes/default/colors.d.ts new file mode 100644 index 0000000..80ddcce --- /dev/null +++ b/packages/meta/lib/theme/themes/default/colors.d.ts @@ -0,0 +1,3 @@ +import type { GenerateColorMap, GenerateNeutralColorMap } from '../ColorMap'; +export declare const generateColorPalettes: GenerateColorMap; +export declare const generateNeutralColorPalettes: GenerateNeutralColorMap; diff --git a/packages/meta/lib/theme/themes/default/colors.js b/packages/meta/lib/theme/themes/default/colors.js new file mode 100644 index 0000000..113efd3 --- /dev/null +++ b/packages/meta/lib/theme/themes/default/colors.js @@ -0,0 +1,73 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/default/colors.ts +var colors_exports = {}; +__export(colors_exports, { + generateColorPalettes: () => generateColorPalettes, + generateNeutralColorPalettes: () => generateNeutralColorPalettes +}); +module.exports = __toCommonJS(colors_exports); +var import_colors = require("@ant-design/colors"); +var import_colorAlgorithm = require("./colorAlgorithm"); +var generateColorPalettes = (baseColor) => { + const colors = (0, import_colors.generate)(baseColor); + return { + 1: colors[0], + 2: colors[1], + 3: colors[2], + 4: colors[3], + 5: colors[4], + 6: colors[5], + 7: colors[6], + 8: colors[4], + 9: colors[5], + 10: colors[6] + // 8: colors[7], + // 9: colors[8], + // 10: colors[9], + }; +}; +var generateNeutralColorPalettes = (bgBaseColor, textBaseColor) => { + const colorBgBase = bgBaseColor || "#fff"; + const colorTextBase = textBaseColor || "#000"; + return { + colorBgBase, + colorTextBase, + colorText: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.88), + colorTextSecondary: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.65), + colorTextTertiary: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.45), + colorTextQuaternary: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.25), + colorFill: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.15), + colorFillSecondary: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.06), + colorFillTertiary: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.04), + colorFillQuaternary: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.02), + colorBgLayout: (0, import_colorAlgorithm.getSolidColor)(colorBgBase, 4), + colorBgContainer: (0, import_colorAlgorithm.getSolidColor)(colorBgBase, 0), + colorBgElevated: (0, import_colorAlgorithm.getSolidColor)(colorBgBase, 0), + colorBgSpotlight: (0, import_colorAlgorithm.getAlphaColor)(colorTextBase, 0.85), + colorBgBlur: "transparent", + colorBorder: (0, import_colorAlgorithm.getSolidColor)(colorBgBase, 15), + colorBorderSecondary: (0, import_colorAlgorithm.getSolidColor)(colorBgBase, 6) + }; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + generateColorPalettes, + generateNeutralColorPalettes +}); diff --git a/packages/meta/lib/theme/themes/default/index.d.ts b/packages/meta/lib/theme/themes/default/index.d.ts new file mode 100644 index 0000000..b11222d --- /dev/null +++ b/packages/meta/lib/theme/themes/default/index.d.ts @@ -0,0 +1,2 @@ +import type { MapToken, SeedToken } from '../../interface'; +export default function derivative(token: SeedToken): MapToken; diff --git a/packages/meta/lib/theme/themes/default/index.js b/packages/meta/lib/theme/themes/default/index.js new file mode 100644 index 0000000..e384325 --- /dev/null +++ b/packages/meta/lib/theme/themes/default/index.js @@ -0,0 +1,78 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/default/index.ts +var default_exports = {}; +__export(default_exports, { + default: () => derivative +}); +module.exports = __toCommonJS(default_exports); +var import_colors = require("@ant-design/colors"); +var import_genControlHeight = __toESM(require("../shared/genControlHeight")); +var import_genSizeMapToken = __toESM(require("../shared/genSizeMapToken")); +var import_seed = require("../seed"); +var import_genColorMapToken = __toESM(require("../shared/genColorMapToken")); +var import_genCommonMapToken = __toESM(require("../shared/genCommonMapToken")); +var import_colors2 = require("./colors"); +var import_genFontMapToken = __toESM(require("../shared/genFontMapToken")); +function derivative(token) { + const colorPalettes = Object.keys(import_seed.defaultPresetColors).map((colorKey) => { + const colors = (0, import_colors.generate)(token[colorKey]); + return new Array(10).fill(1).reduce((prev, _, i) => { + prev[`${colorKey}-${i + 1}`] = colors[i]; + prev[`${colorKey}${i + 1}`] = colors[i]; + return prev; + }, {}); + }).reduce( + (prev, cur) => { + prev = { + ...prev, + ...cur + }; + return prev; + }, + {} + ); + return { + ...token, + ...colorPalettes, + // Colors + ...(0, import_genColorMapToken.default)(token, { + generateColorPalettes: import_colors2.generateColorPalettes, + generateNeutralColorPalettes: import_colors2.generateNeutralColorPalettes + }), + // Font + ...(0, import_genFontMapToken.default)(token.fontSize), + // Size + ...(0, import_genSizeMapToken.default)(token), + // Height + ...(0, import_genControlHeight.default)(token), + // Others + ...(0, import_genCommonMapToken.default)(token) + }; +} diff --git a/packages/meta/lib/theme/themes/seed.d.ts b/packages/meta/lib/theme/themes/seed.d.ts new file mode 100644 index 0000000..e0ac654 --- /dev/null +++ b/packages/meta/lib/theme/themes/seed.d.ts @@ -0,0 +1,4 @@ +import type { PresetColorType, SeedToken } from '../internal'; +export declare const defaultPresetColors: PresetColorType; +declare const seedToken: SeedToken; +export default seedToken; diff --git a/packages/meta/lib/theme/themes/seed.js b/packages/meta/lib/theme/themes/seed.js new file mode 100644 index 0000000..fcf3ac1 --- /dev/null +++ b/packages/meta/lib/theme/themes/seed.js @@ -0,0 +1,95 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/seed.ts +var seed_exports = {}; +__export(seed_exports, { + default: () => seed_default, + defaultPresetColors: () => defaultPresetColors +}); +module.exports = __toCommonJS(seed_exports); +var defaultPresetColors = { + blue: "#0099FF", + purple: "#722ED1", + cyan: "#13C2C2", + green: "#52C41A", + magenta: "#EB2F96", + pink: "#eb2f96", + red: "#FF4D4F", + orange: "#FA8C16", + yellow: "#FADB14", + volcano: "#FA541C", + geekblue: "#0099FF", + gold: "#FAAD14", + lime: "#A0D911" +}; +var seedToken = { + // preset color palettes + ...defaultPresetColors, + // Color + colorPrimary: "#0099FF", + colorSuccess: "#52C41A", + colorWarning: "#FAAD14", + colorError: "#FF4D4F", + colorInfo: "#0099FF", + colorLink: "", + colorTextBase: "", + colorBgBase: "", + // Font + fontFamily: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, +'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', +'Noto Color Emoji'`, + fontFamilyCode: `'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace`, + fontSize: 14, + // Line + lineWidth: 1, + lineType: "solid", + // Motion + motionUnit: 0.1, + motionBase: 0, + motionEaseOutCirc: "cubic-bezier(0.08, 0.82, 0.17, 1)", + motionEaseInOutCirc: "cubic-bezier(0.78, 0.14, 0.15, 0.86)", + motionEaseOut: "cubic-bezier(0.215, 0.61, 0.355, 1)", + motionEaseInOut: "cubic-bezier(0.645, 0.045, 0.355, 1)", + motionEaseOutBack: "cubic-bezier(0.12, 0.4, 0.29, 1.46)", + motionEaseInBack: "cubic-bezier(0.71, -0.46, 0.88, 0.6)", + motionEaseInQuint: "cubic-bezier(0.755, 0.05, 0.855, 0.06)", + motionEaseOutQuint: "cubic-bezier(0.23, 1, 0.32, 1)", + // Radius + borderRadius: 6, + // Size + sizeUnit: 4, + sizeStep: 4, + sizePopupArrow: 16, + // Control Base + controlHeight: 32, + // zIndex + zIndexBase: 0, + zIndexPopupBase: 1e3, + // Image + opacityImage: 1, + // Wireframe + wireframe: false, + // Motion + motion: true +}; +var seed_default = seedToken; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + defaultPresetColors +}); diff --git a/packages/meta/lib/theme/themes/shared/genColorMapToken.d.ts b/packages/meta/lib/theme/themes/shared/genColorMapToken.d.ts new file mode 100644 index 0000000..9f038ea --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genColorMapToken.d.ts @@ -0,0 +1,8 @@ +import type { ColorMapToken, SeedToken } from '../../interface'; +import type { GenerateColorMap, GenerateNeutralColorMap } from '../ColorMap'; +interface PaletteGenerators { + generateColorPalettes: GenerateColorMap; + generateNeutralColorPalettes: GenerateNeutralColorMap; +} +export default function genColorMapToken(seed: SeedToken, { generateColorPalettes, generateNeutralColorPalettes }: PaletteGenerators): ColorMapToken; +export {}; diff --git a/packages/meta/lib/theme/themes/shared/genColorMapToken.js b/packages/meta/lib/theme/themes/shared/genColorMapToken.js new file mode 100644 index 0000000..eda9ec4 --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genColorMapToken.js @@ -0,0 +1,102 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/shared/genColorMapToken.ts +var genColorMapToken_exports = {}; +__export(genColorMapToken_exports, { + default: () => genColorMapToken +}); +module.exports = __toCommonJS(genColorMapToken_exports); +var import_tinycolor = require("@ctrl/tinycolor"); +function genColorMapToken(seed, { generateColorPalettes, generateNeutralColorPalettes }) { + const { + colorSuccess: colorSuccessBase, + colorWarning: colorWarningBase, + colorError: colorErrorBase, + colorInfo: colorInfoBase, + colorPrimary: colorPrimaryBase, + colorBgBase, + colorTextBase + } = seed; + const primaryColors = generateColorPalettes(colorPrimaryBase); + const successColors = generateColorPalettes(colorSuccessBase); + const warningColors = generateColorPalettes(colorWarningBase); + const errorColors = generateColorPalettes(colorErrorBase); + const infoColors = generateColorPalettes(colorInfoBase); + const neutralColors = generateNeutralColorPalettes(colorBgBase, colorTextBase); + const colorLink = seed.colorLink || seed.colorInfo; + const linkColors = generateColorPalettes(colorLink); + return { + ...neutralColors, + colorPrimaryBg: primaryColors[1], + colorPrimaryBgHover: primaryColors[2], + colorPrimaryBorder: primaryColors[3], + colorPrimaryBorderHover: primaryColors[4], + colorPrimaryHover: primaryColors[5], + colorPrimary: primaryColors[6], + colorPrimaryActive: primaryColors[7], + colorPrimaryTextHover: primaryColors[8], + colorPrimaryText: primaryColors[9], + colorPrimaryTextActive: primaryColors[10], + colorSuccessBg: successColors[1], + colorSuccessBgHover: successColors[2], + colorSuccessBorder: successColors[3], + colorSuccessBorderHover: successColors[4], + colorSuccessHover: successColors[4], + colorSuccess: successColors[6], + colorSuccessActive: successColors[7], + colorSuccessTextHover: successColors[8], + colorSuccessText: successColors[9], + colorSuccessTextActive: successColors[10], + colorErrorBg: errorColors[1], + colorErrorBgHover: errorColors[2], + colorErrorBorder: errorColors[3], + colorErrorBorderHover: errorColors[4], + colorErrorHover: errorColors[5], + colorError: errorColors[6], + colorErrorActive: errorColors[7], + colorErrorTextHover: errorColors[8], + colorErrorText: errorColors[9], + colorErrorTextActive: errorColors[10], + colorWarningBg: warningColors[1], + colorWarningBgHover: warningColors[2], + colorWarningBorder: warningColors[3], + colorWarningBorderHover: warningColors[4], + colorWarningHover: warningColors[4], + colorWarning: warningColors[6], + colorWarningActive: warningColors[7], + colorWarningTextHover: warningColors[8], + colorWarningText: warningColors[9], + colorWarningTextActive: warningColors[10], + colorInfoBg: infoColors[1], + colorInfoBgHover: infoColors[2], + colorInfoBorder: infoColors[3], + colorInfoBorderHover: infoColors[4], + colorInfoHover: infoColors[4], + colorInfo: infoColors[6], + colorInfoActive: infoColors[7], + colorInfoTextHover: infoColors[8], + colorInfoText: infoColors[9], + colorInfoTextActive: infoColors[10], + colorLinkHover: linkColors[4], + colorLink: linkColors[6], + colorLinkActive: linkColors[7], + colorBgMask: new import_tinycolor.TinyColor("#000").setAlpha(0.45).toRgbString(), + colorWhite: "#fff" + }; +} diff --git a/packages/meta/lib/theme/themes/shared/genCommonMapToken.d.ts b/packages/meta/lib/theme/themes/shared/genCommonMapToken.d.ts new file mode 100644 index 0000000..bdaac10 --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genCommonMapToken.d.ts @@ -0,0 +1,2 @@ +import type { CommonMapToken, SeedToken } from '../../interface'; +export default function genCommonMapToken(token: SeedToken): CommonMapToken; diff --git a/packages/meta/lib/theme/themes/shared/genCommonMapToken.js b/packages/meta/lib/theme/themes/shared/genCommonMapToken.js new file mode 100644 index 0000000..9375bce --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genCommonMapToken.js @@ -0,0 +1,48 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/shared/genCommonMapToken.ts +var genCommonMapToken_exports = {}; +__export(genCommonMapToken_exports, { + default: () => genCommonMapToken +}); +module.exports = __toCommonJS(genCommonMapToken_exports); +var import_genRadius = __toESM(require("./genRadius")); +function genCommonMapToken(token) { + const { motionUnit, motionBase, borderRadius, lineWidth } = token; + return { + // motion + motionDurationFast: `${(motionBase + motionUnit).toFixed(1)}s`, + motionDurationMid: `${(motionBase + motionUnit * 2).toFixed(1)}s`, + motionDurationSlow: `${(motionBase + motionUnit * 3).toFixed(1)}s`, + // line + lineWidthBold: lineWidth + 1, + // radius + ...(0, import_genRadius.default)(borderRadius) + }; +} diff --git a/packages/meta/lib/theme/themes/shared/genControlHeight.d.ts b/packages/meta/lib/theme/themes/shared/genControlHeight.d.ts new file mode 100644 index 0000000..b898549 --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genControlHeight.d.ts @@ -0,0 +1,3 @@ +import type { HeightMapToken, SeedToken } from '../../interface'; +declare const genControlHeight: (token: SeedToken) => HeightMapToken; +export default genControlHeight; diff --git a/packages/meta/lib/theme/themes/shared/genControlHeight.js b/packages/meta/lib/theme/themes/shared/genControlHeight.js new file mode 100644 index 0000000..d477f06 --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genControlHeight.js @@ -0,0 +1,33 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/shared/genControlHeight.ts +var genControlHeight_exports = {}; +__export(genControlHeight_exports, { + default: () => genControlHeight_default +}); +module.exports = __toCommonJS(genControlHeight_exports); +var genControlHeight = (token) => { + const { controlHeight } = token; + return { + controlHeightSM: controlHeight * 0.75, + controlHeightXS: controlHeight * 0.5, + controlHeightLG: controlHeight * 1.25 + }; +}; +var genControlHeight_default = genControlHeight; diff --git a/packages/meta/lib/theme/themes/shared/genFontMapToken.d.ts b/packages/meta/lib/theme/themes/shared/genFontMapToken.d.ts new file mode 100644 index 0000000..a5ddc2a --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genFontMapToken.d.ts @@ -0,0 +1,3 @@ +import type { FontMapToken } from '../../interface'; +declare const genFontMapToken: (fontSize: number) => FontMapToken; +export default genFontMapToken; diff --git a/packages/meta/lib/theme/themes/shared/genFontMapToken.js b/packages/meta/lib/theme/themes/shared/genFontMapToken.js new file mode 100644 index 0000000..c27e6da --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genFontMapToken.js @@ -0,0 +1,69 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/shared/genFontMapToken.ts +var genFontMapToken_exports = {}; +__export(genFontMapToken_exports, { + default: () => genFontMapToken_default +}); +module.exports = __toCommonJS(genFontMapToken_exports); +var import_genFontSizes = __toESM(require("./genFontSizes")); +var genFontMapToken = (fontSize) => { + const fontSizePairs = (0, import_genFontSizes.default)(fontSize); + const fontSizes = fontSizePairs.map((pair) => pair.size); + const lineHeights = fontSizePairs.map((pair) => pair.lineHeight); + const fontSizeMD = fontSizes[1]; + const fontSizeSM = fontSizes[0]; + const fontSizeLG = fontSizes[2]; + const lineHeight = lineHeights[1]; + const lineHeightSM = lineHeights[0]; + const lineHeightLG = lineHeights[2]; + return { + fontSizeSM, + fontSize: fontSizeMD, + fontSizeLG, + fontSizeXL: fontSizes[3], + fontSizeHeading1: fontSizes[6], + fontSizeHeading2: fontSizes[5], + fontSizeHeading3: fontSizes[4], + fontSizeHeading4: fontSizes[3], + fontSizeHeading5: fontSizes[2], + lineHeight, + lineHeightLG, + lineHeightSM, + fontHeight: Math.round(lineHeight * fontSizeMD), + fontHeightLG: Math.round(lineHeightLG * fontSizeLG), + fontHeightSM: Math.round(lineHeightSM * fontSizeSM), + lineHeightHeading1: lineHeights[6], + lineHeightHeading2: lineHeights[5], + lineHeightHeading3: lineHeights[4], + lineHeightHeading4: lineHeights[3], + lineHeightHeading5: lineHeights[2] + }; +}; +var genFontMapToken_default = genFontMapToken; diff --git a/packages/meta/lib/theme/themes/shared/genFontSizes.d.ts b/packages/meta/lib/theme/themes/shared/genFontSizes.d.ts new file mode 100644 index 0000000..0507980 --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genFontSizes.d.ts @@ -0,0 +1,4 @@ +export default function getFontSizes(base: number): { + size: number; + lineHeight: number; +}[]; diff --git a/packages/meta/lib/theme/themes/shared/genFontSizes.js b/packages/meta/lib/theme/themes/shared/genFontSizes.js new file mode 100644 index 0000000..130d288 --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genFontSizes.js @@ -0,0 +1,40 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/shared/genFontSizes.ts +var genFontSizes_exports = {}; +__export(genFontSizes_exports, { + default: () => getFontSizes +}); +module.exports = __toCommonJS(genFontSizes_exports); +function getFontSizes(base) { + const fontSizes = new Array(10).fill(null).map((_, index) => { + const i = index - 1; + const baseSize = base * 2.71828 ** (i / 5); + const intSize = index > 1 ? Math.floor(baseSize) : Math.ceil(baseSize); + return Math.floor(intSize / 2) * 2; + }); + fontSizes[1] = base; + return fontSizes.map((size) => { + const height = size + 8; + return { + size, + lineHeight: height / size + }; + }); +} diff --git a/packages/meta/lib/theme/themes/shared/genRadius.d.ts b/packages/meta/lib/theme/themes/shared/genRadius.d.ts new file mode 100644 index 0000000..f41fd71 --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genRadius.d.ts @@ -0,0 +1,3 @@ +import type { MapToken } from '../../interface'; +declare const genRadius: (radiusBase: number) => Pick; +export default genRadius; diff --git a/packages/meta/lib/theme/themes/shared/genRadius.js b/packages/meta/lib/theme/themes/shared/genRadius.js new file mode 100644 index 0000000..579b210 --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genRadius.js @@ -0,0 +1,66 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/shared/genRadius.ts +var genRadius_exports = {}; +__export(genRadius_exports, { + default: () => genRadius_default +}); +module.exports = __toCommonJS(genRadius_exports); +var genRadius = (radiusBase) => { + let radiusLG = radiusBase; + let radiusSM = radiusBase; + let radiusXS = radiusBase; + let radiusOuter = radiusBase; + if (radiusBase < 6 && radiusBase >= 5) { + radiusLG = radiusBase + 1; + } else if (radiusBase < 16 && radiusBase >= 6) { + radiusLG = radiusBase + 2; + } else if (radiusBase >= 16) { + radiusLG = 16; + } + if (radiusBase < 7 && radiusBase >= 5) { + radiusSM = 4; + } else if (radiusBase < 8 && radiusBase >= 7) { + radiusSM = 5; + } else if (radiusBase < 14 && radiusBase >= 8) { + radiusSM = 6; + } else if (radiusBase < 16 && radiusBase >= 14) { + radiusSM = 7; + } else if (radiusBase >= 16) { + radiusSM = 8; + } + if (radiusBase < 6 && radiusBase >= 2) { + radiusXS = 1; + } else if (radiusBase >= 6) { + radiusXS = 2; + } + if (radiusBase > 4 && radiusBase < 8) { + radiusOuter = 4; + } else if (radiusBase >= 8) { + radiusOuter = 6; + } + return { + borderRadius: radiusBase, + borderRadiusXS: radiusXS, + borderRadiusSM: radiusSM, + borderRadiusLG: radiusLG, + borderRadiusOuter: radiusOuter + }; +}; +var genRadius_default = genRadius; diff --git a/packages/meta/lib/theme/themes/shared/genSizeMapToken.d.ts b/packages/meta/lib/theme/themes/shared/genSizeMapToken.d.ts new file mode 100644 index 0000000..87332e7 --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genSizeMapToken.d.ts @@ -0,0 +1,2 @@ +import type { SeedToken, SizeMapToken } from '../../interface'; +export default function genSizeMapToken(token: SeedToken): SizeMapToken; diff --git a/packages/meta/lib/theme/themes/shared/genSizeMapToken.js b/packages/meta/lib/theme/themes/shared/genSizeMapToken.js new file mode 100644 index 0000000..11dc1ed --- /dev/null +++ b/packages/meta/lib/theme/themes/shared/genSizeMapToken.js @@ -0,0 +1,47 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/themes/shared/genSizeMapToken.ts +var genSizeMapToken_exports = {}; +__export(genSizeMapToken_exports, { + default: () => genSizeMapToken +}); +module.exports = __toCommonJS(genSizeMapToken_exports); +function genSizeMapToken(token) { + const { sizeUnit, sizeStep } = token; + return { + sizeXXL: sizeUnit * (sizeStep + 8), + // 48 + sizeXL: sizeUnit * (sizeStep + 4), + // 32 + sizeLG: sizeUnit * (sizeStep + 2), + // 24 + sizeMD: sizeUnit * (sizeStep + 1), + // 20 + sizeMS: sizeUnit * sizeStep, + // 16 + size: sizeUnit * sizeStep, + // 16 + sizeSM: sizeUnit * (sizeStep - 1), + // 12 + sizeXS: sizeUnit * (sizeStep - 2), + // 8 + sizeXXS: sizeUnit * (sizeStep - 3) + // 4 + }; +} diff --git a/packages/meta/lib/theme/useToken.d.ts b/packages/meta/lib/theme/useToken.d.ts new file mode 100644 index 0000000..d7e4c14 --- /dev/null +++ b/packages/meta/lib/theme/useToken.d.ts @@ -0,0 +1,19 @@ +import type { Theme } from '@ant-design/cssinjs'; +import type { DesignTokenProviderProps } from './context'; +import type { AliasToken, GlobalToken, MapToken, SeedToken } from './interface'; +export declare const unitless: { + [key in keyof AliasToken]?: boolean; +}; +export declare const ignore: { + [key in keyof AliasToken]?: boolean; +}; +export declare const getComputedToken: (originToken: SeedToken, overrideToken: DesignTokenProviderProps['components'] & { + override?: Partial; +}, theme: Theme) => any; +export default function useToken(): [ + theme: Theme, + token: GlobalToken, + hashId: string, + realToken: GlobalToken, + cssVar?: DesignTokenProviderProps['cssVar'] +]; diff --git a/packages/meta/lib/theme/useToken.js b/packages/meta/lib/theme/useToken.js new file mode 100644 index 0000000..3063421 --- /dev/null +++ b/packages/meta/lib/theme/useToken.js @@ -0,0 +1,157 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/useToken.ts +var useToken_exports = {}; +__export(useToken_exports, { + default: () => useToken, + getComputedToken: () => getComputedToken, + ignore: () => ignore, + unitless: () => unitless +}); +module.exports = __toCommonJS(useToken_exports); +var import_react = __toESM(require("react")); +var import_cssinjs = require("@ant-design/cssinjs"); +var import_version = __toESM(require("../version")); +var import_context = require("./context"); +var import_seed = __toESM(require("./themes/seed")); +var import_alias = __toESM(require("./util/alias")); +var unitless = { + lineHeight: true, + lineHeightSM: true, + lineHeightLG: true, + lineHeightHeading1: true, + lineHeightHeading2: true, + lineHeightHeading3: true, + lineHeightHeading4: true, + lineHeightHeading5: true, + opacityLoading: true, + fontWeightStrong: true, + zIndexPopupBase: true, + zIndexBase: true +}; +var ignore = { + size: true, + sizeSM: true, + sizeLG: true, + sizeMD: true, + sizeXS: true, + sizeXXS: true, + sizeMS: true, + sizeXL: true, + sizeXXL: true, + sizeUnit: true, + sizeStep: true, + motionBase: true, + motionUnit: true +}; +var preserve = { + screenXS: true, + screenXSMin: true, + screenXSMax: true, + screenSM: true, + screenSMMin: true, + screenSMMax: true, + screenMD: true, + screenMDMin: true, + screenMDMax: true, + screenLG: true, + screenLGMin: true, + screenLGMax: true, + screenXL: true, + screenXLMin: true, + screenXLMax: true, + screenXXL: true, + screenXXLMin: true +}; +var getComputedToken = (originToken, overrideToken, theme) => { + const derivativeToken = theme.getDerivativeToken(originToken); + const { override, ...components } = overrideToken; + let mergedDerivativeToken = { + ...derivativeToken, + override + }; + mergedDerivativeToken = (0, import_alias.default)(mergedDerivativeToken); + if (components) { + Object.entries(components).forEach(([key, value]) => { + const { theme: componentTheme, ...componentTokens } = value; + let mergedComponentToken = componentTokens; + if (componentTheme) { + mergedComponentToken = getComputedToken( + { + ...mergedDerivativeToken, + ...componentTokens + }, + { + override: componentTokens + }, + componentTheme + ); + } + mergedDerivativeToken[key] = mergedComponentToken; + }); + } + return mergedDerivativeToken; +}; +function useToken() { + const { + token: rootDesignToken, + hashed, + theme, + override, + cssVar + } = import_react.default.useContext(import_context.DesignTokenContext); + const salt = `${import_version.default}-${hashed || ""}`; + const mergedTheme = theme || import_context.defaultTheme; + const [token, hashId, realToken] = (0, import_cssinjs.useCacheToken)( + mergedTheme, + [import_seed.default, rootDesignToken], + { + salt, + override, + getComputedToken, + // formatToken will not be consumed after 1.15.0 with getComputedToken. + // But token will break if @ant-design/cssinjs is under 1.15.0 without it + formatToken: import_alias.default, + cssVar: cssVar && { + prefix: cssVar.prefix, + key: cssVar.key, + unitless, + ignore, + preserve + } + } + ); + return [mergedTheme, realToken, hashed ? hashId : "", token, cssVar]; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getComputedToken, + ignore, + unitless +}); diff --git a/packages/meta/lib/theme/util/alias.d.ts b/packages/meta/lib/theme/util/alias.d.ts new file mode 100644 index 0000000..e41cbaa --- /dev/null +++ b/packages/meta/lib/theme/util/alias.d.ts @@ -0,0 +1,12 @@ +import type { AliasToken, MapToken, OverrideToken } from '../interface'; +/** Raw merge of `@ant-design/cssinjs` token. Which need additional process */ +type RawMergedToken = MapToken & OverrideToken & { + override: Partial; +}; +/** + * Seed (designer) > Derivative (designer) > Alias (developer). + * + * Merge seed & derivative & override token and generate alias token for developer. + */ +export default function formatToken(derivativeToken: RawMergedToken): AliasToken; +export {}; diff --git a/packages/meta/lib/theme/util/alias.js b/packages/meta/lib/theme/util/alias.js new file mode 100644 index 0000000..1be1d7b --- /dev/null +++ b/packages/meta/lib/theme/util/alias.js @@ -0,0 +1,198 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/util/alias.ts +var alias_exports = {}; +__export(alias_exports, { + default: () => formatToken +}); +module.exports = __toCommonJS(alias_exports); +var import_tinycolor = require("@ctrl/tinycolor"); +var import_seed = __toESM(require("../themes/seed")); +var import_getAlphaColor = __toESM(require("./getAlphaColor")); +function formatToken(derivativeToken) { + const { override, ...restToken } = derivativeToken; + const overrideTokens = { ...override }; + Object.keys(import_seed.default).forEach((token) => { + delete overrideTokens[token]; + }); + const mergedToken = { + ...restToken, + ...overrideTokens + }; + const screenXS = 480; + const screenSM = 576; + const screenMD = 768; + const screenLG = 992; + const screenXL = 1200; + const screenXXL = 1600; + if (mergedToken.motion === false) { + const fastDuration = "0s"; + mergedToken.motionDurationFast = fastDuration; + mergedToken.motionDurationMid = fastDuration; + mergedToken.motionDurationSlow = fastDuration; + } + const aliasToken = { + ...mergedToken, + // ============== Background ============== // + colorFillContent: mergedToken.colorFillSecondary, + colorFillContentHover: mergedToken.colorFill, + colorFillAlter: mergedToken.colorFillQuaternary, + colorBgContainerDisabled: mergedToken.colorFillTertiary, + // ============== Split ============== // + colorBorderBg: mergedToken.colorBgContainer, + colorSplit: (0, import_getAlphaColor.default)(mergedToken.colorBorderSecondary, mergedToken.colorBgContainer), + // ============== Text ============== // + colorTextPlaceholder: mergedToken.colorTextQuaternary, + colorTextDisabled: mergedToken.colorTextQuaternary, + colorTextHeading: mergedToken.colorText, + colorTextLabel: mergedToken.colorTextSecondary, + colorTextDescription: mergedToken.colorTextTertiary, + colorTextLightSolid: mergedToken.colorWhite, + colorHighlight: mergedToken.colorError, + colorBgTextHover: mergedToken.colorFillSecondary, + colorBgTextActive: mergedToken.colorFill, + colorIcon: mergedToken.colorTextTertiary, + colorIconHover: mergedToken.colorText, + colorErrorOutline: (0, import_getAlphaColor.default)(mergedToken.colorErrorBg, mergedToken.colorBgContainer), + colorWarningOutline: (0, import_getAlphaColor.default)(mergedToken.colorWarningBg, mergedToken.colorBgContainer), + // Font + fontSizeIcon: mergedToken.fontSizeSM, + // Line + lineWidthFocus: mergedToken.lineWidth * 4, + // Control + lineWidth: mergedToken.lineWidth, + controlOutlineWidth: mergedToken.lineWidth * 2, + // Checkbox size and expand icon size + controlInteractiveSize: mergedToken.controlHeight / 2, + controlItemBgHover: mergedToken.colorFillTertiary, + controlItemBgActive: mergedToken.colorPrimaryBg, + controlItemBgActiveHover: mergedToken.colorPrimaryBgHover, + controlItemBgActiveDisabled: mergedToken.colorFill, + controlTmpOutline: mergedToken.colorFillQuaternary, + controlOutline: (0, import_getAlphaColor.default)(mergedToken.colorPrimaryBg, mergedToken.colorBgContainer), + lineType: mergedToken.lineType, + borderRadius: mergedToken.borderRadius, + borderRadiusXS: mergedToken.borderRadiusXS, + borderRadiusSM: mergedToken.borderRadiusSM, + borderRadiusLG: mergedToken.borderRadiusLG, + fontWeightStrong: 600, + opacityLoading: 0.65, + linkDecoration: "none", + linkHoverDecoration: "none", + linkFocusDecoration: "none", + controlPaddingHorizontal: 12, + controlPaddingHorizontalSM: 8, + paddingXXS: mergedToken.sizeXXS, + paddingXS: mergedToken.sizeXS, + paddingSM: mergedToken.sizeSM, + padding: mergedToken.size, + paddingMD: mergedToken.sizeMD, + paddingLG: mergedToken.sizeLG, + paddingXL: mergedToken.sizeXL, + paddingContentHorizontalLG: mergedToken.sizeLG, + paddingContentVerticalLG: mergedToken.sizeMS, + paddingContentHorizontal: mergedToken.sizeMS, + paddingContentVertical: mergedToken.sizeSM, + paddingContentHorizontalSM: mergedToken.size, + paddingContentVerticalSM: mergedToken.sizeXS, + marginXXS: mergedToken.sizeXXS, + marginXS: mergedToken.sizeXS, + marginSM: mergedToken.sizeSM, + margin: mergedToken.size, + marginMD: mergedToken.sizeMD, + marginLG: mergedToken.sizeLG, + marginXL: mergedToken.sizeXL, + marginXXL: mergedToken.sizeXXL, + boxShadow: ` + 0 6px 16px 0 rgba(0, 0, 0, 0.08), + 0 3px 6px -4px rgba(0, 0, 0, 0.12), + 0 9px 28px 8px rgba(0, 0, 0, 0.05) + `, + boxShadowSecondary: ` + 0 6px 16px 0 rgba(0, 0, 0, 0.08), + 0 3px 6px -4px rgba(0, 0, 0, 0.12), + 0 9px 28px 8px rgba(0, 0, 0, 0.05) + `, + boxShadowTertiary: ` + 0 1px 2px 0 rgba(0, 0, 0, 0.03), + 0 1px 6px -1px rgba(0, 0, 0, 0.02), + 0 2px 4px 0 rgba(0, 0, 0, 0.02) + `, + screenXS, + screenXSMin: screenXS, + screenXSMax: screenSM - 1, + screenSM, + screenSMMin: screenSM, + screenSMMax: screenMD - 1, + screenMD, + screenMDMin: screenMD, + screenMDMax: screenLG - 1, + screenLG, + screenLGMin: screenLG, + screenLGMax: screenXL - 1, + screenXL, + screenXLMin: screenXL, + screenXLMax: screenXXL - 1, + screenXXL, + screenXXLMin: screenXXL, + boxShadowPopoverArrow: "2px 2px 5px rgba(0, 0, 0, 0.05)", + boxShadowCard: ` + 0 1px 2px -2px ${new import_tinycolor.TinyColor("rgba(0, 0, 0, 0.16)").toRgbString()}, + 0 3px 6px 0 ${new import_tinycolor.TinyColor("rgba(0, 0, 0, 0.12)").toRgbString()}, + 0 5px 12px 4px ${new import_tinycolor.TinyColor("rgba(0, 0, 0, 0.09)").toRgbString()} + `, + boxShadowDrawerRight: ` + -6px 0 16px 0 rgba(0, 0, 0, 0.08), + -3px 0 6px -4px rgba(0, 0, 0, 0.12), + -9px 0 28px 8px rgba(0, 0, 0, 0.05) + `, + boxShadowDrawerLeft: ` + 6px 0 16px 0 rgba(0, 0, 0, 0.08), + 3px 0 6px -4px rgba(0, 0, 0, 0.12), + 9px 0 28px 8px rgba(0, 0, 0, 0.05) + `, + boxShadowDrawerUp: ` + 0 6px 16px 0 rgba(0, 0, 0, 0.08), + 0 3px 6px -4px rgba(0, 0, 0, 0.12), + 0 9px 28px 8px rgba(0, 0, 0, 0.05) + `, + boxShadowDrawerDown: ` + 0 -6px 16px 0 rgba(0, 0, 0, 0.08), + 0 -3px 6px -4px rgba(0, 0, 0, 0.12), + 0 -9px 28px 8px rgba(0, 0, 0, 0.05) + `, + boxShadowTabsOverflowLeft: "inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)", + boxShadowTabsOverflowRight: "inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)", + boxShadowTabsOverflowTop: "inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)", + boxShadowTabsOverflowBottom: "inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)", + // Override AliasToken + ...overrideTokens + }; + return aliasToken; +} diff --git a/packages/meta/lib/theme/util/calc/CSSCalculator.d.ts b/packages/meta/lib/theme/util/calc/CSSCalculator.d.ts new file mode 100644 index 0000000..3346945 --- /dev/null +++ b/packages/meta/lib/theme/util/calc/CSSCalculator.d.ts @@ -0,0 +1,14 @@ +import AbstractCalculator from './calculator'; +export default class CSSCalculator extends AbstractCalculator { + result: string; + lowPriority?: boolean; + constructor(num: number | string | AbstractCalculator); + add(num: number | string | AbstractCalculator): this; + sub(num: number | string | AbstractCalculator): this; + mul(num: number | string | AbstractCalculator): this; + div(num: number | string | AbstractCalculator): this; + getResult(force?: boolean): string; + equal(options?: { + unit?: boolean; + }): string; +} diff --git a/packages/meta/lib/theme/util/calc/CSSCalculator.js b/packages/meta/lib/theme/util/calc/CSSCalculator.js new file mode 100644 index 0000000..78c11db --- /dev/null +++ b/packages/meta/lib/theme/util/calc/CSSCalculator.js @@ -0,0 +1,109 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/util/calc/CSSCalculator.ts +var CSSCalculator_exports = {}; +__export(CSSCalculator_exports, { + default: () => CSSCalculator +}); +module.exports = __toCommonJS(CSSCalculator_exports); +var import_calculator = __toESM(require("./calculator")); +var CALC_UNIT = "CALC_UNIT"; +function unit(value) { + if (typeof value === "number") { + return `${value}${CALC_UNIT}`; + } + return value; +} +var CSSCalculator = class extends import_calculator.default { + constructor(num) { + super(); + this.result = ""; + if (num instanceof CSSCalculator) { + this.result = `(${num.result})`; + } else if (typeof num === "number") { + this.result = unit(num); + } else if (typeof num === "string") { + this.result = num; + } + } + add(num) { + if (num instanceof CSSCalculator) { + this.result = `${this.result} + ${num.getResult()}`; + } else if (typeof num === "number" || typeof num === "string") { + this.result = `${this.result} + ${unit(num)}`; + } + this.lowPriority = true; + return this; + } + sub(num) { + if (num instanceof CSSCalculator) { + this.result = `${this.result} - ${num.getResult()}`; + } else if (typeof num === "number" || typeof num === "string") { + this.result = `${this.result} - ${unit(num)}`; + } + this.lowPriority = true; + return this; + } + mul(num) { + if (this.lowPriority) { + this.result = `(${this.result})`; + } + if (num instanceof CSSCalculator) { + this.result = `${this.result} * ${num.getResult(true)}`; + } else if (typeof num === "number" || typeof num === "string") { + this.result = `${this.result} * ${num}`; + } + this.lowPriority = false; + return this; + } + div(num) { + if (this.lowPriority) { + this.result = `(${this.result})`; + } + if (num instanceof CSSCalculator) { + this.result = `${this.result} / ${num.getResult(true)}`; + } else if (typeof num === "number" || typeof num === "string") { + this.result = `${this.result} / ${num}`; + } + this.lowPriority = false; + return this; + } + getResult(force) { + return this.lowPriority || force ? `(${this.result})` : this.result; + } + equal(options) { + const { unit: cssUnit = true } = options || {}; + const regexp = new RegExp(`${CALC_UNIT}`, "g"); + this.result = this.result.replace(regexp, cssUnit ? "px" : ""); + if (typeof this.lowPriority !== "undefined") { + return `calc(${this.result})`; + } + return this.result; + } +}; diff --git a/packages/meta/lib/theme/util/calc/NumCalculator.d.ts b/packages/meta/lib/theme/util/calc/NumCalculator.d.ts new file mode 100644 index 0000000..cd886f6 --- /dev/null +++ b/packages/meta/lib/theme/util/calc/NumCalculator.d.ts @@ -0,0 +1,10 @@ +import AbstractCalculator from './calculator'; +export default class NumCalculator extends AbstractCalculator { + result: number; + constructor(num: number | string | AbstractCalculator); + add(num: number | string | AbstractCalculator): this; + sub(num: number | string | AbstractCalculator): this; + mul(num: number | string | AbstractCalculator): this; + div(num: number | string | AbstractCalculator): this; + equal(): number; +} diff --git a/packages/meta/lib/theme/util/calc/NumCalculator.js b/packages/meta/lib/theme/util/calc/NumCalculator.js new file mode 100644 index 0000000..8a768e2 --- /dev/null +++ b/packages/meta/lib/theme/util/calc/NumCalculator.js @@ -0,0 +1,81 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/util/calc/NumCalculator.ts +var NumCalculator_exports = {}; +__export(NumCalculator_exports, { + default: () => NumCalculator +}); +module.exports = __toCommonJS(NumCalculator_exports); +var import_calculator = __toESM(require("./calculator")); +var NumCalculator = class extends import_calculator.default { + constructor(num) { + super(); + this.result = 0; + if (num instanceof NumCalculator) { + this.result = num.result; + } else if (typeof num === "number") { + this.result = num; + } + } + add(num) { + if (num instanceof NumCalculator) { + this.result += num.result; + } else if (typeof num === "number") { + this.result += num; + } + return this; + } + sub(num) { + if (num instanceof NumCalculator) { + this.result -= num.result; + } else if (typeof num === "number") { + this.result -= num; + } + return this; + } + mul(num) { + if (num instanceof NumCalculator) { + this.result *= num.result; + } else if (typeof num === "number") { + this.result *= num; + } + return this; + } + div(num) { + if (num instanceof NumCalculator) { + this.result /= num.result; + } else if (typeof num === "number") { + this.result /= num; + } + return this; + } + equal() { + return this.result; + } +}; diff --git a/packages/meta/lib/theme/util/calc/calculator.d.ts b/packages/meta/lib/theme/util/calc/calculator.d.ts new file mode 100644 index 0000000..81fe701 --- /dev/null +++ b/packages/meta/lib/theme/util/calc/calculator.d.ts @@ -0,0 +1,30 @@ +declare abstract class AbstractCalculator { + /** + * @descCN 计算两数的和,例如:1 + 2 + * @descEN Calculate the sum of two numbers, e.g. 1 + 2 + */ + abstract add(num: number | string | AbstractCalculator): this; + /** + * @descCN 计算两数的差,例如:1 - 2 + * @descEN Calculate the difference between two numbers, e.g. 1 - 2 + */ + abstract sub(num: number | string | AbstractCalculator): this; + /** + * @descCN 计算两数的积,例如:1 * 2 + * @descEN Calculate the product of two numbers, e.g. 1 * 2 + */ + abstract mul(num: number | string | AbstractCalculator): this; + /** + * @descCN 计算两数的商,例如:1 / 2 + * @descEN Calculate the quotient of two numbers, e.g. 1 / 2 + */ + abstract div(num: number | string | AbstractCalculator): this; + /** + * @descCN 获取计算结果 + * @descEN Get the calculation result + */ + abstract equal(options?: { + unit?: boolean; + }): string | number; +} +export default AbstractCalculator; diff --git a/packages/meta/lib/theme/util/calc/calculator.js b/packages/meta/lib/theme/util/calc/calculator.js new file mode 100644 index 0000000..22c8b8b --- /dev/null +++ b/packages/meta/lib/theme/util/calc/calculator.js @@ -0,0 +1,27 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/util/calc/calculator.ts +var calculator_exports = {}; +__export(calculator_exports, { + default: () => calculator_default +}); +module.exports = __toCommonJS(calculator_exports); +var AbstractCalculator = class { +}; +var calculator_default = AbstractCalculator; diff --git a/packages/meta/lib/theme/util/calc/index.d.ts b/packages/meta/lib/theme/util/calc/index.d.ts new file mode 100644 index 0000000..0b23166 --- /dev/null +++ b/packages/meta/lib/theme/util/calc/index.d.ts @@ -0,0 +1,5 @@ +import NumCalculator from './NumCalculator'; +import CSSCalculator from './CSSCalculator'; +import type AbstractCalculator from './calculator'; +declare const genCalc: (type: 'css' | 'js') => (num: number | string | AbstractCalculator) => CSSCalculator | NumCalculator; +export default genCalc; diff --git a/packages/meta/lib/theme/util/calc/index.js b/packages/meta/lib/theme/util/calc/index.js new file mode 100644 index 0000000..01f07fc --- /dev/null +++ b/packages/meta/lib/theme/util/calc/index.js @@ -0,0 +1,41 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/util/calc/index.ts +var calc_exports = {}; +__export(calc_exports, { + default: () => calc_default +}); +module.exports = __toCommonJS(calc_exports); +var import_NumCalculator = __toESM(require("./NumCalculator")); +var import_CSSCalculator = __toESM(require("./CSSCalculator")); +var genCalc = (type) => { + const Calculator = type === "css" ? import_CSSCalculator.default : import_NumCalculator.default; + return (num) => new Calculator(num); +}; +var calc_default = genCalc; diff --git a/packages/meta/lib/theme/util/genComponentStyleHook.d.ts b/packages/meta/lib/theme/util/genComponentStyleHook.d.ts new file mode 100644 index 0000000..f443993 --- /dev/null +++ b/packages/meta/lib/theme/util/genComponentStyleHook.d.ts @@ -0,0 +1,90 @@ +import type { ComponentType, ReactElement } from 'react'; +import type { CSSInterpolation } from '@ant-design/cssinjs'; +import type { ComponentTokenMap, GlobalToken, OverrideToken, UseComponentStyleResult } from '../interface'; +import { unitless } from '../useToken'; +import type AbstractCalculator from './calc/calculator'; +export type OverrideTokenWithoutDerivative = ComponentTokenMap; +export type OverrideComponent = keyof OverrideTokenWithoutDerivative; +export type GlobalTokenWithComponent = GlobalToken & ComponentTokenMap[C]; +type ComponentToken = Exclude; +type ComponentTokenKey = keyof ComponentToken; +export interface StyleInfo { + hashId: string; + prefixCls: string; + rootPrefixCls: string; + iconPrefixCls: string; +} +export type CSSUtil = { + calc: (number: any) => AbstractCalculator; + max: (...values: (number | string)[]) => number | string; + min: (...values: (number | string)[]) => number | string; +}; +export type TokenWithCommonCls = T & { + /** Wrap component class with `.` prefix */ + componentCls: string; + /** Origin prefix which do not have `.` prefix */ + prefixCls: string; + /** Wrap icon class with `.` prefix */ + iconCls: string; + /** Wrap ant prefixCls class with `.` prefix */ + antCls: string; +} & CSSUtil; +export type FullToken = TokenWithCommonCls>; +export type GenStyleFn = (token: FullToken, info: StyleInfo) => CSSInterpolation; +export type GetDefaultToken = null | OverrideTokenWithoutDerivative[C] | ((token: GlobalToken) => OverrideTokenWithoutDerivative[C]); +export type FormatComponentToken = (token: NonNullable) => NonNullable; +export default function genComponentStyleHook(componentName: C | [C, string], styleFn: GenStyleFn, getDefaultToken?: null | OverrideTokenWithoutDerivative[C] | ((token: GlobalToken) => OverrideTokenWithoutDerivative[C]), options?: { + resetStyle?: boolean; + deprecatedTokens?: [ComponentTokenKey, ComponentTokenKey][]; + /** + * Only use component style in client side. Ignore in SSR. + */ + clientOnly?: boolean; + /** + * Set order of component style. Default is -999. + */ + order?: number; + format?: FormatComponentToken; + injectStyle?: boolean; +}): (prefixCls: string) => UseComponentStyleResult; +export interface SubStyleComponentProps { + prefixCls: string; +} +type RestParameters = T extends [any, ...infer Rest] ? Rest : never; +export declare const genSubStyleComponent: (componentName: [C, string], ...args: RestParameters>>) => ComponentType; +export type CSSVarRegisterProps = { + rootCls: string; + component: string; + cssVar: { + prefix?: string; + key?: string; + }; +}; +export declare const genStyleHooks: (component: C | [C, string], styleFn: GenStyleFn, getDefaultToken?: GetDefaultToken | undefined, options?: { + resetStyle?: boolean | undefined; + deprecatedTokens?: [keyof Exclude, keyof Exclude][] | undefined; + /** + * Chance to format component token with user input. + * Useful when need calculated token as css variables. + */ + format?: FormatComponentToken | undefined; + /** + * Component tokens that do not need unit. + */ + unitless?: { [key in keyof Exclude]: boolean; } | undefined; + /** + * Only use component style in client side. Ignore in SSR. + */ + clientOnly?: boolean | undefined; + /** + * Set order of component style. + * @default -999 + */ + order?: number | undefined; + /** + * Whether generate styles + * @default true + */ + injectStyle?: boolean | undefined; +} | undefined) => (prefixCls: string, rootCls?: string) => readonly [(node: ReactElement) => ReactElement, string, string | undefined]; +export {}; diff --git a/packages/meta/lib/theme/util/genComponentStyleHook.js b/packages/meta/lib/theme/util/genComponentStyleHook.js new file mode 100644 index 0000000..fd8e2a9 --- /dev/null +++ b/packages/meta/lib/theme/util/genComponentStyleHook.js @@ -0,0 +1,257 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/util/genComponentStyleHook.tsx +var genComponentStyleHook_exports = {}; +__export(genComponentStyleHook_exports, { + default: () => genComponentStyleHook, + genStyleHooks: () => genStyleHooks, + genSubStyleComponent: () => genSubStyleComponent +}); +module.exports = __toCommonJS(genComponentStyleHook_exports); +var import_react = __toESM(require("react")); +var import_cssinjs = require("@ant-design/cssinjs"); +var import_rc_util = require("rc-util"); +var import_context = require("../../config-provider/context"); +var import_style = require("../../style"); +var import_useToken = __toESM(require("../useToken")); +var import_calc = __toESM(require("./calc")); +var import_maxmin = __toESM(require("./maxmin")); +var import_statistic = __toESM(require("./statistic")); +var import_useResetIconStyle = __toESM(require("./useResetIconStyle")); +var getDefaultComponentToken = (component, token, getDefaultToken) => { + if (typeof getDefaultToken === "function") { + return getDefaultToken((0, import_statistic.merge)(token, token[component] ?? {})); + } + return getDefaultToken ?? {}; +}; +var getComponentToken = (component, token, defaultToken, options) => { + const customToken = { ...token[component] }; + if (options == null ? void 0 : options.deprecatedTokens) { + const { deprecatedTokens } = options; + deprecatedTokens.forEach(([oldTokenKey, newTokenKey]) => { + if (process.env.NODE_ENV !== "production") { + (0, import_rc_util.warning)( + !(customToken == null ? void 0 : customToken[oldTokenKey]), + `The token '${String(oldTokenKey)}' of ${component} had deprecated, use '${String( + newTokenKey + )}' instead.` + ); + } + if ((customToken == null ? void 0 : customToken[oldTokenKey]) || (customToken == null ? void 0 : customToken[newTokenKey])) { + customToken[newTokenKey] ?? (customToken[newTokenKey] = customToken == null ? void 0 : customToken[oldTokenKey]); + } + }); + } + let mergedToken = { ...defaultToken, ...customToken }; + if (options == null ? void 0 : options.format) { + mergedToken = options.format(mergedToken); + } + Object.keys(mergedToken).forEach((key) => { + if (mergedToken[key] === token[key]) { + delete mergedToken[key]; + } + }); + return mergedToken; +}; +var getCompVarPrefix = (component, prefix) => `${[ + prefix, + component.replace(/([A-Z]+)([A-Z][a-z]+)/g, "$1-$2").replace(/([a-z])([A-Z])/g, "$1-$2") +].filter(Boolean).join("-")}`; +function genComponentStyleHook(componentName, styleFn, getDefaultToken, options = {}) { + const cells = Array.isArray(componentName) ? componentName : [componentName, componentName]; + const [component] = cells; + const concatComponent = cells.join("-"); + return (prefixCls) => { + const [theme, realToken, hashId, token, cssVar] = (0, import_useToken.default)(); + const { getPrefixCls, iconPrefixCls, csp } = (0, import_react.useContext)(import_context.ConfigContext); + const rootPrefixCls = getPrefixCls(); + const type = cssVar ? "css" : "js"; + const calc = (0, import_calc.default)(type); + const { max, min } = (0, import_maxmin.default)(type); + const sharedConfig = { + theme, + token, + hashId, + nonce: () => csp == null ? void 0 : csp.nonce, + clientOnly: options.clientOnly, + // antd is always at top of styles + order: options.order || -999 + }; + (0, import_cssinjs.useStyleRegister)( + { ...sharedConfig, clientOnly: false, path: ["Shared", rootPrefixCls] }, + () => [ + { + // Link + "&": (0, import_style.genLinkStyle)(token) + } + ] + ); + (0, import_useResetIconStyle.default)(iconPrefixCls, csp); + const wrapSSR = (0, import_cssinjs.useStyleRegister)( + { ...sharedConfig, path: [concatComponent, prefixCls, iconPrefixCls] }, + () => { + if (options.injectStyle === false) { + return []; + } + const { token: proxyToken, flush } = (0, import_statistic.default)(token); + const defaultComponentToken = getDefaultComponentToken( + component, + realToken, + getDefaultToken + ); + const componentCls = `.${prefixCls}`; + const componentToken = getComponentToken(component, realToken, defaultComponentToken, { + deprecatedTokens: options.deprecatedTokens, + format: options.format + }); + if (cssVar) { + Object.keys(defaultComponentToken).forEach((key) => { + defaultComponentToken[key] = `var(${(0, import_cssinjs.token2CSSVar)( + key, + getCompVarPrefix(component, cssVar.prefix) + )})`; + }); + } + const mergedToken = (0, import_statistic.merge)( + proxyToken, + { + componentCls, + prefixCls, + iconCls: `.${iconPrefixCls}`, + antCls: `.${rootPrefixCls}`, + calc, + // @ts-ignore + max, + // @ts-ignore + min + }, + cssVar ? defaultComponentToken : componentToken + ); + const styleInterpolation = styleFn(mergedToken, { + hashId, + prefixCls, + rootPrefixCls, + iconPrefixCls + }); + flush(component, componentToken); + return [ + options.resetStyle === false ? null : (0, import_style.genCommonStyle)(mergedToken, prefixCls), + styleInterpolation + ]; + } + ); + return [wrapSSR, hashId]; + }; +} +var genSubStyleComponent = (componentName, styleFn, getDefaultToken, options) => { + const useStyle = genComponentStyleHook(componentName, styleFn, getDefaultToken, { + resetStyle: false, + // Sub Style should default after root one + order: -998, + ...options + }); + const StyledComponent = ({ + prefixCls + }) => { + useStyle(prefixCls); + return null; + }; + if (process.env.NODE_ENV !== "production") { + StyledComponent.displayName = `SubStyle_${Array.isArray(componentName) ? componentName.join(".") : componentName}`; + } + return StyledComponent; +}; +var genCSSVarRegister = (component, getDefaultToken, options) => { + function prefixToken(key) { + return `${component}${key.slice(0, 1).toUpperCase()}${key.slice(1)}`; + } + const { unitless: originUnitless = {}, injectStyle = true } = options ?? {}; + const compUnitless = { + [prefixToken("zIndexPopup")]: true + }; + Object.keys(originUnitless).forEach((key) => { + compUnitless[prefixToken(key)] = originUnitless[key]; + }); + const CSSVarRegister = ({ rootCls, cssVar }) => { + const [, realToken] = (0, import_useToken.default)(); + (0, import_cssinjs.useCSSVarRegister)( + { + path: [component], + prefix: cssVar.prefix, + key: cssVar == null ? void 0 : cssVar.key, + unitless: { + ...import_useToken.unitless, + ...compUnitless + }, + ignore: import_useToken.ignore, + token: realToken, + scope: rootCls + }, + () => { + const defaultToken = getDefaultComponentToken(component, realToken, getDefaultToken); + const componentToken = getComponentToken(component, realToken, defaultToken, { + format: options == null ? void 0 : options.format, + deprecatedTokens: options == null ? void 0 : options.deprecatedTokens + }); + Object.keys(defaultToken).forEach((key) => { + componentToken[prefixToken(key)] = componentToken[key]; + delete componentToken[key]; + }); + return componentToken; + } + ); + return null; + }; + const useCSSVar = (rootCls) => { + const [, , , , cssVar] = (0, import_useToken.default)(); + return [ + (node) => injectStyle && cssVar ? /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(CSSVarRegister, { rootCls, cssVar, component }), node) : node, + cssVar == null ? void 0 : cssVar.key + ]; + }; + return useCSSVar; +}; +var genStyleHooks = (component, styleFn, getDefaultToken, options) => { + const useStyle = genComponentStyleHook(component, styleFn, getDefaultToken, options); + const useCSSVar = genCSSVarRegister( + Array.isArray(component) ? component[0] : component, + getDefaultToken, + options + ); + return (prefixCls, rootCls = prefixCls) => { + const [, hashId] = useStyle(prefixCls); + const [wrapCSSVar, cssVarCls] = useCSSVar(rootCls); + return [wrapCSSVar, hashId, cssVarCls]; + }; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + genStyleHooks, + genSubStyleComponent +}); diff --git a/packages/meta/lib/theme/util/genPresetColor.d.ts b/packages/meta/lib/theme/util/genPresetColor.d.ts new file mode 100644 index 0000000..2a67c06 --- /dev/null +++ b/packages/meta/lib/theme/util/genPresetColor.d.ts @@ -0,0 +1,16 @@ +import type { CSSObject } from '@ant-design/cssinjs'; +import type { AliasToken, PresetColorKey } from '../internal'; +import type { TokenWithCommonCls } from './genComponentStyleHook'; +interface CalcColor { + /** token[`${colorKey}-1`] */ + lightColor: string; + /** token[`${colorKey}-3`] */ + lightBorderColor: string; + /** token[`${colorKey}-6`] */ + darkColor: string; + /** token[`${colorKey}-7`] */ + textColor: string; +} +type GenCSS = (colorKey: PresetColorKey, calcColor: CalcColor) => CSSObject; +export default function genPresetColor>(token: Token, genCss: GenCSS): CSSObject; +export {}; diff --git a/packages/meta/lib/theme/util/genPresetColor.js b/packages/meta/lib/theme/util/genPresetColor.js new file mode 100644 index 0000000..120483e --- /dev/null +++ b/packages/meta/lib/theme/util/genPresetColor.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/util/genPresetColor.ts +var genPresetColor_exports = {}; +__export(genPresetColor_exports, { + default: () => genPresetColor +}); +module.exports = __toCommonJS(genPresetColor_exports); +var import_interface = require("../interface"); +function genPresetColor(token, genCss) { + return import_interface.PresetColors.reduce((prev, colorKey) => { + const lightColor = token[`${colorKey}1`]; + const lightBorderColor = token[`${colorKey}3`]; + const darkColor = token[`${colorKey}6`]; + const textColor = token[`${colorKey}7`]; + return { + ...prev, + ...genCss(colorKey, { lightColor, lightBorderColor, darkColor, textColor }) + }; + }, {}); +} diff --git a/packages/meta/lib/theme/util/getAlphaColor.d.ts b/packages/meta/lib/theme/util/getAlphaColor.d.ts new file mode 100644 index 0000000..29e519d --- /dev/null +++ b/packages/meta/lib/theme/util/getAlphaColor.d.ts @@ -0,0 +1,2 @@ +declare function getAlphaColor(frontColor: string, backgroundColor: string): string; +export default getAlphaColor; diff --git a/packages/meta/lib/theme/util/getAlphaColor.js b/packages/meta/lib/theme/util/getAlphaColor.js new file mode 100644 index 0000000..b0ee7b0 --- /dev/null +++ b/packages/meta/lib/theme/util/getAlphaColor.js @@ -0,0 +1,45 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/util/getAlphaColor.ts +var getAlphaColor_exports = {}; +__export(getAlphaColor_exports, { + default: () => getAlphaColor_default +}); +module.exports = __toCommonJS(getAlphaColor_exports); +var import_tinycolor = require("@ctrl/tinycolor"); +function isStableColor(color) { + return color >= 0 && color <= 255; +} +function getAlphaColor(frontColor, backgroundColor) { + const { r: fR, g: fG, b: fB, a: originAlpha } = new import_tinycolor.TinyColor(frontColor).toRgb(); + if (originAlpha < 1) { + return frontColor; + } + const { r: bR, g: bG, b: bB } = new import_tinycolor.TinyColor(backgroundColor).toRgb(); + for (let fA = 0.01; fA <= 1; fA += 0.01) { + const r = Math.round((fR - bR * (1 - fA)) / fA); + const g = Math.round((fG - bG * (1 - fA)) / fA); + const b = Math.round((fB - bB * (1 - fA)) / fA); + if (isStableColor(r) && isStableColor(g) && isStableColor(b)) { + return new import_tinycolor.TinyColor({ r, g, b, a: Math.round(fA * 100) / 100 }).toRgbString(); + } + } + return new import_tinycolor.TinyColor({ r: fR, g: fG, b: fB, a: 1 }).toRgbString(); +} +var getAlphaColor_default = getAlphaColor; diff --git a/packages/meta/lib/theme/util/maxmin.d.ts b/packages/meta/lib/theme/util/maxmin.d.ts new file mode 100644 index 0000000..b513264 --- /dev/null +++ b/packages/meta/lib/theme/util/maxmin.d.ts @@ -0,0 +1,7 @@ +export default function genMaxMin(type: 'css' | 'js'): { + max: (...values: number[]) => number; + min: (...values: number[]) => number; +} | { + max: (...args: (string | number)[]) => string; + min: (...args: (string | number)[]) => string; +}; diff --git a/packages/meta/lib/theme/util/maxmin.js b/packages/meta/lib/theme/util/maxmin.js new file mode 100644 index 0000000..577e3d1 --- /dev/null +++ b/packages/meta/lib/theme/util/maxmin.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/util/maxmin.ts +var maxmin_exports = {}; +__export(maxmin_exports, { + default: () => genMaxMin +}); +module.exports = __toCommonJS(maxmin_exports); +var import_cssinjs = require("@ant-design/cssinjs"); +function genMaxMin(type) { + if (type === "js") { + return { + max: Math.max, + min: Math.min + }; + } + return { + max: (...args) => `max(${args.map((value) => (0, import_cssinjs.unit)(value)).join(",")})`, + min: (...args) => `min(${args.map((value) => (0, import_cssinjs.unit)(value)).join(",")})` + }; +} diff --git a/packages/meta/lib/theme/util/statistic.d.ts b/packages/meta/lib/theme/util/statistic.d.ts new file mode 100644 index 0000000..32ab0d9 --- /dev/null +++ b/packages/meta/lib/theme/util/statistic.d.ts @@ -0,0 +1,13 @@ +import type { AnyObject } from '../../_util/type'; +/** + * This function will do as `Object.assign` in production. But will use Object.defineProperty:get to + * pass all value access in development. To support statistic field usage with alias token. + */ +export declare function merge(...objs: Partial[]): T; +/** Statistic token usage case. Should use `merge` function if you do not want spread record. */ +declare const statisticToken: (token: T) => { + token: T; + keys: Set | undefined; + flush: (componentName: string, componentToken: Record) => void; +}; +export default statisticToken; diff --git a/packages/meta/lib/theme/util/statistic.js b/packages/meta/lib/theme/util/statistic.js new file mode 100644 index 0000000..2c861d2 --- /dev/null +++ b/packages/meta/lib/theme/util/statistic.js @@ -0,0 +1,86 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/util/statistic.ts +var statistic_exports = {}; +__export(statistic_exports, { + _statistic_build_: () => _statistic_build_, + default: () => statistic_default, + merge: () => merge, + statistic: () => statistic +}); +module.exports = __toCommonJS(statistic_exports); +var enableStatistic = process.env.NODE_ENV !== "production" || typeof CSSINJS_STATISTIC !== "undefined"; +var recording = true; +function merge(...objs) { + if (!enableStatistic) { + return Object.assign({}, ...objs); + } + recording = false; + const ret = {}; + objs.forEach((obj) => { + const keys = Object.keys(obj); + keys.forEach((key) => { + Object.defineProperty(ret, key, { + configurable: true, + enumerable: true, + get: () => obj[key] + }); + }); + }); + recording = true; + return ret; +} +var statistic = {}; +var _statistic_build_ = {}; +function noop() { +} +var statisticToken = (token) => { + let tokenKeys; + let proxy = token; + let flush = noop; + if (enableStatistic && typeof Proxy !== "undefined") { + tokenKeys = /* @__PURE__ */ new Set(); + proxy = new Proxy(token, { + get(obj, prop) { + if (recording) { + tokenKeys.add(prop); + } + return obj[prop]; + } + }); + flush = (componentName, componentToken) => { + var _a; + statistic[componentName] = { + global: Array.from(tokenKeys), + component: { + ...(_a = statistic[componentName]) == null ? void 0 : _a.component, + ...componentToken + } + }; + }; + } + return { token: proxy, keys: tokenKeys, flush }; +}; +var statistic_default = statisticToken; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + _statistic_build_, + merge, + statistic +}); diff --git a/packages/meta/lib/theme/util/useResetIconStyle.d.ts b/packages/meta/lib/theme/util/useResetIconStyle.d.ts new file mode 100644 index 0000000..3ca562f --- /dev/null +++ b/packages/meta/lib/theme/util/useResetIconStyle.d.ts @@ -0,0 +1,4 @@ +/// +import type { CSPConfig } from '../../config-provider'; +declare const useResetIconStyle: (iconPrefixCls: string, csp?: CSPConfig) => (node: import("react").ReactElement>) => import("react").JSX.Element; +export default useResetIconStyle; diff --git a/packages/meta/lib/theme/util/useResetIconStyle.js b/packages/meta/lib/theme/util/useResetIconStyle.js new file mode 100644 index 0000000..d05e077 --- /dev/null +++ b/packages/meta/lib/theme/util/useResetIconStyle.js @@ -0,0 +1,60 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/theme/util/useResetIconStyle.ts +var useResetIconStyle_exports = {}; +__export(useResetIconStyle_exports, { + default: () => useResetIconStyle_default +}); +module.exports = __toCommonJS(useResetIconStyle_exports); +var import_cssinjs = require("@ant-design/cssinjs"); +var import_style = require("../../style"); +var import_useToken = __toESM(require("../useToken")); +var useResetIconStyle = (iconPrefixCls, csp) => { + const [theme, token] = (0, import_useToken.default)(); + return (0, import_cssinjs.useStyleRegister)( + { + theme, + token, + hashId: "", + path: ["ant-design-icons", iconPrefixCls], + nonce: () => csp == null ? void 0 : csp.nonce + }, + () => [ + { + [`.${iconPrefixCls}`]: { + ...(0, import_style.resetIcon)(), + [`.${iconPrefixCls} .${iconPrefixCls}-icon`]: { + display: "block" + } + } + } + ] + ); +}; +var useResetIconStyle_default = useResetIconStyle; diff --git a/packages/meta/lib/time-picker/index.d.ts b/packages/meta/lib/time-picker/index.d.ts new file mode 100644 index 0000000..ff773b8 --- /dev/null +++ b/packages/meta/lib/time-picker/index.d.ts @@ -0,0 +1,26 @@ +import * as React from 'react'; +import type { Dayjs } from 'dayjs'; +import type { InputStatus } from '../_util/statusUtils'; +import type { PickerTimeProps, RangePickerTimeProps } from '../date-picker/generatePicker'; +export interface TimePickerLocale { + placeholder?: string; + rangePlaceholder?: [string, string]; +} +export interface TimeRangePickerProps extends Omit, 'picker'> { + popupClassName?: string; +} +declare const RangePicker: React.ForwardRefExoticComponent>; +export interface TimePickerProps extends Omit, 'picker'> { + addon?: () => React.ReactNode; + status?: InputStatus; + popupClassName?: string; + rootClassName?: string; +} +declare const TimePicker: React.ForwardRefExoticComponent & React.RefAttributes>; +declare const PurePanel: (props: import("../_util/type").AnyObject) => React.JSX.Element; +type MergedTimePicker = typeof TimePicker & { + RangePicker: typeof RangePicker; + _InternalPanelDoNotUseOrYouWillBeFired: typeof PurePanel; +}; +declare const _default: MergedTimePicker; +export default _default; diff --git a/packages/meta/lib/time-picker/index.js b/packages/meta/lib/time-picker/index.js new file mode 100644 index 0000000..7fb453e --- /dev/null +++ b/packages/meta/lib/time-picker/index.js @@ -0,0 +1,77 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/index.tsx +var time_picker_exports = {}; +__export(time_picker_exports, { + default: () => time_picker_default +}); +module.exports = __toCommonJS(time_picker_exports); +var React = __toESM(require("react")); +var import_PurePanel = __toESM(require("../_util/PurePanel")); +var import_warning = require("../_util/warning"); +var import_date_picker = __toESM(require("../date-picker")); +var { TimePicker: InternalTimePicker, RangePicker: InternalRangePicker } = import_date_picker.default; +var RangePicker = React.forwardRef((props, ref) => ( + // @ts-ignore + /* @__PURE__ */ React.createElement(InternalRangePicker, { ...props, picker: "time", mode: void 0, ref }) +)); +var TimePicker = React.forwardRef( + ({ addon, renderExtraFooter, ...restProps }, ref) => { + if (process.env.NODE_ENV !== "production") { + const warning = (0, import_warning.devUseWarning)("TimePicker"); + warning.deprecated(!addon, "addon", "renderExtraFooter"); + } + const internalRenderExtraFooter = React.useMemo(() => { + if (renderExtraFooter) { + return renderExtraFooter; + } + if (addon) { + return addon; + } + return void 0; + }, [addon, renderExtraFooter]); + return /* @__PURE__ */ React.createElement( + InternalTimePicker, + { + ...restProps, + mode: void 0, + ref, + renderExtraFooter: internalRenderExtraFooter + } + ); + } +); +if (process.env.NODE_ENV !== "production") { + TimePicker.displayName = "TimePicker"; +} +var PurePanel = (0, import_PurePanel.default)(TimePicker, "picker"); +TimePicker._InternalPanelDoNotUseOrYouWillBeFired = PurePanel; +TimePicker.RangePicker = RangePicker; +TimePicker._InternalPanelDoNotUseOrYouWillBeFired = PurePanel; +var time_picker_default = TimePicker; diff --git a/packages/meta/lib/time-picker/locale/ar_EG.d.ts b/packages/meta/lib/time-picker/locale/ar_EG.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ar_EG.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/ar_EG.js b/packages/meta/lib/time-picker/locale/ar_EG.js new file mode 100644 index 0000000..a35918b --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ar_EG.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/ar_EG.ts +var ar_EG_exports = {}; +__export(ar_EG_exports, { + default: () => ar_EG_default +}); +module.exports = __toCommonJS(ar_EG_exports); +var locale = { + placeholder: "اختيار الوقت" +}; +var ar_EG_default = locale; diff --git a/packages/meta/lib/time-picker/locale/az_AZ.d.ts b/packages/meta/lib/time-picker/locale/az_AZ.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/az_AZ.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/az_AZ.js b/packages/meta/lib/time-picker/locale/az_AZ.js new file mode 100644 index 0000000..429dd5c --- /dev/null +++ b/packages/meta/lib/time-picker/locale/az_AZ.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/az_AZ.ts +var az_AZ_exports = {}; +__export(az_AZ_exports, { + default: () => az_AZ_default +}); +module.exports = __toCommonJS(az_AZ_exports); +var locale = { + placeholder: "Vaxtı seç" +}; +var az_AZ_default = locale; diff --git a/packages/meta/lib/time-picker/locale/bg_BG.d.ts b/packages/meta/lib/time-picker/locale/bg_BG.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/bg_BG.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/bg_BG.js b/packages/meta/lib/time-picker/locale/bg_BG.js new file mode 100644 index 0000000..468d69c --- /dev/null +++ b/packages/meta/lib/time-picker/locale/bg_BG.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/bg_BG.ts +var bg_BG_exports = {}; +__export(bg_BG_exports, { + default: () => bg_BG_default +}); +module.exports = __toCommonJS(bg_BG_exports); +var locale = { + placeholder: "Избор на час" +}; +var bg_BG_default = locale; diff --git a/packages/meta/lib/time-picker/locale/bn_BD.d.ts b/packages/meta/lib/time-picker/locale/bn_BD.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/bn_BD.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/bn_BD.js b/packages/meta/lib/time-picker/locale/bn_BD.js new file mode 100644 index 0000000..76c71c2 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/bn_BD.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/bn_BD.ts +var bn_BD_exports = {}; +__export(bn_BD_exports, { + default: () => bn_BD_default +}); +module.exports = __toCommonJS(bn_BD_exports); +var locale = { + placeholder: "সময় নির্বাচন", + rangePlaceholder: ["সময় শুরু", "শেষ সময়"] +}; +var bn_BD_default = locale; diff --git a/packages/meta/lib/time-picker/locale/by_BY.d.ts b/packages/meta/lib/time-picker/locale/by_BY.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/by_BY.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/by_BY.js b/packages/meta/lib/time-picker/locale/by_BY.js new file mode 100644 index 0000000..d606e2c --- /dev/null +++ b/packages/meta/lib/time-picker/locale/by_BY.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/by_BY.ts +var by_BY_exports = {}; +__export(by_BY_exports, { + default: () => by_BY_default +}); +module.exports = __toCommonJS(by_BY_exports); +var locale = { + placeholder: "Выберыце час", + rangePlaceholder: ["Час пачатку", "Час заканчэння"] +}; +var by_BY_default = locale; diff --git a/packages/meta/lib/time-picker/locale/ca_ES.d.ts b/packages/meta/lib/time-picker/locale/ca_ES.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ca_ES.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/ca_ES.js b/packages/meta/lib/time-picker/locale/ca_ES.js new file mode 100644 index 0000000..820b753 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ca_ES.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/ca_ES.ts +var ca_ES_exports = {}; +__export(ca_ES_exports, { + default: () => ca_ES_default +}); +module.exports = __toCommonJS(ca_ES_exports); +var locale = { + placeholder: "Seleccionar hora" +}; +var ca_ES_default = locale; diff --git a/packages/meta/lib/time-picker/locale/cs_CZ.d.ts b/packages/meta/lib/time-picker/locale/cs_CZ.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/cs_CZ.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/cs_CZ.js b/packages/meta/lib/time-picker/locale/cs_CZ.js new file mode 100644 index 0000000..2e0af53 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/cs_CZ.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/cs_CZ.ts +var cs_CZ_exports = {}; +__export(cs_CZ_exports, { + default: () => cs_CZ_default +}); +module.exports = __toCommonJS(cs_CZ_exports); +var locale = { + placeholder: "Vybrat čas" +}; +var cs_CZ_default = locale; diff --git a/packages/meta/lib/time-picker/locale/da_DK.d.ts b/packages/meta/lib/time-picker/locale/da_DK.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/da_DK.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/da_DK.js b/packages/meta/lib/time-picker/locale/da_DK.js new file mode 100644 index 0000000..661947f --- /dev/null +++ b/packages/meta/lib/time-picker/locale/da_DK.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/da_DK.ts +var da_DK_exports = {}; +__export(da_DK_exports, { + default: () => da_DK_default +}); +module.exports = __toCommonJS(da_DK_exports); +var locale = { + placeholder: "Vælg tid", + rangePlaceholder: ["Starttidspunkt", "Sluttidspunkt"] +}; +var da_DK_default = locale; diff --git a/packages/meta/lib/time-picker/locale/de_DE.d.ts b/packages/meta/lib/time-picker/locale/de_DE.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/de_DE.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/de_DE.js b/packages/meta/lib/time-picker/locale/de_DE.js new file mode 100644 index 0000000..c7e0231 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/de_DE.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/de_DE.ts +var de_DE_exports = {}; +__export(de_DE_exports, { + default: () => de_DE_default +}); +module.exports = __toCommonJS(de_DE_exports); +var locale = { + placeholder: "Zeit auswählen", + rangePlaceholder: ["Anfangszeit", "Endzeit"] +}; +var de_DE_default = locale; diff --git a/packages/meta/lib/time-picker/locale/el_GR.d.ts b/packages/meta/lib/time-picker/locale/el_GR.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/el_GR.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/el_GR.js b/packages/meta/lib/time-picker/locale/el_GR.js new file mode 100644 index 0000000..34ca458 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/el_GR.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/el_GR.ts +var el_GR_exports = {}; +__export(el_GR_exports, { + default: () => el_GR_default +}); +module.exports = __toCommonJS(el_GR_exports); +var locale = { + placeholder: "Επιλέξτε ώρα" +}; +var el_GR_default = locale; diff --git a/packages/meta/lib/time-picker/locale/en_GB.d.ts b/packages/meta/lib/time-picker/locale/en_GB.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/en_GB.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/en_GB.js b/packages/meta/lib/time-picker/locale/en_GB.js new file mode 100644 index 0000000..29d5f97 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/en_GB.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/en_GB.ts +var en_GB_exports = {}; +__export(en_GB_exports, { + default: () => en_GB_default +}); +module.exports = __toCommonJS(en_GB_exports); +var locale = { + placeholder: "Select time" +}; +var en_GB_default = locale; diff --git a/packages/meta/lib/time-picker/locale/en_US.d.ts b/packages/meta/lib/time-picker/locale/en_US.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/en_US.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/en_US.js b/packages/meta/lib/time-picker/locale/en_US.js new file mode 100644 index 0000000..5489525 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/en_US.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/en_US.ts +var en_US_exports = {}; +__export(en_US_exports, { + default: () => en_US_default +}); +module.exports = __toCommonJS(en_US_exports); +var locale = { + placeholder: "Select time", + rangePlaceholder: ["Start time", "End time"] +}; +var en_US_default = locale; diff --git a/packages/meta/lib/time-picker/locale/es_ES.d.ts b/packages/meta/lib/time-picker/locale/es_ES.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/es_ES.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/es_ES.js b/packages/meta/lib/time-picker/locale/es_ES.js new file mode 100644 index 0000000..250ab7b --- /dev/null +++ b/packages/meta/lib/time-picker/locale/es_ES.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/es_ES.ts +var es_ES_exports = {}; +__export(es_ES_exports, { + default: () => es_ES_default +}); +module.exports = __toCommonJS(es_ES_exports); +var locale = { + placeholder: "Seleccionar hora" +}; +var es_ES_default = locale; diff --git a/packages/meta/lib/time-picker/locale/et_EE.d.ts b/packages/meta/lib/time-picker/locale/et_EE.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/et_EE.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/et_EE.js b/packages/meta/lib/time-picker/locale/et_EE.js new file mode 100644 index 0000000..4d0a346 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/et_EE.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/et_EE.ts +var et_EE_exports = {}; +__export(et_EE_exports, { + default: () => et_EE_default +}); +module.exports = __toCommonJS(et_EE_exports); +var locale = { + placeholder: "Vali aeg" +}; +var et_EE_default = locale; diff --git a/packages/meta/lib/time-picker/locale/eu_ES.d.ts b/packages/meta/lib/time-picker/locale/eu_ES.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/eu_ES.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/eu_ES.js b/packages/meta/lib/time-picker/locale/eu_ES.js new file mode 100644 index 0000000..590c28f --- /dev/null +++ b/packages/meta/lib/time-picker/locale/eu_ES.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/eu_ES.ts +var eu_ES_exports = {}; +__export(eu_ES_exports, { + default: () => eu_ES_default +}); +module.exports = __toCommonJS(eu_ES_exports); +var locale = { + placeholder: "Aukeratu ordua" +}; +var eu_ES_default = locale; diff --git a/packages/meta/lib/time-picker/locale/fa_IR.d.ts b/packages/meta/lib/time-picker/locale/fa_IR.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/fa_IR.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/fa_IR.js b/packages/meta/lib/time-picker/locale/fa_IR.js new file mode 100644 index 0000000..b03a9c2 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/fa_IR.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/fa_IR.ts +var fa_IR_exports = {}; +__export(fa_IR_exports, { + default: () => fa_IR_default +}); +module.exports = __toCommonJS(fa_IR_exports); +var locale = { + placeholder: "انتخاب زمان", + rangePlaceholder: ["زمان شروع", "زمان پایان"] +}; +var fa_IR_default = locale; diff --git a/packages/meta/lib/time-picker/locale/fi_FI.d.ts b/packages/meta/lib/time-picker/locale/fi_FI.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/fi_FI.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/fi_FI.js b/packages/meta/lib/time-picker/locale/fi_FI.js new file mode 100644 index 0000000..a33e8fd --- /dev/null +++ b/packages/meta/lib/time-picker/locale/fi_FI.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/fi_FI.ts +var fi_FI_exports = {}; +__export(fi_FI_exports, { + default: () => fi_FI_default +}); +module.exports = __toCommonJS(fi_FI_exports); +var locale = { + placeholder: "Valitse aika" +}; +var fi_FI_default = locale; diff --git a/packages/meta/lib/time-picker/locale/fr_BE.d.ts b/packages/meta/lib/time-picker/locale/fr_BE.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/fr_BE.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/fr_BE.js b/packages/meta/lib/time-picker/locale/fr_BE.js new file mode 100644 index 0000000..2d03b1c --- /dev/null +++ b/packages/meta/lib/time-picker/locale/fr_BE.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/fr_BE.ts +var fr_BE_exports = {}; +__export(fr_BE_exports, { + default: () => fr_BE_default +}); +module.exports = __toCommonJS(fr_BE_exports); +var locale = { + placeholder: "Sélectionner l'heure", + rangePlaceholder: ["Heure de début", "Heure de fin"] +}; +var fr_BE_default = locale; diff --git a/packages/meta/lib/time-picker/locale/fr_CA.d.ts b/packages/meta/lib/time-picker/locale/fr_CA.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/fr_CA.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/fr_CA.js b/packages/meta/lib/time-picker/locale/fr_CA.js new file mode 100644 index 0000000..5619e0f --- /dev/null +++ b/packages/meta/lib/time-picker/locale/fr_CA.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/fr_CA.ts +var fr_CA_exports = {}; +__export(fr_CA_exports, { + default: () => fr_CA_default +}); +module.exports = __toCommonJS(fr_CA_exports); +var locale = { + placeholder: "Sélectionner l'heure", + rangePlaceholder: ["Heure de début", "Heure de fin"] +}; +var fr_CA_default = locale; diff --git a/packages/meta/lib/time-picker/locale/fr_FR.d.ts b/packages/meta/lib/time-picker/locale/fr_FR.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/fr_FR.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/fr_FR.js b/packages/meta/lib/time-picker/locale/fr_FR.js new file mode 100644 index 0000000..9df8677 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/fr_FR.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/fr_FR.ts +var fr_FR_exports = {}; +__export(fr_FR_exports, { + default: () => fr_FR_default +}); +module.exports = __toCommonJS(fr_FR_exports); +var locale = { + placeholder: "Sélectionner l'heure", + rangePlaceholder: ["Heure de début", "Heure de fin"] +}; +var fr_FR_default = locale; diff --git a/packages/meta/lib/time-picker/locale/ga_IE.d.ts b/packages/meta/lib/time-picker/locale/ga_IE.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ga_IE.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/ga_IE.js b/packages/meta/lib/time-picker/locale/ga_IE.js new file mode 100644 index 0000000..7b0058c --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ga_IE.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/ga_IE.ts +var ga_IE_exports = {}; +__export(ga_IE_exports, { + default: () => ga_IE_default +}); +module.exports = __toCommonJS(ga_IE_exports); +var locale = { + placeholder: "Roghnaigh am", + rangePlaceholder: ["Am tosaigh", "Am deiridh"] +}; +var ga_IE_default = locale; diff --git a/packages/meta/lib/time-picker/locale/gl_ES.d.ts b/packages/meta/lib/time-picker/locale/gl_ES.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/gl_ES.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/gl_ES.js b/packages/meta/lib/time-picker/locale/gl_ES.js new file mode 100644 index 0000000..5c89b63 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/gl_ES.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/gl_ES.ts +var gl_ES_exports = {}; +__export(gl_ES_exports, { + default: () => gl_ES_default +}); +module.exports = __toCommonJS(gl_ES_exports); +var locale = { + placeholder: "Escolla hora" +}; +var gl_ES_default = locale; diff --git a/packages/meta/lib/time-picker/locale/he_IL.d.ts b/packages/meta/lib/time-picker/locale/he_IL.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/he_IL.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/he_IL.js b/packages/meta/lib/time-picker/locale/he_IL.js new file mode 100644 index 0000000..7eca6be --- /dev/null +++ b/packages/meta/lib/time-picker/locale/he_IL.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/he_IL.ts +var he_IL_exports = {}; +__export(he_IL_exports, { + default: () => he_IL_default +}); +module.exports = __toCommonJS(he_IL_exports); +var locale = { + placeholder: "בחר שעה" +}; +var he_IL_default = locale; diff --git a/packages/meta/lib/time-picker/locale/hi_IN.d.ts b/packages/meta/lib/time-picker/locale/hi_IN.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/hi_IN.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/hi_IN.js b/packages/meta/lib/time-picker/locale/hi_IN.js new file mode 100644 index 0000000..31a170f --- /dev/null +++ b/packages/meta/lib/time-picker/locale/hi_IN.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/hi_IN.ts +var hi_IN_exports = {}; +__export(hi_IN_exports, { + default: () => hi_IN_default +}); +module.exports = __toCommonJS(hi_IN_exports); +var locale = { + placeholder: "समय का चयन करें", + rangePlaceholder: ["आरंभिक समय", "अंत समय"] +}; +var hi_IN_default = locale; diff --git a/packages/meta/lib/time-picker/locale/hr_HR.d.ts b/packages/meta/lib/time-picker/locale/hr_HR.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/hr_HR.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/hr_HR.js b/packages/meta/lib/time-picker/locale/hr_HR.js new file mode 100644 index 0000000..d73a28f --- /dev/null +++ b/packages/meta/lib/time-picker/locale/hr_HR.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/hr_HR.ts +var hr_HR_exports = {}; +__export(hr_HR_exports, { + default: () => hr_HR_default +}); +module.exports = __toCommonJS(hr_HR_exports); +var locale = { + placeholder: "Odaberite vrijeme", + rangePlaceholder: ["Vrijeme početka", "Vrijeme završetka"] +}; +var hr_HR_default = locale; diff --git a/packages/meta/lib/time-picker/locale/hu_HU.d.ts b/packages/meta/lib/time-picker/locale/hu_HU.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/hu_HU.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/hu_HU.js b/packages/meta/lib/time-picker/locale/hu_HU.js new file mode 100644 index 0000000..b3aef3f --- /dev/null +++ b/packages/meta/lib/time-picker/locale/hu_HU.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/hu_HU.ts +var hu_HU_exports = {}; +__export(hu_HU_exports, { + default: () => hu_HU_default +}); +module.exports = __toCommonJS(hu_HU_exports); +var locale = { + placeholder: "Válasszon időt" +}; +var hu_HU_default = locale; diff --git a/packages/meta/lib/time-picker/locale/id_ID.d.ts b/packages/meta/lib/time-picker/locale/id_ID.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/id_ID.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/id_ID.js b/packages/meta/lib/time-picker/locale/id_ID.js new file mode 100644 index 0000000..39f8a99 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/id_ID.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/id_ID.ts +var id_ID_exports = {}; +__export(id_ID_exports, { + default: () => id_ID_default +}); +module.exports = __toCommonJS(id_ID_exports); +var locale = { + placeholder: "Pilih waktu" +}; +var id_ID_default = locale; diff --git a/packages/meta/lib/time-picker/locale/is_IS.d.ts b/packages/meta/lib/time-picker/locale/is_IS.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/is_IS.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/is_IS.js b/packages/meta/lib/time-picker/locale/is_IS.js new file mode 100644 index 0000000..aea4e37 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/is_IS.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/is_IS.ts +var is_IS_exports = {}; +__export(is_IS_exports, { + default: () => is_IS_default +}); +module.exports = __toCommonJS(is_IS_exports); +var locale = { + placeholder: "Velja tíma" +}; +var is_IS_default = locale; diff --git a/packages/meta/lib/time-picker/locale/it_IT.d.ts b/packages/meta/lib/time-picker/locale/it_IT.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/it_IT.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/it_IT.js b/packages/meta/lib/time-picker/locale/it_IT.js new file mode 100644 index 0000000..24f7c8c --- /dev/null +++ b/packages/meta/lib/time-picker/locale/it_IT.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/it_IT.ts +var it_IT_exports = {}; +__export(it_IT_exports, { + default: () => it_IT_default +}); +module.exports = __toCommonJS(it_IT_exports); +var locale = { + placeholder: "Selezionare l'orario" +}; +var it_IT_default = locale; diff --git a/packages/meta/lib/time-picker/locale/ja_JP.d.ts b/packages/meta/lib/time-picker/locale/ja_JP.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ja_JP.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/ja_JP.js b/packages/meta/lib/time-picker/locale/ja_JP.js new file mode 100644 index 0000000..5cad281 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ja_JP.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/ja_JP.ts +var ja_JP_exports = {}; +__export(ja_JP_exports, { + default: () => ja_JP_default +}); +module.exports = __toCommonJS(ja_JP_exports); +var locale = { + placeholder: "時間を選択", + rangePlaceholder: ["開始時間", "終了時間"] +}; +var ja_JP_default = locale; diff --git a/packages/meta/lib/time-picker/locale/ka_GE.d.ts b/packages/meta/lib/time-picker/locale/ka_GE.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ka_GE.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/ka_GE.js b/packages/meta/lib/time-picker/locale/ka_GE.js new file mode 100644 index 0000000..ca8e392 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ka_GE.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/ka_GE.ts +var ka_GE_exports = {}; +__export(ka_GE_exports, { + default: () => ka_GE_default +}); +module.exports = __toCommonJS(ka_GE_exports); +var locale = { + placeholder: "აირჩიეთ დრო", + rangePlaceholder: ["საწყისი თარიღი", "საბოლოო თარიღი"] +}; +var ka_GE_default = locale; diff --git a/packages/meta/lib/time-picker/locale/kk_KZ.d.ts b/packages/meta/lib/time-picker/locale/kk_KZ.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/kk_KZ.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/kk_KZ.js b/packages/meta/lib/time-picker/locale/kk_KZ.js new file mode 100644 index 0000000..88c2402 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/kk_KZ.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/kk_KZ.ts +var kk_KZ_exports = {}; +__export(kk_KZ_exports, { + default: () => kk_KZ_default +}); +module.exports = __toCommonJS(kk_KZ_exports); +var locale = { + placeholder: "Уақытты таңдаңыз", + rangePlaceholder: ["Бастау уақыты", "Аяқталу уақыты"] +}; +var kk_KZ_default = locale; diff --git a/packages/meta/lib/time-picker/locale/km_KH.d.ts b/packages/meta/lib/time-picker/locale/km_KH.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/km_KH.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/km_KH.js b/packages/meta/lib/time-picker/locale/km_KH.js new file mode 100644 index 0000000..043e131 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/km_KH.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/km_KH.ts +var km_KH_exports = {}; +__export(km_KH_exports, { + default: () => km_KH_default +}); +module.exports = __toCommonJS(km_KH_exports); +var locale = { + placeholder: "រើសម៉ោង", + rangePlaceholder: ["ម៉ោងចប់ផ្ដើម", "ម៉ោងបញ្ចប់"] +}; +var km_KH_default = locale; diff --git a/packages/meta/lib/time-picker/locale/kmr_IQ.d.ts b/packages/meta/lib/time-picker/locale/kmr_IQ.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/kmr_IQ.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/kmr_IQ.js b/packages/meta/lib/time-picker/locale/kmr_IQ.js new file mode 100644 index 0000000..f9a4ee0 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/kmr_IQ.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/kmr_IQ.ts +var kmr_IQ_exports = {}; +__export(kmr_IQ_exports, { + default: () => kmr_IQ_default +}); +module.exports = __toCommonJS(kmr_IQ_exports); +var locale = { + placeholder: "Demê hilbijêre" +}; +var kmr_IQ_default = locale; diff --git a/packages/meta/lib/time-picker/locale/kn_IN.d.ts b/packages/meta/lib/time-picker/locale/kn_IN.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/kn_IN.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/kn_IN.js b/packages/meta/lib/time-picker/locale/kn_IN.js new file mode 100644 index 0000000..b419c7f --- /dev/null +++ b/packages/meta/lib/time-picker/locale/kn_IN.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/kn_IN.ts +var kn_IN_exports = {}; +__export(kn_IN_exports, { + default: () => kn_IN_default +}); +module.exports = __toCommonJS(kn_IN_exports); +var locale = { + placeholder: "ಸಮಯ ಆಯ್ಕೆಮಾಡಿ" +}; +var kn_IN_default = locale; diff --git a/packages/meta/lib/time-picker/locale/ko_KR.d.ts b/packages/meta/lib/time-picker/locale/ko_KR.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ko_KR.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/ko_KR.js b/packages/meta/lib/time-picker/locale/ko_KR.js new file mode 100644 index 0000000..ccc67d7 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ko_KR.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/ko_KR.ts +var ko_KR_exports = {}; +__export(ko_KR_exports, { + default: () => ko_KR_default +}); +module.exports = __toCommonJS(ko_KR_exports); +var locale = { + placeholder: "시간 선택", + rangePlaceholder: ["시작 시간", "종료 시간"] +}; +var ko_KR_default = locale; diff --git a/packages/meta/lib/time-picker/locale/lt_LT.d.ts b/packages/meta/lib/time-picker/locale/lt_LT.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/lt_LT.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/lt_LT.js b/packages/meta/lib/time-picker/locale/lt_LT.js new file mode 100644 index 0000000..fd180d4 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/lt_LT.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/lt_LT.ts +var lt_LT_exports = {}; +__export(lt_LT_exports, { + default: () => lt_LT_default +}); +module.exports = __toCommonJS(lt_LT_exports); +var locale = { + placeholder: "Pasirinkite laiką", + rangePlaceholder: ["Pradžios laikas", "Pabaigos laikas"] +}; +var lt_LT_default = locale; diff --git a/packages/meta/lib/time-picker/locale/lv_LV.d.ts b/packages/meta/lib/time-picker/locale/lv_LV.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/lv_LV.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/lv_LV.js b/packages/meta/lib/time-picker/locale/lv_LV.js new file mode 100644 index 0000000..99fa25c --- /dev/null +++ b/packages/meta/lib/time-picker/locale/lv_LV.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/lv_LV.ts +var lv_LV_exports = {}; +__export(lv_LV_exports, { + default: () => lv_LV_default +}); +module.exports = __toCommonJS(lv_LV_exports); +var locale = { + placeholder: "Izvēlieties laiku" +}; +var lv_LV_default = locale; diff --git a/packages/meta/lib/time-picker/locale/mk_MK.d.ts b/packages/meta/lib/time-picker/locale/mk_MK.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/mk_MK.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/mk_MK.js b/packages/meta/lib/time-picker/locale/mk_MK.js new file mode 100644 index 0000000..e17a1d6 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/mk_MK.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/mk_MK.ts +var mk_MK_exports = {}; +__export(mk_MK_exports, { + default: () => mk_MK_default +}); +module.exports = __toCommonJS(mk_MK_exports); +var locale = { + placeholder: "Избери време" +}; +var mk_MK_default = locale; diff --git a/packages/meta/lib/time-picker/locale/ml_IN.d.ts b/packages/meta/lib/time-picker/locale/ml_IN.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ml_IN.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/ml_IN.js b/packages/meta/lib/time-picker/locale/ml_IN.js new file mode 100644 index 0000000..d2987f3 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ml_IN.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/ml_IN.ts +var ml_IN_exports = {}; +__export(ml_IN_exports, { + default: () => ml_IN_default +}); +module.exports = __toCommonJS(ml_IN_exports); +var locale = { + placeholder: "സമയം തിരഞ്ഞെടുക്കുക", + rangePlaceholder: ["ആരംഭ സമയം", "അവസാന സമയം"] +}; +var ml_IN_default = locale; diff --git a/packages/meta/lib/time-picker/locale/mn_MN.d.ts b/packages/meta/lib/time-picker/locale/mn_MN.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/mn_MN.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/mn_MN.js b/packages/meta/lib/time-picker/locale/mn_MN.js new file mode 100644 index 0000000..7c4be1e --- /dev/null +++ b/packages/meta/lib/time-picker/locale/mn_MN.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/mn_MN.ts +var mn_MN_exports = {}; +__export(mn_MN_exports, { + default: () => mn_MN_default +}); +module.exports = __toCommonJS(mn_MN_exports); +var locale = { + placeholder: "Цаг сонгох" +}; +var mn_MN_default = locale; diff --git a/packages/meta/lib/time-picker/locale/ms_MY.d.ts b/packages/meta/lib/time-picker/locale/ms_MY.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ms_MY.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/ms_MY.js b/packages/meta/lib/time-picker/locale/ms_MY.js new file mode 100644 index 0000000..79c67d2 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ms_MY.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/ms_MY.ts +var ms_MY_exports = {}; +__export(ms_MY_exports, { + default: () => ms_MY_default +}); +module.exports = __toCommonJS(ms_MY_exports); +var locale = { + placeholder: "Sila pilih masa" +}; +var ms_MY_default = locale; diff --git a/packages/meta/lib/time-picker/locale/my_MM.d.ts b/packages/meta/lib/time-picker/locale/my_MM.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/my_MM.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/my_MM.js b/packages/meta/lib/time-picker/locale/my_MM.js new file mode 100644 index 0000000..3fe891c --- /dev/null +++ b/packages/meta/lib/time-picker/locale/my_MM.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/my_MM.ts +var my_MM_exports = {}; +__export(my_MM_exports, { + default: () => my_MM_default +}); +module.exports = __toCommonJS(my_MM_exports); +var locale = { + placeholder: "အချိန်ရွေးပါ။", + rangePlaceholder: ["စတင်ချိန်", "ကုန်ဆုံးချိန်"] +}; +var my_MM_default = locale; diff --git a/packages/meta/lib/time-picker/locale/nb_NO.d.ts b/packages/meta/lib/time-picker/locale/nb_NO.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/nb_NO.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/nb_NO.js b/packages/meta/lib/time-picker/locale/nb_NO.js new file mode 100644 index 0000000..e291642 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/nb_NO.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/nb_NO.ts +var nb_NO_exports = {}; +__export(nb_NO_exports, { + default: () => nb_NO_default +}); +module.exports = __toCommonJS(nb_NO_exports); +var locale = { + placeholder: "Velg tid", + rangePlaceholder: ["Starttid", "Sluttid"] +}; +var nb_NO_default = locale; diff --git a/packages/meta/lib/time-picker/locale/nl_BE.d.ts b/packages/meta/lib/time-picker/locale/nl_BE.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/nl_BE.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/nl_BE.js b/packages/meta/lib/time-picker/locale/nl_BE.js new file mode 100644 index 0000000..f9077fa --- /dev/null +++ b/packages/meta/lib/time-picker/locale/nl_BE.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/nl_BE.ts +var nl_BE_exports = {}; +__export(nl_BE_exports, { + default: () => nl_BE_default +}); +module.exports = __toCommonJS(nl_BE_exports); +var locale = { + placeholder: "Selecteer tijd", + rangePlaceholder: ["Start tijd", "Eind tijd"] +}; +var nl_BE_default = locale; diff --git a/packages/meta/lib/time-picker/locale/nl_NL.d.ts b/packages/meta/lib/time-picker/locale/nl_NL.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/nl_NL.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/nl_NL.js b/packages/meta/lib/time-picker/locale/nl_NL.js new file mode 100644 index 0000000..747eb6e --- /dev/null +++ b/packages/meta/lib/time-picker/locale/nl_NL.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/nl_NL.ts +var nl_NL_exports = {}; +__export(nl_NL_exports, { + default: () => nl_NL_default +}); +module.exports = __toCommonJS(nl_NL_exports); +var locale = { + placeholder: "Selecteer tijd", + rangePlaceholder: ["Start tijd", "Eind tijd"] +}; +var nl_NL_default = locale; diff --git a/packages/meta/lib/time-picker/locale/pl_PL.d.ts b/packages/meta/lib/time-picker/locale/pl_PL.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/pl_PL.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/pl_PL.js b/packages/meta/lib/time-picker/locale/pl_PL.js new file mode 100644 index 0000000..158ac58 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/pl_PL.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/pl_PL.ts +var pl_PL_exports = {}; +__export(pl_PL_exports, { + default: () => pl_PL_default +}); +module.exports = __toCommonJS(pl_PL_exports); +var locale = { + placeholder: "Wybierz godzinę" +}; +var pl_PL_default = locale; diff --git a/packages/meta/lib/time-picker/locale/pt_BR.d.ts b/packages/meta/lib/time-picker/locale/pt_BR.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/pt_BR.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/pt_BR.js b/packages/meta/lib/time-picker/locale/pt_BR.js new file mode 100644 index 0000000..37e9967 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/pt_BR.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/pt_BR.ts +var pt_BR_exports = {}; +__export(pt_BR_exports, { + default: () => pt_BR_default +}); +module.exports = __toCommonJS(pt_BR_exports); +var locale = { + placeholder: "Hora" +}; +var pt_BR_default = locale; diff --git a/packages/meta/lib/time-picker/locale/pt_PT.d.ts b/packages/meta/lib/time-picker/locale/pt_PT.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/pt_PT.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/pt_PT.js b/packages/meta/lib/time-picker/locale/pt_PT.js new file mode 100644 index 0000000..7214141 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/pt_PT.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/pt_PT.ts +var pt_PT_exports = {}; +__export(pt_PT_exports, { + default: () => pt_PT_default +}); +module.exports = __toCommonJS(pt_PT_exports); +var locale = { + placeholder: "Hora" +}; +var pt_PT_default = locale; diff --git a/packages/meta/lib/time-picker/locale/ro_RO.d.ts b/packages/meta/lib/time-picker/locale/ro_RO.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ro_RO.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/ro_RO.js b/packages/meta/lib/time-picker/locale/ro_RO.js new file mode 100644 index 0000000..23cb8d3 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ro_RO.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/ro_RO.ts +var ro_RO_exports = {}; +__export(ro_RO_exports, { + default: () => ro_RO_default +}); +module.exports = __toCommonJS(ro_RO_exports); +var locale = { + placeholder: "Selectează ora" +}; +var ro_RO_default = locale; diff --git a/packages/meta/lib/time-picker/locale/ru_RU.d.ts b/packages/meta/lib/time-picker/locale/ru_RU.d.ts new file mode 100644 index 0000000..ea3ada2 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ru_RU.d.ts @@ -0,0 +1,4 @@ +/** Created by Andrey Gayvoronsky on 13/04/16. */ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/ru_RU.js b/packages/meta/lib/time-picker/locale/ru_RU.js new file mode 100644 index 0000000..b2a6dfe --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ru_RU.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/ru_RU.ts +var ru_RU_exports = {}; +__export(ru_RU_exports, { + default: () => ru_RU_default +}); +module.exports = __toCommonJS(ru_RU_exports); +var locale = { + placeholder: "Выберите время", + rangePlaceholder: ["Время начала", "Время окончания"] +}; +var ru_RU_default = locale; diff --git a/packages/meta/lib/time-picker/locale/si_LK.d.ts b/packages/meta/lib/time-picker/locale/si_LK.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/si_LK.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/si_LK.js b/packages/meta/lib/time-picker/locale/si_LK.js new file mode 100644 index 0000000..58fd79f --- /dev/null +++ b/packages/meta/lib/time-picker/locale/si_LK.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/si_LK.ts +var si_LK_exports = {}; +__export(si_LK_exports, { + default: () => si_LK_default +}); +module.exports = __toCommonJS(si_LK_exports); +var locale = { + placeholder: "වේලාව තෝරන්න", + rangePlaceholder: ["ආරම්භක වේලාව", "නිමවන වේලාව"] +}; +var si_LK_default = locale; diff --git a/packages/meta/lib/time-picker/locale/sk_SK.d.ts b/packages/meta/lib/time-picker/locale/sk_SK.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/sk_SK.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/sk_SK.js b/packages/meta/lib/time-picker/locale/sk_SK.js new file mode 100644 index 0000000..5fd9c9e --- /dev/null +++ b/packages/meta/lib/time-picker/locale/sk_SK.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/sk_SK.ts +var sk_SK_exports = {}; +__export(sk_SK_exports, { + default: () => sk_SK_default +}); +module.exports = __toCommonJS(sk_SK_exports); +var locale = { + placeholder: "Vybrať čas" +}; +var sk_SK_default = locale; diff --git a/packages/meta/lib/time-picker/locale/sl_SI.d.ts b/packages/meta/lib/time-picker/locale/sl_SI.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/sl_SI.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/sl_SI.js b/packages/meta/lib/time-picker/locale/sl_SI.js new file mode 100644 index 0000000..2417cf7 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/sl_SI.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/sl_SI.ts +var sl_SI_exports = {}; +__export(sl_SI_exports, { + default: () => sl_SI_default +}); +module.exports = __toCommonJS(sl_SI_exports); +var locale = { + placeholder: "Izberite čas" +}; +var sl_SI_default = locale; diff --git a/packages/meta/lib/time-picker/locale/sr_RS.d.ts b/packages/meta/lib/time-picker/locale/sr_RS.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/sr_RS.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/sr_RS.js b/packages/meta/lib/time-picker/locale/sr_RS.js new file mode 100644 index 0000000..b37827b --- /dev/null +++ b/packages/meta/lib/time-picker/locale/sr_RS.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/sr_RS.ts +var sr_RS_exports = {}; +__export(sr_RS_exports, { + default: () => sr_RS_default +}); +module.exports = __toCommonJS(sr_RS_exports); +var locale = { + placeholder: "Izaberi vreme", + rangePlaceholder: ["Vreme početka", "Vreme završetka"] +}; +var sr_RS_default = locale; diff --git a/packages/meta/lib/time-picker/locale/sv_SE.d.ts b/packages/meta/lib/time-picker/locale/sv_SE.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/sv_SE.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/sv_SE.js b/packages/meta/lib/time-picker/locale/sv_SE.js new file mode 100644 index 0000000..796ca85 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/sv_SE.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/sv_SE.ts +var sv_SE_exports = {}; +__export(sv_SE_exports, { + default: () => sv_SE_default +}); +module.exports = __toCommonJS(sv_SE_exports); +var locale = { + placeholder: "Välj tid" +}; +var sv_SE_default = locale; diff --git a/packages/meta/lib/time-picker/locale/ta_IN.d.ts b/packages/meta/lib/time-picker/locale/ta_IN.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ta_IN.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/ta_IN.js b/packages/meta/lib/time-picker/locale/ta_IN.js new file mode 100644 index 0000000..a51e868 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ta_IN.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/ta_IN.ts +var ta_IN_exports = {}; +__export(ta_IN_exports, { + default: () => ta_IN_default +}); +module.exports = __toCommonJS(ta_IN_exports); +var locale = { + placeholder: "நேரத்தைத் தேர்ந்தெடுக்கவும்" +}; +var ta_IN_default = locale; diff --git a/packages/meta/lib/time-picker/locale/th_TH.d.ts b/packages/meta/lib/time-picker/locale/th_TH.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/th_TH.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/th_TH.js b/packages/meta/lib/time-picker/locale/th_TH.js new file mode 100644 index 0000000..239887e --- /dev/null +++ b/packages/meta/lib/time-picker/locale/th_TH.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/th_TH.ts +var th_TH_exports = {}; +__export(th_TH_exports, { + default: () => th_TH_default +}); +module.exports = __toCommonJS(th_TH_exports); +var locale = { + placeholder: "เลือกเวลา" +}; +var th_TH_default = locale; diff --git a/packages/meta/lib/time-picker/locale/tk_TK.d.ts b/packages/meta/lib/time-picker/locale/tk_TK.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/tk_TK.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/tk_TK.js b/packages/meta/lib/time-picker/locale/tk_TK.js new file mode 100644 index 0000000..d8296cd --- /dev/null +++ b/packages/meta/lib/time-picker/locale/tk_TK.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/tk_TK.ts +var tk_TK_exports = {}; +__export(tk_TK_exports, { + default: () => tk_TK_default +}); +module.exports = __toCommonJS(tk_TK_exports); +var locale = { + placeholder: "Wagty saýlaň", + rangePlaceholder: ["Başlanýan wagty", "Gutarýan wagty"] +}; +var tk_TK_default = locale; diff --git a/packages/meta/lib/time-picker/locale/tr_TR.d.ts b/packages/meta/lib/time-picker/locale/tr_TR.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/tr_TR.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/tr_TR.js b/packages/meta/lib/time-picker/locale/tr_TR.js new file mode 100644 index 0000000..1f83bc4 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/tr_TR.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/tr_TR.ts +var tr_TR_exports = {}; +__export(tr_TR_exports, { + default: () => tr_TR_default +}); +module.exports = __toCommonJS(tr_TR_exports); +var locale = { + placeholder: "Zaman seç", + rangePlaceholder: ["Başlangıç zamanı", "Bitiş zamanı"] +}; +var tr_TR_default = locale; diff --git a/packages/meta/lib/time-picker/locale/uk_UA.d.ts b/packages/meta/lib/time-picker/locale/uk_UA.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/uk_UA.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/uk_UA.js b/packages/meta/lib/time-picker/locale/uk_UA.js new file mode 100644 index 0000000..e09fb53 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/uk_UA.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/uk_UA.ts +var uk_UA_exports = {}; +__export(uk_UA_exports, { + default: () => uk_UA_default +}); +module.exports = __toCommonJS(uk_UA_exports); +var locale = { + placeholder: "Оберіть час" +}; +var uk_UA_default = locale; diff --git a/packages/meta/lib/time-picker/locale/ur_PK.d.ts b/packages/meta/lib/time-picker/locale/ur_PK.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ur_PK.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/ur_PK.js b/packages/meta/lib/time-picker/locale/ur_PK.js new file mode 100644 index 0000000..b45e5dc --- /dev/null +++ b/packages/meta/lib/time-picker/locale/ur_PK.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/ur_PK.ts +var ur_PK_exports = {}; +__export(ur_PK_exports, { + default: () => ur_PK_default +}); +module.exports = __toCommonJS(ur_PK_exports); +var locale = { + placeholder: "وقت منتخب کریں", + rangePlaceholder: ["وقت منتخب کریں", "آخر وقت"] +}; +var ur_PK_default = locale; diff --git a/packages/meta/lib/time-picker/locale/vi_VN.d.ts b/packages/meta/lib/time-picker/locale/vi_VN.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/vi_VN.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/vi_VN.js b/packages/meta/lib/time-picker/locale/vi_VN.js new file mode 100644 index 0000000..4768de3 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/vi_VN.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/vi_VN.ts +var vi_VN_exports = {}; +__export(vi_VN_exports, { + default: () => vi_VN_default +}); +module.exports = __toCommonJS(vi_VN_exports); +var locale = { + placeholder: "Chọn thời gian", + rangePlaceholder: ["Bắt đầu", "Kết thúc"] +}; +var vi_VN_default = locale; diff --git a/packages/meta/lib/time-picker/locale/zh_CN.d.ts b/packages/meta/lib/time-picker/locale/zh_CN.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/zh_CN.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/zh_CN.js b/packages/meta/lib/time-picker/locale/zh_CN.js new file mode 100644 index 0000000..aaaefd7 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/zh_CN.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/zh_CN.ts +var zh_CN_exports = {}; +__export(zh_CN_exports, { + default: () => zh_CN_default +}); +module.exports = __toCommonJS(zh_CN_exports); +var locale = { + placeholder: "请选择时间", + rangePlaceholder: ["开始时间", "结束时间"] +}; +var zh_CN_default = locale; diff --git a/packages/meta/lib/time-picker/locale/zh_TW.d.ts b/packages/meta/lib/time-picker/locale/zh_TW.d.ts new file mode 100644 index 0000000..151bba9 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/zh_TW.d.ts @@ -0,0 +1,3 @@ +import type { TimePickerLocale } from '../index'; +declare const locale: TimePickerLocale; +export default locale; diff --git a/packages/meta/lib/time-picker/locale/zh_TW.js b/packages/meta/lib/time-picker/locale/zh_TW.js new file mode 100644 index 0000000..1ca7425 --- /dev/null +++ b/packages/meta/lib/time-picker/locale/zh_TW.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/time-picker/locale/zh_TW.ts +var zh_TW_exports = {}; +__export(zh_TW_exports, { + default: () => zh_TW_default +}); +module.exports = __toCommonJS(zh_TW_exports); +var locale = { + placeholder: "請選擇時間" +}; +var zh_TW_default = locale; diff --git a/packages/meta/lib/tooltip/PurePanel.d.ts b/packages/meta/lib/tooltip/PurePanel.d.ts new file mode 100644 index 0000000..55b6b4b --- /dev/null +++ b/packages/meta/lib/tooltip/PurePanel.d.ts @@ -0,0 +1,7 @@ +import * as React from 'react'; +import type { TooltipProps } from '.'; +export interface PurePanelProps extends Omit { +} +/** @private Internal Component. Do not use in your production. */ +declare const PurePanel: React.FC; +export default PurePanel; diff --git a/packages/meta/lib/tooltip/PurePanel.js b/packages/meta/lib/tooltip/PurePanel.js new file mode 100644 index 0000000..3e03086 --- /dev/null +++ b/packages/meta/lib/tooltip/PurePanel.js @@ -0,0 +1,81 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/tooltip/PurePanel.tsx +var PurePanel_exports = {}; +__export(PurePanel_exports, { + default: () => PurePanel_default +}); +module.exports = __toCommonJS(PurePanel_exports); +var import_classnames = __toESM(require("classnames")); +var import_rc_tooltip = require("rc-tooltip"); +var React = __toESM(require("react")); +var import_config_provider = require("../config-provider"); +var import_style = __toESM(require("./style")); +var import_util = require("./util"); +var PurePanel = (props) => { + const { + prefixCls: customizePrefixCls, + className, + placement = "top", + title, + color, + overlayInnerStyle + } = props; + const { getPrefixCls } = React.useContext(import_config_provider.ConfigContext); + const prefixCls = getPrefixCls("tooltip", customizePrefixCls); + const [wrapCSSVar, hashId, cssVarCls] = (0, import_style.default)(prefixCls); + const colorInfo = (0, import_util.parseColor)(prefixCls, color); + const arrowContentStyle = colorInfo.arrowStyle; + const formattedOverlayInnerStyle = { + ...overlayInnerStyle, + ...colorInfo.overlayStyle + }; + const cls = (0, import_classnames.default)( + hashId, + cssVarCls, + prefixCls, + `${prefixCls}-pure`, + `${prefixCls}-placement-${placement}`, + className, + colorInfo.className + ); + return wrapCSSVar( + /* @__PURE__ */ React.createElement("div", { className: cls, style: arrowContentStyle }, /* @__PURE__ */ React.createElement("div", { className: `${prefixCls}-arrow` }), /* @__PURE__ */ React.createElement( + import_rc_tooltip.Popup, + { + ...props, + className: hashId, + prefixCls, + overlayInnerStyle: formattedOverlayInnerStyle + }, + title + )) + ); +}; +var PurePanel_default = PurePanel; diff --git a/packages/meta/lib/tooltip/index.d.ts b/packages/meta/lib/tooltip/index.d.ts new file mode 100644 index 0000000..9177762 --- /dev/null +++ b/packages/meta/lib/tooltip/index.d.ts @@ -0,0 +1,76 @@ +import * as React from 'react'; +import type { placements as Placements } from 'rc-tooltip/lib/placements'; +import type { TooltipProps as RcTooltipProps } from 'rc-tooltip/lib/Tooltip'; +import type { PresetColorType } from '../_util/colors'; +import type { RenderFunction } from '../_util/getRenderPropValue'; +import type { AdjustOverflow, PlacementsConfig } from '../_util/placements'; +import type { LiteralUnion } from '../_util/type'; +import PurePanel from './PurePanel'; +export type { AdjustOverflow, PlacementsConfig }; +export interface TooltipRef { + /** @deprecated Please use `forceAlign` instead */ + forcePopupAlign: VoidFunction; + forceAlign: VoidFunction; +} +export type TooltipPlacement = 'top' | 'left' | 'right' | 'bottom' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom'; +export interface TooltipAlignConfig { + points?: [string, string]; + offset?: [number | string, number | string]; + targetOffset?: [number | string, number | string]; + overflow?: { + adjustX: boolean; + adjustY: boolean; + }; + useCssRight?: boolean; + useCssBottom?: boolean; + useCssTransform?: boolean; +} +interface LegacyTooltipProps extends Partial> { + open?: RcTooltipProps['visible']; + defaultOpen?: RcTooltipProps['defaultVisible']; + onOpenChange?: RcTooltipProps['onVisibleChange']; + afterOpenChange?: RcTooltipProps['afterVisibleChange']; + /** @deprecated Please use `open` instead. */ + visible?: RcTooltipProps['visible']; + /** @deprecated Please use `defaultOpen` instead. */ + defaultVisible?: RcTooltipProps['defaultVisible']; + /** @deprecated Please use `onOpenChange` instead. */ + onVisibleChange?: RcTooltipProps['onVisibleChange']; + /** @deprecated Please use `afterOpenChange` instead. */ + afterVisibleChange?: RcTooltipProps['afterVisibleChange']; +} +export interface AbstractTooltipProps extends LegacyTooltipProps { + style?: React.CSSProperties; + className?: string; + rootClassName?: string; + color?: LiteralUnion; + placement?: TooltipPlacement; + builtinPlacements?: typeof Placements; + openClassName?: string; + /** @deprecated Please use `arrow={{ pointAtCenter: true }}` instead. */ + arrowPointAtCenter?: boolean; + arrow?: boolean | { + /** @deprecated Please use `pointAtCenter` instead. */ + arrowPointAtCenter?: boolean; + pointAtCenter?: boolean; + }; + autoAdjustOverflow?: boolean | AdjustOverflow; + getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement; + children?: React.ReactNode; + destroyTooltipOnHide?: boolean | { + keepParent?: boolean; + }; +} +export interface TooltipPropsWithOverlay extends AbstractTooltipProps { + title?: React.ReactNode | RenderFunction; + overlay?: React.ReactNode | RenderFunction; +} +export interface TooltipPropsWithTitle extends AbstractTooltipProps { + title: React.ReactNode | RenderFunction; + overlay?: React.ReactNode | RenderFunction; +} +export declare type TooltipProps = TooltipPropsWithTitle | TooltipPropsWithOverlay; +declare const Tooltip: React.ForwardRefExoticComponent> & { + _InternalPanelDoNotUseOrYouWillBeFired: typeof PurePanel; +}; +export default Tooltip; diff --git a/packages/meta/lib/tooltip/index.js b/packages/meta/lib/tooltip/index.js new file mode 100644 index 0000000..d16ec57 --- /dev/null +++ b/packages/meta/lib/tooltip/index.js @@ -0,0 +1,219 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/tooltip/index.tsx +var tooltip_exports = {}; +__export(tooltip_exports, { + default: () => tooltip_default +}); +module.exports = __toCommonJS(tooltip_exports); +var React = __toESM(require("react")); +var import_classnames = __toESM(require("classnames")); +var import_rc_tooltip = __toESM(require("rc-tooltip")); +var import_useMergedState = __toESM(require("rc-util/lib/hooks/useMergedState")); +var import_useZIndex = require("../_util/hooks/useZIndex"); +var import_motion = require("../_util/motion"); +var import_placements = __toESM(require("../_util/placements")); +var import_reactNode = require("../_util/reactNode"); +var import_warning = require("../_util/warning"); +var import_zindexContext = __toESM(require("../_util/zindexContext")); +var import_config_provider = require("../config-provider"); +var import_Compact = require("../space/Compact"); +var import_internal = require("../theme/internal"); +var import_PurePanel = __toESM(require("./PurePanel")); +var import_style = __toESM(require("./style")); +var import_util = require("./util"); +var Tooltip = React.forwardRef((props, ref) => { + const { + prefixCls: customizePrefixCls, + openClassName, + getTooltipContainer, + overlayClassName, + color, + overlayInnerStyle, + children, + afterOpenChange, + afterVisibleChange, + destroyTooltipOnHide, + arrow = true, + title, + overlay, + builtinPlacements, + arrowPointAtCenter = false, + autoAdjustOverflow = true + } = props; + const mergedShowArrow = !!arrow; + const [, token] = (0, import_internal.useToken)(); + const { + getPopupContainer: getContextPopupContainer, + getPrefixCls, + direction + } = React.useContext(import_config_provider.ConfigContext); + const warning = (0, import_warning.devUseWarning)("Tooltip"); + const tooltipRef = React.useRef(null); + const forceAlign = () => { + var _a; + (_a = tooltipRef.current) == null ? void 0 : _a.forceAlign(); + }; + React.useImperativeHandle(ref, () => ({ + forceAlign, + forcePopupAlign: () => { + warning.deprecated(false, "forcePopupAlign", "forceAlign"); + forceAlign(); + } + })); + if (process.env.NODE_ENV !== "production") { + [ + ["visible", "open"], + ["defaultVisible", "defaultOpen"], + ["onVisibleChange", "onOpenChange"], + ["afterVisibleChange", "afterOpenChange"], + ["arrowPointAtCenter", "arrow={{ pointAtCenter: true }}"] + ].forEach(([deprecatedName, newName]) => { + warning.deprecated(!(deprecatedName in props), deprecatedName, newName); + }); + warning( + !destroyTooltipOnHide || typeof destroyTooltipOnHide === "boolean", + "usage", + "`destroyTooltipOnHide` no need config `keepParent` anymore. Please use `boolean` value directly." + ); + warning( + !arrow || typeof arrow === "boolean" || !("arrowPointAtCenter" in arrow), + "deprecated", + "`arrowPointAtCenter` in `arrow` is deprecated. Please use `pointAtCenter` instead." + ); + } + const [open, setOpen] = (0, import_useMergedState.default)(false, { + value: props.open ?? props.visible, + defaultValue: props.defaultOpen ?? props.defaultVisible + }); + const noTitle = !title && !overlay && title !== 0; + const onOpenChange = (vis) => { + var _a, _b; + setOpen(noTitle ? false : vis); + if (!noTitle) { + (_a = props.onOpenChange) == null ? void 0 : _a.call(props, vis); + (_b = props.onVisibleChange) == null ? void 0 : _b.call(props, vis); + } + }; + const tooltipPlacements = React.useMemo(() => { + let mergedArrowPointAtCenter = arrowPointAtCenter; + if (typeof arrow === "object") { + mergedArrowPointAtCenter = arrow.pointAtCenter ?? arrow.arrowPointAtCenter ?? arrowPointAtCenter; + } + return builtinPlacements || (0, import_placements.default)({ + arrowPointAtCenter: mergedArrowPointAtCenter, + autoAdjustOverflow, + arrowWidth: mergedShowArrow ? token.sizePopupArrow : 0, + borderRadius: token.borderRadius, + offset: token.marginXXS, + visibleFirst: true + }); + }, [arrowPointAtCenter, arrow, builtinPlacements, token]); + const memoOverlay = React.useMemo(() => { + if (title === 0) { + return title; + } + return overlay || title || ""; + }, [overlay, title]); + const memoOverlayWrapper = /* @__PURE__ */ React.createElement(import_Compact.NoCompactStyle, null, typeof memoOverlay === "function" ? memoOverlay() : memoOverlay); + const { + getPopupContainer, + placement = "top", + mouseEnterDelay = 0.1, + mouseLeaveDelay = 0.1, + overlayStyle, + rootClassName, + ...otherProps + } = props; + const prefixCls = getPrefixCls("tooltip", customizePrefixCls); + const rootPrefixCls = getPrefixCls(); + const injectFromPopover = props["data-popover-inject"]; + let tempOpen = open; + if (!("open" in props) && !("visible" in props) && noTitle) { + tempOpen = false; + } + const child = (0, import_reactNode.isValidElement)(children) && !(0, import_reactNode.isFragment)(children) ? children : /* @__PURE__ */ React.createElement("span", null, children); + const childProps = child.props; + const childCls = !childProps.className || typeof childProps.className === "string" ? (0, import_classnames.default)(childProps.className, openClassName || `${prefixCls}-open`) : childProps.className; + const [wrapCSSVar, hashId, cssVarCls] = (0, import_style.default)(prefixCls, !injectFromPopover); + const colorInfo = (0, import_util.parseColor)(prefixCls, color); + const arrowContentStyle = colorInfo.arrowStyle; + const formattedOverlayInnerStyle = { + ...overlayInnerStyle, + ...colorInfo.overlayStyle + }; + const customOverlayClassName = (0, import_classnames.default)( + overlayClassName, + { + [`${prefixCls}-rtl`]: direction === "rtl" + }, + colorInfo.className, + rootClassName, + hashId, + cssVarCls + ); + const [zIndex, contextZIndex] = (0, import_useZIndex.useZIndex)("Tooltip", otherProps.zIndex); + const content = /* @__PURE__ */ React.createElement( + import_rc_tooltip.default, + { + ...otherProps, + zIndex, + showArrow: mergedShowArrow, + placement, + mouseEnterDelay, + mouseLeaveDelay, + prefixCls, + overlayClassName: customOverlayClassName, + overlayStyle: { ...arrowContentStyle, ...overlayStyle }, + getTooltipContainer: getPopupContainer || getTooltipContainer || getContextPopupContainer, + ref: tooltipRef, + builtinPlacements: tooltipPlacements, + overlay: memoOverlayWrapper, + visible: tempOpen, + onVisibleChange: onOpenChange, + afterVisibleChange: afterOpenChange ?? afterVisibleChange, + overlayInnerStyle: formattedOverlayInnerStyle, + arrowContent: /* @__PURE__ */ React.createElement("span", { className: `${prefixCls}-arrow-content` }), + motion: { + motionName: (0, import_motion.getTransitionName)(rootPrefixCls, "zoom-big-fast", props.transitionName), + motionDeadline: 1e3 + }, + destroyTooltipOnHide: !!destroyTooltipOnHide + }, + tempOpen ? (0, import_reactNode.cloneElement)(child, { className: childCls }) : child + ); + return wrapCSSVar( + /* @__PURE__ */ React.createElement(import_zindexContext.default.Provider, { value: contextZIndex }, content) + ); +}); +if (process.env.NODE_ENV !== "production") { + Tooltip.displayName = "Tooltip"; +} +Tooltip._InternalPanelDoNotUseOrYouWillBeFired = import_PurePanel.default; +var tooltip_default = Tooltip; diff --git a/packages/meta/lib/tooltip/style/index.d.ts b/packages/meta/lib/tooltip/style/index.d.ts new file mode 100644 index 0000000..d8cb1e8 --- /dev/null +++ b/packages/meta/lib/tooltip/style/index.d.ts @@ -0,0 +1,14 @@ +/// +import type { ArrowOffsetToken } from '../../style/placementArrow'; +import type { GetDefaultToken } from '../../theme/internal'; +import type { ArrowToken } from '../../style/roundedArrow'; +export interface ComponentToken extends ArrowOffsetToken, ArrowToken { + /** + * @desc 文字提示 z-index + * @descEN z-index of tooltip + */ + zIndexPopup: number; +} +export declare const prepareComponentToken: GetDefaultToken<'Tooltip'>; +declare const _default: (prefixCls: string, injectStyle?: boolean) => readonly [(node: import("react").ReactElement>) => import("react").ReactElement>, string, string | undefined]; +export default _default; diff --git a/packages/meta/lib/tooltip/style/index.js b/packages/meta/lib/tooltip/style/index.js new file mode 100644 index 0000000..eb9ed01 --- /dev/null +++ b/packages/meta/lib/tooltip/style/index.js @@ -0,0 +1,168 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/tooltip/style/index.ts +var style_exports = {}; +__export(style_exports, { + default: () => style_default, + prepareComponentToken: () => prepareComponentToken +}); +module.exports = __toCommonJS(style_exports); +var import_style = require("../../style"); +var import_motion = require("../../style/motion"); +var import_placementArrow = __toESM(require("../../style/placementArrow")); +var import_internal = require("../../theme/internal"); +var import_cssinjs = require("@ant-design/cssinjs"); +var import_roundedArrow = require("../../style/roundedArrow"); +var genTooltipStyle = (token) => { + const { + componentCls, + // ant-tooltip + tooltipMaxWidth, + tooltipColor, + tooltipBg, + tooltipBorderRadius, + zIndexPopup, + controlHeight, + boxShadowSecondary, + paddingSM, + paddingXS + } = token; + return [ + { + [componentCls]: { + ...(0, import_style.resetComponent)(token), + position: "absolute", + zIndex: zIndexPopup, + display: "block", + width: "max-content", + maxWidth: tooltipMaxWidth, + visibility: "visible", + transformOrigin: `var(--arrow-x, 50%) var(--arrow-y, 50%)`, + "&-hidden": { + display: "none" + }, + "--antd-arrow-background-color": tooltipBg, + // Wrapper for the tooltip content + [`${componentCls}-inner`]: { + minWidth: controlHeight, + minHeight: controlHeight, + padding: `${(0, import_cssinjs.unit)(token.calc(paddingSM).div(2).equal())} ${(0, import_cssinjs.unit)(paddingXS)}`, + color: tooltipColor, + textAlign: "start", + textDecoration: "none", + wordWrap: "break-word", + backgroundColor: tooltipBg, + borderRadius: tooltipBorderRadius, + boxShadow: boxShadowSecondary, + boxSizing: "border-box" + }, + // Limit left and right placement radius + [[ + `&-placement-left`, + `&-placement-leftTop`, + `&-placement-leftBottom`, + `&-placement-right`, + `&-placement-rightTop`, + `&-placement-rightBottom` + ].join(",")]: { + [`${componentCls}-inner`]: { + borderRadius: token.min(tooltipBorderRadius, import_placementArrow.MAX_VERTICAL_CONTENT_RADIUS) + } + }, + [`${componentCls}-content`]: { + position: "relative" + }, + // generator for preset color + ...(0, import_internal.genPresetColor)(token, (colorKey, { darkColor }) => ({ + [`&${componentCls}-${colorKey}`]: { + [`${componentCls}-inner`]: { + backgroundColor: darkColor + }, + [`${componentCls}-arrow`]: { + "--antd-arrow-background-color": darkColor + } + } + })), + // RTL + "&-rtl": { + direction: "rtl" + } + } + }, + // Arrow Style + (0, import_placementArrow.default)(token, "var(--antd-arrow-background-color)"), + // Pure Render + { + [`${componentCls}-pure`]: { + position: "relative", + maxWidth: "none", + margin: token.sizePopupArrow + } + } + ]; +}; +var prepareComponentToken = (token) => ({ + zIndexPopup: token.zIndexPopupBase + 70, + ...(0, import_placementArrow.getArrowOffsetToken)({ + contentRadius: token.borderRadius, + limitVerticalRadius: true + }), + ...(0, import_roundedArrow.getArrowToken)( + (0, import_internal.mergeToken)(token, { + borderRadiusOuter: Math.min(token.borderRadiusOuter, 4) + }) + ) +}); +var style_default = (prefixCls, injectStyle = true) => { + const useStyle = (0, import_internal.genStyleHooks)( + "Tooltip", + (token) => { + const { borderRadius, colorTextLightSolid, colorBgSpotlight } = token; + const TooltipToken = (0, import_internal.mergeToken)(token, { + // default variables + tooltipMaxWidth: 250, + tooltipColor: colorTextLightSolid, + tooltipBorderRadius: borderRadius, + tooltipBg: colorBgSpotlight + }); + return [genTooltipStyle(TooltipToken), (0, import_motion.initZoomMotion)(token, "zoom-big-fast")]; + }, + prepareComponentToken, + { + resetStyle: false, + // Popover use Tooltip as internal component. We do not need to handle this. + injectStyle + } + ); + return useStyle(prefixCls); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + prepareComponentToken +}); diff --git a/packages/meta/lib/tooltip/util.d.ts b/packages/meta/lib/tooltip/util.d.ts new file mode 100644 index 0000000..73ebec2 --- /dev/null +++ b/packages/meta/lib/tooltip/util.d.ts @@ -0,0 +1,6 @@ +import type * as React from 'react'; +export declare function parseColor(prefixCls: string, color?: string): { + className: string; + overlayStyle: React.CSSProperties; + arrowStyle: React.CSSProperties; +}; diff --git a/packages/meta/lib/tooltip/util.js b/packages/meta/lib/tooltip/util.js new file mode 100644 index 0000000..4fd73c8 --- /dev/null +++ b/packages/meta/lib/tooltip/util.js @@ -0,0 +1,53 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/tooltip/util.ts +var util_exports = {}; +__export(util_exports, { + parseColor: () => parseColor +}); +module.exports = __toCommonJS(util_exports); +var import_classnames = __toESM(require("classnames")); +var import_colors = require("../_util/colors"); +function parseColor(prefixCls, color) { + const isInternalColor = (0, import_colors.isPresetColor)(color); + const className = (0, import_classnames.default)({ + [`${prefixCls}-${color}`]: color && isInternalColor + }); + const overlayStyle = {}; + const arrowStyle = {}; + if (color && !isInternalColor) { + overlayStyle.background = color; + arrowStyle["--antd-arrow-background-color"] = color; + } + return { className, overlayStyle, arrowStyle }; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + parseColor +}); diff --git a/packages/meta/lib/tour/PurePanel.d.ts b/packages/meta/lib/tour/PurePanel.d.ts new file mode 100644 index 0000000..e52af68 --- /dev/null +++ b/packages/meta/lib/tour/PurePanel.d.ts @@ -0,0 +1,6 @@ +import * as React from 'react'; +import type { TourStepProps } from './interface'; +export interface PurePanelProps extends TourStepProps { +} +declare const _default: (props: PurePanelProps) => React.JSX.Element; +export default _default; diff --git a/packages/meta/lib/tour/PurePanel.js b/packages/meta/lib/tour/PurePanel.js new file mode 100644 index 0000000..505d464 --- /dev/null +++ b/packages/meta/lib/tour/PurePanel.js @@ -0,0 +1,73 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/tour/PurePanel.tsx +var PurePanel_exports = {}; +__export(PurePanel_exports, { + default: () => PurePanel_default +}); +module.exports = __toCommonJS(PurePanel_exports); +var import_classnames = __toESM(require("classnames")); +var React = __toESM(require("react")); +var import_config_provider = require("../config-provider"); +var import_PurePanel = require("../popover/PurePanel"); +var import_panelRender = __toESM(require("./panelRender")); +var import_style = __toESM(require("./style")); +var import_PurePanel2 = require("../_util/PurePanel"); +var PurePanel = (props) => { + const { + prefixCls: customizePrefixCls, + current = 0, + total = 6, + className, + style, + type, + ...restProps + } = props; + const { getPrefixCls } = React.useContext(import_config_provider.ConfigContext); + const prefixCls = getPrefixCls("tour", customizePrefixCls); + const [wrapCSSVar, hashId, cssVarCls] = (0, import_style.default)(prefixCls); + return wrapCSSVar( + /* @__PURE__ */ React.createElement( + import_PurePanel.RawPurePanel, + { + prefixCls, + hashId, + className: (0, import_classnames.default)( + className, + `${prefixCls}-pure`, + type && `${prefixCls}-${type}`, + cssVarCls + ), + style + }, + /* @__PURE__ */ React.createElement(import_panelRender.default, { stepProps: { ...restProps, prefixCls, total }, current, type }) + ) + ); +}; +var PurePanel_default = (0, import_PurePanel2.withPureRenderTheme)(PurePanel); diff --git a/packages/meta/lib/tour/index.d.ts b/packages/meta/lib/tour/index.d.ts new file mode 100644 index 0000000..41c2ee2 --- /dev/null +++ b/packages/meta/lib/tour/index.d.ts @@ -0,0 +1,7 @@ +import React from 'react'; +import type { TourProps } from './interface'; +import PurePanel from './PurePanel'; +declare const Tour: React.FC & { + _InternalPanelDoNotUseOrYouWillBeFired: typeof PurePanel; +}; +export default Tour; diff --git a/packages/meta/lib/tour/index.js b/packages/meta/lib/tour/index.js new file mode 100644 index 0000000..a838ba8 --- /dev/null +++ b/packages/meta/lib/tour/index.js @@ -0,0 +1,113 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/tour/index.tsx +var tour_exports = {}; +__export(tour_exports, { + default: () => tour_default +}); +module.exports = __toCommonJS(tour_exports); +var import_react = __toESM(require("react")); +var import_tour = __toESM(require("@rc-component/tour")); +var import_classnames = __toESM(require("classnames")); +var import_useZIndex = require("../_util/hooks/useZIndex"); +var import_placements = __toESM(require("../_util/placements")); +var import_zindexContext = __toESM(require("../_util/zindexContext")); +var import_config_provider = require("../config-provider"); +var import_internal = require("../theme/internal"); +var import_panelRender = __toESM(require("./panelRender")); +var import_PurePanel = __toESM(require("./PurePanel")); +var import_style = __toESM(require("./style")); +var Tour = (props) => { + const { + prefixCls: customizePrefixCls, + type, + rootClassName, + indicatorsRender, + steps, + ...restProps + } = props; + const { getPrefixCls, direction } = (0, import_react.useContext)(import_config_provider.ConfigContext); + const prefixCls = getPrefixCls("tour", customizePrefixCls); + const [wrapCSSVar, hashId, cssVarCls] = (0, import_style.default)(prefixCls); + const [, token] = (0, import_internal.useToken)(); + const mergedSteps = (0, import_react.useMemo)( + () => steps == null ? void 0 : steps.map((step) => ({ + ...step, + className: (0, import_classnames.default)(step.className, { + [`${prefixCls}-primary`]: (step.type ?? type) === "primary" + }) + })), + [steps, type] + ); + const builtinPlacements = (0, import_placements.default)({ + arrowPointAtCenter: true, + autoAdjustOverflow: true, + offset: token.marginXXS, + arrowWidth: token.sizePopupArrow, + borderRadius: token.borderRadius + }); + const customClassName = (0, import_classnames.default)( + { + [`${prefixCls}-rtl`]: direction === "rtl" + }, + hashId, + cssVarCls, + rootClassName + ); + const mergedRenderPanel = (stepProps, stepCurrent) => /* @__PURE__ */ import_react.default.createElement( + import_panelRender.default, + { + type, + stepProps, + current: stepCurrent, + indicatorsRender + } + ); + const [zIndex, contextZIndex] = (0, import_useZIndex.useZIndex)("Tour", restProps.zIndex); + return wrapCSSVar( + /* @__PURE__ */ import_react.default.createElement(import_zindexContext.default.Provider, { value: contextZIndex }, /* @__PURE__ */ import_react.default.createElement( + import_tour.default, + { + ...restProps, + zIndex, + rootClassName: customClassName, + prefixCls, + animated: true, + renderPanel: mergedRenderPanel, + builtinPlacements, + steps: mergedSteps + } + )) + ); +}; +if (process.env.NODE_ENV !== "production") { + Tour.displayName = "Tour"; +} +Tour._InternalPanelDoNotUseOrYouWillBeFired = import_PurePanel.default; +var tour_default = Tour; diff --git a/packages/meta/lib/tour/interface.d.ts b/packages/meta/lib/tour/interface.d.ts new file mode 100644 index 0000000..8b2e7d2 --- /dev/null +++ b/packages/meta/lib/tour/interface.d.ts @@ -0,0 +1,32 @@ +import type { TourProps as RCTourProps, TourStepProps as RCTourStepProps } from '@rc-component/tour'; +import type { ReactNode } from 'react'; +export interface TourProps extends Omit { + steps?: TourStepProps[]; + className?: string; + prefixCls?: string; + current?: number; + indicatorsRender?: (current: number, total: number) => ReactNode; + type?: 'default' | 'primary'; +} +export interface TourStepProps extends RCTourStepProps { + cover?: ReactNode; + nextButtonProps?: { + children?: ReactNode; + onClick?: () => void; + className?: string; + style?: React.CSSProperties; + }; + prevButtonProps?: { + children?: ReactNode; + onClick?: () => void; + className?: string; + style?: React.CSSProperties; + }; + indicatorsRender?: (current: number, total: number) => ReactNode; + type?: 'default' | 'primary'; +} +export interface TourLocale { + Next: string; + Previous: string; + Finish: string; +} diff --git a/packages/meta/lib/tour/interface.js b/packages/meta/lib/tour/interface.js new file mode 100644 index 0000000..a6d11ed --- /dev/null +++ b/packages/meta/lib/tour/interface.js @@ -0,0 +1,17 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/tour/interface.ts +var interface_exports = {}; +module.exports = __toCommonJS(interface_exports); diff --git a/packages/meta/lib/tour/panelRender.d.ts b/packages/meta/lib/tour/panelRender.d.ts new file mode 100644 index 0000000..e46526d --- /dev/null +++ b/packages/meta/lib/tour/panelRender.d.ts @@ -0,0 +1,12 @@ +import type { ReactNode } from 'react'; +import React from 'react'; +import type { TourStepProps } from './interface'; +interface TourPanelProps { + stepProps: TourStepProps; + current: number; + type: TourStepProps['type']; + indicatorsRender?: TourStepProps['indicatorsRender']; + closeIcon?: ReactNode; +} +declare const TourPanel: React.FC; +export default TourPanel; diff --git a/packages/meta/lib/tour/panelRender.js b/packages/meta/lib/tour/panelRender.js new file mode 100644 index 0000000..335e102 --- /dev/null +++ b/packages/meta/lib/tour/panelRender.js @@ -0,0 +1,140 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/tour/panelRender.tsx +var panelRender_exports = {}; +__export(panelRender_exports, { + default: () => panelRender_default +}); +module.exports = __toCommonJS(panelRender_exports); +var import_CloseOutlined = __toESM(require("@ant-design/icons/CloseOutlined")); +var import_classnames = __toESM(require("classnames")); +var import_react = __toESM(require("react")); +var import_button = __toESM(require("../button")); +var import_locale = require("../locale"); +var import_en_US = __toESM(require("../locale/en_US")); +var import_useClosable = __toESM(require("../_util/hooks/useClosable")); +function isValidNode(node) { + return node !== void 0 && node !== null; +} +var TourPanel = ({ + stepProps, + current, + type, + indicatorsRender, + closeIcon +}) => { + const { + prefixCls, + total = 1, + title, + onClose, + onPrev, + onNext, + onFinish, + cover, + description, + nextButtonProps, + prevButtonProps, + type: stepType, + closeIcon: stepCloseIcon + } = stepProps; + const mergedType = stepType ?? type; + const mergedCloseIcon = stepCloseIcon ?? closeIcon; + const mergedClosable = mergedCloseIcon !== false && mergedCloseIcon !== null; + const [closable, mergedDisplayCloseIcon] = (0, import_useClosable.default)( + mergedClosable, + mergedCloseIcon, + (icon) => /* @__PURE__ */ import_react.default.createElement("span", { onClick: onClose, "aria-label": "Close", className: `${prefixCls}-close` }, icon), + /* @__PURE__ */ import_react.default.createElement(import_CloseOutlined.default, { className: `${prefixCls}-close-icon` }), + true + ); + const isLastStep = current === total - 1; + const prevBtnClick = () => { + var _a; + onPrev == null ? void 0 : onPrev(); + (_a = prevButtonProps == null ? void 0 : prevButtonProps.onClick) == null ? void 0 : _a.call(prevButtonProps); + }; + const nextBtnClick = () => { + var _a; + if (isLastStep) { + onFinish == null ? void 0 : onFinish(); + } else { + onNext == null ? void 0 : onNext(); + } + (_a = nextButtonProps == null ? void 0 : nextButtonProps.onClick) == null ? void 0 : _a.call(nextButtonProps); + }; + const headerNode = isValidNode(title) ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-header` }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-title` }, title)) : null; + const descriptionNode = isValidNode(description) ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-description` }, description) : null; + const coverNode = isValidNode(cover) ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-cover` }, cover) : null; + let mergeIndicatorNode; + if (indicatorsRender) { + mergeIndicatorNode = indicatorsRender(current, total); + } else { + mergeIndicatorNode = [...Array.from({ length: total }).keys()].map( + (stepItem, index) => /* @__PURE__ */ import_react.default.createElement( + "span", + { + key: stepItem, + className: (0, import_classnames.default)( + index === current && `${prefixCls}-indicator-active`, + `${prefixCls}-indicator` + ) + } + ) + ); + } + const mainBtnType = mergedType === "primary" ? "default" : "primary"; + const secondaryBtnProps = { + type: "default", + ghost: mergedType === "primary" + }; + const [contextLocale] = (0, import_locale.useLocale)("Tour", import_en_US.default.Tour); + return /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-content` }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-inner` }, closable && mergedDisplayCloseIcon, coverNode, headerNode, descriptionNode, /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-footer` }, total > 1 && /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-indicators` }, mergeIndicatorNode), /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-buttons` }, current !== 0 ? /* @__PURE__ */ import_react.default.createElement( + import_button.default, + { + ...secondaryBtnProps, + ...prevButtonProps, + onClick: prevBtnClick, + size: "small", + className: (0, import_classnames.default)(`${prefixCls}-prev-btn`, prevButtonProps == null ? void 0 : prevButtonProps.className) + }, + (prevButtonProps == null ? void 0 : prevButtonProps.children) ?? (contextLocale == null ? void 0 : contextLocale.Previous) + ) : null, /* @__PURE__ */ import_react.default.createElement( + import_button.default, + { + type: mainBtnType, + ...nextButtonProps, + onClick: nextBtnClick, + size: "small", + className: (0, import_classnames.default)(`${prefixCls}-next-btn`, nextButtonProps == null ? void 0 : nextButtonProps.className) + }, + (nextButtonProps == null ? void 0 : nextButtonProps.children) ?? (isLastStep ? contextLocale == null ? void 0 : contextLocale.Finish : contextLocale == null ? void 0 : contextLocale.Next) + ))))); +}; +var panelRender_default = TourPanel; diff --git a/packages/meta/lib/tour/style/index.d.ts b/packages/meta/lib/tour/style/index.d.ts new file mode 100644 index 0000000..1d5acec --- /dev/null +++ b/packages/meta/lib/tour/style/index.d.ts @@ -0,0 +1,29 @@ +/// +import type { ArrowOffsetToken } from '../../style/placementArrow'; +import type { GetDefaultToken } from '../../theme/internal'; +import type { ArrowToken } from '../../style/roundedArrow'; +export interface ComponentToken extends ArrowOffsetToken, ArrowToken { + /** + * @desc 弹层 z-index + * @descEN Tour popup z-index + */ + zIndexPopup: number; + /** + * @desc 关闭按钮尺寸 + * @descEN Close button size + */ + closeBtnSize: number; + /** + * @desc Primary 模式上一步按钮背景色 + * @descEN Background color of previous button in primary type + */ + primaryPrevBtnBg: string; + /** + * @desc Primary 模式下一步按钮悬浮背景色 + * @descEN Hover background color of next button in primary type + */ + primaryNextBtnHoverBg: string; +} +export declare const prepareComponentToken: GetDefaultToken<'Tour'>; +declare const _default: (prefixCls: string, rootCls?: string) => readonly [(node: import("react").ReactElement>) => import("react").ReactElement>, string, string | undefined]; +export default _default; diff --git a/packages/meta/lib/tour/style/index.js b/packages/meta/lib/tour/style/index.js new file mode 100644 index 0000000..5e789f6 --- /dev/null +++ b/packages/meta/lib/tour/style/index.js @@ -0,0 +1,267 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/tour/style/index.ts +var style_exports = {}; +__export(style_exports, { + default: () => style_default, + prepareComponentToken: () => prepareComponentToken +}); +module.exports = __toCommonJS(style_exports); +var import_tinycolor = require("@ctrl/tinycolor"); +var import_style = require("../../style"); +var import_placementArrow = __toESM(require("../../style/placementArrow")); +var import_internal = require("../../theme/internal"); +var import_roundedArrow = require("../../style/roundedArrow"); +var import_cssinjs = require("@ant-design/cssinjs"); +var genBaseStyle = (token) => { + const { + componentCls, + lineHeight, + padding, + paddingXS, + borderRadius, + borderRadiusXS, + colorPrimary, + colorText, + colorFill, + indicatorHeight, + indicatorWidth, + boxShadowTertiary, + tourZIndexPopup, + fontSize, + colorBgElevated, + fontWeightStrong, + marginXS, + colorTextLightSolid, + tourBorderRadius, + colorWhite, + primaryNextBtnHoverBg, + closeBtnSize, + motionDurationSlow, + antCls, + primaryPrevBtnBg + } = token; + return [ + { + [componentCls]: { + ...(0, import_style.resetComponent)(token), + color: colorText, + position: "absolute", + zIndex: tourZIndexPopup, + display: "block", + visibility: "visible", + fontSize, + lineHeight, + width: 520, + "--antd-arrow-background-color": colorBgElevated, + "&-pure": { + maxWidth: "100%", + position: "relative" + }, + [`&${componentCls}-hidden`]: { + display: "none" + }, + // ============================= panel content ============================ + [`${componentCls}-content`]: { + position: "relative" + }, + [`${componentCls}-inner`]: { + textAlign: "start", + textDecoration: "none", + borderRadius: tourBorderRadius, + boxShadow: boxShadowTertiary, + position: "relative", + backgroundColor: colorBgElevated, + border: "none", + backgroundClip: "padding-box", + [`${componentCls}-close`]: { + position: "absolute", + top: padding, + insetInlineEnd: padding, + color: token.colorIcon, + outline: "none", + width: closeBtnSize, + height: closeBtnSize, + borderRadius: token.borderRadiusSM, + transition: `background-color ${token.motionDurationMid}, color ${token.motionDurationMid}`, + display: "flex", + alignItems: "center", + justifyContent: "center", + cursor: "pointer", + "&:hover": { + color: token.colorIconHover, + backgroundColor: token.closeBtnHoverBg + } + }, + [`${componentCls}-cover`]: { + textAlign: "center", + padding: `${(0, import_cssinjs.unit)(token.calc(padding).add(closeBtnSize).add(paddingXS).equal())} ${(0, import_cssinjs.unit)( + padding + )} 0`, + img: { + width: "100%" + } + }, + [`${componentCls}-header`]: { + padding: `${(0, import_cssinjs.unit)(padding)} ${(0, import_cssinjs.unit)(padding)} ${(0, import_cssinjs.unit)(paddingXS)}`, + [`${componentCls}-title`]: { + lineHeight, + fontSize, + fontWeight: fontWeightStrong + } + }, + [`${componentCls}-description`]: { + padding: `0 ${(0, import_cssinjs.unit)(padding)}`, + lineHeight, + wordWrap: "break-word" + }, + [`${componentCls}-footer`]: { + padding: `${(0, import_cssinjs.unit)(paddingXS)} ${(0, import_cssinjs.unit)(padding)} ${(0, import_cssinjs.unit)(padding)}`, + textAlign: "end", + borderRadius: `0 0 ${(0, import_cssinjs.unit)(borderRadiusXS)} ${(0, import_cssinjs.unit)(borderRadiusXS)}`, + display: "flex", + [`${componentCls}-indicators`]: { + display: "inline-block", + [`${componentCls}-indicator`]: { + width: indicatorWidth, + height: indicatorHeight, + display: "inline-block", + borderRadius: "50%", + background: colorFill, + "&:not(:last-child)": { + marginInlineEnd: indicatorHeight + }, + "&-active": { + background: colorPrimary + } + } + }, + [`${componentCls}-buttons`]: { + marginInlineStart: "auto", + [`${antCls}-btn`]: { + marginInlineStart: marginXS + } + } + } + }, + // ============================= primary type =========================== + // `$` for panel, `&$` for pure panel + [`${componentCls}-primary, &${componentCls}-primary`]: { + "--antd-arrow-background-color": colorPrimary, + [`${componentCls}-inner`]: { + color: colorTextLightSolid, + textAlign: "start", + textDecoration: "none", + backgroundColor: colorPrimary, + borderRadius, + boxShadow: boxShadowTertiary, + [`${componentCls}-close`]: { + color: colorTextLightSolid + }, + [`${componentCls}-indicators`]: { + [`${componentCls}-indicator`]: { + background: primaryPrevBtnBg, + "&-active": { + background: colorTextLightSolid + } + } + }, + [`${componentCls}-prev-btn`]: { + color: colorTextLightSolid, + borderColor: primaryPrevBtnBg, + backgroundColor: colorPrimary, + "&:hover": { + backgroundColor: primaryPrevBtnBg, + borderColor: "transparent" + } + }, + [`${componentCls}-next-btn`]: { + color: colorPrimary, + borderColor: "transparent", + background: colorWhite, + "&:hover": { + background: primaryNextBtnHoverBg + } + } + } + } + }, + // ============================= mask =========================== + [`${componentCls}-mask`]: { + [`${componentCls}-placeholder-animated`]: { + transition: `all ${motionDurationSlow}` + } + }, + // =========== Limit left and right placement radius ============== + [[ + "&-placement-left", + "&-placement-leftTop", + "&-placement-leftBottom", + "&-placement-right", + "&-placement-rightTop", + "&-placement-rightBottom" + ].join(",")]: { + [`${componentCls}-inner`]: { + borderRadius: token.min(tourBorderRadius, import_placementArrow.MAX_VERTICAL_CONTENT_RADIUS) + } + } + }, + // ============================= Arrow =========================== + (0, import_placementArrow.default)(token, "var(--antd-arrow-background-color)") + ]; +}; +var prepareComponentToken = (token) => ({ + zIndexPopup: token.zIndexPopupBase + 70, + closeBtnSize: token.fontSize * token.lineHeight, + primaryPrevBtnBg: new import_tinycolor.TinyColor(token.colorTextLightSolid).setAlpha(0.15).toRgbString(), + closeBtnHoverBg: token.wireframe ? "transparent" : token.colorFillContent, + primaryNextBtnHoverBg: new import_tinycolor.TinyColor(token.colorBgTextHover).onBackground(token.colorWhite).toRgbString(), + ...(0, import_placementArrow.getArrowOffsetToken)({ + contentRadius: token.borderRadiusLG, + limitVerticalRadius: true + }), + ...(0, import_roundedArrow.getArrowToken)(token) +}); +var style_default = (0, import_internal.genStyleHooks)( + "Tour", + (token) => { + const { borderRadiusLG } = token; + const TourToken = (0, import_internal.mergeToken)(token, { + indicatorWidth: 6, + indicatorHeight: 6, + tourBorderRadius: borderRadiusLG + }); + return [genBaseStyle(TourToken)]; + }, + prepareComponentToken +); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + prepareComponentToken +}); diff --git a/packages/meta/lib/typography/Base/Ellipsis.d.ts b/packages/meta/lib/typography/Base/Ellipsis.d.ts new file mode 100644 index 0000000..610f26f --- /dev/null +++ b/packages/meta/lib/typography/Base/Ellipsis.d.ts @@ -0,0 +1,12 @@ +import * as React from 'react'; +export interface EllipsisProps { + enabledMeasure?: boolean; + text?: React.ReactNode; + width: number; + fontSize: number; + rows: number; + children: (cutChildren: React.ReactNode[], needEllipsis: boolean) => React.ReactNode; + onEllipsis: (isEllipsis: boolean) => void; +} +declare const Ellipsis: React.FC; +export default Ellipsis; diff --git a/packages/meta/lib/typography/Base/Ellipsis.js b/packages/meta/lib/typography/Base/Ellipsis.js new file mode 100644 index 0000000..317dcc6 --- /dev/null +++ b/packages/meta/lib/typography/Base/Ellipsis.js @@ -0,0 +1,185 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/Base/Ellipsis.tsx +var Ellipsis_exports = {}; +__export(Ellipsis_exports, { + default: () => Ellipsis_default +}); +module.exports = __toCommonJS(Ellipsis_exports); +var React = __toESM(require("react")); +var import_toArray = __toESM(require("rc-util/lib/Children/toArray")); +var import_useLayoutEffect = __toESM(require("rc-util/lib/hooks/useLayoutEffect")); +function cuttable(node) { + const type = typeof node; + return type === "string" || type === "number"; +} +function getNodesLen(nodeList) { + let totalLen = 0; + nodeList.forEach((node) => { + if (cuttable(node)) { + totalLen += String(node).length; + } else { + totalLen += 1; + } + }); + return totalLen; +} +function sliceNodes(nodeList, len) { + let currLen = 0; + const currentNodeList = []; + for (let i = 0; i < nodeList.length; i += 1) { + if (currLen === len) { + return currentNodeList; + } + const node = nodeList[i]; + const canCut = cuttable(node); + const nodeLen = canCut ? String(node).length : 1; + const nextLen = currLen + nodeLen; + if (nextLen > len) { + const restLen = len - currLen; + currentNodeList.push(String(node).slice(0, restLen)); + return currentNodeList; + } + currentNodeList.push(node); + currLen = nextLen; + } + return nodeList; +} +var NONE = 0; +var PREPARE = 1; +var WALKING = 2; +var DONE_WITH_ELLIPSIS = 3; +var DONE_WITHOUT_ELLIPSIS = 4; +var Ellipsis = ({ + enabledMeasure, + children, + text, + width, + fontSize, + rows, + onEllipsis +}) => { + const [[startLen, midLen, endLen], setCutLength] = React.useState([0, 0, 0]); + const [lastLen, setLastLen] = React.useState(0); + const [walkingState, setWalkingState] = React.useState(NONE); + const [singleRowHeight, setSingleRowHeight] = React.useState(0); + const singleRowRef = React.useRef(null); + const midRowRef = React.useRef(null); + const nodeList = React.useMemo(() => (0, import_toArray.default)(text), [text]); + const totalLen = React.useMemo(() => getNodesLen(nodeList), [nodeList]); + const mergedChildren = React.useMemo(() => { + if (!enabledMeasure || walkingState !== DONE_WITH_ELLIPSIS) { + if (lastLen && walkingState !== DONE_WITHOUT_ELLIPSIS && enabledMeasure) + return children(sliceNodes(nodeList, lastLen), lastLen < totalLen); + return children(nodeList, false); + } + return children(sliceNodes(nodeList, midLen), midLen < totalLen); + }, [enabledMeasure, walkingState, children, nodeList, midLen, totalLen]); + (0, import_useLayoutEffect.default)(() => { + if (enabledMeasure && width && fontSize && totalLen) { + setWalkingState(PREPARE); + setCutLength([0, Math.ceil(totalLen / 2), totalLen]); + } + }, [enabledMeasure, width, fontSize, text, totalLen, rows]); + (0, import_useLayoutEffect.default)(() => { + var _a; + if (walkingState === PREPARE) { + setSingleRowHeight(((_a = singleRowRef.current) == null ? void 0 : _a.offsetHeight) || 0); + } + }, [walkingState]); + (0, import_useLayoutEffect.default)(() => { + var _a, _b; + if (singleRowHeight) { + if (walkingState === PREPARE) { + const midHeight = ((_a = midRowRef.current) == null ? void 0 : _a.offsetHeight) || 0; + const maxHeight = rows * singleRowHeight; + if (midHeight <= maxHeight) { + setWalkingState(DONE_WITHOUT_ELLIPSIS); + onEllipsis(false); + } else { + setWalkingState(WALKING); + } + } else if (walkingState === WALKING) { + if (startLen !== endLen) { + const midHeight = ((_b = midRowRef.current) == null ? void 0 : _b.offsetHeight) || 0; + const maxHeight = rows * singleRowHeight; + let nextStartLen = startLen; + let nextEndLen = endLen; + if (startLen === endLen - 1) { + nextEndLen = startLen; + } else if (midHeight <= maxHeight) { + nextStartLen = midLen; + } else { + nextEndLen = midLen; + } + const nextMidLen = Math.ceil((nextStartLen + nextEndLen) / 2); + setCutLength([nextStartLen, nextMidLen, nextEndLen]); + } else { + setWalkingState(DONE_WITH_ELLIPSIS); + setLastLen(midLen); + onEllipsis(true); + } + } + } + }, [walkingState, startLen, endLen, rows, singleRowHeight]); + const measureStyle = { + width, + whiteSpace: "normal", + margin: 0, + padding: 0 + }; + const renderMeasure = (content, ref, style) => /* @__PURE__ */ React.createElement( + "span", + { + "aria-hidden": true, + ref, + style: { + position: "fixed", + display: "block", + left: 0, + top: 0, + zIndex: -9999, + visibility: "hidden", + pointerEvents: "none", + fontSize: Math.ceil(fontSize / 2) * 2, + ...style + } + }, + content + ); + const renderMeasureSlice = (len, ref) => { + const sliceNodeList = sliceNodes(nodeList, len); + return renderMeasure(children(sliceNodeList, true), ref, measureStyle); + }; + return /* @__PURE__ */ React.createElement(React.Fragment, null, mergedChildren, enabledMeasure && walkingState !== DONE_WITH_ELLIPSIS && walkingState !== DONE_WITHOUT_ELLIPSIS && /* @__PURE__ */ React.createElement(React.Fragment, null, renderMeasure("lg", singleRowRef, { wordBreak: "keep-all", whiteSpace: "nowrap" }), walkingState === PREPARE ? renderMeasure(children(nodeList, false), midRowRef, measureStyle) : renderMeasureSlice(midLen, midRowRef))); +}; +if (process.env.NODE_ENV !== "production") { + Ellipsis.displayName = "Ellipsis"; +} +var Ellipsis_default = Ellipsis; diff --git a/packages/meta/lib/typography/Base/EllipsisTooltip.d.ts b/packages/meta/lib/typography/Base/EllipsisTooltip.d.ts new file mode 100644 index 0000000..5125044 --- /dev/null +++ b/packages/meta/lib/typography/Base/EllipsisTooltip.d.ts @@ -0,0 +1,10 @@ +import * as React from 'react'; +import type { TooltipProps } from '../../tooltip'; +export interface EllipsisTooltipProps { + tooltipProps?: TooltipProps; + enabledEllipsis: boolean; + isEllipsis?: boolean; + children: React.ReactElement; +} +declare const EllipsisTooltip: React.FC; +export default EllipsisTooltip; diff --git a/packages/meta/lib/typography/Base/EllipsisTooltip.js b/packages/meta/lib/typography/Base/EllipsisTooltip.js new file mode 100644 index 0000000..2cfafd2 --- /dev/null +++ b/packages/meta/lib/typography/Base/EllipsisTooltip.js @@ -0,0 +1,51 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/Base/EllipsisTooltip.tsx +var EllipsisTooltip_exports = {}; +__export(EllipsisTooltip_exports, { + default: () => EllipsisTooltip_default +}); +module.exports = __toCommonJS(EllipsisTooltip_exports); +var React = __toESM(require("react")); +var import_tooltip = __toESM(require("../../tooltip")); +var EllipsisTooltip = ({ + enabledEllipsis, + isEllipsis, + children, + tooltipProps +}) => { + if (!(tooltipProps == null ? void 0 : tooltipProps.title) || !enabledEllipsis) { + return children; + } + return /* @__PURE__ */ React.createElement(import_tooltip.default, { open: isEllipsis ? void 0 : false, ...tooltipProps }, children); +}; +if (process.env.NODE_ENV !== "production") { + EllipsisTooltip.displayName = "EllipsisTooltip"; +} +var EllipsisTooltip_default = EllipsisTooltip; diff --git a/packages/meta/lib/typography/Base/index.d.ts b/packages/meta/lib/typography/Base/index.d.ts new file mode 100644 index 0000000..64aaba8 --- /dev/null +++ b/packages/meta/lib/typography/Base/index.d.ts @@ -0,0 +1,52 @@ +import * as React from 'react'; +import type { AutoSizeType } from 'rc-textarea'; +import type { TooltipProps } from '../../tooltip'; +import type { TypographyProps } from '../Typography'; +export type BaseType = 'secondary' | 'success' | 'warning' | 'danger'; +interface CopyConfig { + text?: string; + onCopy?: (event?: React.MouseEvent) => void; + icon?: React.ReactNode; + tooltips?: boolean | React.ReactNode; + format?: 'text/plain' | 'text/html'; +} +interface EditConfig { + text?: string; + editing?: boolean; + icon?: React.ReactNode; + tooltip?: boolean | React.ReactNode; + onStart?: () => void; + onChange?: (value: string) => void; + onCancel?: () => void; + onEnd?: () => void; + maxLength?: number; + autoSize?: boolean | AutoSizeType; + triggerType?: ('icon' | 'text')[]; + enterIcon?: React.ReactNode; +} +export interface EllipsisConfig { + rows?: number; + expandable?: boolean; + suffix?: string; + symbol?: React.ReactNode; + onExpand?: React.MouseEventHandler; + onEllipsis?: (ellipsis: boolean) => void; + tooltip?: React.ReactNode | TooltipProps; +} +export interface BlockProps extends TypographyProps { + title?: string; + editable?: boolean | EditConfig; + copyable?: boolean | CopyConfig; + type?: BaseType; + disabled?: boolean; + ellipsis?: boolean | EllipsisConfig; + code?: boolean; + mark?: boolean; + underline?: boolean; + delete?: boolean; + strong?: boolean; + keyboard?: boolean; + italic?: boolean; +} +declare const Base: React.ForwardRefExoticComponent & React.RefAttributes>; +export default Base; diff --git a/packages/meta/lib/typography/Base/index.js b/packages/meta/lib/typography/Base/index.js new file mode 100644 index 0000000..a37db95 --- /dev/null +++ b/packages/meta/lib/typography/Base/index.js @@ -0,0 +1,431 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/Base/index.tsx +var Base_exports = {}; +__export(Base_exports, { + default: () => Base_default +}); +module.exports = __toCommonJS(Base_exports); +var React = __toESM(require("react")); +var import_CheckOutlined = __toESM(require("@ant-design/icons/CheckOutlined")); +var import_CopyOutlined = __toESM(require("@ant-design/icons/CopyOutlined")); +var import_EditOutlined = __toESM(require("@ant-design/icons/EditOutlined")); +var import_classnames = __toESM(require("classnames")); +var import_copy_to_clipboard = __toESM(require("copy-to-clipboard")); +var import_rc_resize_observer = __toESM(require("rc-resize-observer")); +var import_toArray = __toESM(require("rc-util/lib/Children/toArray")); +var import_useLayoutEffect = __toESM(require("rc-util/lib/hooks/useLayoutEffect")); +var import_useMergedState = __toESM(require("rc-util/lib/hooks/useMergedState")); +var import_omit = __toESM(require("rc-util/lib/omit")); +var import_ref = require("rc-util/lib/ref"); +var import_styleChecker = require("../../_util/styleChecker"); +var import_transButton = __toESM(require("../../_util/transButton")); +var import_config_provider = require("../../config-provider"); +var import_useLocale = __toESM(require("../../locale/useLocale")); +var import_tooltip = __toESM(require("../../tooltip")); +var import_Editable = __toESM(require("../Editable")); +var import_useMergedConfig = __toESM(require("../hooks/useMergedConfig")); +var import_useUpdatedEffect = __toESM(require("../hooks/useUpdatedEffect")); +var import_Typography = __toESM(require("../Typography")); +var import_Ellipsis = __toESM(require("./Ellipsis")); +var import_EllipsisTooltip = __toESM(require("./EllipsisTooltip")); +function wrapperDecorations({ mark, code, underline, delete: del, strong, keyboard, italic }, content) { + let currentContent = content; + function wrap(tag, needed) { + if (!needed) { + return; + } + currentContent = React.createElement(tag, {}, currentContent); + } + wrap("strong", strong); + wrap("u", underline); + wrap("del", del); + wrap("code", code); + wrap("mark", mark); + wrap("kbd", keyboard); + wrap("i", italic); + return currentContent; +} +function getNode(dom, defaultNode, needDom) { + if (dom === true || dom === void 0) { + return defaultNode; + } + return dom || needDom && defaultNode; +} +function toList(val) { + if (val === false) { + return [false, false]; + } + return Array.isArray(val) ? val : [val]; +} +var ELLIPSIS_STR = "..."; +var Base = React.forwardRef((props, ref) => { + const { + prefixCls: customizePrefixCls, + className, + style, + type, + disabled, + children, + ellipsis, + editable, + copyable, + component, + title, + ...restProps + } = props; + const { getPrefixCls, direction } = React.useContext(import_config_provider.ConfigContext); + const [textLocale] = (0, import_useLocale.default)("Text"); + const typographyRef = React.useRef(null); + const editIconRef = React.useRef(null); + const prefixCls = getPrefixCls("typography", customizePrefixCls); + const textProps = (0, import_omit.default)(restProps, [ + "mark", + "code", + "delete", + "underline", + "strong", + "keyboard", + "italic" + ]); + const [enableEdit, editConfig] = (0, import_useMergedConfig.default)(editable); + const [editing, setEditing] = (0, import_useMergedState.default)(false, { + value: editConfig.editing + }); + const { triggerType = ["icon"] } = editConfig; + const triggerEdit = (edit) => { + var _a; + if (edit) { + (_a = editConfig.onStart) == null ? void 0 : _a.call(editConfig); + } + setEditing(edit); + }; + (0, import_useUpdatedEffect.default)(() => { + var _a; + if (!editing) { + (_a = editIconRef.current) == null ? void 0 : _a.focus(); + } + }, [editing]); + const onEditClick = (e) => { + e == null ? void 0 : e.preventDefault(); + triggerEdit(true); + }; + const onEditChange = (value) => { + var _a; + (_a = editConfig.onChange) == null ? void 0 : _a.call(editConfig, value); + triggerEdit(false); + }; + const onEditCancel = () => { + var _a; + (_a = editConfig.onCancel) == null ? void 0 : _a.call(editConfig); + triggerEdit(false); + }; + const [enableCopy, copyConfig] = (0, import_useMergedConfig.default)(copyable); + const [copied, setCopied] = React.useState(false); + const copyIdRef = React.useRef(null); + const copyOptions = {}; + if (copyConfig.format) { + copyOptions.format = copyConfig.format; + } + const cleanCopyId = () => { + if (copyIdRef.current) { + clearTimeout(copyIdRef.current); + } + }; + const onCopyClick = (e) => { + var _a; + e == null ? void 0 : e.preventDefault(); + e == null ? void 0 : e.stopPropagation(); + (0, import_copy_to_clipboard.default)(copyConfig.text || String(children) || "", copyOptions); + setCopied(true); + cleanCopyId(); + copyIdRef.current = setTimeout(() => { + setCopied(false); + }, 3e3); + (_a = copyConfig.onCopy) == null ? void 0 : _a.call(copyConfig, e); + }; + React.useEffect(() => cleanCopyId, []); + const [isLineClampSupport, setIsLineClampSupport] = React.useState(false); + const [isTextOverflowSupport, setIsTextOverflowSupport] = React.useState(false); + const [expanded, setExpanded] = React.useState(false); + const [isJsEllipsis, setIsJsEllipsis] = React.useState(false); + const [isNativeEllipsis, setIsNativeEllipsis] = React.useState(false); + const [isNativeVisible, setIsNativeVisible] = React.useState(true); + const [enableEllipsis, ellipsisConfig] = (0, import_useMergedConfig.default)(ellipsis, { + expandable: false + }); + const mergedEnableEllipsis = enableEllipsis && !expanded; + const { rows = 1 } = ellipsisConfig; + const needMeasureEllipsis = React.useMemo( + () => ( + // Disable ellipsis + !mergedEnableEllipsis || // Provide suffix + ellipsisConfig.suffix !== void 0 || ellipsisConfig.onEllipsis || // Can't use css ellipsis since we need to provide the place for button + ellipsisConfig.expandable || enableEdit || enableCopy + ), + [mergedEnableEllipsis, ellipsisConfig, enableEdit, enableCopy] + ); + (0, import_useLayoutEffect.default)(() => { + if (enableEllipsis && !needMeasureEllipsis) { + setIsLineClampSupport((0, import_styleChecker.isStyleSupport)("webkitLineClamp")); + setIsTextOverflowSupport((0, import_styleChecker.isStyleSupport)("textOverflow")); + } + }, [needMeasureEllipsis, enableEllipsis]); + const cssEllipsis = React.useMemo(() => { + if (needMeasureEllipsis) { + return false; + } + if (rows === 1) { + return isTextOverflowSupport; + } + return isLineClampSupport; + }, [needMeasureEllipsis, isTextOverflowSupport, isLineClampSupport]); + const isMergedEllipsis = mergedEnableEllipsis && (cssEllipsis ? isNativeEllipsis : isJsEllipsis); + const cssTextOverflow = mergedEnableEllipsis && rows === 1 && cssEllipsis; + const cssLineClamp = mergedEnableEllipsis && rows > 1 && cssEllipsis; + const onExpandClick = (e) => { + var _a; + setExpanded(true); + (_a = ellipsisConfig.onExpand) == null ? void 0 : _a.call(ellipsisConfig, e); + }; + const [ellipsisWidth, setEllipsisWidth] = React.useState(0); + const [ellipsisFontSize, setEllipsisFontSize] = React.useState(0); + const onResize = ({ offsetWidth }, element) => { + var _a; + setEllipsisWidth(offsetWidth); + setEllipsisFontSize(parseInt((_a = window.getComputedStyle) == null ? void 0 : _a.call(window, element).fontSize, 10) || 0); + }; + const onJsEllipsis = (jsEllipsis) => { + var _a; + setIsJsEllipsis(jsEllipsis); + if (isJsEllipsis !== jsEllipsis) { + (_a = ellipsisConfig.onEllipsis) == null ? void 0 : _a.call(ellipsisConfig, jsEllipsis); + } + }; + React.useEffect(() => { + const textEle = typographyRef.current; + if (enableEllipsis && cssEllipsis && textEle) { + const currentEllipsis = cssLineClamp ? textEle.offsetHeight < textEle.scrollHeight : textEle.offsetWidth < textEle.scrollWidth; + if (isNativeEllipsis !== currentEllipsis) { + setIsNativeEllipsis(currentEllipsis); + } + } + }, [enableEllipsis, cssEllipsis, children, cssLineClamp, isNativeVisible, ellipsisWidth]); + React.useEffect(() => { + const textEle = typographyRef.current; + if (typeof IntersectionObserver === "undefined" || !textEle || !cssEllipsis || !mergedEnableEllipsis) { + return; + } + const observer = new IntersectionObserver(() => { + setIsNativeVisible(!!textEle.offsetParent); + }); + observer.observe(textEle); + return () => { + observer.disconnect(); + }; + }, [cssEllipsis, mergedEnableEllipsis]); + let tooltipProps = {}; + if (ellipsisConfig.tooltip === true) { + tooltipProps = { title: editConfig.text ?? children }; + } else if (React.isValidElement(ellipsisConfig.tooltip)) { + tooltipProps = { title: ellipsisConfig.tooltip }; + } else if (typeof ellipsisConfig.tooltip === "object") { + tooltipProps = { title: editConfig.text ?? children, ...ellipsisConfig.tooltip }; + } else { + tooltipProps = { title: ellipsisConfig.tooltip }; + } + const topAriaLabel = React.useMemo(() => { + const isValid = (val) => ["string", "number"].includes(typeof val); + if (!enableEllipsis || cssEllipsis) { + return void 0; + } + if (isValid(editConfig.text)) { + return editConfig.text; + } + if (isValid(children)) { + return children; + } + if (isValid(title)) { + return title; + } + if (isValid(tooltipProps.title)) { + return tooltipProps.title; + } + return void 0; + }, [enableEllipsis, cssEllipsis, title, tooltipProps.title, isMergedEllipsis]); + if (editing) { + return /* @__PURE__ */ React.createElement( + import_Editable.default, + { + value: editConfig.text ?? (typeof children === "string" ? children : ""), + onSave: onEditChange, + onCancel: onEditCancel, + onEnd: editConfig.onEnd, + prefixCls, + className, + style, + direction, + component, + maxLength: editConfig.maxLength, + autoSize: editConfig.autoSize, + enterIcon: editConfig.enterIcon + } + ); + } + const renderExpand = () => { + const { expandable, symbol } = ellipsisConfig; + if (!expandable) + return null; + let expandContent; + if (symbol) { + expandContent = symbol; + } else { + expandContent = textLocale == null ? void 0 : textLocale.expand; + } + return /* @__PURE__ */ React.createElement( + "a", + { + key: "expand", + className: `${prefixCls}-expand`, + onClick: onExpandClick, + "aria-label": textLocale == null ? void 0 : textLocale.expand + }, + expandContent + ); + }; + const renderEdit = () => { + if (!enableEdit) + return; + const { icon, tooltip } = editConfig; + const editTitle = (0, import_toArray.default)(tooltip)[0] || (textLocale == null ? void 0 : textLocale.edit); + const ariaLabel = typeof editTitle === "string" ? editTitle : ""; + return triggerType.includes("icon") ? /* @__PURE__ */ React.createElement(import_tooltip.default, { key: "edit", title: tooltip === false ? "" : editTitle }, /* @__PURE__ */ React.createElement( + import_transButton.default, + { + ref: editIconRef, + className: `${prefixCls}-edit`, + onClick: onEditClick, + "aria-label": ariaLabel + }, + icon || /* @__PURE__ */ React.createElement(import_EditOutlined.default, { role: "button" }) + )) : null; + }; + const renderCopy = () => { + if (!enableCopy) { + return null; + } + const { tooltips, icon } = copyConfig; + const tooltipNodes = toList(tooltips); + const iconNodes = toList(icon); + const copyTitle = copied ? getNode(tooltipNodes[1], textLocale == null ? void 0 : textLocale.copied) : getNode(tooltipNodes[0], textLocale == null ? void 0 : textLocale.copy); + const systemStr = copied ? textLocale == null ? void 0 : textLocale.copied : textLocale == null ? void 0 : textLocale.copy; + const ariaLabel = typeof copyTitle === "string" ? copyTitle : systemStr; + return /* @__PURE__ */ React.createElement(import_tooltip.default, { key: "copy", title: copyTitle }, /* @__PURE__ */ React.createElement( + import_transButton.default, + { + className: (0, import_classnames.default)(`${prefixCls}-copy`, { + [`${prefixCls}-copy-success`]: copied, + [`${prefixCls}-copy-icon-only`]: children === null || children === void 0 + }), + onClick: onCopyClick, + "aria-label": ariaLabel + }, + copied ? getNode(iconNodes[1], /* @__PURE__ */ React.createElement(import_CheckOutlined.default, null), true) : getNode(iconNodes[0], /* @__PURE__ */ React.createElement(import_CopyOutlined.default, null), true) + )); + }; + const renderOperations = (renderExpanded) => [ + renderExpanded && renderExpand(), + renderEdit(), + renderCopy() + ]; + const renderEllipsis = (needEllipsis) => [ + needEllipsis && /* @__PURE__ */ React.createElement("span", { "aria-hidden": true, key: "ellipsis" }, ELLIPSIS_STR), + ellipsisConfig.suffix, + renderOperations(needEllipsis) + ]; + return /* @__PURE__ */ React.createElement(import_rc_resize_observer.default, { onResize, disabled: !mergedEnableEllipsis }, (resizeRef) => /* @__PURE__ */ React.createElement( + import_EllipsisTooltip.default, + { + tooltipProps, + enabledEllipsis: mergedEnableEllipsis, + isEllipsis: isMergedEllipsis + }, + /* @__PURE__ */ React.createElement( + import_Typography.default, + { + className: (0, import_classnames.default)( + { + [`${prefixCls}-${type}`]: type, + [`${prefixCls}-disabled`]: disabled, + [`${prefixCls}-ellipsis`]: enableEllipsis, + [`${prefixCls}-single-line`]: mergedEnableEllipsis && rows === 1, + [`${prefixCls}-ellipsis-single-line`]: cssTextOverflow, + [`${prefixCls}-ellipsis-multiple-line`]: cssLineClamp + }, + className + ), + prefixCls: customizePrefixCls, + style: { + ...style, + WebkitLineClamp: cssLineClamp ? rows : void 0 + }, + component, + ref: (0, import_ref.composeRef)(resizeRef, typographyRef, ref), + direction, + onClick: triggerType.includes("text") ? onEditClick : void 0, + "aria-label": topAriaLabel == null ? void 0 : topAriaLabel.toString(), + title, + ...textProps + }, + /* @__PURE__ */ React.createElement( + import_Ellipsis.default, + { + enabledMeasure: mergedEnableEllipsis && !cssEllipsis, + text: children, + rows, + width: ellipsisWidth, + fontSize: ellipsisFontSize, + onEllipsis: onJsEllipsis + }, + (node, needEllipsis) => { + let renderNode = node; + if (node.length && needEllipsis && topAriaLabel) { + renderNode = /* @__PURE__ */ React.createElement("span", { key: "show-content", "aria-hidden": true }, renderNode); + } + const wrappedContext = wrapperDecorations( + props, + /* @__PURE__ */ React.createElement(React.Fragment, null, renderNode, renderEllipsis(needEllipsis)) + ); + return wrappedContext; + } + ) + ) + )); +}); +var Base_default = Base; diff --git a/packages/meta/lib/typography/Editable.d.ts b/packages/meta/lib/typography/Editable.d.ts new file mode 100644 index 0000000..7508ed9 --- /dev/null +++ b/packages/meta/lib/typography/Editable.d.ts @@ -0,0 +1,20 @@ +import type { AutoSizeType } from 'rc-textarea'; +import * as React from 'react'; +import type { DirectionType } from '../config-provider'; +interface EditableProps { + prefixCls: string; + value: string; + ['aria-label']?: string; + onSave: (value: string) => void; + onCancel: () => void; + onEnd?: () => void; + className?: string; + style?: React.CSSProperties; + direction?: DirectionType; + maxLength?: number; + autoSize?: boolean | AutoSizeType; + enterIcon?: React.ReactNode; + component?: string; +} +declare const Editable: React.FC; +export default Editable; diff --git a/packages/meta/lib/typography/Editable.js b/packages/meta/lib/typography/Editable.js new file mode 100644 index 0000000..2eca3d7 --- /dev/null +++ b/packages/meta/lib/typography/Editable.js @@ -0,0 +1,142 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/Editable.tsx +var Editable_exports = {}; +__export(Editable_exports, { + default: () => Editable_default +}); +module.exports = __toCommonJS(Editable_exports); +var import_EnterOutlined = __toESM(require("@ant-design/icons/EnterOutlined")); +var import_classnames = __toESM(require("classnames")); +var import_KeyCode = __toESM(require("rc-util/lib/KeyCode")); +var React = __toESM(require("react")); +var import_reactNode = require("../_util/reactNode"); +var import_TextArea = __toESM(require("../input/TextArea")); +var import_style = __toESM(require("./style")); +var Editable = (props) => { + const { + prefixCls, + "aria-label": ariaLabel, + className, + style, + direction, + maxLength, + autoSize = true, + value, + onSave, + onCancel, + onEnd, + component, + enterIcon = /* @__PURE__ */ React.createElement(import_EnterOutlined.default, null) + } = props; + const ref = React.useRef(null); + const inComposition = React.useRef(false); + const lastKeyCode = React.useRef(); + const [current, setCurrent] = React.useState(value); + React.useEffect(() => { + setCurrent(value); + }, [value]); + React.useEffect(() => { + if (ref.current && ref.current.resizableTextArea) { + const { textArea } = ref.current.resizableTextArea; + textArea.focus(); + const { length } = textArea.value; + textArea.setSelectionRange(length, length); + } + }, []); + const onChange = ({ target }) => { + setCurrent(target.value.replace(/[\n\r]/g, "")); + }; + const onCompositionStart = () => { + inComposition.current = true; + }; + const onCompositionEnd = () => { + inComposition.current = false; + }; + const onKeyDown = ({ keyCode }) => { + if (inComposition.current) + return; + lastKeyCode.current = keyCode; + }; + const confirmChange = () => { + onSave(current.trim()); + }; + const onKeyUp = ({ + keyCode, + ctrlKey, + altKey, + metaKey, + shiftKey + }) => { + if (lastKeyCode.current === keyCode && !inComposition.current && !ctrlKey && !altKey && !metaKey && !shiftKey) { + if (keyCode === import_KeyCode.default.ENTER) { + confirmChange(); + onEnd == null ? void 0 : onEnd(); + } else if (keyCode === import_KeyCode.default.ESC) { + onCancel(); + } + } + }; + const onBlur = () => { + confirmChange(); + }; + const textClassName = component ? `${prefixCls}-${component}` : ""; + const [wrapCSSVar, hashId, cssVarCls] = (0, import_style.default)(prefixCls); + const textAreaClassName = (0, import_classnames.default)( + prefixCls, + `${prefixCls}-edit-content`, + { + [`${prefixCls}-rtl`]: direction === "rtl" + }, + className, + textClassName, + hashId, + cssVarCls + ); + return wrapCSSVar( + /* @__PURE__ */ React.createElement("div", { className: textAreaClassName, style }, /* @__PURE__ */ React.createElement( + import_TextArea.default, + { + ref, + maxLength, + value: current, + onChange, + onKeyDown, + onKeyUp, + onCompositionStart, + onCompositionEnd, + onBlur, + "aria-label": ariaLabel, + rows: 1, + autoSize + } + ), enterIcon !== null ? (0, import_reactNode.cloneElement)(enterIcon, { className: `${prefixCls}-edit-content-confirm` }) : null) + ); +}; +var Editable_default = Editable; diff --git a/packages/meta/lib/typography/Link.d.ts b/packages/meta/lib/typography/Link.d.ts new file mode 100644 index 0000000..a2c2a06 --- /dev/null +++ b/packages/meta/lib/typography/Link.d.ts @@ -0,0 +1,7 @@ +import * as React from 'react'; +import type { BlockProps } from './Base'; +export interface LinkProps extends BlockProps<'a'>, Omit, 'type' | keyof BlockProps<'a'>> { + ellipsis?: boolean; +} +declare const Link: React.ForwardRefExoticComponent>; +export default Link; diff --git a/packages/meta/lib/typography/Link.js b/packages/meta/lib/typography/Link.js new file mode 100644 index 0000000..d51381d --- /dev/null +++ b/packages/meta/lib/typography/Link.js @@ -0,0 +1,50 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/Link.tsx +var Link_exports = {}; +__export(Link_exports, { + default: () => Link_default +}); +module.exports = __toCommonJS(Link_exports); +var React = __toESM(require("react")); +var import_warning = require("../_util/warning"); +var import_Base = __toESM(require("./Base")); +var Link = React.forwardRef(({ ellipsis, rel, ...restProps }, ref) => { + if (process.env.NODE_ENV !== "production") { + const warning = (0, import_warning.devUseWarning)("Typography.Link"); + warning(typeof ellipsis !== "object", "usage", "`ellipsis` only supports boolean value."); + } + const mergedProps = { + ...restProps, + rel: rel === void 0 && restProps.target === "_blank" ? "noopener noreferrer" : rel + }; + delete mergedProps.navigate; + return /* @__PURE__ */ React.createElement(import_Base.default, { ...mergedProps, ref, ellipsis: !!ellipsis, component: "a" }); +}); +var Link_default = Link; diff --git a/packages/meta/lib/typography/Paragraph.d.ts b/packages/meta/lib/typography/Paragraph.d.ts new file mode 100644 index 0000000..d1d3168 --- /dev/null +++ b/packages/meta/lib/typography/Paragraph.d.ts @@ -0,0 +1,6 @@ +import * as React from 'react'; +import type { BlockProps } from './Base'; +export interface ParagraphProps extends BlockProps<'div'>, Omit, 'type' | keyof BlockProps<'div'>> { +} +declare const Paragraph: React.ForwardRefExoticComponent>; +export default Paragraph; diff --git a/packages/meta/lib/typography/Paragraph.js b/packages/meta/lib/typography/Paragraph.js new file mode 100644 index 0000000..4a71c44 --- /dev/null +++ b/packages/meta/lib/typography/Paragraph.js @@ -0,0 +1,38 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/Paragraph.tsx +var Paragraph_exports = {}; +__export(Paragraph_exports, { + default: () => Paragraph_default +}); +module.exports = __toCommonJS(Paragraph_exports); +var React = __toESM(require("react")); +var import_Base = __toESM(require("./Base")); +var Paragraph = React.forwardRef((props, ref) => /* @__PURE__ */ React.createElement(import_Base.default, { ref, ...props, component: "div" })); +var Paragraph_default = Paragraph; diff --git a/packages/meta/lib/typography/Text.d.ts b/packages/meta/lib/typography/Text.d.ts new file mode 100644 index 0000000..6bd3ea1 --- /dev/null +++ b/packages/meta/lib/typography/Text.d.ts @@ -0,0 +1,7 @@ +import * as React from 'react'; +import type { BlockProps, EllipsisConfig } from './Base'; +export interface TextProps extends BlockProps<'span'>, Omit, 'type' | keyof BlockProps<'span'>> { + ellipsis?: boolean | Omit; +} +declare const _default: React.ForwardRefExoticComponent>; +export default _default; diff --git a/packages/meta/lib/typography/Text.js b/packages/meta/lib/typography/Text.js new file mode 100644 index 0000000..cba9c2f --- /dev/null +++ b/packages/meta/lib/typography/Text.js @@ -0,0 +1,56 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/Text.tsx +var Text_exports = {}; +__export(Text_exports, { + default: () => Text_default +}); +module.exports = __toCommonJS(Text_exports); +var React = __toESM(require("react")); +var import_omit = __toESM(require("rc-util/lib/omit")); +var import_warning = require("../_util/warning"); +var import_Base = __toESM(require("./Base")); +var Text = ({ ellipsis, ...restProps }, ref) => { + const mergedEllipsis = React.useMemo(() => { + if (ellipsis && typeof ellipsis === "object") { + return (0, import_omit.default)(ellipsis, ["expandable", "rows"]); + } + return ellipsis; + }, [ellipsis]); + if (process.env.NODE_ENV !== "production") { + const warning = (0, import_warning.devUseWarning)("Typography.Text"); + warning( + typeof ellipsis !== "object" || !ellipsis || !("expandable" in ellipsis) && !("rows" in ellipsis), + "usage", + "`ellipsis` do not support `expandable` or `rows` props." + ); + } + return /* @__PURE__ */ React.createElement(import_Base.default, { ref, ...restProps, ellipsis: mergedEllipsis, component: "span" }); +}; +var Text_default = React.forwardRef(Text); diff --git a/packages/meta/lib/typography/Title.d.ts b/packages/meta/lib/typography/Title.d.ts new file mode 100644 index 0000000..4b01fde --- /dev/null +++ b/packages/meta/lib/typography/Title.d.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; +import type { BlockProps } from './Base'; +declare const TITLE_ELE_LIST: readonly [1, 2, 3, 4, 5]; +export interface TitleProps extends Omit, 'strong'>, Omit, 'type' | keyof BlockProps<'h1' | 'h2' | 'h3' | 'h4' | 'h5'>> { + level?: typeof TITLE_ELE_LIST[number]; +} +declare const Title: React.ForwardRefExoticComponent>; +export default Title; diff --git a/packages/meta/lib/typography/Title.js b/packages/meta/lib/typography/Title.js new file mode 100644 index 0000000..1d01319 --- /dev/null +++ b/packages/meta/lib/typography/Title.js @@ -0,0 +1,57 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/Title.tsx +var Title_exports = {}; +__export(Title_exports, { + default: () => Title_default +}); +module.exports = __toCommonJS(Title_exports); +var React = __toESM(require("react")); +var import_warning = require("../_util/warning"); +var import_Base = __toESM(require("./Base")); +var TITLE_ELE_LIST = [1, 2, 3, 4, 5]; +var Title = React.forwardRef((props, ref) => { + const { level = 1, ...restProps } = props; + let component; + if (process.env.NODE_ENV !== "production") { + const warning = (0, import_warning.devUseWarning)("Typography.Title"); + warning( + TITLE_ELE_LIST.includes(level), + "usage", + "Title only accept `1 | 2 | 3 | 4 | 5` as `level` value. And `5` need 4.6.0+ version." + ); + } + if (TITLE_ELE_LIST.includes(level)) { + component = `h${level}`; + } else { + component = "h1"; + } + return /* @__PURE__ */ React.createElement(import_Base.default, { ref, ...restProps, component }); +}); +var Title_default = Title; diff --git a/packages/meta/lib/typography/Typography.d.ts b/packages/meta/lib/typography/Typography.d.ts new file mode 100644 index 0000000..c75aa48 --- /dev/null +++ b/packages/meta/lib/typography/Typography.d.ts @@ -0,0 +1,18 @@ +import * as React from 'react'; +import type { DirectionType } from '../config-provider'; +export interface TypographyProps extends React.HTMLAttributes { + id?: string; + prefixCls?: string; + className?: string; + rootClassName?: string; + style?: React.CSSProperties; + children?: React.ReactNode; + ['aria-label']?: string; + direction?: DirectionType; +} +interface InternalTypographyProps extends TypographyProps { + /** @deprecated Use `ref` directly if using React 16 */ + setContentRef?: (node: HTMLElement) => void; +} +declare const Typography: React.ForwardRefExoticComponent & React.RefAttributes>; +export default Typography; diff --git a/packages/meta/lib/typography/Typography.js b/packages/meta/lib/typography/Typography.js new file mode 100644 index 0000000..70eb68e --- /dev/null +++ b/packages/meta/lib/typography/Typography.js @@ -0,0 +1,89 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/Typography.tsx +var Typography_exports = {}; +__export(Typography_exports, { + default: () => Typography_default +}); +module.exports = __toCommonJS(Typography_exports); +var React = __toESM(require("react")); +var import_classnames = __toESM(require("classnames")); +var import_ref = require("rc-util/lib/ref"); +var import_warning = require("../_util/warning"); +var import_config_provider = require("../config-provider"); +var import_style = __toESM(require("./style")); +var Typography = React.forwardRef((props, ref) => { + const { + prefixCls: customizePrefixCls, + component: Component = "article", + className, + rootClassName, + setContentRef, + children, + direction: typographyDirection, + style, + ...restProps + } = props; + const { + getPrefixCls, + direction: contextDirection, + typography + } = React.useContext(import_config_provider.ConfigContext); + const direction = typographyDirection ?? contextDirection; + let mergedRef = ref; + if (setContentRef) { + mergedRef = (0, import_ref.composeRef)(ref, setContentRef); + } + if (process.env.NODE_ENV !== "production") { + const warning = (0, import_warning.devUseWarning)("Typography"); + warning.deprecated(!setContentRef, "setContentRef", "ref"); + } + const prefixCls = getPrefixCls("typography", customizePrefixCls); + const [wrapCSSVar, hashId, cssVarCls] = (0, import_style.default)(prefixCls); + const componentClassName = (0, import_classnames.default)( + prefixCls, + typography == null ? void 0 : typography.className, + { + [`${prefixCls}-rtl`]: direction === "rtl" + }, + className, + rootClassName, + hashId, + cssVarCls + ); + const mergedStyle = { ...typography == null ? void 0 : typography.style, ...style }; + return wrapCSSVar( + // @ts-expect-error: Expression produces a union type that is too complex to represent. + /* @__PURE__ */ React.createElement(Component, { className: componentClassName, style: mergedStyle, ref: mergedRef, ...restProps }, children) + ); +}); +if (process.env.NODE_ENV !== "production") { + Typography.displayName = "Typography"; +} +var Typography_default = Typography; diff --git a/packages/meta/lib/typography/hooks/useMergedConfig.d.ts b/packages/meta/lib/typography/hooks/useMergedConfig.d.ts new file mode 100644 index 0000000..dda4bc3 --- /dev/null +++ b/packages/meta/lib/typography/hooks/useMergedConfig.d.ts @@ -0,0 +1 @@ +export default function useMergedConfig(propConfig: any, templateConfig?: Target): readonly [boolean, Target]; diff --git a/packages/meta/lib/typography/hooks/useMergedConfig.js b/packages/meta/lib/typography/hooks/useMergedConfig.js new file mode 100644 index 0000000..c59f004 --- /dev/null +++ b/packages/meta/lib/typography/hooks/useMergedConfig.js @@ -0,0 +1,47 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/hooks/useMergedConfig.ts +var useMergedConfig_exports = {}; +__export(useMergedConfig_exports, { + default: () => useMergedConfig +}); +module.exports = __toCommonJS(useMergedConfig_exports); +var React = __toESM(require("react")); +function useMergedConfig(propConfig, templateConfig) { + return React.useMemo(() => { + const support = !!propConfig; + return [ + support, + { + ...templateConfig, + ...support && typeof propConfig === "object" ? propConfig : null + } + ]; + }, [propConfig]); +} diff --git a/packages/meta/lib/typography/hooks/useUpdatedEffect.d.ts b/packages/meta/lib/typography/hooks/useUpdatedEffect.d.ts new file mode 100644 index 0000000..5db26a3 --- /dev/null +++ b/packages/meta/lib/typography/hooks/useUpdatedEffect.d.ts @@ -0,0 +1,4 @@ +import * as React from 'react'; +/** Similar with `useEffect` but only trigger after mounted */ +declare const useUpdatedEffect: (callback: () => void, conditions?: React.DependencyList) => void; +export default useUpdatedEffect; diff --git a/packages/meta/lib/typography/hooks/useUpdatedEffect.js b/packages/meta/lib/typography/hooks/useUpdatedEffect.js new file mode 100644 index 0000000..70344b9 --- /dev/null +++ b/packages/meta/lib/typography/hooks/useUpdatedEffect.js @@ -0,0 +1,46 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/hooks/useUpdatedEffect.ts +var useUpdatedEffect_exports = {}; +__export(useUpdatedEffect_exports, { + default: () => useUpdatedEffect_default +}); +module.exports = __toCommonJS(useUpdatedEffect_exports); +var React = __toESM(require("react")); +var useUpdatedEffect = (callback, conditions) => { + const mountRef = React.useRef(false); + React.useEffect(() => { + if (mountRef.current) { + callback(); + } else { + mountRef.current = true; + } + }, conditions); +}; +var useUpdatedEffect_default = useUpdatedEffect; diff --git a/packages/meta/lib/typography/index.d.ts b/packages/meta/lib/typography/index.d.ts new file mode 100644 index 0000000..a526689 --- /dev/null +++ b/packages/meta/lib/typography/index.d.ts @@ -0,0 +1,13 @@ +import Link from './Link'; +import Paragraph from './Paragraph'; +import Text from './Text'; +import Title from './Title'; +import OriginTypography from './Typography'; +export type TypographyProps = typeof OriginTypography & { + Text: typeof Text; + Link: typeof Link; + Title: typeof Title; + Paragraph: typeof Paragraph; +}; +declare const Typography: TypographyProps; +export default Typography; diff --git a/packages/meta/lib/typography/index.js b/packages/meta/lib/typography/index.js new file mode 100644 index 0000000..f255ee6 --- /dev/null +++ b/packages/meta/lib/typography/index.js @@ -0,0 +1,45 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/index.ts +var typography_exports = {}; +__export(typography_exports, { + default: () => typography_default +}); +module.exports = __toCommonJS(typography_exports); +var import_Link = __toESM(require("./Link")); +var import_Paragraph = __toESM(require("./Paragraph")); +var import_Text = __toESM(require("./Text")); +var import_Title = __toESM(require("./Title")); +var import_Typography = __toESM(require("./Typography")); +var Typography = import_Typography.default; +Typography.Text = import_Text.default; +Typography.Link = import_Link.default; +Typography.Title = import_Title.default; +Typography.Paragraph = import_Paragraph.default; +var typography_default = Typography; diff --git a/packages/meta/lib/typography/style/index.d.ts b/packages/meta/lib/typography/style/index.d.ts new file mode 100644 index 0000000..247d08d --- /dev/null +++ b/packages/meta/lib/typography/style/index.d.ts @@ -0,0 +1,19 @@ +/// +import type { FullToken, GetDefaultToken } from '../../theme/internal'; +/** Component only token. Which will handle additional calculation of alias token */ +export interface ComponentToken { + /** + * @desc 标题上间距 + * @descEN Margin top of title + */ + titleMarginTop: number | string; + /** + * @desc 标题下间距 + * @descEN Margin bottom of title + */ + titleMarginBottom: number | string; +} +export type TypographyToken = FullToken<'Typography'>; +export declare const prepareComponentToken: GetDefaultToken<'Typography'>; +declare const _default: (prefixCls: string, rootCls?: string) => readonly [(node: import("react").ReactElement>) => import("react").ReactElement>, string, string | undefined]; +export default _default; diff --git a/packages/meta/lib/typography/style/index.js b/packages/meta/lib/typography/style/index.js new file mode 100644 index 0000000..c1f6684 --- /dev/null +++ b/packages/meta/lib/typography/style/index.js @@ -0,0 +1,127 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/style/index.ts +var style_exports = {}; +__export(style_exports, { + default: () => style_default, + prepareComponentToken: () => prepareComponentToken +}); +module.exports = __toCommonJS(style_exports); +var import_style = require("../../style"); +var import_internal = require("../../theme/internal"); +var import_mixins = require("./mixins"); +var genTypographyStyle = (token) => { + const { componentCls, titleMarginTop } = token; + return { + [componentCls]: { + color: token.colorText, + wordBreak: "break-word", + lineHeight: token.lineHeight, + [`&${componentCls}-secondary`]: { + color: token.colorTextDescription + }, + [`&${componentCls}-success`]: { + color: token.colorSuccess + }, + [`&${componentCls}-warning`]: { + color: token.colorWarning + }, + [`&${componentCls}-danger`]: { + color: token.colorError, + "a&:active, a&:focus": { + color: token.colorErrorActive + }, + "a&:hover": { + color: token.colorErrorHover + } + }, + [`&${componentCls}-disabled`]: { + color: token.colorTextDisabled, + cursor: "not-allowed", + userSelect: "none" + }, + [` + div&, + p + `]: { + marginBottom: "1em" + }, + ...(0, import_mixins.getTitleStyles)(token), + [` + & + h1${componentCls}, + & + h2${componentCls}, + & + h3${componentCls}, + & + h4${componentCls}, + & + h5${componentCls} + `]: { + marginTop: titleMarginTop + }, + [` + div, + ul, + li, + p, + h1, + h2, + h3, + h4, + h5`]: { + [` + + h1, + + h2, + + h3, + + h4, + + h5 + `]: { + marginTop: titleMarginTop + } + }, + ...(0, import_mixins.getResetStyles)(token), + ...(0, import_mixins.getLinkStyles)(token), + // Operation + [` + ${componentCls}-expand, + ${componentCls}-edit, + ${componentCls}-copy + `]: { + ...(0, import_style.operationUnit)(token), + marginInlineStart: token.marginXXS + }, + ...(0, import_mixins.getEditableStyles)(token), + ...(0, import_mixins.getCopyableStyles)(token), + ...(0, import_mixins.getEllipsisStyles)(), + "&-rtl": { + direction: "rtl" + } + } + }; +}; +var prepareComponentToken = () => ({ + titleMarginTop: "1.2em", + titleMarginBottom: "0.5em" +}); +var style_default = (0, import_internal.genStyleHooks)( + "Typography", + (token) => [genTypographyStyle(token)], + prepareComponentToken +); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + prepareComponentToken +}); diff --git a/packages/meta/lib/typography/style/mixins.d.ts b/packages/meta/lib/typography/style/mixins.d.ts new file mode 100644 index 0000000..3e8df66 --- /dev/null +++ b/packages/meta/lib/typography/style/mixins.d.ts @@ -0,0 +1,9 @@ +import { type CSSObject } from '@ant-design/cssinjs'; +import type { TypographyToken } from '.'; +import type { GenerateStyle } from '../../theme/internal'; +export declare const getTitleStyles: GenerateStyle; +export declare const getLinkStyles: GenerateStyle; +export declare const getResetStyles: GenerateStyle; +export declare const getEditableStyles: GenerateStyle; +export declare const getCopyableStyles: GenerateStyle; +export declare const getEllipsisStyles: () => CSSObject; diff --git a/packages/meta/lib/typography/style/mixins.js b/packages/meta/lib/typography/style/mixins.js new file mode 100644 index 0000000..4788eeb --- /dev/null +++ b/packages/meta/lib/typography/style/mixins.js @@ -0,0 +1,259 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/typography/style/mixins.ts +var mixins_exports = {}; +__export(mixins_exports, { + getCopyableStyles: () => getCopyableStyles, + getEditableStyles: () => getEditableStyles, + getEllipsisStyles: () => getEllipsisStyles, + getLinkStyles: () => getLinkStyles, + getResetStyles: () => getResetStyles, + getTitleStyles: () => getTitleStyles +}); +module.exports = __toCommonJS(mixins_exports); +var import_colors = require("@ant-design/colors"); +var import_cssinjs = require("@ant-design/cssinjs"); +var import_style = require("../../style"); +var getTitleStyle = (fontSize, lineHeight, color, token) => { + const { titleMarginBottom, fontWeightStrong } = token; + return { + marginBottom: titleMarginBottom, + color, + fontWeight: fontWeightStrong, + fontSize, + lineHeight + }; +}; +var getTitleStyles = (token) => { + const headings = [1, 2, 3, 4, 5]; + const styles = {}; + headings.forEach((headingLevel) => { + styles[` + h${headingLevel}&, + div&-h${headingLevel}, + div&-h${headingLevel} > textarea, + h${headingLevel} + `] = getTitleStyle( + token[`fontSizeHeading${headingLevel}`], + token[`lineHeightHeading${headingLevel}`], + token.colorTextHeading, + token + ); + }); + return styles; +}; +var getLinkStyles = (token) => { + const { componentCls } = token; + return { + "a&, a": { + ...(0, import_style.operationUnit)(token), + textDecoration: token.linkDecoration, + "&:active, &:hover": { + textDecoration: token.linkHoverDecoration + }, + [`&[disabled], &${componentCls}-disabled`]: { + color: token.colorTextDisabled, + cursor: "not-allowed", + "&:active, &:hover": { + color: token.colorTextDisabled + }, + "&:active": { + pointerEvents: "none" + } + } + } + }; +}; +var getResetStyles = (token) => ({ + code: { + margin: "0 0.2em", + paddingInline: "0.4em", + paddingBlock: "0.2em 0.1em", + fontSize: "85%", + fontFamily: token.fontFamilyCode, + background: "rgba(150, 150, 150, 0.1)", + border: "1px solid rgba(100, 100, 100, 0.2)", + borderRadius: 3 + }, + kbd: { + margin: "0 0.2em", + paddingInline: "0.4em", + paddingBlock: "0.15em 0.1em", + fontSize: "90%", + fontFamily: token.fontFamilyCode, + background: "rgba(150, 150, 150, 0.06)", + border: "1px solid rgba(100, 100, 100, 0.2)", + borderBottomWidth: 2, + borderRadius: 3 + }, + mark: { + padding: 0, + // FIXME hardcode in v4 + backgroundColor: import_colors.gold[2] + }, + "u, ins": { + textDecoration: "underline", + textDecorationSkipInk: "auto" + }, + "s, del": { + textDecoration: "line-through" + }, + strong: { + fontWeight: 600 + }, + // list + "ul, ol": { + marginInline: 0, + marginBlock: "0 1em", + padding: 0, + li: { + marginInline: "20px 0", + marginBlock: 0, + paddingInline: "4px 0", + paddingBlock: 0 + } + }, + ul: { + listStyleType: "circle", + ul: { + listStyleType: "disc" + } + }, + ol: { + listStyleType: "decimal" + }, + // pre & block + "pre, blockquote": { + margin: "1em 0" + }, + pre: { + padding: "0.4em 0.6em", + whiteSpace: "pre-wrap", + wordWrap: "break-word", + background: "rgba(150, 150, 150, 0.1)", + border: "1px solid rgba(100, 100, 100, 0.2)", + borderRadius: 3, + fontFamily: token.fontFamilyCode, + // Compatible for marked + code: { + display: "inline", + margin: 0, + padding: 0, + fontSize: "inherit", + fontFamily: "inherit", + background: "transparent", + border: 0 + } + }, + blockquote: { + paddingInline: "0.6em 0", + paddingBlock: 0, + borderInlineStart: "4px solid rgba(100, 100, 100, 0.2)", + opacity: 0.85 + } +}); +var getEditableStyles = (token) => { + const { componentCls, paddingSM } = token; + const inputShift = paddingSM; + return { + "&-edit-content": { + position: "relative", + "div&": { + insetInlineStart: token.calc(token.paddingSM).mul(-1).equal(), + marginTop: token.calc(inputShift).mul(-1).equal(), + marginBottom: `calc(1em - ${(0, import_cssinjs.unit)(inputShift)})` + }, + [`${componentCls}-edit-content-confirm`]: { + position: "absolute", + insetInlineEnd: token.calc(token.marginXS).add(2).equal(), + insetBlockEnd: token.marginXS, + color: token.colorTextDescription, + // default style + fontWeight: "normal", + fontSize: token.fontSize, + fontStyle: "normal", + pointerEvents: "none" + }, + textarea: { + margin: "0!important", + // Fix Editable Textarea flash in Firefox + MozTransition: "none", + height: "1em" + } + } + }; +}; +var getCopyableStyles = (token) => ({ + [`${token.componentCls}-copy-success`]: { + [` + &, + &:hover, + &:focus`]: { + color: token.colorSuccess + } + }, + [`${token.componentCls}-copy-icon-only`]: { + marginInlineStart: 0 + } +}); +var getEllipsisStyles = () => ({ + [` + a&-ellipsis, + span&-ellipsis + `]: { + display: "inline-block", + maxWidth: "100%" + }, + "&-single-line": { + whiteSpace: "nowrap" + }, + "&-ellipsis-single-line": { + overflow: "hidden", + textOverflow: "ellipsis", + // https://blog.csdn.net/iefreer/article/details/50421025 + "a&, span&": { + verticalAlign: "bottom" + }, + "> code": { + paddingBlock: 0, + maxWidth: "calc(100% - 1.2em)", + display: "inline-block", + overflow: "hidden", + textOverflow: "ellipsis", + verticalAlign: "bottom", + // https://github.com/ant-design/ant-design/issues/45953 + boxSizing: "content-box" + } + }, + "&-ellipsis-multiple-line": { + display: "-webkit-box", + overflow: "hidden", + WebkitLineClamp: 3, + WebkitBoxOrient: "vertical" + } +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getCopyableStyles, + getEditableStyles, + getEllipsisStyles, + getLinkStyles, + getResetStyles, + getTitleStyles +}); diff --git a/packages/meta/lib/upload/Dragger.d.ts b/packages/meta/lib/upload/Dragger.d.ts new file mode 100644 index 0000000..9d099e1 --- /dev/null +++ b/packages/meta/lib/upload/Dragger.d.ts @@ -0,0 +1,10 @@ +import * as React from 'react'; +import type { UploadRef } from './Upload'; +import type { UploadProps } from './interface'; +export type DraggerProps = UploadProps & { + height?: number; +}; +declare const Dragger: React.ForwardRefExoticComponent & { + height?: number | undefined; +} & React.RefAttributes>>; +export default Dragger; diff --git a/packages/meta/lib/upload/Dragger.js b/packages/meta/lib/upload/Dragger.js new file mode 100644 index 0000000..62cd981 --- /dev/null +++ b/packages/meta/lib/upload/Dragger.js @@ -0,0 +1,52 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/Dragger.tsx +var Dragger_exports = {}; +__export(Dragger_exports, { + default: () => Dragger_default +}); +module.exports = __toCommonJS(Dragger_exports); +var React = __toESM(require("react")); +var import_Upload = __toESM(require("./Upload")); +var Dragger = React.forwardRef( + ({ style, height, hasControlInside = false, ...restProps }, ref) => /* @__PURE__ */ React.createElement( + import_Upload.default, + { + ref, + hasControlInside, + ...restProps, + type: "drag", + style: { ...style, height } + } + ) +); +if (process.env.NODE_ENV !== "production") { + Dragger.displayName = "Dragger"; +} +var Dragger_default = Dragger; diff --git a/packages/meta/lib/upload/Upload.d.ts b/packages/meta/lib/upload/Upload.d.ts new file mode 100644 index 0000000..1b6eefa --- /dev/null +++ b/packages/meta/lib/upload/Upload.d.ts @@ -0,0 +1,18 @@ +import * as React from 'react'; +import type { UploadProps as RcUploadProps } from 'rc-upload'; +import RcUpload from 'rc-upload'; +import type { RcFile, UploadFile, UploadProps } from './interface'; +export declare const LIST_IGNORE: string; +export type { UploadProps }; +export interface UploadRef { + onBatchStart: RcUploadProps['onBatchStart']; + onSuccess: (response: any, file: RcFile, xhr: any) => void; + onProgress: (e: { + percent: number; + }, file: RcFile) => void; + onError: (error: Error, response: any, file: RcFile) => void; + fileList: UploadFile[]; + upload: RcUpload | null; +} +declare const Upload: React.ForwardRefExoticComponent & React.RefAttributes>>; +export default Upload; diff --git a/packages/meta/lib/upload/Upload.js b/packages/meta/lib/upload/Upload.js new file mode 100644 index 0000000..2acf89e --- /dev/null +++ b/packages/meta/lib/upload/Upload.js @@ -0,0 +1,393 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/Upload.tsx +var Upload_exports = {}; +__export(Upload_exports, { + LIST_IGNORE: () => LIST_IGNORE, + default: () => Upload_default +}); +module.exports = __toCommonJS(Upload_exports); +var React = __toESM(require("react")); +var import_react_dom = require("react-dom"); +var import_classnames = __toESM(require("classnames")); +var import_rc_upload = __toESM(require("rc-upload")); +var import_useMergedState = __toESM(require("rc-util/lib/hooks/useMergedState")); +var import_warning = require("../_util/warning"); +var import_config_provider = require("../config-provider"); +var import_DisabledContext = __toESM(require("../config-provider/DisabledContext")); +var import_locale = require("../locale"); +var import_en_US = __toESM(require("../locale/en_US")); +var import_style = __toESM(require("./style")); +var import_UploadList = __toESM(require("./UploadList")); +var import_utils = require("./utils"); +var LIST_IGNORE = `__LIST_IGNORE_${Date.now()}__`; +var InternalUpload = (props, ref) => { + const { + fileList, + defaultFileList, + onRemove, + showUploadList = true, + listType = "text", + onPreview, + onDownload, + onChange, + onDrop, + previewFile, + disabled: customDisabled, + locale: propLocale, + iconRender, + isImageUrl, + progress, + prefixCls: customizePrefixCls, + className, + type = "select", + children, + style, + itemRender, + maxCount, + data = {}, + multiple = false, + hasControlInside = true, + action = "", + accept = "", + supportServerRender = true, + rootClassName + } = props; + const disabled = React.useContext(import_DisabledContext.default); + const mergedDisabled = customDisabled ?? disabled; + const [mergedFileList, setMergedFileList] = (0, import_useMergedState.default)(defaultFileList || [], { + value: fileList, + postState: (list) => list ?? [] + }); + const [dragState, setDragState] = React.useState("drop"); + const upload = React.useRef(null); + if (process.env.NODE_ENV !== "production") { + const warning = (0, import_warning.devUseWarning)("Upload"); + warning( + "fileList" in props || !("value" in props), + "usage", + "`value` is not a valid prop, do you mean `fileList`?" + ); + warning.deprecated(!("transformFile" in props), "transformFile", "beforeUpload"); + } + React.useMemo(() => { + const timestamp = Date.now(); + (fileList || []).forEach((file, index) => { + if (!file.uid && !Object.isFrozen(file)) { + file.uid = `__AUTO__${timestamp}_${index}__`; + } + }); + }, [fileList]); + const onInternalChange = (file, changedFileList, event) => { + let cloneList = [...changedFileList]; + let exceedMaxCount = false; + if (maxCount === 1) { + cloneList = cloneList.slice(-1); + } else if (maxCount) { + exceedMaxCount = cloneList.length > maxCount; + cloneList = cloneList.slice(0, maxCount); + } + (0, import_react_dom.flushSync)(() => { + setMergedFileList(cloneList); + }); + const changeInfo = { + file, + fileList: cloneList + }; + if (event) { + changeInfo.event = event; + } + if (!exceedMaxCount || // We should ignore event if current file is exceed `maxCount` + cloneList.some((f) => f.uid === file.uid)) { + (0, import_react_dom.flushSync)(() => { + onChange == null ? void 0 : onChange(changeInfo); + }); + } + }; + const mergedBeforeUpload = async (file, fileListArgs) => { + const { beforeUpload, transformFile } = props; + let parsedFile = file; + if (beforeUpload) { + const result = await beforeUpload(file, fileListArgs); + if (result === false) { + return false; + } + delete file[LIST_IGNORE]; + if (result === LIST_IGNORE) { + Object.defineProperty(file, LIST_IGNORE, { + value: true, + configurable: true + }); + return false; + } + if (typeof result === "object" && result) { + parsedFile = result; + } + } + if (transformFile) { + parsedFile = await transformFile(parsedFile); + } + return parsedFile; + }; + const onBatchStart = (batchFileInfoList) => { + const filteredFileInfoList = batchFileInfoList.filter( + (info) => !info.file[LIST_IGNORE] + ); + if (!filteredFileInfoList.length) { + return; + } + const objectFileList = filteredFileInfoList.map((info) => (0, import_utils.file2Obj)(info.file)); + let newFileList = [...mergedFileList]; + objectFileList.forEach((fileObj) => { + newFileList = (0, import_utils.updateFileList)(fileObj, newFileList); + }); + objectFileList.forEach((fileObj, index) => { + let triggerFileObj = fileObj; + if (!filteredFileInfoList[index].parsedFile) { + const { originFileObj } = fileObj; + let clone; + try { + clone = new File([originFileObj], originFileObj.name, { + type: originFileObj.type + }); + } catch (e) { + clone = new Blob([originFileObj], { + type: originFileObj.type + }); + clone.name = originFileObj.name; + clone.lastModifiedDate = /* @__PURE__ */ new Date(); + clone.lastModified = (/* @__PURE__ */ new Date()).getTime(); + } + clone.uid = fileObj.uid; + triggerFileObj = clone; + } else { + fileObj.status = "uploading"; + } + onInternalChange(triggerFileObj, newFileList); + }); + }; + const onSuccess = (response, file, xhr) => { + try { + if (typeof response === "string") { + response = JSON.parse(response); + } + } catch (e) { + } + if (!(0, import_utils.getFileItem)(file, mergedFileList)) { + return; + } + const targetItem = (0, import_utils.file2Obj)(file); + targetItem.status = "done"; + targetItem.percent = 100; + targetItem.response = response; + targetItem.xhr = xhr; + const nextFileList = (0, import_utils.updateFileList)(targetItem, mergedFileList); + onInternalChange(targetItem, nextFileList); + }; + const onProgress = (e, file) => { + if (!(0, import_utils.getFileItem)(file, mergedFileList)) { + return; + } + const targetItem = (0, import_utils.file2Obj)(file); + targetItem.status = "uploading"; + targetItem.percent = e.percent; + const nextFileList = (0, import_utils.updateFileList)(targetItem, mergedFileList); + onInternalChange(targetItem, nextFileList, e); + }; + const onError = (error, response, file) => { + if (!(0, import_utils.getFileItem)(file, mergedFileList)) { + return; + } + const targetItem = (0, import_utils.file2Obj)(file); + targetItem.error = error; + targetItem.response = response; + targetItem.status = "error"; + const nextFileList = (0, import_utils.updateFileList)(targetItem, mergedFileList); + onInternalChange(targetItem, nextFileList); + }; + const handleRemove = (file) => { + let currentFile; + Promise.resolve(typeof onRemove === "function" ? onRemove(file) : onRemove).then((ret) => { + var _a; + if (ret === false) { + return; + } + const removedFileList = (0, import_utils.removeFileItem)(file, mergedFileList); + if (removedFileList) { + currentFile = { ...file, status: "removed" }; + mergedFileList == null ? void 0 : mergedFileList.forEach((item) => { + const matchKey = currentFile.uid !== void 0 ? "uid" : "name"; + if (item[matchKey] === currentFile[matchKey] && !Object.isFrozen(item)) { + item.status = "removed"; + } + }); + (_a = upload.current) == null ? void 0 : _a.abort(currentFile); + onInternalChange(currentFile, removedFileList); + } + }); + }; + const onFileDrop = (e) => { + setDragState(e.type); + if (e.type === "drop") { + onDrop == null ? void 0 : onDrop(e); + } + }; + React.useImperativeHandle(ref, () => ({ + onBatchStart, + onSuccess, + onProgress, + onError, + fileList: mergedFileList, + upload: upload.current + })); + const { getPrefixCls, direction, upload: ctxUpload } = React.useContext(import_config_provider.ConfigContext); + const prefixCls = getPrefixCls("upload", customizePrefixCls); + const rcUploadProps = { + onBatchStart, + onError, + onProgress, + onSuccess, + ...props, + data, + multiple, + action, + accept, + supportServerRender, + prefixCls, + disabled: mergedDisabled, + beforeUpload: mergedBeforeUpload, + onChange: void 0, + hasControlInside + }; + delete rcUploadProps.className; + delete rcUploadProps.style; + if (!children || mergedDisabled) { + delete rcUploadProps.id; + } + const wrapperCls = `${prefixCls}-wrapper`; + const [wrapCSSVar, hashId, cssVarCls] = (0, import_style.default)(prefixCls, wrapperCls); + const [contextLocale] = (0, import_locale.useLocale)("Upload", import_en_US.default.Upload); + const { + showRemoveIcon, + showPreviewIcon, + showDownloadIcon, + removeIcon, + previewIcon, + downloadIcon + } = typeof showUploadList === "boolean" ? {} : showUploadList; + const realShowRemoveIcon = typeof showRemoveIcon === "undefined" ? !mergedDisabled : !!showRemoveIcon; + const renderUploadList = (button, buttonVisible) => { + if (!showUploadList) { + return button; + } + return /* @__PURE__ */ React.createElement( + import_UploadList.default, + { + prefixCls, + listType, + items: mergedFileList, + previewFile, + onPreview, + onDownload, + onRemove: handleRemove, + showRemoveIcon: realShowRemoveIcon, + showPreviewIcon, + showDownloadIcon, + removeIcon, + previewIcon, + downloadIcon, + iconRender, + locale: { ...contextLocale, ...propLocale }, + isImageUrl, + progress, + appendAction: button, + appendActionVisible: buttonVisible, + itemRender, + disabled: mergedDisabled + } + ); + }; + const mergedCls = (0, import_classnames.default)( + wrapperCls, + className, + rootClassName, + hashId, + cssVarCls, + ctxUpload == null ? void 0 : ctxUpload.className, + { + [`${prefixCls}-rtl`]: direction === "rtl", + [`${prefixCls}-picture-card-wrapper`]: listType === "picture-card", + [`${prefixCls}-picture-circle-wrapper`]: listType === "picture-circle" + } + ); + const mergedStyle = { ...ctxUpload == null ? void 0 : ctxUpload.style, ...style }; + if (type === "drag") { + const dragCls = (0, import_classnames.default)(hashId, prefixCls, `${prefixCls}-drag`, { + [`${prefixCls}-drag-uploading`]: mergedFileList.some((file) => file.status === "uploading"), + [`${prefixCls}-drag-hover`]: dragState === "dragover", + [`${prefixCls}-disabled`]: mergedDisabled, + [`${prefixCls}-rtl`]: direction === "rtl" + }); + return wrapCSSVar( + /* @__PURE__ */ React.createElement("span", { className: mergedCls }, /* @__PURE__ */ React.createElement( + "div", + { + className: dragCls, + style: mergedStyle, + onDrop: onFileDrop, + onDragOver: onFileDrop, + onDragLeave: onFileDrop + }, + /* @__PURE__ */ React.createElement(import_rc_upload.default, { ...rcUploadProps, ref: upload, className: `${prefixCls}-btn` }, /* @__PURE__ */ React.createElement("div", { className: `${prefixCls}-drag-container` }, children)) + ), renderUploadList()) + ); + } + const uploadButtonCls = (0, import_classnames.default)(prefixCls, `${prefixCls}-select`, { + [`${prefixCls}-disabled`]: mergedDisabled + }); + const renderUploadButton = (uploadButtonStyle) => /* @__PURE__ */ React.createElement("div", { className: uploadButtonCls, style: uploadButtonStyle }, /* @__PURE__ */ React.createElement(import_rc_upload.default, { ...rcUploadProps, ref: upload })); + const uploadButton = renderUploadButton(children ? void 0 : { display: "none" }); + if (listType === "picture-card" || listType === "picture-circle") { + return wrapCSSVar( + /* @__PURE__ */ React.createElement("span", { className: mergedCls }, renderUploadList(uploadButton, !!children)) + ); + } + return wrapCSSVar( + /* @__PURE__ */ React.createElement("span", { className: mergedCls }, uploadButton, renderUploadList()) + ); +}; +var Upload = React.forwardRef(InternalUpload); +if (process.env.NODE_ENV !== "production") { + Upload.displayName = "Upload"; +} +var Upload_default = Upload; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + LIST_IGNORE +}); diff --git a/packages/meta/lib/upload/UploadList/ListItem.d.ts b/packages/meta/lib/upload/UploadList/ListItem.d.ts new file mode 100644 index 0000000..1a7d6eb --- /dev/null +++ b/packages/meta/lib/upload/UploadList/ListItem.d.ts @@ -0,0 +1,27 @@ +import * as React from 'react'; +import type { ItemRender, UploadFile, UploadListProgressProps, UploadListType, UploadLocale } from '../interface'; +export interface ListItemProps { + prefixCls: string; + className?: string; + style?: React.CSSProperties; + locale: UploadLocale; + file: UploadFile; + items: UploadFile[]; + listType?: UploadListType; + isImgUrl?: (file: UploadFile) => boolean; + showRemoveIcon?: boolean; + showDownloadIcon?: boolean; + showPreviewIcon?: boolean; + removeIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); + downloadIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); + previewIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); + iconRender: (file: UploadFile) => React.ReactNode; + actionIconRender: (customIcon: React.ReactNode, callback: () => void, prefixCls: string, title?: string, acceptUploadDisabled?: boolean) => React.ReactNode; + itemRender?: ItemRender; + onPreview: (file: UploadFile, e: React.SyntheticEvent) => void; + onClose: (file: UploadFile) => void; + onDownload: (file: UploadFile) => void; + progress?: UploadListProgressProps; +} +declare const ListItem: React.ForwardRefExoticComponent>; +export default ListItem; diff --git a/packages/meta/lib/upload/UploadList/ListItem.js b/packages/meta/lib/upload/UploadList/ListItem.js new file mode 100644 index 0000000..5f4a644 --- /dev/null +++ b/packages/meta/lib/upload/UploadList/ListItem.js @@ -0,0 +1,233 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/UploadList/ListItem.tsx +var ListItem_exports = {}; +__export(ListItem_exports, { + default: () => ListItem_default +}); +module.exports = __toCommonJS(ListItem_exports); +var import_DeleteOutlined = __toESM(require("@ant-design/icons/DeleteOutlined")); +var import_DownloadOutlined = __toESM(require("@ant-design/icons/DownloadOutlined")); +var import_EyeOutlined = __toESM(require("@ant-design/icons/EyeOutlined")); +var import_classnames = __toESM(require("classnames")); +var import_rc_motion = __toESM(require("rc-motion")); +var React = __toESM(require("react")); +var import_config_provider = require("../../config-provider"); +var import_progress = __toESM(require("../../progress")); +var import_tooltip = __toESM(require("../../tooltip")); +var ListItem = React.forwardRef( + ({ + prefixCls, + className, + style, + locale, + listType, + file, + items, + progress: progressProps, + iconRender, + actionIconRender, + itemRender, + isImgUrl, + showPreviewIcon, + showRemoveIcon, + showDownloadIcon, + previewIcon: customPreviewIcon, + removeIcon: customRemoveIcon, + downloadIcon: customDownloadIcon, + onPreview, + onDownload, + onClose + }, ref) => { + var _a, _b; + const { status } = file; + const [mergedStatus, setMergedStatus] = React.useState(status); + React.useEffect(() => { + if (status !== "removed") { + setMergedStatus(status); + } + }, [status]); + const [showProgress, setShowProgress] = React.useState(false); + React.useEffect(() => { + const timer = setTimeout(() => { + setShowProgress(true); + }, 300); + return () => { + clearTimeout(timer); + }; + }, []); + const iconNode = iconRender(file); + let icon = /* @__PURE__ */ React.createElement("div", { className: `${prefixCls}-icon` }, iconNode); + if (listType === "picture" || listType === "picture-card" || listType === "picture-circle") { + if (mergedStatus === "uploading" || !file.thumbUrl && !file.url) { + const uploadingClassName = (0, import_classnames.default)(`${prefixCls}-list-item-thumbnail`, { + [`${prefixCls}-list-item-file`]: mergedStatus !== "uploading" + }); + icon = /* @__PURE__ */ React.createElement("div", { className: uploadingClassName }, iconNode); + } else { + const thumbnail = (isImgUrl == null ? void 0 : isImgUrl(file)) ? /* @__PURE__ */ React.createElement( + "img", + { + src: file.thumbUrl || file.url, + alt: file.name, + className: `${prefixCls}-list-item-image`, + crossOrigin: file.crossOrigin + } + ) : iconNode; + const aClassName = (0, import_classnames.default)(`${prefixCls}-list-item-thumbnail`, { + [`${prefixCls}-list-item-file`]: isImgUrl && !isImgUrl(file) + }); + icon = /* @__PURE__ */ React.createElement( + "a", + { + className: aClassName, + onClick: (e) => onPreview(file, e), + href: file.url || file.thumbUrl, + target: "_blank", + rel: "noopener noreferrer" + }, + thumbnail + ); + } + } + const listItemClassName = (0, import_classnames.default)( + `${prefixCls}-list-item`, + `${prefixCls}-list-item-${mergedStatus}` + ); + const linkProps = typeof file.linkProps === "string" ? JSON.parse(file.linkProps) : file.linkProps; + const removeIcon = showRemoveIcon ? actionIconRender( + (typeof customRemoveIcon === "function" ? customRemoveIcon(file) : customRemoveIcon) || /* @__PURE__ */ React.createElement(import_DeleteOutlined.default, null), + () => onClose(file), + prefixCls, + locale.removeFile, + // acceptUploadDisabled is true, only remove icon will follow Upload disabled prop + // https://github.com/ant-design/ant-design/issues/46171 + true + ) : null; + const downloadIcon = showDownloadIcon && mergedStatus === "done" ? actionIconRender( + (typeof customDownloadIcon === "function" ? customDownloadIcon(file) : customDownloadIcon) || /* @__PURE__ */ React.createElement(import_DownloadOutlined.default, null), + () => onDownload(file), + prefixCls, + locale.downloadFile + ) : null; + const downloadOrDelete = listType !== "picture-card" && listType !== "picture-circle" && /* @__PURE__ */ React.createElement( + "span", + { + key: "download-delete", + className: (0, import_classnames.default)(`${prefixCls}-list-item-actions`, { + picture: listType === "picture" + }) + }, + downloadIcon, + removeIcon + ); + const listItemNameClass = (0, import_classnames.default)(`${prefixCls}-list-item-name`); + const fileName = file.url ? [ + /* @__PURE__ */ React.createElement( + "a", + { + key: "view", + target: "_blank", + rel: "noopener noreferrer", + className: listItemNameClass, + title: file.name, + ...linkProps, + href: file.url, + onClick: (e) => onPreview(file, e) + }, + file.name + ), + downloadOrDelete + ] : [ + /* @__PURE__ */ React.createElement( + "span", + { + key: "view", + className: listItemNameClass, + onClick: (e) => onPreview(file, e), + title: file.name + }, + file.name + ), + downloadOrDelete + ]; + const previewIcon = showPreviewIcon && (file.url || file.thumbUrl) ? /* @__PURE__ */ React.createElement( + "a", + { + href: file.url || file.thumbUrl, + target: "_blank", + rel: "noopener noreferrer", + onClick: (e) => onPreview(file, e), + title: locale.previewFile + }, + typeof customPreviewIcon === "function" ? customPreviewIcon(file) : customPreviewIcon || /* @__PURE__ */ React.createElement(import_EyeOutlined.default, null) + ) : null; + const pictureCardActions = (listType === "picture-card" || listType === "picture-circle") && mergedStatus !== "uploading" && /* @__PURE__ */ React.createElement("span", { className: `${prefixCls}-list-item-actions` }, previewIcon, mergedStatus === "done" && downloadIcon, removeIcon); + const { getPrefixCls } = React.useContext(import_config_provider.ConfigContext); + const rootPrefixCls = getPrefixCls(); + const dom = /* @__PURE__ */ React.createElement("div", { className: listItemClassName }, icon, fileName, pictureCardActions, showProgress && /* @__PURE__ */ React.createElement( + import_rc_motion.default, + { + motionName: `${rootPrefixCls}-fade`, + visible: mergedStatus === "uploading", + motionDeadline: 2e3 + }, + ({ className: motionClassName }) => { + const loadingProgress = "percent" in file ? /* @__PURE__ */ React.createElement( + import_progress.default, + { + ...progressProps, + type: "line", + percent: file.percent, + "aria-label": file["aria-label"], + "aria-labelledby": file["aria-labelledby"] + } + ) : null; + return /* @__PURE__ */ React.createElement("div", { className: (0, import_classnames.default)(`${prefixCls}-list-item-progress`, motionClassName) }, loadingProgress); + } + )); + const message = file.response && typeof file.response === "string" ? file.response : ((_a = file.error) == null ? void 0 : _a.statusText) || ((_b = file.error) == null ? void 0 : _b.message) || locale.uploadError; + const item = mergedStatus === "error" ? /* @__PURE__ */ React.createElement(import_tooltip.default, { title: message, getPopupContainer: (node) => node.parentNode }, dom) : dom; + return /* @__PURE__ */ React.createElement( + "div", + { + className: (0, import_classnames.default)(`${prefixCls}-list-item-container`, className), + style, + ref + }, + itemRender ? itemRender(item, file, items, { + download: onDownload.bind(null, file), + // @ts-ignore + preview: onPreview.bind(null, file), + remove: onClose.bind(null, file) + }) : item + ); + } +); +var ListItem_default = ListItem; diff --git a/packages/meta/lib/upload/UploadList/index.d.ts b/packages/meta/lib/upload/UploadList/index.d.ts new file mode 100644 index 0000000..3d9a101 --- /dev/null +++ b/packages/meta/lib/upload/UploadList/index.d.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; +import type { UploadFile, UploadListProps } from '../interface'; +interface UploadListRef { + handlePreview: (file: UploadFile, e?: React.SyntheticEvent) => void; + handleDownload: (file: UploadFile) => void; +} +declare const UploadList: React.ForwardRefExoticComponent & React.RefAttributes>; +export default UploadList; diff --git a/packages/meta/lib/upload/UploadList/index.js b/packages/meta/lib/upload/UploadList/index.js new file mode 100644 index 0000000..b392e69 --- /dev/null +++ b/packages/meta/lib/upload/UploadList/index.js @@ -0,0 +1,223 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/UploadList/index.tsx +var UploadList_exports = {}; +__export(UploadList_exports, { + default: () => UploadList_default +}); +module.exports = __toCommonJS(UploadList_exports); +var React = __toESM(require("react")); +var import_FileTwoTone = __toESM(require("@ant-design/icons/FileTwoTone")); +var import_LoadingOutlined = __toESM(require("@ant-design/icons/LoadingOutlined")); +var import_PaperClipOutlined = __toESM(require("@ant-design/icons/PaperClipOutlined")); +var import_PictureTwoTone = __toESM(require("@ant-design/icons/PictureTwoTone")); +var import_classnames = __toESM(require("classnames")); +var import_rc_motion = __toESM(require("rc-motion")); +var import_useForceUpdate = __toESM(require("../../_util/hooks/useForceUpdate")); +var import_motion = __toESM(require("../../_util/motion")); +var import_reactNode = require("../../_util/reactNode"); +var import_button = __toESM(require("../../button")); +var import_config_provider = require("../../config-provider"); +var import_utils = require("../utils"); +var import_ListItem = __toESM(require("./ListItem")); +var InternalUploadList = (props, ref) => { + const { + listType = "text", + previewFile = import_utils.previewImage, + onPreview, + onDownload, + onRemove, + locale, + iconRender, + isImageUrl: isImgUrl = import_utils.isImageUrl, + prefixCls: customizePrefixCls, + items = [], + showPreviewIcon = true, + showRemoveIcon = true, + showDownloadIcon = false, + removeIcon, + previewIcon, + downloadIcon, + progress = { size: [-1, 2], showInfo: false }, + appendAction, + appendActionVisible = true, + itemRender, + disabled + } = props; + const forceUpdate = (0, import_useForceUpdate.default)(); + const [motionAppear, setMotionAppear] = React.useState(false); + React.useEffect(() => { + if (listType !== "picture" && listType !== "picture-card" && listType !== "picture-circle") { + return; + } + (items || []).forEach((file) => { + if (typeof document === "undefined" || typeof window === "undefined" || !window.FileReader || !window.File || !(file.originFileObj instanceof File || file.originFileObj instanceof Blob) || file.thumbUrl !== void 0) { + return; + } + file.thumbUrl = ""; + if (previewFile) { + previewFile(file.originFileObj).then((previewDataUrl) => { + file.thumbUrl = previewDataUrl || ""; + forceUpdate(); + }); + } + }); + }, [listType, items, previewFile]); + React.useEffect(() => { + setMotionAppear(true); + }, []); + const onInternalPreview = (file, e) => { + if (!onPreview) { + return; + } + e == null ? void 0 : e.preventDefault(); + return onPreview(file); + }; + const onInternalDownload = (file) => { + if (typeof onDownload === "function") { + onDownload(file); + } else if (file.url) { + window.open(file.url); + } + }; + const onInternalClose = (file) => { + onRemove == null ? void 0 : onRemove(file); + }; + const internalIconRender = (file) => { + if (iconRender) { + return iconRender(file, listType); + } + const isLoading = file.status === "uploading"; + const fileIcon = isImgUrl && isImgUrl(file) ? /* @__PURE__ */ React.createElement(import_PictureTwoTone.default, null) : /* @__PURE__ */ React.createElement(import_FileTwoTone.default, null); + let icon = isLoading ? /* @__PURE__ */ React.createElement(import_LoadingOutlined.default, null) : /* @__PURE__ */ React.createElement(import_PaperClipOutlined.default, null); + if (listType === "picture") { + icon = isLoading ? /* @__PURE__ */ React.createElement(import_LoadingOutlined.default, null) : fileIcon; + } else if (listType === "picture-card" || listType === "picture-circle") { + icon = isLoading ? locale.uploading : fileIcon; + } + return icon; + }; + const actionIconRender = (customIcon, callback, prefixCls2, title, acceptUploadDisabled) => { + const btnProps = { + type: "text", + size: "small", + title, + onClick: (e) => { + callback(); + if ((0, import_reactNode.isValidElement)(customIcon) && customIcon.props.onClick) { + customIcon.props.onClick(e); + } + }, + className: `${prefixCls2}-list-item-action` + }; + if (acceptUploadDisabled) { + btnProps.disabled = disabled; + } + if ((0, import_reactNode.isValidElement)(customIcon)) { + const btnIcon = (0, import_reactNode.cloneElement)(customIcon, { + ...customIcon.props, + onClick: () => { + } + }); + return /* @__PURE__ */ React.createElement(import_button.default, { ...btnProps, icon: btnIcon }); + } + return /* @__PURE__ */ React.createElement(import_button.default, { ...btnProps }, /* @__PURE__ */ React.createElement("span", null, customIcon)); + }; + React.useImperativeHandle(ref, () => ({ + handlePreview: onInternalPreview, + handleDownload: onInternalDownload + })); + const { getPrefixCls } = React.useContext(import_config_provider.ConfigContext); + const prefixCls = getPrefixCls("upload", customizePrefixCls); + const rootPrefixCls = getPrefixCls(); + const listClassNames = (0, import_classnames.default)(`${prefixCls}-list`, `${prefixCls}-list-${listType}`); + const motionKeyList = [...items.map((file) => ({ key: file.uid, file }))]; + const animationDirection = listType === "picture-card" || listType === "picture-circle" ? "animate-inline" : "animate"; + let motionConfig = { + motionDeadline: 2e3, + motionName: `${prefixCls}-${animationDirection}`, + keys: motionKeyList, + motionAppear + }; + const listItemMotion = React.useMemo(() => { + const motion = { + ...(0, import_motion.default)(rootPrefixCls) + }; + delete motion.onAppearEnd; + delete motion.onEnterEnd; + delete motion.onLeaveEnd; + return motion; + }, [rootPrefixCls]); + if (listType !== "picture-card" && listType !== "picture-circle") { + motionConfig = { + ...listItemMotion, + ...motionConfig + }; + } + return /* @__PURE__ */ React.createElement("div", { className: listClassNames }, /* @__PURE__ */ React.createElement(import_rc_motion.CSSMotionList, { ...motionConfig, component: false }, ({ key, file, className: motionClassName, style: motionStyle }) => /* @__PURE__ */ React.createElement( + import_ListItem.default, + { + key, + locale, + prefixCls, + className: motionClassName, + style: motionStyle, + file, + items, + progress, + listType, + isImgUrl, + showPreviewIcon, + showRemoveIcon, + showDownloadIcon, + removeIcon, + previewIcon, + downloadIcon, + iconRender: internalIconRender, + actionIconRender, + itemRender, + onPreview: onInternalPreview, + onDownload: onInternalDownload, + onClose: onInternalClose + } + )), appendAction && /* @__PURE__ */ React.createElement(import_rc_motion.default, { ...motionConfig, visible: appendActionVisible, forceRender: true }, ({ className: motionClassName, style: motionStyle }) => (0, import_reactNode.cloneElement)(appendAction, (oriProps) => ({ + className: (0, import_classnames.default)(oriProps.className, motionClassName), + style: { + ...motionStyle, + // prevent the element has hover css pseudo-class that may cause animation to end prematurely. + pointerEvents: motionClassName ? "none" : void 0, + ...oriProps.style + } + })))); +}; +var UploadList = React.forwardRef(InternalUploadList); +if (process.env.NODE_ENV !== "production") { + UploadList.displayName = "UploadList"; +} +var UploadList_default = UploadList; diff --git a/packages/meta/lib/upload/demo/utils/request.d.ts b/packages/meta/lib/upload/demo/utils/request.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/meta/lib/upload/demo/utils/request.js b/packages/meta/lib/upload/demo/utils/request.js new file mode 100644 index 0000000..e69de29 diff --git a/packages/meta/lib/upload/index.d.ts b/packages/meta/lib/upload/index.d.ts new file mode 100644 index 0000000..ef91453 --- /dev/null +++ b/packages/meta/lib/upload/index.d.ts @@ -0,0 +1,14 @@ +/// +import Dragger from './Dragger'; +import type { UploadProps } from './Upload'; +import InternalUpload from './Upload'; +export type { DraggerProps } from './Dragger'; +export type { RcFile, UploadChangeParam, UploadFile, UploadListProps, UploadProps, } from './interface'; +type InternalUploadType = typeof InternalUpload; +type CompoundedComponent = InternalUploadType & { + (props: React.PropsWithChildren> & React.RefAttributes): React.ReactElement; + Dragger: typeof Dragger; + LIST_IGNORE: string; +}; +declare const Upload: CompoundedComponent; +export default Upload; diff --git a/packages/meta/lib/upload/index.js b/packages/meta/lib/upload/index.js new file mode 100644 index 0000000..0149330 --- /dev/null +++ b/packages/meta/lib/upload/index.js @@ -0,0 +1,40 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/index.ts +var upload_exports = {}; +__export(upload_exports, { + default: () => upload_default +}); +module.exports = __toCommonJS(upload_exports); +var import_Dragger = __toESM(require("./Dragger")); +var import_Upload = __toESM(require("./Upload")); +var Upload = import_Upload.default; +Upload.Dragger = import_Dragger.default; +Upload.LIST_IGNORE = import_Upload.LIST_IGNORE; +var upload_default = Upload; diff --git a/packages/meta/lib/upload/interface.d.ts b/packages/meta/lib/upload/interface.d.ts new file mode 100644 index 0000000..b6032f3 --- /dev/null +++ b/packages/meta/lib/upload/interface.d.ts @@ -0,0 +1,136 @@ +import type * as React from 'react'; +import type { RcFile as OriRcFile, UploadRequestOption as RcCustomRequestOptions, UploadProps as RcUploadProps } from 'rc-upload/lib/interface'; +import type { ProgressAriaProps, ProgressProps } from '../progress'; +export interface RcFile extends OriRcFile { + readonly lastModifiedDate: Date; +} +export type UploadFileStatus = 'error' | 'done' | 'uploading' | 'removed'; +export interface HttpRequestHeader { + [key: string]: string; +} +export interface UploadFile extends ProgressAriaProps { + uid: string; + size?: number; + name: string; + fileName?: string; + lastModified?: number; + lastModifiedDate?: Date; + url?: string; + status?: UploadFileStatus; + percent?: number; + thumbUrl?: string; + crossOrigin?: React.ImgHTMLAttributes['crossOrigin']; + originFileObj?: RcFile; + response?: T; + error?: any; + linkProps?: any; + type?: string; + xhr?: T; + preview?: string; +} +export interface InternalUploadFile extends UploadFile { + originFileObj: RcFile; +} +export interface UploadChangeParam { + file: T; + fileList: T[]; + event?: { + percent: number; + }; +} +export interface ShowUploadListInterface { + showRemoveIcon?: boolean; + showPreviewIcon?: boolean; + showDownloadIcon?: boolean; + removeIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); + downloadIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); + previewIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); +} +export interface UploadLocale { + uploading?: string; + removeFile?: string; + downloadFile?: string; + uploadError?: string; + previewFile?: string; +} +export type UploadType = 'drag' | 'select'; +export type UploadListType = 'text' | 'picture' | 'picture-card' | 'picture-circle'; +export type UploadListProgressProps = Omit; +export type ItemRender = (originNode: React.ReactElement, file: UploadFile, fileList: Array>, actions: { + download: () => void; + preview: () => void; + remove: () => void; +}) => React.ReactNode; +type PreviewFileHandler = (file: File | Blob) => PromiseLike; +type TransformFileHandler = (file: RcFile) => string | Blob | File | PromiseLike; +type BeforeUploadValueType = void | boolean | string | Blob | File; +export interface UploadProps extends Pick { + type?: UploadType; + name?: string; + defaultFileList?: Array>; + fileList?: Array>; + action?: string | ((file: RcFile) => string) | ((file: RcFile) => PromiseLike); + directory?: boolean; + data?: Record | ((file: UploadFile) => Record | Promise>); + method?: 'POST' | 'PUT' | 'PATCH' | 'post' | 'put' | 'patch'; + headers?: HttpRequestHeader; + showUploadList?: boolean | ShowUploadListInterface; + multiple?: boolean; + accept?: string; + beforeUpload?: (file: RcFile, FileList: RcFile[]) => BeforeUploadValueType | Promise; + onChange?: (info: UploadChangeParam>) => void; + onDrop?: (event: React.DragEvent) => void; + listType?: UploadListType; + className?: string; + rootClassName?: string; + onPreview?: (file: UploadFile) => void; + onDownload?: (file: UploadFile) => void; + onRemove?: (file: UploadFile) => void | boolean | Promise; + supportServerRender?: boolean; + style?: React.CSSProperties; + disabled?: boolean; + prefixCls?: string; + customRequest?: (options: RcCustomRequestOptions) => void; + withCredentials?: boolean; + openFileDialogOnClick?: boolean; + locale?: UploadLocale; + id?: string; + previewFile?: PreviewFileHandler; + /** @deprecated Please use `beforeUpload` directly */ + transformFile?: TransformFileHandler; + iconRender?: (file: UploadFile, listType?: UploadListType) => React.ReactNode; + isImageUrl?: (file: UploadFile) => boolean; + progress?: UploadListProgressProps; + itemRender?: ItemRender; + /** Config max count of `fileList`. Will replace current one when `maxCount` is 1 */ + maxCount?: number; + children?: React.ReactNode; +} +export interface UploadState { + fileList: UploadFile[]; + dragState: string; +} +export interface UploadListProps { + listType?: UploadListType; + onPreview?: (file: UploadFile) => void; + onDownload?: (file: UploadFile) => void; + onRemove?: (file: UploadFile) => void | boolean; + items?: Array>; + progress?: UploadListProgressProps; + prefixCls?: string; + className?: string; + showRemoveIcon?: boolean; + showDownloadIcon?: boolean; + showPreviewIcon?: boolean; + removeIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); + downloadIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); + previewIcon?: React.ReactNode | ((file: UploadFile) => React.ReactNode); + locale: UploadLocale; + previewFile?: PreviewFileHandler; + iconRender?: (file: UploadFile, listType?: UploadListType) => React.ReactNode; + isImageUrl?: (file: UploadFile) => boolean; + appendAction?: React.ReactNode; + appendActionVisible?: boolean; + itemRender?: ItemRender; +} +export {}; diff --git a/packages/meta/lib/upload/interface.js b/packages/meta/lib/upload/interface.js new file mode 100644 index 0000000..6b4e8ab --- /dev/null +++ b/packages/meta/lib/upload/interface.js @@ -0,0 +1,17 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/interface.ts +var interface_exports = {}; +module.exports = __toCommonJS(interface_exports); diff --git a/packages/meta/lib/upload/style/dragger.d.ts b/packages/meta/lib/upload/style/dragger.d.ts new file mode 100644 index 0000000..f955226 --- /dev/null +++ b/packages/meta/lib/upload/style/dragger.d.ts @@ -0,0 +1,4 @@ +import type { UploadToken } from '.'; +import type { GenerateStyle } from '../../theme/internal'; +declare const genDraggerStyle: GenerateStyle; +export default genDraggerStyle; diff --git a/packages/meta/lib/upload/style/dragger.js b/packages/meta/lib/upload/style/dragger.js new file mode 100644 index 0000000..2a38d21 --- /dev/null +++ b/packages/meta/lib/upload/style/dragger.js @@ -0,0 +1,92 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/style/dragger.ts +var dragger_exports = {}; +__export(dragger_exports, { + default: () => dragger_default +}); +module.exports = __toCommonJS(dragger_exports); +var import_cssinjs = require("@ant-design/cssinjs"); +var genDraggerStyle = (token) => { + const { componentCls, iconCls } = token; + return { + [`${componentCls}-wrapper`]: { + [`${componentCls}-drag`]: { + position: "relative", + width: "100%", + height: "100%", + textAlign: "center", + background: token.colorFillAlter, + border: `${(0, import_cssinjs.unit)(token.lineWidth)} dashed ${token.colorBorder}`, + borderRadius: token.borderRadiusLG, + cursor: "pointer", + transition: `border-color ${token.motionDurationSlow}`, + [componentCls]: { + padding: token.padding + }, + [`${componentCls}-btn`]: { + display: "table", + width: "100%", + height: "100%", + outline: "none", + borderRadius: token.borderRadiusLG, + "&:focus-visible": { + outline: `${(0, import_cssinjs.unit)(token.lineWidthFocus)} solid ${token.colorPrimaryBorder}` + } + }, + [`${componentCls}-drag-container`]: { + display: "table-cell", + verticalAlign: "middle" + }, + [` + &:not(${componentCls}-disabled):hover, + &-hover:not(${componentCls}-disabled) + `]: { + borderColor: token.colorPrimaryHover + }, + [`p${componentCls}-drag-icon`]: { + marginBottom: token.margin, + [iconCls]: { + color: token.colorPrimary, + fontSize: token.uploadThumbnailSize + } + }, + [`p${componentCls}-text`]: { + margin: `0 0 ${(0, import_cssinjs.unit)(token.marginXXS)}`, + color: token.colorTextHeading, + fontSize: token.fontSizeLG + }, + [`p${componentCls}-hint`]: { + color: token.colorTextDescription, + fontSize: token.fontSize + }, + // ===================== Disabled ===================== + [`&${componentCls}-disabled`]: { + [`p${componentCls}-drag-icon ${iconCls}, + p${componentCls}-text, + p${componentCls}-hint + `]: { + color: token.colorTextDisabled + } + } + } + } + }; +}; +var dragger_default = genDraggerStyle; diff --git a/packages/meta/lib/upload/style/index.d.ts b/packages/meta/lib/upload/style/index.d.ts new file mode 100644 index 0000000..54a1088 --- /dev/null +++ b/packages/meta/lib/upload/style/index.d.ts @@ -0,0 +1,17 @@ +/// +import type { FullToken, GetDefaultToken } from '../../theme/internal'; +export interface ComponentToken { + /** + * @desc 操作按扭颜色 + * @descEN Action button color + */ + actionsColor: string; +} +export interface UploadToken extends FullToken<'Upload'> { + uploadThumbnailSize: number | string; + uploadProgressOffset: number | string; + uploadPicCardSize: number | string; +} +export declare const prepareComponentToken: GetDefaultToken<'Upload'>; +declare const _default: (prefixCls: string, rootCls?: string) => readonly [(node: import("react").ReactElement>) => import("react").ReactElement>, string, string | undefined]; +export default _default; diff --git a/packages/meta/lib/upload/style/index.js b/packages/meta/lib/upload/style/index.js new file mode 100644 index 0000000..4ad5e7f --- /dev/null +++ b/packages/meta/lib/upload/style/index.js @@ -0,0 +1,93 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/style/index.ts +var style_exports = {}; +__export(style_exports, { + default: () => style_default, + prepareComponentToken: () => prepareComponentToken +}); +module.exports = __toCommonJS(style_exports); +var import_style = require("../../style"); +var import_motion = require("../../style/motion"); +var import_internal = require("../../theme/internal"); +var import_dragger = __toESM(require("./dragger")); +var import_list = __toESM(require("./list")); +var import_motion2 = __toESM(require("./motion")); +var import_picture = require("./picture"); +var import_rtl = __toESM(require("./rtl")); +var genBaseStyle = (token) => { + const { componentCls, colorTextDisabled } = token; + return { + [`${componentCls}-wrapper`]: { + ...(0, import_style.resetComponent)(token), + [componentCls]: { + outline: 0, + "input[type='file']": { + cursor: "pointer" + } + }, + [`${componentCls}-select`]: { + display: "inline-block" + }, + [`${componentCls}-disabled`]: { + color: colorTextDisabled, + cursor: "not-allowed" + } + } + }; +}; +var prepareComponentToken = (token) => ({ + actionsColor: token.colorTextDescription +}); +var style_default = (0, import_internal.genStyleHooks)( + "Upload", + (token) => { + const { fontSizeHeading3, fontHeight, lineWidth, controlHeightLG, calc } = token; + const uploadToken = (0, import_internal.mergeToken)(token, { + uploadThumbnailSize: calc(fontSizeHeading3).mul(2).equal(), + uploadProgressOffset: calc(calc(fontHeight).div(2)).add(lineWidth).equal(), + uploadPicCardSize: calc(controlHeightLG).mul(2.55).equal() + }); + return [ + genBaseStyle(uploadToken), + (0, import_dragger.default)(uploadToken), + (0, import_picture.genPictureStyle)(uploadToken), + (0, import_picture.genPictureCardStyle)(uploadToken), + (0, import_list.default)(uploadToken), + (0, import_motion2.default)(uploadToken), + (0, import_rtl.default)(uploadToken), + (0, import_motion.genCollapseMotion)(uploadToken) + ]; + }, + prepareComponentToken +); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + prepareComponentToken +}); diff --git a/packages/meta/lib/upload/style/list.d.ts b/packages/meta/lib/upload/style/list.d.ts new file mode 100644 index 0000000..002c486 --- /dev/null +++ b/packages/meta/lib/upload/style/list.d.ts @@ -0,0 +1,4 @@ +import type { UploadToken } from '.'; +import type { GenerateStyle } from '../../theme/internal'; +declare const genListStyle: GenerateStyle; +export default genListStyle; diff --git a/packages/meta/lib/upload/style/list.js b/packages/meta/lib/upload/style/list.js new file mode 100644 index 0000000..5255d6a --- /dev/null +++ b/packages/meta/lib/upload/style/list.js @@ -0,0 +1,124 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/style/list.ts +var list_exports = {}; +__export(list_exports, { + default: () => list_default +}); +module.exports = __toCommonJS(list_exports); +var import_cssinjs = require("@ant-design/cssinjs"); +var import_style = require("../../style"); +var genListStyle = (token) => { + const { componentCls, antCls, iconCls, fontSize, lineHeight, calc } = token; + const itemCls = `${componentCls}-list-item`; + const actionsCls = `${itemCls}-actions`; + const actionCls = `${itemCls}-action`; + const listItemHeightSM = token.fontHeightSM; + return { + [`${componentCls}-wrapper`]: { + [`${componentCls}-list`]: { + ...(0, import_style.clearFix)(), + lineHeight: token.lineHeight, + [itemCls]: { + position: "relative", + height: calc(token.lineHeight).mul(fontSize).equal(), + marginTop: token.marginXS, + fontSize, + display: "flex", + alignItems: "center", + transition: `background-color ${token.motionDurationSlow}`, + "&:hover": { + backgroundColor: token.controlItemBgHover + }, + [`${itemCls}-name`]: { + ...import_style.textEllipsis, + padding: `0 ${(0, import_cssinjs.unit)(token.paddingXS)}`, + lineHeight, + flex: "auto", + transition: `all ${token.motionDurationSlow}` + }, + [actionsCls]: { + [actionCls]: { + opacity: 0 + }, + [iconCls]: { + color: token.actionsColor, + transition: `all ${token.motionDurationSlow}` + }, + [` + ${actionCls}:focus-visible, + &.picture ${actionCls} + `]: { + opacity: 1 + }, + [`${actionCls}${antCls}-btn`]: { + height: listItemHeightSM, + border: 0, + lineHeight: 1 + } + }, + [`${componentCls}-icon ${iconCls}`]: { + color: token.colorTextDescription, + fontSize + }, + [`${itemCls}-progress`]: { + position: "absolute", + bottom: token.calc(token.uploadProgressOffset).mul(-1).equal(), + width: "100%", + paddingInlineStart: calc(fontSize).add(token.paddingXS).equal(), + fontSize, + lineHeight: 0, + pointerEvents: "none", + "> div": { + margin: 0 + } + } + }, + [`${itemCls}:hover ${actionCls}`]: { + opacity: 1 + }, + [`${itemCls}-error`]: { + color: token.colorError, + [`${itemCls}-name, ${componentCls}-icon ${iconCls}`]: { + color: token.colorError + }, + [actionsCls]: { + [`${iconCls}, ${iconCls}:hover`]: { + color: token.colorError + }, + [actionCls]: { + opacity: 1 + } + } + }, + [`${componentCls}-list-item-container`]: { + transition: `opacity ${token.motionDurationSlow}, height ${token.motionDurationSlow}`, + // For smooth removing animation + "&::before": { + display: "table", + width: 0, + height: 0, + content: '""' + } + } + } + } + }; +}; +var list_default = genListStyle; diff --git a/packages/meta/lib/upload/style/motion.d.ts b/packages/meta/lib/upload/style/motion.d.ts new file mode 100644 index 0000000..47dcd20 --- /dev/null +++ b/packages/meta/lib/upload/style/motion.d.ts @@ -0,0 +1,4 @@ +import type { UploadToken } from '.'; +import type { GenerateStyle } from '../../theme/internal'; +declare const genMotionStyle: GenerateStyle; +export default genMotionStyle; diff --git a/packages/meta/lib/upload/style/motion.js b/packages/meta/lib/upload/style/motion.js new file mode 100644 index 0000000..9d2c282 --- /dev/null +++ b/packages/meta/lib/upload/style/motion.js @@ -0,0 +1,71 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/style/motion.ts +var motion_exports = {}; +__export(motion_exports, { + default: () => motion_default +}); +module.exports = __toCommonJS(motion_exports); +var import_cssinjs = require("@ant-design/cssinjs"); +var import_motion = require("../../style/motion"); +var uploadAnimateInlineIn = new import_cssinjs.Keyframes("uploadAnimateInlineIn", { + from: { + width: 0, + height: 0, + margin: 0, + padding: 0, + opacity: 0 + } +}); +var uploadAnimateInlineOut = new import_cssinjs.Keyframes("uploadAnimateInlineOut", { + to: { + width: 0, + height: 0, + margin: 0, + padding: 0, + opacity: 0 + } +}); +var genMotionStyle = (token) => { + const { componentCls } = token; + const inlineCls = `${componentCls}-animate-inline`; + return [ + { + [`${componentCls}-wrapper`]: { + [`${inlineCls}-appear, ${inlineCls}-enter, ${inlineCls}-leave`]: { + animationDuration: token.motionDurationSlow, + animationTimingFunction: token.motionEaseInOutCirc, + animationFillMode: "forwards" + }, + [`${inlineCls}-appear, ${inlineCls}-enter`]: { + animationName: uploadAnimateInlineIn + }, + [`${inlineCls}-leave`]: { + animationName: uploadAnimateInlineOut + } + } + }, + { + [`${componentCls}-wrapper`]: (0, import_motion.initFadeMotion)(token) + }, + uploadAnimateInlineIn, + uploadAnimateInlineOut + ]; +}; +var motion_default = genMotionStyle; diff --git a/packages/meta/lib/upload/style/picture.d.ts b/packages/meta/lib/upload/style/picture.d.ts new file mode 100644 index 0000000..f5d75d1 --- /dev/null +++ b/packages/meta/lib/upload/style/picture.d.ts @@ -0,0 +1,5 @@ +import type { UploadToken } from '.'; +import type { GenerateStyle } from '../../theme/internal'; +declare const genPictureStyle: GenerateStyle; +declare const genPictureCardStyle: GenerateStyle; +export { genPictureStyle, genPictureCardStyle }; diff --git a/packages/meta/lib/upload/style/picture.js b/packages/meta/lib/upload/style/picture.js new file mode 100644 index 0000000..9325bf3 --- /dev/null +++ b/packages/meta/lib/upload/style/picture.js @@ -0,0 +1,242 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/style/picture.ts +var picture_exports = {}; +__export(picture_exports, { + genPictureCardStyle: () => genPictureCardStyle, + genPictureStyle: () => genPictureStyle +}); +module.exports = __toCommonJS(picture_exports); +var import_colors = require("@ant-design/colors"); +var import_style = require("../../style"); +var import_cssinjs = require("@ant-design/cssinjs"); +var genPictureStyle = (token) => { + const { componentCls, iconCls, uploadThumbnailSize, uploadProgressOffset, calc } = token; + const listCls = `${componentCls}-list`; + const itemCls = `${listCls}-item`; + return { + [`${componentCls}-wrapper`]: { + // ${listCls} 增加优先级 + [` + ${listCls}${listCls}-picture, + ${listCls}${listCls}-picture-card, + ${listCls}${listCls}-picture-circle + `]: { + [itemCls]: { + position: "relative", + height: calc(uploadThumbnailSize).add(calc(token.lineWidth).mul(2)).add(calc(token.paddingXS).mul(2)).equal(), + padding: token.paddingXS, + border: `${(0, import_cssinjs.unit)(token.lineWidth)} ${token.lineType} ${token.colorBorder}`, + borderRadius: token.borderRadiusLG, + "&:hover": { + background: "transparent" + }, + [`${itemCls}-thumbnail`]: { + ...import_style.textEllipsis, + width: uploadThumbnailSize, + height: uploadThumbnailSize, + lineHeight: (0, import_cssinjs.unit)(calc(uploadThumbnailSize).add(token.paddingSM).equal()), + textAlign: "center", + flex: "none", + [iconCls]: { + fontSize: token.fontSizeHeading2, + color: token.colorPrimary + }, + img: { + display: "block", + width: "100%", + height: "100%", + overflow: "hidden" + } + }, + [`${itemCls}-progress`]: { + bottom: uploadProgressOffset, + width: `calc(100% - ${(0, import_cssinjs.unit)(calc(token.paddingSM).mul(2).equal())})`, + marginTop: 0, + paddingInlineStart: calc(uploadThumbnailSize).add(token.paddingXS).equal() + } + }, + [`${itemCls}-error`]: { + borderColor: token.colorError, + // Adjust the color of the error icon : https://github.com/ant-design/ant-design/pull/24160 + [`${itemCls}-thumbnail ${iconCls}`]: { + [`svg path[fill='${import_colors.blue[0]}']`]: { + fill: token.colorErrorBg + }, + [`svg path[fill='${import_colors.blue.primary}']`]: { + fill: token.colorError + } + } + }, + [`${itemCls}-uploading`]: { + borderStyle: "dashed", + [`${itemCls}-name`]: { + marginBottom: uploadProgressOffset + } + } + }, + [`${listCls}${listCls}-picture-circle ${itemCls}`]: { + [`&, &::before, ${itemCls}-thumbnail`]: { + borderRadius: "50%" + } + } + } + }; +}; +var genPictureCardStyle = (token) => { + const { componentCls, iconCls, fontSizeLG, colorTextLightSolid, calc } = token; + const listCls = `${componentCls}-list`; + const itemCls = `${listCls}-item`; + const uploadPictureCardSize = token.uploadPicCardSize; + return { + [` + ${componentCls}-wrapper${componentCls}-picture-card-wrapper, + ${componentCls}-wrapper${componentCls}-picture-circle-wrapper + `]: { + ...(0, import_style.clearFix)(), + display: "inline-block", + width: "100%", + [`${componentCls}${componentCls}-select`]: { + width: uploadPictureCardSize, + height: uploadPictureCardSize, + marginInlineEnd: token.marginXS, + marginBottom: token.marginXS, + textAlign: "center", + verticalAlign: "top", + backgroundColor: token.colorFillAlter, + border: `${(0, import_cssinjs.unit)(token.lineWidth)} dashed ${token.colorBorder}`, + borderRadius: token.borderRadiusLG, + cursor: "pointer", + transition: `border-color ${token.motionDurationSlow}`, + [`> ${componentCls}`]: { + display: "flex", + alignItems: "center", + justifyContent: "center", + height: "100%", + textAlign: "center" + }, + [`&:not(${componentCls}-disabled):hover`]: { + borderColor: token.colorPrimary + } + }, + // list + [`${listCls}${listCls}-picture-card, ${listCls}${listCls}-picture-circle`]: { + [`${listCls}-item-container`]: { + display: "inline-block", + width: uploadPictureCardSize, + height: uploadPictureCardSize, + marginBlock: `0 ${(0, import_cssinjs.unit)(token.marginXS)}`, + marginInline: `0 ${(0, import_cssinjs.unit)(token.marginXS)}`, + verticalAlign: "top" + }, + "&::after": { + display: "none" + }, + [itemCls]: { + height: "100%", + margin: 0, + "&::before": { + position: "absolute", + zIndex: 1, + width: `calc(100% - ${(0, import_cssinjs.unit)(calc(token.paddingXS).mul(2).equal())})`, + height: `calc(100% - ${(0, import_cssinjs.unit)(calc(token.paddingXS).mul(2).equal())})`, + backgroundColor: token.colorBgMask, + opacity: 0, + transition: `all ${token.motionDurationSlow}`, + content: '" "' + } + }, + [`${itemCls}:hover`]: { + [`&::before, ${itemCls}-actions`]: { + opacity: 1 + } + }, + [`${itemCls}-actions`]: { + position: "absolute", + insetInlineStart: 0, + zIndex: 10, + width: "100%", + whiteSpace: "nowrap", + textAlign: "center", + opacity: 0, + transition: `all ${token.motionDurationSlow}`, + [` + ${iconCls}-eye, + ${iconCls}-download, + ${iconCls}-delete + `]: { + zIndex: 10, + width: fontSizeLG, + margin: `0 ${(0, import_cssinjs.unit)(token.marginXXS)}`, + fontSize: fontSizeLG, + cursor: "pointer", + transition: `all ${token.motionDurationSlow}`, + color: colorTextLightSolid, + "&:hover": { + color: colorTextLightSolid + }, + svg: { + verticalAlign: "baseline" + } + } + }, + [`${itemCls}-thumbnail, ${itemCls}-thumbnail img`]: { + position: "static", + display: "block", + width: "100%", + height: "100%", + objectFit: "contain" + }, + [`${itemCls}-name`]: { + display: "none", + textAlign: "center" + }, + [`${itemCls}-file + ${itemCls}-name`]: { + position: "absolute", + bottom: token.margin, + display: "block", + width: `calc(100% - ${(0, import_cssinjs.unit)(calc(token.paddingXS).mul(2).equal())})` + }, + [`${itemCls}-uploading`]: { + [`&${itemCls}`]: { + backgroundColor: token.colorFillAlter + }, + [`&::before, ${iconCls}-eye, ${iconCls}-download, ${iconCls}-delete`]: { + display: "none" + } + }, + [`${itemCls}-progress`]: { + bottom: token.marginXL, + width: `calc(100% - ${(0, import_cssinjs.unit)(calc(token.paddingXS).mul(2).equal())})`, + paddingInlineStart: 0 + } + } + }, + [`${componentCls}-wrapper${componentCls}-picture-circle-wrapper`]: { + [`${componentCls}${componentCls}-select`]: { + borderRadius: "50%" + } + } + }; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + genPictureCardStyle, + genPictureStyle +}); diff --git a/packages/meta/lib/upload/style/rtl.d.ts b/packages/meta/lib/upload/style/rtl.d.ts new file mode 100644 index 0000000..67fcebd --- /dev/null +++ b/packages/meta/lib/upload/style/rtl.d.ts @@ -0,0 +1,4 @@ +import type { UploadToken } from '.'; +import type { GenerateStyle } from '../../theme/internal'; +declare const genRtlStyle: GenerateStyle; +export default genRtlStyle; diff --git a/packages/meta/lib/upload/style/rtl.js b/packages/meta/lib/upload/style/rtl.js new file mode 100644 index 0000000..a31d2de --- /dev/null +++ b/packages/meta/lib/upload/style/rtl.js @@ -0,0 +1,33 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/style/rtl.ts +var rtl_exports = {}; +__export(rtl_exports, { + default: () => rtl_default +}); +module.exports = __toCommonJS(rtl_exports); +var genRtlStyle = (token) => { + const { componentCls } = token; + return { + [`${componentCls}-rtl`]: { + direction: "rtl" + } + }; +}; +var rtl_default = genRtlStyle; diff --git a/packages/meta/lib/upload/utils.d.ts b/packages/meta/lib/upload/utils.d.ts new file mode 100644 index 0000000..1b5f202 --- /dev/null +++ b/packages/meta/lib/upload/utils.d.ts @@ -0,0 +1,8 @@ +import type { InternalUploadFile, RcFile, UploadFile } from './interface'; +export declare function file2Obj(file: RcFile): InternalUploadFile; +/** Upload fileList. Replace file if exist or just push into it. */ +export declare function updateFileList(file: UploadFile, fileList: (UploadFile | Readonly)[]): (UploadFile | Readonly>)[]; +export declare function getFileItem(file: RcFile, fileList: (UploadFile | Readonly)[]): UploadFile | Readonly>; +export declare function removeFileItem(file: UploadFile, fileList: (UploadFile | Readonly)[]): (UploadFile | Readonly>)[] | null; +export declare const isImageUrl: (file: UploadFile) => boolean; +export declare function previewImage(file: File | Blob): Promise; diff --git a/packages/meta/lib/upload/utils.js b/packages/meta/lib/upload/utils.js new file mode 100644 index 0000000..62b8912 --- /dev/null +++ b/packages/meta/lib/upload/utils.js @@ -0,0 +1,150 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/upload/utils.ts +var utils_exports = {}; +__export(utils_exports, { + file2Obj: () => file2Obj, + getFileItem: () => getFileItem, + isImageUrl: () => isImageUrl, + previewImage: () => previewImage, + removeFileItem: () => removeFileItem, + updateFileList: () => updateFileList +}); +module.exports = __toCommonJS(utils_exports); +function file2Obj(file) { + return { + ...file, + lastModified: file.lastModified, + lastModifiedDate: file.lastModifiedDate, + name: file.name, + size: file.size, + type: file.type, + uid: file.uid, + percent: 0, + originFileObj: file + }; +} +function updateFileList(file, fileList) { + const nextFileList = [...fileList]; + const fileIndex = nextFileList.findIndex(({ uid }) => uid === file.uid); + if (fileIndex === -1) { + nextFileList.push(file); + } else { + nextFileList[fileIndex] = file; + } + return nextFileList; +} +function getFileItem(file, fileList) { + const matchKey = file.uid !== void 0 ? "uid" : "name"; + return fileList.filter((item) => item[matchKey] === file[matchKey])[0]; +} +function removeFileItem(file, fileList) { + const matchKey = file.uid !== void 0 ? "uid" : "name"; + const removed = fileList.filter((item) => item[matchKey] !== file[matchKey]); + if (removed.length === fileList.length) { + return null; + } + return removed; +} +var extname = (url = "") => { + const temp = url.split("/"); + const filename = temp[temp.length - 1]; + const filenameWithoutSuffix = filename.split(/#|\?/)[0]; + return (/\.[^./\\]*$/.exec(filenameWithoutSuffix) || [""])[0]; +}; +var isImageFileType = (type) => type.indexOf("image/") === 0; +var isImageUrl = (file) => { + if (file.type && !file.thumbUrl) { + return isImageFileType(file.type); + } + const url = file.thumbUrl || file.url || ""; + const extension = extname(url); + if (/^data:image\//.test(url) || /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico|heic|heif)$/i.test(extension)) { + return true; + } + if (/^data:/.test(url)) { + return false; + } + if (extension) { + return false; + } + return true; +}; +var MEASURE_SIZE = 200; +function previewImage(file) { + return new Promise((resolve) => { + if (!file.type || !isImageFileType(file.type)) { + resolve(""); + return; + } + const canvas = document.createElement("canvas"); + canvas.width = MEASURE_SIZE; + canvas.height = MEASURE_SIZE; + canvas.style.cssText = `position: fixed; left: 0; top: 0; width: ${MEASURE_SIZE}px; height: ${MEASURE_SIZE}px; z-index: 9999; display: none;`; + document.body.appendChild(canvas); + const ctx = canvas.getContext("2d"); + const img = new Image(); + img.onload = () => { + const { width, height } = img; + let drawWidth = MEASURE_SIZE; + let drawHeight = MEASURE_SIZE; + let offsetX = 0; + let offsetY = 0; + if (width > height) { + drawHeight = height * (MEASURE_SIZE / width); + offsetY = -(drawHeight - drawWidth) / 2; + } else { + drawWidth = width * (MEASURE_SIZE / height); + offsetX = -(drawWidth - drawHeight) / 2; + } + ctx.drawImage(img, offsetX, offsetY, drawWidth, drawHeight); + const dataURL = canvas.toDataURL(); + document.body.removeChild(canvas); + window.URL.revokeObjectURL(img.src); + resolve(dataURL); + }; + img.crossOrigin = "anonymous"; + if (file.type.startsWith("image/svg+xml")) { + const reader = new FileReader(); + reader.onload = () => { + if (reader.result) + img.src = reader.result; + }; + reader.readAsDataURL(file); + } else if (file.type.startsWith("image/gif")) { + const reader = new FileReader(); + reader.onload = () => { + if (reader.result) + resolve(reader.result); + }; + reader.readAsDataURL(file); + } else { + img.src = window.URL.createObjectURL(file); + } + }); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + file2Obj, + getFileItem, + isImageUrl, + previewImage, + removeFileItem, + updateFileList +}); diff --git a/packages/meta/lib/utils/constants.js b/packages/meta/lib/utils/constants.js new file mode 100644 index 0000000..a565792 --- /dev/null +++ b/packages/meta/lib/utils/constants.js @@ -0,0 +1,42 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/utils/constants.ts +var constants_exports = {}; +__export(constants_exports, { + CROP_TYPE: () => CROP_TYPE, + defaultAlignOption: () => defaultAlignOption +}); +module.exports = __toCommonJS(constants_exports); +var CROP_TYPE = { + CUSTOM: "CUSTOM", + AUTO: "AUTO" +}; +var defaultAlignOption = { + points: ["bl", "br"], + offset: [6, 0], + overflow: { + adjustX: true, + adjustY: true + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + CROP_TYPE, + defaultAlignOption +}); diff --git a/packages/meta/lib/utils/index.d.ts b/packages/meta/lib/utils/index.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/meta/lib/utils/index.js b/packages/meta/lib/utils/index.js new file mode 100644 index 0000000..e69de29 diff --git a/packages/meta/lib/version/index.d.ts b/packages/meta/lib/version/index.d.ts new file mode 100644 index 0000000..1bb395b --- /dev/null +++ b/packages/meta/lib/version/index.d.ts @@ -0,0 +1,2 @@ +declare const _default: "3.2"; +export default _default; diff --git a/packages/meta/lib/version/index.js b/packages/meta/lib/version/index.js new file mode 100644 index 0000000..79773d8 --- /dev/null +++ b/packages/meta/lib/version/index.js @@ -0,0 +1,25 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/version/index.ts +var version_exports = {}; +__export(version_exports, { + default: () => version_default +}); +module.exports = __toCommonJS(version_exports); +var version_default = "3.2"; diff --git a/packages/meta/lib/watermark/context.d.ts b/packages/meta/lib/watermark/context.d.ts new file mode 100644 index 0000000..0a07cbe --- /dev/null +++ b/packages/meta/lib/watermark/context.d.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; +export interface WatermarkContextProps { + add: (ele: HTMLElement) => void; + remove: (ele: HTMLElement) => void; +} +declare const WatermarkContext: React.Context; +export declare function usePanelRef(panelSelector?: string): (ele: HTMLElement | null) => void; +export default WatermarkContext; diff --git a/packages/meta/lib/watermark/context.js b/packages/meta/lib/watermark/context.js new file mode 100644 index 0000000..76219df --- /dev/null +++ b/packages/meta/lib/watermark/context.js @@ -0,0 +1,62 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/watermark/context.ts +var context_exports = {}; +__export(context_exports, { + default: () => context_default, + usePanelRef: () => usePanelRef +}); +module.exports = __toCommonJS(context_exports); +var import_rc_util = require("rc-util"); +var React = __toESM(require("react")); +function voidFunc() { +} +var WatermarkContext = React.createContext({ + add: voidFunc, + remove: voidFunc +}); +function usePanelRef(panelSelector) { + const watermark = React.useContext(WatermarkContext); + const panelEleRef = React.useRef(); + const panelRef = (0, import_rc_util.useEvent)((ele) => { + if (ele) { + const innerContentEle = panelSelector ? ele.querySelector(panelSelector) : ele; + watermark.add(innerContentEle); + panelEleRef.current = innerContentEle; + } else { + watermark.remove(panelEleRef.current); + } + }); + return panelRef; +} +var context_default = WatermarkContext; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + usePanelRef +}); diff --git a/packages/meta/lib/watermark/index.d.ts b/packages/meta/lib/watermark/index.d.ts new file mode 100644 index 0000000..b13715d --- /dev/null +++ b/packages/meta/lib/watermark/index.d.ts @@ -0,0 +1,26 @@ +import React from 'react'; +export interface WatermarkProps { + zIndex?: number; + rotate?: number; + width?: number; + height?: number; + image?: string; + content?: string | string[]; + font?: { + color?: CanvasFillStrokeStyles['fillStyle']; + fontSize?: number | string; + fontWeight?: 'normal' | 'light' | 'weight' | number; + fontStyle?: 'none' | 'normal' | 'italic' | 'oblique'; + fontFamily?: string; + textAlign?: CanvasTextAlign; + }; + style?: React.CSSProperties; + className?: string; + rootClassName?: string; + gap?: [number, number]; + offset?: [number, number]; + children?: React.ReactNode; + inherit?: boolean; +} +declare const Watermark: React.FC; +export default Watermark; diff --git a/packages/meta/lib/watermark/index.js b/packages/meta/lib/watermark/index.js new file mode 100644 index 0000000..b6577b7 --- /dev/null +++ b/packages/meta/lib/watermark/index.js @@ -0,0 +1,246 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/watermark/index.tsx +var watermark_exports = {}; +__export(watermark_exports, { + default: () => watermark_default +}); +module.exports = __toCommonJS(watermark_exports); +var import_react = __toESM(require("react")); +var import_mutate_observer = require("@rc-component/mutate-observer"); +var import_classnames = __toESM(require("classnames")); +var import_internal = require("../theme/internal"); +var import_context = __toESM(require("./context")); +var import_useClips = __toESM(require("./useClips")); +var import_useRafDebounce = __toESM(require("./useRafDebounce")); +var import_useWatermark = __toESM(require("./useWatermark")); +var import_utils = require("./utils"); +function getSizeDiff(prev, next) { + return prev.size === next.size ? prev : next; +} +var DEFAULT_GAP_X = 100; +var DEFAULT_GAP_Y = 100; +var Watermark = (props) => { + const { + /** + * The antd content layer zIndex is basically below 10 + * https://github.com/ant-design/ant-design/blob/6192403b2ce517c017f9e58a32d58774921c10cd/components/style/themes/default.less#L335 + */ + zIndex = 9, + rotate = -22, + width, + height, + image, + content, + font = {}, + style, + className, + rootClassName, + gap = [DEFAULT_GAP_X, DEFAULT_GAP_Y], + offset, + children, + inherit = true + } = props; + const [, token] = (0, import_internal.useToken)(); + const { + color = token.colorFill, + fontSize = token.fontSizeLG, + fontWeight = "normal", + fontStyle = "normal", + fontFamily = "sans-serif", + textAlign = "center" + } = font; + const [gapX = DEFAULT_GAP_X, gapY = DEFAULT_GAP_Y] = gap; + const gapXCenter = gapX / 2; + const gapYCenter = gapY / 2; + const offsetLeft = (offset == null ? void 0 : offset[0]) ?? gapXCenter; + const offsetTop = (offset == null ? void 0 : offset[1]) ?? gapYCenter; + const markStyle = import_react.default.useMemo(() => { + const mergedStyle = { + zIndex, + position: "absolute", + left: 0, + top: 0, + width: "100%", + height: "100%", + pointerEvents: "none", + backgroundRepeat: "repeat" + }; + let positionLeft = offsetLeft - gapXCenter; + let positionTop = offsetTop - gapYCenter; + if (positionLeft > 0) { + mergedStyle.left = `${positionLeft}px`; + mergedStyle.width = `calc(100% - ${positionLeft}px)`; + positionLeft = 0; + } + if (positionTop > 0) { + mergedStyle.top = `${positionTop}px`; + mergedStyle.height = `calc(100% - ${positionTop}px)`; + positionTop = 0; + } + mergedStyle.backgroundPosition = `${positionLeft}px ${positionTop}px`; + return mergedStyle; + }, [zIndex, offsetLeft, gapXCenter, offsetTop, gapYCenter]); + const [container, setContainer] = import_react.default.useState(); + const [subElements, setSubElements] = import_react.default.useState(/* @__PURE__ */ new Set()); + const targetElements = import_react.default.useMemo(() => { + const list = container ? [container] : []; + return [...list, ...Array.from(subElements)]; + }, [container, subElements]); + const getMarkSize = (ctx) => { + let defaultWidth = 120; + let defaultHeight = 64; + if (!image && ctx.measureText) { + ctx.font = `${Number(fontSize)}px ${fontFamily}`; + const contents = Array.isArray(content) ? content : [content]; + const sizes = contents.map((item) => { + const metrics = ctx.measureText(item); + return [metrics.width, metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent]; + }); + defaultWidth = Math.ceil(Math.max(...sizes.map((size) => size[0]))); + defaultHeight = Math.ceil(Math.max(...sizes.map((size) => size[1]))) * contents.length + (contents.length - 1) * import_useClips.FontGap; + } + return [width ?? defaultWidth, height ?? defaultHeight]; + }; + const getClips = (0, import_useClips.default)(); + const [watermarkInfo, setWatermarkInfo] = import_react.default.useState( + null + ); + const renderWatermark = () => { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + if (ctx) { + const ratio = (0, import_utils.getPixelRatio)(); + const [markWidth, markHeight] = getMarkSize(ctx); + const drawCanvas = (drawContent) => { + const [nextClips, clipWidth] = getClips( + drawContent || "", + rotate, + ratio, + markWidth, + markHeight, + { + color, + fontSize, + fontStyle, + fontWeight, + fontFamily, + textAlign + }, + gapX, + gapY + ); + setWatermarkInfo([nextClips, clipWidth]); + }; + if (image) { + const img = new Image(); + img.onload = () => { + drawCanvas(img); + }; + img.onerror = () => { + drawCanvas(content); + }; + img.crossOrigin = "anonymous"; + img.referrerPolicy = "no-referrer"; + img.src = image; + } else { + drawCanvas(content); + } + } + }; + const syncWatermark = (0, import_useRafDebounce.default)(renderWatermark); + const [appendWatermark, removeWatermark, isWatermarkEle] = (0, import_useWatermark.default)(markStyle); + (0, import_react.useEffect)(() => { + if (watermarkInfo) { + targetElements.forEach((holder) => { + appendWatermark(watermarkInfo[0], watermarkInfo[1], holder); + }); + } + }, [watermarkInfo, targetElements]); + const onMutate = (mutations) => { + mutations.forEach((mutation) => { + if ((0, import_utils.reRendering)(mutation, isWatermarkEle)) { + syncWatermark(); + } + }); + }; + (0, import_mutate_observer.useMutateObserver)(targetElements, onMutate); + (0, import_react.useEffect)(syncWatermark, [ + rotate, + zIndex, + width, + height, + image, + content, + color, + fontSize, + fontWeight, + fontStyle, + fontFamily, + textAlign, + gapX, + gapY, + offsetLeft, + offsetTop + ]); + const watermarkContext = import_react.default.useMemo( + () => ({ + add: (ele) => { + setSubElements((prev) => { + const clone = new Set(prev); + clone.add(ele); + return getSizeDiff(prev, clone); + }); + }, + remove: (ele) => { + removeWatermark(ele); + setSubElements((prev) => { + const clone = new Set(prev); + clone.delete(ele); + return getSizeDiff(prev, clone); + }); + } + }), + [] + ); + const childNode = inherit ? /* @__PURE__ */ import_react.default.createElement(import_context.default.Provider, { value: watermarkContext }, children) : children; + return /* @__PURE__ */ import_react.default.createElement( + "div", + { + ref: setContainer, + className: (0, import_classnames.default)(className, rootClassName), + style: { position: "relative", ...style } + }, + childNode + ); +}; +if (process.env.NODE_ENV !== "production") { + Watermark.displayName = "Watermark"; +} +var watermark_default = Watermark; diff --git a/packages/meta/lib/watermark/useClips.d.ts b/packages/meta/lib/watermark/useClips.d.ts new file mode 100644 index 0000000..c00fa28 --- /dev/null +++ b/packages/meta/lib/watermark/useClips.d.ts @@ -0,0 +1,7 @@ +import type { WatermarkProps } from '.'; +export declare const FontGap = 3; +/** + * Get the clips of text content. + * This is a lazy hook function since SSR no need this + */ +export default function useClips(): (content: NonNullable | HTMLImageElement, rotate: number, ratio: number, width: number, height: number, font: Required>, gapX: number, gapY: number) => [dataURL: string, finalWidth: number, finalHeight: number]; diff --git a/packages/meta/lib/watermark/useClips.js b/packages/meta/lib/watermark/useClips.js new file mode 100644 index 0000000..5e5167b --- /dev/null +++ b/packages/meta/lib/watermark/useClips.js @@ -0,0 +1,118 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/watermark/useClips.ts +var useClips_exports = {}; +__export(useClips_exports, { + FontGap: () => FontGap, + default: () => useClips +}); +module.exports = __toCommonJS(useClips_exports); +var FontGap = 3; +function prepareCanvas(width, height, ratio = 1) { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + const realWidth = width * ratio; + const realHeight = height * ratio; + canvas.setAttribute("width", `${realWidth}px`); + canvas.setAttribute("height", `${realHeight}px`); + ctx.save(); + return [ctx, canvas, realWidth, realHeight]; +} +function useClips() { + function getClips(content, rotate, ratio, width, height, font, gapX, gapY) { + const [ctx, canvas, contentWidth, contentHeight] = prepareCanvas(width, height, ratio); + if (content instanceof HTMLImageElement) { + ctx.drawImage(content, 0, 0, contentWidth, contentHeight); + } else { + const { color, fontSize, fontStyle, fontWeight, fontFamily, textAlign } = font; + const mergedFontSize = Number(fontSize) * ratio; + ctx.font = `${fontStyle} normal ${fontWeight} ${mergedFontSize}px/${height}px ${fontFamily}`; + ctx.fillStyle = color; + ctx.textAlign = textAlign; + ctx.textBaseline = "top"; + const contents = Array.isArray(content) ? content : [content]; + contents == null ? void 0 : contents.forEach((item, index) => { + ctx.fillText(item ?? "", contentWidth / 2, index * (mergedFontSize + FontGap * ratio)); + }); + } + const angle = Math.PI / 180 * Number(rotate); + const maxSize = Math.max(width, height); + const [rCtx, rCanvas, realMaxSize] = prepareCanvas(maxSize, maxSize, ratio); + rCtx.translate(realMaxSize / 2, realMaxSize / 2); + rCtx.rotate(angle); + if (contentWidth > 0 && contentHeight > 0) { + rCtx.drawImage(canvas, -contentWidth / 2, -contentHeight / 2); + } + function getRotatePos(x, y) { + const targetX = x * Math.cos(angle) - y * Math.sin(angle); + const targetY = x * Math.sin(angle) + y * Math.cos(angle); + return [targetX, targetY]; + } + let left = 0; + let right = 0; + let top = 0; + let bottom = 0; + const halfWidth = contentWidth / 2; + const halfHeight = contentHeight / 2; + const points = [ + [0 - halfWidth, 0 - halfHeight], + [0 + halfWidth, 0 - halfHeight], + [0 + halfWidth, 0 + halfHeight], + [0 - halfWidth, 0 + halfHeight] + ]; + points.forEach(([x, y]) => { + const [targetX, targetY] = getRotatePos(x, y); + left = Math.min(left, targetX); + right = Math.max(right, targetX); + top = Math.min(top, targetY); + bottom = Math.max(bottom, targetY); + }); + const cutLeft = left + realMaxSize / 2; + const cutTop = top + realMaxSize / 2; + const cutWidth = right - left; + const cutHeight = bottom - top; + const realGapX = gapX * ratio; + const realGapY = gapY * ratio; + const filledWidth = (cutWidth + realGapX) * 2; + const filledHeight = cutHeight + realGapY; + const [fCtx, fCanvas] = prepareCanvas(filledWidth, filledHeight); + function drawImg(targetX = 0, targetY = 0) { + fCtx.drawImage( + rCanvas, + cutLeft, + cutTop, + cutWidth, + cutHeight, + targetX, + targetY, + cutWidth, + cutHeight + ); + } + drawImg(); + drawImg(cutWidth + realGapX, -cutHeight / 2 - realGapY / 2); + drawImg(cutWidth + realGapX, +cutHeight / 2 + realGapY / 2); + return [fCanvas.toDataURL(), filledWidth / ratio, filledHeight / ratio]; + } + return getClips; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + FontGap +}); diff --git a/packages/meta/lib/watermark/useRafDebounce.d.ts b/packages/meta/lib/watermark/useRafDebounce.d.ts new file mode 100644 index 0000000..e1fd572 --- /dev/null +++ b/packages/meta/lib/watermark/useRafDebounce.d.ts @@ -0,0 +1,4 @@ +/** + * Callback will only execute last one for each raf + */ +export default function useRafDebounce(callback: VoidFunction): () => void; diff --git a/packages/meta/lib/watermark/useRafDebounce.js b/packages/meta/lib/watermark/useRafDebounce.js new file mode 100644 index 0000000..7a43713 --- /dev/null +++ b/packages/meta/lib/watermark/useRafDebounce.js @@ -0,0 +1,52 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/watermark/useRafDebounce.ts +var useRafDebounce_exports = {}; +__export(useRafDebounce_exports, { + default: () => useRafDebounce +}); +module.exports = __toCommonJS(useRafDebounce_exports); +var import_react = __toESM(require("react")); +var import_raf = __toESM(require("rc-util/lib/raf")); +var import_rc_util = require("rc-util"); +function useRafDebounce(callback) { + const executeRef = import_react.default.useRef(false); + const rafRef = import_react.default.useRef(); + const wrapperCallback = (0, import_rc_util.useEvent)(callback); + return () => { + if (executeRef.current) { + return; + } + executeRef.current = true; + wrapperCallback(); + rafRef.current = (0, import_raf.default)(() => { + executeRef.current = false; + }); + }; +} diff --git a/packages/meta/lib/watermark/useWatermark.d.ts b/packages/meta/lib/watermark/useWatermark.d.ts new file mode 100644 index 0000000..3276756 --- /dev/null +++ b/packages/meta/lib/watermark/useWatermark.d.ts @@ -0,0 +1,13 @@ +import * as React from 'react'; +/** + * Base size of the canvas, 1 for parallel layout and 2 for alternate layout + * Only alternate layout is currently supported + */ +export declare const BaseSize = 2; +export declare const FontGap = 3; +export type AppendWatermark = (base64Url: string, markWidth: number, container: HTMLElement) => void; +export default function useWatermark(markStyle: React.CSSProperties): [ + appendWatermark: AppendWatermark, + removeWatermark: (container: HTMLElement) => void, + isWatermarkEle: (ele: Node) => boolean +]; diff --git a/packages/meta/lib/watermark/useWatermark.js b/packages/meta/lib/watermark/useWatermark.js new file mode 100644 index 0000000..84a596d --- /dev/null +++ b/packages/meta/lib/watermark/useWatermark.js @@ -0,0 +1,80 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/watermark/useWatermark.ts +var useWatermark_exports = {}; +__export(useWatermark_exports, { + BaseSize: () => BaseSize, + FontGap: () => FontGap, + default: () => useWatermark +}); +module.exports = __toCommonJS(useWatermark_exports); +var React = __toESM(require("react")); +var import_utils = require("./utils"); +var BaseSize = 2; +var FontGap = 3; +var emphasizedStyle = { + visibility: "visible !important" +}; +function useWatermark(markStyle) { + const [watermarkMap] = React.useState(() => /* @__PURE__ */ new Map()); + const appendWatermark = (base64Url, markWidth, container) => { + if (container) { + if (!watermarkMap.get(container)) { + const newWatermarkEle = document.createElement("div"); + watermarkMap.set(container, newWatermarkEle); + } + const watermarkEle = watermarkMap.get(container); + watermarkEle.setAttribute( + "style", + (0, import_utils.getStyleStr)({ + ...markStyle, + backgroundImage: `url('${base64Url}')`, + backgroundSize: `${Math.floor(markWidth)}px`, + ...emphasizedStyle + }) + ); + watermarkEle.removeAttribute("class"); + container.append(watermarkEle); + } + }; + const removeWatermark = (container) => { + const watermarkEle = watermarkMap.get(container); + if (watermarkEle && container) { + container.removeChild(watermarkEle); + } + watermarkMap.delete(container); + }; + const isWatermarkEle = (ele) => Array.from(watermarkMap.values()).includes(ele); + return [appendWatermark, removeWatermark, isWatermarkEle]; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + BaseSize, + FontGap +}); diff --git a/packages/meta/lib/watermark/utils.d.ts b/packages/meta/lib/watermark/utils.d.ts new file mode 100644 index 0000000..799f8a3 --- /dev/null +++ b/packages/meta/lib/watermark/utils.d.ts @@ -0,0 +1,8 @@ +/// +/** converting camel-cased strings to be lowercase and link it with Separato */ +export declare function toLowercaseSeparator(key: string): string; +export declare function getStyleStr(style: React.CSSProperties): string; +/** Returns the ratio of the device's physical pixel resolution to the css pixel resolution */ +export declare function getPixelRatio(): number; +/** Whether to re-render the watermark */ +export declare const reRendering: (mutation: MutationRecord, isWatermarkEle: (ele: Node) => boolean) => boolean; diff --git a/packages/meta/lib/watermark/utils.js b/packages/meta/lib/watermark/utils.js new file mode 100644 index 0000000..7df1d32 --- /dev/null +++ b/packages/meta/lib/watermark/utils.js @@ -0,0 +1,53 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/watermark/utils.ts +var utils_exports = {}; +__export(utils_exports, { + getPixelRatio: () => getPixelRatio, + getStyleStr: () => getStyleStr, + reRendering: () => reRendering, + toLowercaseSeparator: () => toLowercaseSeparator +}); +module.exports = __toCommonJS(utils_exports); +function toLowercaseSeparator(key) { + return key.replace(/([A-Z])/g, "-$1").toLowerCase(); +} +function getStyleStr(style) { + return Object.keys(style).map((key) => `${toLowercaseSeparator(key)}: ${style[key]};`).join(" "); +} +function getPixelRatio() { + return window.devicePixelRatio || 1; +} +var reRendering = (mutation, isWatermarkEle) => { + let flag = false; + if (mutation.removedNodes.length) { + flag = Array.from(mutation.removedNodes).some((node) => isWatermarkEle(node)); + } + if (mutation.type === "attributes" && isWatermarkEle(mutation.target)) { + flag = true; + } + return flag; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getPixelRatio, + getStyleStr, + reRendering, + toLowercaseSeparator +}); diff --git a/packages/meta/package.json b/packages/meta/package.json index 7d9cae3..b1b58a0 100644 --- a/packages/meta/package.json +++ b/packages/meta/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/meta", - "version": "0.9.1", + "version": "0.9.7", "description": "原子组件", "keywords": [ "meta", @@ -67,9 +67,9 @@ "@types/tar": "^6.1.10", "@types/throttle-debounce": "^5.0.2", "@types/warning": "^3.0.3", - "@zhst/types": "workspace:^", "@typescript-eslint/eslint-plugin": "^6.17.0", "@typescript-eslint/parser": "^6.17.0", + "@zhst/types": "workspace:^", "react": "^18.2.0", "react-copy-to-clipboard": "^5.1.0", "react-countup": "^6.5.0", @@ -88,6 +88,7 @@ "@types/downloadjs": "^1.4.6", "@zhst/func": "workspace:^", "@zhst/hooks": "workspace:^", + "@zhst/icon": "workspace:^", "@zhst/meta": "workspace:^", "antd": "^5.12.5", "antd-img-crop": "^4.21.0", diff --git a/packages/meta/src/BigImagePreview/index.md b/packages/meta/src/BigImagePreview/index.md index 9667973..35a5d3c 100644 --- a/packages/meta/src/BigImagePreview/index.md +++ b/packages/meta/src/BigImagePreview/index.md @@ -2,6 +2,7 @@ group: 媒体 category: Components subtitle: 大图预览组件 +toc: content title: BigImagePreview 大图预览组件 --- diff --git a/packages/meta/src/CompareImage/CompareImage.tsx b/packages/meta/src/CompareImage/CompareImage.tsx index cda03e6..0b10d75 100644 --- a/packages/meta/src/CompareImage/CompareImage.tsx +++ b/packages/meta/src/CompareImage/CompareImage.tsx @@ -1,15 +1,15 @@ -import React, { useRef, useState, useEffect, forwardRef, useImperativeHandle } from 'react' +import React, { useRef, useState, useEffect, forwardRef, useImperativeHandle, useContext } from 'react' // @ts-ignore import { generateImg, get, addEventListenerWrapper } from '@zhst/func'; import { useUpdateEffect } from '@zhst/hooks'; +import { IconFont } from '@zhst/icon' import Button from '../button'; import classNames from 'classnames' import Viewer from '../ImageEditor/viewer'; -import Icon from '../iconfont' import CornerScore from './components/CornerScore'; import './index.less' - -const componentName = `zhst-image__compater-view`; +import { ConfigContext } from '../config-provider'; +import { EMPTY_BASE64 } from '../utils/constants'; export interface CompareImageProps { /** @@ -17,9 +17,11 @@ export interface CompareImageProps { * @default "默认值" */ label?: string; + showTools?: boolean; + prefixCls?: string; openRoll?: boolean; //开启翻页 url: string; - score?: number; + score?: number | string; onPre?: () => void; onNext?: () => void; preDisable?: boolean; // 向前翻页禁用 @@ -35,16 +37,21 @@ export interface CompareImageRefProps { // 对比图组件 const CompareImage = forwardRef((props, ref) => { const { + prefixCls: customizePrefixCls, label = '标题', openRoll = true, url = '', score = 0, preDisable, nextDisable, - showScore = true, + showScore, onNext, + showTools = true, onPre } = props; + const { getPrefixCls } = useContext(ConfigContext); + const componentName = getPrefixCls('image__compater-view', customizePrefixCls); + const imgContainerRef = useRef(null); const imgInsRef = useRef(null); const [scale, setScale] = useState(0); @@ -95,7 +102,7 @@ const CompareImage = forwardRef((props, {!url ? (

暂无匹配数据
@@ -107,63 +114,65 @@ const CompareImage = forwardRef((props,
{/*
*/}
+ )} + {(showScore || score) && } + {showTools && ( +
+ + + {/* */} +
)} - {showScore && } -
- - - {/* */} - -
); }) diff --git a/packages/meta/src/CompareImage/demo/basic.tsx b/packages/meta/src/CompareImage/demo/basic.tsx index 11578c1..f9303fb 100644 --- a/packages/meta/src/CompareImage/demo/basic.tsx +++ b/packages/meta/src/CompareImage/demo/basic.tsx @@ -1,30 +1,35 @@ -import React, { useRef } from 'react'; +import React, { useRef, useState } from 'react'; import { CompareImage, Space, Button } from '@zhst/meta' -const props = { - label: "目标图", - openRoll:true, - dataSource:[ - { - url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', - score: '0.5' - }, - { - url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', - score: '0.8' - }, - ] -} - export default () => { const ref = useRef(null) + const [data, setData] = useState({ + url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', + score: '0.8' + }) return ( - - - + { + setData({ + url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', + score: '0.8' + }) + }} + onNext={() => { + setData({ + url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png', + score: '0.4' + }) + }} + /> ) } diff --git a/packages/meta/src/CompareImage/demo/noTools.tsx b/packages/meta/src/CompareImage/demo/noTools.tsx new file mode 100644 index 0000000..e9d983d --- /dev/null +++ b/packages/meta/src/CompareImage/demo/noTools.tsx @@ -0,0 +1,21 @@ + +import React, { useRef } from 'react'; +import { CompareImage, Space } from '@zhst/meta' + + +export default () => { + const ref = useRef(null) + + return ( + + + + ) +} diff --git a/packages/meta/src/CompareImage/index.less b/packages/meta/src/CompareImage/index.less index 6b69829..a5955a8 100644 --- a/packages/meta/src/CompareImage/index.less +++ b/packages/meta/src/CompareImage/index.less @@ -113,25 +113,17 @@ &__scoll-module { position: absolute; - top: 0%; - left: 0%; + padding: 12px; + bottom: 48px; display: flex; width: 100%; - height: 100%; align-items: flex-end; justify-content: space-between; pointer-events: none; + box-sizing: border-box; &__btn { - display: flex; - width: 50px; - height: 50px; - bottom: 45px; - align-items: center; - justify-content: center; - margin: 6px; - border-radius: 50%; - opacity: 0.5; + opacity: 0.4; pointer-events: all; &>span { @@ -142,6 +134,7 @@ } &__btn:hover { + opacity: 0.6; background-color: #09f !important; color: #fff !important; } diff --git a/packages/meta/src/CompareImage/index.md b/packages/meta/src/CompareImage/index.md index d403218..6d9af33 100644 --- a/packages/meta/src/CompareImage/index.md +++ b/packages/meta/src/CompareImage/index.md @@ -2,20 +2,28 @@ group: 媒体 category: Components subtitle: 图片预览 +toc: content title: CompareImage 图片预览 --- # CompareImage 图片预览 基本 +没有工具栏 ## API | 参数 | 说明 | 类型 | 默认值 | 版本 | | --- | --- | --- | --- | --- | +| url | 链接 | string | - | | | label | 左上角标题 | string(必填) | - | | -| openRoll | 是否支持鼠标滚动放大缩小 | boolean | - | | -| urls | 链接数组 | string[] | - | | +| showTools | 是否展示底部工具栏 | boolean | true | | +| openRoll | 是否展示翻页组件 | boolean | - | | | width | 宽度 | string(选填) | - | | | height | 高度 | string(选填) | - | | | score | 相似度 | string(选填) | - | | +| nextDisable | 禁止下一页 | boolean | false | | +| preDisable | 禁止上一页 | boolean | false | | +| prefixCls | 样式前缀 | string | - | | +| onPre | 往前翻页 | () => void; | - | | +| onNext | 往后翻页 | () => void; | - | | diff --git a/packages/meta/src/VideoPlayer/index.md b/packages/meta/src/VideoPlayer/index.md index 5780cb6..70face2 100644 --- a/packages/meta/src/VideoPlayer/index.md +++ b/packages/meta/src/VideoPlayer/index.md @@ -3,6 +3,7 @@ group: 媒体 category: Components subtitle: 视频播放 title: VideoPlayer 视频播放 +toc: content demo: cols: 2 --- diff --git a/packages/meta/src/app/index.zh-CN.md b/packages/meta/src/app/index.zh-CN.md index 5b790a3..30798de 100644 --- a/packages/meta/src/app/index.zh-CN.md +++ b/packages/meta/src/app/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components subtitle: 包裹组件 group: 其他 +toc: content title: App 包裹组件 demo: cols: 2 diff --git a/packages/meta/src/button/index.zh-CN.md b/packages/meta/src/button/index.zh-CN.md index 1a83924..e5de939 100644 --- a/packages/meta/src/button/index.zh-CN.md +++ b/packages/meta/src/button/index.zh-CN.md @@ -4,6 +4,7 @@ title: Button 按钮 subtitle: 按钮 demo: cols: 2 +toc: content group: title: 通用 order: 1 diff --git a/packages/meta/src/card/index.zh-CN.md b/packages/meta/src/card/index.zh-CN.md index 5b0fca8..f82f29a 100644 --- a/packages/meta/src/card/index.zh-CN.md +++ b/packages/meta/src/card/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components group: 数据展示 title: Card 卡片 +toc: content subtitle: 卡片 --- diff --git a/packages/meta/src/changelog/index.md b/packages/meta/src/changelog/index.md index 23dfb51..496ce52 100644 --- a/packages/meta/src/changelog/index.md +++ b/packages/meta/src/changelog/index.md @@ -1,8 +1,10 @@ --- nav: - title: 元组件 -title: 版本更新日志 -order: 9999 + title: 组件库 +title: 元组件 +toc: content --- + + diff --git a/packages/meta/src/checkbox/index.zh-CN.md b/packages/meta/src/checkbox/index.zh-CN.md index a4ff54c..370bec3 100644 --- a/packages/meta/src/checkbox/index.zh-CN.md +++ b/packages/meta/src/checkbox/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components subtitle: 多选框 group: 数据录入 +toc: content title: Checkbox 多选框 demo: cols: 2 diff --git a/packages/meta/src/config-provider/index.zh-CN.md b/packages/meta/src/config-provider/index.zh-CN.md index 2a6ae11..d453253 100644 --- a/packages/meta/src/config-provider/index.zh-CN.md +++ b/packages/meta/src/config-provider/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components subtitle: 全局化配置 group: 其他 +toc: content title: ConfigProvider 全局化配置 --- diff --git a/packages/meta/src/date-picker/index.md b/packages/meta/src/date-picker/index.md index 9e6a36d..08b9e06 100644 --- a/packages/meta/src/date-picker/index.md +++ b/packages/meta/src/date-picker/index.md @@ -3,6 +3,7 @@ category: Components group: 数据录入 title: DatePicker 日期选择框 subtitle: 日期选择框 +toc: content description: 输入或选择日期的控件。 demo: cols: 2 diff --git a/packages/meta/src/descriptions/index.zh-CN.md b/packages/meta/src/descriptions/index.zh-CN.md index 020174c..84d0f55 100644 --- a/packages/meta/src/descriptions/index.zh-CN.md +++ b/packages/meta/src/descriptions/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components subtitle: 描述列表 group: 数据展示 +toc: content title: Descriptions 描述列表 --- diff --git a/packages/meta/src/divider/index.zh-CN.md b/packages/meta/src/divider/index.zh-CN.md index 4888b1a..03e770c 100644 --- a/packages/meta/src/divider/index.zh-CN.md +++ b/packages/meta/src/divider/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components title: Divider 分割线 subtitle: 分割线 +toc: content demo: cols: 2 group: diff --git a/packages/meta/src/flex/index.zh-CN.md b/packages/meta/src/flex/index.zh-CN.md index 2772040..0152064 100644 --- a/packages/meta/src/flex/index.zh-CN.md +++ b/packages/meta/src/flex/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components subtitle: 弹性布局 group: 布局 +toc: content title: Flex 弹性布局 tag: New --- diff --git a/packages/meta/src/form/index.zh-CN.md b/packages/meta/src/form/index.zh-CN.md index 77946ac..c208dd5 100644 --- a/packages/meta/src/form/index.zh-CN.md +++ b/packages/meta/src/form/index.zh-CN.md @@ -1,6 +1,7 @@ --- category: Components subtitle: 表单 +toc: content group: 数据录入 title: Form 表单 --- @@ -548,10 +549,6 @@ type Rule = RuleConfig | ((form: FormInstance) => RuleConfig); | form | 指定 Form 实例 | FormInstance | 当前 context 中的 Form | 5.4.0 | | preserve | 是否监视没有对应的 `Form.Item` 的字段 | boolean | false | 5.4.0 | -## 主题变量(Design Token) - - - ## FAQ ### Switch、Checkbox 为什么不能绑定数据? diff --git a/packages/meta/src/grid/index.zh-CN.md b/packages/meta/src/grid/index.zh-CN.md index 36c5d18..232f61a 100644 --- a/packages/meta/src/grid/index.zh-CN.md +++ b/packages/meta/src/grid/index.zh-CN.md @@ -3,6 +3,8 @@ category: Components subtitle: 栅格 group: 布局 title: Grid 栅格 +toc: content + --- 24 栅格系统。 diff --git a/packages/meta/src/index.md b/packages/meta/src/index.md deleted file mode 100644 index c54cdfa..0000000 --- a/packages/meta/src/index.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -nav: - title: 元组件 -title: 快速上手 -order: 1 ---- - -## 目录结构 - - -
    -
  • - src - 开发文件夹 -
      -
    • - Component1 - 组件目录 -
        -
      • - index.ts - 入口文件 -
      • -
      • - Component1.tsx - 组件1 -
      • -
      • - Component1Helper.ts - 组件函数 -
      • -
      • - index.less - 样式文件 -
      • -
      • - index.md - 说明文档 -
      • -
      -
    • -
    • - utils - 公共函数文件夹 -
    • -
    • - index.ts - 总入口文件 -
    • -
    -
  • -
  • - .dumirc.ts - 文档配置 -
  • -
  • - package.json - 这是 package.json -
  • -
-
- - - - diff --git a/packages/meta/src/input-number/index.zh-CN.md b/packages/meta/src/input-number/index.zh-CN.md index cd104d3..4fdb66f 100644 --- a/packages/meta/src/input-number/index.zh-CN.md +++ b/packages/meta/src/input-number/index.zh-CN.md @@ -3,6 +3,7 @@ category: Components subtitle: 数字输入框 group: 数据录入 title: InputNumber 数字输入框 +toc: content demo: cols: 2 --- diff --git a/packages/meta/src/input/index.zh-CN.md b/packages/meta/src/input/index.zh-CN.md index ef1dd44..6739e30 100644 --- a/packages/meta/src/input/index.zh-CN.md +++ b/packages/meta/src/input/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components subtitle: 输入框 group: 数据录入 +toc: content title: Input 输入框 demo: cols: 2 diff --git a/packages/meta/src/message/index.zh-CN.md b/packages/meta/src/message/index.zh-CN.md index e5a5d22..b89f7fe 100644 --- a/packages/meta/src/message/index.zh-CN.md +++ b/packages/meta/src/message/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components subtitle: 全局提示 group: 反馈 +toc: content noinstant: true title: Message 全局提示 demo: diff --git a/packages/meta/src/modal/index.zh-CN.md b/packages/meta/src/modal/index.zh-CN.md index 6e2f17b..45b1533 100644 --- a/packages/meta/src/modal/index.zh-CN.md +++ b/packages/meta/src/modal/index.zh-CN.md @@ -2,6 +2,7 @@ group: 反馈 category: Components subtitle: 对话框 +toc: content title: Modal 对话框 demo: cols: 2 diff --git a/packages/meta/src/notification/index.zh-CN.md b/packages/meta/src/notification/index.zh-CN.md index a62f960..a3b2b0a 100644 --- a/packages/meta/src/notification/index.zh-CN.md +++ b/packages/meta/src/notification/index.zh-CN.md @@ -3,6 +3,7 @@ category: Components group: 反馈 noinstant: true title: Notification +toc: content subtitle: 通知提醒框 demo: cols: 2 diff --git a/packages/meta/src/popover/index.zh-CN.md b/packages/meta/src/popover/index.zh-CN.md index 64d8dde..cd5f5b1 100644 --- a/packages/meta/src/popover/index.zh-CN.md +++ b/packages/meta/src/popover/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components subtitle: 气泡卡片 group: 数据展示 +toc: content title: Popover demo: cols: 2 diff --git a/packages/meta/src/progress/index.zh-CN.md b/packages/meta/src/progress/index.zh-CN.md index 0a08244..b9763f6 100644 --- a/packages/meta/src/progress/index.zh-CN.md +++ b/packages/meta/src/progress/index.zh-CN.md @@ -3,6 +3,7 @@ category: Components subtitle: 进度条 group: 反馈 title: Progress 进度条 +toc: content demo: cols: 2 --- diff --git a/packages/meta/src/radio/index.zh-CN.md b/packages/meta/src/radio/index.zh-CN.md index 9b9915a..78343ef 100644 --- a/packages/meta/src/radio/index.zh-CN.md +++ b/packages/meta/src/radio/index.zh-CN.md @@ -3,6 +3,7 @@ category: Components subtitle: 单选框 group: 数据录入 title: Radio 单选框 +toc: content demo: cols: 2 --- diff --git a/packages/meta/src/score/index.md b/packages/meta/src/score/index.md index e679928..22b3820 100644 --- a/packages/meta/src/score/index.md +++ b/packages/meta/src/score/index.md @@ -2,6 +2,7 @@ group: 数据录入 category: Components subtitle: 分数 +toc: content title: Score 分数 --- diff --git a/packages/meta/src/segmented/index.zh-CN.md b/packages/meta/src/segmented/index.zh-CN.md index 0d4e372..33a2b47 100644 --- a/packages/meta/src/segmented/index.zh-CN.md +++ b/packages/meta/src/segmented/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components subtitle: 分段控制器 group: 数据展示 +toc: content title: Segmented 分段控制器 demo: cols: 2 diff --git a/packages/meta/src/select/index.zh-CN.md b/packages/meta/src/select/index.zh-CN.md index ffc4136..33efb85 100644 --- a/packages/meta/src/select/index.zh-CN.md +++ b/packages/meta/src/select/index.zh-CN.md @@ -1,6 +1,7 @@ --- category: Components subtitle: 选择器 +toc: content group: 数据录入 title: Select 选择器 demo: diff --git a/packages/meta/src/skeleton/index.zh-CN.md b/packages/meta/src/skeleton/index.zh-CN.md index 80c18d6..943d2d0 100644 --- a/packages/meta/src/skeleton/index.zh-CN.md +++ b/packages/meta/src/skeleton/index.zh-CN.md @@ -1,6 +1,7 @@ --- category: Components subtitle: 骨架屏 +toc: content group: 反馈 title: Skeleton 骨架屏 --- diff --git a/packages/meta/src/slider/index.zh-CN.md b/packages/meta/src/slider/index.zh-CN.md index 54e163d..f667a5c 100644 --- a/packages/meta/src/slider/index.zh-CN.md +++ b/packages/meta/src/slider/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components subtitle: 滑动输入条 group: 数据录入 +toc: content title: Slider 滑动输入条 demo: cols: 2 diff --git a/packages/meta/src/space/index.zh-CN.md b/packages/meta/src/space/index.zh-CN.md index c20af03..6fc68ec 100644 --- a/packages/meta/src/space/index.zh-CN.md +++ b/packages/meta/src/space/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components group: 布局 subtitle: 间距 +toc: content title: Space 间距 --- diff --git a/packages/meta/src/switch/index.zh-CN.md b/packages/meta/src/switch/index.zh-CN.md index 53a88bc..d76ea62 100644 --- a/packages/meta/src/switch/index.zh-CN.md +++ b/packages/meta/src/switch/index.zh-CN.md @@ -3,6 +3,7 @@ category: Components subtitle: 开关 group: 数据录入 title: Switch 开关 +toc: content demo: cols: 2 --- diff --git a/packages/meta/src/tabs/index.md b/packages/meta/src/tabs/index.md index bf46461..bfd8b80 100644 --- a/packages/meta/src/tabs/index.md +++ b/packages/meta/src/tabs/index.md @@ -2,6 +2,7 @@ group: 数据录入 category: Components subtitle: 标签页 +toc: content title: Tabs 标签页 --- diff --git a/packages/meta/src/tooltip/index.zh-CN.md b/packages/meta/src/tooltip/index.zh-CN.md index ba69a43..a02edd9 100644 --- a/packages/meta/src/tooltip/index.zh-CN.md +++ b/packages/meta/src/tooltip/index.zh-CN.md @@ -3,6 +3,7 @@ category: Components subtitle: 文字提示 group: 数据展示 title: Tooltip 文字提示 +toc: content demo: cols: 2 --- diff --git a/packages/meta/src/tour/index.zh-CN.md b/packages/meta/src/tour/index.zh-CN.md index 976982f..fc32a42 100644 --- a/packages/meta/src/tour/index.zh-CN.md +++ b/packages/meta/src/tour/index.zh-CN.md @@ -3,6 +3,7 @@ category: Components subtitle: 漫游式引导 group: 数据展示 title: Tour 漫游式引导 +toc: content demo: cols: 2 --- diff --git a/packages/meta/src/typography/index.zh-CN.md b/packages/meta/src/typography/index.zh-CN.md index 76bab73..1b79d44 100644 --- a/packages/meta/src/typography/index.zh-CN.md +++ b/packages/meta/src/typography/index.zh-CN.md @@ -2,6 +2,7 @@ category: Components subtitle: 排版 group: 通用 +toc: content title: Typography 排版 --- diff --git a/packages/meta/src/upload/index.zh-CN.md b/packages/meta/src/upload/index.zh-CN.md index 72c38f8..833f49d 100644 --- a/packages/meta/src/upload/index.zh-CN.md +++ b/packages/meta/src/upload/index.zh-CN.md @@ -3,8 +3,7 @@ category: Components subtitle: 上传 group: 数据录入 title: Upload -cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*93ymR4RD4S0AAAAAAAAAAAAADrJ8AQ/original -coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*l1nlSryXib8AAAAAAAAAAAAADrJ8AQ/original +toc: content demo: cols: 2 --- diff --git a/packages/meta/src/utils/constants.ts b/packages/meta/src/utils/constants.ts index a10b628..48ce79d 100644 --- a/packages/meta/src/utils/constants.ts +++ b/packages/meta/src/utils/constants.ts @@ -1,3 +1,5 @@ +import { Empty } from "antd"; + export const CROP_TYPE = { CUSTOM: 'CUSTOM', AUTO: 'AUTO', @@ -11,3 +13,5 @@ export const defaultAlignOption = { adjustY: true, }, }; + +export const EMPTY_BASE64 = 'data:image/png;base64,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' diff --git a/packages/meta/src/watermark/index.zh-CN.md b/packages/meta/src/watermark/index.zh-CN.md index 59efbe4..c131bed 100644 --- a/packages/meta/src/watermark/index.zh-CN.md +++ b/packages/meta/src/watermark/index.zh-CN.md @@ -3,6 +3,7 @@ category: Components subtitle: 水印 group: 反馈 title: Watermark 水印 +toc: content demo: cols: 1 tag: New diff --git a/packages/request/CHANGELOG.md b/packages/request/CHANGELOG.md index cf1e6f1..4b073f6 100644 --- a/packages/request/CHANGELOG.md +++ b/packages/request/CHANGELOG.md @@ -1,85 +1,49 @@ # @zhst/request -## 0.8.4 - -### Patch Changes - -- test - -## 0.8.3 - -### Patch Changes - -- 新增 tree 组件的监听事件,优化 meta 全选的回调事件监听 - -## 0.8.2 - -### Patch Changes - -- 修改 boxSelectTree 类型提示 - -## 0.8.1 - -### Patch Changes - -- 优化 boxSelectTree 组件,添加可以自定义配置按钮功能 - -## 0.8.0 +## 0.9.0 ### Minor Changes -- @zhst/biz 优化数组件 - -## 0.7.0 - -### Minor Changes - -- 新增业务组件 Tree、TreeTransfer、TreeTransferModal、BoxSelectTree - -## 0.6.0 - -### Minor Changes - -- feat: 变更 - -## 0.5.0 - -### Minor Changes - -- feat: 初版发布 - -## 0.4.1 +- 新包发布 +- 修改配置 ### Patch Changes -- feat: 初始化 +- @zhst/func@0.9.1 -## 0.4.0 - -### Minor Changes - -- fix: 修改 pkg - -## 0.3.0 - -### Minor Changes - -- feat: 初始化项目包 - -## 0.2.4 +## 0.8.9 ### Patch Changes -- feat: 新增 meta 包 - Updated dependencies - - @zhst/func@0.2.4 - - @zhst/hooks@0.2.4 - - @zhst/meta@0.2.4 + - @zhst/func@0.9.0 -## 0.2.3 +## 0.8.8 ### Patch Changes -- fix: 调试包 link +- 初始化物料库 - Updated dependencies - - @zhst/hooks@0.2.3 + - @zhst/func@0.8.3 + +## 0.8.7 + +### Patch Changes + +- 初始化物料包 +- Updated dependencies + - @zhst/func@0.8.2 + +## 0.8.6 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.8.1 + +## 0.8.5 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.8.0 diff --git a/packages/request/README.md b/packages/request/README.md index 11c876d..2617201 100644 --- a/packages/request/README.md +++ b/packages/request/README.md @@ -1,21 +1,36 @@ # @zhst/request -:::info{title=开发中} -还在构思最佳使用方案... -::: - - ## 介绍 -zhst 请求库 +请求库配置,创建初衷是为了统一项目中引用的 request 和 useRequest 的配置。 ## 安装 -> pnpm install @zhst/request +```js +pnpm install @zhst/request +``` ## 使用 -```js +```jsx import React from 'react'; -import request from '@zhst/request' +import { reqConfig } from '@zhst/request' + +const config = reqConfig() + +console.log('配置', config) + +export default () => { + return ( +
从控制台打印查看
+ ) +} ``` + +## API + +参数可以参考 umi 的 request 配置 + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| baseURL | 请求的根域名 | string | location.host | - | diff --git a/packages/request/es/index.d.ts b/packages/request/es/index.d.ts new file mode 100644 index 0000000..46f33a1 --- /dev/null +++ b/packages/request/es/index.d.ts @@ -0,0 +1,28 @@ +export interface ReqConfigProps { + timeout?: number; + baseURL?: string; + errorConfig?: { + errorHandler?: (error: any, opts: any) => void; + errorThrower?: (err: any) => void; + }; + authorization: string; + showMsg?: boolean; +} +export declare const reqConfig: (config: ReqConfigProps) => { + timeout: number; + baseURL: string; + errorConfig: { + errorHandler?: ((error: any, opts: any) => void) | undefined; + errorThrower?: ((err: any) => void) | undefined; + }; + authorization: string; + showMsg?: boolean | undefined; + requestInterceptors: (((url: any, options: any) => { + url: any; + options: any; + }) | ((error: any) => Promise))[][]; + responseInterceptors: ((response: { + status: number; + data: any; + }) => any)[][]; +}; diff --git a/packages/request/es/index.js b/packages/request/es/index.js index e69de29..89ba78b 100644 --- a/packages/request/es/index.js +++ b/packages/request/es/index.js @@ -0,0 +1,93 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +import { message } from 'antd'; +export var reqConfig = function reqConfig(config) { + var _ref = config || {}, + authorization = _ref.authorization, + showMsg = _ref.showMsg; + return _objectSpread({ + timeout: 1000, + baseURL: location.origin, + // other axios options you want + errorConfig: { + // @ts-ignore + errorHandler: function errorHandler(error, opts) { + console.log('first', error, opts); + // if (opts?.skipErrorHandler) throw error + // try { + // const { res } = ctx; + // const d = await res.text(); + + // if (res.status === 401 && store.user.isLogin) { + // store.user.resetLoginState(); + // message.warning('登录过期,请重新登录!'); + // return; + // } + // const isEmptyRes = d === '' || d.replace(/\s/g,"")=== 'tokenisinvalid'; //有些后端接口成功会返回空 做下兼容 + // const body = !isEmptyRes ? JSON.parse(d || '{}') : d; + // const sessionCode = sessionStorage.getItem('zhst_errcode') || '{}' + // const ERROR_CODE = JSON.parse(sessionCode); + + // if (Number(res.status) === 200) { + // ctx.res = body; + // } else { + // // 先判断Grpc-Metadata-Errorx-Message + // let errMsg = ERROR_CODE[body.code]?.value || body.message || '您的网络发生异常,无法连接服务器' + // toast && message.error(errMsg || body); + // ctx.res = { + // code: body.code, + // message: errMsg + // }; + // } + + // } catch (error) { + // if (get(error, 'type') !== 'CustomError') { + // toast && message.error('您的网络发生异常,无法连接服务器'); + // } + // throw error; + // } + }, + // @ts-ignore + errorThrower: function errorThrower(res) { + console.log('res', res); + } + }, + // 请求 + requestInterceptors: [ + // 一个二元组,第一个元素是 request 拦截器,第二个元素是错误处理 + [function (url, options) { + var Authorization = authorization || localStorage.getItem('ZHST_AUTH_TOKEN') || ''; + return { + url: url, + options: _objectSpread(_objectSpread({}, options), {}, { + headers: { + Authorization: Authorization + } + }) + }; + }, function (error) { + return Promise.reject(error); + }]], + // 返回 + responseInterceptors: [ + // 一个二元组,第一个元素是 request 拦截器,第二个元素是错误处理 + [function (response) { + if (response.status !== 200) { + throw Error(JSON.stringify(response.data)); + } + var _ref2 = response.data || {}, + code = _ref2.code; + if (showMsg && code !== 200) { + message.error(response.data.message || '请求失败!'); + return null; + } + return response.data; + }, function (error) { + return Promise.reject(error); + }]] + }, config); +}; \ No newline at end of file diff --git a/packages/request/lib/index.d.ts b/packages/request/lib/index.d.ts new file mode 100644 index 0000000..46f33a1 --- /dev/null +++ b/packages/request/lib/index.d.ts @@ -0,0 +1,28 @@ +export interface ReqConfigProps { + timeout?: number; + baseURL?: string; + errorConfig?: { + errorHandler?: (error: any, opts: any) => void; + errorThrower?: (err: any) => void; + }; + authorization: string; + showMsg?: boolean; +} +export declare const reqConfig: (config: ReqConfigProps) => { + timeout: number; + baseURL: string; + errorConfig: { + errorHandler?: ((error: any, opts: any) => void) | undefined; + errorThrower?: ((err: any) => void) | undefined; + }; + authorization: string; + showMsg?: boolean | undefined; + requestInterceptors: (((url: any, options: any) => { + url: any; + options: any; + }) | ((error: any) => Promise))[][]; + responseInterceptors: ((response: { + status: number; + data: any; + }) => any)[][]; +}; diff --git a/packages/request/lib/index.js b/packages/request/lib/index.js index e69de29..064dcb5 100644 --- a/packages/request/lib/index.js +++ b/packages/request/lib/index.js @@ -0,0 +1,92 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.tsx +var src_exports = {}; +__export(src_exports, { + reqConfig: () => reqConfig +}); +module.exports = __toCommonJS(src_exports); +var import_antd = require("antd"); +var reqConfig = (config) => { + const { + authorization, + showMsg + } = config || {}; + return { + timeout: 1e3, + baseURL: location.origin, + // other axios options you want + errorConfig: { + // @ts-ignore + errorHandler(error, opts) { + console.log("first", error, opts); + }, + // @ts-ignore + errorThrower(res) { + console.log("res", res); + } + }, + // 请求 + requestInterceptors: [ + // 一个二元组,第一个元素是 request 拦截器,第二个元素是错误处理 + [ + (url, options) => { + const Authorization = authorization || localStorage.getItem("ZHST_AUTH_TOKEN") || ""; + return { + url, + options: { + ...options, + headers: { + Authorization + } + } + }; + }, + (error) => { + return Promise.reject(error); + } + ] + ], + // 返回 + responseInterceptors: [ + // 一个二元组,第一个元素是 request 拦截器,第二个元素是错误处理 + [ + (response) => { + if (response.status !== 200) { + throw Error(JSON.stringify(response.data)); + } + const { code } = response.data || {}; + if (showMsg && code !== 200) { + import_antd.message.error(response.data.message || "请求失败!"); + return null; + } + return response.data; + }, + (error) => { + return Promise.reject(error); + } + ] + ], + ...config + }; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + reqConfig +}); diff --git a/packages/request/package.json b/packages/request/package.json index 0c22940..b7d23d8 100644 --- a/packages/request/package.json +++ b/packages/request/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/request", - "version": "0.8.4", + "version": "0.9.0", "description": "请求库", "keywords": [ "request", @@ -14,7 +14,7 @@ "lib/**/style/*", "*.less" ], - "main": "lib/index.ts", + "main": "lib/index.js", "module": "es/index.js", "typings": "es/index.d.ts", "exports": { @@ -37,14 +37,7 @@ "registry": "http://10.0.0.77:4874" }, "dependencies": { - "antd": "^5.12.5", - "base-64": "^1.0.0", - "lodash-es": "^4.17.21", - "umi-request": "^1.4.0" - }, - "devDependencies": { - "@types/base-64": "^1.0.2", - "@types/lodash-es": "^4.17.12", - "@types/zhst": "workspace:^" + "@zhst/func": "workspace:^", + "antd": "^5.16.1" } } diff --git a/packages/request/src/changelog/index.md b/packages/request/src/changelog/index.md new file mode 100644 index 0000000..6794fef --- /dev/null +++ b/packages/request/src/changelog/index.md @@ -0,0 +1,8 @@ +--- +title: 请求库 +toc: content +--- + + + + diff --git a/packages/request/src/index.md b/packages/request/src/index.md index f580dc6..aa6ab35 100644 --- a/packages/request/src/index.md +++ b/packages/request/src/index.md @@ -1,8 +1,10 @@ --- nav: - title: 请求库 -order: 1 + title: 其它 + order: 999 title: 快速上手 +order: 1 +toc: content --- - +## 请求库 diff --git a/packages/request/src/index.tsx b/packages/request/src/index.tsx index e69de29..01ba7f6 100644 --- a/packages/request/src/index.tsx +++ b/packages/request/src/index.tsx @@ -0,0 +1,112 @@ +import { message } from 'antd' + +export interface ReqConfigProps { + timeout?: number + baseURL?: string + errorConfig?: { + errorHandler?: (error: any, opts: any) => void + errorThrower?: (err: any) => void + } + authorization?: string + showMsg?: boolean +} + +export const reqConfig = (config: ReqConfigProps) => { + const { + authorization, + showMsg + } = config || {} + + return { + timeout: 1000, + baseURL: location.origin, + // other axios options you want + errorConfig: { + // @ts-ignore + errorHandler(error: any, opts: any) { + console.log('first', error, opts); + // if (opts?.skipErrorHandler) throw error + // try { + // const { res } = ctx; + // const d = await res.text(); + + // if (res.status === 401 && store.user.isLogin) { + // store.user.resetLoginState(); + // message.warning('登录过期,请重新登录!'); + // return; + // } + // const isEmptyRes = d === '' || d.replace(/\s/g,"")=== 'tokenisinvalid'; //有些后端接口成功会返回空 做下兼容 + // const body = !isEmptyRes ? JSON.parse(d || '{}') : d; + // const sessionCode = sessionStorage.getItem('zhst_errcode') || '{}' + // const ERROR_CODE = JSON.parse(sessionCode); + + // if (Number(res.status) === 200) { + // ctx.res = body; + // } else { + // // 先判断Grpc-Metadata-Errorx-Message + // let errMsg = ERROR_CODE[body.code]?.value || body.message || '您的网络发生异常,无法连接服务器' + // toast && message.error(errMsg || body); + // ctx.res = { + // code: body.code, + // message: errMsg + // }; + // } + + // } catch (error) { + // if (get(error, 'type') !== 'CustomError') { + // toast && message.error('您的网络发生异常,无法连接服务器'); + // } + // throw error; + // } + }, + // @ts-ignore + errorThrower(res) { + console.log('res', res); + }, + }, + // 请求 + requestInterceptors: [ + // 一个二元组,第一个元素是 request 拦截器,第二个元素是错误处理 + [ + (url: any, options: any) => { + const Authorization = authorization || localStorage.getItem('ZHST_AUTH_TOKEN') || '' + + return { + url, + options: { + ...options, + headers: { + Authorization, + }, + }, + }; + }, + (error: any) => { + return Promise.reject(error); + }, + ], + ], + // 返回 + responseInterceptors: [ + // 一个二元组,第一个元素是 request 拦截器,第二个元素是错误处理 + [ + (response: { status: number; data: any; }) => { + if (response.status !== 200) { + throw Error(JSON.stringify(response.data)); + } + const { code } = response.data || {} + + if (showMsg && code !== 200) { + message.error(response.data.message || '请求失败!') + return null + } + return response.data; + }, + (error: any) => { + return Promise.reject(error); + }, + ], + ], + ...config + }; +} diff --git a/packages/slave/.fatherrc.ts b/packages/slave/.fatherrc.ts new file mode 100644 index 0000000..447d06b --- /dev/null +++ b/packages/slave/.fatherrc.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'father'; + +export default defineConfig({ + // more father config: https://github.com/umijs/father/blob/master/docs/config.md + esm: { + output: 'es', + ignores: ['**/demo/*', 'src/**/demo/*'] + }, + cjs: { + output: 'lib', + ignores: ['**/demo/*', 'src/**/demo/*'] + }, +}); diff --git a/packages/slave/CHANGELOG.md b/packages/slave/CHANGELOG.md new file mode 100644 index 0000000..87f3b2f --- /dev/null +++ b/packages/slave/CHANGELOG.md @@ -0,0 +1,70 @@ +# @zhst/slave + +## 0.5.0 + +### Minor Changes + +- slave 添加一些和 token 相关的方法 + +## 0.4.1 + +### Patch Changes + +- @zhst/func@0.9.1 + +## 0.4.0 + +### Minor Changes + +- 优化 slave 跳转方法 + +### Patch Changes + +- Updated dependencies + - @zhst/func@0.9.0 + +## 0.3.0 + +### Minor Changes + +- 修改页面跳转 + +## 0.2.5 + +### Patch Changes + +- 初始化物料库 +- Updated dependencies + - @zhst/func@0.8.3 + +## 0.2.4 + +### Patch Changes + +- 初始化物料包 +- Updated dependencies + - @zhst/func@0.8.2 + +## 0.2.3 + +### Patch Changes + +- 添加退出登录方法 + +## 0.2.2 + +### Patch Changes + +- slave 修改路由判定 + +## 0.2.1 + +### Patch Changes + +- 修改 package.json 导出 + +## 0.2.0 + +### Minor Changes + +- slave 包初版发布 diff --git a/packages/slave/README.md b/packages/slave/README.md new file mode 100644 index 0000000..865b113 --- /dev/null +++ b/packages/slave/README.md @@ -0,0 +1,9 @@ +# @zhst/slave + +## 介绍 + +供微前端应用使用的公共方法 + +## 安装 + +> pnpm install @zhst/slave diff --git a/packages/slave/es/index.js b/packages/slave/es/index.js new file mode 100644 index 0000000..7c3cdc4 --- /dev/null +++ b/packages/slave/es/index.js @@ -0,0 +1,122 @@ +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +import { message } from "antd"; +import { isUrl } from '@zhst/func'; +var Slave = /*#__PURE__*/function () { + // 设置参数 + function Slave() { + _classCallCheck(this, Slave); + _defineProperty(this, "config", void 0); + _defineProperty(this, "authTokenDefine", void 0); + this.authTokenDefine = 'ZHST_AUTH_TOKEN'; + } + _createClass(Slave, [{ + key: "init", + value: function () { + var _init = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(opt) { + var _opt$jumpToLogin, jumpToLogin, jumpUrl, tokenKey, _opt$showMsg, showMsg, msgText, from, to, currentUrl, currentJumpUrl, _token, _fromUrl, _toUrl; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _opt$jumpToLogin = opt.jumpToLogin, jumpToLogin = _opt$jumpToLogin === void 0 ? true : _opt$jumpToLogin, jumpUrl = opt.jumpUrl, tokenKey = opt.tokenKey, _opt$showMsg = opt.showMsg, showMsg = _opt$showMsg === void 0 ? true : _opt$showMsg, msgText = opt.msgText, from = opt.from, to = opt.to; + this.checkUrl(jumpUrl, 'jumpUrl'); + // 当前链接 + currentUrl = new URL(location.href); // 当前待跳转链接 + currentJumpUrl = new URL(jumpUrl); + _token = currentUrl.searchParams.get(tokenKey || 'token') || this.getToken(); + this.setToken(_token); + _fromUrl = from || location.origin + location.pathname; + this.checkUrl(_fromUrl, 'from'); + + // 判段from字段是否为链接 + if (!currentJumpUrl.searchParams.get('from')) { + currentJumpUrl.searchParams.set('from', _fromUrl); + } + _toUrl = to || location.origin + location.pathname; + this.checkUrl(_toUrl, 'to'); + if (!currentJumpUrl.searchParams.get('to')) { + currentJumpUrl.searchParams.set('to', _toUrl); + } + + // 判断当前登录环境 + this.checkEnv({ + showMsg: showMsg, + msgText: msgText + }); + + // 是否执行跳转页面 + if (jumpToLogin && jumpUrl && !_token) { + // 判断是否为同一个域,采用不同的跳转方式 + // 同一个域名下 + if (currentJumpUrl.origin === location.origin) { + history.pushState('', '', currentJumpUrl.href); + } else { + location.href = currentJumpUrl.href; + } + } + case 14: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function init(_x) { + return _init.apply(this, arguments); + } + return init; + }() // 判端是否登录 + }, { + key: "checkEnv", + value: function checkEnv(_opt) { + var _token = this.getToken() || String(this.getToken()); + if (!_token && _token !== 'null' && _opt.showMsg) { + message.error(_opt.msgText || '请先登录!'); + return false; + } + return true; + } + + // 检查是否为url,并且跑出错误 + }, { + key: "checkUrl", + value: function checkUrl(url, label) { + if (!isUrl(url)) { + throw Error("\u8BF7\u8F93\u5165\u6B63\u786E\u7684 ".concat(label, " \u94FE\u63A5\u5730\u5740\uFF0C\u4EE5http(s)://\u5F00\u5934\uFF01'")); + } + } + + // 退出登录 + }, { + key: "logOut", + value: function logOut() { + this.removeToken(); + location.replace(location.origin + location.pathname); + } + }, { + key: "setToken", + value: function setToken(val) { + val && localStorage.setItem(this.authTokenDefine, val); + } + }, { + key: "removeToken", + value: function removeToken(cb) { + localStorage.removeItem(this.authTokenDefine); + cb === null || cb === void 0 || cb(); + } + }, { + key: "getToken", + value: function getToken() { + return localStorage.getItem(this.authTokenDefine); + } + }]); + return Slave; +}(); +export default new Slave(); \ No newline at end of file diff --git a/packages/slave/index.d.ts b/packages/slave/index.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/slave/lib/index.js b/packages/slave/lib/index.js new file mode 100644 index 0000000..2bee0f6 --- /dev/null +++ b/packages/slave/lib/index.js @@ -0,0 +1,97 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.tsx +var src_exports = {}; +__export(src_exports, { + default: () => src_default +}); +module.exports = __toCommonJS(src_exports); +var import_antd = require("antd"); +var import_func = require("@zhst/func"); +var Slave = class { + // 设置参数 + constructor() { + this.authTokenDefine = "ZHST_AUTH_TOKEN"; + } + async init(opt) { + const { + jumpToLogin = true, + jumpUrl, + tokenKey, + showMsg = true, + msgText, + from, + to + } = opt; + this.checkUrl(jumpUrl, "jumpUrl"); + let currentUrl = new URL(location.href); + let currentJumpUrl = new URL(jumpUrl); + let _token = currentUrl.searchParams.get(tokenKey || "token") || this.getToken(); + this.setToken(_token); + let _fromUrl = from || location.origin + location.pathname; + this.checkUrl(_fromUrl, "from"); + if (!currentJumpUrl.searchParams.get("from")) { + currentJumpUrl.searchParams.set("from", _fromUrl); + } + let _toUrl = to || location.origin + location.pathname; + this.checkUrl(_toUrl, "to"); + if (!currentJumpUrl.searchParams.get("to")) { + currentJumpUrl.searchParams.set("to", _toUrl); + } + this.checkEnv({ showMsg, msgText }); + if (jumpToLogin && jumpUrl && !_token) { + if (currentJumpUrl.origin === location.origin) { + history.pushState("", "", currentJumpUrl.href); + } else { + location.href = currentJumpUrl.href; + } + } + } + // 判端是否登录 + checkEnv(_opt) { + const _token = this.getToken() || String(this.getToken()); + if (!_token && _token !== "null" && _opt.showMsg) { + import_antd.message.error(_opt.msgText || "请先登录!"); + return false; + } + return true; + } + // 检查是否为url,并且跑出错误 + checkUrl(url, label) { + if (!(0, import_func.isUrl)(url)) { + throw Error(`请输入正确的 ${label} 链接地址,以http(s)://开头!'`); + } + } + // 退出登录 + logOut() { + this.removeToken(); + location.replace(location.origin + location.pathname); + } + setToken(val) { + val && localStorage.setItem(this.authTokenDefine, val); + } + removeToken(cb) { + localStorage.removeItem(this.authTokenDefine); + cb == null ? void 0 : cb(); + } + getToken() { + return localStorage.getItem(this.authTokenDefine); + } +}; +var src_default = new Slave(); diff --git a/packages/slave/package.json b/packages/slave/package.json new file mode 100644 index 0000000..039af69 --- /dev/null +++ b/packages/slave/package.json @@ -0,0 +1,33 @@ +{ + "name": "@zhst/slave", + "version": "0.5.0", + "description": "微前端子应用方法库", + "keywords": [ + "slave", + "微前端子应用方法库" + ], + "license": "ISC", + "author": "dev", + "main": "lib/index.js", + "module": "es/index.js", + "typings": "es/index.d.ts", + "exports": { + ".": { + "require": "./lib/index.js", + "import": "./es/index.js", + "default": "./es/index.js" + }, + "./package.json": "./package.json" + }, + "scripts": { + "build": "father build" + }, + "publishConfig": { + "access": "public", + "registry": "http://10.0.0.77:4874" + }, + "dependencies": { + "@zhst/func": "workspace:^", + "antd": "^5.15.3" + } +} diff --git a/packages/slave/src/changelog/index.md b/packages/slave/src/changelog/index.md new file mode 100644 index 0000000..3192de0 --- /dev/null +++ b/packages/slave/src/changelog/index.md @@ -0,0 +1,9 @@ +--- +nav: + title: 微前端库 +title: 版本更新日志 +toc: content +order: 99 +--- + + diff --git a/packages/slave/src/demo/init.tsx b/packages/slave/src/demo/init.tsx new file mode 100644 index 0000000..5726de6 --- /dev/null +++ b/packages/slave/src/demo/init.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import slave from '@zhst/slave' + +export default () => { + const handleInit = () => { + slave.init({ + jumpUrl: `http://10.0.0.204:30058/material/login`, + }) + } + + return ( +
+ + + + + +
+ ) +} diff --git a/packages/slave/src/index.md b/packages/slave/src/index.md new file mode 100644 index 0000000..d9cf43d --- /dev/null +++ b/packages/slave/src/index.md @@ -0,0 +1,35 @@ +--- +nav: + title: 微前端库 +order: 99 +toc: content +title: 快速上手 +--- + + + +## 演示 + + + +## API + +| 参数 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| jumpToLogin | 是否打开登录校验跳转 | boolean | true | - | +| jumpUrl | 登录跳转页面 | string | - | - | +| tokenKey | 从链接获取的登录校验字段 | string | token | - | +| showMsg | 是否显示“请先登录”提示框 | boolean | true | - | +| msgText | 提示框自定义文案 | string | 请先登录 | - | +| from | 来自哪个链接(可选) | string | localhost | - | +| to | 准备去的链接(可选) | string | localhost | - | + +## slave 实例方法 + +| 方法 | 说明 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| init | 初始化实例 | function | (data: SlaveProps) => void | - | +| logOut | 退出登录 | function | () => void | - | +| getToken | 获取token | function | () => void | - | +| setToken | 设置token | function | (token: string) => void | - | +| removeToken | 移除token | function | () => void | - | diff --git a/packages/slave/src/index.tsx b/packages/slave/src/index.tsx new file mode 100644 index 0000000..a9e0e33 --- /dev/null +++ b/packages/slave/src/index.tsx @@ -0,0 +1,116 @@ +import { message } from "antd"; +import { isUrl } from '@zhst/func' + +export interface ISlaveConfig { + /** + * 是否跳转 + */ + jumpToLogin?: boolean; + /** + * 跳转的登录页面 + */ + jumpUrl: string; + /** + * 自定义token键名称 + */ + tokenKey?: string; + showMsg?: boolean; + msgText?: string; + from?: string; + to?: string +} + +class Slave { + config?: ISlaveConfig + authTokenDefine: string; // 设置参数 + constructor() { + this.authTokenDefine = 'ZHST_AUTH_TOKEN' + } + + async init (opt: ISlaveConfig) { + const { + jumpToLogin = true, + jumpUrl, + tokenKey, + showMsg = true, + msgText, + from, + to + } = opt + this.checkUrl(jumpUrl, 'jumpUrl') + // 当前链接 + let currentUrl = new URL(location.href) + // 当前待跳转链接 + let currentJumpUrl = new URL(jumpUrl) + + let _token = currentUrl.searchParams.get(tokenKey || 'token') || this.getToken() + this.setToken(_token) + + let _fromUrl = from || (location.origin + location.pathname) + this.checkUrl(_fromUrl, 'from') + + // 判段from字段是否为链接 + if (!currentJumpUrl.searchParams.get('from')) { + currentJumpUrl.searchParams.set('from', _fromUrl) + } + + let _toUrl = to || (location.origin + location.pathname) + this.checkUrl(_toUrl, 'to') + + if (!currentJumpUrl.searchParams.get('to')) { + currentJumpUrl.searchParams.set('to', _toUrl) + } + + // 判断当前登录环境 + this.checkEnv({ showMsg, msgText }) + + // 是否执行跳转页面 + if (jumpToLogin && jumpUrl && !_token) { + // 判断是否为同一个域,采用不同的跳转方式 + // 同一个域名下 + if (currentJumpUrl.origin === location.origin) { + history.pushState('', '', currentJumpUrl.href) + } else { + location.href = currentJumpUrl.href + } + } + } + + // 判端是否登录 + checkEnv(_opt: { showMsg: boolean, msgText?: string }): boolean { + const _token = this.getToken() || String(this.getToken()) + if (!_token && _token !== 'null' && _opt.showMsg) { + message.error(_opt.msgText || '请先登录!') + return false + } + return true + } + + // 检查是否为url,并且跑出错误 + public checkUrl(url: string, label: string) { + if (!isUrl(url)) { + throw Error(`请输入正确的 ${label} 链接地址,以http(s)://开头!'`) + } + } + + // 退出登录 + public logOut() { + this.removeToken() + location.replace(location.origin + location.pathname) + } + + public setToken(val: string | null) { + val && localStorage.setItem(this.authTokenDefine, val) + } + + public removeToken(cb?: () => void) { + localStorage.removeItem(this.authTokenDefine) + cb?.() + } + + public getToken() { + return localStorage.getItem(this.authTokenDefine) + } +} + +export default new Slave() diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 0599d69..ce821f1 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,17 @@ # @types/zhst +## 0.7.2 + +### Patch Changes + +- 初始化物料库 + +## 0.7.1 + +### Patch Changes + +- 初始化物料包 + ## 0.7.0 ### Minor Changes diff --git a/packages/types/package.json b/packages/types/package.json index 659e357..ea1c682 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@zhst/types", - "version": "0.7.0", + "version": "0.7.2", "description": "变量定义库", "keywords": [ "types", diff --git a/packages/types/src/changelog/index.md b/packages/types/src/changelog/index.md new file mode 100644 index 0000000..b93d663 --- /dev/null +++ b/packages/types/src/changelog/index.md @@ -0,0 +1,10 @@ +--- +nav: + title: 其它 +title: 定义库 +toc: content +--- + + + + diff --git a/packages/types/src/index.md b/packages/types/src/index.md deleted file mode 100644 index a4d2628..0000000 --- a/packages/types/src/index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -nav: - title: 类型定义 -order: 99 -title: 快速上手 ---- - - diff --git a/packages/zhst-types/CHANGELOG.md b/packages/zhst-types/CHANGELOG.md deleted file mode 100644 index fceca80..0000000 --- a/packages/zhst-types/CHANGELOG.md +++ /dev/null @@ -1,49 +0,0 @@ -# @types/zhst - -## 0.6.0 - -### Minor Changes - -- feat: 变更 - -## 0.5.0 - -### Minor Changes - -- feat: 初版发布 - -## 0.4.1 - -### Patch Changes - -- feat: 初始化 - -## 0.4.0 - -### Minor Changes - -- fix: 修改 pkg - -## 0.3.0 - -### Minor Changes - -- feat: 初始化项目包 - -## 0.2.4 - -### Patch Changes - -- feat: 新增 meta 包 -- Updated dependencies - - @zhst/func@0.2.4 - - @zhst/hooks@0.2.4 - - @zhst/meta@0.2.4 - -## 0.2.3 - -### Patch Changes - -- fix: 调试包 link -- Updated dependencies - - @zhst/hooks@0.2.3 diff --git a/packages/zhst-types/README.md b/packages/zhst-types/README.md deleted file mode 100644 index 6460e72..0000000 --- a/packages/zhst-types/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# @types/zhst - -:::info{title=开发中} -可能会被弃用... -::: - -## 介绍 - -业务库 - -## 安装 - -> pnpm install @zhst/types - -## 使用 - -```js -import React from 'react'; -import type { User } from '@types/zhst' - -``` diff --git a/packages/zhst-types/package.json b/packages/zhst-types/package.json deleted file mode 100644 index c769100..0000000 --- a/packages/zhst-types/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "@types/zhst", - "version": "0.6.0", - "description": "变量定义库", - "keywords": [ - "types", - "biz", - "zhst", - "变量定义库" - ], - "license": "ISC", - "author": "dev", - "main": "index.d.ts", - "typings": "index.d.ts", - "exports": { - ".": { - "types": { - "default": "./index.d.ts" - } - }, - "./package.json": "./package.json" - }, - "scripts": { - "build": "father build" - }, - "publishConfig": { - "access": "public", - "registry": "http://10.0.0.77:4874" - }, - "dependencies": {} -} diff --git a/packages/zhst-types/src/index.md b/packages/zhst-types/src/index.md deleted file mode 100644 index a4d2628..0000000 --- a/packages/zhst-types/src/index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -nav: - title: 类型定义 -order: 99 -title: 快速上手 ---- - - diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 19154b9..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,19187 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - devDependencies: - '@changesets/cli': - specifier: ^2.27.1 - version: 2.27.1 - '@commitlint/cli': - specifier: ^17.1.2 - version: 17.8.1 - '@commitlint/config-conventional': - specifier: ^17.1.0 - version: 17.8.1 - '@types/react': - specifier: ^18.0.0 - version: 18.2.48 - '@types/react-dom': - specifier: ^18.0.0 - version: 18.2.18 - '@umijs/lint': - specifier: ^4.0.0 - version: 4.1.1(eslint@8.56.0)(stylelint@14.16.1)(typescript@5.3.3) - dumi: - specifier: ^2.2.13 - version: 2.2.17(@babel/core@7.23.7)(@types/node@20.5.1)(@types/react@18.2.48)(eslint@8.56.0)(prettier@2.8.8)(react-dom@18.2.0)(react@18.2.0)(stylelint@14.16.1)(typescript@5.3.3)(webpack@5.89.0) - eslint: - specifier: ^8.23.0 - version: 8.56.0 - father: - specifier: ^4.1.0 - version: 4.3.8(@types/node@20.5.1)(webpack@5.89.0) - husky: - specifier: ^8.0.1 - version: 8.0.3 - lerna: - specifier: ^8.0.0 - version: 8.0.2 - lint-staged: - specifier: ^13.0.3 - version: 13.3.0 - prettier: - specifier: ^2.7.1 - version: 2.8.8 - prettier-plugin-organize-imports: - specifier: ^3.0.0 - version: 3.2.4(prettier@2.8.8)(typescript@5.3.3) - prettier-plugin-packagejson: - specifier: ^2.2.18 - version: 2.4.9(prettier@2.8.8) - react: - specifier: ^18.0.0 - version: 18.2.0 - react-dom: - specifier: ^18.0.0 - version: 18.2.0(react@18.2.0) - stylelint: - specifier: ^14.9.1 - version: 14.16.1 - - packages/biz: - dependencies: - '@ant-design/icons': - specifier: ^5.2.6 - version: 5.2.6(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-components': - specifier: ^2.6.49 - version: 2.6.49(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0) - '@zhst/func': - specifier: workspace:^ - version: link:../func - '@zhst/hooks': - specifier: workspace:^ - version: link:../hooks - '@zhst/meta': - specifier: workspace:^ - version: link:../meta - antd: - specifier: ^5.12.5 - version: 5.13.2(react-dom@18.2.0)(react@18.2.0) - classnames: - specifier: ^2.5.1 - version: 2.5.1 - dayjs: - specifier: ^1.11.10 - version: 1.11.10 - rc-util: - specifier: ^5.38.1 - version: 5.38.1(react-dom@18.2.0)(react@18.2.0) - devDependencies: - '@zhst/types': - specifier: workspace:^ - version: link:../types - - packages/constants: {} - - packages/func: - dependencies: - '@zhst/request': - specifier: workspace:^ - version: link:../request - base-64: - specifier: ^1.0.0 - version: 1.0.0 - dayjs: - specifier: ^1.11.10 - version: 1.11.10 - file-saver: - specifier: ^2.0.5 - version: 2.0.5 - jszip: - specifier: ^3.10.1 - version: 3.10.1 - lodash-es: - specifier: ^4.17.21 - version: 4.17.21 - uuid: - specifier: ^9.0.1 - version: 9.0.1 - devDependencies: - '@types/base-64': - specifier: ^1.0.2 - version: 1.0.2 - '@types/file-saver': - specifier: ^2.0.7 - version: 2.0.7 - '@types/lodash-es': - specifier: ^4.17.12 - version: 4.17.12 - '@types/uuid': - specifier: ^9.0.7 - version: 9.0.7 - '@types/zhst': - specifier: workspace:^ - version: link:../zhst-types - - packages/hooks: - dependencies: - '@zhst/func': - specifier: workspace:^ - version: link:../func - ahooks: - specifier: ^3.7.8 - version: 3.7.8(react@18.2.0) - antd: - specifier: ^5.12.5 - version: 5.13.2(react-dom@18.2.0)(react@18.2.0) - events: - specifier: ^3.3.0 - version: 3.3.0 - react: - specifier: ^18.0.0 - version: 18.2.0 - react-activation: - specifier: ^0.12.4 - version: 0.12.4(prop-types@15.8.1)(react@18.2.0) - react-router-dom: - specifier: ^6.21.1 - version: 6.21.3(react-dom@18.2.0)(react@18.2.0) - devDependencies: - '@types/zhst': - specifier: workspace:^ - version: link:../zhst-types - - packages/meta: - dependencies: - '@ant-design/colors': - specifier: ^7.0.2 - version: 7.0.2 - '@ant-design/cssinjs': - specifier: ^1.18.2 - version: 1.18.4(react-dom@18.2.0)(react@18.2.0) - '@ant-design/icons': - specifier: ^5.2.6 - version: 5.2.6(react-dom@18.2.0)(react@18.2.0) - '@ctrl/tinycolor': - specifier: ^4.0.2 - version: 4.0.3 - '@rc-component/mutate-observer': - specifier: ^1.1.0 - version: 1.1.0(react-dom@18.2.0)(react@18.2.0) - '@rc-component/tour': - specifier: ^1.12.3 - version: 1.12.3(react-dom@18.2.0)(react@18.2.0) - '@rc-component/trigger': - specifier: ^1.18.2 - version: 1.18.2(react-dom@18.2.0)(react@18.2.0) - '@turf/boolean-point-in-polygon': - specifier: ^6.5.0 - version: 6.5.0 - '@turf/turf': - specifier: ^6.5.0 - version: 6.5.0 - '@types/downloadjs': - specifier: ^1.4.6 - version: 1.4.6 - '@zhst/func': - specifier: workspace:^ - version: link:../func - '@zhst/hooks': - specifier: workspace:^ - version: link:../hooks - '@zhst/meta': - specifier: workspace:^ - version: 'link:' - antd: - specifier: ^5.12.5 - version: 5.13.2(react-dom@18.2.0)(react@18.2.0) - antd-img-crop: - specifier: ^4.21.0 - version: 4.21.0(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - antd-style: - specifier: ^3.6.1 - version: 3.6.1(@types/react@18.2.48)(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - classnames: - specifier: ^2.5.1 - version: 2.5.1 - copy-to-clipboard: - specifier: ^3.3.3 - version: 3.3.3 - dayjs: - specifier: ^1.11.10 - version: 1.11.10 - downloadjs: - specifier: ^1.4.7 - version: 1.4.7 - flv.js: - specifier: ^1.6.2 - version: 1.6.2 - lunar-typescript: - specifier: ^1.7.3 - version: 1.7.3 - rc-align: - specifier: ^4.0.15 - version: 4.0.15(react-dom@18.2.0)(react@18.2.0) - rc-cascader: - specifier: ~3.20.0 - version: 3.20.0(react-dom@18.2.0)(react@18.2.0) - rc-checkbox: - specifier: ~3.1.0 - version: 3.1.0(react-dom@18.2.0)(react@18.2.0) - rc-collapse: - specifier: ~3.7.2 - version: 3.7.2(react-dom@18.2.0)(react@18.2.0) - rc-dialog: - specifier: ~9.3.4 - version: 9.3.4(react-dom@18.2.0)(react@18.2.0) - rc-drawer: - specifier: ~6.5.2 - version: 6.5.2(react-dom@18.2.0)(react@18.2.0) - rc-dropdown: - specifier: ~4.1.0 - version: 4.1.0(react-dom@18.2.0)(react@18.2.0) - rc-field-form: - specifier: ~1.41.0 - version: 1.41.0(react-dom@18.2.0)(react@18.2.0) - rc-image: - specifier: ~7.5.1 - version: 7.5.1(react-dom@18.2.0)(react@18.2.0) - rc-input: - specifier: ~1.3.11 - version: 1.3.11(react-dom@18.2.0)(react@18.2.0) - rc-input-number: - specifier: ~8.4.0 - version: 8.4.0(react-dom@18.2.0)(react@18.2.0) - rc-mentions: - specifier: ~2.9.1 - version: 2.9.1(react-dom@18.2.0)(react@18.2.0) - rc-menu: - specifier: ~9.12.4 - version: 9.12.4(react-dom@18.2.0)(react@18.2.0) - rc-motion: - specifier: ^2.9.0 - version: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-notification: - specifier: ~5.3.0 - version: 5.3.0(react-dom@18.2.0)(react@18.2.0) - rc-pagination: - specifier: ~4.0.4 - version: 4.0.4(react-dom@18.2.0)(react@18.2.0) - rc-picker: - specifier: ~3.14.6 - version: 3.14.6(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0) - rc-progress: - specifier: ~3.5.1 - version: 3.5.1(react-dom@18.2.0)(react@18.2.0) - rc-rate: - specifier: ~2.12.0 - version: 2.12.0(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: - specifier: ^1.4.0 - version: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-segmented: - specifier: ~2.2.2 - version: 2.2.2(react-dom@18.2.0)(react@18.2.0) - rc-select: - specifier: ~14.10.0 - version: 14.10.0(react-dom@18.2.0)(react@18.2.0) - rc-slider: - specifier: ~10.5.0 - version: 10.5.0(react-dom@18.2.0)(react@18.2.0) - rc-steps: - specifier: ~6.0.1 - version: 6.0.1(react-dom@18.2.0)(react@18.2.0) - rc-switch: - specifier: ~4.1.0 - version: 4.1.0(react-dom@18.2.0)(react@18.2.0) - rc-table: - specifier: ~7.36.1 - version: 7.36.1(react-dom@18.2.0)(react@18.2.0) - rc-tabs: - specifier: ~12.14.1 - version: 12.14.1(react-dom@18.2.0)(react@18.2.0) - rc-textarea: - specifier: ~1.5.3 - version: 1.5.3(react-dom@18.2.0)(react@18.2.0) - rc-tooltip: - specifier: ~6.1.3 - version: 6.1.3(react-dom@18.2.0)(react@18.2.0) - rc-tree: - specifier: ~5.8.2 - version: 5.8.2(react-dom@18.2.0)(react@18.2.0) - rc-tree-select: - specifier: ~5.15.0 - version: 5.15.0(react-dom@18.2.0)(react@18.2.0) - rc-upload: - specifier: ~4.5.2 - version: 4.5.2(react-dom@18.2.0)(react@18.2.0) - rc-util: - specifier: ^5.38.1 - version: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: - specifier: ^18.0.0 - version: 18.2.0 - react-dom: - specifier: ^18.0.0 - version: 18.2.0(react@18.2.0) - react-draggable: - specifier: ^4.4.6 - version: 4.4.6(react-dom@18.2.0)(react@18.2.0) - scroll-into-view-if-needed: - specifier: ^3.1.0 - version: 3.1.0 - devDependencies: - '@types/ali-oss': - specifier: ^6.16.11 - version: 6.16.11 - '@types/fs-extra': - specifier: ^11.0.4 - version: 11.0.4 - '@types/gtag.js': - specifier: ^0.0.18 - version: 0.0.18 - '@types/http-server': - specifier: ^0.12.4 - version: 0.12.4 - '@types/inquirer': - specifier: ^9.0.7 - version: 9.0.7 - '@types/isomorphic-fetch': - specifier: ^0.0.39 - version: 0.0.39 - '@types/jest': - specifier: ^29.5.11 - version: 29.5.12 - '@types/jest-axe': - specifier: ^3.5.9 - version: 3.5.9 - '@types/jest-environment-puppeteer': - specifier: ^5.0.6 - version: 5.0.6 - '@types/jest-image-snapshot': - specifier: ^6.4.0 - version: 6.4.0 - '@types/jquery': - specifier: ^3.5.29 - version: 3.5.29 - '@types/jsdom': - specifier: ^21.1.6 - version: 21.1.6 - '@types/lodash': - specifier: ^4.14.202 - version: 4.14.202 - '@types/minimist': - specifier: ^1.2.5 - version: 1.2.5 - '@types/node': - specifier: ^20.10.6 - version: 20.11.5 - '@types/nprogress': - specifier: ^0.2.3 - version: 0.2.3 - '@types/pixelmatch': - specifier: ^5.2.6 - version: 5.2.6 - '@types/pngjs': - specifier: ^6.0.4 - version: 6.0.4 - '@types/prismjs': - specifier: ^1.26.3 - version: 1.26.3 - '@types/progress': - specifier: ^2.0.7 - version: 2.0.7 - '@types/qs': - specifier: ^6.9.11 - version: 6.9.11 - '@types/react': - specifier: ^18.2.46 - version: 18.2.48 - '@types/react-copy-to-clipboard': - specifier: ^5.0.7 - version: 5.0.7 - '@types/react-dom': - specifier: ^18.2.18 - version: 18.2.18 - '@types/react-highlight-words': - specifier: ^0.16.7 - version: 0.16.7 - '@types/react-resizable': - specifier: ^3.0.7 - version: 3.0.7 - '@types/semver': - specifier: ^7.5.6 - version: 7.5.6 - '@types/tar': - specifier: ^6.1.10 - version: 6.1.11 - '@types/throttle-debounce': - specifier: ^5.0.2 - version: 5.0.2 - '@types/warning': - specifier: ^3.0.3 - version: 3.0.3 - '@typescript-eslint/eslint-plugin': - specifier: ^6.17.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': - specifier: ^6.17.0 - version: 6.21.0(eslint@8.56.0)(typescript@5.3.3) - '@zhst/types': - specifier: workspace:^ - version: link:../types - react-copy-to-clipboard: - specifier: ^5.1.0 - version: 5.1.0(react@18.2.0) - react-countup: - specifier: ^6.5.0 - version: 6.5.0(react@18.2.0) - - packages/request: - dependencies: - antd: - specifier: ^5.12.5 - version: 5.13.2(react-dom@18.2.0)(react@18.2.0) - base-64: - specifier: ^1.0.0 - version: 1.0.0 - lodash-es: - specifier: ^4.17.21 - version: 4.17.21 - umi-request: - specifier: ^1.4.0 - version: 1.4.0 - devDependencies: - '@types/base-64': - specifier: ^1.0.2 - version: 1.0.2 - '@types/lodash-es': - specifier: ^4.17.12 - version: 4.17.12 - '@types/zhst': - specifier: workspace:^ - version: link:../zhst-types - - packages/types: {} - - packages/zhst-types: {} - -packages: - - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - dev: true - - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 - dev: true - - /@ant-design/colors@7.0.2: - resolution: {integrity: sha512-7KJkhTiPiLHSu+LmMJnehfJ6242OCxSlR3xHVBecYxnMW8MS/878NXct1GqYARyL59fyeFdKRxXTfvR9SnDgJg==} - dependencies: - '@ctrl/tinycolor': 3.6.1 - dev: false - - /@ant-design/cssinjs@1.18.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-IrUAOj5TYuMG556C9gdbFuOrigyhzhU5ZYpWb3gYTxAwymVqRbvLzFCZg6OsjLBR6GhzcxYF3AhxKmjB+rA2xA==} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - dependencies: - '@babel/runtime': 7.23.8 - '@emotion/hash': 0.8.0 - '@emotion/unitless': 0.7.5 - classnames: 2.5.1 - csstype: 3.1.3 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - stylis: 4.3.1 - dev: false - - /@ant-design/icons-svg@4.3.2: - resolution: {integrity: sha512-s9WV19cXTC/Tux/XpDru/rCfPZQhGaho36B+9RrN1v5YsaKmE6dJ+fq6LQnXVBVYjzkqykEEK+1XG+SYiottTQ==} - - /@ant-design/icons@5.2.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4wn0WShF43TrggskBJPRqCD0fcHbzTYjnaoskdiJrVHg86yxoZ8ZUqsXvyn4WUqehRiFKnaclOhqk9w4Ui2KVw==} - engines: {node: '>=8'} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - dependencies: - '@ant-design/colors': 7.0.2 - '@ant-design/icons-svg': 4.3.2 - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@ant-design/pro-card@2.5.29(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-QCtqiYZpl1uPFqgPacCkaP+8m5D604WScyfLZBoxIxtpA1SVe0dBIYyeB3cExgxkA7MZZwueeTIyE8B7okqgPw==} - peerDependencies: - antd: ^4.24.15 || ^5.11.2 - react: '>=17.0.0' - dependencies: - '@ant-design/icons': 5.2.6(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-provider': 2.13.5(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-utils': 2.15.4(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@babel/runtime': 7.23.8 - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - omit.js: 2.0.2 - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - react-dom - dev: false - - /@ant-design/pro-components@2.6.49(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-BFgEX92okouwrrOrsit6viDC+rZH56hqvtz3XdCEwH1eWgmk9X8iSn4cpVGJGvI/nmfvcX/ti1mKAaHsLK/jWQ==} - peerDependencies: - antd: ^4.24.15 || ^5.11.2 - react: '>=17.0.0' - react-dom: '>=17.0.0' - dependencies: - '@ant-design/pro-card': 2.5.29(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-descriptions': 2.5.33(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-field': 2.14.6(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-form': 2.24.4(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-layout': 7.17.19(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-list': 2.5.48(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-provider': 2.13.5(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-skeleton': 2.1.10(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-table': 3.14.2(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-utils': 2.15.4(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@babel/runtime': 7.23.8 - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/lodash.merge' - - rc-field-form - dev: false - - /@ant-design/pro-descriptions@2.5.33(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-SpsxEiwEnbMSMynho6vFQLHTKbvYtL9P/hFPNRchhMaNqzPHcWQ9BfPetugeQ0eODmtYlQaIrho8lbd5kBtCLw==} - peerDependencies: - antd: ^4.24.15 || ^5.11.2 - react: '>=17.0.0' - dependencies: - '@ant-design/pro-field': 2.14.6(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-form': 2.24.4(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-skeleton': 2.1.10(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-utils': 2.15.4(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@babel/runtime': 7.23.8 - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 0.2.6(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - '@types/lodash.merge' - - rc-field-form - - react-dom - dev: false - - /@ant-design/pro-field@2.14.6(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-NE7kiWB4ZEqRuVXkTjPBcSgb2Wb6EWGQ+oPb9Qpwo+hLt/IqOv+WVqnDh6O3emuTIaao6ryOBGT1c/ht0qhLgQ==} - peerDependencies: - antd: ^4.24.15 || ^5.11.2 - react: '>=17.0.0' - dependencies: - '@ant-design/icons': 5.2.6(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-provider': 2.13.5(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-utils': 2.15.4(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@babel/runtime': 7.23.8 - '@chenshuai2144/sketch-color': 1.0.9(react@18.2.0) - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - dayjs: 1.11.10 - lodash.tonumber: 4.0.3 - omit.js: 2.0.2 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - swr: 2.2.5(react@18.2.0) - transitivePeerDependencies: - - react-dom - dev: false - - /@ant-design/pro-form@2.24.4(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-WRFkUpMtF8oQKOdqNA6cr4zo97XZybleEfgNnfQyaWfu5VFLCOdTKT0ro+qwRdnNwbwtXCRmomd8HBzDuSCRgA==} - peerDependencies: - '@types/lodash.merge': ^4.6.7 - antd: ^4.24.15 || ^5.11.2 - rc-field-form: ^1.22.0 - react: '>=17.0.0' - react-dom: '>=17.0.0' - peerDependenciesMeta: - '@types/lodash.merge': - optional: true - dependencies: - '@ant-design/icons': 5.2.6(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-field': 2.14.6(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-provider': 2.13.5(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-utils': 2.15.4(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@babel/runtime': 7.23.8 - '@chenshuai2144/sketch-color': 1.0.9(react@18.2.0) - '@umijs/use-params': 1.0.9(react@18.2.0) - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - dayjs: 1.11.10 - lodash.merge: 4.6.2 - omit.js: 2.0.2 - rc-field-form: 1.41.0(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@ant-design/pro-layout@7.17.19(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-X3L+/0Vro9AyN51oGBMz+bfjHjod43wyMJ+7gePiK8ECqYTMZLWGXhrEZnPMY/GCdk0OeGzWD5N9DFuUtwcSLQ==} - peerDependencies: - antd: ^4.24.15 || ^5.11.2 - react: '>=17.0.0' - react-dom: '>=17.0.0' - dependencies: - '@ant-design/icons': 5.2.6(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-provider': 2.13.5(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-utils': 2.15.4(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@babel/runtime': 7.23.8 - '@umijs/route-utils': 4.0.1 - '@umijs/use-params': 1.0.9(react@18.2.0) - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - lodash.merge: 4.6.2 - omit.js: 2.0.2 - path-to-regexp: 2.4.0 - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - swr: 2.2.5(react@18.2.0) - warning: 4.0.3 - dev: false - - /@ant-design/pro-list@2.5.48(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-DJVfj63YcjfPx+TLGfn5w7IoPLeRQAiDnCzBXtUnkTBBYpO+OS1afGgrtWy7SA9OKZLjjkgud4tPBeB+/AYH5A==} - peerDependencies: - antd: ^4.24.15 || ^5.11.2 - react: '>=17.0.0' - react-dom: '>=17.0.0' - dependencies: - '@ant-design/icons': 5.2.6(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-card': 2.5.29(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-field': 2.14.6(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-table': 3.14.2(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-utils': 2.15.4(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@babel/runtime': 7.23.8 - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - dayjs: 1.11.10 - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 4.21.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/lodash.merge' - - rc-field-form - dev: false - - /@ant-design/pro-provider@2.13.5(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ZVmzY2cq4nUvgmAlfgyCAaSZYV2l3n/upIQPXPj8sYcT+N/Pt1CeSVkkgW6By3EqokF6apWdIFU7hZMK2rNhrg==} - peerDependencies: - antd: ^4.24.15 || ^5.11.2 - react: '>=17.0.0' - react-dom: '>=17.0.0' - dependencies: - '@ant-design/cssinjs': 1.18.4(react-dom@18.2.0)(react@18.2.0) - '@babel/runtime': 7.23.8 - '@ctrl/tinycolor': 3.6.1 - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - swr: 2.2.5(react@18.2.0) - dev: false - - /@ant-design/pro-skeleton@2.1.10(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-mrT0lqrwdcAKGWsh8CIiPBnVCwQOg8pNNLUeuVg3zpaKxw6lloUgkrqapmYANHLByamsbrmKNXhR9/OdMOerJw==} - peerDependencies: - antd: ^4.24.15 || ^5.11.2 - react: '>=17.0.0' - react-dom: '>=17.0.0' - dependencies: - '@babel/runtime': 7.23.8 - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@ant-design/pro-table@3.14.2(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-GwS3y6yUo2zXxWShroZb5N68Is10+xMF5mwXbyMxk12SBEaR3Ltld0ljrbO8QsAzQOTpp2B4C2NFDNF4OSrz9g==} - peerDependencies: - antd: ^4.24.15 || ^5.11.2 - rc-field-form: ^1.22.0 - react: '>=17.0.0' - react-dom: '>=17.0.0' - dependencies: - '@ant-design/icons': 5.2.6(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-card': 2.5.29(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-field': 2.14.6(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-form': 2.24.4(antd@5.13.2)(rc-field-form@1.41.0)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-provider': 2.13.5(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-utils': 2.15.4(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@babel/runtime': 7.23.8 - '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0) - '@dnd-kit/modifiers': 6.0.1(@dnd-kit/core@6.1.0)(react@18.2.0) - '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.1.0)(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - dayjs: 1.11.10 - lodash.merge: 4.6.2 - omit.js: 2.0.2 - rc-field-form: 1.41.0(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/lodash.merge' - dev: false - - /@ant-design/pro-utils@2.15.4(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nbacIMl5lbMlNHlaPl2tt/ezvHhnBtGL2KLVaqijLou5zAuZprkHAJnckXoqm9T6X9R2rE4jH96WZHLpJ27nFw==} - peerDependencies: - antd: ^4.24.15 || ^5.11.2 - react: '>=17.0.0' - react-dom: '>=17.0.0' - dependencies: - '@ant-design/icons': 5.2.6(react-dom@18.2.0)(react@18.2.0) - '@ant-design/pro-provider': 2.13.5(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0) - '@babel/runtime': 7.23.8 - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - dayjs: 1.11.10 - lodash.merge: 4.6.2 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - safe-stable-stringify: 2.4.3 - swr: 2.2.5(react@18.2.0) - dev: false - - /@ant-design/react-slick@1.0.2(react@18.2.0): - resolution: {integrity: sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ==} - peerDependencies: - react: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - json2mq: 0.2.0 - react: 18.2.0 - resize-observer-polyfill: 1.5.1 - throttle-debounce: 5.0.0 - dev: false - - /@antfu/install-pkg@0.1.1: - resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} - dependencies: - execa: 5.1.1 - find-up: 5.0.0 - dev: true - - /@antfu/utils@0.7.7: - resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} - dev: true - - /@babel/code-frame@7.23.5: - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - - /@babel/compat-data@7.23.5: - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.23.6: - resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) - '@babel/helpers': 7.23.8 - '@babel/parser': 7.23.6 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/core@7.23.7: - resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) - '@babel/helpers': 7.23.8 - '@babel/parser': 7.23.6 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/eslint-parser@7.23.3(@babel/core@7.23.6)(eslint@8.56.0): - resolution: {integrity: sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 - dependencies: - '@babel/core': 7.23.6 - '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.56.0 - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 - dev: true - - /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.6 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 - jsesc: 2.5.2 - dev: true - - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.2 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.6 - dev: true - - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.6 - dev: true - - /@babel/helper-module-imports@7.22.15: - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.6 - - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.6 - dev: true - - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.6 - dev: true - - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} - engines: {node: '>=6.9.0'} - - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers@7.23.8: - resolution: {integrity: sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - - /@babel/parser@7.23.6: - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.6 - dev: true - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.7): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.7): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.7): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.7): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.7): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.7): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.7): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.7): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.7): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.7): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - dev: true - - /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/runtime@7.23.6: - resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: true - - /@babel/runtime@7.23.8: - resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - dev: true - - /@babel/traverse@7.23.7: - resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types@7.23.6: - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - /@bloomberg/record-tuple-polyfill@0.0.4: - resolution: {integrity: sha512-h0OYmPR3A5Dfbetra/GzxBAzQk8sH7LhRkRUTdagX6nrtlUgJGYCTv4bBK33jsTQw9HDd8PE2x1Ma+iRKEDUsw==} - dev: true - - /@changesets/apply-release-plan@7.0.0: - resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} - dependencies: - '@babel/runtime': 7.23.8 - '@changesets/config': 3.0.0 - '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.5.4 - dev: true - - /@changesets/assemble-release-plan@6.0.0: - resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} - dependencies: - '@babel/runtime': 7.23.8 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - semver: 7.5.4 - dev: true - - /@changesets/changelog-git@0.2.0: - resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} - dependencies: - '@changesets/types': 6.0.0 - dev: true - - /@changesets/cli@2.27.1: - resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} - hasBin: true - dependencies: - '@babel/runtime': 7.23.8 - '@changesets/apply-release-plan': 7.0.0 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.0 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/get-release-plan': 4.0.0 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@changesets/write': 0.3.0 - '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.6 - ansi-colors: 4.1.3 - chalk: 2.4.2 - ci-info: 3.9.0 - enquirer: 2.4.1 - external-editor: 3.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - meow: 6.1.1 - outdent: 0.5.0 - p-limit: 2.3.0 - preferred-pm: 3.1.2 - resolve-from: 5.0.0 - semver: 7.5.4 - spawndamnit: 2.0.0 - term-size: 2.2.1 - tty-table: 4.2.3 - dev: true - - /@changesets/config@3.0.0: - resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==} - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/logger': 0.1.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.5 - dev: true - - /@changesets/errors@0.2.0: - resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - dependencies: - extendable-error: 0.1.7 - dev: true - - /@changesets/get-dependents-graph@2.0.0: - resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==} - dependencies: - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 7.5.4 - dev: true - - /@changesets/get-release-plan@4.0.0: - resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} - dependencies: - '@babel/runtime': 7.23.8 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/config': 3.0.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - dev: true - - /@changesets/get-version-range-type@0.4.0: - resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - dev: true - - /@changesets/git@3.0.0: - resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} - dependencies: - '@babel/runtime': 7.23.8 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.5 - spawndamnit: 2.0.0 - dev: true - - /@changesets/logger@0.1.0: - resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} - dependencies: - chalk: 2.4.2 - dev: true - - /@changesets/parse@0.4.0: - resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} - dependencies: - '@changesets/types': 6.0.0 - js-yaml: 3.14.1 - dev: true - - /@changesets/pre@2.0.0: - resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} - dependencies: - '@babel/runtime': 7.23.8 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - dev: true - - /@changesets/read@0.6.0: - resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} - dependencies: - '@babel/runtime': 7.23.8 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/parse': 0.4.0 - '@changesets/types': 6.0.0 - chalk: 2.4.2 - fs-extra: 7.0.1 - p-filter: 2.1.0 - dev: true - - /@changesets/types@4.1.0: - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - dev: true - - /@changesets/types@6.0.0: - resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} - dev: true - - /@changesets/write@0.3.0: - resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} - dependencies: - '@babel/runtime': 7.23.8 - '@changesets/types': 6.0.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 2.8.8 - dev: true - - /@chenshuai2144/sketch-color@1.0.9(react@18.2.0): - resolution: {integrity: sha512-obzSy26cb7Pm7OprWyVpgMpIlrZpZ0B7vbrU0RMbvRg0YAI890S5Xy02Aj1Nhl4+KTbi1lVYHt6HQP8Hm9s+1w==} - peerDependencies: - react: '>=16.12.0' - dependencies: - react: 18.2.0 - reactcss: 1.2.3(react@18.2.0) - tinycolor2: 1.6.0 - dev: false - - /@commitlint/cli@17.8.1: - resolution: {integrity: sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==} - engines: {node: '>=v14'} - hasBin: true - dependencies: - '@commitlint/format': 17.8.1 - '@commitlint/lint': 17.8.1 - '@commitlint/load': 17.8.1 - '@commitlint/read': 17.8.1 - '@commitlint/types': 17.8.1 - execa: 5.1.1 - lodash.isfunction: 3.0.9 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - dev: true - - /@commitlint/config-conventional@17.8.1: - resolution: {integrity: sha512-NxCOHx1kgneig3VLauWJcDWS40DVjg7nKOpBEEK9E5fjJpQqLCilcnKkIIjdBH98kEO1q3NpE5NSrZ2kl/QGJg==} - engines: {node: '>=v14'} - dependencies: - conventional-changelog-conventionalcommits: 6.1.0 - dev: true - - /@commitlint/config-validator@17.8.1: - resolution: {integrity: sha512-UUgUC+sNiiMwkyiuIFR7JG2cfd9t/7MV8VB4TZ+q02ZFkHoduUS4tJGsCBWvBOGD9Btev6IecPMvlWUfJorkEA==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/types': 17.8.1 - ajv: 8.12.0 - dev: true - - /@commitlint/ensure@17.8.1: - resolution: {integrity: sha512-xjafwKxid8s1K23NFpL8JNo6JnY/ysetKo8kegVM7c8vs+kWLP8VrQq+NbhgVlmCojhEDbzQKp4eRXSjVOGsow==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/types': 17.8.1 - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - lodash.snakecase: 4.1.1 - lodash.startcase: 4.4.0 - lodash.upperfirst: 4.3.1 - dev: true - - /@commitlint/execute-rule@17.8.1: - resolution: {integrity: sha512-JHVupQeSdNI6xzA9SqMF+p/JjrHTcrJdI02PwesQIDCIGUrv04hicJgCcws5nzaoZbROapPs0s6zeVHoxpMwFQ==} - engines: {node: '>=v14'} - dev: true - - /@commitlint/format@17.8.1: - resolution: {integrity: sha512-f3oMTyZ84M9ht7fb93wbCKmWxO5/kKSbwuYvS867duVomoOsgrgljkGGIztmT/srZnaiGbaK8+Wf8Ik2tSr5eg==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/types': 17.8.1 - chalk: 4.1.2 - dev: true - - /@commitlint/is-ignored@17.8.1: - resolution: {integrity: sha512-UshMi4Ltb4ZlNn4F7WtSEugFDZmctzFpmbqvpyxD3la510J+PLcnyhf9chs7EryaRFJMdAKwsEKfNK0jL/QM4g==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/types': 17.8.1 - semver: 7.5.4 - dev: true - - /@commitlint/lint@17.8.1: - resolution: {integrity: sha512-aQUlwIR1/VMv2D4GXSk7PfL5hIaFSfy6hSHV94O8Y27T5q+DlDEgd/cZ4KmVI+MWKzFfCTiTuWqjfRSfdRllCA==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/is-ignored': 17.8.1 - '@commitlint/parse': 17.8.1 - '@commitlint/rules': 17.8.1 - '@commitlint/types': 17.8.1 - dev: true - - /@commitlint/load@17.8.1: - resolution: {integrity: sha512-iF4CL7KDFstP1kpVUkT8K2Wl17h2yx9VaR1ztTc8vzByWWcbO/WaKwxsnCOqow9tVAlzPfo1ywk9m2oJ9ucMqA==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/config-validator': 17.8.1 - '@commitlint/execute-rule': 17.8.1 - '@commitlint/resolve-extends': 17.8.1 - '@commitlint/types': 17.8.1 - '@types/node': 20.5.1 - chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@5.3.3) - cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.2)(typescript@5.3.3) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - resolve-from: 5.0.0 - ts-node: 10.9.2(@types/node@20.5.1)(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - dev: true - - /@commitlint/message@17.8.1: - resolution: {integrity: sha512-6bYL1GUQsD6bLhTH3QQty8pVFoETfFQlMn2Nzmz3AOLqRVfNNtXBaSY0dhZ0dM6A2MEq4+2d7L/2LP8TjqGRkA==} - engines: {node: '>=v14'} - dev: true - - /@commitlint/parse@17.8.1: - resolution: {integrity: sha512-/wLUickTo0rNpQgWwLPavTm7WbwkZoBy3X8PpkUmlSmQJyWQTj0m6bDjiykMaDt41qcUbfeFfaCvXfiR4EGnfw==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/types': 17.8.1 - conventional-changelog-angular: 6.0.0 - conventional-commits-parser: 4.0.0 - dev: true - - /@commitlint/read@17.8.1: - resolution: {integrity: sha512-Fd55Oaz9irzBESPCdMd8vWWgxsW3OWR99wOntBDHgf9h7Y6OOHjWEdS9Xzen1GFndqgyoaFplQS5y7KZe0kO2w==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/top-level': 17.8.1 - '@commitlint/types': 17.8.1 - fs-extra: 11.2.0 - git-raw-commits: 2.0.11 - minimist: 1.2.8 - dev: true - - /@commitlint/resolve-extends@17.8.1: - resolution: {integrity: sha512-W/ryRoQ0TSVXqJrx5SGkaYuAaE/BUontL1j1HsKckvM6e5ZaG0M9126zcwL6peKSuIetJi7E87PRQF8O86EW0Q==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/config-validator': 17.8.1 - '@commitlint/types': 17.8.1 - import-fresh: 3.3.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - dev: true - - /@commitlint/rules@17.8.1: - resolution: {integrity: sha512-2b7OdVbN7MTAt9U0vKOYKCDsOvESVXxQmrvuVUZ0rGFMCrCPJWWP1GJ7f0lAypbDAhaGb8zqtdOr47192LBrIA==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/ensure': 17.8.1 - '@commitlint/message': 17.8.1 - '@commitlint/to-lines': 17.8.1 - '@commitlint/types': 17.8.1 - execa: 5.1.1 - dev: true - - /@commitlint/to-lines@17.8.1: - resolution: {integrity: sha512-LE0jb8CuR/mj6xJyrIk8VLz03OEzXFgLdivBytoooKO5xLt5yalc8Ma5guTWobw998sbR3ogDd+2jed03CFmJA==} - engines: {node: '>=v14'} - dev: true - - /@commitlint/top-level@17.8.1: - resolution: {integrity: sha512-l6+Z6rrNf5p333SHfEte6r+WkOxGlWK4bLuZKbtf/2TXRN+qhrvn1XE63VhD8Oe9oIHQ7F7W1nG2k/TJFhx2yA==} - engines: {node: '>=v14'} - dependencies: - find-up: 5.0.0 - dev: true - - /@commitlint/types@17.8.1: - resolution: {integrity: sha512-PXDQXkAmiMEG162Bqdh9ChML/GJZo6vU+7F03ALKDK8zYc6SuAr47LjG7hGYRqUOz+WK0dU7bQ0xzuqFMdxzeQ==} - engines: {node: '>=v14'} - dependencies: - chalk: 4.1.2 - dev: true - - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: true - - /@csstools/postcss-color-function@1.1.1(postcss@8.4.33): - resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /@csstools/postcss-font-format-keywords@1.0.1(postcss@8.4.33): - resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /@csstools/postcss-hwb-function@1.0.2(postcss@8.4.33): - resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /@csstools/postcss-ic-unit@1.0.1(postcss@8.4.33): - resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /@csstools/postcss-is-pseudo-class@2.0.7(postcss@8.4.33): - resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.15) - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 - dev: true - - /@csstools/postcss-normalize-display-values@1.0.1(postcss@8.4.33): - resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /@csstools/postcss-oklab-function@1.1.1(postcss@8.4.33): - resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /@csstools/postcss-progressive-custom-properties@1.3.0(postcss@8.4.33): - resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.3 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /@csstools/postcss-stepped-value-functions@1.0.1(postcss@8.4.33): - resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /@csstools/postcss-unset-value@1.0.2(postcss@8.4.33): - resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - dev: true - - /@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.0.15): - resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss-selector-parser: ^6.0.10 - dependencies: - postcss-selector-parser: 6.0.15 - dev: true - - /@ctrl/tinycolor@3.6.1: - resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} - engines: {node: '>=10'} - dev: false - - /@ctrl/tinycolor@4.0.3: - resolution: {integrity: sha512-e9nEVehVJwkymQpkGhdSNzLT2Lr9UTTby+JePq4Z2SxBbOQjY7pLgSouAaXvfaGQVSAaY0U4eJdwfSDmCbItcw==} - engines: {node: '>=14'} - dev: false - - /@dnd-kit/accessibility@3.1.0(react@18.2.0): - resolution: {integrity: sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==} - peerDependencies: - react: '>=16.8.0' - dependencies: - react: 18.2.0 - tslib: 2.6.2 - dev: false - - /@dnd-kit/core@6.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - dependencies: - '@dnd-kit/accessibility': 3.1.0(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 - dev: false - - /@dnd-kit/modifiers@6.0.1(@dnd-kit/core@6.1.0)(react@18.2.0): - resolution: {integrity: sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==} - peerDependencies: - '@dnd-kit/core': ^6.0.6 - react: '>=16.8.0' - dependencies: - '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - react: 18.2.0 - tslib: 2.6.2 - dev: false - - /@dnd-kit/sortable@7.0.2(@dnd-kit/core@6.1.0)(react@18.2.0): - resolution: {integrity: sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==} - peerDependencies: - '@dnd-kit/core': ^6.0.7 - react: '>=16.8.0' - dependencies: - '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - react: 18.2.0 - tslib: 2.6.2 - dev: false - - /@dnd-kit/utilities@3.2.2(react@18.2.0): - resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} - peerDependencies: - react: '>=16.8.0' - dependencies: - react: 18.2.0 - tslib: 2.6.2 - dev: false - - /@emotion/babel-plugin@11.11.0: - resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} - dependencies: - '@babel/helper-module-imports': 7.22.15 - '@babel/runtime': 7.23.8 - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/serialize': 1.1.3 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.9.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.2.0 - dev: false - - /@emotion/cache@11.11.0: - resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} - dependencies: - '@emotion/memoize': 0.8.1 - '@emotion/sheet': 1.2.2 - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 - stylis: 4.2.0 - dev: false - - /@emotion/css@11.11.2: - resolution: {integrity: sha512-VJxe1ucoMYMS7DkiMdC2T7PWNbrEI0a39YRiyDvK2qq4lXwjRbVP/z4lpG+odCsRzadlR+1ywwrTzhdm5HNdew==} - dependencies: - '@emotion/babel-plugin': 11.11.0 - '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.3 - '@emotion/sheet': 1.2.2 - '@emotion/utils': 1.2.1 - dev: false - - /@emotion/hash@0.8.0: - resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} - dev: false - - /@emotion/hash@0.9.1: - resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} - dev: false - - /@emotion/memoize@0.8.1: - resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} - dev: false - - /@emotion/react@11.11.3(@types/react@18.2.48)(react@18.2.0): - resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==} - peerDependencies: - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.8 - '@emotion/babel-plugin': 11.11.0 - '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 - '@types/react': 18.2.48 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - dev: false - - /@emotion/serialize@1.1.3: - resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} - dependencies: - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/unitless': 0.8.1 - '@emotion/utils': 1.2.1 - csstype: 3.1.3 - dev: false - - /@emotion/server@11.11.0(@emotion/css@11.11.2): - resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} - peerDependencies: - '@emotion/css': ^11.0.0-rc.0 - peerDependenciesMeta: - '@emotion/css': - optional: true - dependencies: - '@emotion/css': 11.11.2 - '@emotion/utils': 1.2.1 - html-tokenize: 2.0.1 - multipipe: 1.0.2 - through: 2.3.8 - dev: false - - /@emotion/sheet@1.2.2: - resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} - dev: false - - /@emotion/unitless@0.7.5: - resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} - dev: false - - /@emotion/unitless@0.8.1: - resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} - dev: false - - /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0): - resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} - peerDependencies: - react: '>=16.8.0' - dependencies: - react: 18.2.0 - dev: false - - /@emotion/utils@1.2.1: - resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} - dev: false - - /@emotion/weak-memoize@0.3.1: - resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} - dev: false - - /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-x64@0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-arm64@0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-x64@0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-arm64@0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64@0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ia32@0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-mips64el@0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64@0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-riscv64@0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-s390x@0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64@0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32@0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64@0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.56.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.0 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@8.56.0: - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@floating-ui/core@0.6.2: - resolution: {integrity: sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg==} - dev: true - - /@floating-ui/dom@0.4.5: - resolution: {integrity: sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw==} - dependencies: - '@floating-ui/core': 0.6.2 - dev: true - - /@floating-ui/react-dom-interactions@0.3.1(@types/react@18.2.48)(react-dom@18.1.0)(react@18.1.0): - resolution: {integrity: sha512-tP2KEh7EHJr5hokSBHcPGojb+AorDNUf0NYfZGg/M+FsMvCOOsSEeEF0O1NDfETIzDnpbHnCs0DuvCFhSMSStg==} - deprecated: Package renamed to @floating-ui/react - dependencies: - '@floating-ui/react-dom': 0.6.3(@types/react@18.2.48)(react-dom@18.1.0)(react@18.1.0) - aria-hidden: 1.2.3 - point-in-polygon: 1.1.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.48)(react@18.1.0) - transitivePeerDependencies: - - '@types/react' - - react - - react-dom - dev: true - - /@floating-ui/react-dom@0.6.3(@types/react@18.2.48)(react-dom@18.1.0)(react@18.1.0): - resolution: {integrity: sha512-hC+pS5D6AgS2wWjbmSQ6UR6Kpy+drvWGJIri6e1EDGADTPsCaa4KzCgmCczHrQeInx9tqs81EyDmbKJYY2swKg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - dependencies: - '@floating-ui/dom': 0.4.5 - react: 18.1.0 - react-dom: 18.1.0(react@18.1.0) - use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.48)(react@18.1.0) - transitivePeerDependencies: - - '@types/react' - dev: true - - /@formatjs/ecma402-abstract@1.18.2: - resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==} - dependencies: - '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.2 - dev: true - - /@formatjs/fast-memoize@2.2.0: - resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} - dependencies: - tslib: 2.6.2 - dev: true - - /@formatjs/icu-messageformat-parser@2.7.5: - resolution: {integrity: sha512-zCB53HdGDibh6/2ISEN3TGsFQruQ6gGKMFV94qHNyVrs0tNO6ncKhV0vq0n3Ydz8ipIQ2GaYAvfCoimNOVvKqA==} - dependencies: - '@formatjs/ecma402-abstract': 1.18.2 - '@formatjs/icu-skeleton-parser': 1.7.2 - tslib: 2.6.2 - dev: true - - /@formatjs/icu-skeleton-parser@1.7.2: - resolution: {integrity: sha512-nlIXVv280bjGW3ail5Np1+xgGKBnMhwQQIivgbk9xX0af8ESQO+y2VW9TOY7mCrs3WH786uVpZlLimXAlXH7SA==} - dependencies: - '@formatjs/ecma402-abstract': 1.18.2 - tslib: 2.6.2 - dev: true - - /@formatjs/intl-displaynames@6.6.6: - resolution: {integrity: sha512-Dg5URSjx0uzF8VZXtHb6KYZ6LFEEhCbAbKoYChYHEOnMFTw/ZU3jIo/NrujzQD2EfKPgQzIq73LOUvW6Z/LpFA==} - dependencies: - '@formatjs/ecma402-abstract': 1.18.2 - '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.2 - dev: true - - /@formatjs/intl-listformat@7.5.5: - resolution: {integrity: sha512-XoI52qrU6aBGJC9KJddqnacuBbPlb/bXFN+lIFVFhQ1RnFHpzuFrlFdjD9am2O7ZSYsyqzYRpkVcXeT1GHkwDQ==} - dependencies: - '@formatjs/ecma402-abstract': 1.18.2 - '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.2 - dev: true - - /@formatjs/intl-localematcher@0.5.4: - resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} - dependencies: - tslib: 2.6.2 - dev: true - - /@formatjs/intl@2.9.11(typescript@5.3.3): - resolution: {integrity: sha512-wJF5GKuopgeKy75e11JPjueC/XKAxrOndqVEZqg5zDrGuxALUD6Vo/x+oDTQwVZYf2zJnEzqZlUGtv5gSi/ChQ==} - peerDependencies: - typescript: ^4.7 || 5 - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@formatjs/ecma402-abstract': 1.18.2 - '@formatjs/fast-memoize': 2.2.0 - '@formatjs/icu-messageformat-parser': 2.7.5 - '@formatjs/intl-displaynames': 6.6.6 - '@formatjs/intl-listformat': 7.5.5 - intl-messageformat: 10.5.10 - tslib: 2.6.2 - typescript: 5.3.3 - dev: true - - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} - dev: true - - /@hutson/parse-repository-url@3.0.2: - resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} - engines: {node: '>=6.9.0'} - dev: true - - /@iconify/types@2.0.0: - resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - dev: true - - /@iconify/utils@2.1.1: - resolution: {integrity: sha512-H8xz74JDzDw8f0qLxwIaxFMnFkbXTZNWEufOk3WxaLFHV4h0A2FjIDgNk5LzC0am4jssnjdeJJdRs3UFu3582Q==} - dependencies: - '@antfu/install-pkg': 0.1.1 - '@antfu/utils': 0.7.7 - '@iconify/types': 2.0.0 - debug: 4.3.4 - kolorist: 1.8.0 - local-pkg: 0.4.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: true - - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true - - /@jest/environment@27.5.1: - resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.11.5 - jest-mock: 27.5.1 - dev: true - - /@jest/expect-utils@29.7.0: - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.6.3 - dev: true - - /@jest/fake-timers@27.5.1: - resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@sinonjs/fake-timers': 8.1.0 - '@types/node': 20.11.5 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-util: 27.5.1 - dev: true - - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - dev: true - - /@jest/transform@29.7.0: - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.23.7 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.22 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.5 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/types@27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.5 - '@types/yargs': 16.0.9 - chalk: 4.1.2 - dev: true - - /@jest/types@29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.5 - '@types/yargs': 17.0.32 - chalk: 4.1.2 - dev: true - - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 - dev: true - - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/source-map@0.3.5: - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true - - /@jridgewell/trace-mapping@0.3.22: - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - - /@lerna/create@8.0.2(typescript@5.3.3): - resolution: {integrity: sha512-AueSlfiYXqEmy9/EIc17mjlaHFuv734dfgVBegyoefIA7hdeoExtsXnACWf8Tw5af6gwyTL3KAp6QQyc1sTuZQ==} - engines: {node: '>=18.0.0'} - dependencies: - '@npmcli/run-script': 7.0.2 - '@nx/devkit': 17.2.8(nx@17.2.8) - '@octokit/plugin-enterprise-rest': 6.0.1 - '@octokit/rest': 19.0.11 - byte-size: 8.1.1 - chalk: 4.1.0 - clone-deep: 4.0.1 - cmd-shim: 6.0.1 - columnify: 1.6.0 - conventional-changelog-core: 5.0.1 - conventional-recommended-bump: 7.0.1 - cosmiconfig: 8.3.6(typescript@5.3.3) - dedent: 0.7.0 - execa: 5.0.0 - fs-extra: 11.2.0 - get-stream: 6.0.0 - git-url-parse: 13.1.0 - glob-parent: 5.1.2 - globby: 11.1.0 - graceful-fs: 4.2.11 - has-unicode: 2.0.1 - ini: 1.3.8 - init-package-json: 5.0.0 - inquirer: 8.2.6 - is-ci: 3.0.1 - is-stream: 2.0.0 - js-yaml: 4.1.0 - libnpmpublish: 7.3.0 - load-json-file: 6.2.0 - lodash: 4.17.21 - make-dir: 4.0.0 - minimatch: 3.0.5 - multimatch: 5.0.0 - node-fetch: 2.6.7 - npm-package-arg: 8.1.1 - npm-packlist: 5.1.1 - npm-registry-fetch: 14.0.5 - npmlog: 6.0.2 - nx: 17.2.8 - p-map: 4.0.0 - p-map-series: 2.1.0 - p-queue: 6.6.2 - p-reduce: 2.1.0 - pacote: 17.0.6 - pify: 5.0.0 - read-cmd-shim: 4.0.0 - read-package-json: 6.0.4 - resolve-from: 5.0.0 - rimraf: 4.4.1 - semver: 7.5.4 - signal-exit: 3.0.7 - slash: 3.0.0 - ssri: 9.0.1 - strong-log-transformer: 2.1.0 - tar: 6.1.11 - temp-dir: 1.0.0 - upath: 2.0.1 - uuid: 9.0.1 - validate-npm-package-license: 3.0.4 - validate-npm-package-name: 5.0.0 - write-file-atomic: 5.0.1 - write-pkg: 4.0.0 - yargs: 17.7.2 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - bluebird - - debug - - encoding - - supports-color - - typescript - dev: true - - /@loadable/component@5.15.2(react@18.1.0): - resolution: {integrity: sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==} - engines: {node: '>=8'} - peerDependencies: - react: '>=16.3.0' - dependencies: - '@babel/runtime': 7.23.8 - hoist-non-react-statics: 3.3.2 - react: 18.1.0 - react-is: 16.13.1 - dev: true - - /@loadable/component@5.15.2(react@18.2.0): - resolution: {integrity: sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==} - engines: {node: '>=8'} - peerDependencies: - react: '>=16.3.0' - dependencies: - '@babel/runtime': 7.23.8 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - react-is: 16.13.1 - dev: true - - /@makotot/ghostui@2.0.0(react@18.2.0): - resolution: {integrity: sha512-LD6OeMv+yGjpYZNjh34yDTCIE1NegqOtJq5gm4wX6op3QL7K5psTVzMjkWzseBoYj0XOD4g+UJVIZTprfoOPGg==} - engines: {node: '>=10'} - peerDependencies: - react: '>=16' - dependencies: - react: 18.2.0 - dev: true - - /@manypkg/find-root@1.1.0: - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - dependencies: - '@babel/runtime': 7.23.8 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 - dev: true - - /@manypkg/get-packages@1.1.3: - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - dependencies: - '@babel/runtime': 7.23.8 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - dev: true - - /@microsoft/api-extractor-model@7.27.5(@types/node@20.5.1): - resolution: {integrity: sha512-9/tBzYMJitR+o+zkPr1lQh2+e8ClcaTF6eZo7vZGDqRt2O5XmXWPbYJZmxyM3wb5at6lfJNEeGZrQXLjsQ0Nbw==} - dependencies: - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.6(@types/node@20.5.1) - transitivePeerDependencies: - - '@types/node' - dev: true - - /@microsoft/api-extractor@7.36.3(@types/node@20.5.1): - resolution: {integrity: sha512-u0H6362AQq+r55X8drHx4npgkrCfJnMzRRHfQo8PMNKB8TcBnrTLfXhXWi+xnTM6CzlU/netEN8c4bq581Rnrg==} - hasBin: true - dependencies: - '@microsoft/api-extractor-model': 7.27.5(@types/node@20.5.1) - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.6(@types/node@20.5.1) - '@rushstack/rig-package': 0.4.0 - '@rushstack/ts-command-line': 4.15.1 - colors: 1.2.5 - lodash: 4.17.21 - resolve: 1.22.8 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.0.4 - transitivePeerDependencies: - - '@types/node' - dev: true - - /@microsoft/tsdoc-config@0.16.2: - resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} - dependencies: - '@microsoft/tsdoc': 0.14.2 - ajv: 6.12.6 - jju: 1.4.0 - resolve: 1.19.0 - dev: true - - /@microsoft/tsdoc@0.14.2: - resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} - dev: true - - /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: - resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} - dependencies: - eslint-scope: 5.1.1 - dev: true - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.16.0 - dev: true - - /@npmcli/agent@2.2.0: - resolution: {integrity: sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - agent-base: 7.1.0 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 - lru-cache: 10.1.0 - socks-proxy-agent: 8.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@npmcli/fs@3.1.0: - resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - semver: 7.5.4 - dev: true - - /@npmcli/git@5.0.4: - resolution: {integrity: sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@npmcli/promise-spawn': 7.0.1 - lru-cache: 10.1.0 - npm-pick-manifest: 9.0.0 - proc-log: 3.0.0 - promise-inflight: 1.0.1(bluebird@3.7.2) - promise-retry: 2.0.1 - semver: 7.5.4 - which: 4.0.0 - transitivePeerDependencies: - - bluebird - dev: true - - /@npmcli/installed-package-contents@2.0.2: - resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - dependencies: - npm-bundled: 3.0.0 - npm-normalize-package-bin: 3.0.1 - dev: true - - /@npmcli/node-gyp@3.0.0: - resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /@npmcli/promise-spawn@7.0.1: - resolution: {integrity: sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - which: 4.0.0 - dev: true - - /@npmcli/run-script@7.0.2: - resolution: {integrity: sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@npmcli/node-gyp': 3.0.0 - '@npmcli/promise-spawn': 7.0.1 - node-gyp: 10.0.1 - read-package-json-fast: 3.0.2 - which: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@nrwl/devkit@17.2.8(nx@17.2.8): - resolution: {integrity: sha512-l2dFy5LkWqSA45s6pee6CoqJeluH+sjRdVnAAQfjLHRNSx6mFAKblyzq5h1f4P0EUCVVVqLs+kVqmNx5zxYqvw==} - dependencies: - '@nx/devkit': 17.2.8(nx@17.2.8) - transitivePeerDependencies: - - nx - dev: true - - /@nrwl/tao@17.2.8: - resolution: {integrity: sha512-Qpk5YKeJ+LppPL/wtoDyNGbJs2MsTi6qyX/RdRrEc8lc4bk6Cw3Oul1qTXCI6jT0KzTz+dZtd0zYD/G7okkzvg==} - hasBin: true - dependencies: - nx: 17.2.8 - tslib: 2.6.2 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - debug - dev: true - - /@nx/devkit@17.2.8(nx@17.2.8): - resolution: {integrity: sha512-6LtiQihtZwqz4hSrtT5cCG5XMCWppG6/B8c1kNksg97JuomELlWyUyVF+sxmeERkcLYFaKPTZytP0L3dmCFXaw==} - peerDependencies: - nx: '>= 16 <= 18' - dependencies: - '@nrwl/devkit': 17.2.8(nx@17.2.8) - ejs: 3.1.9 - enquirer: 2.3.6 - ignore: 5.3.0 - nx: 17.2.8 - semver: 7.5.3 - tmp: 0.2.1 - tslib: 2.6.2 - dev: true - - /@nx/nx-darwin-arm64@17.2.8: - resolution: {integrity: sha512-dMb0uxug4hM7tusISAU1TfkDK3ixYmzc1zhHSZwpR7yKJIyKLtUpBTbryt8nyso37AS1yH+dmfh2Fj2WxfBHTg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@nx/nx-darwin-x64@17.2.8: - resolution: {integrity: sha512-0cXzp1tGr7/6lJel102QiLA4NkaLCkQJj6VzwbwuvmuCDxPbpmbz7HC1tUteijKBtOcdXit1/MEoEU007To8Bw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@nx/nx-freebsd-x64@17.2.8: - resolution: {integrity: sha512-YFMgx5Qpp2btCgvaniDGdu7Ctj56bfFvbbaHQWmOeBPK1krNDp2mqp8HK6ZKOfEuDJGOYAp7HDtCLvdZKvJxzA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@nx/nx-linux-arm-gnueabihf@17.2.8: - resolution: {integrity: sha512-iN2my6MrhLRkVDtdivQHugK8YmR7URo1wU9UDuHQ55z3tEcny7LV3W9NSsY9UYPK/FrxdDfevj0r2hgSSdhnzA==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@nx/nx-linux-arm64-gnu@17.2.8: - resolution: {integrity: sha512-Iy8BjoW6mOKrSMiTGujUcNdv+xSM1DALTH6y3iLvNDkGbjGK1Re6QNnJAzqcXyDpv32Q4Fc57PmuexyysZxIGg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - requiresBuild: true - dev: true - optional: true - - /@nx/nx-linux-arm64-musl@17.2.8: - resolution: {integrity: sha512-9wkAxWzknjpzdofL1xjtU6qPFF1PHlvKCZI3hgEYJDo4mQiatGI+7Ttko+lx/ZMP6v4+Umjtgq7+qWrApeKamQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - requiresBuild: true - dev: true - optional: true - - /@nx/nx-linux-x64-gnu@17.2.8: - resolution: {integrity: sha512-sjG1bwGsjLxToasZ3lShildFsF0eyeGu+pOQZIp9+gjFbeIkd19cTlCnHrOV9hoF364GuKSXQyUlwtFYFR4VTQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - requiresBuild: true - dev: true - optional: true - - /@nx/nx-linux-x64-musl@17.2.8: - resolution: {integrity: sha512-QiakXZ1xBCIptmkGEouLHQbcM4klQkcr+kEaz2PlNwy/sW3gH1b/1c0Ed5J1AN9xgQxWspriAONpScYBRgxdhA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - requiresBuild: true - dev: true - optional: true - - /@nx/nx-win32-arm64-msvc@17.2.8: - resolution: {integrity: sha512-XBWUY/F/GU3vKN9CAxeI15gM4kr3GOBqnzFZzoZC4qJt2hKSSUEWsMgeZtsMgeqEClbi4ZyCCkY7YJgU32WUGA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@nx/nx-win32-x64-msvc@17.2.8: - resolution: {integrity: sha512-HTqDv+JThlLzbcEm/3f+LbS5/wYQWzb5YDXbP1wi7nlCTihNZOLNqGOkEmwlrR5tAdNHPRpHSmkYg4305W0CtA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@octokit/auth-token@3.0.4: - resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==} - engines: {node: '>= 14'} - dev: true - - /@octokit/core@4.2.4: - resolution: {integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==} - engines: {node: '>= 14'} - dependencies: - '@octokit/auth-token': 3.0.4 - '@octokit/graphql': 5.0.6 - '@octokit/request': 6.2.8 - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.3.2 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - dev: true - - /@octokit/endpoint@7.0.6: - resolution: {integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==} - engines: {node: '>= 14'} - dependencies: - '@octokit/types': 9.3.2 - is-plain-object: 5.0.0 - universal-user-agent: 6.0.1 - dev: true - - /@octokit/graphql@5.0.6: - resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==} - engines: {node: '>= 14'} - dependencies: - '@octokit/request': 6.2.8 - '@octokit/types': 9.3.2 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - dev: true - - /@octokit/openapi-types@18.1.1: - resolution: {integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==} - dev: true - - /@octokit/plugin-enterprise-rest@6.0.1: - resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==} - dev: true - - /@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4): - resolution: {integrity: sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==} - engines: {node: '>= 14'} - peerDependencies: - '@octokit/core': '>=4' - dependencies: - '@octokit/core': 4.2.4 - '@octokit/tsconfig': 1.0.2 - '@octokit/types': 9.3.2 - dev: true - - /@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.4): - resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} - peerDependencies: - '@octokit/core': '>=3' - dependencies: - '@octokit/core': 4.2.4 - dev: true - - /@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4): - resolution: {integrity: sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==} - engines: {node: '>= 14'} - peerDependencies: - '@octokit/core': '>=3' - dependencies: - '@octokit/core': 4.2.4 - '@octokit/types': 10.0.0 - dev: true - - /@octokit/request-error@3.0.3: - resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} - engines: {node: '>= 14'} - dependencies: - '@octokit/types': 9.3.2 - deprecation: 2.3.1 - once: 1.4.0 - dev: true - - /@octokit/request@6.2.8: - resolution: {integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==} - engines: {node: '>= 14'} - dependencies: - '@octokit/endpoint': 7.0.6 - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.3.2 - is-plain-object: 5.0.0 - node-fetch: 2.6.7 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - dev: true - - /@octokit/rest@19.0.11: - resolution: {integrity: sha512-m2a9VhaP5/tUw8FwfnW2ICXlXpLPIqxtg3XcAiGMLj/Xhw3RSBfZ8le/466ktO1Gcjr8oXudGnHhxV1TXJgFxw==} - engines: {node: '>= 14'} - dependencies: - '@octokit/core': 4.2.4 - '@octokit/plugin-paginate-rest': 6.1.2(@octokit/core@4.2.4) - '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4) - '@octokit/plugin-rest-endpoint-methods': 7.2.3(@octokit/core@4.2.4) - transitivePeerDependencies: - - encoding - dev: true - - /@octokit/tsconfig@1.0.2: - resolution: {integrity: sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==} - dev: true - - /@octokit/types@10.0.0: - resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==} - dependencies: - '@octokit/openapi-types': 18.1.1 - dev: true - - /@octokit/types@9.3.2: - resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} - dependencies: - '@octokit/openapi-types': 18.1.1 - dev: true - - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true - dev: true - optional: true - - /@pkgr/core@0.1.1: - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true - - /@pkgr/utils@2.4.2: - resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.3.2 - is-glob: 4.0.3 - open: 9.1.0 - picocolors: 1.0.0 - tslib: 2.6.2 - dev: true - - /@rc-component/color-picker@1.5.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-onyAFhWKXuG4P162xE+7IgaJkPkwM94XlOYnQuu69XdXWMfxpeFi6tpJBsieIMV7EnyLV5J3lDzdLiFeK0iEBA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@ctrl/tinycolor': 3.6.1 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@rc-component/context@1.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@rc-component/mini-decimal@1.1.0: - resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} - engines: {node: '>=8.x'} - dependencies: - '@babel/runtime': 7.23.8 - dev: false - - /@rc-component/mutate-observer@1.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@rc-component/portal@1.1.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - /@rc-component/tour@1.12.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-U4mf1FiUxGCwrX4ed8op77Y8VKur+8Y/61ylxtqGbcSoh1EBC7bWd/DkLu0ClTUrKZInqEi1FL7YgFtnT90vHA==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) - '@rc-component/trigger': 1.18.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@rc-component/trigger@1.18.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jRLYgFgjLEPq3MvS87fIhcfuywFSRDaDrYw1FLku7Cm4esszvzTbA0JBsyacAyLrK9rF3TiHFcvoEDMzoD3CTA==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - /@remix-run/router@1.14.2: - resolution: {integrity: sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==} - engines: {node: '>=14.0.0'} - dev: false - - /@rushstack/node-core-library@3.59.6(@types/node@20.5.1): - resolution: {integrity: sha512-bMYJwNFfWXRNUuHnsE9wMlW/mOB4jIwSUkRKtu02CwZhQdmzMsUbxE0s1xOLwTpNIwlzfW/YT7OnOHgDffLgYg==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@types/node': 20.5.1 - colors: 1.2.5 - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.8 - semver: 7.5.4 - z-schema: 5.0.5 - dev: true - - /@rushstack/rig-package@0.4.0: - resolution: {integrity: sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==} - dependencies: - resolve: 1.22.8 - strip-json-comments: 3.1.1 - dev: true - - /@rushstack/ts-command-line@4.15.1: - resolution: {integrity: sha512-EL4jxZe5fhb1uVL/P/wQO+Z8Rc8FMiWJ1G7VgnPDvdIt5GVjRfK7vwzder1CZQiX3x0PY6uxENYLNGTFd1InRQ==} - dependencies: - '@types/argparse': 1.0.38 - argparse: 1.0.10 - colors: 1.2.5 - string-argv: 0.3.2 - dev: true - - /@selderee/plugin-htmlparser2@0.11.0: - resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - dependencies: - domhandler: 5.0.3 - selderee: 0.11.0 - dev: true - - /@sigstore/bundle@1.1.0: - resolution: {integrity: sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - '@sigstore/protobuf-specs': 0.2.1 - dev: true - - /@sigstore/bundle@2.1.1: - resolution: {integrity: sha512-v3/iS+1nufZdKQ5iAlQKcCsoh0jffQyABvYIxKsZQFWc4ubuGjwZklFHpDgV6O6T7vvV78SW5NHI91HFKEcxKg==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@sigstore/protobuf-specs': 0.2.1 - dev: true - - /@sigstore/core@0.2.0: - resolution: {integrity: sha512-THobAPPZR9pDH2CAvDLpkrYedt7BlZnsyxDe+Isq4ZmGfPy5juOFZq487vCU2EgKD7aHSiTfE/i7sN7aEdzQnA==} - engines: {node: ^16.14.0 || >=18.0.0} - dev: true - - /@sigstore/protobuf-specs@0.2.1: - resolution: {integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /@sigstore/sign@1.0.0: - resolution: {integrity: sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - '@sigstore/bundle': 1.1.0 - '@sigstore/protobuf-specs': 0.2.1 - make-fetch-happen: 11.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@sigstore/sign@2.2.1: - resolution: {integrity: sha512-U5sKQEj+faE1MsnLou1f4DQQHeFZay+V9s9768lw48J4pKykPj34rWyI1lsMOGJ3Mae47Ye6q3HAJvgXO21rkQ==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@sigstore/bundle': 2.1.1 - '@sigstore/core': 0.2.0 - '@sigstore/protobuf-specs': 0.2.1 - make-fetch-happen: 13.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@sigstore/tuf@1.0.3: - resolution: {integrity: sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - '@sigstore/protobuf-specs': 0.2.1 - tuf-js: 1.1.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@sigstore/tuf@2.3.0: - resolution: {integrity: sha512-S98jo9cpJwO1mtQ+2zY7bOdcYyfVYCUaofCG6wWRzk3pxKHVAkSfshkfecto2+LKsx7Ovtqbgb2LS8zTRhxJ9Q==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@sigstore/protobuf-specs': 0.2.1 - tuf-js: 2.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@sigstore/verify@0.1.0: - resolution: {integrity: sha512-2UzMNYAa/uaz11NhvgRnIQf4gpLTJ59bhb8ESXaoSS5sxedfS+eLak8bsdMc+qpNQfITUTFoSKFx5h8umlRRiA==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@sigstore/bundle': 2.1.1 - '@sigstore/core': 0.2.0 - '@sigstore/protobuf-specs': 0.2.1 - dev: true - - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true - - /@sinonjs/commons@1.8.6: - resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} - dependencies: - type-detect: 4.0.8 - dev: true - - /@sinonjs/fake-timers@8.1.0: - resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - dependencies: - '@sinonjs/commons': 1.8.6 - dev: true - - /@sketch-hq/sketch-file-format-ts@6.5.0: - resolution: {integrity: sha512-shaGl4ttFDpHjYBoMaZpciOtsi/lKvJ3VfcBYk6+PjjbFs6H5GxPAyhbiSqy3Vmx30aos284pd88QzD3rE6iag==} - dev: true - - /@stackblitz/sdk@1.9.0: - resolution: {integrity: sha512-3m6C7f8pnR5KXys/Hqx2x6ylnpqOak6HtnZI6T5keEO0yT+E4Spkw37VEbdwuC+2oxmjdgq6YZEgiKX7hM1GmQ==} - dev: true - - /@stylelint/postcss-css-in-js@0.38.0(postcss-syntax@0.36.2)(postcss@8.4.33): - resolution: {integrity: sha512-XOz5CAe49kS95p5yRd+DAIWDojTjfmyAQ4bbDlXMdbZTQ5t0ThjSLvWI6JI2uiS7MFurVBkZ6zUqcimzcLTBoQ==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - postcss: '>=7.0.0' - postcss-syntax: '>=0.36.2' - dependencies: - '@babel/core': 7.23.6 - postcss: 8.4.33 - postcss-syntax: 0.36.2(postcss@8.4.33) - transitivePeerDependencies: - - supports-color - dev: true - - /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.7): - resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - dev: true - - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.7): - resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - dev: true - - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.7): - resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - dev: true - - /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.7): - resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - dev: true - - /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.7): - resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - dev: true - - /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.7): - resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - dev: true - - /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.7): - resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - dev: true - - /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.7): - resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - dev: true - - /@svgr/babel-preset@6.5.1(@babel/core@7.23.7): - resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.7) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.7) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.7) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.7) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.7) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.7) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.7) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.7) - dev: true - - /@svgr/core@6.5.1: - resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.23.7 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.7) - '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@svgr/hast-util-to-babel-ast@6.5.1: - resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} - engines: {node: '>=10'} - dependencies: - '@babel/types': 7.23.6 - entities: 4.5.0 - dev: true - - /@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1): - resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': ^6.0.0 - dependencies: - '@babel/core': 7.23.7 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.7) - '@svgr/core': 6.5.1 - '@svgr/hast-util-to-babel-ast': 6.5.1 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1): - resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': '*' - dependencies: - '@svgr/core': 6.5.1 - cosmiconfig: 7.1.0 - deepmerge: 4.3.1 - svgo: 2.8.0 - dev: true - - /@swc/core-darwin-arm64@1.3.72: - resolution: {integrity: sha512-oNSI5hVfZ+1xpj+dH1g4kQqA0VsGtqd8S9S+cDqkHZiOOVOevw9KN6dzVtmLOcPtlULVypVc0TVvsB55KdVZhQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@swc/core-darwin-x64@1.3.72: - resolution: {integrity: sha512-y5O/WQ1g0/VfTgeNahWIOutbdD5U2Gi703jaefdcoJo3FUx8WU108QQdbVGwGMgaqapo3iQB6Qs9paixYQAYsA==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-arm-gnueabihf@1.3.72: - resolution: {integrity: sha512-05JdWcso0OomHF+7bk5MBDgI8MZ9skcQ/4nhSv5gboSgSiuBmKM15Bg3lZ5iAUwGByNj7pGkSmmd3YwTrXEB+g==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-arm64-gnu@1.3.72: - resolution: {integrity: sha512-8qRELJaeYshhJgqvyOeXCKqBOpai+JYdWuouMbvvDUL85j3OcZhzR+bipexEbbJKcOCdRnoYB7Qg6mjqZ0t7VA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-arm64-musl@1.3.72: - resolution: {integrity: sha512-tOqAGZw+Pe7YrBHFrwFVyRiKqjgjzwYbJmY+UDxLrzWrZSVtC3eO2TPrp7kWmhirg40Og81BbdfRAl8ds48w0Q==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - libc: [musl] - requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-x64-gnu@1.3.72: - resolution: {integrity: sha512-U2W2xWR3s9nplGVWz376GiBlcLTgxyYKlpZPBNZk0w3OvTcjKC62gW1Pe7PUkk4NgJUnaQDBa/mb4V4Zl+GZPA==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - libc: [glibc] - requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-x64-musl@1.3.72: - resolution: {integrity: sha512-3+2dUiZBsifKgvnFEHWdysXjInK8K+BfPBw2tTZJmq1+fZLt0rvuErYDVMLfIJnVWLCcJMnDtTXrvkFV1y/6iA==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - libc: [musl] - requiresBuild: true - dev: true - optional: true - - /@swc/core-win32-arm64-msvc@1.3.72: - resolution: {integrity: sha512-ndI8xZ2AId806D25xgqw2SFJ9gc/jhg21+5hA8XPq9ZL+oDiaYDztaP3ijVmZ1G5xXKD9DpgB7xmylv/f6o6GA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@swc/core-win32-ia32-msvc@1.3.72: - resolution: {integrity: sha512-F3TK8JHP3SRFjLRlzcRVZPnvvGm2CQ5/cwbIkaEq0Dla3kyctU8SiRqvtYwWCW4JuY10cUygIg93Ec/C9Lkk4g==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@swc/core-win32-x64-msvc@1.3.72: - resolution: {integrity: sha512-FXMnIUtLl0yEmGkw+xbUg/uUPExvUxUlLSHbX7CnbSuOIHqMHzvEd9skIueLAst4bvmJ8kT1hDyAIWQcTIAJYQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@swc/core@1.3.72: - resolution: {integrity: sha512-+AKjwLH3/STfPrd7CHzB9+NG1FVT0UKJMUChuWq9sQ8b9xlV8vUeRgZXgh/EHYvNQgl/OUTQKtL6xU2yOLuEuA==} - engines: {node: '>=10'} - requiresBuild: true - peerDependencies: - '@swc/helpers': ^0.5.0 - peerDependenciesMeta: - '@swc/helpers': - optional: true - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.72 - '@swc/core-darwin-x64': 1.3.72 - '@swc/core-linux-arm-gnueabihf': 1.3.72 - '@swc/core-linux-arm64-gnu': 1.3.72 - '@swc/core-linux-arm64-musl': 1.3.72 - '@swc/core-linux-x64-gnu': 1.3.72 - '@swc/core-linux-x64-musl': 1.3.72 - '@swc/core-win32-arm64-msvc': 1.3.72 - '@swc/core-win32-ia32-msvc': 1.3.72 - '@swc/core-win32-x64-msvc': 1.3.72 - dev: true - - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: true - - /@trysound/sax@0.2.0: - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - dev: true - - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true - - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true - - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true - - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: true - - /@tufjs/canonical-json@1.0.0: - resolution: {integrity: sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /@tufjs/canonical-json@2.0.0: - resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} - engines: {node: ^16.14.0 || >=18.0.0} - dev: true - - /@tufjs/models@1.0.4: - resolution: {integrity: sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - '@tufjs/canonical-json': 1.0.0 - minimatch: 9.0.3 - dev: true - - /@tufjs/models@2.0.0: - resolution: {integrity: sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@tufjs/canonical-json': 2.0.0 - minimatch: 9.0.3 - dev: true - - /@turf/along@6.5.0: - resolution: {integrity: sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==} - dependencies: - '@turf/bearing': 6.5.0 - '@turf/destination': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/angle@6.5.0: - resolution: {integrity: sha512-4pXMbWhFofJJAOvTMCns6N4C8CMd5Ih4O2jSAG9b3dDHakj3O4yN1+Zbm+NUei+eVEZ9gFeVp9svE3aMDenIkw==} - dependencies: - '@turf/bearing': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/rhumb-bearing': 6.5.0 - dev: false - - /@turf/area@6.5.0: - resolution: {integrity: sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/bbox-clip@6.5.0: - resolution: {integrity: sha512-F6PaIRF8WMp8EmgU/Ke5B1Y6/pia14UAYB5TiBC668w5rVVjy5L8rTm/m2lEkkDMHlzoP9vNY4pxpNthE7rLcQ==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/bbox-polygon@6.5.0: - resolution: {integrity: sha512-+/r0NyL1lOG3zKZmmf6L8ommU07HliP4dgYToMoTxqzsWzyLjaj/OzgQ8rBmv703WJX+aS6yCmLuIhYqyufyuw==} - dependencies: - '@turf/helpers': 6.5.0 - dev: false - - /@turf/bbox@6.5.0: - resolution: {integrity: sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/bearing@6.5.0: - resolution: {integrity: sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/bezier-spline@6.5.0: - resolution: {integrity: sha512-vokPaurTd4PF96rRgGVm6zYYC5r1u98ZsG+wZEv9y3kJTuJRX/O3xIY2QnTGTdbVmAJN1ouOsD0RoZYaVoXORQ==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/boolean-clockwise@6.5.0: - resolution: {integrity: sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/boolean-contains@6.5.0: - resolution: {integrity: sha512-4m8cJpbw+YQcKVGi8y0cHhBUnYT+QRfx6wzM4GI1IdtYH3p4oh/DOBJKrepQyiDzFDaNIjxuWXBh0ai1zVwOQQ==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/boolean-point-on-line': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/boolean-crosses@6.5.0: - resolution: {integrity: sha512-gvshbTPhAHporTlQwBJqyfW+2yV8q/mOTxG6PzRVl6ARsqNoqYQWkd4MLug7OmAqVyBzLK3201uAeBjxbGw0Ng==} - dependencies: - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/line-intersect': 6.5.0 - '@turf/polygon-to-line': 6.5.0 - dev: false - - /@turf/boolean-disjoint@6.5.0: - resolution: {integrity: sha512-rZ2ozlrRLIAGo2bjQ/ZUu4oZ/+ZjGvLkN5CKXSKBcu6xFO6k2bgqeM8a1836tAW+Pqp/ZFsTA5fZHsJZvP2D5g==} - dependencies: - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/line-intersect': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/polygon-to-line': 6.5.0 - dev: false - - /@turf/boolean-equal@6.5.0: - resolution: {integrity: sha512-cY0M3yoLC26mhAnjv1gyYNQjn7wxIXmL2hBmI/qs8g5uKuC2hRWi13ydufE3k4x0aNRjFGlg41fjoYLwaVF+9Q==} - dependencies: - '@turf/clean-coords': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - geojson-equality: 0.1.6 - dev: false - - /@turf/boolean-intersects@6.5.0: - resolution: {integrity: sha512-nIxkizjRdjKCYFQMnml6cjPsDOBCThrt+nkqtSEcxkKMhAQj5OO7o2CecioNTaX8EayqwMGVKcsz27oP4mKPTw==} - dependencies: - '@turf/boolean-disjoint': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/boolean-overlap@6.5.0: - resolution: {integrity: sha512-8btMIdnbXVWUa1M7D4shyaSGxLRw6NjMcqKBcsTXcZdnaixl22k7ar7BvIzkaRYN3SFECk9VGXfLncNS3ckQUw==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/line-intersect': 6.5.0 - '@turf/line-overlap': 6.5.0 - '@turf/meta': 6.5.0 - geojson-equality: 0.1.6 - dev: false - - /@turf/boolean-parallel@6.5.0: - resolution: {integrity: sha512-aSHJsr1nq9e5TthZGZ9CZYeXklJyRgR5kCLm5X4urz7+MotMOp/LsGOsvKvK9NeUl9+8OUmfMn8EFTT8LkcvIQ==} - dependencies: - '@turf/clean-coords': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/line-segment': 6.5.0 - '@turf/rhumb-bearing': 6.5.0 - dev: false - - /@turf/boolean-point-in-polygon@6.5.0: - resolution: {integrity: sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/boolean-point-on-line@6.5.0: - resolution: {integrity: sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/boolean-within@6.5.0: - resolution: {integrity: sha512-YQB3oU18Inx35C/LU930D36RAVe7LDXk1kWsQ8mLmuqYn9YdPsDQTMTkLJMhoQ8EbN7QTdy333xRQ4MYgToteQ==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/boolean-point-on-line': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/buffer@6.5.0: - resolution: {integrity: sha512-qeX4N6+PPWbKqp1AVkBVWFerGjMYMUyencwfnkCesoznU6qvfugFHNAngNqIBVnJjZ5n8IFyOf+akcxnrt9sNg==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/center': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/projection': 6.5.0 - d3-geo: 1.7.1 - turf-jsts: 1.2.3 - dev: false - - /@turf/center-mean@6.5.0: - resolution: {integrity: sha512-AAX6f4bVn12pTVrMUiB9KrnV94BgeBKpyg3YpfnEbBpkN/znfVhL8dG8IxMAxAoSZ61Zt9WLY34HfENveuOZ7Q==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/center-median@6.5.0: - resolution: {integrity: sha512-dT8Ndu5CiZkPrj15PBvslpuf01ky41DEYEPxS01LOxp5HOUHXp1oJxsPxvc+i/wK4BwccPNzU1vzJ0S4emd1KQ==} - dependencies: - '@turf/center-mean': 6.5.0 - '@turf/centroid': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/center-of-mass@6.5.0: - resolution: {integrity: sha512-EWrriU6LraOfPN7m1jZi+1NLTKNkuIsGLZc2+Y8zbGruvUW+QV7K0nhf7iZWutlxHXTBqEXHbKue/o79IumAsQ==} - dependencies: - '@turf/centroid': 6.5.0 - '@turf/convex': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/center@6.5.0: - resolution: {integrity: sha512-T8KtMTfSATWcAX088rEDKjyvQCBkUsLnK/Txb6/8WUXIeOZyHu42G7MkdkHRoHtwieLdduDdmPLFyTdG5/e7ZQ==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/helpers': 6.5.0 - dev: false - - /@turf/centroid@6.5.0: - resolution: {integrity: sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/circle@6.5.0: - resolution: {integrity: sha512-oU1+Kq9DgRnoSbWFHKnnUdTmtcRUMmHoV9DjTXu9vOLNV5OWtAAh1VZ+mzsioGGzoDNT/V5igbFOkMfBQc0B6A==} - dependencies: - '@turf/destination': 6.5.0 - '@turf/helpers': 6.5.0 - dev: false - - /@turf/clean-coords@6.5.0: - resolution: {integrity: sha512-EMX7gyZz0WTH/ET7xV8MyrExywfm9qUi0/MY89yNffzGIEHuFfqwhcCqZ8O00rZIPZHUTxpmsxQSTfzJJA1CPw==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/clone@6.5.0: - resolution: {integrity: sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==} - dependencies: - '@turf/helpers': 6.5.0 - dev: false - - /@turf/clusters-dbscan@6.5.0: - resolution: {integrity: sha512-SxZEE4kADU9DqLRiT53QZBBhu8EP9skviSyl+FGj08Y01xfICM/RR9ACUdM0aEQimhpu+ZpRVcUK+2jtiCGrYQ==} - dependencies: - '@turf/clone': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - density-clustering: 1.3.0 - dev: false - - /@turf/clusters-kmeans@6.5.0: - resolution: {integrity: sha512-DwacD5+YO8kwDPKaXwT9DV46tMBVNsbi1IzdajZu1JDSWoN7yc7N9Qt88oi+p30583O0UPVkAK+A10WAQv4mUw==} - dependencies: - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - skmeans: 0.9.7 - dev: false - - /@turf/clusters@6.5.0: - resolution: {integrity: sha512-Y6gfnTJzQ1hdLfCsyd5zApNbfLIxYEpmDibHUqR5z03Lpe02pa78JtgrgUNt1seeO/aJ4TG1NLN8V5gOrHk04g==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/collect@6.5.0: - resolution: {integrity: sha512-4dN/T6LNnRg099m97BJeOcTA5fSI8cu87Ydgfibewd2KQwBexO69AnjEFqfPX3Wj+Zvisj1uAVIZbPmSSrZkjg==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/helpers': 6.5.0 - rbush: 2.0.2 - dev: false - - /@turf/combine@6.5.0: - resolution: {integrity: sha512-Q8EIC4OtAcHiJB3C4R+FpB4LANiT90t17uOd851qkM2/o6m39bfN5Mv0PWqMZIHWrrosZqRqoY9dJnzz/rJxYQ==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/concave@6.5.0: - resolution: {integrity: sha512-I/sUmUC8TC5h/E2vPwxVht+nRt+TnXIPRoztDFvS8/Y0+cBDple9inLSo9nnPXMXidrBlGXZ9vQx/BjZUJgsRQ==} - dependencies: - '@turf/clone': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/tin': 6.5.0 - topojson-client: 3.1.0 - topojson-server: 3.0.1 - dev: false - - /@turf/convex@6.5.0: - resolution: {integrity: sha512-x7ZwC5z7PJB0SBwNh7JCeCNx7Iu+QSrH7fYgK0RhhNop13TqUlvHMirMLRgf2db1DqUetrAO2qHJeIuasquUWg==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - concaveman: 1.2.1 - dev: false - - /@turf/destination@6.5.0: - resolution: {integrity: sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/difference@6.5.0: - resolution: {integrity: sha512-l8iR5uJqvI+5Fs6leNbhPY5t/a3vipUF/3AeVLpwPQcgmedNXyheYuy07PcMGH5Jdpi5gItOiTqwiU/bUH4b3A==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - polygon-clipping: 0.15.7 - dev: false - - /@turf/dissolve@6.5.0: - resolution: {integrity: sha512-WBVbpm9zLTp0Bl9CE35NomTaOL1c4TQCtEoO43YaAhNEWJOOIhZMFJyr8mbvYruKl817KinT3x7aYjjCMjTAsQ==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - polygon-clipping: 0.15.7 - dev: false - - /@turf/distance-weight@6.5.0: - resolution: {integrity: sha512-a8qBKkgVNvPKBfZfEJZnC3DV7dfIsC3UIdpRci/iap/wZLH41EmS90nM+BokAJflUHYy8PqE44wySGWHN1FXrQ==} - dependencies: - '@turf/centroid': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/distance@6.5.0: - resolution: {integrity: sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/ellipse@6.5.0: - resolution: {integrity: sha512-kuXtwFviw/JqnyJXF1mrR/cb496zDTSbGKtSiolWMNImYzGGkbsAsFTjwJYgD7+4FixHjp0uQPzo70KDf3AIBw==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/rhumb-destination': 6.5.0 - '@turf/transform-rotate': 6.5.0 - dev: false - - /@turf/envelope@6.5.0: - resolution: {integrity: sha512-9Z+FnBWvOGOU4X+fMZxYFs1HjFlkKqsddLuMknRaqcJd6t+NIv5DWvPtDL8ATD2GEExYDiFLwMdckfr1yqJgHA==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/bbox-polygon': 6.5.0 - '@turf/helpers': 6.5.0 - dev: false - - /@turf/explode@6.5.0: - resolution: {integrity: sha512-6cSvMrnHm2qAsace6pw9cDmK2buAlw8+tjeJVXMfMyY+w7ZUi1rprWMsY92J7s2Dar63Bv09n56/1V7+tcj52Q==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/flatten@6.5.0: - resolution: {integrity: sha512-IBZVwoNLVNT6U/bcUUllubgElzpMsNoCw8tLqBw6dfYg9ObGmpEjf9BIYLr7a2Yn5ZR4l7YIj2T7kD5uJjZADQ==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/flip@6.5.0: - resolution: {integrity: sha512-oyikJFNjt2LmIXQqgOGLvt70RgE2lyzPMloYWM7OR5oIFGRiBvqVD2hA6MNw6JewIm30fWZ8DQJw1NHXJTJPbg==} - dependencies: - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/great-circle@6.5.0: - resolution: {integrity: sha512-7ovyi3HaKOXdFyN7yy1yOMa8IyOvV46RC1QOQTT+RYUN8ke10eyqExwBpL9RFUPvlpoTzoYbM/+lWPogQlFncg==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/helpers@6.5.0: - resolution: {integrity: sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==} - dev: false - - /@turf/hex-grid@6.5.0: - resolution: {integrity: sha512-Ln3tc2tgZT8etDOldgc6e741Smg1CsMKAz1/Mlel+MEL5Ynv2mhx3m0q4J9IB1F3a4MNjDeVvm8drAaf9SF33g==} - dependencies: - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/intersect': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/interpolate@6.5.0: - resolution: {integrity: sha512-LSH5fMeiGyuDZ4WrDJNgh81d2DnNDUVJtuFryJFup8PV8jbs46lQGfI3r1DJ2p1IlEJIz3pmAZYeTfMMoeeohw==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/centroid': 6.5.0 - '@turf/clone': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/hex-grid': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/point-grid': 6.5.0 - '@turf/square-grid': 6.5.0 - '@turf/triangle-grid': 6.5.0 - dev: false - - /@turf/intersect@6.5.0: - resolution: {integrity: sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - polygon-clipping: 0.15.7 - dev: false - - /@turf/invariant@6.5.0: - resolution: {integrity: sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==} - dependencies: - '@turf/helpers': 6.5.0 - dev: false - - /@turf/isobands@6.5.0: - resolution: {integrity: sha512-4h6sjBPhRwMVuFaVBv70YB7eGz+iw0bhPRnp+8JBdX1UPJSXhoi/ZF2rACemRUr0HkdVB/a1r9gC32vn5IAEkw==} - dependencies: - '@turf/area': 6.5.0 - '@turf/bbox': 6.5.0 - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/explode': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - object-assign: 4.1.1 - dev: false - - /@turf/isolines@6.5.0: - resolution: {integrity: sha512-6ElhiLCopxWlv4tPoxiCzASWt/jMRvmp6mRYrpzOm3EUl75OhHKa/Pu6Y9nWtCMmVC/RcWtiiweUocbPLZLm0A==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - object-assign: 4.1.1 - dev: false - - /@turf/kinks@6.5.0: - resolution: {integrity: sha512-ViCngdPt1eEL7hYUHR2eHR662GvCgTc35ZJFaNR6kRtr6D8plLaDju0FILeFFWSc+o8e3fwxZEJKmFj9IzPiIQ==} - dependencies: - '@turf/helpers': 6.5.0 - dev: false - - /@turf/length@6.5.0: - resolution: {integrity: sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==} - dependencies: - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/line-arc@6.5.0: - resolution: {integrity: sha512-I6c+V6mIyEwbtg9P9zSFF89T7QPe1DPTG3MJJ6Cm1MrAY0MdejwQKOpsvNl8LDU2ekHOlz2kHpPVR7VJsoMllA==} - dependencies: - '@turf/circle': 6.5.0 - '@turf/destination': 6.5.0 - '@turf/helpers': 6.5.0 - dev: false - - /@turf/line-chunk@6.5.0: - resolution: {integrity: sha512-i1FGE6YJaaYa+IJesTfyRRQZP31QouS+wh/pa6O3CC0q4T7LtHigyBSYjrbjSLfn2EVPYGlPCMFEqNWCOkC6zg==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/length': 6.5.0 - '@turf/line-slice-along': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/line-intersect@6.5.0: - resolution: {integrity: sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/line-segment': 6.5.0 - '@turf/meta': 6.5.0 - geojson-rbush: 3.2.0 - dev: false - - /@turf/line-offset@6.5.0: - resolution: {integrity: sha512-CEXZbKgyz8r72qRvPchK0dxqsq8IQBdH275FE6o4MrBkzMcoZsfSjghtXzKaz9vvro+HfIXal0sTk2mqV1lQTw==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/line-overlap@6.5.0: - resolution: {integrity: sha512-xHOaWLd0hkaC/1OLcStCpfq55lPHpPNadZySDXYiYjEz5HXr1oKmtMYpn0wGizsLwrOixRdEp+j7bL8dPt4ojQ==} - dependencies: - '@turf/boolean-point-on-line': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/line-segment': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/nearest-point-on-line': 6.5.0 - deep-equal: 1.1.2 - geojson-rbush: 3.2.0 - dev: false - - /@turf/line-segment@6.5.0: - resolution: {integrity: sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/line-slice-along@6.5.0: - resolution: {integrity: sha512-KHJRU6KpHrAj+BTgTNqby6VCTnDzG6a1sJx/I3hNvqMBLvWVA2IrkR9L9DtsQsVY63IBwVdQDqiwCuZLDQh4Ng==} - dependencies: - '@turf/bearing': 6.5.0 - '@turf/destination': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - dev: false - - /@turf/line-slice@6.5.0: - resolution: {integrity: sha512-vDqJxve9tBHhOaVVFXqVjF5qDzGtKWviyjbyi2QnSnxyFAmLlLnBfMX8TLQCAf2GxHibB95RO5FBE6I2KVPRuw==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/nearest-point-on-line': 6.5.0 - dev: false - - /@turf/line-split@6.5.0: - resolution: {integrity: sha512-/rwUMVr9OI2ccJjw7/6eTN53URtGThNSD5I0GgxyFXMtxWiloRJ9MTff8jBbtPWrRka/Sh2GkwucVRAEakx9Sw==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/line-intersect': 6.5.0 - '@turf/line-segment': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/nearest-point-on-line': 6.5.0 - '@turf/square': 6.5.0 - '@turf/truncate': 6.5.0 - geojson-rbush: 3.2.0 - dev: false - - /@turf/line-to-polygon@6.5.0: - resolution: {integrity: sha512-qYBuRCJJL8Gx27OwCD1TMijM/9XjRgXH/m/TyuND4OXedBpIWlK5VbTIO2gJ8OCfznBBddpjiObLBrkuxTpN4Q==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/mask@6.5.0: - resolution: {integrity: sha512-RQha4aU8LpBrmrkH8CPaaoAfk0Egj5OuXtv6HuCQnHeGNOQt3TQVibTA3Sh4iduq4EPxnZfDjgsOeKtrCA19lg==} - dependencies: - '@turf/helpers': 6.5.0 - polygon-clipping: 0.15.7 - dev: false - - /@turf/meta@6.5.0: - resolution: {integrity: sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==} - dependencies: - '@turf/helpers': 6.5.0 - dev: false - - /@turf/midpoint@6.5.0: - resolution: {integrity: sha512-MyTzV44IwmVI6ec9fB2OgZ53JGNlgOpaYl9ArKoF49rXpL84F9rNATndbe0+MQIhdkw8IlzA6xVP4lZzfMNVCw==} - dependencies: - '@turf/bearing': 6.5.0 - '@turf/destination': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - dev: false - - /@turf/moran-index@6.5.0: - resolution: {integrity: sha512-ItsnhrU2XYtTtTudrM8so4afBCYWNaB0Mfy28NZwLjB5jWuAsvyV+YW+J88+neK/ougKMTawkmjQqodNJaBeLQ==} - dependencies: - '@turf/distance-weight': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/nearest-point-on-line@6.5.0: - resolution: {integrity: sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==} - dependencies: - '@turf/bearing': 6.5.0 - '@turf/destination': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/line-intersect': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/nearest-point-to-line@6.5.0: - resolution: {integrity: sha512-PXV7cN0BVzUZdjj6oeb/ESnzXSfWmEMrsfZSDRgqyZ9ytdiIj/eRsnOXLR13LkTdXVOJYDBuf7xt1mLhM4p6+Q==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/point-to-line-distance': 6.5.0 - object-assign: 4.1.1 - dev: false - - /@turf/nearest-point@6.5.0: - resolution: {integrity: sha512-fguV09QxilZv/p94s8SMsXILIAMiaXI5PATq9d7YWijLxWUj6Q/r43kxyoi78Zmwwh1Zfqz9w+bCYUAxZ5+euA==} - dependencies: - '@turf/clone': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/planepoint@6.5.0: - resolution: {integrity: sha512-R3AahA6DUvtFbka1kcJHqZ7DMHmPXDEQpbU5WaglNn7NaCQg9HB0XM0ZfqWcd5u92YXV+Gg8QhC8x5XojfcM4Q==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/point-grid@6.5.0: - resolution: {integrity: sha512-Iq38lFokNNtQJnOj/RBKmyt6dlof0yhaHEDELaWHuECm1lIZLY3ZbVMwbs+nXkwTAHjKfS/OtMheUBkw+ee49w==} - dependencies: - '@turf/boolean-within': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/point-on-feature@6.5.0: - resolution: {integrity: sha512-bDpuIlvugJhfcF/0awAQ+QI6Om1Y1FFYE8Y/YdxGRongivix850dTeXCo0mDylFdWFPGDo7Mmh9Vo4VxNwW/TA==} - dependencies: - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/center': 6.5.0 - '@turf/explode': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/nearest-point': 6.5.0 - dev: false - - /@turf/point-to-line-distance@6.5.0: - resolution: {integrity: sha512-opHVQ4vjUhNBly1bob6RWy+F+hsZDH9SA0UW36pIRzfpu27qipU18xup0XXEePfY6+wvhF6yL/WgCO2IbrLqEA==} - dependencies: - '@turf/bearing': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/projection': 6.5.0 - '@turf/rhumb-bearing': 6.5.0 - '@turf/rhumb-distance': 6.5.0 - dev: false - - /@turf/points-within-polygon@6.5.0: - resolution: {integrity: sha512-YyuheKqjliDsBDt3Ho73QVZk1VXX1+zIA2gwWvuz8bR1HXOkcuwk/1J76HuFMOQI3WK78wyAi+xbkx268PkQzQ==} - dependencies: - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/polygon-smooth@6.5.0: - resolution: {integrity: sha512-LO/X/5hfh/Rk4EfkDBpLlVwt3i6IXdtQccDT9rMjXEP32tRgy0VMFmdkNaXoGlSSKf/1mGqLl4y4wHd86DqKbg==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/polygon-tangents@6.5.0: - resolution: {integrity: sha512-sB4/IUqJMYRQH9jVBwqS/XDitkEfbyqRy+EH/cMRJURTg78eHunvJ708x5r6umXsbiUyQU4eqgPzEylWEQiunw==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/boolean-within': 6.5.0 - '@turf/explode': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/nearest-point': 6.5.0 - dev: false - - /@turf/polygon-to-line@6.5.0: - resolution: {integrity: sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/polygonize@6.5.0: - resolution: {integrity: sha512-a/3GzHRaCyzg7tVYHo43QUChCspa99oK4yPqooVIwTC61npFzdrmnywMv0S+WZjHZwK37BrFJGFrZGf6ocmY5w==} - dependencies: - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/envelope': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/projection@6.5.0: - resolution: {integrity: sha512-/Pgh9mDvQWWu8HRxqpM+tKz8OzgauV+DiOcr3FCjD6ubDnrrmMJlsf6fFJmggw93mtVPrZRL6yyi9aYCQBOIvg==} - dependencies: - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/random@6.5.0: - resolution: {integrity: sha512-8Q25gQ/XbA7HJAe+eXp4UhcXM9aOOJFaxZ02+XSNwMvY8gtWSCBLVqRcW4OhqilgZ8PeuQDWgBxeo+BIqqFWFQ==} - dependencies: - '@turf/helpers': 6.5.0 - dev: false - - /@turf/rectangle-grid@6.5.0: - resolution: {integrity: sha512-yQZ/1vbW68O2KsSB3OZYK+72aWz/Adnf7m2CMKcC+aq6TwjxZjAvlbCOsNUnMAuldRUVN1ph6RXMG4e9KEvKvg==} - dependencies: - '@turf/boolean-intersects': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - dev: false - - /@turf/rewind@6.5.0: - resolution: {integrity: sha512-IoUAMcHWotBWYwSYuYypw/LlqZmO+wcBpn8ysrBNbazkFNkLf3btSDZMkKJO/bvOzl55imr/Xj4fi3DdsLsbzQ==} - dependencies: - '@turf/boolean-clockwise': 6.5.0 - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/rhumb-bearing@6.5.0: - resolution: {integrity: sha512-jMyqiMRK4hzREjQmnLXmkJ+VTNTx1ii8vuqRwJPcTlKbNWfjDz/5JqJlb5NaFDcdMpftWovkW5GevfnuzHnOYA==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/rhumb-destination@6.5.0: - resolution: {integrity: sha512-RHNP1Oy+7xTTdRrTt375jOZeHceFbjwohPHlr9Hf68VdHHPMAWgAKqiX2YgSWDcvECVmiGaBKWus1Df+N7eE4Q==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/rhumb-distance@6.5.0: - resolution: {integrity: sha512-oKp8KFE8E4huC2Z1a1KNcFwjVOqa99isxNOwfo4g3SUABQ6NezjKDDrnvC4yI5YZ3/huDjULLBvhed45xdCrzg==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - dev: false - - /@turf/sample@6.5.0: - resolution: {integrity: sha512-kSdCwY7el15xQjnXYW520heKUrHwRvnzx8ka4eYxX9NFeOxaFITLW2G7UtXb6LJK8mmPXI8Aexv23F2ERqzGFg==} - dependencies: - '@turf/helpers': 6.5.0 - dev: false - - /@turf/sector@6.5.0: - resolution: {integrity: sha512-cYUOkgCTWqa23SOJBqxoFAc/yGCUsPRdn/ovbRTn1zNTm/Spmk6hVB84LCKOgHqvSF25i0d2kWqpZDzLDdAPbw==} - dependencies: - '@turf/circle': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/line-arc': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/shortest-path@6.5.0: - resolution: {integrity: sha512-4de5+G7+P4hgSoPwn+SO9QSi9HY5NEV/xRJ+cmoFVRwv2CDsuOPDheHKeuIAhKyeKDvPvPt04XYWbac4insJMg==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/bbox-polygon': 6.5.0 - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/clean-coords': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/transform-scale': 6.5.0 - dev: false - - /@turf/simplify@6.5.0: - resolution: {integrity: sha512-USas3QqffPHUY184dwQdP8qsvcVH/PWBYdXY5am7YTBACaQOMAlf6AKJs9FT8jiO6fQpxfgxuEtwmox+pBtlOg==} - dependencies: - '@turf/clean-coords': 6.5.0 - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/square-grid@6.5.0: - resolution: {integrity: sha512-mlR0ayUdA+L4c9h7p4k3pX6gPWHNGuZkt2c5II1TJRmhLkW2557d6b/Vjfd1z9OVaajb1HinIs1FMSAPXuuUrA==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/rectangle-grid': 6.5.0 - dev: false - - /@turf/square@6.5.0: - resolution: {integrity: sha512-BM2UyWDmiuHCadVhHXKIx5CQQbNCpOxB6S/aCNOCLbhCeypKX5Q0Aosc5YcmCJgkwO5BERCC6Ee7NMbNB2vHmQ==} - dependencies: - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - dev: false - - /@turf/standard-deviational-ellipse@6.5.0: - resolution: {integrity: sha512-02CAlz8POvGPFK2BKK8uHGUk/LXb0MK459JVjKxLC2yJYieOBTqEbjP0qaWhiBhGzIxSMaqe8WxZ0KvqdnstHA==} - dependencies: - '@turf/center-mean': 6.5.0 - '@turf/ellipse': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/points-within-polygon': 6.5.0 - dev: false - - /@turf/tag@6.5.0: - resolution: {integrity: sha512-XwlBvrOV38CQsrNfrxvBaAPBQgXMljeU0DV8ExOyGM7/hvuGHJw3y8kKnQ4lmEQcmcrycjDQhP7JqoRv8vFssg==} - dependencies: - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/tesselate@6.5.0: - resolution: {integrity: sha512-M1HXuyZFCfEIIKkglh/r5L9H3c5QTEsnMBoZOFQiRnGPGmJWcaBissGb7mTFX2+DKE7FNWXh4TDnZlaLABB0dQ==} - dependencies: - '@turf/helpers': 6.5.0 - earcut: 2.2.4 - dev: false - - /@turf/tin@6.5.0: - resolution: {integrity: sha512-YLYikRzKisfwj7+F+Tmyy/LE3d2H7D4kajajIfc9mlik2+esG7IolsX/+oUz1biguDYsG0DUA8kVYXDkobukfg==} - dependencies: - '@turf/helpers': 6.5.0 - dev: false - - /@turf/transform-rotate@6.5.0: - resolution: {integrity: sha512-A2Ip1v4246ZmpssxpcL0hhiVBEf4L8lGnSPWTgSv5bWBEoya2fa/0SnFX9xJgP40rMP+ZzRaCN37vLHbv1Guag==} - dependencies: - '@turf/centroid': 6.5.0 - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/rhumb-bearing': 6.5.0 - '@turf/rhumb-destination': 6.5.0 - '@turf/rhumb-distance': 6.5.0 - dev: false - - /@turf/transform-scale@6.5.0: - resolution: {integrity: sha512-VsATGXC9rYM8qTjbQJ/P7BswKWXHdnSJ35JlV4OsZyHBMxJQHftvmZJsFbOqVtQnIQIzf2OAly6rfzVV9QLr7g==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/center': 6.5.0 - '@turf/centroid': 6.5.0 - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/rhumb-bearing': 6.5.0 - '@turf/rhumb-destination': 6.5.0 - '@turf/rhumb-distance': 6.5.0 - dev: false - - /@turf/transform-translate@6.5.0: - resolution: {integrity: sha512-NABLw5VdtJt/9vSstChp93pc6oel4qXEos56RBMsPlYB8hzNTEKYtC146XJvyF4twJeeYS8RVe1u7KhoFwEM5w==} - dependencies: - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/rhumb-destination': 6.5.0 - dev: false - - /@turf/triangle-grid@6.5.0: - resolution: {integrity: sha512-2jToUSAS1R1htq4TyLQYPTIsoy6wg3e3BQXjm2rANzw4wPQCXGOxrur1Fy9RtzwqwljlC7DF4tg0OnWr8RjmfA==} - dependencies: - '@turf/distance': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/intersect': 6.5.0 - dev: false - - /@turf/truncate@6.5.0: - resolution: {integrity: sha512-pFxg71pLk+eJj134Z9yUoRhIi8vqnnKvCYwdT4x/DQl/19RVdq1tV3yqOT3gcTQNfniteylL5qV1uTBDV5sgrg==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - dev: false - - /@turf/turf@6.5.0: - resolution: {integrity: sha512-ipMCPnhu59bh92MNt8+pr1VZQhHVuTMHklciQURo54heoxRzt1neNYZOBR6jdL+hNsbDGAECMuIpAutX+a3Y+w==} - dependencies: - '@turf/along': 6.5.0 - '@turf/angle': 6.5.0 - '@turf/area': 6.5.0 - '@turf/bbox': 6.5.0 - '@turf/bbox-clip': 6.5.0 - '@turf/bbox-polygon': 6.5.0 - '@turf/bearing': 6.5.0 - '@turf/bezier-spline': 6.5.0 - '@turf/boolean-clockwise': 6.5.0 - '@turf/boolean-contains': 6.5.0 - '@turf/boolean-crosses': 6.5.0 - '@turf/boolean-disjoint': 6.5.0 - '@turf/boolean-equal': 6.5.0 - '@turf/boolean-intersects': 6.5.0 - '@turf/boolean-overlap': 6.5.0 - '@turf/boolean-parallel': 6.5.0 - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/boolean-point-on-line': 6.5.0 - '@turf/boolean-within': 6.5.0 - '@turf/buffer': 6.5.0 - '@turf/center': 6.5.0 - '@turf/center-mean': 6.5.0 - '@turf/center-median': 6.5.0 - '@turf/center-of-mass': 6.5.0 - '@turf/centroid': 6.5.0 - '@turf/circle': 6.5.0 - '@turf/clean-coords': 6.5.0 - '@turf/clone': 6.5.0 - '@turf/clusters': 6.5.0 - '@turf/clusters-dbscan': 6.5.0 - '@turf/clusters-kmeans': 6.5.0 - '@turf/collect': 6.5.0 - '@turf/combine': 6.5.0 - '@turf/concave': 6.5.0 - '@turf/convex': 6.5.0 - '@turf/destination': 6.5.0 - '@turf/difference': 6.5.0 - '@turf/dissolve': 6.5.0 - '@turf/distance': 6.5.0 - '@turf/distance-weight': 6.5.0 - '@turf/ellipse': 6.5.0 - '@turf/envelope': 6.5.0 - '@turf/explode': 6.5.0 - '@turf/flatten': 6.5.0 - '@turf/flip': 6.5.0 - '@turf/great-circle': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/hex-grid': 6.5.0 - '@turf/interpolate': 6.5.0 - '@turf/intersect': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/isobands': 6.5.0 - '@turf/isolines': 6.5.0 - '@turf/kinks': 6.5.0 - '@turf/length': 6.5.0 - '@turf/line-arc': 6.5.0 - '@turf/line-chunk': 6.5.0 - '@turf/line-intersect': 6.5.0 - '@turf/line-offset': 6.5.0 - '@turf/line-overlap': 6.5.0 - '@turf/line-segment': 6.5.0 - '@turf/line-slice': 6.5.0 - '@turf/line-slice-along': 6.5.0 - '@turf/line-split': 6.5.0 - '@turf/line-to-polygon': 6.5.0 - '@turf/mask': 6.5.0 - '@turf/meta': 6.5.0 - '@turf/midpoint': 6.5.0 - '@turf/moran-index': 6.5.0 - '@turf/nearest-point': 6.5.0 - '@turf/nearest-point-on-line': 6.5.0 - '@turf/nearest-point-to-line': 6.5.0 - '@turf/planepoint': 6.5.0 - '@turf/point-grid': 6.5.0 - '@turf/point-on-feature': 6.5.0 - '@turf/point-to-line-distance': 6.5.0 - '@turf/points-within-polygon': 6.5.0 - '@turf/polygon-smooth': 6.5.0 - '@turf/polygon-tangents': 6.5.0 - '@turf/polygon-to-line': 6.5.0 - '@turf/polygonize': 6.5.0 - '@turf/projection': 6.5.0 - '@turf/random': 6.5.0 - '@turf/rewind': 6.5.0 - '@turf/rhumb-bearing': 6.5.0 - '@turf/rhumb-destination': 6.5.0 - '@turf/rhumb-distance': 6.5.0 - '@turf/sample': 6.5.0 - '@turf/sector': 6.5.0 - '@turf/shortest-path': 6.5.0 - '@turf/simplify': 6.5.0 - '@turf/square': 6.5.0 - '@turf/square-grid': 6.5.0 - '@turf/standard-deviational-ellipse': 6.5.0 - '@turf/tag': 6.5.0 - '@turf/tesselate': 6.5.0 - '@turf/tin': 6.5.0 - '@turf/transform-rotate': 6.5.0 - '@turf/transform-scale': 6.5.0 - '@turf/transform-translate': 6.5.0 - '@turf/triangle-grid': 6.5.0 - '@turf/truncate': 6.5.0 - '@turf/union': 6.5.0 - '@turf/unkink-polygon': 6.5.0 - '@turf/voronoi': 6.5.0 - dev: false - - /@turf/union@6.5.0: - resolution: {integrity: sha512-igYWCwP/f0RFHIlC2c0SKDuM/ObBaqSljI3IdV/x71805QbIvY/BYGcJdyNcgEA6cylIGl/0VSlIbpJHZ9ldhw==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - polygon-clipping: 0.15.7 - dev: false - - /@turf/unkink-polygon@6.5.0: - resolution: {integrity: sha512-8QswkzC0UqKmN1DT6HpA9upfa1HdAA5n6bbuzHy8NJOX8oVizVAqfEPY0wqqTgboDjmBR4yyImsdPGUl3gZ8JQ==} - dependencies: - '@turf/area': 6.5.0 - '@turf/boolean-point-in-polygon': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - rbush: 2.0.2 - dev: false - - /@turf/voronoi@6.5.0: - resolution: {integrity: sha512-C/xUsywYX+7h1UyNqnydHXiun4UPjK88VDghtoRypR9cLlb7qozkiLRphQxxsCM0KxyxpVPHBVQXdAL3+Yurow==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - d3-voronoi: 1.1.2 - dev: false - - /@types/ali-oss@6.16.11: - resolution: {integrity: sha512-/AyemPZy93ZXGzEokMsoPFgjH37snpzH4X/fwans/n63HLaCleriCG3PyrkHCPkgHEc9vj9Uo6paqsBN3vJ3OA==} - dev: true - - /@types/argparse@1.0.38: - resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} - dev: true - - /@types/babel__core@7.20.5: - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - dependencies: - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 - dev: true - - /@types/babel__generator@7.6.8: - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - dependencies: - '@babel/types': 7.23.6 - dev: true - - /@types/babel__template@7.4.4: - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - dependencies: - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - dev: true - - /@types/babel__traverse@7.20.5: - resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} - dependencies: - '@babel/types': 7.23.6 - dev: true - - /@types/base-64@1.0.2: - resolution: {integrity: sha512-uPgKMmM9fmn7I+Zi6YBqctOye4SlJsHKcisjHIMWpb2YKZRc36GpKyNuQ03JcT+oNXg1m7Uv4wU94EVltn8/cw==} - dev: true - - /@types/connect@3.4.38: - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - dependencies: - '@types/node': 20.11.5 - dev: true - - /@types/debug@4.1.12: - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - dependencies: - '@types/ms': 0.7.34 - dev: true - - /@types/downloadjs@1.4.6: - resolution: {integrity: sha512-mp3w70vsaiLRT9ix92fmI9Ob2yJAPZm6tShJtofo2uHbN11G2i6a0ApIEjBl/kv3e9V7Pv7jMjk1bUwYWvMHvA==} - dev: false - - /@types/eslint-scope@3.7.7: - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - dependencies: - '@types/eslint': 8.56.2 - '@types/estree': 1.0.5 - dev: true - - /@types/eslint@8.56.2: - resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - dev: true - - /@types/estree-jsx@1.0.3: - resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} - dependencies: - '@types/estree': 1.0.5 - dev: true - - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true - - /@types/file-saver@2.0.7: - resolution: {integrity: sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==} - dev: true - - /@types/fs-extra@11.0.1: - resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} - dependencies: - '@types/jsonfile': 6.1.4 - '@types/node': 20.11.5 - dev: true - - /@types/fs-extra@11.0.4: - resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - dependencies: - '@types/jsonfile': 6.1.4 - '@types/node': 20.11.5 - dev: true - - /@types/geojson@7946.0.8: - resolution: {integrity: sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==} - dev: false - - /@types/graceful-fs@4.1.9: - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - dependencies: - '@types/node': 20.11.5 - dev: true - - /@types/gtag.js@0.0.18: - resolution: {integrity: sha512-GJxnIvuXuVhKaHfsOdzGipoOoXq72y3mdcncc9h6i6E7nlz89zBEj2wrLM7bqO5Xk9Lm2B94MwdQsSwRlaPSWw==} - dev: true - - /@types/hapi__joi@17.1.9: - resolution: {integrity: sha512-oOMFT8vmCTFncsF1engrs04jatz8/Anwx3De9uxnOK4chgSEgWBvFtpSoJo8u3784JNO+ql5tzRR6phHoRnscQ==} - dev: true - - /@types/hast@2.3.9: - resolution: {integrity: sha512-pTHyNlaMD/oKJmS+ZZUyFUcsZeBZpC0lmGquw98CqRVNgAdJZJeD7GoeLiT6Xbx5rU9VCjSt0RwEvDgzh4obFw==} - dependencies: - '@types/unist': 2.0.10 - dev: true - - /@types/hoist-non-react-statics@3.3.5: - resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} - dependencies: - '@types/react': 18.2.48 - hoist-non-react-statics: 3.3.2 - dev: true - - /@types/html-minifier-terser@6.1.0: - resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - dev: true - - /@types/http-server@0.12.4: - resolution: {integrity: sha512-vsn4pvP2oRFALLuM5Rca6qUmSPG7u0VNjOuqvL57l3bKldQRWdUZPeSiARhzagDxgfNCHn/o8WlWk4KinBauUg==} - dependencies: - '@types/connect': 3.4.38 - dev: true - - /@types/inquirer@9.0.7: - resolution: {integrity: sha512-Q0zyBupO6NxGRZut/JdmqYKOnN95Eg5V8Csg3PGKkP+FnvsUZx1jAyK7fztIszxxMuoBA6E3KXWvdZVXIpx60g==} - dependencies: - '@types/through': 0.0.33 - rxjs: 7.8.1 - dev: true - - /@types/isomorphic-fetch@0.0.39: - resolution: {integrity: sha512-I0gou/ZdA1vMG7t7gMzL7VYu2xAKU78rW9U1l10MI0nn77pEHq3tQqHQ8hMmXdMpBlkxZOorjI4sO594Z3kKJw==} - dev: true - - /@types/istanbul-lib-coverage@2.0.6: - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - dev: true - - /@types/istanbul-lib-report@3.0.3: - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - dev: true - - /@types/istanbul-reports@3.0.4: - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - dependencies: - '@types/istanbul-lib-report': 3.0.3 - dev: true - - /@types/jest-axe@3.5.9: - resolution: {integrity: sha512-z98CzR0yVDalCEuhGXXO4/zN4HHuSebAukXDjTLJyjEAgoUf1H1i+sr7SUB/mz8CRS/03/XChsx0dcLjHkndoQ==} - dependencies: - '@types/jest': 29.5.12 - axe-core: 3.5.6 - dev: true - - /@types/jest-environment-puppeteer@5.0.6: - resolution: {integrity: sha512-MAi9ey7sIRl0ddWsN3jaQQwC41eBfYghE6TKnJNbEXKxw1X6nF6TBCZA+DbQ+KDOb9e2BjUtiWWMZbgjhlTneg==} - dependencies: - '@jest/types': 27.5.1 - '@types/puppeteer': 5.4.7 - jest-environment-node: 27.5.1 - dev: true - - /@types/jest-image-snapshot@6.4.0: - resolution: {integrity: sha512-8TQ/EgqFCX0UWSpH488zAc21fCkJNpZPnnp3xWFMqElxApoJV5QOoqajnVRV7AhfF0rbQWTVyc04KG7tXnzCPA==} - dependencies: - '@types/jest': 29.5.12 - '@types/pixelmatch': 5.2.6 - ssim.js: 3.5.0 - dev: true - - /@types/jest@29.5.12: - resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - dev: true - - /@types/jquery@3.5.29: - resolution: {integrity: sha512-oXQQC9X9MOPRrMhPHHOsXqeQDnWeCDT3PelUIg/Oy8FAbzSZtFHRjc7IpbfFVmpLtJ+UOoywpRsuO5Jxjybyeg==} - dependencies: - '@types/sizzle': 2.3.8 - dev: true - - /@types/js-cookie@2.2.7: - resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} - dev: false - - /@types/jsdom@21.1.6: - resolution: {integrity: sha512-/7kkMsC+/kMs7gAYmmBR9P0vGTnOoLhQhyhQJSlXGI5bzTHp6xdo0TtKWQAsz6pmSAeVqKSbqeyP6hytqr9FDw==} - dependencies: - '@types/node': 20.11.5 - '@types/tough-cookie': 4.0.5 - parse5: 7.1.2 - dev: true - - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true - - /@types/jsonfile@6.1.4: - resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - dependencies: - '@types/node': 20.11.5 - dev: true - - /@types/keyv@3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - dependencies: - '@types/node': 20.11.5 - dev: true - - /@types/lodash-es@4.17.12: - resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - dependencies: - '@types/lodash': 4.14.202 - dev: true - - /@types/lodash@4.14.202: - resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} - dev: true - - /@types/mdast@3.0.15: - resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} - dependencies: - '@types/unist': 2.0.10 - dev: true - - /@types/minimatch@3.0.5: - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - dev: true - - /@types/minimist@1.2.5: - resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - dev: true - - /@types/ms@0.7.34: - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - dev: true - - /@types/node@12.20.55: - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - dev: true - - /@types/node@17.0.45: - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - dev: true - - /@types/node@20.11.5: - resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==} - dependencies: - undici-types: 5.26.5 - dev: true - - /@types/node@20.5.1: - resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} - dev: true - - /@types/normalize-package-data@2.4.4: - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - dev: true - - /@types/nprogress@0.2.3: - resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} - dev: true - - /@types/parse-json@4.0.2: - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - /@types/parse5@6.0.3: - resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - dev: true - - /@types/pixelmatch@5.2.6: - resolution: {integrity: sha512-wC83uexE5KGuUODn6zkm9gMzTwdY5L0chiK+VrKcDfEjzxh1uadlWTvOmAbCpnM9zx/Ww3f8uKlYQVnO/TrqVg==} - dependencies: - '@types/node': 20.11.5 - dev: true - - /@types/pngjs@6.0.4: - resolution: {integrity: sha512-atAK9xLKOnxiuArxcHovmnOUUGBZOQ3f0vCf43FnoKs6XnqiambT1kkJWmdo71IR+BoXSh+CueeFR0GfH3dTlQ==} - dependencies: - '@types/node': 20.11.5 - dev: true - - /@types/prismjs@1.26.3: - resolution: {integrity: sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==} - dev: true - - /@types/progress@2.0.7: - resolution: {integrity: sha512-iadjw02vte8qWx7U0YM++EybBha2CQLPGu9iJ97whVgJUT5Zq9MjAPYUnbfRI2Kpehimf1QjFJYxD0t8nqzu5w==} - dependencies: - '@types/node': 20.11.5 - dev: true - - /@types/prop-types@15.7.11: - resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - - /@types/puppeteer@5.4.7: - resolution: {integrity: sha512-JdGWZZYL0vKapXF4oQTC5hLVNfOgdPrqeZ1BiQnGk5cB7HeE91EWUiTdVSdQPobRN8rIcdffjiOgCYJ/S8QrnQ==} - dependencies: - '@types/node': 20.11.5 - dev: true - - /@types/q@1.5.8: - resolution: {integrity: sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==} - dev: true - - /@types/qs@6.9.11: - resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} - dev: true - - /@types/ramda@0.29.3: - resolution: {integrity: sha512-Yh/RHkjN0ru6LVhSQtTkCRo6HXkfL9trot/2elzM/yXLJmbLm2v6kJc8yftTnwv1zvUob6TEtqI2cYjdqG3U0Q==} - dependencies: - types-ramda: 0.29.7 - dev: true - - /@types/react-copy-to-clipboard@5.0.7: - resolution: {integrity: sha512-Gft19D+as4M+9Whq1oglhmK49vqPhcLzk8WfvfLvaYMIPYanyfLy0+CwFucMJfdKoSFyySPmkkWn8/E6voQXjQ==} - dependencies: - '@types/react': 18.2.48 - dev: true - - /@types/react-dom@18.2.18: - resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} - dependencies: - '@types/react': 18.2.48 - dev: true - - /@types/react-highlight-words@0.16.7: - resolution: {integrity: sha512-+upXTIaRd3rGvh1aDQSs9z5X+sV3UM6Jrmjk03GN2GXl4v/+iOJKQj2LZHo6Vp2IoTvMdtxgME26feqo12xXLg==} - dependencies: - '@types/react': 18.2.48 - dev: true - - /@types/react-resizable@3.0.7: - resolution: {integrity: sha512-V4N7/xDUME+cxKya/A73MmFrHofTupVdE45boRxeA8HL4Q5pJh3AuG0FWCEy2GB84unIMSRISyEAS/GHWum9EQ==} - dependencies: - '@types/react': 18.2.48 - dev: true - - /@types/react@18.2.48: - resolution: {integrity: sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==} - dependencies: - '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 - csstype: 3.1.3 - - /@types/responselike@1.0.3: - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - dependencies: - '@types/node': 20.11.5 - dev: true - - /@types/sax@1.2.7: - resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - dependencies: - '@types/node': 20.11.5 - dev: true - - /@types/scheduler@0.16.8: - resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - - /@types/semver@7.5.6: - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} - dev: true - - /@types/sizzle@2.3.8: - resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==} - dev: true - - /@types/stack-utils@2.0.3: - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - dev: true - - /@types/tar@6.1.11: - resolution: {integrity: sha512-ThA1WD8aDdVU4VLuyq5NEqriwXErF5gEIJeyT6gHBWU7JtSmW2a5qjNv3/vR82O20mW+1vhmeZJfBQPT3HCugg==} - dependencies: - '@types/node': 20.11.5 - minipass: 4.2.8 - dev: true - - /@types/throttle-debounce@5.0.2: - resolution: {integrity: sha512-pDzSNulqooSKvSNcksnV72nk8p7gRqN8As71Sp28nov1IgmPKWbOEIwAWvBME5pPTtaXJAvG3O4oc76HlQ4kqQ==} - dev: true - - /@types/through@0.0.33: - resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} - dependencies: - '@types/node': 20.11.5 - dev: true - - /@types/tough-cookie@4.0.5: - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - dev: true - - /@types/unist@2.0.10: - resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - dev: true - - /@types/uuid@9.0.7: - resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} - dev: true - - /@types/warning@3.0.3: - resolution: {integrity: sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==} - dev: true - - /@types/yargs-parser@21.0.3: - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - dev: true - - /@types/yargs@16.0.9: - resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} - dependencies: - '@types/yargs-parser': 21.0.3 - dev: true - - /@types/yargs@17.0.32: - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - dependencies: - '@types/yargs-parser': 21.0.3 - dev: true - - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) - debug: 4.3.4 - eslint: 8.56.0 - graphemer: 1.4.0 - ignore: 5.3.0 - natural-compare-lite: 1.4.0 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 - eslint: 8.56.0 - graphemer: 1.4.0 - ignore: 5.3.0 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.2.1(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) - debug: 4.3.4 - eslint: 8.56.0 - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 - eslint: 8.56.0 - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - - /@typescript-eslint/scope-manager@6.21.0: - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - dev: true - - /@typescript-eslint/type-utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) - debug: 4.3.4 - eslint: 8.56.0 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) - debug: 4.3.4 - eslint: 8.56.0 - ts-api-utils: 1.2.1(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/types@6.21.0: - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true - - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.5.4 - ts-api-utils: 1.2.1(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) - eslint: 8.56.0 - eslint-scope: 5.1.1 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - eslint: 8.56.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@typescript-eslint/visitor-keys@6.21.0: - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.21.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@umijs/ast@4.1.1: - resolution: {integrity: sha512-YqrHx2K8X4oOJTVE1tHMeveXBESJdmrdv/VgTB7pCcE6/+mvmPmDx1RECeSRrbnCP4ABrol38XCzKS88Vx5oHg==} - dependencies: - '@umijs/bundler-utils': 4.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@umijs/babel-preset-umi@4.1.1: - resolution: {integrity: sha512-6pYZnF03euAJGZN3VLe8PKKRNMH6Zxj4GKNooLvJ0Wz0eMufmYDcA4CpbR6h8i1JpgcQ0Sngr8bqHLb7oMqrvw==} - dependencies: - '@babel/runtime': 7.23.6 - '@bloomberg/record-tuple-polyfill': 0.0.4 - '@umijs/bundler-utils': 4.1.1 - '@umijs/utils': 4.1.1 - core-js: 3.34.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@umijs/bundler-esbuild@4.1.1: - resolution: {integrity: sha512-+aUT2pGTCvcn6Vla0/5E9NN8fX2QBH7XxlZP0vh1vh8iAVhYkqTu6eMSWN2hGLxlBwf5xkFJDpn3cEQ5PMUPgw==} - hasBin: true - dependencies: - '@umijs/bundler-utils': 4.1.1 - '@umijs/utils': 4.1.1 - enhanced-resolve: 5.9.3 - postcss: 8.4.33 - postcss-flexbugs-fixes: 5.0.2(postcss@8.4.33) - postcss-preset-env: 7.5.0(postcss@8.4.33) - transitivePeerDependencies: - - supports-color - dev: true - - /@umijs/bundler-utils@4.1.1: - resolution: {integrity: sha512-k1I1tjDePgB1XqpQHZiLJ/5gS4EykY8hqqzEzD1CSbd5KFE614+q6W/gcpFZ0YLJDWY1GdjOYpRokvuI/MSRfg==} - dependencies: - '@umijs/utils': 4.1.1 - esbuild: 0.17.19 - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 - spdy: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@umijs/bundler-vite@4.1.1(@types/node@20.5.1)(postcss@8.4.33)(sass@1.70.0): - resolution: {integrity: sha512-gTu/9TpsBYEHcaQY/ybW1ZDLAQA75lH2kI6FVx/Tg8HutwSB9mIaD4DHZOMDM/9C1W/+DwxXemKZXVkR3iRtVw==} - hasBin: true - dependencies: - '@svgr/core': 6.5.1 - '@umijs/bundler-utils': 4.1.1 - '@umijs/utils': 4.1.1 - '@vitejs/plugin-react': 4.0.0(vite@4.3.1) - core-js: 3.34.0 - less: 4.1.3 - postcss-preset-env: 7.5.0(postcss@8.4.33) - rollup-plugin-visualizer: 5.9.0 - systemjs: 6.14.3 - vite: 4.3.1(@types/node@20.5.1)(less@4.1.3)(sass@1.70.0) - transitivePeerDependencies: - - '@types/node' - - postcss - - rollup - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /@umijs/bundler-webpack@4.1.1(typescript@5.0.4)(webpack@5.89.0): - resolution: {integrity: sha512-LL+ZmPmSIGOMo1+OHsBtMARqr+dTZEqDkTbQ/ZPrrrtxK27rXi/lHFEUnzKjPeHVL+xtJ4m9QR13zGWlhLT+UA==} - hasBin: true - dependencies: - '@svgr/core': 6.5.1 - '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) - '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) - '@types/hapi__joi': 17.1.9 - '@umijs/babel-preset-umi': 4.1.1 - '@umijs/bundler-utils': 4.1.1 - '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 - '@umijs/mfsu': 4.1.1 - '@umijs/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(webpack@5.89.0) - '@umijs/utils': 4.1.1 - cors: 2.8.5 - css-loader: 6.7.1(webpack@5.89.0) - es5-imcompatible-versions: 0.1.88 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.0.4)(webpack@5.89.0) - jest-worker: 29.4.3 - lightningcss: 1.22.1 - node-libs-browser: 2.2.1 - postcss: 8.4.33 - postcss-preset-env: 7.5.0(postcss@8.4.33) - react-error-overlay: 6.0.9 - react-refresh: 0.14.0 - transitivePeerDependencies: - - '@types/webpack' - - sockjs-client - - supports-color - - type-fest - - typescript - - webpack - - webpack-dev-server - - webpack-hot-middleware - - webpack-plugin-serve - dev: true - - /@umijs/bundler-webpack@4.1.1(typescript@5.3.3)(webpack@5.89.0): - resolution: {integrity: sha512-LL+ZmPmSIGOMo1+OHsBtMARqr+dTZEqDkTbQ/ZPrrrtxK27rXi/lHFEUnzKjPeHVL+xtJ4m9QR13zGWlhLT+UA==} - hasBin: true - dependencies: - '@svgr/core': 6.5.1 - '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) - '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) - '@types/hapi__joi': 17.1.9 - '@umijs/babel-preset-umi': 4.1.1 - '@umijs/bundler-utils': 4.1.1 - '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 - '@umijs/mfsu': 4.1.1 - '@umijs/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(webpack@5.89.0) - '@umijs/utils': 4.1.1 - cors: 2.8.5 - css-loader: 6.7.1(webpack@5.89.0) - es5-imcompatible-versions: 0.1.88 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.3.3)(webpack@5.89.0) - jest-worker: 29.4.3 - lightningcss: 1.22.1 - node-libs-browser: 2.2.1 - postcss: 8.4.33 - postcss-preset-env: 7.5.0(postcss@8.4.33) - react-error-overlay: 6.0.9 - react-refresh: 0.14.0 - transitivePeerDependencies: - - '@types/webpack' - - sockjs-client - - supports-color - - type-fest - - typescript - - webpack - - webpack-dev-server - - webpack-hot-middleware - - webpack-plugin-serve - dev: true - - /@umijs/case-sensitive-paths-webpack-plugin@1.0.1: - resolution: {integrity: sha512-kDKJ8yTarxwxGJDInG33hOpaQRZ//XpNuuznQ/1Mscypw6kappzFmrBr2dOYave++K7JHouoANF354UpbEQw0Q==} - dev: true - - /@umijs/core@4.1.1: - resolution: {integrity: sha512-frMq29AfyLThIfrsDmNGKueT49mhL6o7P9GhnSCP3ICwTYl2aTaI3GYzf32ZCmEhFYH8cU0Bcgx5GpOIdEJrLQ==} - dependencies: - '@umijs/bundler-utils': 4.1.1 - '@umijs/utils': 4.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@umijs/did-you-know@1.0.3: - resolution: {integrity: sha512-9EZ+rgY9+2HEaE+Z9dGkal2ccw8L4uuz77tCB5WpskW7NBZX5nOj82sqF/shEtA5tU3SWO/Mi4n35K3iONvDtw==} - dev: true - - /@umijs/es-module-parser-darwin-arm64@0.0.7: - resolution: {integrity: sha512-1QeNupekuVYVvL4UHyCRq4ISP2PNk4rDd9UOPONW+KpqTyP9p7RfgGpwB0VLPaFSu2ADtm0XZyIaYEGPY6zuDw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@umijs/es-module-parser-darwin-x64@0.0.7: - resolution: {integrity: sha512-FBFmfigmToPc9qBCW7wHiTYpqnLdPbAvoMGOydzAu2NspdPEF7TfILcr8vCPNbNe3vCobS+T/YM1dP+SagERlA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@umijs/es-module-parser-linux-arm-gnueabihf@0.0.7: - resolution: {integrity: sha512-AXfmg3htkadLGsXUyiyrTig4omGCWIN4l+HS7Qapqv0wlfFYSpC0KPemjyBQgzXO70tDcT+1FNhGjIy+yr2pIQ==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@umijs/es-module-parser-linux-arm64-gnu@0.0.7: - resolution: {integrity: sha512-2wSdChFc39fPJwvS8tRq+jx8qNlIwrjRk1hb3N5o0rJR+rqt+ceAyNPbYwpNBmUHW7xtmDQvJUeinvr7hIBP+w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - requiresBuild: true - dev: true - optional: true - - /@umijs/es-module-parser-linux-arm64-musl@0.0.7: - resolution: {integrity: sha512-cqQffARWkmQ3n1RYNKZR3aD6X8YaP6u1maASjDgPQOpZMAlv/OSDrM/7iGujWTs0PD0haockNG9/DcP6lgPHMw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - requiresBuild: true - dev: true - optional: true - - /@umijs/es-module-parser-linux-x64-gnu@0.0.7: - resolution: {integrity: sha512-PHrKHtT665Za0Ydjch4ACrNpRU+WIIden12YyF1CtMdhuLDSoU6UfdhF3NoDbgEUcXVDX/ftOqmj0SbH3R1uew==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - requiresBuild: true - dev: true - optional: true - - /@umijs/es-module-parser-linux-x64-musl@0.0.7: - resolution: {integrity: sha512-cyZvUK5lcECLWzLp/eU1lFlCETcz+LEb+wrdARQSST1dgoIGZsT4cqM1WzYmdZNk3o883tiZizLt58SieEiHBQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - requiresBuild: true - dev: true - optional: true - - /@umijs/es-module-parser-win32-arm64-msvc@0.0.7: - resolution: {integrity: sha512-V7WxnUI88RboSl0RWLNQeKBT7EDW35fW6Tn92zqtoHHxrhAIL9DtDyvC8REP4qTxeZ6Oej/Ax5I6IjsLx3yTOg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@umijs/es-module-parser-win32-x64-msvc@0.0.7: - resolution: {integrity: sha512-X3Pqy0l38hg6wMPquPeMHuoHU+Cx+wzyz32SVYCta+RPJQ7n9PjrEBiIuVAw5+GJZjSABN7LVr8u/n0RZT9EQA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@umijs/es-module-parser@0.0.7: - resolution: {integrity: sha512-x47CMi/Hw7Nkz3RXTUqlldH/UM+Tcmw2PziV3k+itJqTFJc8oVx3lzdUgCnG+eL3ZtmLPbOEBhPb30V0NytNDQ==} - engines: {node: '>= 10'} - optionalDependencies: - '@umijs/es-module-parser-darwin-arm64': 0.0.7 - '@umijs/es-module-parser-darwin-x64': 0.0.7 - '@umijs/es-module-parser-linux-arm-gnueabihf': 0.0.7 - '@umijs/es-module-parser-linux-arm64-gnu': 0.0.7 - '@umijs/es-module-parser-linux-arm64-musl': 0.0.7 - '@umijs/es-module-parser-linux-x64-gnu': 0.0.7 - '@umijs/es-module-parser-linux-x64-musl': 0.0.7 - '@umijs/es-module-parser-win32-arm64-msvc': 0.0.7 - '@umijs/es-module-parser-win32-x64-msvc': 0.0.7 - dev: true - - /@umijs/history@5.3.1: - resolution: {integrity: sha512-/e0cEGrR2bIWQD7pRl3dl9dcyRGeC9hoW0OCvUTT/hjY0EfUrkd6G8ZanVghPMpDuY5usxq9GVcvrT8KNXLWvA==} - dependencies: - '@babel/runtime': 7.23.8 - query-string: 6.14.1 - dev: true - - /@umijs/lint@4.1.1(eslint@8.56.0)(stylelint@14.16.1)(typescript@5.3.3): - resolution: {integrity: sha512-fy2edKuYw42eM3LuH/2AiH0ZKdembFx3SR8dIGKxf7BmEQOSfUhskLiNGE8tSRubCiVzGUWvZQDw1YQcU0bsHg==} - dependencies: - '@babel/core': 7.23.6 - '@babel/eslint-parser': 7.23.3(@babel/core@7.23.6)(eslint@8.56.0) - '@stylelint/postcss-css-in-js': 0.38.0(postcss-syntax@0.36.2)(postcss@8.4.33) - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3) - '@umijs/babel-preset-umi': 4.1.1 - eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.56.0)(typescript@5.3.3) - eslint-plugin-react: 7.33.2(eslint@8.56.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) - postcss: 8.4.33 - postcss-syntax: 0.36.2(postcss@8.4.33) - stylelint-config-standard: 25.0.0(stylelint@14.16.1) - transitivePeerDependencies: - - eslint - - jest - - postcss-html - - postcss-jsx - - postcss-less - - postcss-markdown - - postcss-scss - - stylelint - - supports-color - - typescript - dev: true - - /@umijs/mfsu@4.1.1: - resolution: {integrity: sha512-5W4vl0vtZvD36wPUo0EMDO6p04GGPBb7MwJVQCYGdumKEwdCQ+cnzEYoJE9Q9D5PBAwnOzbf2UNrAQgtJG70tA==} - dependencies: - '@umijs/bundler-esbuild': 4.1.1 - '@umijs/bundler-utils': 4.1.1 - '@umijs/utils': 4.1.1 - enhanced-resolve: 5.9.3 - is-equal: 1.7.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@umijs/plugin-run@4.1.1: - resolution: {integrity: sha512-n2E1eV065qsfuNL0kKn6N2zv75s7aRD9j0ZL3tqhAf7UqtUEx3hmODlnrIIMNzBI5YxSYwyjWxZCLvpzu5S8hQ==} - dependencies: - tsx: 3.14.0 - dev: true - - /@umijs/preset-umi@4.1.1(@types/node@20.5.1)(@types/react@18.2.48)(sass@1.70.0)(typescript@5.3.3)(webpack@5.89.0): - resolution: {integrity: sha512-mpm2aqyRttfAQRstCoA98oya5r0eZL6dWe3oddTsScjyO/T9rT9vOb2xyqlsE95DTNFEBeyCjr8dcvs2HifJ1w==} - dependencies: - '@iconify/utils': 2.1.1 - '@svgr/core': 6.5.1 - '@umijs/ast': 4.1.1 - '@umijs/babel-preset-umi': 4.1.1 - '@umijs/bundler-esbuild': 4.1.1 - '@umijs/bundler-utils': 4.1.1 - '@umijs/bundler-vite': 4.1.1(@types/node@20.5.1)(postcss@8.4.33)(sass@1.70.0) - '@umijs/bundler-webpack': 4.1.1(typescript@5.3.3)(webpack@5.89.0) - '@umijs/core': 4.1.1 - '@umijs/did-you-know': 1.0.3 - '@umijs/es-module-parser': 0.0.7 - '@umijs/history': 5.3.1 - '@umijs/mfsu': 4.1.1 - '@umijs/plugin-run': 4.1.1 - '@umijs/renderer-react': 4.1.1(react-dom@18.1.0)(react@18.1.0) - '@umijs/server': 4.1.1 - '@umijs/ui': 3.0.1 - '@umijs/utils': 4.1.1 - '@umijs/zod2ts': 4.1.1 - babel-plugin-dynamic-import-node: 2.3.3 - click-to-react-component: 1.1.0(@types/react@18.2.48)(react-dom@18.1.0)(react@18.1.0) - core-js: 3.34.0 - current-script-polyfill: 1.0.0 - enhanced-resolve: 5.9.3 - fast-glob: 3.2.12 - html-webpack-plugin: 5.5.0(webpack@5.89.0) - less-plugin-resolve: 1.0.2 - path-to-regexp: 1.7.0 - postcss: 8.4.33 - postcss-prefix-selector: 1.16.0(postcss@8.4.33) - react: 18.1.0 - react-dom: 18.1.0(react@18.1.0) - react-router: 6.3.0(react@18.1.0) - react-router-dom: 6.3.0(react-dom@18.1.0)(react@18.1.0) - regenerator-runtime: 0.13.11 - transitivePeerDependencies: - - '@types/node' - - '@types/react' - - '@types/webpack' - - rollup - - sass - - sockjs-client - - stylus - - sugarss - - supports-color - - terser - - type-fest - - typescript - - webpack - - webpack-dev-server - - webpack-hot-middleware - - webpack-plugin-serve - dev: true - - /@umijs/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(webpack@5.89.0): - resolution: {integrity: sha512-RtFvB+/GmjRhpHcqNgnw8iWZpTlxOnmNxi8eDcecxMmxmSgeDj25LV0jr4Q6rOhv3GTIfVGBhkwz+khGT5tfmg==} - engines: {node: '>= 10.13'} - peerDependencies: - '@types/webpack': 4.x || 5.x - react-refresh: '>=0.10.0 <1.0.0' - sockjs-client: ^1.4.0 - type-fest: '>=0.17.0 <5.0.0' - webpack: '>=4.43.0 <6.0.0' - webpack-dev-server: 3.x || 4.x - webpack-hot-middleware: 2.x - webpack-plugin-serve: 0.x || 1.x - peerDependenciesMeta: - '@types/webpack': - optional: true - sockjs-client: - optional: true - type-fest: - optional: true - webpack-dev-server: - optional: true - webpack-hot-middleware: - optional: true - webpack-plugin-serve: - optional: true - dependencies: - ansi-html-community: 0.0.8 - common-path-prefix: 3.0.0 - core-js-pure: 3.35.1 - error-stack-parser: 2.1.4 - find-up: 5.0.0 - html-entities: 2.4.0 - loader-utils: 2.0.4 - react-refresh: 0.14.0 - schema-utils: 3.3.0 - source-map: 0.7.4 - webpack: 5.89.0 - dev: true - - /@umijs/renderer-react@4.1.1(react-dom@18.1.0)(react@18.1.0): - resolution: {integrity: sha512-h6mXzTeadXGjUUDfBOjNjIFPkiyt1N0oIEK+eS2PH3SaZGCUa8HNm+yWJmUxxDqbo/+1rvnN8z1oEGDRHfHwXA==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - dependencies: - '@babel/runtime': 7.23.6 - '@loadable/component': 5.15.2(react@18.1.0) - history: 5.3.0 - react: 18.1.0 - react-dom: 18.1.0(react@18.1.0) - react-helmet-async: 1.3.0(react-dom@18.1.0)(react@18.1.0) - react-router-dom: 6.3.0(react-dom@18.1.0)(react@18.1.0) - dev: true - - /@umijs/renderer-react@4.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-h6mXzTeadXGjUUDfBOjNjIFPkiyt1N0oIEK+eS2PH3SaZGCUa8HNm+yWJmUxxDqbo/+1rvnN8z1oEGDRHfHwXA==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - dependencies: - '@babel/runtime': 7.23.6 - '@loadable/component': 5.15.2(react@18.2.0) - history: 5.3.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) - react-router-dom: 6.3.0(react-dom@18.2.0)(react@18.2.0) - dev: true - - /@umijs/route-utils@4.0.1: - resolution: {integrity: sha512-+1ixf1BTOLuH+ORb4x8vYMPeIt38n9q0fJDwhv9nSxrV46mxbLF0nmELIo9CKQB2gHfuC4+hww6xejJ6VYnBHQ==} - dev: false - - /@umijs/server@4.1.1: - resolution: {integrity: sha512-MNwj2jbmAcpHP+uNyhAQWZdLfNpsKy05ETpVWtOmBlAmkK8J9IBpHGSPkWSJgTiq6NiYM6vIRm9wKyVwGUxYGA==} - dependencies: - '@umijs/bundler-utils': 4.1.1 - history: 5.3.0 - react: 18.1.0 - react-dom: 18.1.0(react@18.1.0) - react-router-dom: 6.3.0(react-dom@18.1.0)(react@18.1.0) - transitivePeerDependencies: - - supports-color - dev: true - - /@umijs/test@4.1.1(@babel/core@7.23.7): - resolution: {integrity: sha512-4Q5qaYX86mZbw0Jbirr0kZpaU1Jfi1Lq440EmRYqoPtKQBT5hX5fo98LWxyMPv1PTL/g/PC6sYr0uSLp+qjtOA==} - dependencies: - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) - '@jest/types': 27.5.1 - '@umijs/bundler-utils': 4.1.1 - '@umijs/utils': 4.1.1 - babel-jest: 29.7.0(@babel/core@7.23.7) - esbuild: 0.17.19 - identity-obj-proxy: 3.0.0 - isomorphic-unfetch: 4.0.2 - transitivePeerDependencies: - - '@babel/core' - - supports-color - dev: true - - /@umijs/ui@3.0.1: - resolution: {integrity: sha512-zcz37AJH0xt/6XVVbyO/hmsK9Hq4vH23HZ4KYVi5A8rbM9KeJkJigTS7ELOdArawZhVNGe+h3a5Oixs4a2QsWw==} - dev: true - - /@umijs/use-params@1.0.9(react@18.2.0): - resolution: {integrity: sha512-QlN0RJSBVQBwLRNxbxjQ5qzqYIGn+K7USppMoIOVlf7fxXHsnQZ2bEsa6Pm74bt6DVQxpUE8HqvdStn6Y9FV1w==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - - /@umijs/utils@4.1.1: - resolution: {integrity: sha512-hbnbJR3RA7fu4E7q4JFZ47XMYArr6Zn5bftr8YZ+o6hzJlomr4gzoOXE+XxM7rVMK4AFZoc+QZgNTJyISd08Pg==} - dependencies: - chokidar: 3.5.3 - pino: 7.11.0 - dev: true - - /@umijs/zod2ts@4.1.1: - resolution: {integrity: sha512-ni4at60OdOL4qMKi7USdq8T6lNWAbaylXmDNUg063nT/FIzbwD7bFzKO0OYnt4SoV20dtBLSV5zlundFK4hVSQ==} - dev: true - - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true - - /@vercel/ncc@0.33.3: - resolution: {integrity: sha512-JGZ11QV+/ZcfudW2Cz2JVp54/pJNXbsuWRgSh2ZmmZdQBKXqBtIGrwI1Wyx8nlbzAiEFe7FHi4K1zX4//jxTnQ==} - hasBin: true - dev: true - - /@vitejs/plugin-react@4.0.0(vite@4.3.1): - resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 - dependencies: - '@babel/core': 7.23.7 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.7) - react-refresh: 0.14.0 - vite: 4.3.1(@types/node@20.5.1)(less@4.1.3)(sass@1.70.0) - transitivePeerDependencies: - - supports-color - dev: true - - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} - dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: true - - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: true - - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: true - - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - dev: true - - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: true - - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - dev: true - - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - dependencies: - '@xtuc/ieee754': 1.2.0 - dev: true - - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - dependencies: - '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: true - - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 - dev: true - - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - dev: true - - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - dev: true - - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - dev: true - - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@xtuc/long': 4.2.2 - dev: true - - /@xtuc/ieee754@1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: true - - /@xtuc/long@4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: true - - /@yarnpkg/lockfile@1.1.0: - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - dev: true - - /@yarnpkg/parsers@3.0.0-rc.46: - resolution: {integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==} - engines: {node: '>=14.15.0'} - dependencies: - js-yaml: 3.14.1 - tslib: 2.6.2 - dev: true - - /@zkochan/js-yaml@0.0.6: - resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - - /JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - dev: true - - /abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /acorn-import-assertions@1.9.0(acorn@8.11.3): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - peerDependencies: - acorn: ^8 - dependencies: - acorn: 8.11.3 - dev: true - - /acorn-jsx@5.3.2(acorn@8.11.3): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.11.3 - dev: true - - /acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - dev: true - - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /add-dom-event-listener@1.1.0: - resolution: {integrity: sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==} - dependencies: - object-assign: 4.1.1 - dev: false - - /add-stream@1.0.0: - resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} - dev: true - - /agent-base@4.3.0: - resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} - engines: {node: '>= 4.0.0'} - dependencies: - es6-promisify: 5.0.0 - dev: true - - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /agentkeepalive@3.5.2: - resolution: {integrity: sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==} - engines: {node: '>= 4.0.0'} - dependencies: - humanize-ms: 1.2.1 - dev: true - - /agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - dependencies: - humanize-ms: 1.2.1 - dev: true - - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: true - - /ahooks-v3-count@1.0.0: - resolution: {integrity: sha512-V7uUvAwnimu6eh/PED4mCDjE7tokeZQLKlxg9lCTMPhN+NjsSbtdacByVlR1oluXQzD3MOw55wylDmQo4+S9ZQ==} - dev: false - - /ahooks@3.7.8(react@18.2.0): - resolution: {integrity: sha512-e/NMlQWoCjaUtncNFIZk3FG1ImSkV/JhScQSkTqnftakRwdfZWSw6zzoWSG9OMYqPNs2MguDYBUFFC6THelWXA==} - engines: {node: '>=8.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@babel/runtime': 7.23.8 - '@types/js-cookie': 2.2.7 - ahooks-v3-count: 1.0.0 - dayjs: 1.11.10 - intersection-observer: 0.12.2 - js-cookie: 2.2.1 - lodash: 4.17.21 - react: 18.2.0 - resize-observer-polyfill: 1.5.1 - screenfull: 5.2.0 - tslib: 2.6.2 - dev: false - - /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - dependencies: - ajv: 6.12.6 - dev: true - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - - /animated-scroll-to@2.3.0: - resolution: {integrity: sha512-PT/5MSKCWQaK2kuOl2HT2KJMuJEvUS4/TgMhWy82c2EmF74/CIkvPBPKOvd8nMYP6Higo7xCn49/iSW9BccMoQ==} - dev: true - - /ansi-align@2.0.0: - resolution: {integrity: sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==} - dependencies: - string-width: 2.1.1 - dev: true - - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: true - - /ansi-escapes@3.2.0: - resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} - engines: {node: '>=4'} - dev: true - - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: true - - /ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} - dependencies: - type-fest: 1.4.0 - dev: true - - /ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - dev: true - - /ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - dev: true - - /ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - dev: true - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true - - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: true - - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true - - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: true - - /antd-img-crop@4.21.0(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-YA5GUMfwoDoSJNWinGOmtYFDFLf+t7Rhfg7ZusbHgFpKCq8n9W0005LeCWgSP4C0iK3vxNHAT3DaRa3rTgKFlQ==} - peerDependencies: - antd: '>=4.0.0' - react: '>=16.8.0' - react-dom: '>=16.8.0' - dependencies: - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - compare-versions: 6.1.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-easy-crop: 5.0.5(react-dom@18.2.0)(react@18.2.0) - tslib: 2.6.2 - dev: false - - /antd-style@3.6.1(@types/react@18.2.48)(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-KpKXiAIV3CAe6TfSh/m6ET2vGuhAof7qfqeaouh5WZ0JDl5jDXXSFPeEfqvZuHAckTl+A0NzArvIHKgKt/NZ9g==} - peerDependencies: - antd: '>=5.8.1' - react: '>=18' - dependencies: - '@ant-design/cssinjs': 1.18.4(react-dom@18.2.0)(react@18.2.0) - '@babel/runtime': 7.23.8 - '@emotion/cache': 11.11.0 - '@emotion/css': 11.11.2 - '@emotion/react': 11.11.3(@types/react@18.2.48)(react@18.2.0) - '@emotion/serialize': 1.1.3 - '@emotion/server': 11.11.0(@emotion/css@11.11.2) - '@emotion/utils': 1.2.1 - antd: 5.13.2(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - use-merge-value: 1.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - react-dom - dev: false - - /antd@5.13.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-P+N8gc0NOPy2WqJj/57Ey3dZUmb7nEUwAM+CIJaR5SOEjZnhEtMGRJSt+3lnhJ3MNRR39aR6NYkRVp2mYfphiA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@ant-design/colors': 7.0.2 - '@ant-design/cssinjs': 1.18.4(react-dom@18.2.0)(react@18.2.0) - '@ant-design/icons': 5.2.6(react-dom@18.2.0)(react@18.2.0) - '@ant-design/react-slick': 1.0.2(react@18.2.0) - '@ctrl/tinycolor': 3.6.1 - '@rc-component/color-picker': 1.5.1(react-dom@18.2.0)(react@18.2.0) - '@rc-component/mutate-observer': 1.1.0(react-dom@18.2.0)(react@18.2.0) - '@rc-component/tour': 1.12.3(react-dom@18.2.0)(react@18.2.0) - '@rc-component/trigger': 1.18.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - copy-to-clipboard: 3.3.3 - dayjs: 1.11.10 - qrcode.react: 3.1.0(react@18.2.0) - rc-cascader: 3.21.2(react-dom@18.2.0)(react@18.2.0) - rc-checkbox: 3.1.0(react-dom@18.2.0)(react@18.2.0) - rc-collapse: 3.7.2(react-dom@18.2.0)(react@18.2.0) - rc-dialog: 9.3.4(react-dom@18.2.0)(react@18.2.0) - rc-drawer: 7.0.0(react-dom@18.2.0)(react@18.2.0) - rc-dropdown: 4.1.0(react-dom@18.2.0)(react@18.2.0) - rc-field-form: 1.41.0(react-dom@18.2.0)(react@18.2.0) - rc-image: 7.5.1(react-dom@18.2.0)(react@18.2.0) - rc-input: 1.4.3(react-dom@18.2.0)(react@18.2.0) - rc-input-number: 8.6.1(react-dom@18.2.0)(react@18.2.0) - rc-mentions: 2.10.1(react-dom@18.2.0)(react@18.2.0) - rc-menu: 9.12.4(react-dom@18.2.0)(react@18.2.0) - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-notification: 5.3.0(react-dom@18.2.0)(react@18.2.0) - rc-pagination: 4.0.4(react-dom@18.2.0)(react@18.2.0) - rc-picker: 3.14.6(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0) - rc-progress: 3.5.1(react-dom@18.2.0)(react@18.2.0) - rc-rate: 2.12.0(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-segmented: 2.2.2(react-dom@18.2.0)(react@18.2.0) - rc-select: 14.11.0(react-dom@18.2.0)(react@18.2.0) - rc-slider: 10.5.0(react-dom@18.2.0)(react@18.2.0) - rc-steps: 6.0.1(react-dom@18.2.0)(react@18.2.0) - rc-switch: 4.1.0(react-dom@18.2.0)(react@18.2.0) - rc-table: 7.37.0(react-dom@18.2.0)(react@18.2.0) - rc-tabs: 14.0.0(react-dom@18.2.0)(react@18.2.0) - rc-textarea: 1.6.3(react-dom@18.2.0)(react@18.2.0) - rc-tooltip: 6.1.3(react-dom@18.2.0)(react@18.2.0) - rc-tree: 5.8.2(react-dom@18.2.0)(react@18.2.0) - rc-tree-select: 5.17.0(react-dom@18.2.0)(react@18.2.0) - rc-upload: 4.5.2(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - scroll-into-view-if-needed: 3.1.0 - throttle-debounce: 5.0.0 - transitivePeerDependencies: - - date-fns - - luxon - - moment - dev: false - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /aproba@1.2.0: - resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} - dev: true - - /aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: true - - /are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - dev: true - - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true - - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: true - - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} - engines: {node: '>=10'} - dependencies: - tslib: 2.6.2 - dev: true - - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 - - /array-differ@3.0.0: - resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} - engines: {node: '>=8'} - dev: true - - /array-ify@1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - dev: true - - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-string: 1.0.7 - - /array-tree-filter@2.1.0: - resolution: {integrity: sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==} - dev: false - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.reduce@1.0.6: - resolution: {integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - dev: true - - /array.prototype.tosorted@1.1.2: - resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 - dev: true - - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 - - /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: true - - /arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - dev: true - - /asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} - dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 - dev: true - - /assert@1.5.1: - resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} - dependencies: - object.assign: 4.1.5 - util: 0.10.4 - dev: true - - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true - - /astring@1.8.6: - resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} - hasBin: true - dev: true - - /async-validator@4.2.5: - resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} - dev: false - - /async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - dev: true - - /asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - dependencies: - has-symbols: 1.0.3 - dev: true - - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true - - /atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: true - - /atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - dev: true - - /autoprefixer@10.4.17(postcss@8.4.33): - resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.22.2 - caniuse-lite: 1.0.30001579 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - - /axe-core@3.5.6: - resolution: {integrity: sha512-LEUDjgmdJoA3LqklSTwKYqkjcZ4HKc4ddIYGSAiSkr46NTjzg2L9RNB+lekO9P7Dlpa87+hBtzc2Fzn/+GUWMQ==} - engines: {node: '>=4'} - dev: true - - /axios@0.18.1: - resolution: {integrity: sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==} - deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410 - dependencies: - follow-redirects: 1.5.10 - is-buffer: 2.0.5 - transitivePeerDependencies: - - supports-color - dev: true - - /axios@1.6.5: - resolution: {integrity: sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==} - dependencies: - follow-redirects: 1.15.5 - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - dev: true - - /babel-jest@29.7.0(@babel/core@7.23.7): - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - dependencies: - '@babel/core': 7.23.7 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.23.7) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-dynamic-import-node@2.3.3: - resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} - dependencies: - object.assign: 4.1.5 - dev: true - - /babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - dependencies: - '@babel/helper-plugin-utils': 7.22.5 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.6 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.5 - dev: true - - /babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} - dependencies: - '@babel/runtime': 7.23.8 - cosmiconfig: 7.1.0 - resolve: 1.22.8 - dev: false - - /babel-plugin-module-resolver@4.1.0: - resolution: {integrity: sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==} - engines: {node: '>= 8.0.0'} - dependencies: - find-babel-config: 1.2.0 - glob: 7.2.3 - pkg-up: 3.1.0 - reselect: 4.1.8 - resolve: 1.22.8 - dev: true - - /babel-plugin-transform-define@2.0.1: - resolution: {integrity: sha512-7lDR1nFGSJHmhq/ScQtp9LTDmNE2yKPoLtwfiu+WQZnj84XL/J/5AZWZXwYcOwbDtUPhtg+y0yxTiP/oGDU6Kw==} - engines: {node: '>= 8.x.x'} - dependencies: - lodash: 4.17.21 - traverse: 0.6.6 - dev: true - - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.7): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.7 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.7) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.7) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.23.7): - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.7 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.7) - dev: true - - /bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - dev: true - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - - /balanced-match@2.0.0: - resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} - dev: true - - /base-64@1.0.0: - resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} - dev: false - - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true - - /before-after-hook@2.2.3: - resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} - dev: true - - /better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - dependencies: - is-windows: 1.0.2 - dev: true - - /big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - dev: true - - /big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - - /binaryextensions@2.3.0: - resolution: {integrity: sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==} - engines: {node: '>=0.8'} - dev: true - - /bl@1.2.3: - resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} - dependencies: - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - dev: true - - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true - - /bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - dev: true - - /bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - dev: true - - /bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - dev: true - - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: true - - /boxen@1.3.0: - resolution: {integrity: sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==} - engines: {node: '>=4'} - dependencies: - ansi-align: 2.0.0 - camelcase: 4.1.0 - chalk: 2.4.2 - cli-boxes: 1.0.0 - string-width: 2.1.1 - term-size: 1.2.0 - widest-line: 2.0.1 - dev: true - - /bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.52 - dev: true - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - dev: true - - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - - /breakword@1.0.6: - resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} - dependencies: - wcwidth: 1.0.1 - dev: true - - /brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - dev: true - - /browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.4 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - dev: true - - /browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - dependencies: - cipher-base: 1.0.4 - des.js: 1.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /browserify-rsa@4.1.0: - resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - dev: true - - /browserify-sign@4.2.2: - resolution: {integrity: sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==} - engines: {node: '>= 4'} - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.5.4 - inherits: 2.0.4 - parse-asn1: 5.1.6 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - dev: true - - /browserify-zlib@0.2.0: - resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - dependencies: - pako: 1.0.11 - dev: true - - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001579 - electron-to-chromium: 1.4.642 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) - dev: true - - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - dependencies: - node-int64: 0.4.0 - dev: true - - /buffer-alloc-unsafe@1.1.0: - resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} - dev: true - - /buffer-alloc@1.2.0: - resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} - dependencies: - buffer-alloc-unsafe: 1.1.0 - buffer-fill: 1.0.0 - dev: true - - /buffer-fill@1.0.0: - resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} - dev: true - - /buffer-from@0.1.2: - resolution: {integrity: sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==} - dev: false - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - dev: true - - /buffer@4.9.2: - resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - isarray: 1.0.0 - dev: true - - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true - - /builtin-status-codes@3.0.0: - resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} - dev: true - - /builtins@1.0.3: - resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - dev: true - - /builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - dependencies: - semver: 7.5.4 - dev: true - - /bundle-name@3.0.0: - resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} - engines: {node: '>=12'} - dependencies: - run-applescript: 5.0.0 - dev: true - - /byte-size@8.1.1: - resolution: {integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==} - engines: {node: '>=12.17'} - dev: true - - /cacache@10.0.4: - resolution: {integrity: sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==} - dependencies: - bluebird: 3.7.2 - chownr: 1.1.4 - glob: 7.2.3 - graceful-fs: 4.2.11 - lru-cache: 4.1.5 - mississippi: 2.0.0 - mkdirp: 0.5.6 - move-concurrently: 1.0.1 - promise-inflight: 1.0.1(bluebird@3.7.2) - rimraf: 2.7.1 - ssri: 5.3.0 - unique-filename: 1.1.1 - y18n: 4.0.3 - dev: true - - /cacache@17.1.4: - resolution: {integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - '@npmcli/fs': 3.1.0 - fs-minipass: 3.0.3 - glob: 10.3.10 - lru-cache: 7.18.3 - minipass: 7.0.4 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 4.0.0 - ssri: 10.0.5 - tar: 6.1.11 - unique-filename: 3.0.0 - dev: true - - /cacache@18.0.2: - resolution: {integrity: sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@npmcli/fs': 3.1.0 - fs-minipass: 3.0.3 - glob: 10.3.10 - lru-cache: 10.1.0 - minipass: 7.0.4 - minipass-collect: 2.0.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 4.0.0 - ssri: 10.0.5 - tar: 6.1.11 - unique-filename: 3.0.0 - dev: true - - /cacache@9.3.0: - resolution: {integrity: sha512-Vbi8J1XfC8v+FbQ6QkOtKXsHpPnB0i9uMeYFJoj40EbdOsEqWB3DPpNjfsnYBkqOPYA8UvrqH6FZPpBP0zdN7g==} - dependencies: - bluebird: 3.7.2 - chownr: 1.1.4 - glob: 7.2.3 - graceful-fs: 4.2.11 - lru-cache: 4.1.5 - mississippi: 1.3.1 - mkdirp: 0.5.6 - move-concurrently: 1.0.1 - promise-inflight: 1.0.1(bluebird@3.7.2) - rimraf: 2.7.1 - ssri: 4.1.6 - unique-filename: 1.1.1 - y18n: 3.2.2 - dev: true - - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} - dependencies: - function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.2.0 - - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - /camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - dependencies: - pascal-case: 3.1.2 - tslib: 2.6.2 - dev: true - - /camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - dev: true - - /camelcase@4.1.0: - resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} - engines: {node: '>=4'} - dev: true - - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true - - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true - - /caniuse-lite@1.0.30001579: - resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==} - dev: true - - /capture-stack-trace@1.0.2: - resolution: {integrity: sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==} - engines: {node: '>=0.10.0'} - dev: true - - /ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: true - - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - /chalk@4.1.0: - resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true - - /character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: true - - /character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: true - - /character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: true - - /character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dev: true - - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true - - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: true - - /chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: true - - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - dev: true - - /ci-info@1.6.0: - resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==} - dev: true - - /ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - dev: true - - /cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /classnames@2.3.2: - resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} - dev: true - - /classnames@2.5.1: - resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - - /clean-css@5.3.3: - resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} - engines: {node: '>= 10.0'} - dependencies: - source-map: 0.6.1 - dev: true - - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true - - /cli-boxes@1.0.0: - resolution: {integrity: sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==} - engines: {node: '>=0.10.0'} - dev: true - - /cli-cursor@2.1.0: - resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} - engines: {node: '>=4'} - dependencies: - restore-cursor: 2.0.0 - dev: true - - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: true - - /cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - restore-cursor: 4.0.0 - dev: true - - /cli-spinners@1.3.1: - resolution: {integrity: sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==} - engines: {node: '>=4'} - dev: true - - /cli-spinners@2.6.1: - resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} - engines: {node: '>=6'} - dev: true - - /cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - dev: true - - /cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - slice-ansi: 5.0.0 - string-width: 5.1.2 - dev: true - - /cli-width@2.2.1: - resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} - dev: true - - /cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: true - - /click-to-react-component@1.1.0(@types/react@18.2.48)(react-dom@18.1.0)(react@18.1.0): - resolution: {integrity: sha512-/DjZemufS1BkxyRgZL3r7HXVVOFRWVQi5Xd4EBnjxZMwrHEh0OlUVA2N9CjXkZ0x8zMf8dL1cKnnx+xUWUg4VA==} - peerDependencies: - react: '>=16.8.0' - dependencies: - '@floating-ui/react-dom-interactions': 0.3.1(@types/react@18.2.48)(react-dom@18.1.0)(react@18.1.0) - htm: 3.1.1 - react: 18.1.0 - react-merge-refs: 1.1.0 - transitivePeerDependencies: - - '@types/react' - - react-dom - dev: true - - /client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false - - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: true - - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - dev: true - - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true - - /clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - dev: false - - /cmd-shim@6.0.1: - resolution: {integrity: sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /coa@2.0.2: - resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} - engines: {node: '>= 4.0'} - dependencies: - '@types/q': 1.5.8 - chalk: 2.4.2 - q: 1.5.1 - dev: true - - /codesandbox-import-util-types@2.2.3: - resolution: {integrity: sha512-Qj00p60oNExthP2oR3vvXmUGjukij+rxJGuiaKM6tyUmSyimdZsqHI/TUvFFClAffk9s7hxGnQgWQ8KCce27qQ==} - dev: true - - /codesandbox-import-utils@2.2.3: - resolution: {integrity: sha512-ymtmcgZKU27U+nM2qUb21aO8Ut/u2S9s6KorOgG81weP+NA0UZkaHKlaRqbLJ9h4i/4FLvwmEXYAnTjNmp6ogg==} - dependencies: - codesandbox-import-util-types: 2.2.3 - istextorbinary: 2.6.0 - lz-string: 1.5.0 - dev: true - - /codesandbox@2.2.3: - resolution: {integrity: sha512-IAkWFk6UUglOhSemI7UFgNNL/jgg+1YjVEIllFULLgsaHhFnY51pCqAifMNuAd5d9Zp4Nk/xMgrEaGNV0L4Xlg==} - hasBin: true - dependencies: - axios: 0.18.1 - chalk: 2.4.2 - codesandbox-import-util-types: 2.2.3 - codesandbox-import-utils: 2.2.3 - commander: 2.20.3 - datauri: 3.0.0 - filesize: 3.6.1 - fs-extra: 3.0.1 - git-branch: 1.0.0 - git-repo-name: 0.6.0 - git-username: 0.5.1 - humps: 2.0.1 - inquirer: 6.5.2 - lodash: 4.17.21 - lz-string: 1.5.0 - ms: 2.1.3 - open: 6.4.0 - ora: 1.4.0 - pacote: 2.7.38 - shortid: 2.2.16 - update-notifier: 2.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - dev: true - - /color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - dev: true - - /color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 - dev: true - - /colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - dev: true - - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: true - - /colors@1.2.5: - resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} - engines: {node: '>=0.1.90'} - dev: true - - /columnify@1.6.0: - resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} - engines: {node: '>=8.0.0'} - dependencies: - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: true - - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: true - - /comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - dev: true - - /commander@11.0.0: - resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} - engines: {node: '>=16'} - dev: true - - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: true - - /commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - dev: true - - /commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - requiresBuild: true - dev: true - optional: true - - /common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - dev: true - - /compare-func@2.0.0: - resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - dependencies: - array-ify: 1.0.0 - dot-prop: 5.3.0 - dev: true - - /compare-versions@6.1.0: - resolution: {integrity: sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==} - dev: false - - /compute-scroll-into-view@3.1.0: - resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==} - dev: false - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - - /concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - dev: true - - /concat-stream@2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} - engines: {'0': node >= 6.0} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - typedarray: 0.0.6 - dev: true - - /concaveman@1.2.1: - resolution: {integrity: sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==} - dependencies: - point-in-polygon: 1.1.0 - rbush: 3.0.1 - robust-predicates: 2.0.4 - tinyqueue: 2.0.3 - dev: false - - /configstore@3.1.5: - resolution: {integrity: sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==} - engines: {node: '>=4'} - dependencies: - dot-prop: 4.2.1 - graceful-fs: 4.2.11 - make-dir: 1.3.0 - unique-string: 1.0.0 - write-file-atomic: 2.4.3 - xdg-basedir: 3.0.0 - dev: true - - /console-browserify@1.2.0: - resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} - dev: true - - /console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: true - - /constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - dev: true - - /conventional-changelog-angular@6.0.0: - resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} - engines: {node: '>=14'} - dependencies: - compare-func: 2.0.0 - dev: true - - /conventional-changelog-angular@7.0.0: - resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} - engines: {node: '>=16'} - dependencies: - compare-func: 2.0.0 - dev: true - - /conventional-changelog-conventionalcommits@6.1.0: - resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==} - engines: {node: '>=14'} - dependencies: - compare-func: 2.0.0 - dev: true - - /conventional-changelog-core@5.0.1: - resolution: {integrity: sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==} - engines: {node: '>=14'} - dependencies: - add-stream: 1.0.0 - conventional-changelog-writer: 6.0.1 - conventional-commits-parser: 4.0.0 - dateformat: 3.0.3 - get-pkg-repo: 4.2.1 - git-raw-commits: 3.0.0 - git-remote-origin-url: 2.0.0 - git-semver-tags: 5.0.1 - normalize-package-data: 3.0.3 - read-pkg: 3.0.0 - read-pkg-up: 3.0.0 - dev: true - - /conventional-changelog-preset-loader@3.0.0: - resolution: {integrity: sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==} - engines: {node: '>=14'} - dev: true - - /conventional-changelog-writer@6.0.1: - resolution: {integrity: sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==} - engines: {node: '>=14'} - hasBin: true - dependencies: - conventional-commits-filter: 3.0.0 - dateformat: 3.0.3 - handlebars: 4.7.8 - json-stringify-safe: 5.0.1 - meow: 8.1.2 - semver: 7.5.4 - split: 1.0.1 - dev: true - - /conventional-commits-filter@3.0.0: - resolution: {integrity: sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==} - engines: {node: '>=14'} - dependencies: - lodash.ismatch: 4.4.0 - modify-values: 1.0.1 - dev: true - - /conventional-commits-parser@4.0.0: - resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} - engines: {node: '>=14'} - hasBin: true - dependencies: - JSONStream: 1.3.5 - is-text-path: 1.0.1 - meow: 8.1.2 - split2: 3.2.2 - dev: true - - /conventional-recommended-bump@7.0.1: - resolution: {integrity: sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==} - engines: {node: '>=14'} - hasBin: true - dependencies: - concat-stream: 2.0.0 - conventional-changelog-preset-loader: 3.0.0 - conventional-commits-filter: 3.0.0 - conventional-commits-parser: 4.0.0 - git-raw-commits: 3.0.0 - git-semver-tags: 5.0.1 - meow: 8.1.2 - dev: true - - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: false - - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true - - /copy-anything@2.0.6: - resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - dependencies: - is-what: 3.14.1 - dev: true - - /copy-concurrently@1.0.5: - resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} - dependencies: - aproba: 1.2.0 - fs-write-stream-atomic: 1.0.10 - iferr: 0.1.5 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - dev: true - - /copy-to-clipboard@3.3.3: - resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} - dependencies: - toggle-selection: 1.0.6 - - /core-js-pure@3.35.1: - resolution: {integrity: sha512-zcIdi/CL3MWbBJYo5YCeVAAx+Sy9yJE9I3/u9LkFABwbeaPhTMRWraM8mYFp9jW5Z50hOy7FVzCc8dCrpZqtIQ==} - requiresBuild: true - dev: true - - /core-js@3.34.0: - resolution: {integrity: sha512-aDdvlDder8QmY91H88GzNi9EtQi2TjvQhpCX6B1v/dAZHU1AuLgHvRh54RiOerpEhEW46Tkf+vgAViB/CWC0ag==} - requiresBuild: true - dev: true - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - /cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - dev: true - - /cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6)(ts-node@10.9.2)(typescript@5.3.3): - resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} - engines: {node: '>=v14.21.3'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=7' - ts-node: '>=10' - typescript: '>=4' - dependencies: - '@types/node': 20.5.1 - cosmiconfig: 8.3.6(typescript@5.3.3) - ts-node: 10.9.2(@types/node@20.5.1)(typescript@5.3.3) - typescript: 5.3.3 - dev: true - - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - /cosmiconfig@8.3.6(typescript@5.3.3): - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - typescript: 5.3.3 - dev: true - - /countup.js@2.8.0: - resolution: {integrity: sha512-f7xEhX0awl4NOElHulrl4XRfKoNH3rB+qfNSZZyjSZhaAoUk6elvhH+MNxMmlmuUJ2/QNTWPSA7U4mNtIAKljQ==} - dev: true - - /create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.4 - dev: true - - /create-error-class@3.0.2: - resolution: {integrity: sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==} - engines: {node: '>=0.10.0'} - dependencies: - capture-stack-trace: 1.0.2 - dev: true - - /create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - dependencies: - cipher-base: 1.0.4 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - dev: true - - /create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - dependencies: - cipher-base: 1.0.4 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - dev: true - - /create-react-context@0.3.0(prop-types@15.8.1)(react@18.2.0): - resolution: {integrity: sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==} - peerDependencies: - prop-types: ^15.0.0 - react: ^0.14.0 || ^15.0.0 || ^16.0.0 - dependencies: - gud: 1.0.0 - prop-types: 15.8.1 - react: 18.2.0 - warning: 4.0.3 - dev: false - - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true - - /cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /crypto-browserify@3.12.0: - resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.2 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - dev: true - - /crypto-random-string@1.0.0: - resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} - engines: {node: '>=4'} - dev: true - - /css-blank-pseudo@3.0.3(postcss@8.4.33): - resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} - engines: {node: ^12 || ^14 || >=16} - hasBin: true - peerDependencies: - postcss: ^8.4 - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 - dev: true - - /css-functions-list@3.2.1: - resolution: {integrity: sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==} - engines: {node: '>=12 || >=16'} - dev: true - - /css-has-pseudo@3.0.4(postcss@8.4.33): - resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} - engines: {node: ^12 || ^14 || >=16} - hasBin: true - peerDependencies: - postcss: ^8.4 - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 - dev: true - - /css-loader@6.7.1(webpack@5.89.0): - resolution: {integrity: sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.0.0 - dependencies: - icss-utils: 5.1.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.33) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.33) - postcss-modules-scope: 3.1.1(postcss@8.4.33) - postcss-modules-values: 4.0.0(postcss@8.4.33) - postcss-value-parser: 4.2.0 - semver: 7.5.4 - webpack: 5.89.0 - dev: true - - /css-prefers-color-scheme@6.0.3(postcss@8.4.33): - resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} - engines: {node: ^12 || ^14 || >=16} - hasBin: true - peerDependencies: - postcss: ^8.4 - dependencies: - postcss: 8.4.33 - dev: true - - /css-select-base-adapter@0.1.1: - resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} - dev: true - - /css-select@2.1.0: - resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} - dependencies: - boolbase: 1.0.0 - css-what: 3.4.2 - domutils: 1.7.0 - nth-check: 1.0.2 - dev: true - - /css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - dev: true - - /css-tree@1.0.0-alpha.37: - resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.4 - source-map: 0.6.1 - dev: true - - /css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - dev: true - - /css-what@3.4.2: - resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} - engines: {node: '>= 6'} - dev: true - - /css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - dev: true - - /css@3.0.0: - resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} - dependencies: - inherits: 2.0.4 - source-map: 0.6.1 - source-map-resolve: 0.6.0 - dev: true - - /cssdb@6.6.3: - resolution: {integrity: sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==} - dev: true - - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - dependencies: - css-tree: 1.1.3 - dev: true - - /csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - /csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - dev: true - - /csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - dev: true - - /csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - dev: true - - /csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} - dependencies: - csv-generate: 3.4.3 - csv-parse: 4.16.3 - csv-stringify: 5.6.5 - stream-transform: 2.1.3 - dev: true - - /current-script-polyfill@1.0.0: - resolution: {integrity: sha512-qv8s+G47V6Hq+g2kRE5th+ASzzrL7b6l+tap1DHKK25ZQJv3yIFhH96XaQ7NGL+zRW3t/RDbweJf/dJDe5Z5KA==} - dev: true - - /cwd@0.9.1: - resolution: {integrity: sha512-4+0D+ojEasdLndYX4Cqff057I/Jp6ysXpwKkdLQLnZxV8f6IYZmZtTP5uqD91a/kWqejoc0sSqK4u8wpTKCh8A==} - engines: {node: '>=0.8'} - dependencies: - find-pkg: 0.1.2 - dev: true - - /cyclist@1.0.2: - resolution: {integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==} - dev: true - - /d3-array@1.2.4: - resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} - dev: false - - /d3-geo@1.7.1: - resolution: {integrity: sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==} - dependencies: - d3-array: 1.2.4 - dev: false - - /d3-voronoi@1.1.2: - resolution: {integrity: sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==} - dev: false - - /dargs@7.0.0: - resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} - engines: {node: '>=8'} - dev: true - - /data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - dev: true - - /datauri@3.0.0: - resolution: {integrity: sha512-NeDFuUPV1YCpCn8MUIcDk1QnuyenUHs7f4Q5P0n9FFA0neKFrfEH9esR+YMW95BplbYfdmjbs0Pl/ZGAaM2QHQ==} - engines: {node: '>= 8'} - dependencies: - image-size: 0.8.3 - mimer: 1.1.0 - dev: true - - /dateformat@3.0.3: - resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} - dev: true - - /dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - dev: false - - /debug@3.1.0: - resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: true - - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - dev: true - - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true - - /decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - dependencies: - character-entities: 2.0.2 - dev: true - - /decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - dev: true - - /dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dev: true - - /deep-equal@1.1.2: - resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} - engines: {node: '>= 0.4'} - dependencies: - is-arguments: 1.1.1 - is-date-object: 1.0.5 - is-regex: 1.1.4 - object-is: 1.1.5 - object-keys: 1.1.1 - regexp.prototype.flags: 1.5.1 - dev: false - - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: true - - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - - /deep-rename-keys@0.2.1: - resolution: {integrity: sha512-RHd9ABw4Fvk+gYDWqwOftG849x0bYOySl/RgX0tLI9i27ZIeSO91mLZJEp7oPHOMFqHvpgu21YptmDt0FYD/0A==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - rename-keys: 1.2.0 - dev: true - - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: true - - /default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - dev: true - - /default-browser@4.0.0: - resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} - engines: {node: '>=14.16'} - dependencies: - bundle-name: 3.0.0 - default-browser-id: 3.0.0 - execa: 7.2.0 - titleize: 3.0.0 - dev: true - - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - dev: true - - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.2 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - - /define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: true - - /define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - dev: true - - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 - object-keys: 1.1.1 - - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: true - - /delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: true - - /density-clustering@1.3.0: - resolution: {integrity: sha512-icpmBubVTwLnsaor9qH/4tG5+7+f61VcqMN3V3pm9sxxSCt2Jcs0zWOgwZW9ARJYaKD3FumIgHiMOcIMRRAzFQ==} - dev: false - - /deprecation@2.3.1: - resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - dev: true - - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - dev: true - - /des.js@1.1.0: - resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: true - - /detect-indent@5.0.0: - resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} - engines: {node: '>=4'} - dev: true - - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true - - /detect-indent@7.0.1: - resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} - engines: {node: '>=12.20'} - dev: true - - /detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - dev: true - - /detect-newline@4.0.1: - resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - dev: true - - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: true - - /diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} - engines: {node: '>=0.3.1'} - dev: true - - /diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - dependencies: - bn.js: 4.12.0 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - dev: true - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /dom-align@1.12.4: - resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==} - dev: false - - /dom-converter@0.2.0: - resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - dependencies: - utila: 0.4.0 - dev: true - - /dom-serializer@0.2.2: - resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} - dependencies: - domelementtype: 2.3.0 - entities: 2.2.0 - dev: true - - /dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - dev: true - - /dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - dev: true - - /domain-browser@1.2.0: - resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} - engines: {node: '>=0.4', npm: '>=1.2'} - dev: true - - /domelementtype@1.3.1: - resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} - dev: true - - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true - - /domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - - /domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - - /domutils@1.7.0: - resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} - dependencies: - dom-serializer: 0.2.2 - domelementtype: 1.3.1 - dev: true - - /domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - dev: true - - /domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - dev: true - - /dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - dev: true - - /dot-prop@4.2.1: - resolution: {integrity: sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==} - engines: {node: '>=4'} - dependencies: - is-obj: 1.0.1 - dev: true - - /dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - dependencies: - is-obj: 2.0.0 - dev: true - - /dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} - engines: {node: '>=12'} - dev: true - - /dotenv@16.3.2: - resolution: {integrity: sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==} - engines: {node: '>=12'} - dev: true - - /downloadjs@1.4.7: - resolution: {integrity: sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==} - dev: false - - /dumi-afx-deps@1.0.0-alpha.20: - resolution: {integrity: sha512-PRSJlHuJkyHDET7Hukykx/hLULkgUBX5q2CutMG5EDI3eJLzJlX634wNll10m3at1uomcDAVudL7Dgh5UOJ7IQ==} - dev: true - - /dumi-assets-types@2.0.0-alpha.0: - resolution: {integrity: sha512-a/Y5lf0G6gwsEQ9hop/n03CcjmHsGBk384Cz/AEX6mRYrfSpUx/lQvP9HLoXkCzScl9PL1sSmLPnMkgaXDCZLA==} - dev: true - - /dumi@2.2.17(@babel/core@7.23.7)(@types/node@20.5.1)(@types/react@18.2.48)(eslint@8.56.0)(prettier@2.8.8)(react-dom@18.2.0)(react@18.2.0)(stylelint@14.16.1)(typescript@5.3.3)(webpack@5.89.0): - resolution: {integrity: sha512-oI2OVlkkVORy0ud64YlhrBF+rsAda9rGFxMLrOLepTjC96mLOrgUz/geKkckWA5LemEuFVsaTYE/5HDpAPTkvQ==} - hasBin: true - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - dependencies: - '@ant-design/icons-svg': 4.3.2 - '@makotot/ghostui': 2.0.0(react@18.2.0) - '@stackblitz/sdk': 1.9.0 - '@swc/core': 1.3.72 - '@types/hast': 2.3.9 - '@types/mdast': 3.0.15 - '@umijs/bundler-utils': 4.1.1 - '@umijs/core': 4.1.1 - '@umijs/utils': 4.1.1 - animated-scroll-to: 2.3.0 - classnames: 2.3.2 - codesandbox: 2.2.3 - copy-to-clipboard: 3.3.3 - deepmerge: 4.3.1 - dumi-afx-deps: 1.0.0-alpha.20 - dumi-assets-types: 2.0.0-alpha.0 - enhanced-resolve: 5.15.0 - estree-util-to-js: 1.2.0 - estree-util-visit: 1.2.1 - file-system-cache: 2.4.4 - github-slugger: 1.5.0 - hast-util-is-element: 2.1.3 - hast-util-raw: 8.0.0 - hast-util-to-estree: 2.3.3 - hast-util-to-string: 2.0.0 - heti: 0.9.4 - hosted-git-info: 6.1.1 - html-to-text: 9.0.5 - html2sketch: 1.0.2 - js-yaml: 4.1.0 - lodash.throttle: 4.1.1 - mdast-util-find-and-replace: 2.2.2 - mdast-util-to-string: 3.2.0 - nprogress: 0.2.0 - pluralize: 8.0.0 - prism-react-renderer: 1.3.5(react@18.2.0) - prism-themes: 1.9.0 - prismjs: 1.29.0 - raw-loader: 4.0.2(webpack@5.89.0) - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-tabs: 12.14.1(react-dom@18.2.0)(react@18.2.0) - rc-tree: 5.8.2(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-copy-to-clipboard: 5.1.0(react@18.2.0) - react-dom: 18.2.0(react@18.2.0) - react-error-boundary: 4.0.12(react@18.2.0) - react-intl: 6.6.1(react@18.2.0)(typescript@5.3.3) - rehype-autolink-headings: 6.1.1 - rehype-remove-comments: 5.0.0 - rehype-stringify: 9.0.4 - remark-directive: 2.0.1 - remark-frontmatter: 4.0.1 - remark-gfm: 3.0.1 - remark-parse: 10.0.2 - remark-rehype: 10.1.0 - sass: 1.70.0 - sitemap: 7.1.1 - umi: 4.1.1(@babel/core@7.23.7)(@types/node@20.5.1)(@types/react@18.2.48)(eslint@8.56.0)(prettier@2.8.8)(react-dom@18.2.0)(react@18.2.0)(sass@1.70.0)(stylelint@14.16.1)(typescript@5.3.3)(webpack@5.89.0) - unified: 10.1.2 - unist-util-visit: 4.1.2 - unist-util-visit-parents: 5.1.3 - url: 0.11.3 - v8-compile-cache: 2.3.0 - vfile: 5.3.7 - transitivePeerDependencies: - - '@babel/core' - - '@swc/helpers' - - '@types/node' - - '@types/react' - - '@types/webpack' - - '@volar/vue-language-plugin-pug' - - '@volar/vue-typescript' - - eslint - - jest - - postcss-html - - postcss-jsx - - postcss-less - - postcss-markdown - - postcss-scss - - prettier - - rollup - - sockjs-client - - stylelint - - stylus - - sugarss - - supports-color - - terser - - type-fest - - typescript - - webpack - - webpack-dev-server - - webpack-hot-middleware - - webpack-plugin-serve - dev: true - - /duplexer2@0.1.4: - resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - dependencies: - readable-stream: 2.3.8 - dev: false - - /duplexer3@0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - dev: true - - /duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - dev: true - - /duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.3 - dev: true - - /duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 3.6.2 - stream-shift: 1.0.3 - dev: true - - /earcut@2.2.4: - resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} - dev: false - - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true - - /editions@2.3.1: - resolution: {integrity: sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA==} - engines: {node: '>=0.8'} - dependencies: - errlop: 2.2.0 - semver: 6.3.1 - dev: true - - /ejs@3.1.9: - resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - jake: 10.8.7 - dev: true - - /electron-to-chromium@1.4.642: - resolution: {integrity: sha512-M4+u22ZJGpk4RY7tne6W+APkZhnnhmAH48FNl8iEFK2lEgob+U5rUQsIqQhvAwCXYpfd3H20pHK/ENsCvwTbsA==} - dev: true - - /elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - dev: true - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true - - /emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - dev: true - - /encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - dependencies: - iconv-lite: 0.6.3 - - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true - - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: true - - /enhanced-resolve@5.9.3: - resolution: {integrity: sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: true - - /enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.3 - dev: true - - /enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - dev: true - - /entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: true - - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: true - - /env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - dev: true - - /envinfo@7.8.1: - resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /err-code@1.1.2: - resolution: {integrity: sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==} - dev: true - - /err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - dev: true - - /errlop@2.2.0: - resolution: {integrity: sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw==} - engines: {node: '>=0.8'} - dev: true - - /errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - requiresBuild: true - dependencies: - prr: 1.0.1 - dev: true - optional: true - - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - - /error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - dependencies: - stackframe: 1.3.4 - dev: true - - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - es-set-tostringtag: 2.0.2 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.12 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.1.0 - safe-regex-test: 1.0.2 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 - - /es-array-method-boxes-properly@1.0.0: - resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - dev: true - - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.2 - is-set: 2.0.2 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - dev: true - - /es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} - dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-set-tostringtag: 2.0.2 - function-bind: 1.1.2 - get-intrinsic: 1.2.2 - globalthis: 1.0.3 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.6 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.0 - dev: true - - /es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - dev: true - - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 - hasown: 2.0.0 - - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - dependencies: - hasown: 2.0.0 - dev: true - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - - /es5-imcompatible-versions@0.1.88: - resolution: {integrity: sha512-GDJTmDGd65qyDk9fGClO+MOUgHuBuGMCL6EawvLH8Ob+HN8ui1OJwa4fEK0qh3fg2ieT2/pdZj41yrxnmOrK8w==} - dev: true - - /es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - /es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - dependencies: - es6-promise: 4.2.8 - dev: true - - /esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 - dev: true - - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - dev: true - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - /escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - dev: true - - /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 - eslint: ^7.0.0 || ^8.0.0 - jest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - jest: - optional: true - dependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) - eslint: 8.56.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.56.0 - dev: true - - /eslint-plugin-react@7.33.2(eslint@8.56.0): - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.2 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.15 - eslint: 8.56.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.10 - dev: true - - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 - '@humanwhocodes/config-array': 0.11.14 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 - dev: true - - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - - /estree-util-attach-comments@2.1.1: - resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} - dependencies: - '@types/estree': 1.0.5 - dev: true - - /estree-util-is-identifier-name@2.1.0: - resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} - dev: true - - /estree-util-to-js@1.2.0: - resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} - dependencies: - '@types/estree-jsx': 1.0.3 - astring: 1.8.6 - source-map: 0.7.4 - dev: true - - /estree-util-visit@1.2.1: - resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} - dependencies: - '@types/estree-jsx': 1.0.3 - '@types/unist': 2.0.10 - dev: true - - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /eventemitter3@2.0.3: - resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==} - dev: true - - /eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - dev: true - - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: true - - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - /evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - dev: true - - /execa@0.7.0: - resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} - engines: {node: '>=4'} - dependencies: - cross-spawn: 5.1.0 - get-stream: 3.0.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - dev: true - - /execa@5.0.0: - resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.0 - human-signals: 2.1.0 - is-stream: 2.0.0 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.2.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: true - - /expand-tilde@1.2.2: - resolution: {integrity: sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==} - engines: {node: '>=0.10.0'} - dependencies: - os-homedir: 1.0.2 - dev: true - - /expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - dev: true - - /exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - dev: true - - /extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: true - - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: true - - /extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - dev: true - - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true - - /fast-redact@3.3.0: - resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} - engines: {node: '>=6'} - dev: true - - /fastest-levenshtein@1.0.16: - resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} - engines: {node: '>= 4.9.1'} - dev: true - - /fastq@1.16.0: - resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} - dependencies: - reusify: 1.0.4 - dev: true - - /father@4.3.8(@types/node@20.5.1)(webpack@5.89.0): - resolution: {integrity: sha512-uaKzB/UVG3YLBoptvv118U0pCw4iXo4OHHVMCkBlx2vrchO9oVH+tU8DOt3IsnMCOmtQwKo5imKC112R9pRcmw==} - hasBin: true - dependencies: - '@microsoft/api-extractor': 7.36.3(@types/node@20.5.1) - '@umijs/babel-preset-umi': 4.1.1 - '@umijs/bundler-utils': 4.1.1 - '@umijs/bundler-webpack': 4.1.1(typescript@5.0.4)(webpack@5.89.0) - '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 - '@umijs/core': 4.1.1 - '@umijs/utils': 4.1.1 - '@vercel/ncc': 0.33.3 - babel-plugin-dynamic-import-node: 2.3.3 - babel-plugin-module-resolver: 4.1.0 - babel-plugin-transform-define: 2.0.1 - enhanced-resolve: 5.9.3 - fast-glob: 3.2.12 - file-system-cache: 2.0.0 - loader-runner: 4.2.0 - minimatch: 3.1.2 - tsconfig-paths: 4.0.0 - typescript: 5.0.4 - typescript-transform-paths: 3.4.6(typescript@5.0.4) - v8-compile-cache: 2.3.0 - transitivePeerDependencies: - - '@types/node' - - '@types/webpack' - - sockjs-client - - supports-color - - type-fest - - webpack - - webpack-dev-server - - webpack-hot-middleware - - webpack-plugin-serve - dev: true - - /fault@2.0.1: - resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} - dependencies: - format: 0.2.2 - dev: true - - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - dependencies: - bser: 2.1.1 - dev: true - - /fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.2 - dev: true - - /figures@2.0.0: - resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} - engines: {node: '>=4'} - dependencies: - escape-string-regexp: 1.0.5 - dev: true - - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: true - - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.2.0 - dev: true - - /file-name@0.1.0: - resolution: {integrity: sha512-Q8SskhjF4eUk/xoQkmubwLkoHwOTv6Jj/WGtOVLKkZ0vvM+LipkSXugkn1F/+mjWXU32AXLZB3qaz0arUzgtRw==} - engines: {node: '>=0.10.0'} - dev: true - - /file-saver@2.0.5: - resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} - dev: false - - /file-system-cache@2.0.0: - resolution: {integrity: sha512-QlYut2ZtxRgdW/dboSmiKZWM8FsnpLaLI549hN/RWgwn3FawSil7Jc2n7nFHheclvYxa4LJqwEOvNUYv9VsCXg==} - dependencies: - fs-extra: 10.1.0 - ramda: 0.28.0 - dev: true - - /file-system-cache@2.4.4: - resolution: {integrity: sha512-vCYhn8pb5nlC3Gs2FFCOkmf4NEg2Ym3ulJwkmS9o6p9oRShGj6CwTMFvpgZihBlsh373NaM0XgAgDHXQIlS4LQ==} - dependencies: - '@types/fs-extra': 11.0.1 - '@types/ramda': 0.29.3 - fs-extra: 11.1.1 - ramda: 0.29.0 - dev: true - - /filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - dependencies: - minimatch: 5.1.6 - dev: true - - /filesize@3.6.1: - resolution: {integrity: sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==} - engines: {node: '>= 0.4.0'} - dev: true - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - - /filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} - dev: true - - /find-babel-config@1.2.0: - resolution: {integrity: sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==} - engines: {node: '>=4.0.0'} - dependencies: - json5: 0.5.1 - path-exists: 3.0.0 - dev: true - - /find-file-up@0.1.3: - resolution: {integrity: sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==} - engines: {node: '>=0.10.0'} - dependencies: - fs-exists-sync: 0.1.0 - resolve-dir: 0.1.1 - dev: true - - /find-pkg@0.1.2: - resolution: {integrity: sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==} - engines: {node: '>=0.10.0'} - dependencies: - find-file-up: 0.1.3 - dev: true - - /find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - dev: false - - /find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - dependencies: - locate-path: 2.0.0 - dev: true - - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - dependencies: - locate-path: 3.0.0 - dev: true - - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 - dev: true - - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.2.9 - keyv: 4.5.4 - rimraf: 3.0.2 - dev: true - - /flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - dev: true - - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} - dev: true - - /flush-write-stream@1.1.1: - resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: true - - /flv.js@1.6.2: - resolution: {integrity: sha512-xre4gUbX1MPtgQRKj2pxJENp/RnaHaxYvy3YToVVCrSmAWUu85b9mug6pTXF6zakUjNP2lFWZ1rkSX7gxhB/2A==} - dependencies: - es6-promise: 4.2.8 - webworkify-webpack: 2.1.5 - dev: false - - /follow-redirects@1.15.5: - resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: true - - /follow-redirects@1.5.10: - resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==} - engines: {node: '>=4.0'} - dependencies: - debug: 3.1.0 - transitivePeerDependencies: - - supports-color - dev: true - - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - dev: true - - /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.0.4)(webpack@5.89.0): - resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} - engines: {node: '>=12.13.0', yarn: '>=1.0.0'} - peerDependencies: - typescript: '>3.6.0' - webpack: ^5.11.0 - dependencies: - '@babel/code-frame': 7.23.5 - chalk: 4.1.2 - chokidar: 3.5.3 - cosmiconfig: 7.1.0 - deepmerge: 4.3.1 - fs-extra: 10.1.0 - memfs: 3.5.3 - minimatch: 3.1.2 - node-abort-controller: 3.1.1 - schema-utils: 3.3.0 - semver: 7.5.4 - tapable: 2.2.1 - typescript: 5.0.4 - webpack: 5.89.0 - dev: true - - /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.3.3)(webpack@5.89.0): - resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} - engines: {node: '>=12.13.0', yarn: '>=1.0.0'} - peerDependencies: - typescript: '>3.6.0' - webpack: ^5.11.0 - dependencies: - '@babel/code-frame': 7.23.5 - chalk: 4.1.2 - chokidar: 3.5.3 - cosmiconfig: 7.1.0 - deepmerge: 4.3.1 - fs-extra: 10.1.0 - memfs: 3.5.3 - minimatch: 3.1.2 - node-abort-controller: 3.1.1 - schema-utils: 3.3.0 - semver: 7.5.4 - tapable: 2.2.1 - typescript: 5.3.3 - webpack: 5.89.0 - dev: true - - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - - /format@0.2.2: - resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} - engines: {node: '>=0.4.x'} - dev: true - - /formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - dependencies: - fetch-blob: 3.2.0 - dev: true - - /fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - dev: true - - /from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: true - - /fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: true - - /fs-exists-sync@0.1.0: - resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==} - engines: {node: '>=0.10.0'} - dev: true - - /fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: true - - /fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: true - - /fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: true - - /fs-extra@3.0.1: - resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 3.0.1 - universalify: 0.1.2 - dev: true - - /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - - /fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: true - - /fs-minipass@3.0.3: - resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - minipass: 7.0.4 - dev: true - - /fs-monkey@1.0.5: - resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} - dev: true - - /fs-write-stream-atomic@1.0.10: - resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} - dependencies: - graceful-fs: 4.2.11 - iferr: 0.1.5 - imurmurhash: 0.1.4 - readable-stream: 2.3.8 - dev: true - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - functions-have-names: 1.2.3 - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - /gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: true - - /genfun@4.0.1: - resolution: {integrity: sha512-48yv1eDS5Qrz6cbSDBBik0u7jCgC/eA9eZrl9MIN1LfKzFTuGt6EHgr31YM8yT9cjb5BplXb4Iz3VtOYmgt8Jg==} - dev: true - - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - - /geojson-equality@0.1.6: - resolution: {integrity: sha512-TqG8YbqizP3EfwP5Uw4aLu6pKkg6JQK9uq/XZ1lXQntvTHD1BBKJWhNpJ2M0ax6TuWMP3oyx6Oq7FCIfznrgpQ==} - dependencies: - deep-equal: 1.1.2 - dev: false - - /geojson-rbush@3.2.0: - resolution: {integrity: sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==} - dependencies: - '@turf/bbox': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - '@types/geojson': 7946.0.8 - rbush: 3.0.1 - dev: false - - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true - - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} - dependencies: - function-bind: 1.1.2 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 - - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true - - /get-pkg-repo@4.2.1: - resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} - engines: {node: '>=6.9.0'} - hasBin: true - dependencies: - '@hutson/parse-repository-url': 3.0.2 - hosted-git-info: 4.1.0 - through2: 2.0.5 - yargs: 16.2.0 - dev: true - - /get-port@5.1.1: - resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} - engines: {node: '>=8'} - dev: true - - /get-stdin@9.0.0: - resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} - engines: {node: '>=12'} - dev: true - - /get-stream@3.0.0: - resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} - engines: {node: '>=4'} - dev: true - - /get-stream@6.0.0: - resolution: {integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==} - engines: {node: '>=10'} - dev: true - - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true - - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - - /get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - dev: true - - /git-branch@1.0.0: - resolution: {integrity: sha512-ZTzuqw5Df8fyLXQWrX6hK+4FpNCdKzMcERlxENEGO5aKcLmG7MAszhrMhluUKNKmOS/JAGijDMQDXDCDw1mE/A==} - engines: {node: '>=0.8'} - dev: true - - /git-config-path@1.0.1: - resolution: {integrity: sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - fs-exists-sync: 0.1.0 - homedir-polyfill: 1.0.3 - dev: true - - /git-hooks-list@3.1.0: - resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} - dev: true - - /git-raw-commits@2.0.11: - resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - dargs: 7.0.0 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 - dev: true - - /git-raw-commits@3.0.0: - resolution: {integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==} - engines: {node: '>=14'} - hasBin: true - dependencies: - dargs: 7.0.0 - meow: 8.1.2 - split2: 3.2.2 - dev: true - - /git-remote-origin-url@2.0.0: - resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} - engines: {node: '>=4'} - dependencies: - gitconfiglocal: 1.0.0 - pify: 2.3.0 - dev: true - - /git-repo-name@0.6.0: - resolution: {integrity: sha512-DF4XxB6H+Te79JA08/QF/IjIv+j+0gF990WlgAX3SXXU2irfqvBc/xxlAIh6eJWYaKz45MrrGVBFS0Qc4bBz5g==} - engines: {node: '>=0.8'} - dependencies: - cwd: 0.9.1 - file-name: 0.1.0 - lazy-cache: 1.0.4 - remote-origin-url: 0.5.3 - dev: true - - /git-semver-tags@5.0.1: - resolution: {integrity: sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==} - engines: {node: '>=14'} - hasBin: true - dependencies: - meow: 8.1.2 - semver: 7.5.4 - dev: true - - /git-up@7.0.0: - resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} - dependencies: - is-ssh: 1.4.0 - parse-url: 8.1.0 - dev: true - - /git-url-parse@13.1.0: - resolution: {integrity: sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==} - dependencies: - git-up: 7.0.0 - dev: true - - /git-username@0.5.1: - resolution: {integrity: sha512-xjUjrj3i4kup2A3a/ZVZB1Nt0PUX7SU7KeVqIbXPdslT7NbNfyO04JMxBv4gar77JePdS+A6f05jG1Viy6+U1w==} - engines: {node: '>=0.8'} - dependencies: - remote-origin-url: 0.4.0 - dev: true - - /gitconfiglocal@1.0.0: - resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} - dependencies: - ini: 1.3.8 - dev: true - - /github-slugger@1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} - dev: true - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true - - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 - dev: true - - /glob@7.1.4: - resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - dev: true - - /glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - fs.realpath: 1.0.0 - minimatch: 8.0.4 - minipass: 4.2.8 - path-scurry: 1.10.1 - dev: true - - /global-dirs@0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} - dependencies: - ini: 1.3.8 - dev: true - - /global-modules@0.2.3: - resolution: {integrity: sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==} - engines: {node: '>=0.10.0'} - dependencies: - global-prefix: 0.1.5 - is-windows: 0.2.0 - dev: true - - /global-modules@2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} - dependencies: - global-prefix: 3.0.0 - dev: true - - /global-prefix@0.1.5: - resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==} - engines: {node: '>=0.10.0'} - dependencies: - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 0.2.0 - which: 1.3.1 - dev: true - - /global-prefix@3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - dev: true - - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.0 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - - /globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.0 - merge2: 1.4.1 - slash: 4.0.0 - dev: true - - /globjoin@0.1.4: - resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} - dev: true - - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.2 - - /got@6.7.1: - resolution: {integrity: sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==} - engines: {node: '>=4'} - dependencies: - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.3 - create-error-class: 3.0.2 - duplexer3: 0.1.5 - get-stream: 3.0.0 - is-redirect: 1.0.0 - is-retry-allowed: 1.2.0 - is-stream: 1.1.0 - lowercase-keys: 1.0.1 - safe-buffer: 5.2.1 - timed-out: 4.0.1 - unzip-response: 2.0.1 - url-parse-lax: 1.0.0 - dev: true - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true - - /gud@1.0.0: - resolution: {integrity: sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==} - dev: false - - /handle-thing@2.0.1: - resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - dev: true - - /handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true - dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.17.4 - dev: true - - /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: true - - /harmony-reflect@1.6.2: - resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} - dev: true - - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true - - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} - dependencies: - get-intrinsic: 1.2.2 - - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - - /has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: true - - /has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - dev: true - - /has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - dev: true - - /hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - dev: true - - /hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: true - - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - - /hast-util-from-parse5@7.1.2: - resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} - dependencies: - '@types/hast': 2.3.9 - '@types/unist': 2.0.10 - hastscript: 7.2.0 - property-information: 6.4.0 - vfile: 5.3.7 - vfile-location: 4.1.0 - web-namespaces: 2.0.1 - dev: true - - /hast-util-has-property@2.0.1: - resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==} - dev: true - - /hast-util-heading-rank@2.1.1: - resolution: {integrity: sha512-iAuRp+ESgJoRFJbSyaqsfvJDY6zzmFoEnL1gtz1+U8gKtGGj1p0CVlysuUAUjq95qlZESHINLThwJzNGmgGZxA==} - dependencies: - '@types/hast': 2.3.9 - dev: true - - /hast-util-is-conditional-comment@2.0.0: - resolution: {integrity: sha512-U66gW8ZWQdxP4ZjTEZ3xZT72y6rIKJqV4At5QmC1ItBbQyZyVkuTp8QkQwhxsbkHdzpifiZdQWrDipc9ByqhRg==} - dependencies: - '@types/hast': 2.3.9 - dev: true - - /hast-util-is-element@2.1.3: - resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==} - dependencies: - '@types/hast': 2.3.9 - '@types/unist': 2.0.10 - dev: true - - /hast-util-parse-selector@3.1.1: - resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} - dependencies: - '@types/hast': 2.3.9 - dev: true - - /hast-util-raw@7.2.3: - resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} - dependencies: - '@types/hast': 2.3.9 - '@types/parse5': 6.0.3 - hast-util-from-parse5: 7.1.2 - hast-util-to-parse5: 7.1.0 - html-void-elements: 2.0.1 - parse5: 6.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - vfile: 5.3.7 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - dev: true - - /hast-util-raw@8.0.0: - resolution: {integrity: sha512-bKbaUxMNLjZMMowgcrc4l3aQSPiMLiceZD+mp+AKF8Si0mtyR2DYVdxzS2XBxXYDeW/VvfZy40lNxHRiY6MMTg==} - dependencies: - '@types/hast': 2.3.9 - extend: 3.0.2 - hast-util-from-parse5: 7.1.2 - hast-util-to-parse5: 7.1.0 - html-void-elements: 2.0.1 - mdast-util-to-hast: 12.3.0 - parse5: 7.1.2 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - vfile: 5.3.7 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - dev: true - - /hast-util-to-estree@2.3.3: - resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} - dependencies: - '@types/estree': 1.0.5 - '@types/estree-jsx': 1.0.3 - '@types/hast': 2.3.9 - '@types/unist': 2.0.10 - comma-separated-tokens: 2.0.3 - estree-util-attach-comments: 2.1.1 - estree-util-is-identifier-name: 2.1.0 - hast-util-whitespace: 2.0.1 - mdast-util-mdx-expression: 1.3.2 - mdast-util-mdxjs-esm: 1.3.1 - property-information: 6.4.0 - space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 - unist-util-position: 4.0.4 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color - dev: true - - /hast-util-to-html@8.0.4: - resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} - dependencies: - '@types/hast': 2.3.9 - '@types/unist': 2.0.10 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-raw: 7.2.3 - hast-util-whitespace: 2.0.1 - html-void-elements: 2.0.1 - property-information: 6.4.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.3 - zwitch: 2.0.4 - dev: true - - /hast-util-to-parse5@7.1.0: - resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} - dependencies: - '@types/hast': 2.3.9 - comma-separated-tokens: 2.0.3 - property-information: 6.4.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - dev: true - - /hast-util-to-string@2.0.0: - resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} - dependencies: - '@types/hast': 2.3.9 - dev: true - - /hast-util-whitespace@2.0.1: - resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} - dev: true - - /hastscript@7.2.0: - resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} - dependencies: - '@types/hast': 2.3.9 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 3.1.1 - property-information: 6.4.0 - space-separated-tokens: 2.0.2 - dev: true - - /he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: true - - /heti-findandreplacedomtext@0.5.0: - resolution: {integrity: sha512-GFZjqU8LAdu1uR72GqrReI+lzNLMlcWtvdz1TKNJiofyo1mfTecFYSZEoEbcLcRMl+KwEldnNQoS4BwO8wtg0A==} - dev: true - - /heti@0.9.4: - resolution: {integrity: sha512-DI1A/R6VabM8wulXrGVbeHZNZ8jJUm+Pwn+PEYZcNBxAO+4mXWPEX+Xu9R/YrHETGcevNrLO34m/99ZCnFnlhw==} - dependencies: - heti-findandreplacedomtext: 0.5.0 - dev: true - - /history@5.3.0: - resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} - dependencies: - '@babel/runtime': 7.23.8 - dev: true - - /hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - dev: true - - /hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - dependencies: - react-is: 16.13.1 - - /homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - dependencies: - parse-passwd: 1.0.0 - dev: true - - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true - - /hosted-git-info@3.0.8: - resolution: {integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - dev: true - - /hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - dev: true - - /hosted-git-info@6.1.1: - resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - lru-cache: 7.18.3 - dev: true - - /hosted-git-info@7.0.1: - resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - lru-cache: 10.1.0 - dev: true - - /hpack.js@2.1.6: - resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - dependencies: - inherits: 2.0.4 - obuf: 1.1.2 - readable-stream: 2.3.8 - wbuf: 1.7.3 - dev: true - - /htm@3.1.1: - resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} - dev: true - - /html-entities@2.4.0: - resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} - dev: true - - /html-minifier-terser@6.1.0: - resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} - engines: {node: '>=12'} - hasBin: true - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 8.3.0 - he: 1.2.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.27.0 - dev: true - - /html-tags@3.3.1: - resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} - engines: {node: '>=8'} - dev: true - - /html-to-text@9.0.5: - resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} - engines: {node: '>=14'} - dependencies: - '@selderee/plugin-htmlparser2': 0.11.0 - deepmerge: 4.3.1 - dom-serializer: 2.0.0 - htmlparser2: 8.0.2 - selderee: 0.11.0 - dev: true - - /html-tokenize@2.0.1: - resolution: {integrity: sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==} - hasBin: true - dependencies: - buffer-from: 0.1.2 - inherits: 2.0.4 - minimist: 1.2.8 - readable-stream: 1.0.34 - through2: 0.4.2 - dev: false - - /html-void-elements@2.0.1: - resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} - dev: true - - /html-webpack-plugin@5.5.0(webpack@5.89.0): - resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==} - engines: {node: '>=10.13.0'} - peerDependencies: - webpack: ^5.20.0 - dependencies: - '@types/html-minifier-terser': 6.1.0 - html-minifier-terser: 6.1.0 - lodash: 4.17.21 - pretty-error: 4.0.0 - tapable: 2.2.1 - webpack: 5.89.0 - dev: true - - /html2sketch@1.0.2: - resolution: {integrity: sha512-/P9NcVH9yBhrOkcnaFkAbWJifDO8Ii+CTIxy9gE6trSQvo2OH++TKQIP5MICEoWvgXpVhZ6botj7P63Krl1/gg==} - engines: {node: '>=14.0.0'} - dependencies: - '@sketch-hq/sketch-file-format-ts': 6.5.0 - color: 3.2.1 - css: 3.0.0 - svg-pathdata: 5.0.5 - svgo-browser: 1.3.8 - svgson: 4.1.0 - transformation-matrix: 2.15.0 - uuid: 8.3.2 - dev: true - - /htmlparser2@6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 2.2.0 - dev: true - - /htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - dev: true - - /http-cache-semantics@3.8.1: - resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} - dev: true - - /http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: true - - /http-deceiver@1.2.7: - resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - dev: true - - /http-proxy-agent@2.1.0: - resolution: {integrity: sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==} - engines: {node: '>= 4.5.0'} - dependencies: - agent-base: 4.3.0 - debug: 3.1.0 - transitivePeerDependencies: - - supports-color - dev: true - - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /http-proxy-agent@7.0.0: - resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /https-browserify@1.0.0: - resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} - dev: true - - /https-proxy-agent@2.2.4: - resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} - engines: {node: '>= 4.5.0'} - dependencies: - agent-base: 4.3.0 - debug: 3.2.7 - transitivePeerDependencies: - - supports-color - dev: true - - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - dev: true - - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - dev: true - - /humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - dependencies: - ms: 2.1.3 - dev: true - - /humps@2.0.1: - resolution: {integrity: sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==} - dev: true - - /husky@8.0.3: - resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} - engines: {node: '>=14'} - hasBin: true - dev: true - - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - - /icss-utils@5.1.0(postcss@8.4.33): - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.33 - dev: true - - /identity-obj-proxy@3.0.0: - resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} - engines: {node: '>=4'} - dependencies: - harmony-reflect: 1.6.2 - dev: true - - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true - - /iferr@0.1.5: - resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} - dev: true - - /ignore-walk@5.0.1: - resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - minimatch: 5.1.6 - dev: true - - /ignore-walk@6.0.4: - resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - minimatch: 9.0.3 - dev: true - - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} - engines: {node: '>= 4'} - dev: true - - /image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} - engines: {node: '>=0.10.0'} - hasBin: true - requiresBuild: true - dev: true - optional: true - - /image-size@0.8.3: - resolution: {integrity: sha512-SMtq1AJ+aqHB45c3FsB4ERK0UCiA2d3H1uq8s+8T0Pf8A3W4teyBQyaFaktH6xvZqh+npwlKU7i4fJo0r7TYTg==} - engines: {node: '>=6.9.0'} - hasBin: true - dependencies: - queue: 6.0.1 - dev: true - - /immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false - - /immutable@4.3.4: - resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} - dev: true - - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - /import-lazy@2.1.0: - resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} - engines: {node: '>=4'} - dev: true - - /import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - dev: true - - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true - - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - - /inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - dev: true - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true - - /init-package-json@5.0.0: - resolution: {integrity: sha512-kBhlSheBfYmq3e0L1ii+VKe3zBTLL5lDCDWR+f9dLmEGSB3MqLlMlsolubSsyI88Bg6EA+BIMlomAnQ1SwgQBw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - npm-package-arg: 10.1.0 - promzard: 1.0.0 - read: 2.1.0 - read-package-json: 6.0.4 - semver: 7.5.4 - validate-npm-package-license: 3.0.4 - validate-npm-package-name: 5.0.0 - dev: true - - /inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - dev: true - - /inquirer@6.5.2: - resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==} - engines: {node: '>=6.0.0'} - dependencies: - ansi-escapes: 3.2.0 - chalk: 2.4.2 - cli-cursor: 2.1.0 - cli-width: 2.2.1 - external-editor: 3.1.0 - figures: 2.0.0 - lodash: 4.17.21 - mute-stream: 0.0.7 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 2.1.1 - strip-ansi: 5.2.0 - through: 2.3.8 - dev: true - - /inquirer@8.2.6: - resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} - engines: {node: '>=12.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.1 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - dev: true - - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.2 - hasown: 2.0.0 - side-channel: 1.0.4 - - /intersection-observer@0.12.2: - resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==} - dev: false - - /intl-messageformat@10.5.10: - resolution: {integrity: sha512-3yzwX6t/my9WRtNiqP05r+/UkpWxwstQiwaHAiuHmDRt7ykzWJ+nceOVjNLZYYWGiSltY+C+Likd8OIVkASepw==} - dependencies: - '@formatjs/ecma402-abstract': 1.18.2 - '@formatjs/fast-memoize': 2.2.0 - '@formatjs/icu-messageformat-parser': 2.7.5 - tslib: 2.6.2 - dev: true - - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - dependencies: - loose-envify: 1.4.0 - dev: true - - /ip@1.1.8: - resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} - dev: true - - /ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - dev: true - - /is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - dev: true - - /is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - dev: true - - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 - - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 - - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: true - - /is-arrow-function@2.0.3: - resolution: {integrity: sha512-iDStzcT1FJMzx+TjCOK//uDugSe/Mif/8a+T0htydQ3qkJGvSweTZpVYz4hpJH0baloSPiAFQdA8WslAgJphvQ==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - dev: true - - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 - - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: true - - /is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - dev: true - - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - /is-ci@1.2.1: - resolution: {integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==} - hasBin: true - dependencies: - ci-info: 1.6.0 - dev: true - - /is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - dependencies: - ci-info: 3.9.0 - dev: true - - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - dependencies: - hasown: 2.0.0 - - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - - /is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - dev: true - - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - - /is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dev: true - - /is-equal@1.7.0: - resolution: {integrity: sha512-hErktGR9jmoYXNWlbrwGjc8eHh09mbY6TWSTTFtnMcKaCuSMN8z+Ni5ma/8mkbVpe4CbB7V6kN1MkCg9bCx5bA==} - engines: {node: '>= 0.4'} - dependencies: - es-get-iterator: 1.1.3 - es-to-primitive: 1.2.1 - functions-have-names: 1.2.3 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - hasown: 2.0.0 - is-arrow-function: 2.0.3 - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-generator-function: 1.0.10 - is-number-object: 1.0.7 - is-regex: 1.1.4 - is-string: 1.0.7 - is-symbol: 1.0.4 - isarray: 2.0.5 - object-inspect: 1.13.1 - object.entries: 1.1.7 - object.getprototypeof: 1.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - dev: true - - /is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: true - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - dependencies: - call-bind: 1.0.5 - dev: true - - /is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - dev: true - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true - - /is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - dev: true - - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - dev: true - - /is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - dependencies: - is-docker: 3.0.0 - dev: true - - /is-installed-globally@0.1.0: - resolution: {integrity: sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==} - engines: {node: '>=4'} - dependencies: - global-dirs: 0.1.1 - is-path-inside: 1.0.1 - dev: true - - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: true - - /is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - dev: true - - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true - - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - - /is-npm@1.0.0: - resolution: {integrity: sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg==} - engines: {node: '>=0.10.0'} - dev: true - - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - - /is-obj@1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - dev: true - - /is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - dev: true - - /is-path-inside@1.0.1: - resolution: {integrity: sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==} - engines: {node: '>=0.10.0'} - dependencies: - path-is-inside: 1.0.2 - dev: true - - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: true - - /is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - dev: true - - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - dev: true - - /is-redirect@1.0.0: - resolution: {integrity: sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==} - engines: {node: '>=0.10.0'} - dev: true - - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 - - /is-retry-allowed@1.2.0: - resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} - engines: {node: '>=0.10.0'} - dev: true - - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true - - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.5 - - /is-ssh@1.4.0: - resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} - dependencies: - protocols: 2.0.1 - dev: true - - /is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - - /is-stream@2.0.0: - resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} - engines: {node: '>=8'} - dev: true - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - - /is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - dependencies: - better-path-resolve: 1.0.0 - dev: true - - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - - /is-text-path@1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} - engines: {node: '>=0.10.0'} - dependencies: - text-extensions: 1.9.0 - dev: true - - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.13 - - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: true - - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true - - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.5 - - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - dev: true - - /is-what@3.14.1: - resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - dev: true - - /is-windows@0.2.0: - resolution: {integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==} - engines: {node: '>=0.10.0'} - dev: true - - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true - - /is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - dev: true - - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: true - - /isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - dev: true - - /isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 - dev: true - - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: true - - /isomorphic-fetch@2.2.1: - resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==} - dependencies: - node-fetch: 1.7.3 - whatwg-fetch: 3.6.20 - dev: false - - /isomorphic-unfetch@4.0.2: - resolution: {integrity: sha512-1Yd+CF/7al18/N2BDbsLBcp6RO3tucSW+jcLq24dqdX5MNbCNTw1z4BsGsp4zNmjr/Izm2cs/cEqZPp4kvWSCA==} - dependencies: - node-fetch: 3.3.2 - unfetch: 5.0.0 - dev: true - - /istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.23.7 - '@babel/parser': 7.23.6 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istextorbinary@2.6.0: - resolution: {integrity: sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA==} - engines: {node: '>=0.12'} - dependencies: - binaryextensions: 2.3.0 - editions: 2.3.1 - textextensions: 2.6.0 - dev: true - - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.2 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.4 - set-function-name: 2.0.1 - dev: true - - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - dev: true - - /jake@10.8.7: - resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} - engines: {node: '>=10'} - hasBin: true - dependencies: - async: 3.2.5 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - dev: true - - /jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - dev: true - - /jest-environment-node@27.5.1: - resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 20.11.5 - jest-mock: 27.5.1 - jest-util: 27.5.1 - dev: true - - /jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 20.11.5 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - dev: true - - /jest-message-util@27.5.1: - resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/code-frame': 7.23.5 - '@jest/types': 27.5.1 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 27.5.1 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - - /jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/code-frame': 7.23.5 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - - /jest-mock@27.5.1: - resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 20.11.5 - dev: true - - /jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /jest-util@27.5.1: - resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 20.11.5 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: true - - /jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.11.5 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: true - - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 20.11.5 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jest-worker@29.4.3: - resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 20.11.5 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 20.11.5 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jju@1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - dev: true - - /js-cookie@2.2.1: - resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} - dev: false - - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true - - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true - - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - /json-parse-even-better-errors@3.0.1: - resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true - - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - - /json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - dev: true - - /json2mq@0.2.0: - resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} - dependencies: - string-convert: 0.2.1 - dev: false - - /json5@0.5.1: - resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} - hasBin: true - dev: true - - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true - - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true - - /jsonfile@3.0.1: - resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} - optionalDependencies: - graceful-fs: 4.2.11 - dev: true - - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - optionalDependencies: - graceful-fs: 4.2.11 - dev: true - - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - dev: true - - /jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - dev: true - - /jsx-ast-utils@2.4.1: - resolution: {integrity: sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==} - engines: {node: '>=4.0'} - dependencies: - array-includes: 3.1.7 - object.assign: 4.1.5 - dev: false - - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - dependencies: - array-includes: 3.1.7 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.1.7 - dev: true - - /jszip@3.10.1: - resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - setimmediate: 1.0.5 - dev: false - - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - dependencies: - json-buffer: 3.0.1 - dev: true - - /kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - - /kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - dev: true - - /known-css-properties@0.26.0: - resolution: {integrity: sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==} - dev: true - - /kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - dev: true - - /latest-version@3.1.0: - resolution: {integrity: sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==} - engines: {node: '>=4'} - dependencies: - package-json: 4.0.1 - dev: true - - /lazy-cache@1.0.4: - resolution: {integrity: sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==} - engines: {node: '>=0.10.0'} - dev: true - - /leac@0.6.0: - resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - dev: true - - /lerna@8.0.2: - resolution: {integrity: sha512-nnOIGI5V5Af9gfraNcMVoV1Fry/y7/h3nCQYk0/CMzBYDD+xbNL3DH8+c82AJkNR5ABslmpXjW4DLJ11/1b3CQ==} - engines: {node: '>=18.0.0'} - hasBin: true - dependencies: - '@lerna/create': 8.0.2(typescript@5.3.3) - '@npmcli/run-script': 7.0.2 - '@nx/devkit': 17.2.8(nx@17.2.8) - '@octokit/plugin-enterprise-rest': 6.0.1 - '@octokit/rest': 19.0.11 - byte-size: 8.1.1 - chalk: 4.1.0 - clone-deep: 4.0.1 - cmd-shim: 6.0.1 - columnify: 1.6.0 - conventional-changelog-angular: 7.0.0 - conventional-changelog-core: 5.0.1 - conventional-recommended-bump: 7.0.1 - cosmiconfig: 8.3.6(typescript@5.3.3) - dedent: 0.7.0 - envinfo: 7.8.1 - execa: 5.0.0 - fs-extra: 11.2.0 - get-port: 5.1.1 - get-stream: 6.0.0 - git-url-parse: 13.1.0 - glob-parent: 5.1.2 - globby: 11.1.0 - graceful-fs: 4.2.11 - has-unicode: 2.0.1 - import-local: 3.1.0 - ini: 1.3.8 - init-package-json: 5.0.0 - inquirer: 8.2.6 - is-ci: 3.0.1 - is-stream: 2.0.0 - jest-diff: 29.7.0 - js-yaml: 4.1.0 - libnpmaccess: 7.0.2 - libnpmpublish: 7.3.0 - load-json-file: 6.2.0 - lodash: 4.17.21 - make-dir: 4.0.0 - minimatch: 3.0.5 - multimatch: 5.0.0 - node-fetch: 2.6.7 - npm-package-arg: 8.1.1 - npm-packlist: 5.1.1 - npm-registry-fetch: 14.0.5 - npmlog: 6.0.2 - nx: 17.2.8 - p-map: 4.0.0 - p-map-series: 2.1.0 - p-pipe: 3.1.0 - p-queue: 6.6.2 - p-reduce: 2.1.0 - p-waterfall: 2.1.1 - pacote: 17.0.6 - pify: 5.0.0 - read-cmd-shim: 4.0.0 - read-package-json: 6.0.4 - resolve-from: 5.0.0 - rimraf: 4.4.1 - semver: 7.5.4 - signal-exit: 3.0.7 - slash: 3.0.0 - ssri: 9.0.1 - strong-log-transformer: 2.1.0 - tar: 6.1.11 - temp-dir: 1.0.0 - typescript: 5.3.3 - upath: 2.0.1 - uuid: 9.0.1 - validate-npm-package-license: 3.0.4 - validate-npm-package-name: 5.0.0 - write-file-atomic: 5.0.1 - write-pkg: 4.0.0 - yargs: 17.7.2 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - bluebird - - debug - - encoding - - supports-color - dev: true - - /less-plugin-resolve@1.0.2: - resolution: {integrity: sha512-e1AHq0XNTU8S3d9JCc8CFYajoUBr0EK3pcuLT5PogyBBeE0knzZJL105kKKSZWfq2lQLq3/uEDrMK3JPq+fHaA==} - dependencies: - enhanced-resolve: 5.15.0 - dev: true - - /less@4.1.3: - resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==} - engines: {node: '>=6'} - hasBin: true - dependencies: - copy-anything: 2.0.6 - parse-node-version: 1.0.1 - tslib: 2.6.2 - optionalDependencies: - errno: 0.1.8 - graceful-fs: 4.2.11 - image-size: 0.5.5 - make-dir: 2.1.0 - mime: 1.6.0 - needle: 3.3.1 - source-map: 0.6.1 - dev: true - - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /libnpmaccess@7.0.2: - resolution: {integrity: sha512-vHBVMw1JFMTgEk15zRsJuSAg7QtGGHpUSEfnbcRL1/gTBag9iEfJbyjpDmdJmwMhvpoLoNBtdAUCdGnaP32hhw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - npm-package-arg: 10.1.0 - npm-registry-fetch: 14.0.5 - transitivePeerDependencies: - - supports-color - dev: true - - /libnpmpublish@7.3.0: - resolution: {integrity: sha512-fHUxw5VJhZCNSls0KLNEG0mCD2PN1i14gH5elGOgiVnU3VgTcRahagYP2LKI1m0tFCJ+XrAm0zVYyF5RCbXzcg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - ci-info: 3.9.0 - normalize-package-data: 5.0.0 - npm-package-arg: 10.1.0 - npm-registry-fetch: 14.0.5 - proc-log: 3.0.0 - semver: 7.5.4 - sigstore: 1.9.0 - ssri: 10.0.5 - transitivePeerDependencies: - - supports-color - dev: true - - /lie@3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - dependencies: - immediate: 3.0.6 - dev: false - - /lightningcss-darwin-arm64@1.22.1: - resolution: {integrity: sha512-ldvElu+R0QimNTjsKpaZkUv3zf+uefzLy/R1R19jtgOfSRM+zjUCUgDhfEDRmVqJtMwYsdhMI2aJtJChPC6Osg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /lightningcss-darwin-x64@1.22.1: - resolution: {integrity: sha512-5p2rnlVTv6Gpw4PlTLq925nTVh+HFh4MpegX8dPDYJae+NFVjQ67gY7O6iHIzQjLipDiYejFF0yHrhjU3XgLBQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /lightningcss-freebsd-x64@1.22.1: - resolution: {integrity: sha512-1FaBtcFrZqB2hkFbAxY//Pnp8koThvyB6AhjbdVqKD4/pu13Rl91fKt2N9qyeQPUt3xy7ORUvSO+dPk3J6EjXg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /lightningcss-linux-arm-gnueabihf@1.22.1: - resolution: {integrity: sha512-6rub98tYGfE5I5j0BP8t/2d4BZyu1S7Iz9vUkm0H26snAFHYxLfj3RbQn0xHHIePSetjLnhcg3QlfwUAkD/FYg==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /lightningcss-linux-arm64-gnu@1.22.1: - resolution: {integrity: sha512-nYO5qGtb/1kkTZu3FeTiM+2B2TAb7m2DkLCTgQIs2bk2o9aEs7I96fwySKcoHWQAiQDGR9sMux9vkV4KQXqPaQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - libc: [glibc] - requiresBuild: true - dev: true - optional: true - - /lightningcss-linux-arm64-musl@1.22.1: - resolution: {integrity: sha512-MCV6RuRpzXbunvzwY644iz8cw4oQxvW7oer9xPkdadYqlEyiJJ6wl7FyJOH7Q6ZYH4yjGAUCvxDBxPbnDu9ZVg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - libc: [musl] - requiresBuild: true - dev: true - optional: true - - /lightningcss-linux-x64-gnu@1.22.1: - resolution: {integrity: sha512-RjNgpdM20VUXgV7us/VmlO3Vn2ZRiDnc3/bUxCVvySZWPiVPprpqW/QDWuzkGa+NCUf6saAM5CLsZLSxncXJwg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - libc: [glibc] - requiresBuild: true - dev: true - optional: true - - /lightningcss-linux-x64-musl@1.22.1: - resolution: {integrity: sha512-ZgO4C7Rd6Hv/5MnyY2KxOYmIlzk4rplVolDt3NbkNR8DndnyX0Q5IR4acJWNTBICQ21j3zySzKbcJaiJpk/4YA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - libc: [musl] - requiresBuild: true - dev: true - optional: true - - /lightningcss-win32-x64-msvc@1.22.1: - resolution: {integrity: sha512-4pozV4eyD0MDET41ZLHAeBo+H04Nm2UEYIk5w/ts40231dRFV7E0cjwbnZvSoc1DXFgecAhiC0L16ruv/ZDCpg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /lightningcss@1.22.1: - resolution: {integrity: sha512-Fy45PhibiNXkm0cK5FJCbfO8Y6jUpD/YcHf/BtuI+jvYYqSXKF4muk61jjE8YxCR9y+hDYIWSzHTc+bwhDE6rQ==} - engines: {node: '>= 12.0.0'} - dependencies: - detect-libc: 1.0.3 - optionalDependencies: - lightningcss-darwin-arm64: 1.22.1 - lightningcss-darwin-x64: 1.22.1 - lightningcss-freebsd-x64: 1.22.1 - lightningcss-linux-arm-gnueabihf: 1.22.1 - lightningcss-linux-arm64-gnu: 1.22.1 - lightningcss-linux-arm64-musl: 1.22.1 - lightningcss-linux-x64-gnu: 1.22.1 - lightningcss-linux-x64-musl: 1.22.1 - lightningcss-win32-x64-msvc: 1.22.1 - dev: true - - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: true - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - /lines-and-columns@2.0.4: - resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /lint-staged@13.3.0: - resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - dependencies: - chalk: 5.3.0 - commander: 11.0.0 - debug: 4.3.4 - execa: 7.2.0 - lilconfig: 2.1.0 - listr2: 6.6.1 - micromatch: 4.0.5 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.3.1 - transitivePeerDependencies: - - enquirer - - supports-color - dev: true - - /listr2@6.6.1: - resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} - engines: {node: '>=16.0.0'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true - dependencies: - cli-truncate: 3.1.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 5.0.1 - rfdc: 1.3.1 - wrap-ansi: 8.1.0 - dev: true - - /load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - dependencies: - graceful-fs: 4.2.11 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - dev: true - - /load-json-file@6.2.0: - resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} - engines: {node: '>=8'} - dependencies: - graceful-fs: 4.2.11 - parse-json: 5.2.0 - strip-bom: 4.0.0 - type-fest: 0.6.0 - dev: true - - /load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: true - - /loader-runner@4.2.0: - resolution: {integrity: sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==} - engines: {node: '>=6.11.5'} - dev: true - - /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - dev: true - - /loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - dev: true - - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true - - /locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - dev: true - - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - dev: true - - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: true - - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - dev: false - - /lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - dev: true - - /lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - dev: true - - /lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - dev: true - - /lodash.isfunction@3.0.9: - resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} - dev: true - - /lodash.ismatch@4.4.0: - resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} - dev: true - - /lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - dev: true - - /lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - dev: true - - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - /lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - dev: true - - /lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - dev: true - - /lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - dev: true - - /lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - dev: true - - /lodash.tonumber@4.0.3: - resolution: {integrity: sha512-SY0SwuPOHRwKcCNTdsntPYb+Zddz5mDUIVFABzRMqmAiL41pMeyoQFGxYAw5zdc9NnH4pbJqiqqp5ckfxa+zSA==} - dev: false - - /lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - dev: true - - /lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - dev: true - - /lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - dev: true - - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - /log-symbols@2.2.0: - resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} - engines: {node: '>=4'} - dependencies: - chalk: 2.4.2 - dev: true - - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: true - - /log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - ansi-escapes: 5.0.0 - cli-cursor: 4.0.0 - slice-ansi: 5.0.0 - strip-ansi: 7.1.0 - wrap-ansi: 8.1.0 - dev: true - - /longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - dev: true - - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - dependencies: - js-tokens: 4.0.0 - - /lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - dependencies: - tslib: 2.6.2 - dev: true - - /lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - dev: true - - /lru-cache@10.1.0: - resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} - engines: {node: 14 || >=16.14} - dev: true - - /lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - dev: true - - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - dev: true - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - dev: true - - /lunar-typescript@1.7.3: - resolution: {integrity: sha512-VXMdgh2Psrn3vtfrai4lPug3Mt7ijYGVTICDARA8tLzqGv3Io/OvS23wxzFi/AbSzxt93u2wWhgv3VGKPSbUgQ==} - dev: false - - /lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - dev: true - - /make-dir@1.3.0: - resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} - engines: {node: '>=4'} - dependencies: - pify: 3.0.0 - dev: true - - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - dependencies: - pify: 4.0.1 - semver: 5.7.2 - dev: true - - /make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - dependencies: - semver: 7.5.4 - dev: true - - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true - - /make-fetch-happen@11.1.1: - resolution: {integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - agentkeepalive: 4.5.0 - cacache: 17.1.4 - http-cache-semantics: 4.1.1 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 7.18.3 - minipass: 5.0.0 - minipass-fetch: 3.0.4 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 - ssri: 10.0.5 - transitivePeerDependencies: - - supports-color - dev: true - - /make-fetch-happen@13.0.0: - resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@npmcli/agent': 2.2.0 - cacache: 18.0.2 - http-cache-semantics: 4.1.1 - is-lambda: 1.0.1 - minipass: 7.0.4 - minipass-fetch: 3.0.4 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - ssri: 10.0.5 - transitivePeerDependencies: - - supports-color - dev: true - - /make-fetch-happen@2.6.0: - resolution: {integrity: sha512-FFq0lNI0ax+n9IWzWpH8A4JdgYiAp2DDYIZ3rsaav8JDe8I+72CzK6PQW/oom15YDZpV5bYW/9INd6nIJ2ZfZw==} - dependencies: - agentkeepalive: 3.5.2 - cacache: 10.0.4 - http-cache-semantics: 3.8.1 - http-proxy-agent: 2.1.0 - https-proxy-agent: 2.2.4 - lru-cache: 4.1.5 - mississippi: 1.3.1 - node-fetch-npm: 2.0.4 - promise-retry: 1.1.1 - socks-proxy-agent: 3.0.1 - ssri: 5.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - dependencies: - tmpl: 1.0.5 - dev: true - - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: true - - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: true - - /markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - dev: true - - /mathml-tag-names@2.1.3: - resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} - dev: true - - /md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /mdast-util-definitions@5.1.2: - resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - unist-util-visit: 4.1.2 - dev: true - - /mdast-util-directive@2.2.4: - resolution: {integrity: sha512-sK3ojFP+jpj1n7Zo5ZKvoxP1MvLyzVG63+gm40Z/qI00avzdPCYxt7RBMgofwAva9gBjbDBWVRB/i+UD+fUCzQ==} - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.3 - unist-util-visit-parents: 5.1.3 - transitivePeerDependencies: - - supports-color - dev: true - - /mdast-util-find-and-replace@2.2.2: - resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} - dependencies: - '@types/mdast': 3.0.15 - escape-string-regexp: 5.0.0 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - dev: true - - /mdast-util-from-markdown@1.3.1: - resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - decode-named-character-reference: 1.0.2 - mdast-util-to-string: 3.2.0 - micromark: 3.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-decode-string: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-stringify-position: 3.0.3 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - dev: true - - /mdast-util-frontmatter@1.0.1: - resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==} - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - micromark-extension-frontmatter: 1.1.1 - dev: true - - /mdast-util-gfm-autolink-literal@1.0.3: - resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} - dependencies: - '@types/mdast': 3.0.15 - ccount: 2.0.1 - mdast-util-find-and-replace: 2.2.2 - micromark-util-character: 1.2.0 - dev: true - - /mdast-util-gfm-footnote@1.0.2: - resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - micromark-util-normalize-identifier: 1.1.0 - dev: true - - /mdast-util-gfm-strikethrough@1.0.3: - resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - dev: true - - /mdast-util-gfm-table@1.0.7: - resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} - dependencies: - '@types/mdast': 3.0.15 - markdown-table: 3.0.3 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /mdast-util-gfm-task-list-item@1.0.2: - resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - dev: true - - /mdast-util-gfm@2.0.2: - resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} - dependencies: - mdast-util-from-markdown: 1.3.1 - mdast-util-gfm-autolink-literal: 1.0.3 - mdast-util-gfm-footnote: 1.0.2 - mdast-util-gfm-strikethrough: 1.0.3 - mdast-util-gfm-table: 1.0.7 - mdast-util-gfm-task-list-item: 1.0.2 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /mdast-util-mdx-expression@1.3.2: - resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} - dependencies: - '@types/estree-jsx': 1.0.3 - '@types/hast': 2.3.9 - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /mdast-util-mdxjs-esm@1.3.1: - resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} - dependencies: - '@types/estree-jsx': 1.0.3 - '@types/hast': 2.3.9 - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /mdast-util-phrasing@3.0.1: - resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} - dependencies: - '@types/mdast': 3.0.15 - unist-util-is: 5.2.1 - dev: true - - /mdast-util-to-hast@12.3.0: - resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} - dependencies: - '@types/hast': 2.3.9 - '@types/mdast': 3.0.15 - mdast-util-definitions: 5.1.2 - micromark-util-sanitize-uri: 1.2.0 - trim-lines: 3.0.1 - unist-util-generated: 2.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - dev: true - - /mdast-util-to-markdown@1.5.0: - resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - longest-streak: 3.1.0 - mdast-util-phrasing: 3.0.1 - mdast-util-to-string: 3.2.0 - micromark-util-decode-string: 1.1.0 - unist-util-visit: 4.1.2 - zwitch: 2.0.4 - dev: true - - /mdast-util-to-string@3.2.0: - resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} - dependencies: - '@types/mdast': 3.0.15 - dev: true - - /mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - dev: true - - /mdn-data@2.0.4: - resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} - dev: true - - /memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} - dependencies: - fs-monkey: 1.0.5 - dev: true - - /meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - dev: true - - /meow@8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} - engines: {node: '>=10'} - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - dev: true - - /meow@9.0.0: - resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} - engines: {node: '>=10'} - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize: 1.2.0 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - dev: true - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true - - /micromark-core-commonmark@1.1.0: - resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} - dependencies: - decode-named-character-reference: 1.0.2 - micromark-factory-destination: 1.1.0 - micromark-factory-label: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-factory-title: 1.1.0 - micromark-factory-whitespace: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-html-tag-name: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-extension-directive@2.2.1: - resolution: {integrity: sha512-ZFKZkNaEqAP86IghX1X7sE8NNnx6kFNq9mSBRvEHjArutTCJZ3LYg6VH151lXVb1JHpmIcW/7rX25oMoIHuSug==} - dependencies: - micromark-factory-space: 1.1.0 - micromark-factory-whitespace: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - parse-entities: 4.0.1 - uvu: 0.5.6 - dev: true - - /micromark-extension-frontmatter@1.1.1: - resolution: {integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==} - dependencies: - fault: 2.0.1 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-extension-gfm-autolink-literal@1.0.5: - resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-extension-gfm-footnote@1.1.2: - resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} - dependencies: - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-extension-gfm-strikethrough@1.0.7: - resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-extension-gfm-table@1.0.7: - resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-extension-gfm-tagfilter@1.0.2: - resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} - dependencies: - micromark-util-types: 1.1.0 - dev: true - - /micromark-extension-gfm-task-list-item@1.0.5: - resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-extension-gfm@2.0.3: - resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} - dependencies: - micromark-extension-gfm-autolink-literal: 1.0.5 - micromark-extension-gfm-footnote: 1.1.2 - micromark-extension-gfm-strikethrough: 1.0.7 - micromark-extension-gfm-table: 1.0.7 - micromark-extension-gfm-tagfilter: 1.0.2 - micromark-extension-gfm-task-list-item: 1.0.5 - micromark-util-combine-extensions: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-factory-destination@1.1.0: - resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-factory-label@1.1.0: - resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-factory-space@1.1.0: - resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-factory-title@1.1.0: - resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-factory-whitespace@1.1.0: - resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-util-character@1.2.0: - resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-util-chunked@1.1.0: - resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} - dependencies: - micromark-util-symbol: 1.1.0 - dev: true - - /micromark-util-classify-character@1.1.0: - resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-util-combine-extensions@1.1.0: - resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-util-decode-numeric-character-reference@1.1.0: - resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} - dependencies: - micromark-util-symbol: 1.1.0 - dev: true - - /micromark-util-decode-string@1.1.0: - resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 1.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-symbol: 1.1.0 - dev: true - - /micromark-util-encode@1.1.0: - resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} - dev: true - - /micromark-util-html-tag-name@1.2.0: - resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} - dev: true - - /micromark-util-normalize-identifier@1.1.0: - resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} - dependencies: - micromark-util-symbol: 1.1.0 - dev: true - - /micromark-util-resolve-all@1.1.0: - resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} - dependencies: - micromark-util-types: 1.1.0 - dev: true - - /micromark-util-sanitize-uri@1.2.0: - resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-encode: 1.1.0 - micromark-util-symbol: 1.1.0 - dev: true - - /micromark-util-subtokenize@1.1.0: - resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-util-symbol@1.1.0: - resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - dev: true - - /micromark-util-types@1.1.0: - resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - dev: true - - /micromark@3.2.0: - resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} - dependencies: - '@types/debug': 4.1.12 - debug: 4.3.4 - decode-named-character-reference: 1.0.2 - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-combine-extensions: 1.1.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-encode: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - dev: true - - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: true - - /miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - dev: true - - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: true - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true - - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - requiresBuild: true - dev: true - optional: true - - /mimer@1.1.0: - resolution: {integrity: sha512-y9dVfy2uiycQvDNiAYW6zp49ZhFlXDMr5wfdOiMbdzGM/0N5LNR6HTUn3un+WUQcM0koaw8FMTG1bt5EnHJdvQ==} - engines: {node: '>= 6.0'} - hasBin: true - dev: true - - /mimic-fn@1.2.0: - resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} - engines: {node: '>=4'} - dev: true - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true - - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: true - - /minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - dev: true - - /minimatch@3.0.5: - resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: true - - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - /minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: true - - /minipass-collect@2.0.1: - resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - minipass: 7.0.4 - dev: true - - /minipass-fetch@3.0.4: - resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - minipass: 7.0.4 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - dev: true - - /minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: true - - /minipass-json-stream@1.0.1: - resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} - dependencies: - jsonparse: 1.3.1 - minipass: 3.3.6 - dev: true - - /minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.6 - dev: true - - /minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.6 - dev: true - - /minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: true - - /minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - dev: true - - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: true - - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - dev: true - - /minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - dev: true - - /mississippi@1.3.1: - resolution: {integrity: sha512-/6rB8YXFbAtsUVRphIRQqB0+9c7VaPHCjVtvto+JqwVxgz8Zz+I+f68/JgQ+Pb4VlZb2svA9OtdXnHHsZz7ltg==} - dependencies: - concat-stream: 1.6.2 - duplexify: 3.7.1 - end-of-stream: 1.4.4 - flush-write-stream: 1.1.1 - from2: 2.3.0 - parallel-transform: 1.2.0 - pump: 1.0.3 - pumpify: 1.5.1 - stream-each: 1.2.3 - through2: 2.0.5 - dev: true - - /mississippi@2.0.0: - resolution: {integrity: sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==} - engines: {node: '>=4.0.0'} - dependencies: - concat-stream: 1.6.2 - duplexify: 3.7.1 - end-of-stream: 1.4.4 - flush-write-stream: 1.1.1 - from2: 2.3.0 - parallel-transform: 1.2.0 - pump: 2.0.1 - pumpify: 1.5.1 - stream-each: 1.2.3 - through2: 2.0.5 - dev: true - - /mixme@0.5.10: - resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==} - engines: {node: '>= 8.0.0'} - dev: true - - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: true - - /modify-values@1.0.1: - resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} - engines: {node: '>=0.10.0'} - dev: true - - /move-concurrently@1.0.1: - resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} - dependencies: - aproba: 1.2.0 - copy-concurrently: 1.0.5 - fs-write-stream-atomic: 1.0.10 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - dev: true - - /mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - dev: true - - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: true - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - - /multimatch@5.0.0: - resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} - engines: {node: '>=10'} - dependencies: - '@types/minimatch': 3.0.5 - array-differ: 3.0.0 - array-union: 2.1.0 - arrify: 2.0.1 - minimatch: 3.1.2 - dev: true - - /multipipe@1.0.2: - resolution: {integrity: sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==} - dependencies: - duplexer2: 0.1.4 - object-assign: 4.1.1 - dev: false - - /mute-stream@0.0.7: - resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} - dev: true - - /mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: true - - /mute-stream@1.0.0: - resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /nanoid@2.1.11: - resolution: {integrity: sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==} - dev: true - - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - - /needle@3.3.1: - resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} - engines: {node: '>= 4.4.x'} - hasBin: true - requiresBuild: true - dependencies: - iconv-lite: 0.6.3 - sax: 1.3.0 - dev: true - optional: true - - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: true - - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true - - /no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - dependencies: - lower-case: 2.0.2 - tslib: 2.6.2 - dev: true - - /node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - dev: true - - /node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - dev: true - - /node-fetch-npm@2.0.4: - resolution: {integrity: sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==} - engines: {node: '>=4'} - deprecated: This module is not used anymore, npm uses minipass-fetch for its fetch implementation now - dependencies: - encoding: 0.1.13 - json-parse-better-errors: 1.0.2 - safe-buffer: 5.2.1 - dev: true - - /node-fetch@1.7.3: - resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==} - dependencies: - encoding: 0.1.13 - is-stream: 1.1.0 - dev: false - - /node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: true - - /node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - dev: true - - /node-gyp@10.0.1: - resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.1 - glob: 10.3.10 - graceful-fs: 4.2.11 - make-fetch-happen: 13.0.0 - nopt: 7.2.0 - proc-log: 3.0.0 - semver: 7.5.4 - tar: 6.1.11 - which: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true - - /node-libs-browser@2.2.1: - resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} - dependencies: - assert: 1.5.1 - browserify-zlib: 0.2.0 - buffer: 4.9.2 - console-browserify: 1.2.0 - constants-browserify: 1.0.0 - crypto-browserify: 3.12.0 - domain-browser: 1.2.0 - events: 3.3.0 - https-browserify: 1.0.0 - os-browserify: 0.3.0 - path-browserify: 0.0.1 - process: 0.11.10 - punycode: 1.4.1 - querystring-es3: 0.2.1 - readable-stream: 2.3.8 - stream-browserify: 2.0.2 - stream-http: 2.8.3 - string_decoder: 1.3.0 - timers-browserify: 2.0.12 - tty-browserify: 0.0.0 - url: 0.11.3 - util: 0.11.1 - vm-browserify: 1.1.2 - dev: true - - /node-machine-id@1.1.12: - resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} - dev: true - - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: true - - /nopt@7.2.0: - resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - dependencies: - abbrev: 2.0.0 - dev: true - - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.8 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.13.1 - semver: 7.5.4 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-package-data@5.0.0: - resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - hosted-git-info: 6.1.1 - is-core-module: 2.13.1 - semver: 7.5.4 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-package-data@6.0.0: - resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - hosted-git-info: 7.0.1 - is-core-module: 2.13.1 - semver: 7.5.4 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - dev: true - - /normalize-wheel@1.0.1: - resolution: {integrity: sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==} - dev: false - - /npm-bundled@1.1.2: - resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} - dependencies: - npm-normalize-package-bin: 1.0.1 - dev: true - - /npm-bundled@3.0.0: - resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - npm-normalize-package-bin: 3.0.1 - dev: true - - /npm-install-checks@6.3.0: - resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - semver: 7.5.4 - dev: true - - /npm-normalize-package-bin@1.0.1: - resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} - dev: true - - /npm-normalize-package-bin@3.0.1: - resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /npm-package-arg@10.1.0: - resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - hosted-git-info: 6.1.1 - proc-log: 3.0.0 - semver: 7.5.4 - validate-npm-package-name: 5.0.0 - dev: true - - /npm-package-arg@11.0.1: - resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - hosted-git-info: 7.0.1 - proc-log: 3.0.0 - semver: 7.5.4 - validate-npm-package-name: 5.0.0 - dev: true - - /npm-package-arg@5.1.2: - resolution: {integrity: sha512-wJBsrf0qpypPT7A0LART18hCdyhpCMxeTtcb0X4IZO2jsP6Om7EHN1d9KSKiqD+KVH030RVNpWS9thk+pb7wzA==} - dependencies: - hosted-git-info: 2.8.9 - osenv: 0.1.5 - semver: 5.7.2 - validate-npm-package-name: 3.0.0 - dev: true - - /npm-package-arg@8.1.1: - resolution: {integrity: sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 3.0.8 - semver: 7.5.4 - validate-npm-package-name: 3.0.0 - dev: true - - /npm-packlist@5.1.1: - resolution: {integrity: sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - dependencies: - glob: 8.1.0 - ignore-walk: 5.0.1 - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 - dev: true - - /npm-packlist@8.0.2: - resolution: {integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - ignore-walk: 6.0.4 - dev: true - - /npm-pick-manifest@1.0.4: - resolution: {integrity: sha512-MKxNdeyOZysPRTTbHtW0M5Fw38Jo/3ARsoGw5qjCfS+XGjvNB/Gb4qtAZUFmKPM2mVum+eX559eHvKywU856BQ==} - dependencies: - npm-package-arg: 5.1.2 - semver: 5.7.2 - dev: true - - /npm-pick-manifest@9.0.0: - resolution: {integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - npm-install-checks: 6.3.0 - npm-normalize-package-bin: 3.0.1 - npm-package-arg: 11.0.1 - semver: 7.5.4 - dev: true - - /npm-registry-fetch@14.0.5: - resolution: {integrity: sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - make-fetch-happen: 11.1.1 - minipass: 5.0.0 - minipass-fetch: 3.0.4 - minipass-json-stream: 1.0.1 - minizlib: 2.1.2 - npm-package-arg: 10.1.0 - proc-log: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /npm-registry-fetch@16.1.0: - resolution: {integrity: sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - make-fetch-happen: 13.0.0 - minipass: 7.0.4 - minipass-fetch: 3.0.4 - minipass-json-stream: 1.0.1 - minizlib: 2.1.2 - npm-package-arg: 11.0.1 - proc-log: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - dependencies: - path-key: 2.0.1 - dev: true - - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - - /npm-run-path@5.2.0: - resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: true - - /npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - dev: true - - /nprogress@0.2.0: - resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} - dev: true - - /nth-check@1.0.2: - resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} - dependencies: - boolbase: 1.0.0 - dev: true - - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - dependencies: - boolbase: 1.0.0 - dev: true - - /nx@17.2.8: - resolution: {integrity: sha512-rM5zXbuXLEuqQqcjVjClyvHwRJwt+NVImR2A6KFNG40Z60HP6X12wAxxeLHF5kXXTDRU0PFhf/yACibrpbPrAw==} - hasBin: true - requiresBuild: true - peerDependencies: - '@swc-node/register': ^1.6.7 - '@swc/core': ^1.3.85 - peerDependenciesMeta: - '@swc-node/register': - optional: true - '@swc/core': - optional: true - dependencies: - '@nrwl/tao': 17.2.8 - '@yarnpkg/lockfile': 1.1.0 - '@yarnpkg/parsers': 3.0.0-rc.46 - '@zkochan/js-yaml': 0.0.6 - axios: 1.6.5 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.6.1 - cliui: 8.0.1 - dotenv: 16.3.2 - dotenv-expand: 10.0.0 - enquirer: 2.3.6 - figures: 3.2.0 - flat: 5.0.2 - fs-extra: 11.2.0 - glob: 7.1.4 - ignore: 5.3.0 - jest-diff: 29.7.0 - js-yaml: 4.1.0 - jsonc-parser: 3.2.0 - lines-and-columns: 2.0.4 - minimatch: 3.0.5 - node-machine-id: 1.1.12 - npm-run-path: 4.0.1 - open: 8.4.2 - semver: 7.5.3 - string-width: 4.2.3 - strong-log-transformer: 2.1.0 - tar-stream: 2.2.0 - tmp: 0.2.1 - tsconfig-paths: 4.2.0 - tslib: 2.6.2 - yargs: 17.7.2 - yargs-parser: 21.1.1 - optionalDependencies: - '@nx/nx-darwin-arm64': 17.2.8 - '@nx/nx-darwin-x64': 17.2.8 - '@nx/nx-freebsd-x64': 17.2.8 - '@nx/nx-linux-arm-gnueabihf': 17.2.8 - '@nx/nx-linux-arm64-gnu': 17.2.8 - '@nx/nx-linux-arm64-musl': 17.2.8 - '@nx/nx-linux-x64-gnu': 17.2.8 - '@nx/nx-linux-x64-musl': 17.2.8 - '@nx/nx-win32-arm64-msvc': 17.2.8 - '@nx/nx-win32-x64-msvc': 17.2.8 - transitivePeerDependencies: - - debug - dev: true - - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - dev: false - - /object-keys@0.4.0: - resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} - dev: false - - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - - /object.getownpropertydescriptors@2.1.7: - resolution: {integrity: sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==} - engines: {node: '>= 0.8'} - dependencies: - array.prototype.reduce: 1.0.6 - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - safe-array-concat: 1.1.0 - dev: true - - /object.getprototypeof@1.0.5: - resolution: {integrity: sha512-4G0QiXpoIppBUz5efmxTm/HTbVN2ioGjk/PbsaNvwISFX+saj8muGp6vNuzIdsosFxM4V/kpUVNvy/+9+DVBZQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - reflect.getprototypeof: 1.0.4 - dev: true - - /object.hasown@1.1.3: - resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} - dependencies: - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - - /obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - dev: true - - /omit-deep@0.3.0: - resolution: {integrity: sha512-Lbl/Ma59sss2b15DpnWnGmECBRL8cRl/PjPbPMVW+Y8zIQzRrwMaI65Oy6HvxyhYeILVKBJb2LWeG81bj5zbMg==} - engines: {node: '>=0.10.0'} - dependencies: - is-plain-object: 2.0.4 - unset-value: 0.1.2 - dev: true - - /omit.js@2.0.2: - resolution: {integrity: sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==} - dev: false - - /on-exit-leak-free@0.2.0: - resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} - dev: true - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - - /onetime@2.0.1: - resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} - engines: {node: '>=4'} - dependencies: - mimic-fn: 1.2.0 - dev: true - - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: true - - /open@6.4.0: - resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} - engines: {node: '>=8'} - dependencies: - is-wsl: 1.1.0 - dev: true - - /open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: true - - /open@9.1.0: - resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} - engines: {node: '>=14.16'} - dependencies: - default-browser: 4.0.0 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 2.2.0 - dev: true - - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /ora@1.4.0: - resolution: {integrity: sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==} - engines: {node: '>=4'} - dependencies: - chalk: 2.4.2 - cli-cursor: 2.1.0 - cli-spinners: 1.3.1 - log-symbols: 2.2.0 - dev: true - - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: true - - /os-browserify@0.3.0: - resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} - dev: true - - /os-homedir@1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - dev: true - - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true - - /osenv@0.1.5: - resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} - dependencies: - os-homedir: 1.0.2 - os-tmpdir: 1.0.2 - dev: true - - /outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - dev: true - - /p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - dependencies: - p-map: 2.1.0 - dev: true - - /p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - dev: true - - /p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - dependencies: - p-try: 1.0.0 - dev: true - - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - dependencies: - p-limit: 1.3.0 - dev: true - - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - dependencies: - p-limit: 2.3.0 - dev: true - - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: true - - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - - /p-map-series@2.1.0: - resolution: {integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==} - engines: {node: '>=8'} - dev: true - - /p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - dev: true - - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: true - - /p-pipe@3.1.0: - resolution: {integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==} - engines: {node: '>=8'} - dev: true - - /p-queue@6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} - dependencies: - eventemitter3: 4.0.7 - p-timeout: 3.2.0 - dev: true - - /p-reduce@2.1.0: - resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} - engines: {node: '>=8'} - dev: true - - /p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} - dependencies: - p-finally: 1.0.0 - dev: true - - /p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - dev: true - - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - - /p-waterfall@2.1.1: - resolution: {integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==} - engines: {node: '>=8'} - dependencies: - p-reduce: 2.1.0 - dev: true - - /package-json@4.0.1: - resolution: {integrity: sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==} - engines: {node: '>=4'} - dependencies: - got: 6.7.1 - registry-auth-token: 3.4.0 - registry-url: 3.1.0 - semver: 5.7.2 - dev: true - - /pacote@17.0.6: - resolution: {integrity: sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - dependencies: - '@npmcli/git': 5.0.4 - '@npmcli/installed-package-contents': 2.0.2 - '@npmcli/promise-spawn': 7.0.1 - '@npmcli/run-script': 7.0.2 - cacache: 18.0.2 - fs-minipass: 3.0.3 - minipass: 7.0.4 - npm-package-arg: 11.0.1 - npm-packlist: 8.0.2 - npm-pick-manifest: 9.0.0 - npm-registry-fetch: 16.1.0 - proc-log: 3.0.0 - promise-retry: 2.0.1 - read-package-json: 7.0.0 - read-package-json-fast: 3.0.2 - sigstore: 2.2.0 - ssri: 10.0.5 - tar: 6.1.11 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - - /pacote@2.7.38: - resolution: {integrity: sha512-XxHUyHQB7QCVBxoXeVu0yKxT+2PvJucsc0+1E+6f95lMUxEAYERgSAc71ckYXrYr35Ew3xFU/LrhdIK21GQFFA==} - dependencies: - bluebird: 3.7.2 - cacache: 9.3.0 - glob: 7.2.3 - lru-cache: 4.1.5 - make-fetch-happen: 2.6.0 - minimatch: 3.1.2 - mississippi: 1.3.1 - normalize-package-data: 2.5.0 - npm-package-arg: 5.1.2 - npm-pick-manifest: 1.0.4 - osenv: 0.1.5 - promise-inflight: 1.0.1(bluebird@3.7.2) - promise-retry: 1.1.1 - protoduck: 4.0.0 - safe-buffer: 5.2.1 - semver: 5.7.2 - ssri: 4.1.6 - tar-fs: 1.16.3 - tar-stream: 1.6.2 - unique-filename: 1.1.1 - which: 1.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - - /parallel-transform@1.2.0: - resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} - dependencies: - cyclist: 1.0.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: true - - /param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 - dev: true - - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - - /parse-asn1@5.1.6: - resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} - dependencies: - asn1.js: 5.4.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - dev: true - - /parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} - dependencies: - '@types/unist': 2.0.10 - character-entities: 2.0.2 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - dev: true - - /parse-git-config@0.2.0: - resolution: {integrity: sha512-amapZFADOJtHvX2URcRfbzG2OFcW+UAwmdK2kht2N2vsH5Py65VxI5yZTlD2DjmxVhTz6htFoVCxROYUJaYOXQ==} - engines: {node: '>=0.10.0'} - dependencies: - ini: 1.3.8 - dev: true - - /parse-git-config@1.1.1: - resolution: {integrity: sha512-S3LGXJZVSy/hswvbSkfdbKBRVsnqKrVu6j8fcvdtJ4TxosSELyQDsJPuGPXuZ+EyuYuJd3O4uAF8gcISR0OFrQ==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - fs-exists-sync: 0.1.0 - git-config-path: 1.0.1 - ini: 1.3.8 - dev: true - - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: true - - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.23.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - /parse-node-version@1.0.1: - resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} - engines: {node: '>= 0.10'} - dev: true - - /parse-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - dev: true - - /parse-path@7.0.0: - resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} - dependencies: - protocols: 2.0.1 - dev: true - - /parse-url@8.1.0: - resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} - dependencies: - parse-path: 7.0.0 - dev: true - - /parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: true - - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - dependencies: - entities: 4.5.0 - dev: true - - /parseley@0.12.1: - resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} - dependencies: - leac: 0.6.0 - peberminta: 0.9.0 - dev: true - - /pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - dev: true - - /path-browserify@0.0.1: - resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} - dev: true - - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: true - - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true - - /path-is-inside@1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - dev: true - - /path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: true - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true - - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - lru-cache: 10.1.0 - minipass: 7.0.4 - dev: true - - /path-to-regexp@1.7.0: - resolution: {integrity: sha512-nifX1uj4S9IrK/w3Xe7kKvNEepXivANs9ng60Iq7PU/BlouV3yL/VUhFqTuTq33ykwUqoNcTeGo5vdOBP4jS/Q==} - dependencies: - isarray: 0.0.1 - dev: true - - /path-to-regexp@2.4.0: - resolution: {integrity: sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==} - dev: false - - /path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - dependencies: - pify: 3.0.0 - dev: true - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - /pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - dev: true - - /peberminta@0.9.0: - resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - dev: true - - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true - - /pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - dev: true - - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: true - - /pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - dev: true - - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true - - /pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} - dev: true - - /pino-abstract-transport@0.5.0: - resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} - dependencies: - duplexify: 4.1.2 - split2: 4.2.0 - dev: true - - /pino-std-serializers@4.0.0: - resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} - dev: true - - /pino@7.11.0: - resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} - hasBin: true - dependencies: - atomic-sleep: 1.0.0 - fast-redact: 3.3.0 - on-exit-leak-free: 0.2.0 - pino-abstract-transport: 0.5.0 - pino-std-serializers: 4.0.0 - process-warning: 1.0.0 - quick-format-unescaped: 4.0.4 - real-require: 0.1.0 - safe-stable-stringify: 2.4.3 - sonic-boom: 2.8.0 - thread-stream: 0.15.2 - dev: true - - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: true - - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - - /pkg-up@3.1.0: - resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} - engines: {node: '>=8'} - dependencies: - find-up: 3.0.0 - dev: true - - /pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - dev: true - - /point-in-polygon@1.1.0: - resolution: {integrity: sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==} - - /polygon-clipping@0.15.7: - resolution: {integrity: sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==} - dependencies: - robust-predicates: 3.0.2 - splaytree: 3.1.2 - dev: false - - /postcss-attribute-case-insensitive@5.0.2(postcss@8.4.33): - resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 - dev: true - - /postcss-clamp@4.1.0(postcss@8.4.33): - resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} - engines: {node: '>=7.6.0'} - peerDependencies: - postcss: ^8.4.6 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-color-functional-notation@4.2.4(postcss@8.4.33): - resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-color-hex-alpha@8.0.4(postcss@8.4.33): - resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.4 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-color-rebeccapurple@7.1.1(postcss@8.4.33): - resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-custom-media@8.0.2(postcss@8.4.33): - resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.3 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-custom-properties@12.1.11(postcss@8.4.33): - resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-custom-selectors@6.0.3(postcss@8.4.33): - resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.3 - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 - dev: true - - /postcss-dir-pseudo-class@6.0.5(postcss@8.4.33): - resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 - dev: true - - /postcss-double-position-gradients@3.1.2(postcss@8.4.33): - resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-env-function@4.0.6(postcss@8.4.33): - resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.4 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-flexbugs-fixes@5.0.2(postcss@8.4.33): - resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==} - peerDependencies: - postcss: ^8.1.4 - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-focus-visible@6.0.4(postcss@8.4.33): - resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.4 - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 - dev: true - - /postcss-focus-within@5.0.4(postcss@8.4.33): - resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.4 - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 - dev: true - - /postcss-font-variant@5.0.0(postcss@8.4.33): - resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-gap-properties@3.0.5(postcss@8.4.33): - resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-image-set-function@4.0.7(postcss@8.4.33): - resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-initial@4.0.1(postcss@8.4.33): - resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-lab-function@4.2.1(postcss@8.4.33): - resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-logical@5.0.4(postcss@8.4.33): - resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.4 - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-media-minmax@5.0.0(postcss@8.4.33): - resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-media-query-parser@0.2.3: - resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} - dev: true - - /postcss-modules-extract-imports@3.0.0(postcss@8.4.33): - resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-modules-local-by-default@4.0.4(postcss@8.4.33): - resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - icss-utils: 5.1.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-modules-scope@3.1.1(postcss@8.4.33): - resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 - dev: true - - /postcss-modules-values@4.0.0(postcss@8.4.33): - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - icss-utils: 5.1.0(postcss@8.4.33) - postcss: 8.4.33 - dev: true - - /postcss-nesting@10.2.0(postcss@8.4.33): - resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.15) - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 - dev: true - - /postcss-opacity-percentage@1.1.3(postcss@8.4.33): - resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-overflow-shorthand@3.0.4(postcss@8.4.33): - resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-page-break@3.0.4(postcss@8.4.33): - resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} - peerDependencies: - postcss: ^8 - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-place@7.0.5(postcss@8.4.33): - resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-prefix-selector@1.16.0(postcss@8.4.33): - resolution: {integrity: sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==} - peerDependencies: - postcss: '>4 <9' - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-preset-env@7.5.0(postcss@8.4.33): - resolution: {integrity: sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.4 - dependencies: - '@csstools/postcss-color-function': 1.1.1(postcss@8.4.33) - '@csstools/postcss-font-format-keywords': 1.0.1(postcss@8.4.33) - '@csstools/postcss-hwb-function': 1.0.2(postcss@8.4.33) - '@csstools/postcss-ic-unit': 1.0.1(postcss@8.4.33) - '@csstools/postcss-is-pseudo-class': 2.0.7(postcss@8.4.33) - '@csstools/postcss-normalize-display-values': 1.0.1(postcss@8.4.33) - '@csstools/postcss-oklab-function': 1.1.1(postcss@8.4.33) - '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.33) - '@csstools/postcss-stepped-value-functions': 1.0.1(postcss@8.4.33) - '@csstools/postcss-unset-value': 1.0.2(postcss@8.4.33) - autoprefixer: 10.4.17(postcss@8.4.33) - browserslist: 4.22.2 - css-blank-pseudo: 3.0.3(postcss@8.4.33) - css-has-pseudo: 3.0.4(postcss@8.4.33) - css-prefers-color-scheme: 6.0.3(postcss@8.4.33) - cssdb: 6.6.3 - postcss: 8.4.33 - postcss-attribute-case-insensitive: 5.0.2(postcss@8.4.33) - postcss-clamp: 4.1.0(postcss@8.4.33) - postcss-color-functional-notation: 4.2.4(postcss@8.4.33) - postcss-color-hex-alpha: 8.0.4(postcss@8.4.33) - postcss-color-rebeccapurple: 7.1.1(postcss@8.4.33) - postcss-custom-media: 8.0.2(postcss@8.4.33) - postcss-custom-properties: 12.1.11(postcss@8.4.33) - postcss-custom-selectors: 6.0.3(postcss@8.4.33) - postcss-dir-pseudo-class: 6.0.5(postcss@8.4.33) - postcss-double-position-gradients: 3.1.2(postcss@8.4.33) - postcss-env-function: 4.0.6(postcss@8.4.33) - postcss-focus-visible: 6.0.4(postcss@8.4.33) - postcss-focus-within: 5.0.4(postcss@8.4.33) - postcss-font-variant: 5.0.0(postcss@8.4.33) - postcss-gap-properties: 3.0.5(postcss@8.4.33) - postcss-image-set-function: 4.0.7(postcss@8.4.33) - postcss-initial: 4.0.1(postcss@8.4.33) - postcss-lab-function: 4.2.1(postcss@8.4.33) - postcss-logical: 5.0.4(postcss@8.4.33) - postcss-media-minmax: 5.0.0(postcss@8.4.33) - postcss-nesting: 10.2.0(postcss@8.4.33) - postcss-opacity-percentage: 1.1.3(postcss@8.4.33) - postcss-overflow-shorthand: 3.0.4(postcss@8.4.33) - postcss-page-break: 3.0.4(postcss@8.4.33) - postcss-place: 7.0.5(postcss@8.4.33) - postcss-pseudo-class-any-link: 7.1.6(postcss@8.4.33) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.33) - postcss-selector-not: 5.0.0(postcss@8.4.33) - postcss-value-parser: 4.2.0 - dev: true - - /postcss-pseudo-class-any-link@7.1.6(postcss@8.4.33): - resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.15 - dev: true - - /postcss-replace-overflow-wrap@4.0.0(postcss@8.4.33): - resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} - peerDependencies: - postcss: ^8.0.3 - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-resolve-nested-selector@0.1.1: - resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} - dev: true - - /postcss-safe-parser@6.0.0(postcss@8.4.33): - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.3.3 - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-selector-not@5.0.0(postcss@8.4.33): - resolution: {integrity: sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==} - peerDependencies: - postcss: ^8.1.0 - dependencies: - balanced-match: 1.0.2 - postcss: 8.4.33 - dev: true - - /postcss-selector-parser@6.0.15: - resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: true - - /postcss-syntax@0.36.2(postcss@8.4.33): - resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==} - peerDependencies: - postcss: '>=5.0.0' - postcss-html: '*' - postcss-jsx: '*' - postcss-less: '*' - postcss-markdown: '*' - postcss-scss: '*' - peerDependenciesMeta: - postcss-html: - optional: true - postcss-jsx: - optional: true - postcss-less: - optional: true - postcss-markdown: - optional: true - postcss-scss: - optional: true - dependencies: - postcss: 8.4.33 - dev: true - - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: true - - /postcss@8.4.33: - resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /preferred-pm@3.1.2: - resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - dev: true - - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true - - /prepend-http@1.0.4: - resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} - engines: {node: '>=0.10.0'} - dev: true - - /prettier-plugin-organize-imports@3.2.4(prettier@2.8.8)(typescript@5.3.3): - resolution: {integrity: sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==} - peerDependencies: - '@volar/vue-language-plugin-pug': ^1.0.4 - '@volar/vue-typescript': ^1.0.4 - prettier: '>=2.0' - typescript: '>=2.9' - peerDependenciesMeta: - '@volar/vue-language-plugin-pug': - optional: true - '@volar/vue-typescript': - optional: true - dependencies: - prettier: 2.8.8 - typescript: 5.3.3 - dev: true - - /prettier-plugin-packagejson@2.4.3(prettier@2.8.8): - resolution: {integrity: sha512-kPeeviJiwy0BgOSk7No8NmzzXfW4R9FYWni6ziA5zc1kGVVrKnBzMZdu2TUhI+I7h8/5Htt3vARYOk7KKJTTNQ==} - peerDependencies: - prettier: '>= 1.16.0' - peerDependenciesMeta: - prettier: - optional: true - dependencies: - prettier: 2.8.8 - sort-package-json: 2.4.1 - synckit: 0.8.5 - dev: true - - /prettier-plugin-packagejson@2.4.9(prettier@2.8.8): - resolution: {integrity: sha512-b3Q7agXVqxK3UpYEJr0xLD51SxriYXESWUCjmxOBUGqnPFZOg9jZGZ+Ptzq252I6OqzXN2rj1tJIFq6KOGLLJw==} - peerDependencies: - prettier: '>= 1.16.0' - peerDependenciesMeta: - prettier: - optional: true - dependencies: - prettier: 2.8.8 - sort-package-json: 2.6.0 - synckit: 0.9.0 - dev: true - - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true - - /pretty-error@4.0.0: - resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - dependencies: - lodash: 4.17.21 - renderkid: 3.0.0 - dev: true - - /pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - dev: true - - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - - /prism-react-renderer@1.3.5(react@18.2.0): - resolution: {integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==} - peerDependencies: - react: '>=0.14.9' - dependencies: - react: 18.2.0 - dev: true - - /prism-themes@1.9.0: - resolution: {integrity: sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==} - dev: true - - /prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - dev: true - - /proc-log@3.0.0: - resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - /process-warning@1.0.0: - resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} - dev: true - - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: true - - /promise-inflight@1.0.1(bluebird@3.7.2): - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - dependencies: - bluebird: 3.7.2 - dev: true - - /promise-retry@1.1.1: - resolution: {integrity: sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==} - engines: {node: '>=0.12'} - dependencies: - err-code: 1.1.2 - retry: 0.10.1 - dev: true - - /promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - dev: true - - /promzard@1.0.0: - resolution: {integrity: sha512-KQVDEubSUHGSt5xLakaToDFrSoZhStB8dXLzk2xvwR67gJktrHFvpR63oZgHyK19WKbHFLXJqCPXdVR3aBP8Ig==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - read: 2.1.0 - dev: true - - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - /property-information@6.4.0: - resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==} - dev: true - - /protocols@2.0.1: - resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} - dev: true - - /protoduck@4.0.0: - resolution: {integrity: sha512-9sxuz0YTU/68O98xuDn8NBxTVH9EuMhrBTxZdiBL0/qxRmWhB/5a8MagAebDa+98vluAZTs8kMZibCdezbRCeQ==} - dependencies: - genfun: 4.0.1 - dev: true - - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: true - - /prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - requiresBuild: true - dev: true - optional: true - - /pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: true - - /public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - dependencies: - bn.js: 4.12.0 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - parse-asn1: 5.1.6 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true - - /pump@1.0.3: - resolution: {integrity: sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true - - /pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true - - /pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} - dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 - dev: true - - /punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - dev: true - - /punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - dev: true - - /q@1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - dev: true - - /qrcode.react@3.1.0(react@18.2.0): - resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - dev: false - - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.4 - - /query-string@6.14.1: - resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} - engines: {node: '>=6'} - dependencies: - decode-uri-component: 0.2.2 - filter-obj: 1.1.0 - split-on-first: 1.1.0 - strict-uri-encode: 2.0.0 - dev: true - - /querystring-es3@0.2.1: - resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} - engines: {node: '>=0.4.x'} - dev: true - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /queue@6.0.1: - resolution: {integrity: sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==} - dependencies: - inherits: 2.0.4 - dev: true - - /quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - dev: true - - /quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: true - - /quickselect@1.1.1: - resolution: {integrity: sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==} - dev: false - - /quickselect@2.0.0: - resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} - dev: false - - /ramda@0.28.0: - resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} - dev: true - - /ramda@0.29.0: - resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} - dev: true - - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true - - /raw-loader@4.0.2(webpack@5.89.0): - resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.89.0 - dev: true - - /rbush@2.0.2: - resolution: {integrity: sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==} - dependencies: - quickselect: 1.1.1 - dev: false - - /rbush@3.0.1: - resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==} - dependencies: - quickselect: 2.0.0 - dev: false - - /rc-align@4.0.15(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - dom-align: 1.12.4 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - resize-observer-polyfill: 1.5.1 - dev: false - - /rc-cascader@3.20.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-lkT9EEwOcYdjZ/jvhLoXGzprK1sijT3/Tp4BLxQQcHDZkkOzzwYQC9HgmKoJz0K7CukMfgvO9KqHeBdgE+pELw==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - array-tree-filter: 2.1.0 - classnames: 2.5.1 - rc-select: 14.10.0(react-dom@18.2.0)(react@18.2.0) - rc-tree: 5.8.2(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-cascader@3.21.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-J7GozpgsLaOtzfIHFJFuh4oFY0ePb1w10twqK6is3pAkqHkca/PsokbDr822KIRZ8/CK8CqevxohuPDVZ1RO/A==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - array-tree-filter: 2.1.0 - classnames: 2.5.1 - rc-select: 14.11.0(react-dom@18.2.0)(react@18.2.0) - rc-tree: 5.8.2(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-checkbox@3.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-PAwpJFnBa3Ei+5pyqMMXdcKYKNBMS+TvSDiLdDnARnMJHC8ESxwPfm4Ao1gJiKtWLdmGfigascnCpwrHFgoOBQ==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-collapse@3.7.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ZRw6ipDyOnfLFySxAiCMdbHtb5ePAsB9mT17PA6y1mRD/W6KHRaZeb5qK/X9xDV1CqgyxMpzw0VdS74PCcUk4A==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-dialog@9.3.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-975X3018GhR+EjZFbxA2Z57SX5rnu0G0/OxFgMMvZK4/hQWEm3MHaNvP4wXpxYDoJsp+xUvVW+GB9CMMCm81jA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-drawer@6.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-QckxAnQNdhh4vtmKN0ZwDf3iakO83W9eZcSKWYYTDv4qcD2fHhRAZJJ/OE6v2ZlQ2kSqCJX5gYssF4HJFvsEPQ==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-drawer@7.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ePcS4KtQnn57bCbVXazHN2iC8nTPCXlWEIA/Pft87Pd9U7ZeDkdRzG47jWG2/TAFXFlFltRAMcslqmUM8NPCGA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-dropdown@4.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-VZjMunpBdlVzYpEdJSaV7WM7O0jf8uyDjirxXLZRNZ+tAC+NzD3PXPEtliFwGzVwBBdCmGuSqiS9DWcOLxQ9tw==} - peerDependencies: - react: '>=16.11.0' - react-dom: '>=16.11.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/trigger': 1.18.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - /rc-field-form@1.41.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-k9AS0wmxfJfusWDP/YXWTpteDNaQ4isJx9UKxx4/e8Dub4spFeZ54/EuN2sYrMRID/+hUznPgVZeg+Gf7XSYCw==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - async-validator: 4.2.5 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-image@7.5.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Z9loECh92SQp0nSipc0MBuf5+yVC05H/pzC+Nf8xw1BKDFUJzUeehYBjaWlxly8VGBZJcTHYri61Fz9ng1G3Ag==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-dialog: 9.3.4(react-dom@18.2.0)(react@18.2.0) - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-input-number@8.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-B6rziPOLRmeP7kcS5qbdC5hXvvDHYKV4vUxmahevYx2E6crS2bRi0xLDjhJ0E1HtOWo8rTmaE2EBJAkTCZOLdA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/mini-decimal': 1.1.0 - classnames: 2.5.1 - rc-input: 1.3.11(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-input-number@8.6.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-gaAMUKtUKLktJ3Yx93tjgYY1M0HunnoqzPEqkb9//Ydup4DcG0TFL9yHBA3pgVdNIt5f0UWyHCgFBj//JxeD6A==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/mini-decimal': 1.1.0 - classnames: 2.5.1 - rc-input: 1.4.3(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-input@1.3.11(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jhH7QP5rILanSHCGSUkdoFE5DEtpv8FIseYhuYkOZzUBeiVAiwM3q26YqZ6xBB0QFEZ/yUAgms4xW4iuub3xFQ==} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-input@1.4.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-aHyQUAIRmTlOnvk5EcNqEpJ+XMtfMpYRAJayIlJfsvvH9cAKUWboh4egm23vgMA7E+c/qm4BZcnrDcA960GC1w==} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-mentions@2.10.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-72qsEcr/7su+a07ndJ1j8rI9n0Ka/ngWOLYnWMMv0p2mi/5zPwPrEDTt6Uqpe8FWjWhueDJx/vzunL6IdKDYMg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/trigger': 1.18.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-input: 1.4.3(react-dom@18.2.0)(react@18.2.0) - rc-menu: 9.12.4(react-dom@18.2.0)(react@18.2.0) - rc-textarea: 1.6.3(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-mentions@2.9.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-cZuElWr/5Ws0PXx1uxobxfYh4mqUw2FitfabR62YnWgm+WAfDyXZXqZg5DxXW+M1cgVvntrQgDDd9LrihrXzew==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/trigger': 1.18.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-input: 1.3.11(react-dom@18.2.0)(react@18.2.0) - rc-menu: 9.12.4(react-dom@18.2.0)(react@18.2.0) - rc-textarea: 1.5.3(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-menu@9.12.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-t2NcvPLV1mFJzw4F21ojOoRVofK2rWhpKPx69q2raUsiHPDP6DDevsBILEYdsIegqBeSXoWs2bf6CueBKg3BFg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/trigger': 1.18.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-overflow: 1.3.2(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - /rc-motion@2.9.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - /rc-notification@5.3.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-WCf0uCOkZ3HGfF0p1H4Sgt7aWfipxORWTPp7o6prA3vxwtWhtug3GfpYls1pnBp4WA+j8vGIi5c2/hQRpGzPcQ==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-overflow@1.3.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - /rc-pagination@4.0.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-GGrLT4NgG6wgJpT/hHIpL9nELv27A1XbSZzECIuQBQTVSf4xGKxWr6I/jhpRPauYEWEbWVw22ObG6tJQqwJqWQ==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-picker@3.14.6(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-AdKKW0AqMwZsKvIpwUWDUnpuGKZVrbxVTZTNjcO+pViGkjC1EBcjMgxVe8tomOEaIHJL5Gd13vS8Rr3zzxWmag==} - engines: {node: '>=8.x'} - peerDependencies: - date-fns: '>= 2.x' - dayjs: '>= 1.x' - luxon: '>= 3.x' - moment: '>= 2.x' - react: '>=16.9.0' - react-dom: '>=16.9.0' - peerDependenciesMeta: - date-fns: - optional: true - dayjs: - optional: true - luxon: - optional: true - moment: - optional: true - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/trigger': 1.18.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - dayjs: 1.11.10 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-progress@3.5.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-rate@2.12.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-resize-observer@0.2.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-YX6nYnd6fk7zbuvT6oSDMKiZjyngjHoy+fz+vL3Tez38d/G5iGdaDJa2yE7345G6sc4Mm1IGRUIwclvltddhmA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - resize-observer-polyfill: 1.5.1 - dev: false - - /rc-resize-observer@1.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - resize-observer-polyfill: 1.5.1 - - /rc-segmented@2.2.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Mq52M96QdHMsNdE/042ibT5vkcGcD5jxKp7HgPC2SRofpia99P5fkfHy1pEaajLMF/kj0+2Lkq1UZRvqzo9mSA==} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-select@14.10.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-TsIJTYafTTapCA32LLNpx/AD6ntepR1TG8jEVx35NiAAWCPymhUfuca8kRcUNd3WIGVMDcMKn9kkphoxEz+6Ag==} - engines: {node: '>=8.x'} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/trigger': 1.18.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-overflow: 1.3.2(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - rc-virtual-list: 3.11.3(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-select@14.11.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-8J8G/7duaGjFiTXCBLWfh5P+KDWyA3KTlZDfV3xj/asMPqB2cmxfM+lH50wRiPIRsCQ6EbkCFBccPuaje3DHIg==} - engines: {node: '>=8.x'} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/trigger': 1.18.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-overflow: 1.3.2(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - rc-virtual-list: 3.11.3(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-slider@10.5.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-xiYght50cvoODZYI43v3Ylsqiw14+D7ELsgzR40boDZaya1HFa1Etnv9MDkQE8X/UrXAffwv2AcNAhslgYuDTw==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-steps@6.0.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-switch@4.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-table@7.36.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-9qMxEm/3Y8ukdW8I8ZvmhX0QImfNKzH0JEUlSbyaUlsYTB+/tQEbfaB8YkG4sHVZ1io4pxqK/BXoZYqebi/TIQ==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/context': 1.4.0(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - rc-virtual-list: 3.11.3(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-table@7.37.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-hEB17ktLRVfVmdo+U8MjGr+PuIgdQ8Cxj/N5lwMvP/Az7TOrQxwTMLVEDoj207tyPYLTWifHIF9EJREWwyk67g==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/context': 1.4.0(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - rc-virtual-list: 3.11.3(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-tabs@12.14.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-1xlE7JQNYxD5RwBsM7jf2xSdUrkmTSDFLFEm2gqAgnsRlOGydEzXXNAVTOT6QcgM1G/gCm+AgG+FYPUGb4Hs4g==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-dropdown: 4.1.0(react-dom@18.2.0)(react@18.2.0) - rc-menu: 9.12.4(react-dom@18.2.0)(react@18.2.0) - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - /rc-tabs@14.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-lp1YWkaPnjlyhOZCPrAWxK6/P6nMGX/BAZcAC3nuVwKz0Byfp+vNnQKK8BRCP2g/fzu+SeB5dm9aUigRu3tRkQ==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-dropdown: 4.1.0(react-dom@18.2.0)(react@18.2.0) - rc-menu: 9.12.4(react-dom@18.2.0)(react@18.2.0) - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-textarea@1.5.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-oH682ghHx++stFNYrosPRBfwsypywrTXpaD0/5Z8MPkUOnyOQUaY9ueL9tMu6BP1LfsuYQ1VLpg5OtshViLNgA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-input: 1.3.11(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-textarea@1.6.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-8k7+8Y2GJ/cQLiClFMg8kUXOOdvcFQrnGeSchOvI2ZMIVvX5a3zQpLxoODL0HTrvU63fPkRmMuqaEcOF9dQemA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-input: 1.4.3(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-tooltip@6.1.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HMSbSs5oieZ7XddtINUddBLSVgsnlaSb3bZrzzGWjXa7/B7nNedmsuz72s7EWFEro9mNa7RyF3gOXKYqvJiTcQ==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - '@rc-component/trigger': 1.18.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-tree-select@5.15.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-YJHfdO6azFnR0/JuNBZLDptGE4/RGfVeHAafUIYcm2T3RBkL1O8aVqiHvwIyLzdK59ry0NLrByd+3TkfpRM+9Q==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-select: 14.10.0(react-dom@18.2.0)(react@18.2.0) - rc-tree: 5.8.2(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-tree-select@5.17.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-7sRGafswBhf7n6IuHyCEFCildwQIgyKiV8zfYyUoWfZEFdhuk7lCH+DN0aHt+oJrdiY9+6Io/LDXloGe01O8XQ==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-select: 14.11.0(react-dom@18.2.0)(react@18.2.0) - rc-tree: 5.8.2(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-tree@5.8.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-xH/fcgLHWTLmrSuNphU8XAqV7CdaOQgm4KywlLGNoTMhDAcNR3GVNP6cZzb0GrKmIZ9yae+QLot/cAgUdPRMzg==} - engines: {node: '>=10.x'} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - rc-virtual-list: 3.11.3(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - /rc-upload@4.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-QO3ne77DwnAPKFn0bA5qJM81QBjQi0e0NHdkvpFyY73Bea2NfITiotqJqVjHgeYPOJu5lLVR32TNGP084aSoXA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /rc-util@4.21.1: - resolution: {integrity: sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==} - dependencies: - add-dom-event-listener: 1.1.0 - prop-types: 15.8.1 - react-is: 16.13.1 - react-lifecycles-compat: 3.0.4 - shallowequal: 1.1.0 - dev: false - - /rc-util@5.38.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-e4ZMs7q9XqwTuhIK7zBIVFltUtMSjphuPPQXHoHlzRzNdOwUxDejo0Zls5HYaJfRKNURcsS/ceKVULlhjBrxng==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - dependencies: - '@babel/runtime': 7.23.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - - /rc-virtual-list@3.11.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-tu5UtrMk/AXonHwHxUogdXAWynaXsrx1i6dsgg+lOo/KJSF8oBAcprh1z5J3xgnPJD5hXxTL58F8s8onokdt0Q==} - engines: {node: '>=8.x'} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@babel/runtime': 7.23.8 - classnames: 2.5.1 - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - dev: true - - /react-activation@0.12.4(prop-types@15.8.1)(react@18.2.0): - resolution: {integrity: sha512-6jJtnUnQBKCrWgvHkzCJP3QZAtthnhDuoPa5LJnj1+1TxS5qkh3Z74zdNZY40wMbkTsLbo6CYoS51Fx/bTM3/w==} - peerDependencies: - react: '>=16' - dependencies: - create-react-context: 0.3.0(prop-types@15.8.1)(react@18.2.0) - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - react-node-key: 0.4.0(react@18.2.0) - szfe-tools: 0.0.0-beta.7 - transitivePeerDependencies: - - prop-types - dev: false - - /react-copy-to-clipboard@5.1.0(react@18.2.0): - resolution: {integrity: sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==} - peerDependencies: - react: ^15.3.0 || 16 || 17 || 18 - dependencies: - copy-to-clipboard: 3.3.3 - prop-types: 15.8.1 - react: 18.2.0 - dev: true - - /react-countup@6.5.0(react@18.2.0): - resolution: {integrity: sha512-26JFHbUHsHxu8SetkJwWVIUEkaNnrj4P9msxNGC8tS4hGr1bngRzbwtJYOgXD2G/ItjaKJ3JfYKd85sw7qRVeA==} - peerDependencies: - react: '>= 16.3.0' - dependencies: - countup.js: 2.8.0 - react: 18.2.0 - dev: true - - /react-dom@18.1.0(react@18.1.0): - resolution: {integrity: sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==} - peerDependencies: - react: ^18.1.0 - dependencies: - loose-envify: 1.4.0 - react: 18.1.0 - scheduler: 0.22.0 - dev: true - - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 - - /react-draggable@4.4.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==} - peerDependencies: - react: '>= 16.3.0' - react-dom: '>= 16.3.0' - dependencies: - clsx: 1.2.1 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /react-easy-crop@5.0.5(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-GH7Jw3898ytSaN4i4Oxi7j3BKzapZ2pVgnKIl+gFIUjA+NsDgdBSIpiBQUrPFIvHzSnPmz0kGCpX95X6NgsDzA==} - peerDependencies: - react: '>=16.4.0' - react-dom: '>=16.4.0' - dependencies: - normalize-wheel: 1.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.0.1 - dev: false - - /react-error-boundary@4.0.12(react@18.2.0): - resolution: {integrity: sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA==} - peerDependencies: - react: '>=16.13.1' - dependencies: - '@babel/runtime': 7.23.8 - react: 18.2.0 - dev: true - - /react-error-overlay@6.0.9: - resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} - dev: true - - /react-fast-compare@3.2.2: - resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - dev: true - - /react-helmet-async@1.3.0(react-dom@18.1.0)(react@18.1.0): - resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@babel/runtime': 7.23.8 - invariant: 2.2.4 - prop-types: 15.8.1 - react: 18.1.0 - react-dom: 18.1.0(react@18.1.0) - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - dev: true - - /react-helmet-async@1.3.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@babel/runtime': 7.23.8 - invariant: 2.2.4 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - dev: true - - /react-intl@6.6.1(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-oaMRr5A5KVpaOgnF0vdLTmBPI8rLQPReujmXTeIt2jCmZOJ+bcgqY/idFLVr52Iu/Aia8pDMBFUnzRjcg8T5aw==} - peerDependencies: - react: ^16.6.0 || 17 || 18 - typescript: ^4.7 || 5 - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@formatjs/ecma402-abstract': 1.18.2 - '@formatjs/icu-messageformat-parser': 2.7.5 - '@formatjs/intl': 2.9.11(typescript@5.3.3) - '@formatjs/intl-displaynames': 6.6.6 - '@formatjs/intl-listformat': 7.5.5 - '@types/hoist-non-react-statics': 3.3.5 - '@types/react': 18.2.48 - hoist-non-react-statics: 3.3.2 - intl-messageformat: 10.5.10 - react: 18.2.0 - tslib: 2.6.2 - typescript: 5.3.3 - dev: true - - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: true - - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - - /react-lifecycles-compat@3.0.4: - resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} - dev: false - - /react-merge-refs@1.1.0: - resolution: {integrity: sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==} - dev: true - - /react-node-key@0.4.0(react@18.2.0): - resolution: {integrity: sha512-puiuP2QYEuNBVVvcjpUE8d8/jdAhiXHBHMmjZzQT4+fe276RMYea/tY7JoZoYlrhAX8DORLPvjySjXYJZ1m6/A==} - peerDependencies: - react: '>=16' - dependencies: - jsx-ast-utils: 2.4.1 - react: 18.2.0 - szfe-tools: 0.0.0-beta.7 - dev: false - - /react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} - engines: {node: '>=0.10.0'} - dev: true - - /react-router-dom@6.21.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - dependencies: - '@remix-run/router': 1.14.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-router: 6.21.3(react@18.2.0) - dev: false - - /react-router-dom@6.3.0(react-dom@18.1.0)(react@18.1.0): - resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - dependencies: - history: 5.3.0 - react: 18.1.0 - react-dom: 18.1.0(react@18.1.0) - react-router: 6.3.0(react@18.1.0) - dev: true - - /react-router-dom@6.3.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - dependencies: - history: 5.3.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-router: 6.3.0(react@18.2.0) - dev: true - - /react-router@6.21.3(react@18.2.0): - resolution: {integrity: sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - dependencies: - '@remix-run/router': 1.14.2 - react: 18.2.0 - dev: false - - /react-router@6.3.0(react@18.1.0): - resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} - peerDependencies: - react: '>=16.8' - dependencies: - history: 5.3.0 - react: 18.1.0 - dev: true - - /react-router@6.3.0(react@18.2.0): - resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} - peerDependencies: - react: '>=16.8' - dependencies: - history: 5.3.0 - react: 18.2.0 - dev: true - - /react@18.1.0: - resolution: {integrity: sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - dev: true - - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - - /reactcss@1.2.3(react@18.2.0): - resolution: {integrity: sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==} - peerDependencies: - react: '*' - dependencies: - lodash: 4.17.21 - react: 18.2.0 - dev: false - - /read-cmd-shim@4.0.0: - resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - - /read-package-json-fast@3.0.2: - resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - json-parse-even-better-errors: 3.0.1 - npm-normalize-package-bin: 3.0.1 - dev: true - - /read-package-json@6.0.4: - resolution: {integrity: sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - glob: 10.3.10 - json-parse-even-better-errors: 3.0.1 - normalize-package-data: 5.0.0 - npm-normalize-package-bin: 3.0.1 - dev: true - - /read-package-json@7.0.0: - resolution: {integrity: sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - glob: 10.3.10 - json-parse-even-better-errors: 3.0.1 - normalize-package-data: 6.0.0 - npm-normalize-package-bin: 3.0.1 - dev: true - - /read-pkg-up@3.0.0: - resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} - engines: {node: '>=4'} - dependencies: - find-up: 2.1.0 - read-pkg: 3.0.0 - dev: true - - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: true - - /read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - dev: true - - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: true - - /read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: true - - /read@2.1.0: - resolution: {integrity: sha512-bvxi1QLJHcaywCAEsAk4DG3nVoqiY2Csps3qzWalhj5hFqRn1d/OixkFXtLO1PrgHUcAP0FNaSY/5GYNfENFFQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - mute-stream: 1.0.0 - dev: true - - /readable-stream@1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: false - - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: true - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - - /real-require@0.1.0: - resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} - engines: {node: '>= 12.13.0'} - dev: true - - /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: true - - /reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - globalthis: 1.0.3 - which-builtin-type: 1.1.3 - dev: true - - /regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - dev: true - - /regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: true - - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: true - - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - set-function-name: 2.0.1 - - /registry-auth-token@3.4.0: - resolution: {integrity: sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==} - dependencies: - rc: 1.2.8 - safe-buffer: 5.2.1 - dev: true - - /registry-url@3.1.0: - resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} - engines: {node: '>=0.10.0'} - dependencies: - rc: 1.2.8 - dev: true - - /rehype-autolink-headings@6.1.1: - resolution: {integrity: sha512-NMYzZIsHM3sA14nC5rAFuUPIOfg+DFmf9EY1YMhaNlB7+3kK/ZlE6kqPfuxr1tsJ1XWkTrMtMoyHosU70d35mA==} - dependencies: - '@types/hast': 2.3.9 - extend: 3.0.2 - hast-util-has-property: 2.0.1 - hast-util-heading-rank: 2.1.1 - hast-util-is-element: 2.1.3 - unified: 10.1.2 - unist-util-visit: 4.1.2 - dev: true - - /rehype-remove-comments@5.0.0: - resolution: {integrity: sha512-sfiVT+u1in19sxo9vv/SDQVbHE2mADScNrpeVsUxBFl14zOMZnfPb6l4hR+lXqe10G13UFVqv5pt8zDbCR4JYQ==} - dependencies: - '@types/hast': 2.3.9 - hast-util-is-conditional-comment: 2.0.0 - unified: 10.1.2 - unist-util-filter: 4.0.1 - dev: true - - /rehype-stringify@9.0.4: - resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} - dependencies: - '@types/hast': 2.3.9 - hast-util-to-html: 8.0.4 - unified: 10.1.2 - dev: true - - /relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} - dev: true - - /remark-directive@2.0.1: - resolution: {integrity: sha512-oosbsUAkU/qmUE78anLaJePnPis4ihsE7Agp0T/oqTzvTea8pOiaYEtfInU/+xMOVTS9PN5AhGOiaIVe4GD8gw==} - dependencies: - '@types/mdast': 3.0.15 - mdast-util-directive: 2.2.4 - micromark-extension-directive: 2.2.1 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /remark-frontmatter@4.0.1: - resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} - dependencies: - '@types/mdast': 3.0.15 - mdast-util-frontmatter: 1.0.1 - micromark-extension-frontmatter: 1.1.1 - unified: 10.1.2 - dev: true - - /remark-gfm@3.0.1: - resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} - dependencies: - '@types/mdast': 3.0.15 - mdast-util-gfm: 2.0.2 - micromark-extension-gfm: 2.0.3 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /remark-parse@10.0.2: - resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} - dependencies: - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /remark-rehype@10.1.0: - resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} - dependencies: - '@types/hast': 2.3.9 - '@types/mdast': 3.0.15 - mdast-util-to-hast: 12.3.0 - unified: 10.1.2 - dev: true - - /remote-origin-url@0.4.0: - resolution: {integrity: sha512-HYhdsT2pNd0LP4Osb0vtQ1iassxIc3Yk1oze7j8dMJFciMkW8e0rdg9E/mOunqtSVHSzvMfwLDIYzPnEDmpk6Q==} - engines: {node: '>= 0.8.0'} - dependencies: - parse-git-config: 0.2.0 - dev: true - - /remote-origin-url@0.5.3: - resolution: {integrity: sha512-crQ7Xk1m/F2IiwBx5oTqk/c0hjoumrEz+a36+ZoVupskQRE/q7pAwHKsTNeiZ31sbSTELvVlVv4h1W0Xo5szKg==} - engines: {node: '>= 0.8.0'} - dependencies: - parse-git-config: 1.1.1 - dev: true - - /rename-keys@1.2.0: - resolution: {integrity: sha512-U7XpAktpbSgHTRSNRrjKSrjYkZKuhUukfoBlXWXUExCAqhzh1TU3BDRAfJmarcl5voKS+pbKU9MvyLWKZ4UEEg==} - engines: {node: '>= 0.8.0'} - dev: true - - /renderkid@3.0.0: - resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - dependencies: - css-select: 4.3.0 - dom-converter: 0.2.0 - htmlparser2: 6.1.0 - lodash: 4.17.21 - strip-ansi: 6.0.1 - dev: true - - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true - - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true - - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true - - /reselect@4.1.8: - resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} - dev: true - - /resize-observer-polyfill@1.5.1: - resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} - - /resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 - dev: true - - /resolve-dir@0.1.1: - resolution: {integrity: sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==} - engines: {node: '>=0.10.0'} - dependencies: - expand-tilde: 1.2.2 - global-modules: 0.2.3 - dev: true - - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /resolve-global@1.0.0: - resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} - engines: {node: '>=8'} - dependencies: - global-dirs: 0.1.1 - dev: true - - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true - - /resolve@1.19.0: - resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - dev: true - - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - /resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /restore-cursor@2.0.0: - resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} - engines: {node: '>=4'} - dependencies: - onetime: 2.0.1 - signal-exit: 3.0.7 - dev: true - - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true - - /restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true - - /retry@0.10.1: - resolution: {integrity: sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==} - dev: true - - /retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - dev: true - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /rfdc@1.3.1: - resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} - dev: true - - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /rimraf@4.4.1: - resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} - engines: {node: '>=14'} - hasBin: true - dependencies: - glob: 9.3.5 - dev: true - - /ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - dev: true - - /robust-predicates@2.0.4: - resolution: {integrity: sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==} - dev: false - - /robust-predicates@3.0.2: - resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} - dev: false - - /rollup-plugin-visualizer@5.9.0: - resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} - engines: {node: '>=14'} - hasBin: true - peerDependencies: - rollup: 2.x || 3.x - peerDependenciesMeta: - rollup: - optional: true - dependencies: - open: 8.4.2 - picomatch: 2.3.1 - source-map: 0.7.4 - yargs: 17.7.2 - dev: true - - /rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /run-applescript@5.0.0: - resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} - engines: {node: '>=12'} - dependencies: - execa: 5.1.1 - dev: true - - /run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - dev: true - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /run-queue@1.0.3: - resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} - dependencies: - aproba: 1.2.0 - dev: true - - /rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - dependencies: - tslib: 1.14.1 - dev: true - - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - dependencies: - tslib: 2.6.2 - dev: true - - /sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - dependencies: - mri: 1.2.0 - dev: true - - /safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} - engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - has-symbols: 1.0.3 - isarray: 2.0.5 - - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true - - /safe-regex-test@1.0.2: - resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-regex: 1.1.4 - - /safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} - engines: {node: '>=10'} - - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - /sass@1.70.0: - resolution: {integrity: sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - chokidar: 3.5.3 - immutable: 4.3.4 - source-map-js: 1.0.2 - dev: true - - /sax@1.2.4: - resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - dev: true - - /sax@1.3.0: - resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} - dev: true - - /scheduler@0.22.0: - resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==} - dependencies: - loose-envify: 1.4.0 - dev: true - - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - dependencies: - loose-envify: 1.4.0 - - /schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true - - /screenfull@5.2.0: - resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} - engines: {node: '>=0.10.0'} - dev: false - - /scroll-into-view-if-needed@3.1.0: - resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} - dependencies: - compute-scroll-into-view: 3.1.0 - dev: false - - /selderee@0.11.0: - resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} - dependencies: - parseley: 0.12.1 - dev: true - - /select-hose@2.0.0: - resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - dev: true - - /semver-diff@2.1.0: - resolution: {integrity: sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw==} - engines: {node: '>=0.10.0'} - dependencies: - semver: 5.7.2 - dev: true - - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: true - - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: true - - /semver@7.5.3: - resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - dependencies: - randombytes: 2.1.0 - dev: true - - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true - - /set-function-length@1.2.0: - resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.1 - function-bind: 1.1.2 - get-intrinsic: 1.2.2 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.1 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 - - /setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - /sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - dependencies: - kind-of: 6.0.3 - dev: true - - /shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - dependencies: - shebang-regex: 1.0.0 - dev: true - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: true - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /shortid@2.2.16: - resolution: {integrity: sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dependencies: - nanoid: 2.1.11 - dev: true - - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - object-inspect: 1.13.1 - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - dev: true - - /sigstore@1.9.0: - resolution: {integrity: sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - dependencies: - '@sigstore/bundle': 1.1.0 - '@sigstore/protobuf-specs': 0.2.1 - '@sigstore/sign': 1.0.0 - '@sigstore/tuf': 1.0.3 - make-fetch-happen: 11.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /sigstore@2.2.0: - resolution: {integrity: sha512-fcU9clHwEss2/M/11FFM8Jwc4PjBgbhXoNskoK5guoK0qGQBSeUbQZRJ+B2fDFIvhyf0gqCaPrel9mszbhAxug==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@sigstore/bundle': 2.1.1 - '@sigstore/core': 0.2.0 - '@sigstore/protobuf-specs': 0.2.1 - '@sigstore/sign': 2.2.1 - '@sigstore/tuf': 2.3.0 - '@sigstore/verify': 0.1.0 - transitivePeerDependencies: - - supports-color - dev: true - - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - dependencies: - is-arrayish: 0.3.2 - dev: true - - /sitemap@7.1.1: - resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} - engines: {node: '>=12.0.0', npm: '>=5.6.0'} - hasBin: true - dependencies: - '@types/node': 17.0.45 - '@types/sax': 1.2.7 - arg: 5.0.2 - sax: 1.3.0 - dev: true - - /skmeans@0.9.7: - resolution: {integrity: sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==} - dev: false - - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true - - /slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - dev: true - - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - dev: true - - /smart-buffer@1.1.15: - resolution: {integrity: sha512-1+8bxygjTsNfvQe0/0pNBesTOlSHtOeG6b6LYbvsZCCHDKYZ40zcQo6YTnZBWrBSLWOCbrHljLdEmGMYebu7aQ==} - engines: {node: '>= 0.10.15', npm: '>= 1.3.5'} - dev: true - - /smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - dev: true - - /smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true - dependencies: - array.prototype.flat: 1.3.2 - breakword: 1.0.6 - grapheme-splitter: 1.0.4 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 15.4.1 - dev: true - - /socks-proxy-agent@3.0.1: - resolution: {integrity: sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==} - dependencies: - agent-base: 4.3.0 - socks: 1.1.10 - dev: true - - /socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - socks: 2.7.1 - transitivePeerDependencies: - - supports-color - dev: true - - /socks-proxy-agent@8.0.2: - resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.3.4 - socks: 2.7.1 - transitivePeerDependencies: - - supports-color - dev: true - - /socks@1.1.10: - resolution: {integrity: sha512-ArX4vGPULWjKDKgUnW8YzfI2uXW7kzgkJuB0GnFBA/PfT3exrrOk+7Wk2oeb894Qf20u1PWv9LEgrO0Z82qAzA==} - engines: {node: '>= 0.10.0', npm: '>= 1.3.5'} - deprecated: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0 - dependencies: - ip: 1.1.8 - smart-buffer: 1.1.15 - dev: true - - /socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - dependencies: - ip: 2.0.0 - smart-buffer: 4.2.0 - dev: true - - /sonic-boom@2.8.0: - resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} - dependencies: - atomic-sleep: 1.0.0 - dev: true - - /sort-keys@2.0.0: - resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} - engines: {node: '>=4'} - dependencies: - is-plain-obj: 1.1.0 - dev: true - - /sort-object-keys@1.1.3: - resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} - dev: true - - /sort-package-json@2.4.1: - resolution: {integrity: sha512-Nd3rgLBJcZ4iw7tpuOhwBupG6SvUDU0Fy1cZGAMorA2JmDUb+29Dg5phJK9gapa2Ak9d15w/RuMl/viwX+nKwQ==} - hasBin: true - dependencies: - detect-indent: 7.0.1 - detect-newline: 4.0.1 - git-hooks-list: 3.1.0 - globby: 13.2.2 - is-plain-obj: 4.1.0 - sort-object-keys: 1.1.3 - dev: true - - /sort-package-json@2.6.0: - resolution: {integrity: sha512-XSQ+lY9bAYA8ZsoChcEoPlgcSMaheziEp1beox1JVxy1SV4F2jSq9+h2rJ+3mC/Dhu9Ius1DLnInD5AWcsDXZw==} - hasBin: true - dependencies: - detect-indent: 7.0.1 - detect-newline: 4.0.1 - get-stdin: 9.0.0 - git-hooks-list: 3.1.0 - globby: 13.2.2 - is-plain-obj: 4.1.0 - sort-object-keys: 1.1.3 - dev: true - - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map-resolve@0.6.0: - resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - dev: true - - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: false - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: true - - /space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - dev: true - - /spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} - dependencies: - cross-spawn: 5.1.0 - signal-exit: 3.0.7 - dev: true - - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.16 - dev: true - - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true - - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.16 - dev: true - - /spdx-license-ids@3.0.16: - resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} - dev: true - - /spdy-transport@3.0.0: - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - dependencies: - debug: 4.3.4 - detect-node: 2.1.0 - hpack.js: 2.1.6 - obuf: 1.1.2 - readable-stream: 3.6.2 - wbuf: 1.7.3 - transitivePeerDependencies: - - supports-color - dev: true - - /spdy@4.0.2: - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} - dependencies: - debug: 4.3.4 - handle-thing: 2.0.1 - http-deceiver: 1.2.7 - select-hose: 2.0.0 - spdy-transport: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /splaytree@3.1.2: - resolution: {integrity: sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A==} - dev: false - - /split-on-first@1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} - engines: {node: '>=6'} - dev: true - - /split2@3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} - dependencies: - readable-stream: 3.6.2 - dev: true - - /split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - dev: true - - /split@1.0.1: - resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} - dependencies: - through: 2.3.8 - dev: true - - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true - - /ssim.js@3.5.0: - resolution: {integrity: sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g==} - dev: true - - /ssri@10.0.5: - resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - minipass: 7.0.4 - dev: true - - /ssri@4.1.6: - resolution: {integrity: sha512-WUbCdgSAMQjTFZRWvSPpauryvREEA+Krn19rx67UlJEJx/M192ZHxMmJXjZ4tkdFm+Sb0SXGlENeQVlA5wY7kA==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /ssri@5.3.0: - resolution: {integrity: sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - minipass: 3.3.6 - dev: true - - /stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - dev: true - - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - - /stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - dev: true - - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - dependencies: - internal-slot: 1.0.6 - dev: true - - /stream-browserify@2.0.2: - resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: true - - /stream-each@1.2.3: - resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} - dependencies: - end-of-stream: 1.4.4 - stream-shift: 1.0.3 - dev: true - - /stream-http@2.8.3: - resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} - dependencies: - builtin-status-codes: 3.0.0 - inherits: 2.0.4 - readable-stream: 2.3.8 - to-arraybuffer: 1.0.1 - xtend: 4.0.2 - dev: true - - /stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - dev: true - - /stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} - dependencies: - mixme: 0.5.10 - dev: true - - /strict-uri-encode@2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - dev: true - - /string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - dev: true - - /string-convert@0.2.1: - resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} - dev: false - - /string-width@2.1.1: - resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} - engines: {node: '>=4'} - dependencies: - is-fullwidth-code-point: 2.0.0 - strip-ansi: 4.0.0 - dev: true - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true - - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - dev: true - - /string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - has-symbols: 1.0.3 - internal-slot: 1.0.6 - regexp.prototype.flags: 1.5.1 - set-function-name: 2.0.1 - side-channel: 1.0.4 - dev: true - - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - - /string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - dev: false - - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /stringify-entities@4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - dev: true - - /strip-ansi@4.0.0: - resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} - engines: {node: '>=4'} - dependencies: - ansi-regex: 3.0.1 - dev: true - - /strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - dependencies: - ansi-regex: 4.1.1 - dev: true - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: true - - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: true - - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true - - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - - /strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - dev: true - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true - - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - dev: true - - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: true - - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - - /strong-log-transformer@2.1.0: - resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} - engines: {node: '>=4'} - hasBin: true - dependencies: - duplexer: 0.1.2 - minimist: 1.2.8 - through: 2.3.8 - dev: true - - /style-search@0.1.0: - resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} - dev: true - - /style-to-object@0.4.4: - resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} - dependencies: - inline-style-parser: 0.1.1 - dev: true - - /stylelint-config-recommended@7.0.0(stylelint@14.16.1): - resolution: {integrity: sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==} - peerDependencies: - stylelint: ^14.4.0 - dependencies: - stylelint: 14.16.1 - dev: true - - /stylelint-config-standard@25.0.0(stylelint@14.16.1): - resolution: {integrity: sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==} - peerDependencies: - stylelint: ^14.4.0 - dependencies: - stylelint: 14.16.1 - stylelint-config-recommended: 7.0.0(stylelint@14.16.1) - dev: true - - /stylelint@14.16.1: - resolution: {integrity: sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dependencies: - '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.15) - balanced-match: 2.0.0 - colord: 2.9.3 - cosmiconfig: 7.1.0 - css-functions-list: 3.2.1 - debug: 4.3.4 - fast-glob: 3.3.2 - fastest-levenshtein: 1.0.16 - file-entry-cache: 6.0.1 - global-modules: 2.0.0 - globby: 11.1.0 - globjoin: 0.1.4 - html-tags: 3.3.1 - ignore: 5.3.0 - import-lazy: 4.0.0 - imurmurhash: 0.1.4 - is-plain-object: 5.0.0 - known-css-properties: 0.26.0 - mathml-tag-names: 2.1.3 - meow: 9.0.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.33 - postcss-media-query-parser: 0.2.3 - postcss-resolve-nested-selector: 0.1.1 - postcss-safe-parser: 6.0.0(postcss@8.4.33) - postcss-selector-parser: 6.0.15 - postcss-value-parser: 4.2.0 - resolve-from: 5.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - style-search: 0.1.0 - supports-hyperlinks: 2.3.0 - svg-tags: 1.0.0 - table: 6.8.1 - v8-compile-cache: 2.4.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - dev: false - - /stylis@4.3.1: - resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} - dev: false - - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - dev: true - - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - /svg-parser@2.0.4: - resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - dev: true - - /svg-pathdata@5.0.5: - resolution: {integrity: sha512-TAAvLNSE3fEhyl/Da19JWfMAdhSXTYeviXsLSoDT1UM76ADj5ndwAPX1FKQEgB/gFMPavOy6tOqfalXKUiXrow==} - engines: {node: '>=6.9.5'} - dev: true - - /svg-tags@1.0.0: - resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} - dev: true - - /svgo-browser@1.3.8: - resolution: {integrity: sha512-yOgDNIcewFZN3+jXdWeh/rQzbWJjCq1dTHphLz2r4T4AfTm+nqCxZ5B89v9bjQbFKA/s/k7TUc7J90+pP2HTyw==} - engines: {node: '>=4.0.0'} - hasBin: true - dependencies: - chalk: 2.4.2 - coa: 2.0.2 - css-select: 2.1.0 - css-select-base-adapter: 0.1.1 - css-tree: 1.0.0-alpha.37 - csso: 4.2.0 - js-yaml: 3.14.1 - mkdirp: 0.5.6 - sax: 1.2.4 - stable: 0.1.8 - unquote: 1.1.1 - util.promisify: 1.0.1 - dev: true - - /svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} - hasBin: true - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.0.0 - stable: 0.1.8 - dev: true - - /svgson@4.1.0: - resolution: {integrity: sha512-DodISxHtdLKUghDYA+PGK4Qq350+CbBAkdvGLkBFSmWd9WKSg4dijgjB1IiRPTmsUCd+a7KYe+ILHtklYgQyzQ==} - dependencies: - deep-rename-keys: 0.2.1 - omit-deep: 0.3.0 - xml-reader: 2.4.3 - dev: true - - /swr@2.2.5(react@18.2.0): - resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==} - peerDependencies: - react: ^16.11.0 || ^17.0.0 || ^18.0.0 - dependencies: - client-only: 0.0.1 - react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) - dev: false - - /synckit@0.8.5: - resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} - engines: {node: ^14.18.0 || >=16.0.0} - dependencies: - '@pkgr/utils': 2.4.2 - tslib: 2.6.2 - dev: true - - /synckit@0.9.0: - resolution: {integrity: sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg==} - engines: {node: ^14.18.0 || >=16.0.0} - dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.6.2 - dev: true - - /systemjs@6.14.3: - resolution: {integrity: sha512-hQv45irdhXudAOr8r6SVSpJSGtogdGZUbJBRKCE5nsIS7tsxxvnIHqT4IOPWj+P+HcSzeWzHlGCGpmhPDIKe+w==} - dev: true - - /szfe-tools@0.0.0-beta.7: - resolution: {integrity: sha512-/M7+Tel2G8zapfDYZlz17hf9ViqAi/loZMfM81b5iZMyaWL/t5dajBszEBI2kyIDFzlLT4btBcq+BimFgmAHug==} - dependencies: - '@babel/runtime': 7.23.8 - dev: false - - /table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} - engines: {node: '>=10.0.0'} - dependencies: - ajv: 8.12.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true - - /tar-fs@1.16.3: - resolution: {integrity: sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==} - dependencies: - chownr: 1.1.4 - mkdirp: 0.5.6 - pump: 1.0.3 - tar-stream: 1.6.2 - dev: true - - /tar-stream@1.6.2: - resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} - engines: {node: '>= 0.8.0'} - dependencies: - bl: 1.2.3 - buffer-alloc: 1.2.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - readable-stream: 2.3.8 - to-buffer: 1.1.1 - xtend: 4.0.2 - dev: true - - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true - - /tar@6.1.11: - resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} - engines: {node: '>= 10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 3.3.6 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: true - - /temp-dir@1.0.0: - resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} - engines: {node: '>=4'} - dev: true - - /term-size@1.2.0: - resolution: {integrity: sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==} - engines: {node: '>=4'} - dependencies: - execa: 0.7.0 - dev: true - - /term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - dev: true - - /terser-webpack-plugin@5.3.10(webpack@5.89.0): - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - '@jridgewell/trace-mapping': 0.3.22 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.27.0 - webpack: 5.89.0 - dev: true - - /terser@5.27.0: - resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.5 - acorn: 8.11.3 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true - - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true - - /text-extensions@1.9.0: - resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} - engines: {node: '>=0.10'} - dev: true - - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - - /textextensions@2.6.0: - resolution: {integrity: sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ==} - engines: {node: '>=0.8'} - dev: true - - /thread-stream@0.15.2: - resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} - dependencies: - real-require: 0.1.0 - dev: true - - /throttle-debounce@5.0.0: - resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} - engines: {node: '>=12.22'} - dev: false - - /through2@0.4.2: - resolution: {integrity: sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==} - dependencies: - readable-stream: 1.0.34 - xtend: 2.1.2 - dev: false - - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - dev: true - - /through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - dependencies: - readable-stream: 3.6.2 - dev: true - - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - /timed-out@4.0.1: - resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} - engines: {node: '>=0.10.0'} - dev: true - - /timers-browserify@2.0.12: - resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} - engines: {node: '>=0.6.0'} - dependencies: - setimmediate: 1.0.5 - dev: true - - /tinycolor2@1.6.0: - resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - dev: false - - /tinyqueue@2.0.3: - resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==} - dev: false - - /titleize@3.0.0: - resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} - engines: {node: '>=12'} - dev: true - - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - dev: true - - /tmp@0.2.1: - resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} - engines: {node: '>=8.17.0'} - dependencies: - rimraf: 3.0.2 - dev: true - - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: true - - /to-arraybuffer@1.0.1: - resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} - dev: true - - /to-buffer@1.1.1: - resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} - dev: true - - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - - /toggle-selection@1.0.6: - resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} - - /topojson-client@3.1.0: - resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} - hasBin: true - dependencies: - commander: 2.20.3 - dev: false - - /topojson-server@3.0.1: - resolution: {integrity: sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==} - hasBin: true - dependencies: - commander: 2.20.3 - dev: false - - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: true - - /transformation-matrix@2.15.0: - resolution: {integrity: sha512-HN3kCvvH4ug3Xm/ycOfCFQOOktg5htxlC4Ih1Z7Wb6BMtQho+q+irOdGo10ARRKpqkRBXgBzQFw/AVmR0oIf0g==} - dev: true - - /traverse@0.6.6: - resolution: {integrity: sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==} - dev: true - - /trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - dev: true - - /trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - dev: true - - /trough@2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - dev: true - - /ts-api-utils@1.2.1(typescript@5.3.3): - resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.3.3 - dev: true - - /ts-node@10.9.2(@types/node@20.5.1)(typescript@5.3.3): - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.5.1 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.3.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /ts-toolbelt@9.6.0: - resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} - dev: true - - /tsconfig-paths@4.0.0: - resolution: {integrity: sha512-SLBg2GBKlR6bVtMgJJlud/o3waplKtL7skmLkExomIiaAtLGtVsoXIqP3SYdjbcH9lq/KVv7pMZeCBpLYOit6Q==} - dependencies: - json5: 2.2.3 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - - /tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} - dependencies: - json5: 2.2.3 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true - - /tslib@2.0.1: - resolution: {integrity: sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==} - dev: false - - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - /tsutils@3.21.0(typescript@5.3.3): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.3.3 - dev: true - - /tsx@3.14.0: - resolution: {integrity: sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==} - hasBin: true - dependencies: - esbuild: 0.18.20 - get-tsconfig: 4.7.2 - source-map-support: 0.5.21 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /tty-browserify@0.0.0: - resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} - dev: true - - /tty-table@4.2.3: - resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==} - engines: {node: '>=8.0.0'} - hasBin: true - dependencies: - chalk: 4.1.2 - csv: 5.5.3 - kleur: 4.1.5 - smartwrap: 2.0.2 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 17.7.2 - dev: true - - /tuf-js@1.1.7: - resolution: {integrity: sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - '@tufjs/models': 1.0.4 - debug: 4.3.4 - make-fetch-happen: 11.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /tuf-js@2.2.0: - resolution: {integrity: sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@tufjs/models': 2.0.0 - debug: 4.3.4 - make-fetch-happen: 13.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /turf-jsts@1.2.3: - resolution: {integrity: sha512-Ja03QIJlPuHt4IQ2FfGex4F4JAr8m3jpaHbFbQrgwr7s7L6U8ocrHiF3J1+wf9jzhGKxvDeaCAnGDot8OjGFyA==} - dev: false - - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true - - /type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - dev: true - - /type-fest@0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - dev: true - - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true - - /type-fest@0.4.1: - resolution: {integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==} - engines: {node: '>=6'} - dev: true - - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true - - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true - - /type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - dev: true - - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 - - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - dependencies: - call-bind: 1.0.5 - for-each: 0.3.3 - is-typed-array: 1.1.12 - - /typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: true - - /types-ramda@0.29.7: - resolution: {integrity: sha512-8KBxZGJwUF3MpRkkJauSpvfHXk8Ssq15QXGuCBTDGeKd9PfheokkC3wAKRV3djej9O31Qa5M7Owsg8hF0GjtAw==} - dependencies: - ts-toolbelt: 9.6.0 - dev: true - - /typescript-transform-paths@3.4.6(typescript@5.0.4): - resolution: {integrity: sha512-qdgpCk9oRHkIBhznxaHAapCFapJt5e4FbFik7Y4qdqtp6VyC3smAIPoDEIkjZ2eiF7x5+QxUPYNwJAtw0thsTw==} - peerDependencies: - typescript: '>=3.6.5' - dependencies: - minimatch: 3.1.2 - typescript: 5.0.4 - dev: true - - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} - hasBin: true - dev: true - - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - - /uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} - hasBin: true - requiresBuild: true - dev: true - optional: true - - /umi-request@1.4.0: - resolution: {integrity: sha512-OknwtQZddZHi0Ggi+Vr/olJ7HNMx4AzlywyK0W3NZBT7B0stjeZ9lcztA85dBgdAj3KVk8uPJPZSnGaDjELhrA==} - dependencies: - isomorphic-fetch: 2.2.1 - qs: 6.11.2 - dev: false - - /umi@4.1.1(@babel/core@7.23.7)(@types/node@20.5.1)(@types/react@18.2.48)(eslint@8.56.0)(prettier@2.8.8)(react-dom@18.2.0)(react@18.2.0)(sass@1.70.0)(stylelint@14.16.1)(typescript@5.3.3)(webpack@5.89.0): - resolution: {integrity: sha512-FGSyS4V2kyXnrOudT3JBavhNjSIzgC1FJjOCmhjElmGIZV/FY9gpqOKk9WExdO96xSOvff0+16SK2WtQj/xQgQ==} - engines: {node: '>=14'} - hasBin: true - dependencies: - '@babel/runtime': 7.23.6 - '@umijs/bundler-utils': 4.1.1 - '@umijs/bundler-webpack': 4.1.1(typescript@5.3.3)(webpack@5.89.0) - '@umijs/core': 4.1.1 - '@umijs/lint': 4.1.1(eslint@8.56.0)(stylelint@14.16.1)(typescript@5.3.3) - '@umijs/preset-umi': 4.1.1(@types/node@20.5.1)(@types/react@18.2.48)(sass@1.70.0)(typescript@5.3.3)(webpack@5.89.0) - '@umijs/renderer-react': 4.1.1(react-dom@18.2.0)(react@18.2.0) - '@umijs/server': 4.1.1 - '@umijs/test': 4.1.1(@babel/core@7.23.7) - '@umijs/utils': 4.1.1 - prettier-plugin-organize-imports: 3.2.4(prettier@2.8.8)(typescript@5.3.3) - prettier-plugin-packagejson: 2.4.3(prettier@2.8.8) - transitivePeerDependencies: - - '@babel/core' - - '@types/node' - - '@types/react' - - '@types/webpack' - - '@volar/vue-language-plugin-pug' - - '@volar/vue-typescript' - - eslint - - jest - - postcss-html - - postcss-jsx - - postcss-less - - postcss-markdown - - postcss-scss - - prettier - - react - - react-dom - - rollup - - sass - - sockjs-client - - stylelint - - stylus - - sugarss - - supports-color - - terser - - type-fest - - typescript - - webpack - - webpack-dev-server - - webpack-hot-middleware - - webpack-plugin-serve - dev: true - - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.5 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: true - - /unfetch@5.0.0: - resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} - dev: true - - /unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - dependencies: - '@types/unist': 2.0.10 - bail: 2.0.2 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 4.1.0 - trough: 2.1.0 - vfile: 5.3.7 - dev: true - - /unique-filename@1.1.1: - resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} - dependencies: - unique-slug: 2.0.2 - dev: true - - /unique-filename@3.0.0: - resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - unique-slug: 4.0.0 - dev: true - - /unique-slug@2.0.2: - resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - dependencies: - imurmurhash: 0.1.4 - dev: true - - /unique-slug@4.0.0: - resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - imurmurhash: 0.1.4 - dev: true - - /unique-string@1.0.0: - resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} - engines: {node: '>=4'} - dependencies: - crypto-random-string: 1.0.0 - dev: true - - /unist-util-filter@4.0.1: - resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - dev: true - - /unist-util-generated@2.0.1: - resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} - dev: true - - /unist-util-is@5.2.1: - resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} - dependencies: - '@types/unist': 2.0.10 - dev: true - - /unist-util-position@4.0.4: - resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} - dependencies: - '@types/unist': 2.0.10 - dev: true - - /unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} - dependencies: - '@types/unist': 2.0.10 - dev: true - - /unist-util-visit-parents@5.1.3: - resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 - dev: true - - /unist-util-visit@4.1.2: - resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - dev: true - - /universal-user-agent@6.0.1: - resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} - dev: true - - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: true - - /universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - dev: true - - /unquote@1.1.1: - resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} - dev: true - - /unset-value@0.1.2: - resolution: {integrity: sha512-yhv5I4TsldLdE3UcVQn0hD2T5sNCPv4+qm/CTUpRKIpwthYRIipsAPdsrNpOI79hPQa0rTTeW22Fq6JWRcTgNg==} - engines: {node: '>=0.10.0'} - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - dev: true - - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - dev: true - - /unzip-response@2.0.1: - resolution: {integrity: sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==} - engines: {node: '>=4'} - dev: true - - /upath@2.0.1: - resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} - engines: {node: '>=4'} - dev: true - - /update-browserslist-db@1.0.13(browserslist@4.22.2): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - - /update-notifier@2.5.0: - resolution: {integrity: sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==} - engines: {node: '>=4'} - dependencies: - boxen: 1.3.0 - chalk: 2.4.2 - configstore: 3.1.5 - import-lazy: 2.1.0 - is-ci: 1.2.1 - is-installed-globally: 0.1.0 - is-npm: 1.0.0 - latest-version: 3.1.0 - semver-diff: 2.1.0 - xdg-basedir: 3.0.0 - dev: true - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.1 - dev: true - - /url-parse-lax@1.0.0: - resolution: {integrity: sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==} - engines: {node: '>=0.10.0'} - dependencies: - prepend-http: 1.0.4 - dev: true - - /url@0.11.3: - resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} - dependencies: - punycode: 1.4.1 - qs: 6.11.2 - dev: true - - /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.48)(react@18.1.0): - resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.2.48 - react: 18.1.0 - dev: true - - /use-merge-value@1.2.0(react@18.2.0): - resolution: {integrity: sha512-DXgG0kkgJN45TcyoXL49vJnn55LehnrmoHc7MbKi+QDBvr8dsesqws8UlyIWGHMR+JXgxc1nvY+jDGMlycsUcw==} - peerDependencies: - react: '>= 16.x' - dependencies: - react: 18.2.0 - dev: false - - /use-sync-external-store@1.2.0(react@18.2.0): - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - dev: false - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - /util.promisify@1.0.1: - resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} - dependencies: - define-properties: 1.2.1 - es-abstract: 1.22.3 - has-symbols: 1.0.3 - object.getownpropertydescriptors: 2.1.7 - dev: true - - /util@0.10.4: - resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} - dependencies: - inherits: 2.0.3 - dev: true - - /util@0.11.1: - resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} - dependencies: - inherits: 2.0.3 - dev: true - - /utila@0.4.0: - resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - dev: true - - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: true - - /uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - /uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - dequal: 2.0.3 - diff: 5.1.0 - kleur: 4.1.5 - sade: 1.8.1 - dev: true - - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true - - /v8-compile-cache@2.3.0: - resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} - dev: true - - /v8-compile-cache@2.4.0: - resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} - dev: true - - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - dev: true - - /validate-npm-package-name@3.0.0: - resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} - dependencies: - builtins: 1.0.3 - dev: true - - /validate-npm-package-name@5.0.0: - resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - builtins: 5.0.1 - dev: true - - /validator@13.11.0: - resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} - engines: {node: '>= 0.10'} - dev: true - - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: true - - /vfile-location@4.1.0: - resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} - dependencies: - '@types/unist': 2.0.10 - vfile: 5.3.7 - dev: true - - /vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} - dependencies: - '@types/unist': 2.0.10 - unist-util-stringify-position: 3.0.3 - dev: true - - /vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - dependencies: - '@types/unist': 2.0.10 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - dev: true - - /vite@4.3.1(@types/node@20.5.1)(less@4.1.3)(sass@1.70.0): - resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 20.5.1 - esbuild: 0.17.19 - less: 4.1.3 - postcss: 8.4.33 - rollup: 3.29.4 - sass: 1.70.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vm-browserify@1.1.2: - resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} - dev: true - - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - dependencies: - makeerror: 1.0.12 - dev: true - - /warning@4.0.3: - resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} - dependencies: - loose-envify: 1.4.0 - dev: false - - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - dev: true - - /wbuf@1.7.3: - resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - dependencies: - minimalistic-assert: 1.0.1 - dev: true - - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - dev: true - - /web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - dev: true - - /web-streams-polyfill@3.3.2: - resolution: {integrity: sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==} - engines: {node: '>= 8'} - dev: true - - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: true - - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: true - - /webpack@5.89.0: - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.22.2 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.1 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.89.0) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - dev: true - - /webworkify-webpack@2.1.5: - resolution: {integrity: sha512-2akF8FIyUvbiBBdD+RoHpoTbHMQF2HwjcxfDvgztAX5YwbZNyrtfUMgvfgFVsgDhDPVTlkbb5vyasqDHfIDPQw==} - dev: false - - /whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - dev: false - - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: true - - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - - /which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} - dependencies: - function.prototype.name: 1.1.6 - has-tostringtag: 1.0.0 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.13 - dev: true - - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} - dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 - dev: true - - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: true - - /which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - dev: true - - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true - dependencies: - isexe: 3.1.1 - dev: true - - /wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - dependencies: - string-width: 4.2.3 - dev: true - - /widest-line@2.0.1: - resolution: {integrity: sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==} - engines: {node: '>=4'} - dependencies: - string-width: 2.1.1 - dev: true - - /wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: true - - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - dev: true - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true - - /write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - dependencies: - graceful-fs: 4.2.11 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - - /write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - - /write-file-atomic@5.0.1: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - imurmurhash: 0.1.4 - signal-exit: 4.1.0 - dev: true - - /write-json-file@3.2.0: - resolution: {integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==} - engines: {node: '>=6'} - dependencies: - detect-indent: 5.0.0 - graceful-fs: 4.2.11 - make-dir: 2.1.0 - pify: 4.0.1 - sort-keys: 2.0.0 - write-file-atomic: 2.4.3 - dev: true - - /write-pkg@4.0.0: - resolution: {integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==} - engines: {node: '>=8'} - dependencies: - sort-keys: 2.0.0 - type-fest: 0.4.1 - write-json-file: 3.2.0 - dev: true - - /xdg-basedir@3.0.0: - resolution: {integrity: sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==} - engines: {node: '>=4'} - dev: true - - /xml-lexer@0.2.2: - resolution: {integrity: sha512-G0i98epIwiUEiKmMcavmVdhtymW+pCAohMRgybyIME9ygfVu8QheIi+YoQh3ngiThsT0SQzJT4R0sKDEv8Ou0w==} - dependencies: - eventemitter3: 2.0.3 - dev: true - - /xml-reader@2.4.3: - resolution: {integrity: sha512-xWldrIxjeAMAu6+HSf9t50ot1uL5M+BtOidRCWHXIeewvSeIpscWCsp4Zxjk8kHHhdqFBrfK8U0EJeCcnyQ/gA==} - dependencies: - eventemitter3: 2.0.3 - xml-lexer: 0.2.2 - dev: true - - /xtend@2.1.2: - resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} - engines: {node: '>=0.4'} - dependencies: - object-keys: 0.4.0 - dev: false - - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true - - /y18n@3.2.2: - resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} - dev: true - - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true - - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true - - /yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: true - - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - /yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} - engines: {node: '>= 14'} - dev: true - - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true - - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: true - - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true - - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - dev: true - - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: true - - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true - - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true - - /z-schema@5.0.5: - resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} - engines: {node: '>=8.0.0'} - hasBin: true - dependencies: - lodash.get: 4.4.2 - lodash.isequal: 4.5.0 - validator: 13.11.0 - optionalDependencies: - commander: 9.5.0 - dev: true - - /zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: true