diff --git a/.changeset/tiny-starfishes-smash.md b/.changeset/tiny-starfishes-smash.md
new file mode 100644
index 000000000..f16266304
--- /dev/null
+++ b/.changeset/tiny-starfishes-smash.md
@@ -0,0 +1,7 @@
+---
+"@nocobase/plugin-mobile-client": patch
+"@hera/plugin-mobile": patch
+"@nocobase/client": patch
+---
+
+collapse
diff --git a/packages/core/client/src/schema-initializer/items/DataBlockInitializer.tsx b/packages/core/client/src/schema-initializer/items/DataBlockInitializer.tsx
index adce62eda..ab91dd137 100644
--- a/packages/core/client/src/schema-initializer/items/DataBlockInitializer.tsx
+++ b/packages/core/client/src/schema-initializer/items/DataBlockInitializer.tsx
@@ -1,4 +1,4 @@
-import Icon, { TableOutlined } from '@ant-design/icons';
+import { TableOutlined } from '@ant-design/icons';
import { Divider, Empty, Input, MenuProps, Spin } from 'antd';
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { useTranslation } from 'react-i18next';
@@ -13,6 +13,7 @@ import { useCompile } from '../../schema-component';
import { useSchemaTemplateManager } from '../../schema-templates';
import { useCollectionDataSourceItems } from '../utils';
import { DataSource } from '../../data-source';
+import { Icon } from '../../icon';
const MENU_ITEM_HEIGHT = 40;
const STEP = 15;
diff --git a/packages/plugins/@hera/plugin-mobile/package.json b/packages/plugins/@hera/plugin-mobile/package.json
index 2b2dc7192..9629bb13c 100644
--- a/packages/plugins/@hera/plugin-mobile/package.json
+++ b/packages/plugins/@hera/plugin-mobile/package.json
@@ -2,9 +2,16 @@
"name": "@hera/plugin-mobile",
"version": "1.0.4",
"main": "dist/server/index.js",
- "dependencies": {
+ "devDependencies": {
+ "@ant-design/icons": "5.x",
"@nocobase/schema": "workspace:*",
- "antd-mobile": "^5.29.1"
+ "@types/lodash": "^4.17.0",
+ "antd": "^5.12.8",
+ "antd-mobile": "^5.33.1",
+ "antd-mobile-icons": "^0.3.0",
+ "classnames": "^2.3.1",
+ "lodash": "4.17.21",
+ "react-i18next": "^11.15.1"
},
"peerDependencies": {
"@nocobase/client": "workspace:*",
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/assets/svg/index.tsx b/packages/plugins/@hera/plugin-mobile/src/client/assets/svg/index.tsx
new file mode 100644
index 000000000..a227b73fd
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/assets/svg/index.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Icon } from '@nocobase/client';
+
+import NoticeSvg from './notice.svg';
+import SwiperSvg from './swiper.svg';
+import TabSearchSvg from './tab-search.svg';
+
+export const loadBase64Icon = (base64: string) => () => (
+
+);
+
+export const NoticeIcon = (props: any) => ;
+export const SwiperIcon = (props: any) => ;
+export const TabSearchIcon = (props: any) => ;
+
+Icon.register({
+ 'notice-block': NoticeIcon,
+ 'swiper-block': SwiperIcon,
+ 'tab-search': TabSearchIcon,
+});
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/assets/svg/notice.svg b/packages/plugins/@hera/plugin-mobile/src/client/assets/svg/notice.svg
new file mode 100644
index 000000000..48ae1c7c1
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/assets/svg/notice.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/assets/svg/swiper.svg b/packages/plugins/@hera/plugin-mobile/src/client/assets/svg/swiper.svg
new file mode 100644
index 000000000..795785af2
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/assets/svg/swiper.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/assets/svg/tab-search.svg b/packages/plugins/@hera/plugin-mobile/src/client/assets/svg/tab-search.svg
new file mode 100644
index 000000000..82d14a722
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/assets/svg/tab-search.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/index.tsx b/packages/plugins/@hera/plugin-mobile/src/client/index.tsx
index bb895bdc1..735ee26d4 100644
--- a/packages/plugins/@hera/plugin-mobile/src/client/index.tsx
+++ b/packages/plugins/@hera/plugin-mobile/src/client/index.tsx
@@ -1,46 +1,16 @@
import { Plugin } from '@nocobase/client';
-import { SwiperBlock, SwiperBlockInitializer } from './schema-initializer/SwiperBlockInitializer';
-import { TabSearchBlock, TabSearchBlockInitializer } from './schema-initializer/TabSearchBlockInitializer';
-import { NoticeBlock, NoticeBlockInitializer } from './schema-initializer/NoticeBlockInitializer';
-
-export class PluginMobileClient extends Plugin {
- async afterAdd() {}
+import PluginBlock from './schma-block';
+import PluginTabSearch from './schma-component/tab-search';
+import './assets/svg/index';
+class PluginMobileClient extends Plugin {
async beforeLoad() {}
- async load() {
- this.app.addComponents({
- NoticeBlock,
- NoticeBlockInitializer,
- SwiperBlock,
- SwiperBlockInitializer,
- TabSearchBlock,
- TabSearchBlockInitializer,
- });
- this.app.schemaInitializerManager.addItem('MBlockInitializers', 'dataBlocks.swiper', {
- title: 'swiper',
- name: 'swiper',
- type: 'item',
- Component: 'SwiperBlockInitializer',
- });
- this.app.schemaInitializerManager.addItem('MBlockInitializers', 'dataBlocks.notice', {
- title: 'notice',
- name: 'notice',
- type: 'item',
- Component: 'NoticeBlockInitializer',
- });
+ async load() {}
- this.app.schemaInitializerManager.addItem('MBlockInitializers', 'filterBlocks', {
- title: '{{t("Filter blocks")}}',
- type: 'itemGroup',
- children: [
- {
- name: 'tabSearch',
- title: 'tabSearch',
- Component: 'TabSearchBlockInitializer',
- },
- ],
- });
+ async afterAdd() {
+ this.pm.add(PluginBlock);
+ this.pm.add(PluginTabSearch);
}
}
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/locale.tsx b/packages/plugins/@hera/plugin-mobile/src/client/locale.tsx
new file mode 100644
index 000000000..6941f42af
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/locale.tsx
@@ -0,0 +1,15 @@
+import { useApp, tval as nTval, i18n } from '@nocobase/client';
+
+const NAMESPACE = '@hera/plugin-mobile';
+
+export const useTranslation = (): any => {
+ const { i18n } = useApp();
+ const t = (key: string, props = {}) => i18n.t(key, { ns: NAMESPACE, ...props });
+ return { t };
+};
+
+export const tval = (key: string) => nTval(key, { ns: NAMESPACE });
+
+export function lang(key: string) {
+ return i18n.t(key, { ns: NAMESPACE });
+}
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schema-initializer/NoticeBlockInitializer.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schema-initializer/NoticeBlockInitializer.tsx
deleted file mode 100644
index e67384741..000000000
--- a/packages/plugins/@hera/plugin-mobile/src/client/schema-initializer/NoticeBlockInitializer.tsx
+++ /dev/null
@@ -1,96 +0,0 @@
-import { ISchema } from '@nocobase/schema';
-import {
- Icon,
- DataBlockInitializer,
- useCollectionManager,
- useSchemaInitializer,
- useSchemaInitializerItem,
-} from '@nocobase/client';
-import React from 'react';
-import { uid } from '@nocobase/utils/client';
-import { NoticeBar } from 'antd-mobile';
-
-const NoticeSvg = () => (
-
-);
-
-const NoticeIcon = (props: any) => ;
-
-export const NoticeBlock = () => {
- return ;
-};
-
-export const NoticeBlockInitializer = () => {
- const { insert } = useSchemaInitializer();
- const cm = useCollectionManager();
- const itemConfig = useSchemaInitializerItem();
- return (
- }
- componentType={'Notice'}
- onCreateBlockSchema={async ({ item }) => {
- const collection = cm.getCollection(item.name);
- const schema = createGridCardBlockSchema({
- collection: item.name,
- dataSource: item.dataSource,
- rowKey: collection.filterTargetKey || 'id',
- settings: 'blockSettings:gridCard',
- });
- insert(schema);
- }}
- />
- );
-};
-
-export const createGridCardBlockSchema = (options) => {
- const {
- formItemInitializers = 'ReadPrettyFormItemInitializers',
- actionInitializers = 'GridCardActionInitializers',
- itemActionInitializers = 'GridCardItemActionInitializers',
- collection,
- association,
- resource,
- template,
- dataSource,
- settings,
- ...others
- } = options;
- const resourceName = resource || association || collection;
- const schema: ISchema = {
- type: 'void',
- 'x-acl-action': `${resourceName}:view`,
- 'x-decorator': 'GridCard.Decorator',
- 'x-decorator-props': {
- resource: resourceName,
- collection,
- association,
- dataSource,
- readPretty: true,
- action: 'list',
- params: {
- pageSize: 12,
- },
- runWhenParamsChanged: true,
- ...others,
- },
- 'x-component': 'BlockItem',
- 'x-component-props': {
- useProps: '{{ useGridCardBlockItemProps }}',
- },
- 'x-toolbar': 'BlockSchemaToolbar',
- 'x-settings': settings,
- properties: {
- [uid()]: {
- type: 'void',
- 'x-component': 'NoticeBlock',
- },
- },
- };
- return schema;
-};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schema-initializer/SwiperBlockInitializer.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schema-initializer/SwiperBlockInitializer.tsx
deleted file mode 100644
index c9231839e..000000000
--- a/packages/plugins/@hera/plugin-mobile/src/client/schema-initializer/SwiperBlockInitializer.tsx
+++ /dev/null
@@ -1,120 +0,0 @@
-import { ISchema } from '@nocobase/schema';
-import {
- DataBlockInitializer,
- css,
- Icon,
- useCollectionManager,
- useSchemaInitializer,
- useSchemaInitializerItem,
-} from '@nocobase/client';
-import React from 'react';
-import { uid } from '@nocobase/utils/client';
-import { Swiper, Toast } from 'antd-mobile';
-
-const SwiperSvg = () => (
-
-);
-
-const SwiperIcon = (props: any) => ;
-
-export const SwiperBlock = () => {
- const colors = ['#ace0ff', '#bcffbd', '#e4fabd', '#ffcfac'];
- const items = colors.map((color, index) => (
-
- {
- Toast.show(`你点击了卡片 ${index + 1}`);
- }}
- >
- {index + 1}
-
-
- ));
- return (
-
- {items}
-
- );
-};
-
-export const SwiperBlockInitializer = () => {
- const { insert } = useSchemaInitializer();
- const cm = useCollectionManager();
- const itemConfig = useSchemaInitializerItem();
- return (
- }
- componentType={'Swiper'}
- onCreateBlockSchema={async ({ item }) => {
- const collection = cm.getCollection(item.name);
- const schema = createGridCardBlockSchema({
- collection: item.name,
- dataSource: item.dataSource,
- rowKey: collection.filterTargetKey || 'id',
- settings: 'blockSettings:gridCard',
- });
- insert(schema);
- }}
- />
- );
-};
-
-const createGridCardBlockSchema = (options) => {
- const {
- formItemInitializers = 'ReadPrettyFormItemInitializers',
- actionInitializers = 'GridCardActionInitializers',
- itemActionInitializers = 'GridCardItemActionInitializers',
- collection,
- association,
- resource,
- template,
- dataSource,
- settings,
- ...others
- } = options;
- const resourceName = resource || association || collection;
- const schema: ISchema = {
- type: 'void',
- 'x-acl-action': `${resourceName}:view`,
- 'x-decorator': 'GridCard.Decorator',
- 'x-decorator-props': {
- resource: resourceName,
- collection,
- association,
- dataSource,
- readPretty: true,
- action: 'list',
- params: {
- pageSize: 12,
- },
- runWhenParamsChanged: true,
- ...others,
- },
- 'x-component': 'BlockItem',
- 'x-component-props': {
- useProps: '{{ useGridCardBlockItemProps }}',
- },
- 'x-toolbar': 'BlockSchemaToolbar',
- 'x-settings': settings,
- properties: {
- [uid()]: {
- type: 'void',
- 'x-component': 'SwiperBlock',
- },
- },
- };
- return schema;
-};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schema-initializer/TabSearchBlockInitializer.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schema-initializer/TabSearchBlockInitializer.tsx
deleted file mode 100644
index d84da3a2d..000000000
--- a/packages/plugins/@hera/plugin-mobile/src/client/schema-initializer/TabSearchBlockInitializer.tsx
+++ /dev/null
@@ -1,144 +0,0 @@
-import { ISchema } from '@nocobase/schema';
-import {
- DataBlockInitializer,
- Icon,
- css,
- useCollectionManager,
- useSchemaInitializer,
- useSchemaInitializerItem,
-} from '@nocobase/client';
-import React, { useState } from 'react';
-import { uid } from '@nocobase/utils/client';
-import { Button, SearchBar, Tabs, Picker } from 'antd-mobile';
-
-const TabSearchSvg = () => (
-
-);
-
-const TabSearchIcon = (props: any) => ;
-
-export const TabSearchBlock = () => {
- const [visible, setVisible] = useState(false);
- const basicColumns = [
- [
- { label: '福建', value: 'Mon' },
- { label: '上海', value: 'Wed' },
- ],
- ];
- return (
- <>
-
-
-
-
-
-
-
-
{
- setVisible(false);
- }}
- />
-
-
-
-
-
- >
- );
-};
-
-export const TabSearchBlockInitializer = () => {
- const { insert } = useSchemaInitializer();
- const cm = useCollectionManager();
- const itemConfig = useSchemaInitializerItem();
- return (
- }
- componentType={'TabSearch'}
- onCreateBlockSchema={async ({ item }) => {
- const collection = cm.getCollection(item.name);
- const schema = createGridCardBlockSchema({
- collection: item.name,
- dataSource: item.dataSource,
- rowKey: collection.filterTargetKey || 'id',
- settings: 'blockSettings:gridCard',
- });
- insert(schema);
- }}
- />
- );
-};
-
-export const createGridCardBlockSchema = (options) => {
- const {
- formItemInitializers = 'ReadPrettyFormItemInitializers',
- actionInitializers = 'GridCardActionInitializers',
- itemActionInitializers = 'GridCardItemActionInitializers',
- collection,
- association,
- resource,
- template,
- dataSource,
- settings,
- ...others
- } = options;
- const resourceName = resource || association || collection;
- const schema: ISchema = {
- type: 'void',
- 'x-acl-action': `${resourceName}:view`,
- 'x-decorator': 'GridCard.Decorator',
- 'x-decorator-props': {
- resource: resourceName,
- collection,
- association,
- dataSource,
- readPretty: true,
- action: 'list',
- params: {
- pageSize: 12,
- },
- runWhenParamsChanged: true,
- ...others,
- },
- 'x-component': 'CardItem',
- 'x-component-props': {
- useProps: '{{ useGridCardBlockItemProps }}',
- },
- 'x-toolbar': 'BlockSchemaToolbar',
- 'x-settings': settings,
- properties: {
- [uid()]: {
- type: 'void',
- 'x-component': 'TabSearchBlock',
- },
- },
- };
- return schema;
-};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-block/index.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-block/index.tsx
new file mode 100644
index 000000000..adc037845
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-block/index.tsx
@@ -0,0 +1,29 @@
+import { Plugin } from '@nocobase/client';
+import { NoticeBlock, NoticeBlockInitializer } from './schema-initializer/NoticeBlockInitializer';
+import { SwiperBlock, SwiperBlockInitializer } from './schema-initializer/SwiperBlockInitializer';
+
+class PluginBlock extends Plugin {
+ async load() {
+ this.app.addComponents({
+ NoticeBlock,
+ NoticeBlockInitializer,
+ SwiperBlock,
+ SwiperBlockInitializer,
+ });
+
+ this.app.schemaInitializerManager.addItem('MBlockInitializers', 'dataBlocks.swiper', {
+ title: 'swiper',
+ name: 'swiper',
+ type: 'item',
+ Component: 'SwiperBlockInitializer',
+ });
+ this.app.schemaInitializerManager.addItem('MBlockInitializers', 'dataBlocks.notice', {
+ title: 'notice',
+ name: 'notice',
+ type: 'item',
+ Component: 'NoticeBlockInitializer',
+ });
+ }
+}
+
+export default PluginBlock;
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-block/schema-create/createGridCardBlockSchma.ts b/packages/plugins/@hera/plugin-mobile/src/client/schma-block/schema-create/createGridCardBlockSchma.ts
new file mode 100644
index 000000000..f04303724
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-block/schema-create/createGridCardBlockSchma.ts
@@ -0,0 +1,49 @@
+import { ISchema } from '@nocobase/schema';
+import { uid } from '@nocobase/utils/client';
+
+export const createGridCardBlockSchema = (options, componentName) => {
+ const {
+ formItemInitializers = 'ReadPrettyFormItemInitializers',
+ actionInitializers = 'GridCardActionInitializers',
+ itemActionInitializers = 'GridCardItemActionInitializers',
+ collection,
+ association,
+ resource,
+ template,
+ dataSource,
+ settings,
+ ...others
+ } = options;
+ const resourceName = resource || association || collection;
+ const schema: ISchema = {
+ type: 'void',
+ 'x-acl-action': `${resourceName}:view`,
+ 'x-decorator': 'GridCard.Decorator',
+ 'x-decorator-props': {
+ resource: resourceName,
+ collection,
+ association,
+ dataSource,
+ readPretty: true,
+ action: 'list',
+ params: {
+ pageSize: 12,
+ },
+ runWhenParamsChanged: true,
+ ...others,
+ },
+ 'x-component': 'BlockItem',
+ 'x-component-props': {
+ useProps: '{{ useGridCardBlockItemProps }}',
+ },
+ 'x-toolbar': 'BlockSchemaToolbar',
+ 'x-settings': settings,
+ properties: {
+ [uid()]: {
+ type: 'void',
+ 'x-component': componentName,
+ },
+ },
+ };
+ return schema;
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-block/schema-initializer/NoticeBlockInitializer.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-block/schema-initializer/NoticeBlockInitializer.tsx
new file mode 100644
index 000000000..0cbe3276a
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-block/schema-initializer/NoticeBlockInitializer.tsx
@@ -0,0 +1,42 @@
+import React from 'react';
+import {
+ DataBlockInitializer,
+ Icon,
+ useCollectionManager,
+ useSchemaInitializer,
+ useSchemaInitializerItem,
+} from '@nocobase/client';
+import { NoticeBar } from 'antd-mobile';
+import { createGridCardBlockSchema } from '../schema-create/createGridCardBlockSchma';
+import { NoticeIcon } from '../../assets/svg';
+
+export const NoticeBlock = () => {
+ return ;
+};
+
+export const NoticeBlockInitializer = () => {
+ const { insert } = useSchemaInitializer();
+ const cm = useCollectionManager();
+ const itemConfig = useSchemaInitializerItem();
+ const onCreateBlockSchema = async ({ item }) => {
+ const collection = cm.getCollection(item.name);
+ const schema = createGridCardBlockSchema(
+ {
+ collection: item.name,
+ dataSource: item.dataSource,
+ rowKey: collection.filterTargetKey || 'id',
+ settings: 'blockSettings:gridCard',
+ },
+ 'NoticeBlock',
+ );
+ insert(schema);
+ };
+ return (
+ }
+ componentType={'Notice'}
+ onCreateBlockSchema={onCreateBlockSchema}
+ />
+ );
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-block/schema-initializer/SwiperBlockInitializer.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-block/schema-initializer/SwiperBlockInitializer.tsx
new file mode 100644
index 000000000..110855d44
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-block/schema-initializer/SwiperBlockInitializer.tsx
@@ -0,0 +1,71 @@
+import {
+ DataBlockInitializer,
+ Icon,
+ css,
+ useCollectionManager,
+ useSchemaInitializer,
+ useSchemaInitializerItem,
+} from '@nocobase/client';
+import React from 'react';
+import { Swiper, Toast } from 'antd-mobile';
+import { createGridCardBlockSchema } from '../schema-create/createGridCardBlockSchma';
+import { SwiperIcon } from '../../assets/svg';
+
+export const SwiperBlock = () => {
+ const colors = ['#ace0ff', '#bcffbd', '#e4fabd', '#ffcfac'];
+ const items = colors.map((color, index) => (
+
+ {
+ Toast.show(`你点击了卡片 ${index + 1}`);
+ }}
+ >
+ {index + 1}
+
+
+ ));
+ return (
+
+ {items}
+
+ );
+};
+
+export const SwiperBlockInitializer = () => {
+ const { insert } = useSchemaInitializer();
+ const cm = useCollectionManager();
+ const itemConfig = useSchemaInitializerItem();
+
+ const onCreateBlockSchema = async ({ item }) => {
+ const collection = cm.getCollection(item.name);
+ const schema = createGridCardBlockSchema(
+ {
+ collection: item.name,
+ dataSource: item.dataSource,
+ rowKey: collection.filterTargetKey || 'id',
+ settings: 'blockSettings:gridCard',
+ },
+ 'SwiperBlock',
+ );
+ insert(schema);
+ };
+
+ return (
+ }
+ componentType={'Swiper'}
+ onCreateBlockSchema={onCreateBlockSchema}
+ />
+ );
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/TabSearch.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/TabSearch.tsx
new file mode 100644
index 000000000..fab9b9505
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/TabSearch.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import { RecursionField } from '@nocobase/schema';
+import { useTabSearchAction } from './TabSearchAction';
+
+export const TabSearch = () => {
+ const { fieldSchema, Designer, render, filterProperties } = useTabSearchAction();
+ return (
+ <>
+
+
+ {render()}
+ >
+ );
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/TabSearchAction.ts b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/TabSearchAction.ts
new file mode 100644
index 000000000..8f398430d
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/TabSearchAction.ts
@@ -0,0 +1,26 @@
+import { useDesigner, useSchemaInitializerRender } from '@nocobase/client';
+import { useFieldSchema } from '@nocobase/schema';
+import { isTabSearchCollapsibleInputItem } from '../utils';
+
+export const useTabSearchAction = () => {
+ const Designer = useDesigner();
+ const fieldSchema = useFieldSchema();
+ const { render } = useSchemaInitializerRender(fieldSchema['x-initializer'], fieldSchema['x-initializer-props']);
+
+ const filterProperties = (s) => {
+ if (!isTabSearchCollapsibleInputItem(s['x-component'])) {
+ return true;
+ } else {
+ // 保留第一个,如果进入这个判断一定有值,所以取0不会出错
+ return (
+ s === Object.values(s.parent.properties).filter((s) => isTabSearchCollapsibleInputItem(s['x-component']))[0]
+ );
+ }
+ };
+ return {
+ fieldSchema,
+ Designer,
+ render,
+ filterProperties,
+ };
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputItem.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputItem.tsx
new file mode 100644
index 000000000..67e5ad6ce
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputItem.tsx
@@ -0,0 +1,43 @@
+import { SortableItem, withDynamicSchemaProps } from '@nocobase/client';
+import { ConfigProvider, Row } from 'antd';
+import React from 'react';
+import { IButton, IInput, ISelect } from './TabSearchCollapsibleInputItemChild';
+import { useTabSearchCollapsibleInputItemAction } from './TabSearchCollapsibleInputItemAction';
+
+export const TabSearchCollapsibleInputItem = withDynamicSchemaProps(
+ (props) => {
+ const { collectionField, Designer, options, value, onSelectChange, onInputChange, onButtonClick, customLabelKey } =
+ useTabSearchCollapsibleInputItemAction(props);
+
+ if (!collectionField) {
+ return null;
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ );
+ },
+ { displayName: 'TabSearchCollapsibleInputItem' },
+);
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputItemAction.ts b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputItemAction.ts
new file mode 100644
index 000000000..956cf49ae
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputItemAction.ts
@@ -0,0 +1,46 @@
+import { useMemo, useState } from 'react';
+import { useFieldSchema } from '@nocobase/schema';
+import { useTranslation } from '../../../../locale';
+import { useCollection, useDesigner } from '@nocobase/client';
+import { isTabSearchCollapsibleInputItem } from '../../utils';
+import { useTabSearchCollapsibleInputItem } from './hooks';
+
+export const useTabSearchCollapsibleInputItemAction = (props) => {
+ const { onSelected } = useTabSearchCollapsibleInputItem();
+ const fieldSchema = useFieldSchema();
+ const collection = useCollection();
+ const collectionField = useMemo(() => collection?.getField(fieldSchema.name as any), [collection, fieldSchema.name]);
+ const properties = fieldSchema.parent.properties;
+ const Designer = useDesigner();
+ const [value, setValue] = useState('');
+ const [customLabelKey, setCustomLabelKey] = useState(fieldSchema['name'] as string);
+
+ const options = Object.values(properties)
+ .map((option) => {
+ if (isTabSearchCollapsibleInputItem(option['x-component'])) {
+ return {
+ label: option['title'],
+ value: option['name'],
+ };
+ }
+ })
+ .filter(Boolean);
+
+ const onSelect = (value) => {
+ onSelected([value], customLabelKey);
+ };
+
+ const onSelectChange = (label) => setCustomLabelKey(label as string);
+ const onInputChange = (v) => {
+ const inputValue = v.target?.value || v;
+ setValue(inputValue);
+ if (inputValue === '') {
+ onSelect(inputValue);
+ }
+ };
+ const onButtonClick = () => {
+ onSelect(value);
+ };
+
+ return { collectionField, Designer, options, value, onSelectChange, onInputChange, onButtonClick, customLabelKey };
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputItemChild.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputItemChild.tsx
new file mode 100644
index 000000000..cc085a8a6
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputItemChild.tsx
@@ -0,0 +1,36 @@
+import React from 'react';
+import { Button, Col, Divider, Input, Select } from 'antd';
+import { useTranslation } from '../../../../locale';
+
+export const ISelect = (props) => {
+ const { options, onChange } = props;
+ return options.length > 1 ? (
+
+
+
+
+ ) : null;
+};
+
+export const IInput = (props) => {
+ const { options, value, onChange } = props;
+ const { t } = useTranslation();
+ return (
+ 1 ? 3 : 4}>
+
+
+ );
+};
+
+export const IButton = (props) => {
+ const { onClick } = props;
+ const { t } = useTranslation();
+
+ return (
+
+
+
+ );
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputMItem.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputMItem.tsx
new file mode 100644
index 000000000..8081d0e8b
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputMItem.tsx
@@ -0,0 +1,28 @@
+import { SortableItem, withDynamicSchemaProps } from '@nocobase/client';
+import { Grid } from 'antd-mobile';
+import React from 'react';
+import { useTabSearchCollapsibleInputItemAction } from './TabSearchCollapsibleInputItemAction';
+import { IButton, IInput, ISelect } from './TabSearchCollapsibleInputMItemChild';
+
+export const TabSearchCollapsibleInputMItem = withDynamicSchemaProps(
+ (props) => {
+ const { collectionField, Designer, options, value, onSelectChange, onInputChange, onButtonClick, customLabelKey } =
+ useTabSearchCollapsibleInputItemAction(props);
+
+ if (!collectionField) {
+ return null;
+ }
+
+ return (
+
+
+
+
+
+
+
+
+ );
+ },
+ { displayName: 'TabSearchCollapsibleInputItem' },
+);
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputMItemChild.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputMItemChild.tsx
new file mode 100644
index 000000000..60e092b51
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchCollapsibleInputMItemChild.tsx
@@ -0,0 +1,60 @@
+import React, { useState } from 'react';
+import { useTranslation } from '../../../../locale';
+import { Grid, Divider, Picker, Input, Space } from 'antd-mobile';
+import { DownOutline } from 'antd-mobile-icons';
+
+export const ISelect = (props) => {
+ const { options, onChange, customLabelKey } = props;
+ const [visible, setVisible] = useState(false);
+ return options.length > 1 ? (
+ {
+ setVisible(true);
+ }}
+ >
+
+ {options.find((option) => option.value === customLabelKey).label}
+
+
+ {
+ setVisible(false);
+ }}
+ defaultValue={customLabelKey}
+ onConfirm={(v) => {
+ onChange(v[0]);
+ }}
+ />
+
+
+ ) : null;
+};
+
+export const IInput = (props) => {
+ const { options, value, onChange } = props;
+ const { t } = useTranslation();
+ return (
+ 1 ? 2 : 3}>
+
+
+ );
+};
+
+export const IButton = (props) => {
+ const { onClick } = props;
+ const { t } = useTranslation();
+
+ return (
+
+ {t('Search')}
+
+ );
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchFieldItem.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchFieldItem.tsx
new file mode 100644
index 000000000..8f17f0597
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchFieldItem.tsx
@@ -0,0 +1,30 @@
+import { SortableItem, withDynamicSchemaProps } from '@nocobase/client';
+import { ConfigProvider, Menu } from 'antd';
+import React from 'react';
+import { useTabSearchFieldItemAction } from './TabSearchFieldItemAction';
+
+export const TabSearchFieldItem = withDynamicSchemaProps(
+ (props) => {
+ const { collectionField, Designer, items, onSelect } = useTabSearchFieldItemAction(props);
+
+ if (!collectionField) {
+ return null;
+ }
+
+ return (
+
+
+
+
+
+
+ );
+ },
+ { displayName: 'TabSearchFieldItem' },
+);
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchFieldItemAction.ts b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchFieldItemAction.ts
new file mode 100644
index 000000000..8025bfeae
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchFieldItemAction.ts
@@ -0,0 +1,45 @@
+import React from 'react';
+import { MenuProps } from 'antd';
+import { useCollection, useDesigner } from '@nocobase/client';
+import { useFieldSchema } from '@nocobase/schema';
+import { useTranslation } from '../../../../locale';
+
+export const useTabSearchFieldItemAction = (props) => {
+ const { list, onSelected, valueKey: _valueKey, labelKey: _labelKey, filterKey } = props;
+ const { t } = useTranslation();
+ const fieldSchema = useFieldSchema();
+ const c = useCollection();
+ const collectionField = React.useMemo(() => c?.getField(fieldSchema.name as any), [c, fieldSchema.name]);
+ const Designer = useDesigner();
+ const valueKey = _valueKey || collectionField?.targetKey || 'id';
+ const labelKey = _labelKey || fieldSchema['x-component-props']?.fieldNames?.label || valueKey;
+ const onSelect = (itemKey) => {
+ const key = itemKey.keyPath?.[0] || itemKey;
+ onSelected([key], null, filterKey);
+ };
+ const fieldNames = {
+ title: labelKey || valueKey,
+ key: valueKey,
+ };
+ const items: MenuProps['items'] = [];
+
+ if (list?.length) {
+ list.forEach((value) => {
+ items.push({
+ label: value[fieldNames.title],
+ key: value[fieldNames.key],
+ });
+ });
+ }
+ items?.unshift({
+ label: t('all'),
+ key: 'all',
+ });
+
+ return {
+ collectionField,
+ Designer,
+ items,
+ onSelect,
+ };
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchFieldItemProps.ts b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchFieldItemProps.ts
new file mode 100644
index 000000000..d6b9c79e6
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchFieldItemProps.ts
@@ -0,0 +1,47 @@
+import { useMemo } from 'react';
+import { useCollection, useCollectionManager } from '@nocobase/client';
+import { useFieldSchema } from '@nocobase/schema';
+import _ from 'lodash';
+import { useTabSearchCollapsibleInputItem } from './hooks';
+import { canBeOptionalField } from '../../utils';
+
+export const useTabSearchFieldItemProps = () => {
+ const fieldSchema = useFieldSchema();
+ const collection = useCollection();
+ const optionalFieldList = useOptionalFieldList();
+ const cm = useCollectionManager();
+ const collectionField = useMemo(() => collection?.getField(fieldSchema.name as any), [collection, fieldSchema.name]);
+ const { onSelected } = useTabSearchCollapsibleInputItem();
+ const result = { list: null, valueKey: '', labelKey: '', filterKey: '' };
+ result.valueKey = collectionField?.target ? cm.getCollection(collectionField.target)?.getPrimaryKey() : 'id';
+ result.labelKey = fieldSchema['x-component-props']?.fieldNames?.label || result.valueKey;
+ const fieldInterface = fieldSchema['x-component-props'].interface;
+ if (canBeOptionalField(fieldInterface)) {
+ const field = optionalFieldList.find((field) => field.name === fieldSchema.name);
+ const operatorMap = {
+ select: '$in',
+ multipleSelect: '$anyOf',
+ checkbox: '$in',
+ checkboxGroup: '$anyOf',
+ };
+ const _list = field?.uiSchema?.enum || [];
+ result.valueKey = 'value';
+ result.labelKey = 'label';
+ result.list = _list;
+ result.filterKey = `${field.name}.${operatorMap[field.interface]}`;
+ }
+
+ return {
+ list: result.list,
+ valueKey: result.valueKey,
+ labelKey: result.labelKey,
+ onSelected,
+ filterKey: result.filterKey,
+ };
+};
+
+const useOptionalFieldList = () => {
+ const collection = useCollection();
+ const currentFields = collection?.fields ?? [];
+ return currentFields.filter((field) => canBeOptionalField(field.interface) && field.uiSchema.enum);
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchFieldMItem.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchFieldMItem.tsx
new file mode 100644
index 000000000..3cddd521f
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSearchFieldMItem.tsx
@@ -0,0 +1,26 @@
+import { SortableItem, withDynamicSchemaProps } from '@nocobase/client';
+import React from 'react';
+import { useTabSearchFieldItemAction } from './TabSearchFieldItemAction';
+import { Tabs } from 'antd-mobile';
+
+export const TabSearchFieldMItem = withDynamicSchemaProps(
+ (props) => {
+ const { collectionField, Designer, items, onSelect } = useTabSearchFieldItemAction(props);
+
+ if (!collectionField) {
+ return null;
+ }
+
+ return (
+
+
+
+ {items.map((value) => (
+
+ ))}
+
+
+ );
+ },
+ { displayName: 'TabSearchFieldItem' },
+);
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSerachFieldItemRelatedProps.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSerachFieldItemRelatedProps.tsx
new file mode 100644
index 000000000..795854e12
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/TabSerachFieldItemRelatedProps.tsx
@@ -0,0 +1,75 @@
+// 关系字段类型
+import { useEffect, useMemo } from 'react';
+import {
+ useCollection,
+ useCollectionManager,
+ useDataSourceHeaders,
+ useFilterBlock,
+ useRequest,
+} from '@nocobase/client';
+import { useField, useFieldSchema } from '@nocobase/schema';
+import _ from 'lodash';
+import { useTabSearchCollapsibleInputItem } from './hooks';
+import { canBeRelatedField } from '../../utils';
+
+export const useTabSearchFieldItemRelatedProps = () => {
+ const fieldSchema = useFieldSchema();
+ const collection = useCollection();
+ const field = useField();
+ // TODO 这里需要替换成获取 source id 的方式,不过我们暂时没有用多数据源,就不着急
+ const blockProps = { dataSource: 'main' };
+ const headers = useDataSourceHeaders(blockProps?.dataSource);
+ const cm = useCollectionManager();
+ const collectionField = useMemo(() => collection?.getField(fieldSchema.name as any), [collection, fieldSchema.name]);
+ const collectionFieldName = collectionField?.name;
+ const fieldInterface = fieldSchema['x-component-props'].interface;
+ const result = { list: null, valueKey: '', labelKey: '', filterKey: '' };
+ const { onSelected } = useTabSearchCollapsibleInputItem();
+ result.valueKey = collectionField?.target ? cm.getCollection(collectionField.target)?.getPrimaryKey() : 'id';
+ result.labelKey = fieldSchema['x-component-props']?.fieldNames?.label || result.valueKey;
+ // eslint-disable-next-line prefer-const
+ const { data, run } = useRequest<{
+ data: { [key: string]: any }[];
+ }>(
+ {
+ headers,
+ resource: collectionField?.target,
+ action: 'list',
+ params: {
+ fields: [result.labelKey, result.valueKey],
+ pageSize: 200,
+ page: 1,
+ ...field.componentProps?.params,
+ },
+ },
+ {
+ manual: true,
+ debounceWait: 300,
+ },
+ );
+ useEffect(() => {
+ if (canBeRelatedField(fieldInterface) && collectionField?.target) {
+ run();
+ }
+ }, [
+ result.labelKey,
+ result.valueKey,
+ JSON.stringify(field.componentProps?.params || {}),
+ canBeRelatedField(fieldInterface),
+ ]);
+
+ if (!collectionField) {
+ return {};
+ }
+
+ result.filterKey = `${collectionFieldName}.${result.valueKey}.$in`;
+ result.list = data?.data || [];
+
+ return {
+ list: result.list,
+ valueKey: result.valueKey,
+ labelKey: result.labelKey,
+ onSelected,
+ filterKey: result.filterKey,
+ };
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/hooks.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/hooks.tsx
new file mode 100644
index 000000000..ba18fe794
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/components/field-item/hooks.tsx
@@ -0,0 +1,76 @@
+import { findFilterTargets, mergeFilter, useApp, useCollection, useFilterBlock } from '@nocobase/client';
+import { useFieldSchema } from '@nocobase/schema';
+import { useMemo } from 'react';
+import _ from 'lodash';
+
+export const useTabSearchCollapsibleInputItem = () => {
+ const fieldSchema = useFieldSchema();
+ const collection = useCollection();
+ const { getDataBlocks } = useFilterBlock();
+ const collectionField = useMemo(() => collection?.getField(fieldSchema.name as any), [collection, fieldSchema.name]);
+
+ const onSelected = (value, customLabelKey?, filterKey?) => {
+ const { targets, uid } = findFilterTargets(fieldSchema);
+ getDataBlocks().forEach((block) => {
+ const target = targets.find((target) => target.uid === block.uid);
+ if (!target) return;
+ const key = `${uid}${fieldSchema.name}`;
+ const param = block.service.params?.[0] || {};
+ if (!collectionField?.target && customLabelKey) {
+ filterKey = `${customLabelKey}.$includes`;
+ }
+ // 保留原有的 filter
+ let storedFilter = block.service.params?.[1]?.filters || {};
+ if (value.length) {
+ storedFilter[key] = {
+ [filterKey]: value,
+ };
+ } else {
+ if (block.dataLoadingMode === 'manual') {
+ return block.clearData();
+ }
+ delete storedFilter[key];
+ }
+ const mergedFilter = mergeFilter([...Object.values(storedFilter), block.defaultFilter]);
+ if (value.length === 1 && value[0] === 'all') {
+ const currentKey = Object.keys(storedFilter[key]);
+ if (mergedFilter['$and']) {
+ currentKey.forEach((currentValue) => {
+ mergedFilter['$and'].forEach((value, index) => {
+ if (value[currentValue]) {
+ mergedFilter['$and'].splice(index, 1);
+ }
+ });
+ });
+ mergedFilter['$and'] = mergedFilter['$and'].filter(Boolean);
+ } else {
+ delete mergedFilter[currentKey[0]];
+ }
+ storedFilter[key] = {};
+ }
+ storedFilter = _.omitBy(
+ storedFilter,
+ (value) => value === null || value === undefined || (_.isObject(value) && _.isEmpty(value)),
+ );
+
+ return block.doFilter(
+ {
+ ...param,
+ page: 1,
+ filter: mergedFilter,
+ },
+ { filters: storedFilter },
+ );
+ });
+ };
+
+ return {
+ onSelected,
+ };
+};
+
+export const useIsMobile = () => {
+ const fieldSchema = useFieldSchema();
+ const isMobile = Object.values(fieldSchema.root.properties).find((value) => value['x-component'] === 'MContainer');
+ return isMobile;
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/create/createTabSearchBlockSchema.ts b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/create/createTabSearchBlockSchema.ts
new file mode 100644
index 000000000..3d7684d7b
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/create/createTabSearchBlockSchema.ts
@@ -0,0 +1,33 @@
+import { ISchema } from '@nocobase/schema';
+import { uid } from '@nocobase/utils/client';
+
+export const createTabSearchBlockSchema = (options: {
+ collectionName: string;
+ dataSource: string;
+ blockType: string;
+}): ISchema => {
+ const { collectionName, dataSource, blockType } = options;
+ return {
+ type: 'void',
+ 'x-decorator': 'TabSearchProvider',
+ 'x-decorator-props': {
+ collection: collectionName,
+ dataSource,
+ blockType,
+ },
+ // 这个工具栏本来就没什么特别的作用,就是用于显示名称、模板名称,用这个没问题
+ 'x-toolbar': 'BlockSchemaToolbar',
+ // FIXME 模板在当前这个 provider 下是不支持的,要么添加相关的代码,要么这个 settings 用自己的
+ 'x-settings': 'blockSettings:filterCollapse',
+ 'x-component': 'CardItem',
+ 'x-filter-targets': [],
+ properties: {
+ [uid()]: {
+ type: 'void',
+ 'x-action': 'tabSearch',
+ 'x-initializer': 'tabSearch:configureFields',
+ 'x-component': 'TabSearch',
+ },
+ },
+ };
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/create/createTabSearchItemSchema.ts b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/create/createTabSearchItemSchema.ts
new file mode 100644
index 000000000..b9154a863
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/create/createTabSearchItemSchema.ts
@@ -0,0 +1,24 @@
+export const createTabSearchItemSchema = (options) => {
+ const { field, itemComponent, label, itemUseProps } = options;
+ return {
+ name: field.key,
+ title: field.uiSchema?.title,
+ Component: 'TabSearchFieldSchemaInitializerGadget',
+ schema: {
+ name: field.name,
+ title: field.uiSchema?.title,
+ type: 'void',
+ 'x-toolbar': 'CollapseItemSchemaToolbar',
+ 'x-settings': 'fieldSettings:TabSearchItem',
+ 'x-component': itemComponent,
+ 'x-use-component-props': itemUseProps,
+ 'x-component-props': {
+ fieldNames: {
+ label,
+ },
+ interface: field.interface,
+ },
+ properties: {},
+ },
+ };
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/index.ts b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/index.ts
new file mode 100644
index 000000000..e88d3e7ab
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/index.ts
@@ -0,0 +1,54 @@
+import { Plugin } from '@nocobase/client';
+import { TabSearch } from './components/TabSearch';
+import { TabSearchProvider } from './provider/TabSearchProvider';
+import { TabSearchBlockInitializer } from './initializer/TabSearchBlockInitializer';
+import { TabSearchFieldItem } from './components/field-item/TabSearchFieldItem';
+import { TabSearchCollapsibleInputItem } from './components/field-item/TabSearchCollapsibleInputItem';
+import { TabSearchFieldSchemaInitializerGadget } from './initializer/TabSearchFieldSchemaInitializerGadget';
+import { tval } from '../../locale';
+import { useTabSearchFieldItemRelatedProps } from './components/field-item/TabSerachFieldItemRelatedProps';
+import { useTabSearchFieldItemProps } from './components/field-item/TabSearchFieldItemProps';
+import { TabSearchFieldSchemaInitializer } from './initializer/TabSearchFieldSchemaInitializer';
+import { TabSearchItemFieldSettings } from './settings/TabSearchItemFieldSettings';
+import { TabSearchFieldMItem } from './components/field-item/TabSearchFieldMItem';
+import { TabSearchCollapsibleInputMItem } from './components/field-item/TabSearchCollapsibleInputMItem';
+
+class PluginTabSearch extends Plugin {
+ async load() {
+ this.app.addScopes({
+ useTabSearchFieldItemProps,
+ useTabSearchFieldItemRelatedProps,
+ });
+
+ this.app.addComponents({
+ TabSearch,
+ TabSearchProvider,
+ TabSearchBlockInitializer,
+ TabSearchFieldItem,
+ TabSearchFieldMItem,
+ TabSearchCollapsibleInputItem,
+ TabSearchCollapsibleInputMItem,
+ TabSearchFieldSchemaInitializerGadget,
+ });
+ this.app.schemaInitializerManager.add(TabSearchFieldSchemaInitializer);
+ this.schemaSettingsManager.add(TabSearchItemFieldSettings);
+ this.app.schemaInitializerManager.addItem('mobilePage:addBlock', 'filterBlocks', {
+ title: tval('Filter blocks'),
+ type: 'itemGroup',
+ children: [
+ {
+ name: 'tabSearch',
+ title: 'tabSearch',
+ Component: 'TabSearchBlockInitializer',
+ },
+ ],
+ });
+ this.app.schemaInitializerManager.addItem('page:addBlock', 'filterBlocks.tabSearch', {
+ name: 'tabSearch',
+ title: 'tabSearch',
+ Component: 'TabSearchBlockInitializer',
+ });
+ }
+}
+
+export default PluginTabSearch;
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/initializer/TabSearchBlockInitializer.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/initializer/TabSearchBlockInitializer.tsx
new file mode 100644
index 000000000..08bebea8d
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/initializer/TabSearchBlockInitializer.tsx
@@ -0,0 +1,31 @@
+import React from 'react';
+import _ from 'lodash';
+import { DataBlockInitializer, Icon, useSchemaInitializer, useSchemaInitializerItem } from '@nocobase/client';
+import { createTabSearchBlockSchema } from '../create/createTabSearchBlockSchema';
+
+export const TabSearchBlockInitializer = (props) => {
+ const { filterCollections, onlyCurrentDataSource, hideChildrenIfSingleCollection } = props;
+ const itemConfig = useSchemaInitializerItem();
+ const { insert } = useSchemaInitializer();
+
+ const onCreateBlockSchema = async ({ item }) => {
+ const schema = createTabSearchBlockSchema({
+ dataSource: item.dataSource,
+ collectionName: item.collectionName || item.name,
+ blockType: 'filter',
+ });
+ insert(schema);
+ };
+
+ return (
+
+ );
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/initializer/TabSearchFieldSchemaInitializer.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/initializer/TabSearchFieldSchemaInitializer.tsx
new file mode 100644
index 000000000..a05ff722a
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/initializer/TabSearchFieldSchemaInitializer.tsx
@@ -0,0 +1,70 @@
+import { SchemaInitializer, SchemaInitializerItemType, useCollection, useCollectionManager } from '@nocobase/client';
+import _ from 'lodash';
+import { tval } from '../../../locale';
+import { canBeOptionalField, canBeRelatedField, canBeSearchField } from '../utils';
+import { createTabSearchItemSchema } from '../create/createTabSearchItemSchema';
+import { useIsMobile } from '../components/field-item/hooks';
+
+const textFieldsItem: SchemaInitializerItemType = {
+ name: 'textFields',
+ type: 'itemGroup',
+ title: tval('Text fields'),
+ useChildren() {
+ const collection = useCollection();
+ const associatedFields = collection.fields;
+ const isMobield = useIsMobile();
+ const itemComponent = isMobield ? 'TabSearchCollapsibleInputMItem' : 'TabSearchCollapsibleInputItem';
+ const children = associatedFields
+ .map((field) => {
+ if (canBeSearchField(field.interface) && !field['isForeignKey']) {
+ const label = field.name;
+ return createTabSearchItemSchema({ field, itemComponent, label });
+ }
+ })
+ .filter(Boolean);
+ return children;
+ },
+};
+
+const choicesFieldsItem: SchemaInitializerItemType = {
+ name: 'choicesFields',
+ type: 'itemGroup',
+ title: tval('Choices fields'),
+ useChildren() {
+ const collection = useCollection();
+ const optionalList = collection.fields;
+ const cm = useCollectionManager();
+ const isMobield = useIsMobile();
+ const itemComponent = isMobield ? 'TabSearchFieldMItem' : 'TabSearchFieldItem';
+ const optionalChildren = optionalList
+ .map((field) => {
+ const label = cm.getCollection(field.target)?.getPrimaryKey() || 'id';
+ if (canBeOptionalField(field.interface)) {
+ return createTabSearchItemSchema({
+ field,
+ itemComponent,
+ label,
+ itemUseProps: 'useTabSearchFieldItemProps',
+ });
+ } else if (canBeRelatedField(field.interface)) {
+ return createTabSearchItemSchema({
+ field,
+ itemComponent,
+ label,
+ itemUseProps: 'useTabSearchFieldItemRelatedProps',
+ });
+ }
+ })
+ .filter(Boolean);
+
+ return optionalChildren;
+ },
+};
+
+export const TabSearchFieldSchemaInitializer = new SchemaInitializer({
+ name: 'tabSearch:configureFields',
+ style: { marginTop: 16 },
+ icon: 'SettingOutlined',
+ title: tval('Configure fields'),
+ items: [textFieldsItem, choicesFieldsItem],
+});
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/initializer/TabSearchFieldSchemaInitializerGadget.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/initializer/TabSearchFieldSchemaInitializerGadget.tsx
new file mode 100644
index 000000000..560d1d4ef
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/initializer/TabSearchFieldSchemaInitializerGadget.tsx
@@ -0,0 +1,26 @@
+import {
+ SchemaInitializerSwitch,
+ useCurrentSchema,
+ useSchemaInitializer,
+ useSchemaInitializerItem,
+} from '@nocobase/client';
+import { merge } from '@nocobase/schema';
+import React from 'react';
+
+export const TabSearchFieldSchemaInitializerGadget = () => {
+ const itemConfig = useSchemaInitializerItem();
+ const { schema } = itemConfig;
+ const { exists, remove } = useCurrentSchema(schema.name, 'name', itemConfig.find, itemConfig.remove);
+ const { insert } = useSchemaInitializer();
+
+ const onClick = () => {
+ if (exists) {
+ return remove();
+ }
+ const s = merge(schema || {}, itemConfig.schema || {});
+ itemConfig?.schemaInitialize?.(s);
+ insert(s);
+ };
+
+ return ;
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/provider/TabSearchProvider.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/provider/TabSearchProvider.tsx
new file mode 100644
index 000000000..9b75c2b4c
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/provider/TabSearchProvider.tsx
@@ -0,0 +1,6 @@
+import { DataBlockProvider } from '@nocobase/client';
+import React from 'react';
+
+export const TabSearchProvider = (props) => {
+ return {props.children};
+};
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/settings/TabSearchItemFieldSettings.tsx b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/settings/TabSearchItemFieldSettings.tsx
new file mode 100644
index 000000000..dbea2c112
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/settings/TabSearchItemFieldSettings.tsx
@@ -0,0 +1,152 @@
+import {
+ SchemaSettings,
+ SchemaSettingsDataScope,
+ useCollection,
+ useCollectionManager,
+ useCompile,
+ useDesignable,
+ useFormBlockContext,
+} from '@nocobase/client';
+import { useTranslation } from '../../../locale';
+import { useField, useFieldSchema } from '@nocobase/schema';
+import _ from 'lodash';
+import { isTabSearchCollapsibleInputItem } from '../utils';
+
+export const TabSearchItemFieldSettings = new SchemaSettings({
+ name: 'fieldSettings:TabSearchItem',
+ items: [
+ {
+ name: 'decoratorOptions',
+ type: 'itemGroup',
+ hideIfNoChildren: true,
+ useComponentProps() {
+ const { t } = useTranslation();
+ return {
+ title: t('Generic properties'),
+ };
+ },
+ useChildren() {
+ return [
+ {
+ name: 'setTheDataScope',
+ Component: SchemaSettingsDataScope,
+ useComponentProps() {
+ const fieldSchema = useFieldSchema();
+ const { form } = useFormBlockContext();
+ const field = useField();
+ const cm = useCollectionManager();
+ const c = useCollection();
+ const collectionField =
+ c.getField(fieldSchema['name']) || cm.getCollectionField(fieldSchema['x-collection-field']);
+ const { dn } = useDesignable();
+
+ return {
+ collectionName: collectionField?.target,
+ defaultFilter: fieldSchema?.['x-component-props']?.params?.filter || {},
+ form: form,
+ onSubmit: ({ filter }) => {
+ _.set(field.componentProps, 'params', {
+ ...field.componentProps?.params,
+ filter,
+ });
+ fieldSchema['x-component-props']['params'] = field.componentProps.params;
+ dn.emit('patch', {
+ schema: {
+ ['x-uid']: fieldSchema['x-uid'],
+ 'x-component-props': fieldSchema['x-component-props'],
+ },
+ });
+ },
+ };
+ },
+ useVisible() {
+ const fieldSchema = useFieldSchema();
+ return !isTabSearchCollapsibleInputItem(fieldSchema['x-component']);
+ },
+ },
+ {
+ name: 'titleField',
+ type: 'select',
+ useComponentProps() {
+ const fieldSchema = useFieldSchema();
+ const { t } = useTranslation();
+ const cm = useCollectionManager();
+ const c = useCollection();
+ const collectionField =
+ c.getField(fieldSchema['name']) || cm.getCollectionField(fieldSchema['x-collection-field']);
+ const compile = useCompile();
+ const { dn } = useDesignable();
+ const targetFields = collectionField?.target ? cm.getCollectionFields(collectionField?.target) : [];
+ const options = targetFields
+ .filter((field) => !field?.target && field.type !== 'boolean')
+ .map((field) => ({
+ value: field?.name,
+ label: compile(field?.uiSchema?.title) || field?.name,
+ }));
+ const onTitleFieldChange = (label) => {
+ const schema = {
+ ['x-uid']: fieldSchema['x-uid'],
+ };
+ const fieldNames = {
+ ...collectionField?.uiSchema?.['x-component-props']?.['fieldNames'],
+ ...fieldSchema['x-component-props']?.['fieldNames'],
+ label,
+ };
+ fieldSchema['x-component-props'] = fieldSchema['x-component-props'] || {};
+ fieldSchema['x-component-props']['fieldNames'] = fieldNames;
+ schema['x-component-props'] = fieldSchema['x-component-props'];
+ dn.emit('patch', {
+ schema,
+ });
+ dn.refresh();
+ };
+
+ return {
+ key: 'title-field',
+ title: t('Title field'),
+ options: options,
+ value: fieldSchema['x-component-props']?.fieldNames?.label,
+ onChange: onTitleFieldChange,
+ };
+ },
+ useVisible() {
+ const fieldSchema = useFieldSchema();
+ return !isTabSearchCollapsibleInputItem(fieldSchema['x-component']);
+ },
+ },
+ ];
+ },
+ },
+ {
+ name: 'divider',
+ type: 'divider',
+ },
+ {
+ name: 'delete',
+ type: 'remove',
+ sort: 100,
+ useComponentProps() {
+ const { t } = useTranslation();
+ const fieldSchema = useFieldSchema();
+ const { dn } = useDesignable();
+ return {
+ removeParentsIfNoChildren: true,
+ confirm: {
+ title: t('Delete field'),
+ },
+ breakRemoveOn: (s) => {
+ if (isTabSearchCollapsibleInputItem(fieldSchema['x-component'])) {
+ Object.values(s.properties).forEach((value) => {
+ if (isTabSearchCollapsibleInputItem(value['x-component']) && value.name !== fieldSchema.name) {
+ delete s.properties[value.name];
+ }
+ });
+ dn.emit('patch', { schema: s });
+ }
+ return s['x-component'] === 'TabSearch';
+ },
+ };
+ },
+ },
+ ],
+});
diff --git a/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/utils.ts b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/utils.ts
new file mode 100644
index 000000000..a11f0eb09
--- /dev/null
+++ b/packages/plugins/@hera/plugin-mobile/src/client/schma-component/tab-search/utils.ts
@@ -0,0 +1,25 @@
+const canBeOptionalFields = ['select', 'multipleSelect', 'radioGroup', 'checkbox', 'checkboxGroup'];
+const canBeRelatedFields = ['oho', 'obo', 'o2m', 'm2o', 'm2m'];
+
+const canBeSearchFields = [
+ 'input',
+ 'textarea',
+ 'phone',
+ 'email',
+ 'url',
+ 'integer',
+ 'number',
+ 'percent',
+ 'password',
+ 'color',
+ 'icon',
+ 'formula',
+];
+
+export const isTabSearchCollapsibleInputItem = (component: string) =>
+ component === 'TabSearchCollapsibleInputItem' || component === 'TabSearchCollapsibleInputMItem';
+
+export const canBeOptionalField = (_interface: string) => canBeOptionalFields.includes(_interface);
+export const canBeRelatedField = (_interface: string) => canBeRelatedFields.includes(_interface);
+
+export const canBeSearchField = (_interface: string) => canBeSearchFields.includes(_interface);
diff --git a/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/components/page/Page.tsx b/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/components/page/Page.tsx
index 4ab15b4a5..12282111a 100644
--- a/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/components/page/Page.tsx
+++ b/packages/plugins/@nocobase/plugin-mobile-client/src/client/core/schema/components/page/Page.tsx
@@ -1,5 +1,13 @@
import { RecursionField, useField, useFieldSchema } from '@nocobase/schema';
-import { ActionBarProvider, SortableItem, TabsContextProvider, css, cx, useDesigner } from '@nocobase/client';
+import {
+ ActionBarProvider,
+ FilterBlockProvider,
+ SortableItem,
+ TabsContextProvider,
+ css,
+ cx,
+ useDesigner,
+} from '@nocobase/client';
import { TabsProps } from 'antd';
import React, { useCallback } from 'react';
import { useSearchParams } from 'react-router-dom';
@@ -131,7 +139,13 @@ const InternalPage: React.FC = (props) => {
);
};
-export const MPage = InternalPage as unknown as typeof InternalPage & {
+const InternalFilterablePage = (props) => (
+
+
+
+);
+
+export const MPage = InternalFilterablePage as unknown as typeof InternalPage & {
Designer: typeof PageDesigner;
};
MPage.Designer = PageDesigner;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7466455e1..6d3a81db5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -119,7 +119,7 @@ importers:
version: 5.4.3
umi:
specifier: ^4.0.69
- version: 4.0.89(@babel/core@7.23.6)(@types/node@20.12.2)(@types/react@18.2.73)(eslint@8.57.0)(prettier@3.2.5)(react-dom@18.2.0)(react@18.2.0)(stylelint@14.16.1)(typescript@5.4.3)(webpack@5.91.0)
+ version: 4.0.89(@babel/core@7.22.10)(@types/node@20.12.2)(@types/react@18.2.73)(eslint@8.57.0)(prettier@3.2.5)(react-dom@18.2.0)(react@18.2.0)(sass@1.69.5)(stylelint@14.16.1)(typescript@5.4.3)(webpack@5.91.0)
packages/core/acl:
dependencies:
@@ -1433,9 +1433,6 @@ importers:
'@nocobase/client':
specifier: workspace:*
version: link:../../../core/client
- '@nocobase/schema':
- specifier: workspace:*
- version: link:../../../core/schema
'@nocobase/server':
specifier: workspace:*
version: link:../../../core/server
@@ -1445,9 +1442,34 @@ importers:
'@nocobase/utils':
specifier: workspace:*
version: link:../../../core/utils
+ devDependencies:
+ '@ant-design/icons':
+ specifier: 5.x
+ version: 5.3.6(react-dom@18.2.0)(react@18.2.0)
+ '@nocobase/schema':
+ specifier: workspace:*
+ version: link:../../../core/schema
+ '@types/lodash':
+ specifier: ^4.17.0
+ version: 4.17.0
+ antd:
+ specifier: 5.16.0
+ version: 5.16.0(react-dom@18.2.0)(react@18.2.0)
antd-mobile:
- specifier: ^5.29.1
+ specifier: ^5.33.1
version: 5.33.1(react-dom@18.2.0)(react@18.2.0)
+ antd-mobile-icons:
+ specifier: ^0.3.0
+ version: 0.3.0
+ classnames:
+ specifier: ^2.3.1
+ version: 2.5.1
+ lodash:
+ specifier: 4.17.21
+ version: 4.17.21
+ react-i18next:
+ specifier: ^11.15.1
+ version: 11.18.6(i18next@22.5.1)(react-dom@18.2.0)(react@18.2.0)
packages/plugins/@hera/plugin-oidc:
dependencies:
@@ -4763,10 +4785,10 @@ packages:
react-dom: 18.2.0
dependencies:
'@ant-design/cssinjs': 1.18.2(react-dom@18.2.0)(react@18.2.0)
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@ctrl/tinycolor': 3.6.1
antd: 5.16.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-util: 5.39.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.4(react@18.2.0)
@@ -4780,12 +4802,12 @@ packages:
dependencies:
'@ant-design/icons': 5.3.6(react-dom@18.2.0)(react@18.2.0)
'@ant-design/pro-provider': 2.13.5(antd@5.16.0)(react-dom@18.2.0)(react@18.2.0)
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
antd: 5.16.0(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)
+ rc-util: 5.39.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
@@ -5907,10 +5929,10 @@ packages:
'@babel/helpers': 7.23.6
'@babel/parser': 7.23.6
'@babel/template': 7.22.15
- '@babel/traverse': 7.23.6
+ '@babel/traverse': 7.23.6(supports-color@5.5.0)
'@babel/types': 7.23.6
convert-source-map: 1.9.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -5929,10 +5951,10 @@ packages:
'@babel/helpers': 7.23.6
'@babel/parser': 7.23.6
'@babel/template': 7.22.15
- '@babel/traverse': 7.23.6
+ '@babel/traverse': 7.23.6(supports-color@5.5.0)
'@babel/types': 7.23.6
convert-source-map: 2.0.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -5951,15 +5973,16 @@ packages:
'@babel/helpers': 7.23.6
'@babel/parser': 7.23.6
'@babel/template': 7.22.15
- '@babel/traverse': 7.23.6
+ '@babel/traverse': 7.23.6(supports-color@5.5.0)
'@babel/types': 7.23.6
convert-source-map: 2.0.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
transitivePeerDependencies:
- supports-color
+ dev: false
/@babel/eslint-parser@7.22.15(@babel/core@7.23.2)(eslint@8.55.0):
resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==}
@@ -6134,6 +6157,7 @@ packages:
'@babel/helper-simple-access': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6
'@babel/helper-validator-identifier': 7.22.20
+ dev: false
/@babel/helper-optimise-call-expression@7.22.5:
resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
@@ -6215,7 +6239,7 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@babel/template': 7.22.15
- '@babel/traverse': 7.23.6
+ '@babel/traverse': 7.23.6(supports-color@5.5.0)
'@babel/types': 7.23.6
transitivePeerDependencies:
- supports-color
@@ -6285,15 +6309,6 @@ packages:
'@babel/core': 7.22.10
'@babel/helper-plugin-utils': 7.22.5
- /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.6):
- resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-plugin-utils': 7.22.5
- dev: true
-
/@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.10):
resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
peerDependencies:
@@ -6302,15 +6317,6 @@ packages:
'@babel/core': 7.22.10
'@babel/helper-plugin-utils': 7.22.5
- /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.6):
- resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-plugin-utils': 7.22.5
- dev: true
-
/@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.10):
resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
peerDependencies:
@@ -6319,15 +6325,6 @@ packages:
'@babel/core': 7.22.10
'@babel/helper-plugin-utils': 7.22.5
- /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.6):
- resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-plugin-utils': 7.22.5
- dev: true
-
/@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.10):
resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==}
engines: {node: '>=6.9.0'}
@@ -6383,15 +6380,6 @@ packages:
'@babel/core': 7.22.10
'@babel/helper-plugin-utils': 7.22.5
- /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.6):
- resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-plugin-utils': 7.22.5
- dev: true
-
/@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.10):
resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
peerDependencies:
@@ -6400,15 +6388,6 @@ packages:
'@babel/core': 7.22.10
'@babel/helper-plugin-utils': 7.22.5
- /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.6):
- resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-plugin-utils': 7.22.5
- dev: true
-
/@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.22.10):
resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==}
engines: {node: '>=6.9.0'}
@@ -6427,15 +6406,6 @@ packages:
'@babel/core': 7.22.10
'@babel/helper-plugin-utils': 7.22.5
- /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.6):
- resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-plugin-utils': 7.22.5
- dev: true
-
/@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.10):
resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
peerDependencies:
@@ -6444,15 +6414,6 @@ packages:
'@babel/core': 7.22.10
'@babel/helper-plugin-utils': 7.22.5
- /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.6):
- resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-plugin-utils': 7.22.5
- dev: true
-
/@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.10):
resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
peerDependencies:
@@ -6461,15 +6422,6 @@ packages:
'@babel/core': 7.22.10
'@babel/helper-plugin-utils': 7.22.5
- /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.6):
- resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-plugin-utils': 7.22.5
- dev: true
-
/@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.10):
resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
peerDependencies:
@@ -6478,15 +6430,6 @@ packages:
'@babel/core': 7.22.10
'@babel/helper-plugin-utils': 7.22.5
- /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.6):
- resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-plugin-utils': 7.22.5
- dev: true
-
/@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.10):
resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
peerDependencies:
@@ -6495,15 +6438,6 @@ packages:
'@babel/core': 7.22.10
'@babel/helper-plugin-utils': 7.22.5
- /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.6):
- resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-plugin-utils': 7.22.5
- dev: true
-
/@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.10):
resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
peerDependencies:
@@ -6512,15 +6446,6 @@ packages:
'@babel/core': 7.22.10
'@babel/helper-plugin-utils': 7.22.5
- /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.6):
- resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-plugin-utils': 7.22.5
- dev: true
-
/@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.10):
resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
engines: {node: '>=6.9.0'}
@@ -6540,16 +6465,6 @@ packages:
'@babel/core': 7.22.10
'@babel/helper-plugin-utils': 7.22.5
- /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.6):
- resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-plugin-utils': 7.22.5
- dev: true
-
/@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.10):
resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==}
engines: {node: '>=6.9.0'}
@@ -6830,18 +6745,6 @@ packages:
'@babel/helper-plugin-utils': 7.22.5
'@babel/helper-simple-access': 7.22.5
- /@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.23.6):
- resolution: {integrity: sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6)
- '@babel/helper-plugin-utils': 7.22.5
- '@babel/helper-simple-access': 7.22.5
- dev: true
-
/@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.22.10):
resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==}
engines: {node: '>=6.9.0'}
@@ -7297,23 +7200,6 @@ packages:
'@babel/parser': 7.23.6
'@babel/types': 7.23.6
- /@babel/traverse@7.23.6:
- resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==}
- 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
-
/@babel/traverse@7.23.6(supports-color@5.5.0):
resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==}
engines: {node: '>=6.9.0'}
@@ -7330,7 +7216,6 @@ packages:
globals: 11.12.0
transitivePeerDependencies:
- supports-color
- dev: true
/@babel/types@7.23.6:
resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==}
@@ -7933,7 +7818,7 @@ packages:
resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
dependencies:
'@babel/helper-module-imports': 7.22.15
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@emotion/hash': 0.9.1
'@emotion/memoize': 0.8.1
'@emotion/serialize': 1.1.2
@@ -7986,7 +7871,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@emotion/babel-plugin': 11.11.0
'@emotion/cache': 11.11.0
'@emotion/serialize': 1.1.2
@@ -8810,7 +8695,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.1
@@ -8865,6 +8750,7 @@ packages:
resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==}
dependencies:
'@floating-ui/utils': 0.1.6
+ dev: true
/@floating-ui/dom@0.4.5:
resolution: {integrity: sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw==}
@@ -8876,6 +8762,7 @@ packages:
dependencies:
'@floating-ui/core': 1.5.2
'@floating-ui/utils': 0.1.6
+ dev: true
/@floating-ui/react-dom-interactions@0.3.1(@types/react@18.2.73)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-tP2KEh7EHJr5hokSBHcPGojb+AorDNUf0NYfZGg/M+FsMvCOOsSEeEF0O1NDfETIzDnpbHnCs0DuvCFhSMSStg==}
@@ -8905,6 +8792,7 @@ packages:
/@floating-ui/utils@0.1.6:
resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==}
+ dev: true
/@formatjs/ecma402-abstract@1.18.0:
resolution: {integrity: sha512-PEVLoa3zBevWSCZzPIM/lvPCi8P5l4G+NXQMc/CjEiaCWgyHieUoo0nM7Bs0n/NbuQ6JpXEolivQ9pKSBHaDlA==}
@@ -9172,7 +9060,7 @@ packages:
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -9199,7 +9087,7 @@ packages:
'@antfu/install-pkg': 0.1.1
'@antfu/utils': 0.7.7
'@iconify/types': 2.0.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
kolorist: 1.8.0
local-pkg: 0.4.3
transitivePeerDependencies:
@@ -9394,7 +9282,7 @@ packages:
peerDependencies:
react: 18.2.0
dependencies:
- '@babel/runtime': 7.23.2
+ '@babel/runtime': 7.24.1
hoist-non-react-statics: 3.3.2
react: 18.2.0
react-is: 16.13.1
@@ -9411,7 +9299,7 @@ packages:
/@manypkg/find-root@1.1.0:
resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@types/node': 20.12.2
find-up: 4.1.0
fs-extra: 8.1.0
@@ -9682,7 +9570,7 @@ packages:
async: 3.2.5
chalk: 3.0.0
dayjs: 1.8.36
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
eventemitter2: 5.0.1
fast-json-patch: 3.1.1
fclone: 1.0.11
@@ -9705,7 +9593,7 @@ packages:
'@opencensus/core': 0.0.9
'@opencensus/propagation-b3': 0.0.8
async: 2.6.4
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
eventemitter2: 6.4.9
require-in-the-middle: 5.2.0
semver: 7.5.4
@@ -9722,7 +9610,7 @@ packages:
dependencies:
async: 2.6.4
axios: 0.21.4(debug@4.3.4)
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
eventemitter2: 6.4.9
ws: 7.5.9
transitivePeerDependencies:
@@ -9734,7 +9622,7 @@ packages:
/@pm2/pm2-version-check@1.0.4:
resolution: {integrity: sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==}
dependencies:
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@@ -10193,23 +10081,6 @@ packages:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- /@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: 18.2.0
- react-dom: 18.2.0
- dependencies:
- '@babel/runtime': 7.24.0
- '@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)
- dev: false
-
/@rc-component/trigger@1.18.3(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-Ksr25pXreYe1gX6ayZ1jLrOrl9OAUHUqnuhEx6MeHnNa1zVM5Y2Aj3Q35UrER0ns8D2cJYtmJtVli+i+4eKrvA==}
engines: {node: '>=8.x'}
@@ -10217,15 +10088,14 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@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)
+ rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- dev: true
/@rc-component/trigger@2.0.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-niwKADPdY5dhdIblV6uwSayVivwo2uUISfJqri+/ovYQcH/omxDYBJKo755QKeoIIsWptxnRpgr7reEnNEZGFg==}
@@ -10246,13 +10116,13 @@ packages:
/@react-pdf/fns@2.2.1:
resolution: {integrity: sha512-s78aDg0vDYaijU5lLOCsUD+qinQbfOvcNeaoX9AiE7+kZzzCo6B/nX+l48cmt9OosJmvZvE9DWR9cLhrhOi2pA==}
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
dev: true
/@react-pdf/font@2.4.4:
resolution: {integrity: sha512-yjK5eSY+LcbxS0m+sOYln8GdgIbUgti4xjwf14kx8OSsOMJQJyHFALHMh2cLcKJR9yZeqVDo1FwCsY6gw1yCkg==}
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@react-pdf/types': 2.4.1
cross-fetch: 3.1.8
fontkit: 2.0.2
@@ -10264,7 +10134,7 @@ packages:
/@react-pdf/image@2.3.4:
resolution: {integrity: sha512-IE34l7gfTdaxXe3XR9240xMZsFdxF1myIwmEWK28XoeTaucUPAUyOiNcFSGRT59vNuZVBuakYz3BlGGrkvAPVQ==}
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@react-pdf/png-js': 2.3.1
cross-fetch: 3.1.8
jay-peg: 1.0.1
@@ -10275,7 +10145,7 @@ packages:
/@react-pdf/layout@3.11.2:
resolution: {integrity: sha512-5EiHJ+Eb0odqnkWll9pWbTp+dwH1QRm7mOXDMiklqIWK98eI7e3cEae5Dgr0TtdnB7KgPW9Tvul2CwRJTwq54A==}
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@react-pdf/fns': 2.2.1
'@react-pdf/image': 2.3.4
'@react-pdf/pdfkit': 3.1.6
@@ -10294,7 +10164,7 @@ packages:
/@react-pdf/pdfkit@3.1.6:
resolution: {integrity: sha512-U96VVhphniDBsLbmeJHgEml15nng8cr90mmEfPATh98gsqg6wev0avBr4k9XPjLdaN1f2xTXD4VdlaMYJZ+n7Q==}
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@react-pdf/png-js': 2.3.1
browserify-zlib: 0.2.0
crypto-js: 4.2.0
@@ -10316,7 +10186,7 @@ packages:
/@react-pdf/render@3.4.3:
resolution: {integrity: sha512-9LL059vfwrK1gA0uIA4utpQ/pUH9EW/yia4bb7pCoARs8IlupY5UP265jgax15ua0p+MdUwShZzQ9rilu7kGsw==}
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@react-pdf/fns': 2.2.1
'@react-pdf/primitives': 3.1.1
'@react-pdf/textkit': 4.4.1
@@ -10353,7 +10223,7 @@ packages:
/@react-pdf/stylesheet@4.2.4:
resolution: {integrity: sha512-CgRfDzeMtnV0GL7zSn381NubmgwqKhFKcK1YrWX3azl/KWVh52jjFd3HWi6dvcETNT862mjWz5MnExe4WOBJXA==}
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@react-pdf/fns': 2.2.1
'@react-pdf/types': 2.4.1
color-string: 1.9.1
@@ -10365,7 +10235,7 @@ packages:
/@react-pdf/textkit@4.4.1:
resolution: {integrity: sha512-Jl9wdTqIvJ5pX+vAGz0EOhP7ut5Two9H6CzTKo/YYPeD79cM2yTXF3JzTERBC28y7LR0Waq9D2LHQjI+b/EYUQ==}
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@react-pdf/fns': 2.2.1
bidi-js: 1.0.3
hyphen: 1.10.4
@@ -10384,6 +10254,7 @@ packages:
'@react-spring/shared': 9.6.1(react@18.2.0)
'@react-spring/types': 9.6.1
react: 18.2.0
+ dev: true
/@react-spring/core@9.6.1(react@18.2.0):
resolution: {integrity: sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==}
@@ -10395,9 +10266,11 @@ packages:
'@react-spring/shared': 9.6.1(react@18.2.0)
'@react-spring/types': 9.6.1
react: 18.2.0
+ dev: true
/@react-spring/rafz@9.6.1:
resolution: {integrity: sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==}
+ dev: true
/@react-spring/shared@9.6.1(react@18.2.0):
resolution: {integrity: sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==}
@@ -10407,9 +10280,11 @@ packages:
'@react-spring/rafz': 9.6.1
'@react-spring/types': 9.6.1
react: 18.2.0
+ dev: true
/@react-spring/types@9.6.1:
resolution: {integrity: sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==}
+ dev: true
/@react-spring/web@9.6.1(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-X2zR6q2Z+FjsWfGAmAXlQaoUHbPmfuCaXpuM6TcwXPpLE1ZD4A1eys/wpXboFQmDkjnrlTmKvpVna1MjWpZ5Hw==}
@@ -10423,6 +10298,7 @@ packages:
'@react-spring/types': 9.6.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ dev: true
/@reactflow/background@11.3.6(@types/react@18.2.73)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-06FPlSUOOMALEEs+2PqPAbpqmL7WDjrkbG2UsDr2d6mbcDDhHiV4tu9FYoz44SQvXo7ma9VRotlsaR4OiRcYsg==}
@@ -12423,7 +12299,7 @@ packages:
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3)
'@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3)
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
eslint: 8.57.0
graphemer: 1.4.0
ignore: 5.3.0
@@ -12499,7 +12375,7 @@ packages:
'@typescript-eslint/types': 6.14.0
'@typescript-eslint/typescript-estree': 6.14.0(typescript@5.4.3)
'@typescript-eslint/visitor-keys': 6.14.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
eslint: 8.57.0
typescript: 5.4.3
transitivePeerDependencies:
@@ -12552,7 +12428,7 @@ packages:
dependencies:
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3)
'@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3)
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
eslint: 8.57.0
tsutils: 3.21.0(typescript@5.4.3)
typescript: 5.4.3
@@ -12599,7 +12475,7 @@ packages:
dependencies:
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/visitor-keys': 5.62.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
semver: 7.6.0
@@ -12619,7 +12495,7 @@ packages:
dependencies:
'@typescript-eslint/types': 6.14.0
'@typescript-eslint/visitor-keys': 6.14.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
semver: 7.6.0
@@ -12743,31 +12619,6 @@ packages:
transitivePeerDependencies:
- supports-color
- /@umijs/bundler-vite@4.0.89(@types/node@20.12.2)(postcss@8.4.35):
- resolution: {integrity: sha512-4dfBmVK44AqsJm1+YhFijKXcrHoM26vO9Ju5Us4+J0Ca3rDUtWQZJ9xFEkqsNsf7AMaJ7B8zDd422sThvvSXGQ==}
- hasBin: true
- dependencies:
- '@svgr/core': 6.5.1
- '@umijs/bundler-utils': 4.0.89
- '@umijs/utils': 4.0.89
- '@vitejs/plugin-react': 4.0.0(vite@4.3.1)
- core-js: 3.28.0
- less: 4.1.3
- postcss-preset-env: 7.5.0(postcss@8.4.35)
- rollup-plugin-visualizer: 5.9.0
- systemjs: 6.14.2
- vite: 4.3.1(@types/node@20.12.2)(less@4.1.3)
- transitivePeerDependencies:
- - '@types/node'
- - postcss
- - rollup
- - sass
- - stylus
- - sugarss
- - supports-color
- - terser
- dev: true
-
/@umijs/bundler-vite@4.0.89(@types/node@20.12.2)(postcss@8.4.35)(sass@1.69.5):
resolution: {integrity: sha512-4dfBmVK44AqsJm1+YhFijKXcrHoM26vO9Ju5Us4+J0Ca3rDUtWQZJ9xFEkqsNsf7AMaJ7B8zDd422sThvvSXGQ==}
hasBin: true
@@ -12946,7 +12797,7 @@ packages:
/@umijs/history@5.3.1:
resolution: {integrity: sha512-/e0cEGrR2bIWQD7pRl3dl9dcyRGeC9hoW0OCvUTT/hjY0EfUrkd6G8ZanVghPMpDuY5usxq9GVcvrT8KNXLWvA==}
dependencies:
- '@babel/runtime': 7.23.2
+ '@babel/runtime': 7.24.1
query-string: 6.14.1
/@umijs/lint@4.0.89(eslint@8.55.0)(stylelint@14.16.1)(typescript@5.4.3):
@@ -13077,63 +12928,6 @@ packages:
- webpack-hot-middleware
- webpack-plugin-serve
- /@umijs/preset-umi@4.0.89(@types/node@20.12.2)(@types/react@18.2.73)(typescript@5.4.3)(webpack@5.91.0):
- resolution: {integrity: sha512-S0dn0e9C5eD2IX8bGGrNEDd0EaQVGuAwyJw2ruIU/FCO9B1HwdjCdRMuEADCBOuXMzBRt4+wKToFgId5tz3gAA==}
- dependencies:
- '@iconify/utils': 2.1.1
- '@svgr/core': 6.5.1
- '@umijs/ast': 4.0.89
- '@umijs/babel-preset-umi': 4.0.89
- '@umijs/bundler-esbuild': 4.0.89
- '@umijs/bundler-utils': 4.0.89
- '@umijs/bundler-vite': 4.0.89(@types/node@20.12.2)(postcss@8.4.35)
- '@umijs/bundler-webpack': 4.0.89(typescript@5.4.3)(webpack@5.91.0)
- '@umijs/core': 4.0.89
- '@umijs/did-you-know': 1.0.3
- '@umijs/es-module-parser': 0.0.7
- '@umijs/history': 5.3.1
- '@umijs/mfsu': 4.0.89
- '@umijs/plugin-run': 4.0.89
- '@umijs/renderer-react': 4.0.89(react-dom@18.2.0)(react@18.2.0)
- '@umijs/server': 4.0.89
- '@umijs/ui': 3.0.1
- '@umijs/utils': 4.0.89
- '@umijs/zod2ts': 4.0.89
- babel-plugin-dynamic-import-node: 2.3.3
- click-to-react-component: 1.1.0(@types/react@18.2.73)(react-dom@18.2.0)(react@18.2.0)
- core-js: 3.28.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.91.0)
- less-plugin-resolve: 1.0.2
- path-to-regexp: 1.7.0
- postcss: 8.4.35
- postcss-prefix-selector: 1.16.0(postcss@8.4.35)
- react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
- react-router: 6.21.1(react@18.2.0)
- react-router-dom: 6.21.0(react-dom@18.2.0)(react@18.2.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.91.0):
resolution: {integrity: sha512-RtFvB+/GmjRhpHcqNgnw8iWZpTlxOnmNxi8eDcecxMmxmSgeDj25LV0jr4Q6rOhv3GTIfVGBhkwz+khGT5tfmg==}
engines: {node: '>= 10.13'}
@@ -13215,22 +13009,6 @@ packages:
- '@babel/core'
- supports-color
- /@umijs/test@4.0.89(@babel/core@7.23.6):
- resolution: {integrity: sha512-eOVyk1zkCypEC0AtrnM1Kfp0+6DQK8FImXMTd3t3w8eSXTkh2v4Njy27qRC7soQeQhC/RieP3qpcs+k15rZYvg==}
- dependencies:
- '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.6)
- '@jest/types': 27.5.1
- '@umijs/bundler-utils': 4.0.89
- '@umijs/utils': 4.0.89
- babel-jest: 29.7.0(@babel/core@7.23.6)
- 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==}
@@ -13261,6 +13039,7 @@ packages:
/@use-gesture/core@10.3.0:
resolution: {integrity: sha512-rh+6MND31zfHcy9VU3dOZCqGY511lvGcfyJenN4cWZe0u1BH6brBpBddLVXhF2r4BMqWbvxfsbL7D287thJU2A==}
+ dev: true
/@use-gesture/react@10.3.0(react@18.2.0):
resolution: {integrity: sha512-3zc+Ve99z4usVP6l9knYVbVnZgfqhKah7sIG+PS2w+vpig2v2OLct05vs+ZXMzwxdNCMka8B+8WlOo0z6Pn6DA==}
@@ -13269,6 +13048,7 @@ packages:
dependencies:
'@use-gesture/core': 10.3.0
react: 18.2.0
+ dev: true
/@vercel/ncc@0.36.1:
resolution: {integrity: sha512-S4cL7Taa9yb5qbv+6wLgiKVZ03Qfkc4jGRuiUQMQ8HGBD5pcNRnHeYM33zBvJE4/zJGjJJ8GScB+WmTsn9mORw==}
@@ -13285,7 +13065,7 @@ packages:
'@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.22.10)
'@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.22.10)
react-refresh: 0.14.0
- vite: 4.3.1(@types/node@20.12.2)(less@4.1.3)
+ vite: 4.3.1(@types/node@20.12.2)(less@4.1.3)(sass@1.69.5)
transitivePeerDependencies:
- supports-color
@@ -13557,7 +13337,7 @@ packages:
resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
engines: {node: '>= 14'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@@ -13827,9 +13607,11 @@ packages:
/antd-mobile-icons@0.3.0:
resolution: {integrity: sha512-rqINQpJWZWrva9moCd1Ye695MZYWmqLPE+bY8d2xLRy7iSQwPsinCdZYjpUPp2zL/LnKYSyXxP2ut2A+DC+whQ==}
+ dev: true
/antd-mobile-v5-count@1.0.1:
resolution: {integrity: sha512-YGsiEDCPUDz3SzfXi6gLZn/HpeSMW+jgPc4qiYUr1fSopg3hkUie2TnooJdExgfiETHefH3Ggs58He0OVfegLA==}
+ dev: true
/antd-mobile@5.33.1(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-CVoLhVlqyoUYopv8ZqZW64m+c8Nyp1l+AxGsYV8cFhhshyXO4lNjWuLJ4xwL4+2VDy16TW21gCItboWLqWP7Mg==}
@@ -13856,6 +13638,7 @@ packages:
use-sync-external-store: 1.2.0(react@18.2.0)
transitivePeerDependencies:
- react-dom
+ dev: true
/antd-style@3.4.5(@types/react@18.2.73)(antd@5.16.0)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-6aC4P9XyuVy0O7eZ+HZXd8GbbFX9HgzsXsJ341ihJhgqrfsQZNx8lDQvS2kCV6ao99QqtyTDphK9gWOgV2bHEw==}
@@ -13908,14 +13691,14 @@ packages:
react-dom: 18.2.0
dependencies:
'@ant-design/colors': 6.0.0
- '@ant-design/cssinjs': 1.18.2(react-dom@18.2.0)(react@18.2.0)
+ '@ant-design/cssinjs': 1.19.0(react-dom@18.2.0)(react@18.2.0)
'@ant-design/icons': 5.3.6(react-dom@18.2.0)(react@18.2.0)
'@arvinxu/layout-kit': 1.4.0(@babel/core@7.22.10)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@ctrl/tinycolor': 3.6.1
antd: 5.16.0(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)
+ rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-colorful: 5.6.1(react-dom@18.2.0)(react@18.2.0)
react-dom: 18.2.0(react@18.2.0)
@@ -14525,24 +14308,6 @@ packages:
transitivePeerDependencies:
- supports-color
- /babel-jest@29.7.0(@babel/core@7.23.6):
- 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.6
- '@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.6)
- 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:
@@ -14573,7 +14338,7 @@ packages:
resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
engines: {node: '>=10', npm: '>=6'}
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
cosmiconfig: 7.1.0
resolve: 1.22.8
@@ -14647,26 +14412,6 @@ packages:
'@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.10)
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.10)
- /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.6):
- resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
- peerDependencies:
- '@babel/core': ^7.0.0
- dependencies:
- '@babel/core': 7.23.6
- '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6)
- '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.6)
- '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6)
- '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6)
- '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6)
- '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6)
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6)
- '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6)
- '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6)
- '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6)
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6)
- '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.6)
- dev: true
-
/babel-preset-jest@29.6.3(@babel/core@7.22.10):
resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -14677,17 +14422,6 @@ packages:
babel-plugin-jest-hoist: 29.6.3
babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.10)
- /babel-preset-jest@29.6.3(@babel/core@7.23.6):
- 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.6
- babel-plugin-jest-hoist: 29.6.3
- babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.6)
- dev: true
-
/babel-runtime@6.26.0:
resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==}
dependencies:
@@ -17084,17 +16818,6 @@ packages:
dependencies:
ms: 2.1.3
- /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
-
/debug@4.3.4(supports-color@5.5.0):
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'}
@@ -17526,7 +17249,7 @@ packages:
/dom-helpers@5.2.1:
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
csstype: 3.1.3
dev: true
@@ -18718,7 +18441,7 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@@ -19420,7 +19143,7 @@ packages:
debug:
optional: true
dependencies:
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
/follow-redirects@1.5.10:
resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==}
@@ -19846,7 +19569,7 @@ packages:
dependencies:
basic-ftp: 5.0.4
data-uri-to-buffer: 6.0.1
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
fs-extra: 8.1.0
transitivePeerDependencies:
- supports-color
@@ -20553,7 +20276,7 @@ packages:
/history@5.3.0:
resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==}
dependencies:
- '@babel/runtime': 7.23.2
+ '@babel/runtime': 7.24.1
/hmac-drbg@1.0.1:
resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==}
@@ -20791,7 +20514,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@@ -20832,7 +20555,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@@ -22454,7 +22177,7 @@ packages:
dependencies:
chalk: 5.3.0
commander: 11.0.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
execa: 7.2.0
lilconfig: 2.1.0
listr2: 6.6.1
@@ -24896,7 +24619,7 @@ packages:
dependencies:
'@tootallnate/quickjs-emscripten': 0.23.0
agent-base: 7.1.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
get-uri: 6.0.2
http-proxy-agent: 7.0.0
https-proxy-agent: 7.0.2
@@ -25505,7 +25228,7 @@ packages:
resolution: {integrity: sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==}
engines: {node: '>=5'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@@ -25516,7 +25239,7 @@ packages:
dependencies:
amp: 0.3.1
amp-message: 0.1.2
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
escape-string-regexp: 4.0.0
transitivePeerDependencies:
- supports-color
@@ -25541,7 +25264,7 @@ packages:
requiresBuild: true
dependencies:
async: 3.2.5
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
pidusage: 2.0.21
systeminformation: 5.21.20
tx2: 1.0.5
@@ -25567,7 +25290,7 @@ packages:
commander: 2.15.1
croner: 4.1.97
dayjs: 1.11.10
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
enquirer: 2.3.6
eventemitter2: 5.0.1
fclone: 1.0.11
@@ -26326,7 +26049,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
http-proxy-agent: 7.0.0
https-proxy-agent: 7.0.2
lru-cache: 7.18.3
@@ -26559,10 +26282,10 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
classnames: 2.5.1
dom-align: 1.12.4
- rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0)
+ rc-util: 5.39.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
@@ -26628,11 +26351,11 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@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)
+ rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: true
@@ -26657,10 +26380,10 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@rc-component/trigger': 1.18.3(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)
+ rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: true
@@ -26687,9 +26410,10 @@ packages:
dependencies:
'@babel/runtime': 7.24.1
async-validator: 4.2.5
- rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0)
+ rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ dev: true
/rc-field-form@1.44.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-el7w87fyDUsca63Y/s8qJcq9kNkf/J5h+iTdqG5WsSHLH0e6Usl7QuYSmSVzJMgtp40mOVZIY/W/QP9zwrp1FA==}
@@ -26767,12 +26491,12 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@rc-component/trigger': 1.18.3(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-util: 5.39.1(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: true
@@ -26931,13 +26655,13 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
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-trigger: 5.3.4(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)
+ rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0)
+ rc-virtual-list: 3.11.4(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: true
@@ -26949,12 +26673,12 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
- '@rc-component/trigger': 1.18.2(react-dom@18.2.0)(react@18.2.0)
+ '@babel/runtime': 7.24.1
+ '@rc-component/trigger': 1.18.3(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-util: 5.39.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)
@@ -27038,13 +26762,13 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
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)
+ rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: true
@@ -27143,11 +26867,11 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
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)
+ rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0)
+ rc-virtual-list: 3.11.4(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: true
@@ -27159,10 +26883,10 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
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-util: 5.39.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)
@@ -27189,11 +26913,11 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
classnames: 2.5.1
rc-align: 4.0.15(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)
+ rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: true
@@ -27239,10 +26963,10 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
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-util: 5.39.1(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
@@ -27355,7 +27079,7 @@ packages:
peerDependencies:
react: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
react: 18.2.0
dev: false
@@ -27379,7 +27103,7 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.23.2
+ '@babel/runtime': 7.24.1
invariant: 2.2.4
prop-types: 15.8.1
react: 18.2.0
@@ -27520,7 +27244,7 @@ packages:
react: 18.2.0
react-dom: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@popperjs/core': 2.11.8
'@restart/hooks': 0.4.15(react@18.2.0)
'@types/warning': 3.0.3
@@ -27584,7 +27308,7 @@ packages:
react-native:
optional: true
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@types/react-redux': 7.1.33
hoist-non-react-statics: 3.3.2
loose-envify: 1.4.0
@@ -27846,7 +27570,7 @@ packages:
/redux@4.2.1:
resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==}
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
/reflect-metadata@0.1.14:
resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==}
@@ -28159,7 +27883,7 @@ packages:
resolution: {integrity: sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==}
engines: {node: '>=6'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
module-details-from-path: 1.0.3
resolve: 1.22.8
transitivePeerDependencies:
@@ -28436,6 +28160,7 @@ packages:
/runes2@1.1.3:
resolution: {integrity: sha512-sJ/0iVFLne4f2S7cMB1OckBtC9lqkzP5a/wPnDIkbrWzgUsJ+JMQv6y7hk76U7zvbua+je5GltfpsZazUhG05w==}
+ dev: true
/rw@1.3.3:
resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==}
@@ -29001,7 +28726,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
socks: 2.7.1
transitivePeerDependencies:
- supports-color
@@ -29177,7 +28902,7 @@ packages:
/spdy-transport@3.0.0:
resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==}
dependencies:
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
detect-node: 2.1.0
hpack.js: 2.1.6
obuf: 1.1.2
@@ -29190,7 +28915,7 @@ packages:
resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==}
engines: {node: '>=6.0.0'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
handle-thing: 2.0.1
http-deceiver: 1.2.7
select-hose: 2.0.0
@@ -29323,6 +29048,7 @@ packages:
react: 18.2.0
dependencies:
react: 18.2.0
+ dev: true
/static-extend@0.1.2:
resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
@@ -29689,7 +29415,7 @@ packages:
colord: 2.9.3
cosmiconfig: 7.1.0
css-functions-list: 3.2.1
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
fast-glob: 3.3.2
fastest-levenshtein: 1.0.16
file-entry-cache: 6.0.1
@@ -30875,56 +30601,6 @@ packages:
- webpack-plugin-serve
dev: true
- /umi@4.0.89(@babel/core@7.23.6)(@types/node@20.12.2)(@types/react@18.2.73)(eslint@8.57.0)(prettier@3.2.5)(react-dom@18.2.0)(react@18.2.0)(stylelint@14.16.1)(typescript@5.4.3)(webpack@5.91.0):
- resolution: {integrity: sha512-bC62ctJ3wnymADnhE5nU7IZz4+XQ3MPWwoVW150OJazyAqEioZdjIZEBgB9pVfQEM819xMc6+eslnyuCNOQV+g==}
- engines: {node: '>=14'}
- hasBin: true
- dependencies:
- '@babel/runtime': 7.23.2
- '@umijs/bundler-utils': 4.0.89
- '@umijs/bundler-webpack': 4.0.89(typescript@5.4.3)(webpack@5.91.0)
- '@umijs/core': 4.0.89
- '@umijs/lint': 4.0.89(eslint@8.57.0)(stylelint@14.16.1)(typescript@5.4.3)
- '@umijs/preset-umi': 4.0.89(@types/node@20.12.2)(@types/react@18.2.73)(typescript@5.4.3)(webpack@5.91.0)
- '@umijs/renderer-react': 4.0.89(react-dom@18.2.0)(react@18.2.0)
- '@umijs/server': 4.0.89
- '@umijs/test': 4.0.89(@babel/core@7.23.6)
- '@umijs/utils': 4.0.89
- prettier-plugin-organize-imports: 3.2.4(prettier@3.2.5)(typescript@5.4.3)
- prettier-plugin-packagejson: 2.4.3(prettier@3.2.5)
- 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
-
/umzug@3.5.0:
resolution: {integrity: sha512-bL6JjH716l0kg7V2Acrw5UmUgeLxdAZv3drMhKrJCXxEfK/qyM+B5s3ai1BjG1NyEGeXTOkhFIUgkMFo6zqVBg==}
engines: {node: '>=12'}
@@ -30960,7 +30636,7 @@ packages:
peerDependencies:
react: 18.2.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@babel/runtime': 7.24.1
'@types/react': 18.2.73
invariant: 2.2.4
react: 18.2.0
@@ -31656,39 +31332,6 @@ packages:
vite: 5.1.5(@types/node@20.12.2)
dev: false
- /vite@4.3.1(@types/node@20.12.2)(less@4.1.3):
- resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==}
- engines: {node: ^14.18.0 || >=16.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^20.12.2
- 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.12.2
- esbuild: 0.17.19
- less: 4.1.3
- postcss: 8.4.35
- rollup: 3.29.4
- optionalDependencies:
- fsevents: 2.3.3
-
/vite@4.3.1(@types/node@20.12.2)(less@4.1.3)(sass@1.69.5):
resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==}
engines: {node: ^14.18.0 || >=16.0.0}