@rklink/components 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/index.cjs +91 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -5
- package/dist/index.d.ts +11 -5
- package/dist/index.js +93 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -471,6 +471,7 @@ function RKRemoteSelect({
|
|
|
471
471
|
|
|
472
472
|
// src/RKSchemaForm/index.tsx
|
|
473
473
|
var import_pro_components3 = require("@ant-design/pro-components");
|
|
474
|
+
var import_react3 = require("react");
|
|
474
475
|
|
|
475
476
|
// src/RKSchemaForm/fieldRegistry.tsx
|
|
476
477
|
var import_pro_components2 = require("@ant-design/pro-components");
|
|
@@ -568,13 +569,74 @@ function getColProps(columns) {
|
|
|
568
569
|
return { lg: 6, md: 8, sm: 12 };
|
|
569
570
|
}
|
|
570
571
|
}
|
|
572
|
+
function resolveDynamicValue(value, values) {
|
|
573
|
+
if (typeof value === "function") {
|
|
574
|
+
return value(values);
|
|
575
|
+
}
|
|
576
|
+
return value;
|
|
577
|
+
}
|
|
578
|
+
function getColumnKey(column, index) {
|
|
579
|
+
return column.key || `${String(column.dataIndex)}-${index}`;
|
|
580
|
+
}
|
|
581
|
+
function getDependencySnapshot(values) {
|
|
582
|
+
return JSON.stringify(values);
|
|
583
|
+
}
|
|
584
|
+
function resolveDependencyResetValue(resetValue, values, previousValues) {
|
|
585
|
+
if (typeof resetValue === "function") {
|
|
586
|
+
return resetValue(values, previousValues);
|
|
587
|
+
}
|
|
588
|
+
return resetValue;
|
|
589
|
+
}
|
|
590
|
+
function setFieldValue(form, name, value) {
|
|
591
|
+
const setField = form.setFieldValue;
|
|
592
|
+
if (setField) {
|
|
593
|
+
setField(name, value);
|
|
594
|
+
return;
|
|
595
|
+
}
|
|
596
|
+
form.setFields([{ name, value }]);
|
|
597
|
+
}
|
|
598
|
+
function RKSchemaDependencyField({
|
|
599
|
+
column,
|
|
600
|
+
values,
|
|
601
|
+
form,
|
|
602
|
+
renderField
|
|
603
|
+
}) {
|
|
604
|
+
const isFirstRenderRef = (0, import_react3.useRef)(true);
|
|
605
|
+
const previousValuesRef = (0, import_react3.useRef)();
|
|
606
|
+
const previousSnapshotRef = (0, import_react3.useRef)();
|
|
607
|
+
const dependencySnapshot = getDependencySnapshot(values);
|
|
608
|
+
const shouldResetOnDependencyChange = column.resetOnDependencyChange !== false;
|
|
609
|
+
(0, import_react3.useEffect)(() => {
|
|
610
|
+
if (previousSnapshotRef.current === dependencySnapshot) {
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
if (!shouldResetOnDependencyChange) {
|
|
614
|
+
previousValuesRef.current = values;
|
|
615
|
+
previousSnapshotRef.current = dependencySnapshot;
|
|
616
|
+
isFirstRenderRef.current = false;
|
|
617
|
+
return;
|
|
618
|
+
}
|
|
619
|
+
if (isFirstRenderRef.current) {
|
|
620
|
+
previousValuesRef.current = values;
|
|
621
|
+
previousSnapshotRef.current = dependencySnapshot;
|
|
622
|
+
isFirstRenderRef.current = false;
|
|
623
|
+
return;
|
|
624
|
+
}
|
|
625
|
+
setFieldValue(
|
|
626
|
+
form,
|
|
627
|
+
column.dataIndex,
|
|
628
|
+
resolveDependencyResetValue(column.dependencyResetValue, values, previousValuesRef.current)
|
|
629
|
+
);
|
|
630
|
+
previousValuesRef.current = values;
|
|
631
|
+
previousSnapshotRef.current = dependencySnapshot;
|
|
632
|
+
}, [column, dependencySnapshot, form, shouldResetOnDependencyChange, values]);
|
|
633
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children: renderField(values) });
|
|
634
|
+
}
|
|
571
635
|
function RKSchemaForm(props) {
|
|
572
636
|
const { columns, columnCount, fieldColProps, rowProps, ...formProps } = props;
|
|
573
637
|
const defaultColProps = fieldColProps || getColProps(columnCount);
|
|
574
|
-
|
|
575
|
-
if (column.hidden === true) return null;
|
|
638
|
+
const renderColumn = (column, index, values = {}) => {
|
|
576
639
|
const {
|
|
577
|
-
key,
|
|
578
640
|
title,
|
|
579
641
|
dataIndex,
|
|
580
642
|
valueType = "text",
|
|
@@ -590,22 +652,43 @@ function RKSchemaForm(props) {
|
|
|
590
652
|
} = column;
|
|
591
653
|
const Component = RKSchemaFieldRegistry[valueType];
|
|
592
654
|
if (!Component) return null;
|
|
655
|
+
const nextHidden = resolveDynamicValue(column.hidden, values);
|
|
656
|
+
if (nextHidden === true) return null;
|
|
657
|
+
const nextRequired = resolveDynamicValue(required, values);
|
|
658
|
+
const nextDisabled = resolveDynamicValue(disabled, values);
|
|
659
|
+
const nextReadonly = resolveDynamicValue(readonly, values);
|
|
660
|
+
const nextFieldProps = resolveDynamicValue(fieldProps, values) || void 0;
|
|
593
661
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
594
662
|
Component,
|
|
595
663
|
{
|
|
596
664
|
label: title,
|
|
597
665
|
name: dataIndex,
|
|
598
|
-
disabled,
|
|
599
|
-
readonly,
|
|
666
|
+
disabled: nextDisabled,
|
|
667
|
+
readonly: nextReadonly,
|
|
600
668
|
initialValue,
|
|
601
|
-
rules: [...
|
|
669
|
+
rules: [...nextRequired === true ? [requiredRule] : [], ...rules || []],
|
|
602
670
|
tooltip,
|
|
603
671
|
extra,
|
|
604
672
|
colProps: colProps || defaultColProps,
|
|
605
|
-
fieldProps
|
|
673
|
+
fieldProps: nextFieldProps
|
|
606
674
|
},
|
|
607
|
-
|
|
675
|
+
getColumnKey(column, index)
|
|
608
676
|
);
|
|
677
|
+
};
|
|
678
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_pro_components3.ProForm, { grid: true, rowProps: { gutter: 24, ...rowProps }, ...formProps, children: columns.map((column, index) => {
|
|
679
|
+
var _a;
|
|
680
|
+
if (!((_a = column.dependencies) == null ? void 0 : _a.length)) {
|
|
681
|
+
return renderColumn(column, index);
|
|
682
|
+
}
|
|
683
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_pro_components3.ProFormDependency, { name: column.dependencies, children: (values, form) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
684
|
+
RKSchemaDependencyField,
|
|
685
|
+
{
|
|
686
|
+
column,
|
|
687
|
+
values,
|
|
688
|
+
form,
|
|
689
|
+
renderField: (nextValues) => renderColumn(column, index, nextValues)
|
|
690
|
+
}
|
|
691
|
+
) }, getColumnKey(column, index));
|
|
609
692
|
}) });
|
|
610
693
|
}
|
|
611
694
|
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/RKConfirmAction/index.tsx","../src/RKRemoteSelect/index.tsx","../src/RKRemoteSelect/optionSourceRegistry.ts","../src/RKSchemaForm/index.tsx","../src/RKSchemaForm/fieldRegistry.tsx","../src/RKTable/index.tsx"],"sourcesContent":["export { default as RKConfirmAction, useRKConfirmRequest } from './RKConfirmAction';\nexport type {\n RKConfirmActionProps,\n UseRKConfirmRequestOptions,\n} from './RKConfirmAction';\n\nexport { default as RKRemoteSelect } from './RKRemoteSelect';\nexport type {\n RKRemoteSelectOption,\n RKRemoteSelectOptionSource,\n RKRemoteSelectOptionSourceDescriptor,\n RKRemoteSelectOptionSourceType,\n RKRemoteSelectOptionValue,\n RKRemoteSelectProps,\n RKRemoteSelectRequestApi,\n} from './RKRemoteSelect';\nexport {\n enumOptionSourceOptions,\n registerRKRemoteSelectEnumOptionSource,\n registerRKRemoteSelectRemoteOptionSource,\n remoteOptionSourceOptions,\n resolveRKRemoteSelectOptions,\n} from './RKRemoteSelect';\n\nexport { default as RKSchemaForm } from './RKSchemaForm';\nexport type {\n RKSchemaBuiltinValueType,\n RKSchemaFieldProps,\n RKSchemaFormColumn,\n RKSchemaFormProps,\n RKSchemaFormValueType,\n RKSchemaOption,\n RKSchemaOptionSource,\n RKSchemaOptionSourceDescriptor,\n RKSchemaOptionSourceType,\n RKSchemaOptionValue,\n} from './RKSchemaForm';\nexport {\n registerRKSchemaEnumOptionSource,\n registerRKSchemaField,\n registerRKSchemaRemoteOptionSource,\n resolveRKSchemaOptions,\n} from './RKSchemaForm';\n\nexport { default as RKTable } from './RKTable';\nexport type {\n RKTableProps,\n RKTableRequestAdapter,\n RKTableRequestApi,\n RKTableRequestParams,\n RKTableResponse,\n} from './RKTable';\n","import { useRequest } from 'ahooks';\nimport type { ButtonProps, ModalFuncProps } from 'antd';\nimport { Button, message, Modal } from 'antd';\nimport type { Key, ReactNode } from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\ntype MaybePromise<T> = T | Promise<T>;\n\ntype RKConfirmConfig<Params extends unknown[]> =\n | ModalFuncProps\n | ((...params: Params) => ModalFuncProps | false)\n | false;\n\ntype RKSuccessMessage<Result, Params extends unknown[]> =\n | ReactNode\n | ((result: Result, ...params: Params) => ReactNode);\n\ntype RKFailureMessage<Result, Params extends unknown[]> =\n | ReactNode\n | ((result: Result, ...params: Params) => ReactNode);\n\ntype RKErrorMessage<Params extends unknown[]> =\n | ReactNode\n | ((error: unknown, ...params: Params) => ReactNode);\n\nconst DEFAULT_FETCH_KEY = 'RK_CONFIRM_DEFAULT';\n\nexport interface UseRKConfirmRequestOptions<Result, Params extends unknown[]> {\n request: (...params: Params) => Promise<Result>;\n confirm?: RKConfirmConfig<Params>;\n successMessage?: RKSuccessMessage<Result, Params>;\n failureMessage?: RKFailureMessage<Result, Params>;\n errorMessage?: RKErrorMessage<Params>;\n successCode?: number;\n isSuccess?: (result: Result) => boolean;\n getLoadingKey?: (...params: Params) => Key | undefined;\n debounceInterval?: number;\n throttleInterval?: number;\n onSuccess?: (result: Result, ...params: Params) => MaybePromise<void>;\n onFailure?: (result: Result, ...params: Params) => MaybePromise<void>;\n onError?: (error: unknown, ...params: Params) => MaybePromise<void>;\n onCancel?: (...params: Params) => MaybePromise<void>;\n}\n\nexport interface RKConfirmActionProps<Result>\n extends Omit<ButtonProps, 'loading' | 'onClick' | 'onError'>,\n Omit<UseRKConfirmRequestOptions<Result, []>, 'getLoadingKey'> {\n stopPropagation?: boolean;\n}\n\nfunction isResponseSuccess<Result>(result: Result, successCode: number) {\n if (result && typeof result === 'object' && 'code' in result) {\n return (result as { code?: unknown }).code === successCode;\n }\n\n return true;\n}\n\nfunction resolveConfirmConfig<Params extends unknown[]>(\n confirm: RKConfirmConfig<Params> | undefined,\n params: Params,\n) {\n if (typeof confirm === 'function') {\n return confirm(...params);\n }\n\n return confirm;\n}\n\nfunction resolveMessage<Result, Params extends unknown[]>(\n nextMessage:\n | RKSuccessMessage<Result, Params>\n | RKFailureMessage<Result, Params>\n | undefined,\n result: Result,\n params: Params,\n) {\n if (typeof nextMessage === 'function') {\n return nextMessage(result, ...params);\n }\n\n return nextMessage;\n}\n\nfunction resolveErrorMessage<Params extends unknown[]>(\n errorMessage: RKErrorMessage<Params> | undefined,\n error: unknown,\n params: Params,\n) {\n if (typeof errorMessage === 'function') {\n return errorMessage(error, ...params);\n }\n\n return errorMessage;\n}\n\nexport function useRKConfirmRequest<Result = unknown, Params extends unknown[] = []>(\n options: UseRKConfirmRequestOptions<Result, Params>,\n) {\n const {\n request,\n confirm,\n successMessage,\n failureMessage,\n errorMessage,\n successCode = 200,\n isSuccess,\n getLoadingKey,\n debounceInterval,\n throttleInterval,\n onSuccess,\n onFailure,\n onError,\n onCancel,\n } = options;\n const confirmOpenRef = useRef(false);\n const [loadingKeys, setLoadingKeys] = useState<Record<string, boolean>>({});\n const { runAsync: requestRun, loading } = useRequest<Result, Params>(request, {\n manual: true,\n debounceWait: debounceInterval,\n throttleWait: throttleInterval,\n });\n\n const setKeyLoading = useCallback((params: Params, nextLoading: boolean) => {\n const key = getLoadingKey?.(...params);\n const loadingKey = key === undefined ? DEFAULT_FETCH_KEY : String(key);\n\n setLoadingKeys((prev) => ({\n ...prev,\n [loadingKey]: nextLoading,\n }));\n }, [getLoadingKey]);\n\n const executeRequest = useCallback(\n async (...params: Params) => {\n setKeyLoading(params, true);\n\n try {\n const result = await requestRun(...params);\n const success = isSuccess ? isSuccess(result) : isResponseSuccess(result, successCode);\n\n if (success) {\n const nextSuccessMessage = resolveMessage(successMessage, result, params);\n\n if (nextSuccessMessage) {\n message.success(nextSuccessMessage);\n }\n\n await onSuccess?.(result, ...params);\n } else {\n const nextFailureMessage = resolveMessage(failureMessage, result, params);\n\n if (nextFailureMessage) {\n message.error(nextFailureMessage);\n }\n\n await onFailure?.(result, ...params);\n }\n\n return result;\n } catch (error) {\n const nextErrorMessage = resolveErrorMessage(errorMessage, error, params);\n\n if (nextErrorMessage) {\n message.error(nextErrorMessage);\n }\n\n await onError?.(error, ...params);\n throw error;\n } finally {\n setKeyLoading(params, false);\n }\n },\n [\n errorMessage,\n failureMessage,\n isSuccess,\n onError,\n onFailure,\n onSuccess,\n requestRun,\n setKeyLoading,\n successCode,\n successMessage,\n ],\n );\n\n const run = useCallback(\n (...params: Params) => {\n const confirmConfig = resolveConfirmConfig(confirm, params);\n\n if (!confirmConfig) {\n void executeRequest(...params);\n return;\n }\n\n if (confirmOpenRef.current) return;\n\n confirmOpenRef.current = true;\n\n const { onOk, onCancel: onModalCancel, afterClose, ...restConfirmConfig } = confirmConfig;\n\n Modal.confirm({\n okText: '确认',\n cancelText: '取消',\n ...restConfirmConfig,\n onOk: async (...args) => {\n const shouldContinue = await onOk?.(...args);\n\n if (shouldContinue === false) return false;\n\n return executeRequest(...params);\n },\n onCancel: async (...args) => {\n const shouldCancel = await onModalCancel?.(...args);\n\n await onCancel?.(...params);\n\n return shouldCancel;\n },\n afterClose: () => {\n confirmOpenRef.current = false;\n afterClose?.();\n },\n });\n },\n [confirm, executeRequest, onCancel],\n );\n\n const isLoading = useCallback(\n (key: Key | undefined) => {\n if (key === undefined) return loading || !!loadingKeys[DEFAULT_FETCH_KEY];\n\n return !!loadingKeys[String(key)];\n },\n [loading, loadingKeys],\n );\n\n return useMemo(\n () => ({\n run,\n runRequest: executeRequest,\n loading,\n loadingKeys,\n isLoading,\n }),\n [executeRequest, isLoading, loading, loadingKeys, run],\n );\n}\n\nconst RKConfirmAction = <Result = unknown,>({\n request,\n confirm,\n successMessage,\n failureMessage,\n errorMessage,\n successCode,\n isSuccess,\n debounceInterval,\n throttleInterval,\n onSuccess,\n onFailure,\n onError,\n onCancel,\n stopPropagation = true,\n children,\n ...buttonProps\n}: RKConfirmActionProps<Result>) => {\n const { run, loading } = useRKConfirmRequest<Result, []>({\n request,\n confirm,\n successMessage,\n failureMessage,\n errorMessage,\n successCode,\n isSuccess,\n debounceInterval,\n throttleInterval,\n onSuccess,\n onFailure,\n onError,\n onCancel,\n });\n\n return (\n <Button\n type=\"link\"\n {...buttonProps}\n loading={loading}\n onClick={(event) => {\n if (stopPropagation) {\n event.stopPropagation();\n }\n\n run();\n }}\n >\n {children}\n </Button>\n );\n};\n\nexport default RKConfirmAction;\n","import { ProFormSelect } from '@ant-design/pro-components';\nimport type { ProFormSelectProps } from '@ant-design/pro-components';\nimport type { SelectProps } from 'antd';\nimport { useMemo } from 'react';\nimport { resolveRKRemoteSelectOptions } from './optionSourceRegistry';\nimport type { RKRemoteSelectOption, RKRemoteSelectOptionSource } from './type';\n\ntype RKRemoteSelectRecord = Record<string, any>;\ntype RKRemoteSelectParams = Record<string, any>;\ntype RKRemoteSelectRequestResult<OptionItem extends RKRemoteSelectRecord> =\n | OptionItem[]\n | {\n data?: OptionItem[] | { records?: OptionItem[]; list?: OptionItem[] };\n records?: OptionItem[];\n list?: OptionItem[];\n [key: string]: unknown;\n };\ntype RKRemoteSelectDisabled<OptionItem extends RKRemoteSelectRecord> =\n | boolean\n | ((item: OptionItem) => boolean);\n\nexport type RKRemoteSelectRequestApi<\n OptionItem extends RKRemoteSelectRecord = RKRemoteSelectRecord,\n Params extends RKRemoteSelectParams = RKRemoteSelectParams,\n> = (params: Params) => Promise<RKRemoteSelectRequestResult<OptionItem>>;\n\nexport interface RKRemoteSelectProps<\n ValueType = unknown,\n OptionItem extends RKRemoteSelectRecord = RKRemoteSelectRecord,\n Params extends RKRemoteSelectParams = RKRemoteSelectParams,\n> extends Omit<ProFormSelectProps<ValueType>, 'disabled' | 'options' | 'request'> {\n options?: ProFormSelectProps<ValueType>['options'] | OptionItem[];\n optionSource?: RKRemoteSelectOptionSource;\n requestApi?: RKRemoteSelectRequestApi<OptionItem, Params>;\n request?: ProFormSelectProps<ValueType>['request'];\n labelField?: string;\n valueField?: string;\n childrenField?: string;\n disabled?: RKRemoteSelectDisabled<OptionItem>;\n searchKey?: string;\n}\n\nfunction isDynamicOptionSource(optionSource?: RKRemoteSelectOptionSource) {\n return optionSource?.type === 'enum' || optionSource?.type === 'remote';\n}\n\nfunction resolveParams(\n optionSource: RKRemoteSelectOptionSource | undefined,\n params: RKRemoteSelectProps['params'],\n) {\n if (!isDynamicOptionSource(optionSource)) return params;\n if (typeof params === 'function') return params;\n\n return {\n ...params,\n ...optionSource,\n };\n}\n\nfunction isRecord(value: unknown): value is RKRemoteSelectRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isOptionValue(value: unknown): value is RKRemoteSelectOption['value'] {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\n\nfunction normalizeOptionLabel(value: unknown): RKRemoteSelectOption['label'] | undefined {\n if (typeof value === 'string' || typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'boolean') {\n return String(value);\n }\n\n return undefined;\n}\n\nfunction resolveRequestApiItems<OptionItem extends RKRemoteSelectRecord>(\n result: RKRemoteSelectRequestResult<OptionItem>,\n): OptionItem[] {\n if (Array.isArray(result)) return result;\n\n if (Array.isArray(result.data)) return result.data;\n\n if (isRecord(result.data)) {\n if (Array.isArray(result.data.records)) return result.data.records;\n if (Array.isArray(result.data.list)) return result.data.list;\n }\n\n if (Array.isArray(result.records)) return result.records;\n if (Array.isArray(result.list)) return result.list;\n\n return [];\n}\n\nfunction normalizeSearchParams<Params extends RKRemoteSelectParams>(\n params: Params,\n searchKey = 'keyWords',\n) {\n if (searchKey === 'keyWords') return params;\n\n const { keyWords, ...restParams } = params;\n\n return {\n ...restParams,\n ...(keyWords === undefined ? {} : { [searchKey]: keyWords }),\n } as Params;\n}\n\nfunction normalizeOptions<OptionItem extends RKRemoteSelectRecord>(\n items: OptionItem[],\n config: {\n labelField?: string;\n valueField?: string;\n childrenField?: string;\n disabled?: RKRemoteSelectDisabled<OptionItem>;\n },\n): RKRemoteSelectOption[] {\n const labelField = config.labelField || 'label';\n const valueField = config.valueField || 'value';\n const childrenField = config.childrenField || 'children';\n\n return items\n .map((item): RKRemoteSelectOption | undefined => {\n const label = normalizeOptionLabel(item[labelField]);\n const value = item[valueField];\n const children = item[childrenField];\n\n if (label === undefined || !isOptionValue(value)) return undefined;\n\n const optionDisabled =\n typeof config.disabled === 'function'\n ? config.disabled(item)\n : typeof item.disabled === 'boolean'\n ? item.disabled\n : undefined;\n\n return {\n ...item,\n label,\n value,\n disabled: optionDisabled,\n children: Array.isArray(children)\n ? normalizeOptions(\n children.filter(isRecord) as OptionItem[],\n config,\n )\n : undefined,\n };\n })\n .filter((item): item is RKRemoteSelectOption => item !== undefined);\n}\n\nfunction shouldNormalizeOptions<OptionItem extends RKRemoteSelectRecord>(\n options: RKRemoteSelectProps<unknown, OptionItem>['options'],\n config: {\n labelField?: string;\n valueField?: string;\n childrenField?: string;\n disabled?: RKRemoteSelectDisabled<OptionItem>;\n },\n) {\n return (\n Array.isArray(options) &&\n (options as unknown[]).every(isRecord) &&\n (!!config.labelField ||\n !!config.valueField ||\n !!config.childrenField ||\n typeof config.disabled === 'function')\n );\n}\n\nexport default function RKRemoteSelect<\n ValueType = unknown,\n OptionItem extends RKRemoteSelectRecord = RKRemoteSelectRecord,\n Params extends RKRemoteSelectParams = RKRemoteSelectParams,\n>({\n optionSource,\n options,\n requestApi,\n request,\n params,\n fieldProps,\n showSearch = true,\n labelField,\n valueField,\n childrenField,\n disabled,\n searchKey = 'keyWords',\n ...restProps\n}: RKRemoteSelectProps<ValueType, OptionItem, Params>) {\n const selectDisabled = typeof disabled === 'boolean' ? disabled : undefined;\n const optionConfig = useMemo(\n () => ({\n labelField,\n valueField,\n childrenField,\n disabled,\n }),\n [childrenField, disabled, labelField, valueField],\n );\n const selectOptions = useMemo(() => {\n if (!shouldNormalizeOptions(options, optionConfig)) {\n return options as ProFormSelectProps<ValueType>['options'];\n }\n\n return normalizeOptions(\n options as OptionItem[],\n optionConfig,\n ) as ProFormSelectProps<ValueType>['options'];\n }, [optionConfig, options]);\n\n const selectRequest = useMemo(() => {\n if (isDynamicOptionSource(optionSource)) {\n return async () => resolveRKRemoteSelectOptions(optionSource);\n }\n\n if (requestApi) {\n return async (requestParams: Params) => {\n const result = await requestApi(normalizeSearchParams(requestParams, searchKey));\n return normalizeOptions(resolveRequestApiItems(result), optionConfig);\n };\n }\n\n return request;\n }, [optionConfig, optionSource, request, requestApi, searchKey]);\n const requestParams = useMemo(() => resolveParams(optionSource, params), [optionSource, params]);\n\n return (\n <ProFormSelect\n {...restProps}\n disabled={selectDisabled}\n showSearch={showSearch}\n options={selectOptions}\n request={selectRequest}\n params={requestParams}\n fieldProps={\n {\n optionFilterProp: 'label',\n filterOption: true,\n ...fieldProps,\n } as SelectProps<ValueType>\n }\n />\n );\n}\n\nexport {\n enumOptionSourceOptions,\n registerRKRemoteSelectEnumOptionSource,\n registerRKRemoteSelectRemoteOptionSource,\n remoteOptionSourceOptions,\n resolveRKRemoteSelectOptions,\n} from './optionSourceRegistry';\nexport type { RKRemoteSelectOptionSourceDescriptor } from './optionSourceRegistry';\nexport type {\n RKRemoteSelectOption,\n RKRemoteSelectOptionSource,\n RKRemoteSelectOptionSourceType,\n RKRemoteSelectOptionValue,\n} from './type';\n","import type {\n RKRemoteSelectOption,\n RKRemoteSelectOptionSource,\n RKRemoteSelectOptionSourceType,\n RKRemoteSelectOptionValue,\n} from './type';\n\ninterface OptionFieldDefaults {\n labelField: string;\n valueField: string;\n childrenField?: string;\n}\n\nexport interface RKRemoteSelectOptionSourceDescriptor {\n label: string;\n value: string;\n description: string;\n sourceType: RKRemoteSelectOptionSourceType;\n}\n\ninterface RemoteOptionSourceResult {\n items: Array<Record<string, unknown>>;\n defaults?: OptionFieldDefaults;\n}\n\ntype RemoteOptionSourceLoader = () => Promise<RemoteOptionSourceResult>;\n\nconst enumOptionSourceRegistry: Record<string, RKRemoteSelectOption[]> = {};\nconst remoteOptionSourceRegistry: Record<string, RemoteOptionSourceLoader> = {};\n\nexport const enumOptionSourceOptions: RKRemoteSelectOptionSourceDescriptor[] = [];\nexport const remoteOptionSourceOptions: RKRemoteSelectOptionSourceDescriptor[] = [];\n\nfunction upsertOptionSourceDescriptor(\n list: RKRemoteSelectOptionSourceDescriptor[],\n descriptor: RKRemoteSelectOptionSourceDescriptor,\n) {\n const index = list.findIndex((item) => item.value === descriptor.value);\n\n if (index === -1) {\n list.push(descriptor);\n return;\n }\n\n list[index] = descriptor;\n}\n\nexport function registerRKRemoteSelectEnumOptionSource(\n key: string,\n options: RKRemoteSelectOption[],\n descriptor?: Omit<RKRemoteSelectOptionSourceDescriptor, 'value' | 'sourceType'>,\n) {\n enumOptionSourceRegistry[key] = options;\n upsertOptionSourceDescriptor(enumOptionSourceOptions, {\n label: descriptor?.label || key,\n value: key,\n description: descriptor?.description || '',\n sourceType: 'enum',\n });\n}\n\nexport function registerRKRemoteSelectRemoteOptionSource(\n key: string,\n loader: RemoteOptionSourceLoader,\n descriptor?: Omit<RKRemoteSelectOptionSourceDescriptor, 'value' | 'sourceType'>,\n) {\n remoteOptionSourceRegistry[key] = loader;\n upsertOptionSourceDescriptor(remoteOptionSourceOptions, {\n label: descriptor?.label || key,\n value: key,\n description: descriptor?.description || '',\n sourceType: 'remote',\n });\n}\n\nfunction normalizeOptionLabel(value: unknown): RKRemoteSelectOption['label'] | undefined {\n if (typeof value === 'string' || typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'boolean') {\n return String(value);\n }\n\n return undefined;\n}\n\nfunction isOptionValue(value: unknown): value is RKRemoteSelectOptionValue {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\n\nfunction normalizeOptionItems(\n items: Array<Record<string, unknown>>,\n defaults?: OptionFieldDefaults,\n source?: RKRemoteSelectOptionSource,\n): RKRemoteSelectOption[] {\n const labelField = source?.labelField || defaults?.labelField || 'label';\n const valueField = source?.valueField || defaults?.valueField || 'value';\n const childrenField = source?.childrenField || defaults?.childrenField || 'children';\n\n return items\n .map((item): RKRemoteSelectOption | undefined => {\n const label = normalizeOptionLabel(item[labelField]);\n const value = item[valueField];\n const children = item[childrenField];\n\n if (label === undefined || !isOptionValue(value)) {\n return undefined;\n }\n\n return {\n label,\n value,\n disabled: typeof item.disabled === 'boolean' ? item.disabled : undefined,\n children: Array.isArray(children)\n ? normalizeOptionItems(\n children.filter(\n (child): child is Record<string, unknown> =>\n typeof child === 'object' && child !== null,\n ),\n defaults,\n source,\n )\n : undefined,\n };\n })\n .filter((item): item is RKRemoteSelectOption => item !== undefined);\n}\n\nexport async function resolveRKRemoteSelectOptions(\n source?: RKRemoteSelectOptionSource,\n): Promise<RKRemoteSelectOption[]> {\n if (!source?.type || !source.key) {\n return [];\n }\n\n if (source.type === 'enum') {\n return enumOptionSourceRegistry[source.key] || [];\n }\n\n if (source.type === 'remote') {\n const loader = remoteOptionSourceRegistry[source.key];\n if (!loader) return [];\n\n const result = await loader();\n\n return normalizeOptionItems(result.items, result.defaults, source);\n }\n\n return [];\n}\n","import { ProForm } from '@ant-design/pro-components';\nimport type { ColProps } from 'antd';\nimport type { Rule } from 'antd/es/form';\nimport { RKSchemaFieldRegistry } from './fieldRegistry';\nimport type { RKSchemaFormProps } from './type';\n\nconst requiredRule: Rule = {\n required: true,\n message: '此项为必填项',\n};\n\nfunction getColProps(columns?: number): ColProps {\n switch (columns) {\n case 1:\n return { span: 24 };\n case 2:\n return { lg: 12, md: 12, sm: 24 };\n case 3:\n return { lg: 8, md: 12, sm: 24 };\n case 6:\n return { lg: 4, md: 6, sm: 12 };\n case 4:\n default:\n return { lg: 6, md: 8, sm: 12 };\n }\n}\n\nexport default function RKSchemaForm<T = Record<string, unknown>>(props: RKSchemaFormProps<T>) {\n const { columns, columnCount, fieldColProps, rowProps, ...formProps } = props;\n const defaultColProps = fieldColProps || getColProps(columnCount);\n\n return (\n <ProForm grid rowProps={{ gutter: 24, ...rowProps }} {...formProps}>\n {columns.map((column, index) => {\n if (column.hidden === true) return null;\n\n const {\n key,\n title,\n dataIndex,\n valueType = 'text',\n required,\n disabled,\n readonly,\n initialValue,\n rules,\n tooltip,\n extra,\n colProps,\n fieldProps,\n } = column;\n const Component = RKSchemaFieldRegistry[valueType];\n if (!Component) return null;\n\n return (\n <Component\n key={key || `${String(dataIndex)}-${index}`}\n label={title}\n name={dataIndex}\n disabled={disabled}\n readonly={readonly}\n initialValue={initialValue}\n rules={[...(required === true ? [requiredRule] : []), ...(rules || [])]}\n tooltip={tooltip}\n extra={extra}\n colProps={colProps || defaultColProps}\n fieldProps={fieldProps}\n />\n );\n })}\n </ProForm>\n );\n}\n\nexport * from './fieldRegistry';\nexport * from './optionSourceRegistry';\nexport * from './type';\n","import {\n ProFormCascader,\n ProFormCheckbox,\n ProFormColorPicker,\n ProFormDateMonthRangePicker,\n ProFormDatePicker,\n ProFormDateQuarterRangePicker,\n ProFormDateRangePicker,\n ProFormDateTimePicker,\n ProFormDateTimeRangePicker,\n ProFormDateWeekRangePicker,\n ProFormDateYearRangePicker,\n ProFormDigit,\n ProFormDigitRange,\n ProFormMoney,\n ProFormRadio,\n ProFormRate,\n ProFormSegmented,\n ProFormSelect,\n ProFormSlider,\n ProFormSwitch,\n ProFormText,\n ProFormTextArea,\n ProFormTimePicker,\n ProFormTreeSelect,\n ProFormUploadButton,\n ProFormUploadDragger,\n type ProFormItemProps,\n} from '@ant-design/pro-components';\nimport type { ComponentType } from 'react';\nimport { resolveRKSchemaOptions } from './optionSourceRegistry';\nimport type { RKSchemaFieldProps, RKSchemaOption, RKSchemaOptionSource } from './type';\n\nexport type RKSchemaFieldRenderer = ComponentType<ProFormItemProps & Record<string, unknown>>;\n\nfunction isFieldComponentProps(value: unknown): value is RKSchemaFieldProps {\n return typeof value === 'object' && value !== null;\n}\n\nfunction isDynamicOptionSource(source?: RKSchemaOptionSource) {\n return ['enum', 'remote'].includes(source?.type || '');\n}\n\nfunction getStaticOptions(fieldProps: RKSchemaFieldProps, optionFieldName: 'options' | 'treeData') {\n if (optionFieldName === 'treeData') {\n return fieldProps.treeData || fieldProps.options;\n }\n\n return fieldProps.options;\n}\n\nfunction asField(component: unknown): RKSchemaFieldRenderer {\n return component as RKSchemaFieldRenderer;\n}\n\nfunction createOptionField(\n Component: RKSchemaFieldRenderer,\n options: { optionFieldName?: 'options' | 'treeData' } = {},\n): RKSchemaFieldRenderer {\n const { optionFieldName = 'options' } = options;\n\n return function RKSchemaOptionsField(props: ProFormItemProps & Record<string, unknown>) {\n const fieldProps = isFieldComponentProps(props.fieldProps) ? props.fieldProps : {};\n const { options: staticOptions, treeData, optionSource, ...restFieldProps } = fieldProps;\n const shouldLoadDynamic = isDynamicOptionSource(optionSource);\n const resolvedStaticOptions =\n getStaticOptions({ ...fieldProps, options: staticOptions, treeData }, optionFieldName) || [];\n const request = shouldLoadDynamic\n ? async (): Promise<RKSchemaOption[]> => resolveRKSchemaOptions(optionSource)\n : undefined;\n\n return (\n <Component\n {...props}\n request={request || props.request}\n params={shouldLoadDynamic ? optionSource : props.params}\n fieldProps={{\n ...restFieldProps,\n [optionFieldName]: shouldLoadDynamic ? undefined : resolvedStaticOptions,\n }}\n />\n );\n };\n}\n\nexport const RKSchemaFieldRegistry: Record<string, RKSchemaFieldRenderer> = {\n text: asField(ProFormText),\n password: asField(ProFormText.Password),\n textarea: asField(ProFormTextArea),\n digit: asField(ProFormDigit),\n digitRange: asField(ProFormDigitRange),\n select: createOptionField(asField(ProFormSelect)),\n treeSelect: createOptionField(asField(ProFormTreeSelect), { optionFieldName: 'treeData' }),\n cascader: createOptionField(asField(ProFormCascader)),\n radio: createOptionField(asField(ProFormRadio.Group)),\n checkbox: asField(ProFormCheckbox),\n checkboxGroup: createOptionField(asField(ProFormCheckbox.Group)),\n switch: asField(ProFormSwitch),\n slider: asField(ProFormSlider),\n rate: asField(ProFormRate),\n segmented: createOptionField(asField(ProFormSegmented)),\n color: asField(ProFormColorPicker),\n date: asField(ProFormDatePicker),\n dateRange: asField(ProFormDateRangePicker),\n dateTime: asField(ProFormDateTimePicker),\n dateTimeRange: asField(ProFormDateTimeRangePicker),\n dateWeekRange: asField(ProFormDateWeekRangePicker),\n dateMonthRange: asField(ProFormDateMonthRangePicker),\n dateQuarterRange: asField(ProFormDateQuarterRangePicker),\n dateYearRange: asField(ProFormDateYearRangePicker),\n time: asField(ProFormTimePicker),\n timeRange: asField(ProFormTimePicker.RangePicker),\n money: asField(ProFormMoney),\n uploadButton: asField(ProFormUploadButton),\n uploadDragger: asField(ProFormUploadDragger),\n};\n\nexport function registerRKSchemaField(valueType: string, renderer: RKSchemaFieldRenderer) {\n RKSchemaFieldRegistry[valueType] = renderer;\n}\n","import { ProTable } from '@ant-design/pro-components';\nimport type { ProTableProps } from '@ant-design/pro-components';\nimport type { SortOrder } from 'antd/es/table/interface';\n\nexport type RKTableRequestParams = {\n current?: number;\n pageSize?: number;\n [key: string]: any;\n};\n\nexport type RKTableResponse<DataSource extends Record<string, any>> = {\n code?: number;\n success?: boolean;\n data?:\n | DataSource[]\n | {\n records?: DataSource[];\n list?: DataSource[];\n total?: number;\n [key: string]: unknown;\n };\n records?: DataSource[];\n list?: DataSource[];\n total?: number;\n [key: string]: unknown;\n};\n\nexport type RKTableRequestApi<\n DataSource extends Record<string, any>,\n RequestParams,\n> = (data: RequestParams) => Promise<RKTableResponse<DataSource>>;\n\nexport type RKTableRequestAdapter<DataSource extends Record<string, any>> = (\n response: RKTableResponse<DataSource>,\n) => {\n data: DataSource[];\n success: boolean;\n total?: number;\n};\n\nexport type RKTableProps<\n DataSource extends Record<string, any>,\n Params extends Record<string, any> = Record<string, any>,\n ValueType = 'text',\n RequestParams = RKTableRequestParams,\n> = ProTableProps<DataSource, Params, ValueType> & {\n requestApi?: RKTableRequestApi<DataSource, RequestParams>;\n requestAdapter?: RKTableRequestAdapter<DataSource>;\n requestParamsFormatter?: (\n params: Params & RKTableRequestParams,\n sort: Record<string, SortOrder>,\n filter: Record<string, (string | number)[] | null>,\n ) => RequestParams;\n};\n\nfunction resolveRecords<DataSource extends Record<string, any>>(\n response: RKTableResponse<DataSource>,\n) {\n if (Array.isArray(response.data)) return response.data;\n\n if (response.data && typeof response.data === 'object') {\n if (Array.isArray(response.data.records)) return response.data.records;\n if (Array.isArray(response.data.list)) return response.data.list;\n }\n\n if (Array.isArray(response.records)) return response.records;\n if (Array.isArray(response.list)) return response.list;\n\n return [];\n}\n\nfunction resolveTotal<DataSource extends Record<string, any>>(\n response: RKTableResponse<DataSource>,\n) {\n if (typeof response.total === 'number') return response.total;\n\n if (response.data && !Array.isArray(response.data) && typeof response.data.total === 'number') {\n return response.data.total;\n }\n\n return resolveRecords(response).length;\n}\n\nfunction defaultRequestAdapter<DataSource extends Record<string, any>>(\n response: RKTableResponse<DataSource>,\n) {\n const success =\n typeof response.success === 'boolean'\n ? response.success\n : response.code === undefined || response.code === 200;\n\n return {\n data: resolveRecords(response),\n success,\n total: resolveTotal(response),\n };\n}\n\nconst RKTable = <\n DataSource extends Record<string, any>,\n Params extends Record<string, any> = Record<string, any>,\n ValueType = 'text',\n RequestParams = RKTableRequestParams,\n>({\n request,\n requestApi,\n requestAdapter = defaultRequestAdapter,\n requestParamsFormatter,\n search,\n options,\n pagination,\n scroll,\n form,\n rowKey,\n tableAlertRender,\n ...restProps\n}: RKTableProps<DataSource, Params, ValueType, RequestParams>) => {\n const tableSearch =\n search === false\n ? false\n : {\n filterType: 'query' as const,\n defaultCollapsed: false,\n ...(typeof search === 'object' ? search : {}),\n };\n const tableOptions =\n options === false\n ? false\n : {\n reload: true,\n density: false,\n setting: false,\n ...(typeof options === 'object' ? options : {}),\n };\n const tablePagination =\n pagination === false\n ? false\n : {\n defaultPageSize: 20,\n showSizeChanger: true,\n disabled: false,\n ...(typeof pagination === 'object' ? pagination : {}),\n };\n const tableForm = {\n syncToUrl: true,\n syncToInitialValues: false,\n ...(typeof form === 'object' ? form : {}),\n };\n const tableScroll = {\n x: 'max-content',\n ...(typeof scroll === 'object' ? scroll : {}),\n };\n const tableRequest = requestApi\n ? async (\n params: Params & RKTableRequestParams,\n sort: Record<string, SortOrder>,\n filter: Record<string, (string | number)[] | null>,\n ) => {\n const nextParams = requestParamsFormatter\n ? requestParamsFormatter(params, sort, filter)\n : (params as unknown as RequestParams);\n const response = await requestApi(nextParams);\n\n return requestAdapter(response);\n }\n : request;\n\n return (\n <ProTable<DataSource, Params, ValueType>\n rowKey={rowKey || 'id'}\n tableAlertRender={tableAlertRender ?? false}\n options={tableOptions}\n pagination={tablePagination}\n scroll={tableScroll}\n form={tableForm}\n {...restProps}\n search={tableSearch}\n request={tableRequest}\n />\n );\n};\n\nexport default RKTable;\n"],"mappings":"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","names":["import_react","import_jsx_runtime","isOptionValue","normalizeOptionLabel","requestParams","import_pro_components","import_pro_components","import_jsx_runtime","isDynamicOptionSource","import_jsx_runtime","import_pro_components","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/RKConfirmAction/index.tsx","../src/RKRemoteSelect/index.tsx","../src/RKRemoteSelect/optionSourceRegistry.ts","../src/RKSchemaForm/index.tsx","../src/RKSchemaForm/fieldRegistry.tsx","../src/RKTable/index.tsx"],"sourcesContent":["export { default as RKConfirmAction, useRKConfirmRequest } from './RKConfirmAction';\nexport type {\n RKConfirmActionProps,\n UseRKConfirmRequestOptions,\n} from './RKConfirmAction';\n\nexport { default as RKRemoteSelect } from './RKRemoteSelect';\nexport type {\n RKRemoteSelectOption,\n RKRemoteSelectOptionSource,\n RKRemoteSelectOptionSourceDescriptor,\n RKRemoteSelectOptionSourceType,\n RKRemoteSelectOptionValue,\n RKRemoteSelectProps,\n RKRemoteSelectRequestApi,\n} from './RKRemoteSelect';\nexport {\n enumOptionSourceOptions,\n registerRKRemoteSelectEnumOptionSource,\n registerRKRemoteSelectRemoteOptionSource,\n remoteOptionSourceOptions,\n resolveRKRemoteSelectOptions,\n} from './RKRemoteSelect';\n\nexport { default as RKSchemaForm } from './RKSchemaForm';\nexport type {\n RKSchemaBuiltinValueType,\n RKSchemaFieldProps,\n RKSchemaFormColumn,\n RKSchemaFormProps,\n RKSchemaFormValueType,\n RKSchemaOption,\n RKSchemaOptionSource,\n RKSchemaOptionSourceDescriptor,\n RKSchemaOptionSourceType,\n RKSchemaOptionValue,\n} from './RKSchemaForm';\nexport {\n registerRKSchemaEnumOptionSource,\n registerRKSchemaField,\n registerRKSchemaRemoteOptionSource,\n resolveRKSchemaOptions,\n} from './RKSchemaForm';\n\nexport { default as RKTable } from './RKTable';\nexport type {\n RKTableProps,\n RKTableRequestAdapter,\n RKTableRequestApi,\n RKTableRequestParams,\n RKTableResponse,\n} from './RKTable';\n","import { useRequest } from 'ahooks';\nimport type { ButtonProps, ModalFuncProps } from 'antd';\nimport { Button, message, Modal } from 'antd';\nimport type { Key, ReactNode } from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\ntype MaybePromise<T> = T | Promise<T>;\n\ntype RKConfirmConfig<Params extends unknown[]> =\n | ModalFuncProps\n | ((...params: Params) => ModalFuncProps | false)\n | false;\n\ntype RKSuccessMessage<Result, Params extends unknown[]> =\n | ReactNode\n | ((result: Result, ...params: Params) => ReactNode);\n\ntype RKFailureMessage<Result, Params extends unknown[]> =\n | ReactNode\n | ((result: Result, ...params: Params) => ReactNode);\n\ntype RKErrorMessage<Params extends unknown[]> =\n | ReactNode\n | ((error: unknown, ...params: Params) => ReactNode);\n\nconst DEFAULT_FETCH_KEY = 'RK_CONFIRM_DEFAULT';\n\nexport interface UseRKConfirmRequestOptions<Result, Params extends unknown[]> {\n request: (...params: Params) => Promise<Result>;\n confirm?: RKConfirmConfig<Params>;\n successMessage?: RKSuccessMessage<Result, Params>;\n failureMessage?: RKFailureMessage<Result, Params>;\n errorMessage?: RKErrorMessage<Params>;\n successCode?: number;\n isSuccess?: (result: Result) => boolean;\n getLoadingKey?: (...params: Params) => Key | undefined;\n debounceInterval?: number;\n throttleInterval?: number;\n onSuccess?: (result: Result, ...params: Params) => MaybePromise<void>;\n onFailure?: (result: Result, ...params: Params) => MaybePromise<void>;\n onError?: (error: unknown, ...params: Params) => MaybePromise<void>;\n onCancel?: (...params: Params) => MaybePromise<void>;\n}\n\nexport interface RKConfirmActionProps<Result>\n extends Omit<ButtonProps, 'loading' | 'onClick' | 'onError'>,\n Omit<UseRKConfirmRequestOptions<Result, []>, 'getLoadingKey'> {\n stopPropagation?: boolean;\n}\n\nfunction isResponseSuccess<Result>(result: Result, successCode: number) {\n if (result && typeof result === 'object' && 'code' in result) {\n return (result as { code?: unknown }).code === successCode;\n }\n\n return true;\n}\n\nfunction resolveConfirmConfig<Params extends unknown[]>(\n confirm: RKConfirmConfig<Params> | undefined,\n params: Params,\n) {\n if (typeof confirm === 'function') {\n return confirm(...params);\n }\n\n return confirm;\n}\n\nfunction resolveMessage<Result, Params extends unknown[]>(\n nextMessage:\n | RKSuccessMessage<Result, Params>\n | RKFailureMessage<Result, Params>\n | undefined,\n result: Result,\n params: Params,\n) {\n if (typeof nextMessage === 'function') {\n return nextMessage(result, ...params);\n }\n\n return nextMessage;\n}\n\nfunction resolveErrorMessage<Params extends unknown[]>(\n errorMessage: RKErrorMessage<Params> | undefined,\n error: unknown,\n params: Params,\n) {\n if (typeof errorMessage === 'function') {\n return errorMessage(error, ...params);\n }\n\n return errorMessage;\n}\n\nexport function useRKConfirmRequest<Result = unknown, Params extends unknown[] = []>(\n options: UseRKConfirmRequestOptions<Result, Params>,\n) {\n const {\n request,\n confirm,\n successMessage,\n failureMessage,\n errorMessage,\n successCode = 200,\n isSuccess,\n getLoadingKey,\n debounceInterval,\n throttleInterval,\n onSuccess,\n onFailure,\n onError,\n onCancel,\n } = options;\n const confirmOpenRef = useRef(false);\n const [loadingKeys, setLoadingKeys] = useState<Record<string, boolean>>({});\n const { runAsync: requestRun, loading } = useRequest<Result, Params>(request, {\n manual: true,\n debounceWait: debounceInterval,\n throttleWait: throttleInterval,\n });\n\n const setKeyLoading = useCallback((params: Params, nextLoading: boolean) => {\n const key = getLoadingKey?.(...params);\n const loadingKey = key === undefined ? DEFAULT_FETCH_KEY : String(key);\n\n setLoadingKeys((prev) => ({\n ...prev,\n [loadingKey]: nextLoading,\n }));\n }, [getLoadingKey]);\n\n const executeRequest = useCallback(\n async (...params: Params) => {\n setKeyLoading(params, true);\n\n try {\n const result = await requestRun(...params);\n const success = isSuccess ? isSuccess(result) : isResponseSuccess(result, successCode);\n\n if (success) {\n const nextSuccessMessage = resolveMessage(successMessage, result, params);\n\n if (nextSuccessMessage) {\n message.success(nextSuccessMessage);\n }\n\n await onSuccess?.(result, ...params);\n } else {\n const nextFailureMessage = resolveMessage(failureMessage, result, params);\n\n if (nextFailureMessage) {\n message.error(nextFailureMessage);\n }\n\n await onFailure?.(result, ...params);\n }\n\n return result;\n } catch (error) {\n const nextErrorMessage = resolveErrorMessage(errorMessage, error, params);\n\n if (nextErrorMessage) {\n message.error(nextErrorMessage);\n }\n\n await onError?.(error, ...params);\n throw error;\n } finally {\n setKeyLoading(params, false);\n }\n },\n [\n errorMessage,\n failureMessage,\n isSuccess,\n onError,\n onFailure,\n onSuccess,\n requestRun,\n setKeyLoading,\n successCode,\n successMessage,\n ],\n );\n\n const run = useCallback(\n (...params: Params) => {\n const confirmConfig = resolveConfirmConfig(confirm, params);\n\n if (!confirmConfig) {\n void executeRequest(...params);\n return;\n }\n\n if (confirmOpenRef.current) return;\n\n confirmOpenRef.current = true;\n\n const { onOk, onCancel: onModalCancel, afterClose, ...restConfirmConfig } = confirmConfig;\n\n Modal.confirm({\n okText: '确认',\n cancelText: '取消',\n ...restConfirmConfig,\n onOk: async (...args) => {\n const shouldContinue = await onOk?.(...args);\n\n if (shouldContinue === false) return false;\n\n return executeRequest(...params);\n },\n onCancel: async (...args) => {\n const shouldCancel = await onModalCancel?.(...args);\n\n await onCancel?.(...params);\n\n return shouldCancel;\n },\n afterClose: () => {\n confirmOpenRef.current = false;\n afterClose?.();\n },\n });\n },\n [confirm, executeRequest, onCancel],\n );\n\n const isLoading = useCallback(\n (key: Key | undefined) => {\n if (key === undefined) return loading || !!loadingKeys[DEFAULT_FETCH_KEY];\n\n return !!loadingKeys[String(key)];\n },\n [loading, loadingKeys],\n );\n\n return useMemo(\n () => ({\n run,\n runRequest: executeRequest,\n loading,\n loadingKeys,\n isLoading,\n }),\n [executeRequest, isLoading, loading, loadingKeys, run],\n );\n}\n\nconst RKConfirmAction = <Result = unknown,>({\n request,\n confirm,\n successMessage,\n failureMessage,\n errorMessage,\n successCode,\n isSuccess,\n debounceInterval,\n throttleInterval,\n onSuccess,\n onFailure,\n onError,\n onCancel,\n stopPropagation = true,\n children,\n ...buttonProps\n}: RKConfirmActionProps<Result>) => {\n const { run, loading } = useRKConfirmRequest<Result, []>({\n request,\n confirm,\n successMessage,\n failureMessage,\n errorMessage,\n successCode,\n isSuccess,\n debounceInterval,\n throttleInterval,\n onSuccess,\n onFailure,\n onError,\n onCancel,\n });\n\n return (\n <Button\n type=\"link\"\n {...buttonProps}\n loading={loading}\n onClick={(event) => {\n if (stopPropagation) {\n event.stopPropagation();\n }\n\n run();\n }}\n >\n {children}\n </Button>\n );\n};\n\nexport default RKConfirmAction;\n","import { ProFormSelect } from '@ant-design/pro-components';\nimport type { ProFormSelectProps } from '@ant-design/pro-components';\nimport type { SelectProps } from 'antd';\nimport { useMemo } from 'react';\nimport { resolveRKRemoteSelectOptions } from './optionSourceRegistry';\nimport type { RKRemoteSelectOption, RKRemoteSelectOptionSource } from './type';\n\ntype RKRemoteSelectRecord = Record<string, any>;\ntype RKRemoteSelectParams = Record<string, any>;\ntype RKRemoteSelectRequestResult<OptionItem extends RKRemoteSelectRecord> =\n | OptionItem[]\n | {\n data?: OptionItem[] | { records?: OptionItem[]; list?: OptionItem[] };\n records?: OptionItem[];\n list?: OptionItem[];\n [key: string]: unknown;\n };\ntype RKRemoteSelectDisabled<OptionItem extends RKRemoteSelectRecord> =\n | boolean\n | ((item: OptionItem) => boolean);\n\nexport type RKRemoteSelectRequestApi<\n OptionItem extends RKRemoteSelectRecord = RKRemoteSelectRecord,\n Params extends RKRemoteSelectParams = RKRemoteSelectParams,\n> = (params: Params) => Promise<RKRemoteSelectRequestResult<OptionItem>>;\n\nexport interface RKRemoteSelectProps<\n ValueType = unknown,\n OptionItem extends RKRemoteSelectRecord = RKRemoteSelectRecord,\n Params extends RKRemoteSelectParams = RKRemoteSelectParams,\n> extends Omit<ProFormSelectProps<ValueType>, 'disabled' | 'options' | 'request'> {\n options?: ProFormSelectProps<ValueType>['options'] | OptionItem[];\n optionSource?: RKRemoteSelectOptionSource;\n requestApi?: RKRemoteSelectRequestApi<OptionItem, Params>;\n request?: ProFormSelectProps<ValueType>['request'];\n labelField?: string;\n valueField?: string;\n childrenField?: string;\n disabled?: RKRemoteSelectDisabled<OptionItem>;\n searchKey?: string;\n}\n\nfunction isDynamicOptionSource(optionSource?: RKRemoteSelectOptionSource) {\n return optionSource?.type === 'enum' || optionSource?.type === 'remote';\n}\n\nfunction resolveParams(\n optionSource: RKRemoteSelectOptionSource | undefined,\n params: RKRemoteSelectProps['params'],\n) {\n if (!isDynamicOptionSource(optionSource)) return params;\n if (typeof params === 'function') return params;\n\n return {\n ...params,\n ...optionSource,\n };\n}\n\nfunction isRecord(value: unknown): value is RKRemoteSelectRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isOptionValue(value: unknown): value is RKRemoteSelectOption['value'] {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\n\nfunction normalizeOptionLabel(value: unknown): RKRemoteSelectOption['label'] | undefined {\n if (typeof value === 'string' || typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'boolean') {\n return String(value);\n }\n\n return undefined;\n}\n\nfunction resolveRequestApiItems<OptionItem extends RKRemoteSelectRecord>(\n result: RKRemoteSelectRequestResult<OptionItem>,\n): OptionItem[] {\n if (Array.isArray(result)) return result;\n\n if (Array.isArray(result.data)) return result.data;\n\n if (isRecord(result.data)) {\n if (Array.isArray(result.data.records)) return result.data.records;\n if (Array.isArray(result.data.list)) return result.data.list;\n }\n\n if (Array.isArray(result.records)) return result.records;\n if (Array.isArray(result.list)) return result.list;\n\n return [];\n}\n\nfunction normalizeSearchParams<Params extends RKRemoteSelectParams>(\n params: Params,\n searchKey = 'keyWords',\n) {\n if (searchKey === 'keyWords') return params;\n\n const { keyWords, ...restParams } = params;\n\n return {\n ...restParams,\n ...(keyWords === undefined ? {} : { [searchKey]: keyWords }),\n } as Params;\n}\n\nfunction normalizeOptions<OptionItem extends RKRemoteSelectRecord>(\n items: OptionItem[],\n config: {\n labelField?: string;\n valueField?: string;\n childrenField?: string;\n disabled?: RKRemoteSelectDisabled<OptionItem>;\n },\n): RKRemoteSelectOption[] {\n const labelField = config.labelField || 'label';\n const valueField = config.valueField || 'value';\n const childrenField = config.childrenField || 'children';\n\n return items\n .map((item): RKRemoteSelectOption | undefined => {\n const label = normalizeOptionLabel(item[labelField]);\n const value = item[valueField];\n const children = item[childrenField];\n\n if (label === undefined || !isOptionValue(value)) return undefined;\n\n const optionDisabled =\n typeof config.disabled === 'function'\n ? config.disabled(item)\n : typeof item.disabled === 'boolean'\n ? item.disabled\n : undefined;\n\n return {\n ...item,\n label,\n value,\n disabled: optionDisabled,\n children: Array.isArray(children)\n ? normalizeOptions(\n children.filter(isRecord) as OptionItem[],\n config,\n )\n : undefined,\n };\n })\n .filter((item): item is RKRemoteSelectOption => item !== undefined);\n}\n\nfunction shouldNormalizeOptions<OptionItem extends RKRemoteSelectRecord>(\n options: RKRemoteSelectProps<unknown, OptionItem>['options'],\n config: {\n labelField?: string;\n valueField?: string;\n childrenField?: string;\n disabled?: RKRemoteSelectDisabled<OptionItem>;\n },\n) {\n return (\n Array.isArray(options) &&\n (options as unknown[]).every(isRecord) &&\n (!!config.labelField ||\n !!config.valueField ||\n !!config.childrenField ||\n typeof config.disabled === 'function')\n );\n}\n\nexport default function RKRemoteSelect<\n ValueType = unknown,\n OptionItem extends RKRemoteSelectRecord = RKRemoteSelectRecord,\n Params extends RKRemoteSelectParams = RKRemoteSelectParams,\n>({\n optionSource,\n options,\n requestApi,\n request,\n params,\n fieldProps,\n showSearch = true,\n labelField,\n valueField,\n childrenField,\n disabled,\n searchKey = 'keyWords',\n ...restProps\n}: RKRemoteSelectProps<ValueType, OptionItem, Params>) {\n const selectDisabled = typeof disabled === 'boolean' ? disabled : undefined;\n const optionConfig = useMemo(\n () => ({\n labelField,\n valueField,\n childrenField,\n disabled,\n }),\n [childrenField, disabled, labelField, valueField],\n );\n const selectOptions = useMemo(() => {\n if (!shouldNormalizeOptions(options, optionConfig)) {\n return options as ProFormSelectProps<ValueType>['options'];\n }\n\n return normalizeOptions(\n options as OptionItem[],\n optionConfig,\n ) as ProFormSelectProps<ValueType>['options'];\n }, [optionConfig, options]);\n\n const selectRequest = useMemo(() => {\n if (isDynamicOptionSource(optionSource)) {\n return async () => resolveRKRemoteSelectOptions(optionSource);\n }\n\n if (requestApi) {\n return async (requestParams: Params) => {\n const result = await requestApi(normalizeSearchParams(requestParams, searchKey));\n return normalizeOptions(resolveRequestApiItems(result), optionConfig);\n };\n }\n\n return request;\n }, [optionConfig, optionSource, request, requestApi, searchKey]);\n const requestParams = useMemo(() => resolveParams(optionSource, params), [optionSource, params]);\n\n return (\n <ProFormSelect\n {...restProps}\n disabled={selectDisabled}\n showSearch={showSearch}\n options={selectOptions}\n request={selectRequest}\n params={requestParams}\n fieldProps={\n {\n optionFilterProp: 'label',\n filterOption: true,\n ...fieldProps,\n } as SelectProps<ValueType>\n }\n />\n );\n}\n\nexport {\n enumOptionSourceOptions,\n registerRKRemoteSelectEnumOptionSource,\n registerRKRemoteSelectRemoteOptionSource,\n remoteOptionSourceOptions,\n resolveRKRemoteSelectOptions,\n} from './optionSourceRegistry';\nexport type { RKRemoteSelectOptionSourceDescriptor } from './optionSourceRegistry';\nexport type {\n RKRemoteSelectOption,\n RKRemoteSelectOptionSource,\n RKRemoteSelectOptionSourceType,\n RKRemoteSelectOptionValue,\n} from './type';\n","import type {\n RKRemoteSelectOption,\n RKRemoteSelectOptionSource,\n RKRemoteSelectOptionSourceType,\n RKRemoteSelectOptionValue,\n} from './type';\n\ninterface OptionFieldDefaults {\n labelField: string;\n valueField: string;\n childrenField?: string;\n}\n\nexport interface RKRemoteSelectOptionSourceDescriptor {\n label: string;\n value: string;\n description: string;\n sourceType: RKRemoteSelectOptionSourceType;\n}\n\ninterface RemoteOptionSourceResult {\n items: Array<Record<string, unknown>>;\n defaults?: OptionFieldDefaults;\n}\n\ntype RemoteOptionSourceLoader = () => Promise<RemoteOptionSourceResult>;\n\nconst enumOptionSourceRegistry: Record<string, RKRemoteSelectOption[]> = {};\nconst remoteOptionSourceRegistry: Record<string, RemoteOptionSourceLoader> = {};\n\nexport const enumOptionSourceOptions: RKRemoteSelectOptionSourceDescriptor[] = [];\nexport const remoteOptionSourceOptions: RKRemoteSelectOptionSourceDescriptor[] = [];\n\nfunction upsertOptionSourceDescriptor(\n list: RKRemoteSelectOptionSourceDescriptor[],\n descriptor: RKRemoteSelectOptionSourceDescriptor,\n) {\n const index = list.findIndex((item) => item.value === descriptor.value);\n\n if (index === -1) {\n list.push(descriptor);\n return;\n }\n\n list[index] = descriptor;\n}\n\nexport function registerRKRemoteSelectEnumOptionSource(\n key: string,\n options: RKRemoteSelectOption[],\n descriptor?: Omit<RKRemoteSelectOptionSourceDescriptor, 'value' | 'sourceType'>,\n) {\n enumOptionSourceRegistry[key] = options;\n upsertOptionSourceDescriptor(enumOptionSourceOptions, {\n label: descriptor?.label || key,\n value: key,\n description: descriptor?.description || '',\n sourceType: 'enum',\n });\n}\n\nexport function registerRKRemoteSelectRemoteOptionSource(\n key: string,\n loader: RemoteOptionSourceLoader,\n descriptor?: Omit<RKRemoteSelectOptionSourceDescriptor, 'value' | 'sourceType'>,\n) {\n remoteOptionSourceRegistry[key] = loader;\n upsertOptionSourceDescriptor(remoteOptionSourceOptions, {\n label: descriptor?.label || key,\n value: key,\n description: descriptor?.description || '',\n sourceType: 'remote',\n });\n}\n\nfunction normalizeOptionLabel(value: unknown): RKRemoteSelectOption['label'] | undefined {\n if (typeof value === 'string' || typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'boolean') {\n return String(value);\n }\n\n return undefined;\n}\n\nfunction isOptionValue(value: unknown): value is RKRemoteSelectOptionValue {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\n\nfunction normalizeOptionItems(\n items: Array<Record<string, unknown>>,\n defaults?: OptionFieldDefaults,\n source?: RKRemoteSelectOptionSource,\n): RKRemoteSelectOption[] {\n const labelField = source?.labelField || defaults?.labelField || 'label';\n const valueField = source?.valueField || defaults?.valueField || 'value';\n const childrenField = source?.childrenField || defaults?.childrenField || 'children';\n\n return items\n .map((item): RKRemoteSelectOption | undefined => {\n const label = normalizeOptionLabel(item[labelField]);\n const value = item[valueField];\n const children = item[childrenField];\n\n if (label === undefined || !isOptionValue(value)) {\n return undefined;\n }\n\n return {\n label,\n value,\n disabled: typeof item.disabled === 'boolean' ? item.disabled : undefined,\n children: Array.isArray(children)\n ? normalizeOptionItems(\n children.filter(\n (child): child is Record<string, unknown> =>\n typeof child === 'object' && child !== null,\n ),\n defaults,\n source,\n )\n : undefined,\n };\n })\n .filter((item): item is RKRemoteSelectOption => item !== undefined);\n}\n\nexport async function resolveRKRemoteSelectOptions(\n source?: RKRemoteSelectOptionSource,\n): Promise<RKRemoteSelectOption[]> {\n if (!source?.type || !source.key) {\n return [];\n }\n\n if (source.type === 'enum') {\n return enumOptionSourceRegistry[source.key] || [];\n }\n\n if (source.type === 'remote') {\n const loader = remoteOptionSourceRegistry[source.key];\n if (!loader) return [];\n\n const result = await loader();\n\n return normalizeOptionItems(result.items, result.defaults, source);\n }\n\n return [];\n}\n","import { ProForm, ProFormDependency } from '@ant-design/pro-components';\nimport type { ProFormInstance } from '@ant-design/pro-components';\nimport type { ColProps } from 'antd';\nimport type { Rule } from 'antd/es/form';\nimport type { NamePath } from 'antd/es/form/interface';\nimport { useEffect, useRef } from 'react';\nimport { RKSchemaFieldRegistry } from './fieldRegistry';\nimport type {\n RKSchemaDependencyResetValue,\n RKSchemaDynamicValue,\n RKSchemaFieldProps,\n RKSchemaFormColumn,\n RKSchemaFormProps,\n RKSchemaFormValues,\n} from './type';\n\nconst requiredRule: Rule = {\n required: true,\n message: '此项为必填项',\n};\n\ninterface RKSchemaDependencyFieldProps {\n column: RKSchemaFormColumn;\n values: RKSchemaFormValues;\n form: ProFormInstance;\n renderField: (values: RKSchemaFormValues) => React.ReactNode;\n}\n\nfunction getColProps(columns?: number): ColProps {\n switch (columns) {\n case 1:\n return { span: 24 };\n case 2:\n return { lg: 12, md: 12, sm: 24 };\n case 3:\n return { lg: 8, md: 12, sm: 24 };\n case 6:\n return { lg: 4, md: 6, sm: 12 };\n case 4:\n default:\n return { lg: 6, md: 8, sm: 12 };\n }\n}\n\nfunction resolveDynamicValue<T>(\n value: RKSchemaDynamicValue<T> | undefined,\n values: RKSchemaFormValues,\n) {\n if (typeof value === 'function') {\n return (value as (values: RKSchemaFormValues) => T)(values);\n }\n\n return value;\n}\n\nfunction getColumnKey(column: RKSchemaFormColumn, index: number) {\n return column.key || `${String(column.dataIndex)}-${index}`;\n}\n\nfunction getDependencySnapshot(values: RKSchemaFormValues) {\n return JSON.stringify(values);\n}\n\nfunction resolveDependencyResetValue(\n resetValue: RKSchemaDependencyResetValue | undefined,\n values: RKSchemaFormValues,\n previousValues?: RKSchemaFormValues,\n) {\n if (typeof resetValue === 'function') {\n return resetValue(values, previousValues);\n }\n\n return resetValue;\n}\n\nfunction setFieldValue(form: ProFormInstance, name: NamePath, value: unknown) {\n const setField = form.setFieldValue;\n\n if (setField) {\n setField(name, value);\n return;\n }\n\n form.setFields([{ name, value }]);\n}\n\nfunction RKSchemaDependencyField({\n column,\n values,\n form,\n renderField,\n}: RKSchemaDependencyFieldProps) {\n const isFirstRenderRef = useRef(true);\n const previousValuesRef = useRef<RKSchemaFormValues>();\n const previousSnapshotRef = useRef<string>();\n const dependencySnapshot = getDependencySnapshot(values);\n const shouldResetOnDependencyChange = column.resetOnDependencyChange !== false;\n\n useEffect(() => {\n if (previousSnapshotRef.current === dependencySnapshot) {\n return;\n }\n\n if (!shouldResetOnDependencyChange) {\n previousValuesRef.current = values;\n previousSnapshotRef.current = dependencySnapshot;\n isFirstRenderRef.current = false;\n return;\n }\n\n if (isFirstRenderRef.current) {\n previousValuesRef.current = values;\n previousSnapshotRef.current = dependencySnapshot;\n isFirstRenderRef.current = false;\n return;\n }\n\n setFieldValue(\n form,\n column.dataIndex,\n resolveDependencyResetValue(column.dependencyResetValue, values, previousValuesRef.current),\n );\n previousValuesRef.current = values;\n previousSnapshotRef.current = dependencySnapshot;\n }, [column, dependencySnapshot, form, shouldResetOnDependencyChange, values]);\n\n return <>{renderField(values)}</>;\n}\n\nexport default function RKSchemaForm<T = Record<string, unknown>>(props: RKSchemaFormProps<T>) {\n const { columns, columnCount, fieldColProps, rowProps, ...formProps } = props;\n const defaultColProps = fieldColProps || getColProps(columnCount);\n\n const renderColumn = (\n column: RKSchemaFormColumn,\n index: number,\n values: RKSchemaFormValues = {},\n ) => {\n const {\n title,\n dataIndex,\n valueType = 'text',\n required,\n disabled,\n readonly,\n initialValue,\n rules,\n tooltip,\n extra,\n colProps,\n fieldProps,\n } = column;\n const Component = RKSchemaFieldRegistry[valueType];\n if (!Component) return null;\n\n const nextHidden = resolveDynamicValue(column.hidden, values);\n if (nextHidden === true) return null;\n\n const nextRequired = resolveDynamicValue(required, values);\n const nextDisabled = resolveDynamicValue(disabled, values);\n const nextReadonly = resolveDynamicValue(readonly, values);\n const nextFieldProps =\n resolveDynamicValue<RKSchemaFieldProps>(fieldProps, values) || undefined;\n\n return (\n <Component\n key={getColumnKey(column, index)}\n label={title}\n name={dataIndex}\n disabled={nextDisabled}\n readonly={nextReadonly}\n initialValue={initialValue}\n rules={[...(nextRequired === true ? [requiredRule] : []), ...(rules || [])]}\n tooltip={tooltip}\n extra={extra}\n colProps={colProps || defaultColProps}\n fieldProps={nextFieldProps}\n />\n );\n };\n\n return (\n <ProForm grid rowProps={{ gutter: 24, ...rowProps }} {...formProps}>\n {columns.map((column, index) => {\n if (!column.dependencies?.length) {\n return renderColumn(column, index);\n }\n\n return (\n <ProFormDependency key={getColumnKey(column, index)} name={column.dependencies}>\n {(values, form) => (\n <RKSchemaDependencyField\n column={column}\n values={values}\n form={form}\n renderField={(nextValues) => renderColumn(column, index, nextValues)}\n />\n )}\n </ProFormDependency>\n );\n })}\n </ProForm>\n );\n}\n\nexport * from './fieldRegistry';\nexport * from './optionSourceRegistry';\nexport * from './type';\n","import {\n ProFormCascader,\n ProFormCheckbox,\n ProFormColorPicker,\n ProFormDateMonthRangePicker,\n ProFormDatePicker,\n ProFormDateQuarterRangePicker,\n ProFormDateRangePicker,\n ProFormDateTimePicker,\n ProFormDateTimeRangePicker,\n ProFormDateWeekRangePicker,\n ProFormDateYearRangePicker,\n ProFormDigit,\n ProFormDigitRange,\n ProFormMoney,\n ProFormRadio,\n ProFormRate,\n ProFormSegmented,\n ProFormSelect,\n ProFormSlider,\n ProFormSwitch,\n ProFormText,\n ProFormTextArea,\n ProFormTimePicker,\n ProFormTreeSelect,\n ProFormUploadButton,\n ProFormUploadDragger,\n type ProFormItemProps,\n} from '@ant-design/pro-components';\nimport type { ComponentType } from 'react';\nimport { resolveRKSchemaOptions } from './optionSourceRegistry';\nimport type { RKSchemaFieldProps, RKSchemaOption, RKSchemaOptionSource } from './type';\n\nexport type RKSchemaFieldRenderer = ComponentType<ProFormItemProps & Record<string, unknown>>;\n\nfunction isFieldComponentProps(value: unknown): value is RKSchemaFieldProps {\n return typeof value === 'object' && value !== null;\n}\n\nfunction isDynamicOptionSource(source?: RKSchemaOptionSource) {\n return ['enum', 'remote'].includes(source?.type || '');\n}\n\nfunction getStaticOptions(fieldProps: RKSchemaFieldProps, optionFieldName: 'options' | 'treeData') {\n if (optionFieldName === 'treeData') {\n return fieldProps.treeData || fieldProps.options;\n }\n\n return fieldProps.options;\n}\n\nfunction asField(component: unknown): RKSchemaFieldRenderer {\n return component as RKSchemaFieldRenderer;\n}\n\nfunction createOptionField(\n Component: RKSchemaFieldRenderer,\n options: { optionFieldName?: 'options' | 'treeData' } = {},\n): RKSchemaFieldRenderer {\n const { optionFieldName = 'options' } = options;\n\n return function RKSchemaOptionsField(props: ProFormItemProps & Record<string, unknown>) {\n const fieldProps = isFieldComponentProps(props.fieldProps) ? props.fieldProps : {};\n const { options: staticOptions, treeData, optionSource, ...restFieldProps } = fieldProps;\n const shouldLoadDynamic = isDynamicOptionSource(optionSource);\n const resolvedStaticOptions =\n getStaticOptions({ ...fieldProps, options: staticOptions, treeData }, optionFieldName) || [];\n const request = shouldLoadDynamic\n ? async (): Promise<RKSchemaOption[]> => resolveRKSchemaOptions(optionSource)\n : undefined;\n\n return (\n <Component\n {...props}\n request={request || props.request}\n params={shouldLoadDynamic ? optionSource : props.params}\n fieldProps={{\n ...restFieldProps,\n [optionFieldName]: shouldLoadDynamic ? undefined : resolvedStaticOptions,\n }}\n />\n );\n };\n}\n\nexport const RKSchemaFieldRegistry: Record<string, RKSchemaFieldRenderer> = {\n text: asField(ProFormText),\n password: asField(ProFormText.Password),\n textarea: asField(ProFormTextArea),\n digit: asField(ProFormDigit),\n digitRange: asField(ProFormDigitRange),\n select: createOptionField(asField(ProFormSelect)),\n treeSelect: createOptionField(asField(ProFormTreeSelect), { optionFieldName: 'treeData' }),\n cascader: createOptionField(asField(ProFormCascader)),\n radio: createOptionField(asField(ProFormRadio.Group)),\n checkbox: asField(ProFormCheckbox),\n checkboxGroup: createOptionField(asField(ProFormCheckbox.Group)),\n switch: asField(ProFormSwitch),\n slider: asField(ProFormSlider),\n rate: asField(ProFormRate),\n segmented: createOptionField(asField(ProFormSegmented)),\n color: asField(ProFormColorPicker),\n date: asField(ProFormDatePicker),\n dateRange: asField(ProFormDateRangePicker),\n dateTime: asField(ProFormDateTimePicker),\n dateTimeRange: asField(ProFormDateTimeRangePicker),\n dateWeekRange: asField(ProFormDateWeekRangePicker),\n dateMonthRange: asField(ProFormDateMonthRangePicker),\n dateQuarterRange: asField(ProFormDateQuarterRangePicker),\n dateYearRange: asField(ProFormDateYearRangePicker),\n time: asField(ProFormTimePicker),\n timeRange: asField(ProFormTimePicker.RangePicker),\n money: asField(ProFormMoney),\n uploadButton: asField(ProFormUploadButton),\n uploadDragger: asField(ProFormUploadDragger),\n};\n\nexport function registerRKSchemaField(valueType: string, renderer: RKSchemaFieldRenderer) {\n RKSchemaFieldRegistry[valueType] = renderer;\n}\n","import { ProTable } from '@ant-design/pro-components';\nimport type { ProTableProps } from '@ant-design/pro-components';\nimport type { SortOrder } from 'antd/es/table/interface';\n\nexport type RKTableRequestParams = {\n current?: number;\n pageSize?: number;\n [key: string]: any;\n};\n\nexport type RKTableResponse<DataSource extends Record<string, any>> = {\n code?: number;\n success?: boolean;\n data?:\n | DataSource[]\n | {\n records?: DataSource[];\n list?: DataSource[];\n total?: number;\n [key: string]: unknown;\n };\n records?: DataSource[];\n list?: DataSource[];\n total?: number;\n [key: string]: unknown;\n};\n\nexport type RKTableRequestApi<\n DataSource extends Record<string, any>,\n RequestParams,\n> = (data: RequestParams) => Promise<RKTableResponse<DataSource>>;\n\nexport type RKTableRequestAdapter<DataSource extends Record<string, any>> = (\n response: RKTableResponse<DataSource>,\n) => {\n data: DataSource[];\n success: boolean;\n total?: number;\n};\n\nexport type RKTableProps<\n DataSource extends Record<string, any>,\n Params extends Record<string, any> = Record<string, any>,\n ValueType = 'text',\n RequestParams = RKTableRequestParams,\n> = ProTableProps<DataSource, Params, ValueType> & {\n requestApi?: RKTableRequestApi<DataSource, RequestParams>;\n requestAdapter?: RKTableRequestAdapter<DataSource>;\n requestParamsFormatter?: (\n params: Params & RKTableRequestParams,\n sort: Record<string, SortOrder>,\n filter: Record<string, (string | number)[] | null>,\n ) => RequestParams;\n};\n\nfunction resolveRecords<DataSource extends Record<string, any>>(\n response: RKTableResponse<DataSource>,\n) {\n if (Array.isArray(response.data)) return response.data;\n\n if (response.data && typeof response.data === 'object') {\n if (Array.isArray(response.data.records)) return response.data.records;\n if (Array.isArray(response.data.list)) return response.data.list;\n }\n\n if (Array.isArray(response.records)) return response.records;\n if (Array.isArray(response.list)) return response.list;\n\n return [];\n}\n\nfunction resolveTotal<DataSource extends Record<string, any>>(\n response: RKTableResponse<DataSource>,\n) {\n if (typeof response.total === 'number') return response.total;\n\n if (response.data && !Array.isArray(response.data) && typeof response.data.total === 'number') {\n return response.data.total;\n }\n\n return resolveRecords(response).length;\n}\n\nfunction defaultRequestAdapter<DataSource extends Record<string, any>>(\n response: RKTableResponse<DataSource>,\n) {\n const success =\n typeof response.success === 'boolean'\n ? response.success\n : response.code === undefined || response.code === 200;\n\n return {\n data: resolveRecords(response),\n success,\n total: resolveTotal(response),\n };\n}\n\nconst RKTable = <\n DataSource extends Record<string, any>,\n Params extends Record<string, any> = Record<string, any>,\n ValueType = 'text',\n RequestParams = RKTableRequestParams,\n>({\n request,\n requestApi,\n requestAdapter = defaultRequestAdapter,\n requestParamsFormatter,\n search,\n options,\n pagination,\n scroll,\n form,\n rowKey,\n tableAlertRender,\n ...restProps\n}: RKTableProps<DataSource, Params, ValueType, RequestParams>) => {\n const tableSearch =\n search === false\n ? false\n : {\n filterType: 'query' as const,\n defaultCollapsed: false,\n ...(typeof search === 'object' ? search : {}),\n };\n const tableOptions =\n options === false\n ? false\n : {\n reload: true,\n density: false,\n setting: false,\n ...(typeof options === 'object' ? options : {}),\n };\n const tablePagination =\n pagination === false\n ? false\n : {\n defaultPageSize: 20,\n showSizeChanger: true,\n disabled: false,\n ...(typeof pagination === 'object' ? pagination : {}),\n };\n const tableForm = {\n syncToUrl: true,\n syncToInitialValues: false,\n ...(typeof form === 'object' ? form : {}),\n };\n const tableScroll = {\n x: 'max-content',\n ...(typeof scroll === 'object' ? scroll : {}),\n };\n const tableRequest = requestApi\n ? async (\n params: Params & RKTableRequestParams,\n sort: Record<string, SortOrder>,\n filter: Record<string, (string | number)[] | null>,\n ) => {\n const nextParams = requestParamsFormatter\n ? requestParamsFormatter(params, sort, filter)\n : (params as unknown as RequestParams);\n const response = await requestApi(nextParams);\n\n return requestAdapter(response);\n }\n : request;\n\n return (\n <ProTable<DataSource, Params, ValueType>\n rowKey={rowKey || 'id'}\n tableAlertRender={tableAlertRender ?? false}\n options={tableOptions}\n pagination={tablePagination}\n scroll={tableScroll}\n form={tableForm}\n {...restProps}\n search={tableSearch}\n request={tableRequest}\n />\n );\n};\n\nexport default RKTable;\n"],"mappings":"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","names":["import_react","import_jsx_runtime","isOptionValue","normalizeOptionLabel","requestParams","import_pro_components","import_react","import_pro_components","import_jsx_runtime","isDynamicOptionSource","import_jsx_runtime","import_pro_components","import_jsx_runtime"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -108,6 +108,9 @@ type RKSchemaOption = RKRemoteSelectOption;
|
|
|
108
108
|
type RKSchemaOptionSourceType = RKRemoteSelectOptionSourceType;
|
|
109
109
|
type RKSchemaOptionSource = RKRemoteSelectOptionSource;
|
|
110
110
|
type RKSchemaFieldInitialValue = unknown;
|
|
111
|
+
type RKSchemaFormValues = Record<string, any>;
|
|
112
|
+
type RKSchemaDynamicValue<T> = T | ((values: RKSchemaFormValues) => T);
|
|
113
|
+
type RKSchemaDependencyResetValue = unknown | ((values: RKSchemaFormValues, previousValues?: RKSchemaFormValues) => unknown);
|
|
111
114
|
interface RKSchemaTextAreaAutoSize {
|
|
112
115
|
minRows?: number;
|
|
113
116
|
maxRows?: number;
|
|
@@ -132,16 +135,19 @@ interface RKSchemaFormColumn {
|
|
|
132
135
|
title?: ReactNode;
|
|
133
136
|
dataIndex: NamePath;
|
|
134
137
|
valueType?: RKSchemaFormValueType;
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
138
|
+
dependencies?: NamePath[];
|
|
139
|
+
resetOnDependencyChange?: boolean;
|
|
140
|
+
dependencyResetValue?: RKSchemaDependencyResetValue;
|
|
141
|
+
required?: RKSchemaDynamicValue<boolean>;
|
|
142
|
+
hidden?: RKSchemaDynamicValue<boolean>;
|
|
143
|
+
disabled?: RKSchemaDynamicValue<boolean>;
|
|
144
|
+
readonly?: RKSchemaDynamicValue<boolean>;
|
|
139
145
|
initialValue?: RKSchemaFieldInitialValue;
|
|
140
146
|
rules?: Rule[];
|
|
141
147
|
tooltip?: ReactNode;
|
|
142
148
|
extra?: ReactNode;
|
|
143
149
|
colProps?: ColProps;
|
|
144
|
-
fieldProps?: RKSchemaFieldProps
|
|
150
|
+
fieldProps?: RKSchemaDynamicValue<RKSchemaFieldProps>;
|
|
145
151
|
}
|
|
146
152
|
interface RKSchemaFormProps<T = Record<string, unknown>> extends Omit<ProFormProps<T>, 'children'> {
|
|
147
153
|
columns: RKSchemaFormColumn[];
|
package/dist/index.d.ts
CHANGED
|
@@ -108,6 +108,9 @@ type RKSchemaOption = RKRemoteSelectOption;
|
|
|
108
108
|
type RKSchemaOptionSourceType = RKRemoteSelectOptionSourceType;
|
|
109
109
|
type RKSchemaOptionSource = RKRemoteSelectOptionSource;
|
|
110
110
|
type RKSchemaFieldInitialValue = unknown;
|
|
111
|
+
type RKSchemaFormValues = Record<string, any>;
|
|
112
|
+
type RKSchemaDynamicValue<T> = T | ((values: RKSchemaFormValues) => T);
|
|
113
|
+
type RKSchemaDependencyResetValue = unknown | ((values: RKSchemaFormValues, previousValues?: RKSchemaFormValues) => unknown);
|
|
111
114
|
interface RKSchemaTextAreaAutoSize {
|
|
112
115
|
minRows?: number;
|
|
113
116
|
maxRows?: number;
|
|
@@ -132,16 +135,19 @@ interface RKSchemaFormColumn {
|
|
|
132
135
|
title?: ReactNode;
|
|
133
136
|
dataIndex: NamePath;
|
|
134
137
|
valueType?: RKSchemaFormValueType;
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
138
|
+
dependencies?: NamePath[];
|
|
139
|
+
resetOnDependencyChange?: boolean;
|
|
140
|
+
dependencyResetValue?: RKSchemaDependencyResetValue;
|
|
141
|
+
required?: RKSchemaDynamicValue<boolean>;
|
|
142
|
+
hidden?: RKSchemaDynamicValue<boolean>;
|
|
143
|
+
disabled?: RKSchemaDynamicValue<boolean>;
|
|
144
|
+
readonly?: RKSchemaDynamicValue<boolean>;
|
|
139
145
|
initialValue?: RKSchemaFieldInitialValue;
|
|
140
146
|
rules?: Rule[];
|
|
141
147
|
tooltip?: ReactNode;
|
|
142
148
|
extra?: ReactNode;
|
|
143
149
|
colProps?: ColProps;
|
|
144
|
-
fieldProps?: RKSchemaFieldProps
|
|
150
|
+
fieldProps?: RKSchemaDynamicValue<RKSchemaFieldProps>;
|
|
145
151
|
}
|
|
146
152
|
interface RKSchemaFormProps<T = Record<string, unknown>> extends Omit<ProFormProps<T>, 'children'> {
|
|
147
153
|
columns: RKSchemaFormColumn[];
|
package/dist/index.js
CHANGED
|
@@ -431,7 +431,8 @@ function RKRemoteSelect({
|
|
|
431
431
|
}
|
|
432
432
|
|
|
433
433
|
// src/RKSchemaForm/index.tsx
|
|
434
|
-
import { ProForm } from "@ant-design/pro-components";
|
|
434
|
+
import { ProForm, ProFormDependency } from "@ant-design/pro-components";
|
|
435
|
+
import { useEffect, useRef as useRef2 } from "react";
|
|
435
436
|
|
|
436
437
|
// src/RKSchemaForm/fieldRegistry.tsx
|
|
437
438
|
import {
|
|
@@ -536,7 +537,7 @@ function registerRKSchemaField(valueType, renderer) {
|
|
|
536
537
|
}
|
|
537
538
|
|
|
538
539
|
// src/RKSchemaForm/index.tsx
|
|
539
|
-
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
540
|
+
import { Fragment, jsx as jsx4 } from "react/jsx-runtime";
|
|
540
541
|
var requiredRule = {
|
|
541
542
|
required: true,
|
|
542
543
|
message: "\u6B64\u9879\u4E3A\u5FC5\u586B\u9879"
|
|
@@ -556,13 +557,74 @@ function getColProps(columns) {
|
|
|
556
557
|
return { lg: 6, md: 8, sm: 12 };
|
|
557
558
|
}
|
|
558
559
|
}
|
|
560
|
+
function resolveDynamicValue(value, values) {
|
|
561
|
+
if (typeof value === "function") {
|
|
562
|
+
return value(values);
|
|
563
|
+
}
|
|
564
|
+
return value;
|
|
565
|
+
}
|
|
566
|
+
function getColumnKey(column, index) {
|
|
567
|
+
return column.key || `${String(column.dataIndex)}-${index}`;
|
|
568
|
+
}
|
|
569
|
+
function getDependencySnapshot(values) {
|
|
570
|
+
return JSON.stringify(values);
|
|
571
|
+
}
|
|
572
|
+
function resolveDependencyResetValue(resetValue, values, previousValues) {
|
|
573
|
+
if (typeof resetValue === "function") {
|
|
574
|
+
return resetValue(values, previousValues);
|
|
575
|
+
}
|
|
576
|
+
return resetValue;
|
|
577
|
+
}
|
|
578
|
+
function setFieldValue(form, name, value) {
|
|
579
|
+
const setField = form.setFieldValue;
|
|
580
|
+
if (setField) {
|
|
581
|
+
setField(name, value);
|
|
582
|
+
return;
|
|
583
|
+
}
|
|
584
|
+
form.setFields([{ name, value }]);
|
|
585
|
+
}
|
|
586
|
+
function RKSchemaDependencyField({
|
|
587
|
+
column,
|
|
588
|
+
values,
|
|
589
|
+
form,
|
|
590
|
+
renderField
|
|
591
|
+
}) {
|
|
592
|
+
const isFirstRenderRef = useRef2(true);
|
|
593
|
+
const previousValuesRef = useRef2();
|
|
594
|
+
const previousSnapshotRef = useRef2();
|
|
595
|
+
const dependencySnapshot = getDependencySnapshot(values);
|
|
596
|
+
const shouldResetOnDependencyChange = column.resetOnDependencyChange !== false;
|
|
597
|
+
useEffect(() => {
|
|
598
|
+
if (previousSnapshotRef.current === dependencySnapshot) {
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
601
|
+
if (!shouldResetOnDependencyChange) {
|
|
602
|
+
previousValuesRef.current = values;
|
|
603
|
+
previousSnapshotRef.current = dependencySnapshot;
|
|
604
|
+
isFirstRenderRef.current = false;
|
|
605
|
+
return;
|
|
606
|
+
}
|
|
607
|
+
if (isFirstRenderRef.current) {
|
|
608
|
+
previousValuesRef.current = values;
|
|
609
|
+
previousSnapshotRef.current = dependencySnapshot;
|
|
610
|
+
isFirstRenderRef.current = false;
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
setFieldValue(
|
|
614
|
+
form,
|
|
615
|
+
column.dataIndex,
|
|
616
|
+
resolveDependencyResetValue(column.dependencyResetValue, values, previousValuesRef.current)
|
|
617
|
+
);
|
|
618
|
+
previousValuesRef.current = values;
|
|
619
|
+
previousSnapshotRef.current = dependencySnapshot;
|
|
620
|
+
}, [column, dependencySnapshot, form, shouldResetOnDependencyChange, values]);
|
|
621
|
+
return /* @__PURE__ */ jsx4(Fragment, { children: renderField(values) });
|
|
622
|
+
}
|
|
559
623
|
function RKSchemaForm(props) {
|
|
560
624
|
const { columns, columnCount, fieldColProps, rowProps, ...formProps } = props;
|
|
561
625
|
const defaultColProps = fieldColProps || getColProps(columnCount);
|
|
562
|
-
|
|
563
|
-
if (column.hidden === true) return null;
|
|
626
|
+
const renderColumn = (column, index, values = {}) => {
|
|
564
627
|
const {
|
|
565
|
-
key,
|
|
566
628
|
title,
|
|
567
629
|
dataIndex,
|
|
568
630
|
valueType = "text",
|
|
@@ -578,22 +640,43 @@ function RKSchemaForm(props) {
|
|
|
578
640
|
} = column;
|
|
579
641
|
const Component = RKSchemaFieldRegistry[valueType];
|
|
580
642
|
if (!Component) return null;
|
|
643
|
+
const nextHidden = resolveDynamicValue(column.hidden, values);
|
|
644
|
+
if (nextHidden === true) return null;
|
|
645
|
+
const nextRequired = resolveDynamicValue(required, values);
|
|
646
|
+
const nextDisabled = resolveDynamicValue(disabled, values);
|
|
647
|
+
const nextReadonly = resolveDynamicValue(readonly, values);
|
|
648
|
+
const nextFieldProps = resolveDynamicValue(fieldProps, values) || void 0;
|
|
581
649
|
return /* @__PURE__ */ jsx4(
|
|
582
650
|
Component,
|
|
583
651
|
{
|
|
584
652
|
label: title,
|
|
585
653
|
name: dataIndex,
|
|
586
|
-
disabled,
|
|
587
|
-
readonly,
|
|
654
|
+
disabled: nextDisabled,
|
|
655
|
+
readonly: nextReadonly,
|
|
588
656
|
initialValue,
|
|
589
|
-
rules: [...
|
|
657
|
+
rules: [...nextRequired === true ? [requiredRule] : [], ...rules || []],
|
|
590
658
|
tooltip,
|
|
591
659
|
extra,
|
|
592
660
|
colProps: colProps || defaultColProps,
|
|
593
|
-
fieldProps
|
|
661
|
+
fieldProps: nextFieldProps
|
|
594
662
|
},
|
|
595
|
-
|
|
663
|
+
getColumnKey(column, index)
|
|
596
664
|
);
|
|
665
|
+
};
|
|
666
|
+
return /* @__PURE__ */ jsx4(ProForm, { grid: true, rowProps: { gutter: 24, ...rowProps }, ...formProps, children: columns.map((column, index) => {
|
|
667
|
+
var _a;
|
|
668
|
+
if (!((_a = column.dependencies) == null ? void 0 : _a.length)) {
|
|
669
|
+
return renderColumn(column, index);
|
|
670
|
+
}
|
|
671
|
+
return /* @__PURE__ */ jsx4(ProFormDependency, { name: column.dependencies, children: (values, form) => /* @__PURE__ */ jsx4(
|
|
672
|
+
RKSchemaDependencyField,
|
|
673
|
+
{
|
|
674
|
+
column,
|
|
675
|
+
values,
|
|
676
|
+
form,
|
|
677
|
+
renderField: (nextValues) => renderColumn(column, index, nextValues)
|
|
678
|
+
}
|
|
679
|
+
) }, getColumnKey(column, index));
|
|
597
680
|
}) });
|
|
598
681
|
}
|
|
599
682
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/RKConfirmAction/index.tsx","../src/RKRemoteSelect/index.tsx","../src/RKRemoteSelect/optionSourceRegistry.ts","../src/RKSchemaForm/index.tsx","../src/RKSchemaForm/fieldRegistry.tsx","../src/RKTable/index.tsx"],"sourcesContent":["import { useRequest } from 'ahooks';\nimport type { ButtonProps, ModalFuncProps } from 'antd';\nimport { Button, message, Modal } from 'antd';\nimport type { Key, ReactNode } from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\ntype MaybePromise<T> = T | Promise<T>;\n\ntype RKConfirmConfig<Params extends unknown[]> =\n | ModalFuncProps\n | ((...params: Params) => ModalFuncProps | false)\n | false;\n\ntype RKSuccessMessage<Result, Params extends unknown[]> =\n | ReactNode\n | ((result: Result, ...params: Params) => ReactNode);\n\ntype RKFailureMessage<Result, Params extends unknown[]> =\n | ReactNode\n | ((result: Result, ...params: Params) => ReactNode);\n\ntype RKErrorMessage<Params extends unknown[]> =\n | ReactNode\n | ((error: unknown, ...params: Params) => ReactNode);\n\nconst DEFAULT_FETCH_KEY = 'RK_CONFIRM_DEFAULT';\n\nexport interface UseRKConfirmRequestOptions<Result, Params extends unknown[]> {\n request: (...params: Params) => Promise<Result>;\n confirm?: RKConfirmConfig<Params>;\n successMessage?: RKSuccessMessage<Result, Params>;\n failureMessage?: RKFailureMessage<Result, Params>;\n errorMessage?: RKErrorMessage<Params>;\n successCode?: number;\n isSuccess?: (result: Result) => boolean;\n getLoadingKey?: (...params: Params) => Key | undefined;\n debounceInterval?: number;\n throttleInterval?: number;\n onSuccess?: (result: Result, ...params: Params) => MaybePromise<void>;\n onFailure?: (result: Result, ...params: Params) => MaybePromise<void>;\n onError?: (error: unknown, ...params: Params) => MaybePromise<void>;\n onCancel?: (...params: Params) => MaybePromise<void>;\n}\n\nexport interface RKConfirmActionProps<Result>\n extends Omit<ButtonProps, 'loading' | 'onClick' | 'onError'>,\n Omit<UseRKConfirmRequestOptions<Result, []>, 'getLoadingKey'> {\n stopPropagation?: boolean;\n}\n\nfunction isResponseSuccess<Result>(result: Result, successCode: number) {\n if (result && typeof result === 'object' && 'code' in result) {\n return (result as { code?: unknown }).code === successCode;\n }\n\n return true;\n}\n\nfunction resolveConfirmConfig<Params extends unknown[]>(\n confirm: RKConfirmConfig<Params> | undefined,\n params: Params,\n) {\n if (typeof confirm === 'function') {\n return confirm(...params);\n }\n\n return confirm;\n}\n\nfunction resolveMessage<Result, Params extends unknown[]>(\n nextMessage:\n | RKSuccessMessage<Result, Params>\n | RKFailureMessage<Result, Params>\n | undefined,\n result: Result,\n params: Params,\n) {\n if (typeof nextMessage === 'function') {\n return nextMessage(result, ...params);\n }\n\n return nextMessage;\n}\n\nfunction resolveErrorMessage<Params extends unknown[]>(\n errorMessage: RKErrorMessage<Params> | undefined,\n error: unknown,\n params: Params,\n) {\n if (typeof errorMessage === 'function') {\n return errorMessage(error, ...params);\n }\n\n return errorMessage;\n}\n\nexport function useRKConfirmRequest<Result = unknown, Params extends unknown[] = []>(\n options: UseRKConfirmRequestOptions<Result, Params>,\n) {\n const {\n request,\n confirm,\n successMessage,\n failureMessage,\n errorMessage,\n successCode = 200,\n isSuccess,\n getLoadingKey,\n debounceInterval,\n throttleInterval,\n onSuccess,\n onFailure,\n onError,\n onCancel,\n } = options;\n const confirmOpenRef = useRef(false);\n const [loadingKeys, setLoadingKeys] = useState<Record<string, boolean>>({});\n const { runAsync: requestRun, loading } = useRequest<Result, Params>(request, {\n manual: true,\n debounceWait: debounceInterval,\n throttleWait: throttleInterval,\n });\n\n const setKeyLoading = useCallback((params: Params, nextLoading: boolean) => {\n const key = getLoadingKey?.(...params);\n const loadingKey = key === undefined ? DEFAULT_FETCH_KEY : String(key);\n\n setLoadingKeys((prev) => ({\n ...prev,\n [loadingKey]: nextLoading,\n }));\n }, [getLoadingKey]);\n\n const executeRequest = useCallback(\n async (...params: Params) => {\n setKeyLoading(params, true);\n\n try {\n const result = await requestRun(...params);\n const success = isSuccess ? isSuccess(result) : isResponseSuccess(result, successCode);\n\n if (success) {\n const nextSuccessMessage = resolveMessage(successMessage, result, params);\n\n if (nextSuccessMessage) {\n message.success(nextSuccessMessage);\n }\n\n await onSuccess?.(result, ...params);\n } else {\n const nextFailureMessage = resolveMessage(failureMessage, result, params);\n\n if (nextFailureMessage) {\n message.error(nextFailureMessage);\n }\n\n await onFailure?.(result, ...params);\n }\n\n return result;\n } catch (error) {\n const nextErrorMessage = resolveErrorMessage(errorMessage, error, params);\n\n if (nextErrorMessage) {\n message.error(nextErrorMessage);\n }\n\n await onError?.(error, ...params);\n throw error;\n } finally {\n setKeyLoading(params, false);\n }\n },\n [\n errorMessage,\n failureMessage,\n isSuccess,\n onError,\n onFailure,\n onSuccess,\n requestRun,\n setKeyLoading,\n successCode,\n successMessage,\n ],\n );\n\n const run = useCallback(\n (...params: Params) => {\n const confirmConfig = resolveConfirmConfig(confirm, params);\n\n if (!confirmConfig) {\n void executeRequest(...params);\n return;\n }\n\n if (confirmOpenRef.current) return;\n\n confirmOpenRef.current = true;\n\n const { onOk, onCancel: onModalCancel, afterClose, ...restConfirmConfig } = confirmConfig;\n\n Modal.confirm({\n okText: '确认',\n cancelText: '取消',\n ...restConfirmConfig,\n onOk: async (...args) => {\n const shouldContinue = await onOk?.(...args);\n\n if (shouldContinue === false) return false;\n\n return executeRequest(...params);\n },\n onCancel: async (...args) => {\n const shouldCancel = await onModalCancel?.(...args);\n\n await onCancel?.(...params);\n\n return shouldCancel;\n },\n afterClose: () => {\n confirmOpenRef.current = false;\n afterClose?.();\n },\n });\n },\n [confirm, executeRequest, onCancel],\n );\n\n const isLoading = useCallback(\n (key: Key | undefined) => {\n if (key === undefined) return loading || !!loadingKeys[DEFAULT_FETCH_KEY];\n\n return !!loadingKeys[String(key)];\n },\n [loading, loadingKeys],\n );\n\n return useMemo(\n () => ({\n run,\n runRequest: executeRequest,\n loading,\n loadingKeys,\n isLoading,\n }),\n [executeRequest, isLoading, loading, loadingKeys, run],\n );\n}\n\nconst RKConfirmAction = <Result = unknown,>({\n request,\n confirm,\n successMessage,\n failureMessage,\n errorMessage,\n successCode,\n isSuccess,\n debounceInterval,\n throttleInterval,\n onSuccess,\n onFailure,\n onError,\n onCancel,\n stopPropagation = true,\n children,\n ...buttonProps\n}: RKConfirmActionProps<Result>) => {\n const { run, loading } = useRKConfirmRequest<Result, []>({\n request,\n confirm,\n successMessage,\n failureMessage,\n errorMessage,\n successCode,\n isSuccess,\n debounceInterval,\n throttleInterval,\n onSuccess,\n onFailure,\n onError,\n onCancel,\n });\n\n return (\n <Button\n type=\"link\"\n {...buttonProps}\n loading={loading}\n onClick={(event) => {\n if (stopPropagation) {\n event.stopPropagation();\n }\n\n run();\n }}\n >\n {children}\n </Button>\n );\n};\n\nexport default RKConfirmAction;\n","import { ProFormSelect } from '@ant-design/pro-components';\nimport type { ProFormSelectProps } from '@ant-design/pro-components';\nimport type { SelectProps } from 'antd';\nimport { useMemo } from 'react';\nimport { resolveRKRemoteSelectOptions } from './optionSourceRegistry';\nimport type { RKRemoteSelectOption, RKRemoteSelectOptionSource } from './type';\n\ntype RKRemoteSelectRecord = Record<string, any>;\ntype RKRemoteSelectParams = Record<string, any>;\ntype RKRemoteSelectRequestResult<OptionItem extends RKRemoteSelectRecord> =\n | OptionItem[]\n | {\n data?: OptionItem[] | { records?: OptionItem[]; list?: OptionItem[] };\n records?: OptionItem[];\n list?: OptionItem[];\n [key: string]: unknown;\n };\ntype RKRemoteSelectDisabled<OptionItem extends RKRemoteSelectRecord> =\n | boolean\n | ((item: OptionItem) => boolean);\n\nexport type RKRemoteSelectRequestApi<\n OptionItem extends RKRemoteSelectRecord = RKRemoteSelectRecord,\n Params extends RKRemoteSelectParams = RKRemoteSelectParams,\n> = (params: Params) => Promise<RKRemoteSelectRequestResult<OptionItem>>;\n\nexport interface RKRemoteSelectProps<\n ValueType = unknown,\n OptionItem extends RKRemoteSelectRecord = RKRemoteSelectRecord,\n Params extends RKRemoteSelectParams = RKRemoteSelectParams,\n> extends Omit<ProFormSelectProps<ValueType>, 'disabled' | 'options' | 'request'> {\n options?: ProFormSelectProps<ValueType>['options'] | OptionItem[];\n optionSource?: RKRemoteSelectOptionSource;\n requestApi?: RKRemoteSelectRequestApi<OptionItem, Params>;\n request?: ProFormSelectProps<ValueType>['request'];\n labelField?: string;\n valueField?: string;\n childrenField?: string;\n disabled?: RKRemoteSelectDisabled<OptionItem>;\n searchKey?: string;\n}\n\nfunction isDynamicOptionSource(optionSource?: RKRemoteSelectOptionSource) {\n return optionSource?.type === 'enum' || optionSource?.type === 'remote';\n}\n\nfunction resolveParams(\n optionSource: RKRemoteSelectOptionSource | undefined,\n params: RKRemoteSelectProps['params'],\n) {\n if (!isDynamicOptionSource(optionSource)) return params;\n if (typeof params === 'function') return params;\n\n return {\n ...params,\n ...optionSource,\n };\n}\n\nfunction isRecord(value: unknown): value is RKRemoteSelectRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isOptionValue(value: unknown): value is RKRemoteSelectOption['value'] {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\n\nfunction normalizeOptionLabel(value: unknown): RKRemoteSelectOption['label'] | undefined {\n if (typeof value === 'string' || typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'boolean') {\n return String(value);\n }\n\n return undefined;\n}\n\nfunction resolveRequestApiItems<OptionItem extends RKRemoteSelectRecord>(\n result: RKRemoteSelectRequestResult<OptionItem>,\n): OptionItem[] {\n if (Array.isArray(result)) return result;\n\n if (Array.isArray(result.data)) return result.data;\n\n if (isRecord(result.data)) {\n if (Array.isArray(result.data.records)) return result.data.records;\n if (Array.isArray(result.data.list)) return result.data.list;\n }\n\n if (Array.isArray(result.records)) return result.records;\n if (Array.isArray(result.list)) return result.list;\n\n return [];\n}\n\nfunction normalizeSearchParams<Params extends RKRemoteSelectParams>(\n params: Params,\n searchKey = 'keyWords',\n) {\n if (searchKey === 'keyWords') return params;\n\n const { keyWords, ...restParams } = params;\n\n return {\n ...restParams,\n ...(keyWords === undefined ? {} : { [searchKey]: keyWords }),\n } as Params;\n}\n\nfunction normalizeOptions<OptionItem extends RKRemoteSelectRecord>(\n items: OptionItem[],\n config: {\n labelField?: string;\n valueField?: string;\n childrenField?: string;\n disabled?: RKRemoteSelectDisabled<OptionItem>;\n },\n): RKRemoteSelectOption[] {\n const labelField = config.labelField || 'label';\n const valueField = config.valueField || 'value';\n const childrenField = config.childrenField || 'children';\n\n return items\n .map((item): RKRemoteSelectOption | undefined => {\n const label = normalizeOptionLabel(item[labelField]);\n const value = item[valueField];\n const children = item[childrenField];\n\n if (label === undefined || !isOptionValue(value)) return undefined;\n\n const optionDisabled =\n typeof config.disabled === 'function'\n ? config.disabled(item)\n : typeof item.disabled === 'boolean'\n ? item.disabled\n : undefined;\n\n return {\n ...item,\n label,\n value,\n disabled: optionDisabled,\n children: Array.isArray(children)\n ? normalizeOptions(\n children.filter(isRecord) as OptionItem[],\n config,\n )\n : undefined,\n };\n })\n .filter((item): item is RKRemoteSelectOption => item !== undefined);\n}\n\nfunction shouldNormalizeOptions<OptionItem extends RKRemoteSelectRecord>(\n options: RKRemoteSelectProps<unknown, OptionItem>['options'],\n config: {\n labelField?: string;\n valueField?: string;\n childrenField?: string;\n disabled?: RKRemoteSelectDisabled<OptionItem>;\n },\n) {\n return (\n Array.isArray(options) &&\n (options as unknown[]).every(isRecord) &&\n (!!config.labelField ||\n !!config.valueField ||\n !!config.childrenField ||\n typeof config.disabled === 'function')\n );\n}\n\nexport default function RKRemoteSelect<\n ValueType = unknown,\n OptionItem extends RKRemoteSelectRecord = RKRemoteSelectRecord,\n Params extends RKRemoteSelectParams = RKRemoteSelectParams,\n>({\n optionSource,\n options,\n requestApi,\n request,\n params,\n fieldProps,\n showSearch = true,\n labelField,\n valueField,\n childrenField,\n disabled,\n searchKey = 'keyWords',\n ...restProps\n}: RKRemoteSelectProps<ValueType, OptionItem, Params>) {\n const selectDisabled = typeof disabled === 'boolean' ? disabled : undefined;\n const optionConfig = useMemo(\n () => ({\n labelField,\n valueField,\n childrenField,\n disabled,\n }),\n [childrenField, disabled, labelField, valueField],\n );\n const selectOptions = useMemo(() => {\n if (!shouldNormalizeOptions(options, optionConfig)) {\n return options as ProFormSelectProps<ValueType>['options'];\n }\n\n return normalizeOptions(\n options as OptionItem[],\n optionConfig,\n ) as ProFormSelectProps<ValueType>['options'];\n }, [optionConfig, options]);\n\n const selectRequest = useMemo(() => {\n if (isDynamicOptionSource(optionSource)) {\n return async () => resolveRKRemoteSelectOptions(optionSource);\n }\n\n if (requestApi) {\n return async (requestParams: Params) => {\n const result = await requestApi(normalizeSearchParams(requestParams, searchKey));\n return normalizeOptions(resolveRequestApiItems(result), optionConfig);\n };\n }\n\n return request;\n }, [optionConfig, optionSource, request, requestApi, searchKey]);\n const requestParams = useMemo(() => resolveParams(optionSource, params), [optionSource, params]);\n\n return (\n <ProFormSelect\n {...restProps}\n disabled={selectDisabled}\n showSearch={showSearch}\n options={selectOptions}\n request={selectRequest}\n params={requestParams}\n fieldProps={\n {\n optionFilterProp: 'label',\n filterOption: true,\n ...fieldProps,\n } as SelectProps<ValueType>\n }\n />\n );\n}\n\nexport {\n enumOptionSourceOptions,\n registerRKRemoteSelectEnumOptionSource,\n registerRKRemoteSelectRemoteOptionSource,\n remoteOptionSourceOptions,\n resolveRKRemoteSelectOptions,\n} from './optionSourceRegistry';\nexport type { RKRemoteSelectOptionSourceDescriptor } from './optionSourceRegistry';\nexport type {\n RKRemoteSelectOption,\n RKRemoteSelectOptionSource,\n RKRemoteSelectOptionSourceType,\n RKRemoteSelectOptionValue,\n} from './type';\n","import type {\n RKRemoteSelectOption,\n RKRemoteSelectOptionSource,\n RKRemoteSelectOptionSourceType,\n RKRemoteSelectOptionValue,\n} from './type';\n\ninterface OptionFieldDefaults {\n labelField: string;\n valueField: string;\n childrenField?: string;\n}\n\nexport interface RKRemoteSelectOptionSourceDescriptor {\n label: string;\n value: string;\n description: string;\n sourceType: RKRemoteSelectOptionSourceType;\n}\n\ninterface RemoteOptionSourceResult {\n items: Array<Record<string, unknown>>;\n defaults?: OptionFieldDefaults;\n}\n\ntype RemoteOptionSourceLoader = () => Promise<RemoteOptionSourceResult>;\n\nconst enumOptionSourceRegistry: Record<string, RKRemoteSelectOption[]> = {};\nconst remoteOptionSourceRegistry: Record<string, RemoteOptionSourceLoader> = {};\n\nexport const enumOptionSourceOptions: RKRemoteSelectOptionSourceDescriptor[] = [];\nexport const remoteOptionSourceOptions: RKRemoteSelectOptionSourceDescriptor[] = [];\n\nfunction upsertOptionSourceDescriptor(\n list: RKRemoteSelectOptionSourceDescriptor[],\n descriptor: RKRemoteSelectOptionSourceDescriptor,\n) {\n const index = list.findIndex((item) => item.value === descriptor.value);\n\n if (index === -1) {\n list.push(descriptor);\n return;\n }\n\n list[index] = descriptor;\n}\n\nexport function registerRKRemoteSelectEnumOptionSource(\n key: string,\n options: RKRemoteSelectOption[],\n descriptor?: Omit<RKRemoteSelectOptionSourceDescriptor, 'value' | 'sourceType'>,\n) {\n enumOptionSourceRegistry[key] = options;\n upsertOptionSourceDescriptor(enumOptionSourceOptions, {\n label: descriptor?.label || key,\n value: key,\n description: descriptor?.description || '',\n sourceType: 'enum',\n });\n}\n\nexport function registerRKRemoteSelectRemoteOptionSource(\n key: string,\n loader: RemoteOptionSourceLoader,\n descriptor?: Omit<RKRemoteSelectOptionSourceDescriptor, 'value' | 'sourceType'>,\n) {\n remoteOptionSourceRegistry[key] = loader;\n upsertOptionSourceDescriptor(remoteOptionSourceOptions, {\n label: descriptor?.label || key,\n value: key,\n description: descriptor?.description || '',\n sourceType: 'remote',\n });\n}\n\nfunction normalizeOptionLabel(value: unknown): RKRemoteSelectOption['label'] | undefined {\n if (typeof value === 'string' || typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'boolean') {\n return String(value);\n }\n\n return undefined;\n}\n\nfunction isOptionValue(value: unknown): value is RKRemoteSelectOptionValue {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\n\nfunction normalizeOptionItems(\n items: Array<Record<string, unknown>>,\n defaults?: OptionFieldDefaults,\n source?: RKRemoteSelectOptionSource,\n): RKRemoteSelectOption[] {\n const labelField = source?.labelField || defaults?.labelField || 'label';\n const valueField = source?.valueField || defaults?.valueField || 'value';\n const childrenField = source?.childrenField || defaults?.childrenField || 'children';\n\n return items\n .map((item): RKRemoteSelectOption | undefined => {\n const label = normalizeOptionLabel(item[labelField]);\n const value = item[valueField];\n const children = item[childrenField];\n\n if (label === undefined || !isOptionValue(value)) {\n return undefined;\n }\n\n return {\n label,\n value,\n disabled: typeof item.disabled === 'boolean' ? item.disabled : undefined,\n children: Array.isArray(children)\n ? normalizeOptionItems(\n children.filter(\n (child): child is Record<string, unknown> =>\n typeof child === 'object' && child !== null,\n ),\n defaults,\n source,\n )\n : undefined,\n };\n })\n .filter((item): item is RKRemoteSelectOption => item !== undefined);\n}\n\nexport async function resolveRKRemoteSelectOptions(\n source?: RKRemoteSelectOptionSource,\n): Promise<RKRemoteSelectOption[]> {\n if (!source?.type || !source.key) {\n return [];\n }\n\n if (source.type === 'enum') {\n return enumOptionSourceRegistry[source.key] || [];\n }\n\n if (source.type === 'remote') {\n const loader = remoteOptionSourceRegistry[source.key];\n if (!loader) return [];\n\n const result = await loader();\n\n return normalizeOptionItems(result.items, result.defaults, source);\n }\n\n return [];\n}\n","import { ProForm } from '@ant-design/pro-components';\nimport type { ColProps } from 'antd';\nimport type { Rule } from 'antd/es/form';\nimport { RKSchemaFieldRegistry } from './fieldRegistry';\nimport type { RKSchemaFormProps } from './type';\n\nconst requiredRule: Rule = {\n required: true,\n message: '此项为必填项',\n};\n\nfunction getColProps(columns?: number): ColProps {\n switch (columns) {\n case 1:\n return { span: 24 };\n case 2:\n return { lg: 12, md: 12, sm: 24 };\n case 3:\n return { lg: 8, md: 12, sm: 24 };\n case 6:\n return { lg: 4, md: 6, sm: 12 };\n case 4:\n default:\n return { lg: 6, md: 8, sm: 12 };\n }\n}\n\nexport default function RKSchemaForm<T = Record<string, unknown>>(props: RKSchemaFormProps<T>) {\n const { columns, columnCount, fieldColProps, rowProps, ...formProps } = props;\n const defaultColProps = fieldColProps || getColProps(columnCount);\n\n return (\n <ProForm grid rowProps={{ gutter: 24, ...rowProps }} {...formProps}>\n {columns.map((column, index) => {\n if (column.hidden === true) return null;\n\n const {\n key,\n title,\n dataIndex,\n valueType = 'text',\n required,\n disabled,\n readonly,\n initialValue,\n rules,\n tooltip,\n extra,\n colProps,\n fieldProps,\n } = column;\n const Component = RKSchemaFieldRegistry[valueType];\n if (!Component) return null;\n\n return (\n <Component\n key={key || `${String(dataIndex)}-${index}`}\n label={title}\n name={dataIndex}\n disabled={disabled}\n readonly={readonly}\n initialValue={initialValue}\n rules={[...(required === true ? [requiredRule] : []), ...(rules || [])]}\n tooltip={tooltip}\n extra={extra}\n colProps={colProps || defaultColProps}\n fieldProps={fieldProps}\n />\n );\n })}\n </ProForm>\n );\n}\n\nexport * from './fieldRegistry';\nexport * from './optionSourceRegistry';\nexport * from './type';\n","import {\n ProFormCascader,\n ProFormCheckbox,\n ProFormColorPicker,\n ProFormDateMonthRangePicker,\n ProFormDatePicker,\n ProFormDateQuarterRangePicker,\n ProFormDateRangePicker,\n ProFormDateTimePicker,\n ProFormDateTimeRangePicker,\n ProFormDateWeekRangePicker,\n ProFormDateYearRangePicker,\n ProFormDigit,\n ProFormDigitRange,\n ProFormMoney,\n ProFormRadio,\n ProFormRate,\n ProFormSegmented,\n ProFormSelect,\n ProFormSlider,\n ProFormSwitch,\n ProFormText,\n ProFormTextArea,\n ProFormTimePicker,\n ProFormTreeSelect,\n ProFormUploadButton,\n ProFormUploadDragger,\n type ProFormItemProps,\n} from '@ant-design/pro-components';\nimport type { ComponentType } from 'react';\nimport { resolveRKSchemaOptions } from './optionSourceRegistry';\nimport type { RKSchemaFieldProps, RKSchemaOption, RKSchemaOptionSource } from './type';\n\nexport type RKSchemaFieldRenderer = ComponentType<ProFormItemProps & Record<string, unknown>>;\n\nfunction isFieldComponentProps(value: unknown): value is RKSchemaFieldProps {\n return typeof value === 'object' && value !== null;\n}\n\nfunction isDynamicOptionSource(source?: RKSchemaOptionSource) {\n return ['enum', 'remote'].includes(source?.type || '');\n}\n\nfunction getStaticOptions(fieldProps: RKSchemaFieldProps, optionFieldName: 'options' | 'treeData') {\n if (optionFieldName === 'treeData') {\n return fieldProps.treeData || fieldProps.options;\n }\n\n return fieldProps.options;\n}\n\nfunction asField(component: unknown): RKSchemaFieldRenderer {\n return component as RKSchemaFieldRenderer;\n}\n\nfunction createOptionField(\n Component: RKSchemaFieldRenderer,\n options: { optionFieldName?: 'options' | 'treeData' } = {},\n): RKSchemaFieldRenderer {\n const { optionFieldName = 'options' } = options;\n\n return function RKSchemaOptionsField(props: ProFormItemProps & Record<string, unknown>) {\n const fieldProps = isFieldComponentProps(props.fieldProps) ? props.fieldProps : {};\n const { options: staticOptions, treeData, optionSource, ...restFieldProps } = fieldProps;\n const shouldLoadDynamic = isDynamicOptionSource(optionSource);\n const resolvedStaticOptions =\n getStaticOptions({ ...fieldProps, options: staticOptions, treeData }, optionFieldName) || [];\n const request = shouldLoadDynamic\n ? async (): Promise<RKSchemaOption[]> => resolveRKSchemaOptions(optionSource)\n : undefined;\n\n return (\n <Component\n {...props}\n request={request || props.request}\n params={shouldLoadDynamic ? optionSource : props.params}\n fieldProps={{\n ...restFieldProps,\n [optionFieldName]: shouldLoadDynamic ? undefined : resolvedStaticOptions,\n }}\n />\n );\n };\n}\n\nexport const RKSchemaFieldRegistry: Record<string, RKSchemaFieldRenderer> = {\n text: asField(ProFormText),\n password: asField(ProFormText.Password),\n textarea: asField(ProFormTextArea),\n digit: asField(ProFormDigit),\n digitRange: asField(ProFormDigitRange),\n select: createOptionField(asField(ProFormSelect)),\n treeSelect: createOptionField(asField(ProFormTreeSelect), { optionFieldName: 'treeData' }),\n cascader: createOptionField(asField(ProFormCascader)),\n radio: createOptionField(asField(ProFormRadio.Group)),\n checkbox: asField(ProFormCheckbox),\n checkboxGroup: createOptionField(asField(ProFormCheckbox.Group)),\n switch: asField(ProFormSwitch),\n slider: asField(ProFormSlider),\n rate: asField(ProFormRate),\n segmented: createOptionField(asField(ProFormSegmented)),\n color: asField(ProFormColorPicker),\n date: asField(ProFormDatePicker),\n dateRange: asField(ProFormDateRangePicker),\n dateTime: asField(ProFormDateTimePicker),\n dateTimeRange: asField(ProFormDateTimeRangePicker),\n dateWeekRange: asField(ProFormDateWeekRangePicker),\n dateMonthRange: asField(ProFormDateMonthRangePicker),\n dateQuarterRange: asField(ProFormDateQuarterRangePicker),\n dateYearRange: asField(ProFormDateYearRangePicker),\n time: asField(ProFormTimePicker),\n timeRange: asField(ProFormTimePicker.RangePicker),\n money: asField(ProFormMoney),\n uploadButton: asField(ProFormUploadButton),\n uploadDragger: asField(ProFormUploadDragger),\n};\n\nexport function registerRKSchemaField(valueType: string, renderer: RKSchemaFieldRenderer) {\n RKSchemaFieldRegistry[valueType] = renderer;\n}\n","import { ProTable } from '@ant-design/pro-components';\nimport type { ProTableProps } from '@ant-design/pro-components';\nimport type { SortOrder } from 'antd/es/table/interface';\n\nexport type RKTableRequestParams = {\n current?: number;\n pageSize?: number;\n [key: string]: any;\n};\n\nexport type RKTableResponse<DataSource extends Record<string, any>> = {\n code?: number;\n success?: boolean;\n data?:\n | DataSource[]\n | {\n records?: DataSource[];\n list?: DataSource[];\n total?: number;\n [key: string]: unknown;\n };\n records?: DataSource[];\n list?: DataSource[];\n total?: number;\n [key: string]: unknown;\n};\n\nexport type RKTableRequestApi<\n DataSource extends Record<string, any>,\n RequestParams,\n> = (data: RequestParams) => Promise<RKTableResponse<DataSource>>;\n\nexport type RKTableRequestAdapter<DataSource extends Record<string, any>> = (\n response: RKTableResponse<DataSource>,\n) => {\n data: DataSource[];\n success: boolean;\n total?: number;\n};\n\nexport type RKTableProps<\n DataSource extends Record<string, any>,\n Params extends Record<string, any> = Record<string, any>,\n ValueType = 'text',\n RequestParams = RKTableRequestParams,\n> = ProTableProps<DataSource, Params, ValueType> & {\n requestApi?: RKTableRequestApi<DataSource, RequestParams>;\n requestAdapter?: RKTableRequestAdapter<DataSource>;\n requestParamsFormatter?: (\n params: Params & RKTableRequestParams,\n sort: Record<string, SortOrder>,\n filter: Record<string, (string | number)[] | null>,\n ) => RequestParams;\n};\n\nfunction resolveRecords<DataSource extends Record<string, any>>(\n response: RKTableResponse<DataSource>,\n) {\n if (Array.isArray(response.data)) return response.data;\n\n if (response.data && typeof response.data === 'object') {\n if (Array.isArray(response.data.records)) return response.data.records;\n if (Array.isArray(response.data.list)) return response.data.list;\n }\n\n if (Array.isArray(response.records)) return response.records;\n if (Array.isArray(response.list)) return response.list;\n\n return [];\n}\n\nfunction resolveTotal<DataSource extends Record<string, any>>(\n response: RKTableResponse<DataSource>,\n) {\n if (typeof response.total === 'number') return response.total;\n\n if (response.data && !Array.isArray(response.data) && typeof response.data.total === 'number') {\n return response.data.total;\n }\n\n return resolveRecords(response).length;\n}\n\nfunction defaultRequestAdapter<DataSource extends Record<string, any>>(\n response: RKTableResponse<DataSource>,\n) {\n const success =\n typeof response.success === 'boolean'\n ? response.success\n : response.code === undefined || response.code === 200;\n\n return {\n data: resolveRecords(response),\n success,\n total: resolveTotal(response),\n };\n}\n\nconst RKTable = <\n DataSource extends Record<string, any>,\n Params extends Record<string, any> = Record<string, any>,\n ValueType = 'text',\n RequestParams = RKTableRequestParams,\n>({\n request,\n requestApi,\n requestAdapter = defaultRequestAdapter,\n requestParamsFormatter,\n search,\n options,\n pagination,\n scroll,\n form,\n rowKey,\n tableAlertRender,\n ...restProps\n}: RKTableProps<DataSource, Params, ValueType, RequestParams>) => {\n const tableSearch =\n search === false\n ? false\n : {\n filterType: 'query' as const,\n defaultCollapsed: false,\n ...(typeof search === 'object' ? search : {}),\n };\n const tableOptions =\n options === false\n ? false\n : {\n reload: true,\n density: false,\n setting: false,\n ...(typeof options === 'object' ? options : {}),\n };\n const tablePagination =\n pagination === false\n ? false\n : {\n defaultPageSize: 20,\n showSizeChanger: true,\n disabled: false,\n ...(typeof pagination === 'object' ? pagination : {}),\n };\n const tableForm = {\n syncToUrl: true,\n syncToInitialValues: false,\n ...(typeof form === 'object' ? form : {}),\n };\n const tableScroll = {\n x: 'max-content',\n ...(typeof scroll === 'object' ? scroll : {}),\n };\n const tableRequest = requestApi\n ? async (\n params: Params & RKTableRequestParams,\n sort: Record<string, SortOrder>,\n filter: Record<string, (string | number)[] | null>,\n ) => {\n const nextParams = requestParamsFormatter\n ? requestParamsFormatter(params, sort, filter)\n : (params as unknown as RequestParams);\n const response = await requestApi(nextParams);\n\n return requestAdapter(response);\n }\n : request;\n\n return (\n <ProTable<DataSource, Params, ValueType>\n rowKey={rowKey || 'id'}\n tableAlertRender={tableAlertRender ?? false}\n options={tableOptions}\n pagination={tablePagination}\n scroll={tableScroll}\n form={tableForm}\n {...restProps}\n search={tableSearch}\n request={tableRequest}\n />\n );\n};\n\nexport default RKTable;\n"],"mappings":";AAAA,SAAS,kBAAkB;AAE3B,SAAS,QAAQ,SAAS,aAAa;AAEvC,SAAS,aAAa,SAAS,QAAQ,gBAAgB;AAyRnD;AApQJ,IAAM,oBAAoB;AAyB1B,SAAS,kBAA0B,QAAgB,aAAqB;AACtE,MAAI,UAAU,OAAO,WAAW,YAAY,UAAU,QAAQ;AAC5D,WAAQ,OAA8B,SAAS;AAAA,EACjD;AAEA,SAAO;AACT;AAEA,SAAS,qBACP,SACA,QACA;AACA,MAAI,OAAO,YAAY,YAAY;AACjC,WAAO,QAAQ,GAAG,MAAM;AAAA,EAC1B;AAEA,SAAO;AACT;AAEA,SAAS,eACP,aAIA,QACA,QACA;AACA,MAAI,OAAO,gBAAgB,YAAY;AACrC,WAAO,YAAY,QAAQ,GAAG,MAAM;AAAA,EACtC;AAEA,SAAO;AACT;AAEA,SAAS,oBACP,cACA,OACA,QACA;AACA,MAAI,OAAO,iBAAiB,YAAY;AACtC,WAAO,aAAa,OAAO,GAAG,MAAM;AAAA,EACtC;AAEA,SAAO;AACT;AAEO,SAAS,oBACd,SACA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,iBAAiB,OAAO,KAAK;AACnC,QAAM,CAAC,aAAa,cAAc,IAAI,SAAkC,CAAC,CAAC;AAC1E,QAAM,EAAE,UAAU,YAAY,QAAQ,IAAI,WAA2B,SAAS;AAAA,IAC5E,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,cAAc;AAAA,EAChB,CAAC;AAED,QAAM,gBAAgB,YAAY,CAAC,QAAgB,gBAAyB;AAC1E,UAAM,MAAM,+CAAgB,GAAG;AAC/B,UAAM,aAAa,QAAQ,SAAY,oBAAoB,OAAO,GAAG;AAErE,mBAAe,CAAC,UAAU;AAAA,MACxB,GAAG;AAAA,MACH,CAAC,UAAU,GAAG;AAAA,IAChB,EAAE;AAAA,EACJ,GAAG,CAAC,aAAa,CAAC;AAElB,QAAM,iBAAiB;AAAA,IACrB,UAAU,WAAmB;AAC3B,oBAAc,QAAQ,IAAI;AAE1B,UAAI;AACF,cAAM,SAAS,MAAM,WAAW,GAAG,MAAM;AACzC,cAAM,UAAU,YAAY,UAAU,MAAM,IAAI,kBAAkB,QAAQ,WAAW;AAErF,YAAI,SAAS;AACX,gBAAM,qBAAqB,eAAe,gBAAgB,QAAQ,MAAM;AAExE,cAAI,oBAAoB;AACtB,oBAAQ,QAAQ,kBAAkB;AAAA,UACpC;AAEA,iBAAM,uCAAY,QAAQ,GAAG;AAAA,QAC/B,OAAO;AACL,gBAAM,qBAAqB,eAAe,gBAAgB,QAAQ,MAAM;AAExE,cAAI,oBAAoB;AACtB,oBAAQ,MAAM,kBAAkB;AAAA,UAClC;AAEA,iBAAM,uCAAY,QAAQ,GAAG;AAAA,QAC/B;AAEA,eAAO;AAAA,MACT,SAAS,OAAO;AACd,cAAM,mBAAmB,oBAAoB,cAAc,OAAO,MAAM;AAExE,YAAI,kBAAkB;AACpB,kBAAQ,MAAM,gBAAgB;AAAA,QAChC;AAEA,eAAM,mCAAU,OAAO,GAAG;AAC1B,cAAM;AAAA,MACR,UAAE;AACA,sBAAc,QAAQ,KAAK;AAAA,MAC7B;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,MAAM;AAAA,IACV,IAAI,WAAmB;AACrB,YAAM,gBAAgB,qBAAqB,SAAS,MAAM;AAE1D,UAAI,CAAC,eAAe;AAClB,aAAK,eAAe,GAAG,MAAM;AAC7B;AAAA,MACF;AAEA,UAAI,eAAe,QAAS;AAE5B,qBAAe,UAAU;AAEzB,YAAM,EAAE,MAAM,UAAU,eAAe,YAAY,GAAG,kBAAkB,IAAI;AAE5E,YAAM,QAAQ;AAAA,QACZ,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,GAAG;AAAA,QACH,MAAM,UAAU,SAAS;AACvB,gBAAM,iBAAiB,OAAM,6BAAO,GAAG;AAEvC,cAAI,mBAAmB,MAAO,QAAO;AAErC,iBAAO,eAAe,GAAG,MAAM;AAAA,QACjC;AAAA,QACA,UAAU,UAAU,SAAS;AAC3B,gBAAM,eAAe,OAAM,+CAAgB,GAAG;AAE9C,iBAAM,qCAAW,GAAG;AAEpB,iBAAO;AAAA,QACT;AAAA,QACA,YAAY,MAAM;AAChB,yBAAe,UAAU;AACzB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,SAAS,gBAAgB,QAAQ;AAAA,EACpC;AAEA,QAAM,YAAY;AAAA,IAChB,CAAC,QAAyB;AACxB,UAAI,QAAQ,OAAW,QAAO,WAAW,CAAC,CAAC,YAAY,iBAAiB;AAExE,aAAO,CAAC,CAAC,YAAY,OAAO,GAAG,CAAC;AAAA,IAClC;AAAA,IACA,CAAC,SAAS,WAAW;AAAA,EACvB;AAEA,SAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,WAAW,SAAS,aAAa,GAAG;AAAA,EACvD;AACF;AAEA,IAAM,kBAAkB,CAAoB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA,GAAG;AACL,MAAoC;AAClC,QAAM,EAAE,KAAK,QAAQ,IAAI,oBAAgC;AAAA,IACvD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACJ,GAAG;AAAA,MACJ;AAAA,MACA,SAAS,CAAC,UAAU;AAClB,YAAI,iBAAiB;AACnB,gBAAM,gBAAgB;AAAA,QACxB;AAEA,YAAI;AAAA,MACN;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,0BAAQ;;;AC9Sf,SAAS,qBAAqB;AAG9B,SAAS,WAAAA,gBAAe;;;ACwBxB,IAAM,2BAAmE,CAAC;AAC1E,IAAM,6BAAuE,CAAC;AAEvE,IAAM,0BAAkE,CAAC;AACzE,IAAM,4BAAoE,CAAC;AAElF,SAAS,6BACP,MACA,YACA;AACA,QAAM,QAAQ,KAAK,UAAU,CAAC,SAAS,KAAK,UAAU,WAAW,KAAK;AAEtE,MAAI,UAAU,IAAI;AAChB,SAAK,KAAK,UAAU;AACpB;AAAA,EACF;AAEA,OAAK,KAAK,IAAI;AAChB;AAEO,SAAS,uCACd,KACA,SACA,YACA;AACA,2BAAyB,GAAG,IAAI;AAChC,+BAA6B,yBAAyB;AAAA,IACpD,QAAO,yCAAY,UAAS;AAAA,IAC5B,OAAO;AAAA,IACP,cAAa,yCAAY,gBAAe;AAAA,IACxC,YAAY;AAAA,EACd,CAAC;AACH;AAEO,SAAS,yCACd,KACA,QACA,YACA;AACA,6BAA2B,GAAG,IAAI;AAClC,+BAA6B,2BAA2B;AAAA,IACtD,QAAO,yCAAY,UAAS;AAAA,IAC5B,OAAO;AAAA,IACP,cAAa,yCAAY,gBAAe;AAAA,IACxC,YAAY;AAAA,EACd,CAAC;AACH;AAEA,SAAS,qBAAqB,OAA2D;AACvF,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAAU;AAC1D,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,UAAU,WAAW;AAC9B,WAAO,OAAO,KAAK;AAAA,EACrB;AAEA,SAAO;AACT;AAEA,SAAS,cAAc,OAAoD;AACzE,SAAO,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU;AACpF;AAEA,SAAS,qBACP,OACA,UACA,QACwB;AACxB,QAAM,cAAa,iCAAQ,gBAAc,qCAAU,eAAc;AACjE,QAAM,cAAa,iCAAQ,gBAAc,qCAAU,eAAc;AACjE,QAAM,iBAAgB,iCAAQ,mBAAiB,qCAAU,kBAAiB;AAE1E,SAAO,MACJ,IAAI,CAAC,SAA2C;AAC/C,UAAM,QAAQ,qBAAqB,KAAK,UAAU,CAAC;AACnD,UAAM,QAAQ,KAAK,UAAU;AAC7B,UAAM,WAAW,KAAK,aAAa;AAEnC,QAAI,UAAU,UAAa,CAAC,cAAc,KAAK,GAAG;AAChD,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,UAAU,OAAO,KAAK,aAAa,YAAY,KAAK,WAAW;AAAA,MAC/D,UAAU,MAAM,QAAQ,QAAQ,IAC5B;AAAA,QACE,SAAS;AAAA,UACP,CAAC,UACC,OAAO,UAAU,YAAY,UAAU;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,MACF,IACA;AAAA,IACN;AAAA,EACF,CAAC,EACA,OAAO,CAAC,SAAuC,SAAS,MAAS;AACtE;AAEA,eAAsB,6BACpB,QACiC;AACjC,MAAI,EAAC,iCAAQ,SAAQ,CAAC,OAAO,KAAK;AAChC,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,OAAO,SAAS,QAAQ;AAC1B,WAAO,yBAAyB,OAAO,GAAG,KAAK,CAAC;AAAA,EAClD;AAEA,MAAI,OAAO,SAAS,UAAU;AAC5B,UAAM,SAAS,2BAA2B,OAAO,GAAG;AACpD,QAAI,CAAC,OAAQ,QAAO,CAAC;AAErB,UAAM,SAAS,MAAM,OAAO;AAE5B,WAAO,qBAAqB,OAAO,OAAO,OAAO,UAAU,MAAM;AAAA,EACnE;AAEA,SAAO,CAAC;AACV;;;ADiFI,gBAAAC,YAAA;AA7LJ,SAAS,sBAAsB,cAA2C;AACxE,UAAO,6CAAc,UAAS,WAAU,6CAAc,UAAS;AACjE;AAEA,SAAS,cACP,cACA,QACA;AACA,MAAI,CAAC,sBAAsB,YAAY,EAAG,QAAO;AACjD,MAAI,OAAO,WAAW,WAAY,QAAO;AAEzC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAEA,SAAS,SAAS,OAA+C;AAC/D,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAASC,eAAc,OAAwD;AAC7E,SAAO,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU;AACpF;AAEA,SAASC,sBAAqB,OAA2D;AACvF,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAAU;AAC1D,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,UAAU,WAAW;AAC9B,WAAO,OAAO,KAAK;AAAA,EACrB;AAEA,SAAO;AACT;AAEA,SAAS,uBACP,QACc;AACd,MAAI,MAAM,QAAQ,MAAM,EAAG,QAAO;AAElC,MAAI,MAAM,QAAQ,OAAO,IAAI,EAAG,QAAO,OAAO;AAE9C,MAAI,SAAS,OAAO,IAAI,GAAG;AACzB,QAAI,MAAM,QAAQ,OAAO,KAAK,OAAO,EAAG,QAAO,OAAO,KAAK;AAC3D,QAAI,MAAM,QAAQ,OAAO,KAAK,IAAI,EAAG,QAAO,OAAO,KAAK;AAAA,EAC1D;AAEA,MAAI,MAAM,QAAQ,OAAO,OAAO,EAAG,QAAO,OAAO;AACjD,MAAI,MAAM,QAAQ,OAAO,IAAI,EAAG,QAAO,OAAO;AAE9C,SAAO,CAAC;AACV;AAEA,SAAS,sBACP,QACA,YAAY,YACZ;AACA,MAAI,cAAc,WAAY,QAAO;AAErC,QAAM,EAAE,UAAU,GAAG,WAAW,IAAI;AAEpC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAI,aAAa,SAAY,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,SAAS;AAAA,EAC5D;AACF;AAEA,SAAS,iBACP,OACA,QAMwB;AACxB,QAAM,aAAa,OAAO,cAAc;AACxC,QAAM,aAAa,OAAO,cAAc;AACxC,QAAM,gBAAgB,OAAO,iBAAiB;AAE9C,SAAO,MACJ,IAAI,CAAC,SAA2C;AAC/C,UAAM,QAAQA,sBAAqB,KAAK,UAAU,CAAC;AACnD,UAAM,QAAQ,KAAK,UAAU;AAC7B,UAAM,WAAW,KAAK,aAAa;AAEnC,QAAI,UAAU,UAAa,CAACD,eAAc,KAAK,EAAG,QAAO;AAEzD,UAAM,iBACJ,OAAO,OAAO,aAAa,aACvB,OAAO,SAAS,IAAI,IACpB,OAAO,KAAK,aAAa,YACzB,KAAK,WACL;AAEN,WAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,UAAU,MAAM,QAAQ,QAAQ,IAC5B;AAAA,QACE,SAAS,OAAO,QAAQ;AAAA,QACxB;AAAA,MACF,IACA;AAAA,IACN;AAAA,EACF,CAAC,EACA,OAAO,CAAC,SAAuC,SAAS,MAAS;AACtE;AAEA,SAAS,uBACP,SACA,QAMA;AACA,SACE,MAAM,QAAQ,OAAO,KACpB,QAAsB,MAAM,QAAQ,MACpC,CAAC,CAAC,OAAO,cACR,CAAC,CAAC,OAAO,cACT,CAAC,CAAC,OAAO,iBACT,OAAO,OAAO,aAAa;AAEjC;AAEe,SAAR,eAIL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,GAAG;AACL,GAAuD;AACrD,QAAM,iBAAiB,OAAO,aAAa,YAAY,WAAW;AAClE,QAAM,eAAeE;AAAA,IACnB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,eAAe,UAAU,YAAY,UAAU;AAAA,EAClD;AACA,QAAM,gBAAgBA,SAAQ,MAAM;AAClC,QAAI,CAAC,uBAAuB,SAAS,YAAY,GAAG;AAClD,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF,GAAG,CAAC,cAAc,OAAO,CAAC;AAE1B,QAAM,gBAAgBA,SAAQ,MAAM;AAClC,QAAI,sBAAsB,YAAY,GAAG;AACvC,aAAO,YAAY,6BAA6B,YAAY;AAAA,IAC9D;AAEA,QAAI,YAAY;AACd,aAAO,OAAOC,mBAA0B;AACtC,cAAM,SAAS,MAAM,WAAW,sBAAsBA,gBAAe,SAAS,CAAC;AAC/E,eAAO,iBAAiB,uBAAuB,MAAM,GAAG,YAAY;AAAA,MACtE;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,cAAc,cAAc,SAAS,YAAY,SAAS,CAAC;AAC/D,QAAM,gBAAgBD,SAAQ,MAAM,cAAc,cAAc,MAAM,GAAG,CAAC,cAAc,MAAM,CAAC;AAE/F,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,YACE;AAAA,QACE,kBAAkB;AAAA,QAClB,cAAc;AAAA,QACd,GAAG;AAAA,MACL;AAAA;AAAA,EAEJ;AAEJ;;;AEvPA,SAAS,eAAe;;;ACAxB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAAK;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AA4CD,gBAAAC,YAAA;AArCN,SAAS,sBAAsB,OAA6C;AAC1E,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAEA,SAASC,uBAAsB,QAA+B;AAC5D,SAAO,CAAC,QAAQ,QAAQ,EAAE,UAAS,iCAAQ,SAAQ,EAAE;AACvD;AAEA,SAAS,iBAAiB,YAAgC,iBAAyC;AACjG,MAAI,oBAAoB,YAAY;AAClC,WAAO,WAAW,YAAY,WAAW;AAAA,EAC3C;AAEA,SAAO,WAAW;AACpB;AAEA,SAAS,QAAQ,WAA2C;AAC1D,SAAO;AACT;AAEA,SAAS,kBACP,WACA,UAAwD,CAAC,GAClC;AACvB,QAAM,EAAE,kBAAkB,UAAU,IAAI;AAExC,SAAO,SAAS,qBAAqB,OAAmD;AACtF,UAAM,aAAa,sBAAsB,MAAM,UAAU,IAAI,MAAM,aAAa,CAAC;AACjF,UAAM,EAAE,SAAS,eAAe,UAAU,cAAc,GAAG,eAAe,IAAI;AAC9E,UAAM,oBAAoBA,uBAAsB,YAAY;AAC5D,UAAM,wBACJ,iBAAiB,EAAE,GAAG,YAAY,SAAS,eAAe,SAAS,GAAG,eAAe,KAAK,CAAC;AAC7F,UAAM,UAAU,oBACZ,YAAuC,6BAAuB,YAAY,IAC1E;AAEJ,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,SAAS,WAAW,MAAM;AAAA,QAC1B,QAAQ,oBAAoB,eAAe,MAAM;AAAA,QACjD,YAAY;AAAA,UACV,GAAG;AAAA,UACH,CAAC,eAAe,GAAG,oBAAoB,SAAY;AAAA,QACrD;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEO,IAAM,wBAA+D;AAAA,EAC1E,MAAM,QAAQ,WAAW;AAAA,EACzB,UAAU,QAAQ,YAAY,QAAQ;AAAA,EACtC,UAAU,QAAQ,eAAe;AAAA,EACjC,OAAO,QAAQ,YAAY;AAAA,EAC3B,YAAY,QAAQ,iBAAiB;AAAA,EACrC,QAAQ,kBAAkB,QAAQE,cAAa,CAAC;AAAA,EAChD,YAAY,kBAAkB,QAAQ,iBAAiB,GAAG,EAAE,iBAAiB,WAAW,CAAC;AAAA,EACzF,UAAU,kBAAkB,QAAQ,eAAe,CAAC;AAAA,EACpD,OAAO,kBAAkB,QAAQ,aAAa,KAAK,CAAC;AAAA,EACpD,UAAU,QAAQ,eAAe;AAAA,EACjC,eAAe,kBAAkB,QAAQ,gBAAgB,KAAK,CAAC;AAAA,EAC/D,QAAQ,QAAQ,aAAa;AAAA,EAC7B,QAAQ,QAAQ,aAAa;AAAA,EAC7B,MAAM,QAAQ,WAAW;AAAA,EACzB,WAAW,kBAAkB,QAAQ,gBAAgB,CAAC;AAAA,EACtD,OAAO,QAAQ,kBAAkB;AAAA,EACjC,MAAM,QAAQ,iBAAiB;AAAA,EAC/B,WAAW,QAAQ,sBAAsB;AAAA,EACzC,UAAU,QAAQ,qBAAqB;AAAA,EACvC,eAAe,QAAQ,0BAA0B;AAAA,EACjD,eAAe,QAAQ,0BAA0B;AAAA,EACjD,gBAAgB,QAAQ,2BAA2B;AAAA,EACnD,kBAAkB,QAAQ,6BAA6B;AAAA,EACvD,eAAe,QAAQ,0BAA0B;AAAA,EACjD,MAAM,QAAQ,iBAAiB;AAAA,EAC/B,WAAW,QAAQ,kBAAkB,WAAW;AAAA,EAChD,OAAO,QAAQ,YAAY;AAAA,EAC3B,cAAc,QAAQ,mBAAmB;AAAA,EACzC,eAAe,QAAQ,oBAAoB;AAC7C;AAEO,SAAS,sBAAsB,WAAmB,UAAiC;AACxF,wBAAsB,SAAS,IAAI;AACrC;;;ADhEU,gBAAAC,YAAA;AAjDV,IAAM,eAAqB;AAAA,EACzB,UAAU;AAAA,EACV,SAAS;AACX;AAEA,SAAS,YAAY,SAA4B;AAC/C,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO,EAAE,MAAM,GAAG;AAAA,IACpB,KAAK;AACH,aAAO,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AAAA,IAClC,KAAK;AACH,aAAO,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG;AAAA,IACjC,KAAK;AACH,aAAO,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;AAAA,IAChC,KAAK;AAAA,IACL;AACE,aAAO,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;AAAA,EAClC;AACF;AAEe,SAAR,aAA2D,OAA6B;AAC7F,QAAM,EAAE,SAAS,aAAa,eAAe,UAAU,GAAG,UAAU,IAAI;AACxE,QAAM,kBAAkB,iBAAiB,YAAY,WAAW;AAEhE,SACE,gBAAAA,KAAC,WAAQ,MAAI,MAAC,UAAU,EAAE,QAAQ,IAAI,GAAG,SAAS,GAAI,GAAG,WACtD,kBAAQ,IAAI,CAAC,QAAQ,UAAU;AAC9B,QAAI,OAAO,WAAW,KAAM,QAAO;AAEnC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,YAAY,sBAAsB,SAAS;AACjD,QAAI,CAAC,UAAW,QAAO;AAEvB,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,OAAO;AAAA,QACP,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,CAAC,GAAI,aAAa,OAAO,CAAC,YAAY,IAAI,CAAC,GAAI,GAAI,SAAS,CAAC,CAAE;AAAA,QACtE;AAAA,QACA;AAAA,QACA,UAAU,YAAY;AAAA,QACtB;AAAA;AAAA,MAVK,OAAO,GAAG,OAAO,SAAS,CAAC,IAAI,KAAK;AAAA,IAW3C;AAAA,EAEJ,CAAC,GACH;AAEJ;;;AExEA,SAAS,gBAAgB;AAwKrB,gBAAAC,YAAA;AAjHJ,SAAS,eACP,UACA;AACA,MAAI,MAAM,QAAQ,SAAS,IAAI,EAAG,QAAO,SAAS;AAElD,MAAI,SAAS,QAAQ,OAAO,SAAS,SAAS,UAAU;AACtD,QAAI,MAAM,QAAQ,SAAS,KAAK,OAAO,EAAG,QAAO,SAAS,KAAK;AAC/D,QAAI,MAAM,QAAQ,SAAS,KAAK,IAAI,EAAG,QAAO,SAAS,KAAK;AAAA,EAC9D;AAEA,MAAI,MAAM,QAAQ,SAAS,OAAO,EAAG,QAAO,SAAS;AACrD,MAAI,MAAM,QAAQ,SAAS,IAAI,EAAG,QAAO,SAAS;AAElD,SAAO,CAAC;AACV;AAEA,SAAS,aACP,UACA;AACA,MAAI,OAAO,SAAS,UAAU,SAAU,QAAO,SAAS;AAExD,MAAI,SAAS,QAAQ,CAAC,MAAM,QAAQ,SAAS,IAAI,KAAK,OAAO,SAAS,KAAK,UAAU,UAAU;AAC7F,WAAO,SAAS,KAAK;AAAA,EACvB;AAEA,SAAO,eAAe,QAAQ,EAAE;AAClC;AAEA,SAAS,sBACP,UACA;AACA,QAAM,UACJ,OAAO,SAAS,YAAY,YACxB,SAAS,UACT,SAAS,SAAS,UAAa,SAAS,SAAS;AAEvD,SAAO;AAAA,IACL,MAAM,eAAe,QAAQ;AAAA,IAC7B;AAAA,IACA,OAAO,aAAa,QAAQ;AAAA,EAC9B;AACF;AAEA,IAAM,UAAU,CAKd;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAkE;AAChE,QAAM,cACJ,WAAW,QACP,QACA;AAAA,IACE,YAAY;AAAA,IACZ,kBAAkB;AAAA,IAClB,GAAI,OAAO,WAAW,WAAW,SAAS,CAAC;AAAA,EAC7C;AACN,QAAM,eACJ,YAAY,QACR,QACA;AAAA,IACE,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,GAAI,OAAO,YAAY,WAAW,UAAU,CAAC;AAAA,EAC/C;AACN,QAAM,kBACJ,eAAe,QACX,QACA;AAAA,IACE,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,GAAI,OAAO,eAAe,WAAW,aAAa,CAAC;AAAA,EACrD;AACN,QAAM,YAAY;AAAA,IAChB,WAAW;AAAA,IACX,qBAAqB;AAAA,IACrB,GAAI,OAAO,SAAS,WAAW,OAAO,CAAC;AAAA,EACzC;AACA,QAAM,cAAc;AAAA,IAClB,GAAG;AAAA,IACH,GAAI,OAAO,WAAW,WAAW,SAAS,CAAC;AAAA,EAC7C;AACA,QAAM,eAAe,aACjB,OACE,QACA,MACA,WACG;AACH,UAAM,aAAa,yBACf,uBAAuB,QAAQ,MAAM,MAAM,IAC1C;AACL,UAAM,WAAW,MAAM,WAAW,UAAU;AAE5C,WAAO,eAAe,QAAQ;AAAA,EAChC,IACA;AAEJ,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ,UAAU;AAAA,MAClB,kBAAkB,8CAAoB;AAAA,MACtC,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,MAAM;AAAA,MACL,GAAG;AAAA,MACJ,QAAQ;AAAA,MACR,SAAS;AAAA;AAAA,EACX;AAEJ;AAEA,IAAO,kBAAQ;","names":["useMemo","jsx","isOptionValue","normalizeOptionLabel","useMemo","requestParams","ProFormSelect","jsx","isDynamicOptionSource","ProFormSelect","jsx","jsx"]}
|
|
1
|
+
{"version":3,"sources":["../src/RKConfirmAction/index.tsx","../src/RKRemoteSelect/index.tsx","../src/RKRemoteSelect/optionSourceRegistry.ts","../src/RKSchemaForm/index.tsx","../src/RKSchemaForm/fieldRegistry.tsx","../src/RKTable/index.tsx"],"sourcesContent":["import { useRequest } from 'ahooks';\nimport type { ButtonProps, ModalFuncProps } from 'antd';\nimport { Button, message, Modal } from 'antd';\nimport type { Key, ReactNode } from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\ntype MaybePromise<T> = T | Promise<T>;\n\ntype RKConfirmConfig<Params extends unknown[]> =\n | ModalFuncProps\n | ((...params: Params) => ModalFuncProps | false)\n | false;\n\ntype RKSuccessMessage<Result, Params extends unknown[]> =\n | ReactNode\n | ((result: Result, ...params: Params) => ReactNode);\n\ntype RKFailureMessage<Result, Params extends unknown[]> =\n | ReactNode\n | ((result: Result, ...params: Params) => ReactNode);\n\ntype RKErrorMessage<Params extends unknown[]> =\n | ReactNode\n | ((error: unknown, ...params: Params) => ReactNode);\n\nconst DEFAULT_FETCH_KEY = 'RK_CONFIRM_DEFAULT';\n\nexport interface UseRKConfirmRequestOptions<Result, Params extends unknown[]> {\n request: (...params: Params) => Promise<Result>;\n confirm?: RKConfirmConfig<Params>;\n successMessage?: RKSuccessMessage<Result, Params>;\n failureMessage?: RKFailureMessage<Result, Params>;\n errorMessage?: RKErrorMessage<Params>;\n successCode?: number;\n isSuccess?: (result: Result) => boolean;\n getLoadingKey?: (...params: Params) => Key | undefined;\n debounceInterval?: number;\n throttleInterval?: number;\n onSuccess?: (result: Result, ...params: Params) => MaybePromise<void>;\n onFailure?: (result: Result, ...params: Params) => MaybePromise<void>;\n onError?: (error: unknown, ...params: Params) => MaybePromise<void>;\n onCancel?: (...params: Params) => MaybePromise<void>;\n}\n\nexport interface RKConfirmActionProps<Result>\n extends Omit<ButtonProps, 'loading' | 'onClick' | 'onError'>,\n Omit<UseRKConfirmRequestOptions<Result, []>, 'getLoadingKey'> {\n stopPropagation?: boolean;\n}\n\nfunction isResponseSuccess<Result>(result: Result, successCode: number) {\n if (result && typeof result === 'object' && 'code' in result) {\n return (result as { code?: unknown }).code === successCode;\n }\n\n return true;\n}\n\nfunction resolveConfirmConfig<Params extends unknown[]>(\n confirm: RKConfirmConfig<Params> | undefined,\n params: Params,\n) {\n if (typeof confirm === 'function') {\n return confirm(...params);\n }\n\n return confirm;\n}\n\nfunction resolveMessage<Result, Params extends unknown[]>(\n nextMessage:\n | RKSuccessMessage<Result, Params>\n | RKFailureMessage<Result, Params>\n | undefined,\n result: Result,\n params: Params,\n) {\n if (typeof nextMessage === 'function') {\n return nextMessage(result, ...params);\n }\n\n return nextMessage;\n}\n\nfunction resolveErrorMessage<Params extends unknown[]>(\n errorMessage: RKErrorMessage<Params> | undefined,\n error: unknown,\n params: Params,\n) {\n if (typeof errorMessage === 'function') {\n return errorMessage(error, ...params);\n }\n\n return errorMessage;\n}\n\nexport function useRKConfirmRequest<Result = unknown, Params extends unknown[] = []>(\n options: UseRKConfirmRequestOptions<Result, Params>,\n) {\n const {\n request,\n confirm,\n successMessage,\n failureMessage,\n errorMessage,\n successCode = 200,\n isSuccess,\n getLoadingKey,\n debounceInterval,\n throttleInterval,\n onSuccess,\n onFailure,\n onError,\n onCancel,\n } = options;\n const confirmOpenRef = useRef(false);\n const [loadingKeys, setLoadingKeys] = useState<Record<string, boolean>>({});\n const { runAsync: requestRun, loading } = useRequest<Result, Params>(request, {\n manual: true,\n debounceWait: debounceInterval,\n throttleWait: throttleInterval,\n });\n\n const setKeyLoading = useCallback((params: Params, nextLoading: boolean) => {\n const key = getLoadingKey?.(...params);\n const loadingKey = key === undefined ? DEFAULT_FETCH_KEY : String(key);\n\n setLoadingKeys((prev) => ({\n ...prev,\n [loadingKey]: nextLoading,\n }));\n }, [getLoadingKey]);\n\n const executeRequest = useCallback(\n async (...params: Params) => {\n setKeyLoading(params, true);\n\n try {\n const result = await requestRun(...params);\n const success = isSuccess ? isSuccess(result) : isResponseSuccess(result, successCode);\n\n if (success) {\n const nextSuccessMessage = resolveMessage(successMessage, result, params);\n\n if (nextSuccessMessage) {\n message.success(nextSuccessMessage);\n }\n\n await onSuccess?.(result, ...params);\n } else {\n const nextFailureMessage = resolveMessage(failureMessage, result, params);\n\n if (nextFailureMessage) {\n message.error(nextFailureMessage);\n }\n\n await onFailure?.(result, ...params);\n }\n\n return result;\n } catch (error) {\n const nextErrorMessage = resolveErrorMessage(errorMessage, error, params);\n\n if (nextErrorMessage) {\n message.error(nextErrorMessage);\n }\n\n await onError?.(error, ...params);\n throw error;\n } finally {\n setKeyLoading(params, false);\n }\n },\n [\n errorMessage,\n failureMessage,\n isSuccess,\n onError,\n onFailure,\n onSuccess,\n requestRun,\n setKeyLoading,\n successCode,\n successMessage,\n ],\n );\n\n const run = useCallback(\n (...params: Params) => {\n const confirmConfig = resolveConfirmConfig(confirm, params);\n\n if (!confirmConfig) {\n void executeRequest(...params);\n return;\n }\n\n if (confirmOpenRef.current) return;\n\n confirmOpenRef.current = true;\n\n const { onOk, onCancel: onModalCancel, afterClose, ...restConfirmConfig } = confirmConfig;\n\n Modal.confirm({\n okText: '确认',\n cancelText: '取消',\n ...restConfirmConfig,\n onOk: async (...args) => {\n const shouldContinue = await onOk?.(...args);\n\n if (shouldContinue === false) return false;\n\n return executeRequest(...params);\n },\n onCancel: async (...args) => {\n const shouldCancel = await onModalCancel?.(...args);\n\n await onCancel?.(...params);\n\n return shouldCancel;\n },\n afterClose: () => {\n confirmOpenRef.current = false;\n afterClose?.();\n },\n });\n },\n [confirm, executeRequest, onCancel],\n );\n\n const isLoading = useCallback(\n (key: Key | undefined) => {\n if (key === undefined) return loading || !!loadingKeys[DEFAULT_FETCH_KEY];\n\n return !!loadingKeys[String(key)];\n },\n [loading, loadingKeys],\n );\n\n return useMemo(\n () => ({\n run,\n runRequest: executeRequest,\n loading,\n loadingKeys,\n isLoading,\n }),\n [executeRequest, isLoading, loading, loadingKeys, run],\n );\n}\n\nconst RKConfirmAction = <Result = unknown,>({\n request,\n confirm,\n successMessage,\n failureMessage,\n errorMessage,\n successCode,\n isSuccess,\n debounceInterval,\n throttleInterval,\n onSuccess,\n onFailure,\n onError,\n onCancel,\n stopPropagation = true,\n children,\n ...buttonProps\n}: RKConfirmActionProps<Result>) => {\n const { run, loading } = useRKConfirmRequest<Result, []>({\n request,\n confirm,\n successMessage,\n failureMessage,\n errorMessage,\n successCode,\n isSuccess,\n debounceInterval,\n throttleInterval,\n onSuccess,\n onFailure,\n onError,\n onCancel,\n });\n\n return (\n <Button\n type=\"link\"\n {...buttonProps}\n loading={loading}\n onClick={(event) => {\n if (stopPropagation) {\n event.stopPropagation();\n }\n\n run();\n }}\n >\n {children}\n </Button>\n );\n};\n\nexport default RKConfirmAction;\n","import { ProFormSelect } from '@ant-design/pro-components';\nimport type { ProFormSelectProps } from '@ant-design/pro-components';\nimport type { SelectProps } from 'antd';\nimport { useMemo } from 'react';\nimport { resolveRKRemoteSelectOptions } from './optionSourceRegistry';\nimport type { RKRemoteSelectOption, RKRemoteSelectOptionSource } from './type';\n\ntype RKRemoteSelectRecord = Record<string, any>;\ntype RKRemoteSelectParams = Record<string, any>;\ntype RKRemoteSelectRequestResult<OptionItem extends RKRemoteSelectRecord> =\n | OptionItem[]\n | {\n data?: OptionItem[] | { records?: OptionItem[]; list?: OptionItem[] };\n records?: OptionItem[];\n list?: OptionItem[];\n [key: string]: unknown;\n };\ntype RKRemoteSelectDisabled<OptionItem extends RKRemoteSelectRecord> =\n | boolean\n | ((item: OptionItem) => boolean);\n\nexport type RKRemoteSelectRequestApi<\n OptionItem extends RKRemoteSelectRecord = RKRemoteSelectRecord,\n Params extends RKRemoteSelectParams = RKRemoteSelectParams,\n> = (params: Params) => Promise<RKRemoteSelectRequestResult<OptionItem>>;\n\nexport interface RKRemoteSelectProps<\n ValueType = unknown,\n OptionItem extends RKRemoteSelectRecord = RKRemoteSelectRecord,\n Params extends RKRemoteSelectParams = RKRemoteSelectParams,\n> extends Omit<ProFormSelectProps<ValueType>, 'disabled' | 'options' | 'request'> {\n options?: ProFormSelectProps<ValueType>['options'] | OptionItem[];\n optionSource?: RKRemoteSelectOptionSource;\n requestApi?: RKRemoteSelectRequestApi<OptionItem, Params>;\n request?: ProFormSelectProps<ValueType>['request'];\n labelField?: string;\n valueField?: string;\n childrenField?: string;\n disabled?: RKRemoteSelectDisabled<OptionItem>;\n searchKey?: string;\n}\n\nfunction isDynamicOptionSource(optionSource?: RKRemoteSelectOptionSource) {\n return optionSource?.type === 'enum' || optionSource?.type === 'remote';\n}\n\nfunction resolveParams(\n optionSource: RKRemoteSelectOptionSource | undefined,\n params: RKRemoteSelectProps['params'],\n) {\n if (!isDynamicOptionSource(optionSource)) return params;\n if (typeof params === 'function') return params;\n\n return {\n ...params,\n ...optionSource,\n };\n}\n\nfunction isRecord(value: unknown): value is RKRemoteSelectRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isOptionValue(value: unknown): value is RKRemoteSelectOption['value'] {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\n\nfunction normalizeOptionLabel(value: unknown): RKRemoteSelectOption['label'] | undefined {\n if (typeof value === 'string' || typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'boolean') {\n return String(value);\n }\n\n return undefined;\n}\n\nfunction resolveRequestApiItems<OptionItem extends RKRemoteSelectRecord>(\n result: RKRemoteSelectRequestResult<OptionItem>,\n): OptionItem[] {\n if (Array.isArray(result)) return result;\n\n if (Array.isArray(result.data)) return result.data;\n\n if (isRecord(result.data)) {\n if (Array.isArray(result.data.records)) return result.data.records;\n if (Array.isArray(result.data.list)) return result.data.list;\n }\n\n if (Array.isArray(result.records)) return result.records;\n if (Array.isArray(result.list)) return result.list;\n\n return [];\n}\n\nfunction normalizeSearchParams<Params extends RKRemoteSelectParams>(\n params: Params,\n searchKey = 'keyWords',\n) {\n if (searchKey === 'keyWords') return params;\n\n const { keyWords, ...restParams } = params;\n\n return {\n ...restParams,\n ...(keyWords === undefined ? {} : { [searchKey]: keyWords }),\n } as Params;\n}\n\nfunction normalizeOptions<OptionItem extends RKRemoteSelectRecord>(\n items: OptionItem[],\n config: {\n labelField?: string;\n valueField?: string;\n childrenField?: string;\n disabled?: RKRemoteSelectDisabled<OptionItem>;\n },\n): RKRemoteSelectOption[] {\n const labelField = config.labelField || 'label';\n const valueField = config.valueField || 'value';\n const childrenField = config.childrenField || 'children';\n\n return items\n .map((item): RKRemoteSelectOption | undefined => {\n const label = normalizeOptionLabel(item[labelField]);\n const value = item[valueField];\n const children = item[childrenField];\n\n if (label === undefined || !isOptionValue(value)) return undefined;\n\n const optionDisabled =\n typeof config.disabled === 'function'\n ? config.disabled(item)\n : typeof item.disabled === 'boolean'\n ? item.disabled\n : undefined;\n\n return {\n ...item,\n label,\n value,\n disabled: optionDisabled,\n children: Array.isArray(children)\n ? normalizeOptions(\n children.filter(isRecord) as OptionItem[],\n config,\n )\n : undefined,\n };\n })\n .filter((item): item is RKRemoteSelectOption => item !== undefined);\n}\n\nfunction shouldNormalizeOptions<OptionItem extends RKRemoteSelectRecord>(\n options: RKRemoteSelectProps<unknown, OptionItem>['options'],\n config: {\n labelField?: string;\n valueField?: string;\n childrenField?: string;\n disabled?: RKRemoteSelectDisabled<OptionItem>;\n },\n) {\n return (\n Array.isArray(options) &&\n (options as unknown[]).every(isRecord) &&\n (!!config.labelField ||\n !!config.valueField ||\n !!config.childrenField ||\n typeof config.disabled === 'function')\n );\n}\n\nexport default function RKRemoteSelect<\n ValueType = unknown,\n OptionItem extends RKRemoteSelectRecord = RKRemoteSelectRecord,\n Params extends RKRemoteSelectParams = RKRemoteSelectParams,\n>({\n optionSource,\n options,\n requestApi,\n request,\n params,\n fieldProps,\n showSearch = true,\n labelField,\n valueField,\n childrenField,\n disabled,\n searchKey = 'keyWords',\n ...restProps\n}: RKRemoteSelectProps<ValueType, OptionItem, Params>) {\n const selectDisabled = typeof disabled === 'boolean' ? disabled : undefined;\n const optionConfig = useMemo(\n () => ({\n labelField,\n valueField,\n childrenField,\n disabled,\n }),\n [childrenField, disabled, labelField, valueField],\n );\n const selectOptions = useMemo(() => {\n if (!shouldNormalizeOptions(options, optionConfig)) {\n return options as ProFormSelectProps<ValueType>['options'];\n }\n\n return normalizeOptions(\n options as OptionItem[],\n optionConfig,\n ) as ProFormSelectProps<ValueType>['options'];\n }, [optionConfig, options]);\n\n const selectRequest = useMemo(() => {\n if (isDynamicOptionSource(optionSource)) {\n return async () => resolveRKRemoteSelectOptions(optionSource);\n }\n\n if (requestApi) {\n return async (requestParams: Params) => {\n const result = await requestApi(normalizeSearchParams(requestParams, searchKey));\n return normalizeOptions(resolveRequestApiItems(result), optionConfig);\n };\n }\n\n return request;\n }, [optionConfig, optionSource, request, requestApi, searchKey]);\n const requestParams = useMemo(() => resolveParams(optionSource, params), [optionSource, params]);\n\n return (\n <ProFormSelect\n {...restProps}\n disabled={selectDisabled}\n showSearch={showSearch}\n options={selectOptions}\n request={selectRequest}\n params={requestParams}\n fieldProps={\n {\n optionFilterProp: 'label',\n filterOption: true,\n ...fieldProps,\n } as SelectProps<ValueType>\n }\n />\n );\n}\n\nexport {\n enumOptionSourceOptions,\n registerRKRemoteSelectEnumOptionSource,\n registerRKRemoteSelectRemoteOptionSource,\n remoteOptionSourceOptions,\n resolveRKRemoteSelectOptions,\n} from './optionSourceRegistry';\nexport type { RKRemoteSelectOptionSourceDescriptor } from './optionSourceRegistry';\nexport type {\n RKRemoteSelectOption,\n RKRemoteSelectOptionSource,\n RKRemoteSelectOptionSourceType,\n RKRemoteSelectOptionValue,\n} from './type';\n","import type {\n RKRemoteSelectOption,\n RKRemoteSelectOptionSource,\n RKRemoteSelectOptionSourceType,\n RKRemoteSelectOptionValue,\n} from './type';\n\ninterface OptionFieldDefaults {\n labelField: string;\n valueField: string;\n childrenField?: string;\n}\n\nexport interface RKRemoteSelectOptionSourceDescriptor {\n label: string;\n value: string;\n description: string;\n sourceType: RKRemoteSelectOptionSourceType;\n}\n\ninterface RemoteOptionSourceResult {\n items: Array<Record<string, unknown>>;\n defaults?: OptionFieldDefaults;\n}\n\ntype RemoteOptionSourceLoader = () => Promise<RemoteOptionSourceResult>;\n\nconst enumOptionSourceRegistry: Record<string, RKRemoteSelectOption[]> = {};\nconst remoteOptionSourceRegistry: Record<string, RemoteOptionSourceLoader> = {};\n\nexport const enumOptionSourceOptions: RKRemoteSelectOptionSourceDescriptor[] = [];\nexport const remoteOptionSourceOptions: RKRemoteSelectOptionSourceDescriptor[] = [];\n\nfunction upsertOptionSourceDescriptor(\n list: RKRemoteSelectOptionSourceDescriptor[],\n descriptor: RKRemoteSelectOptionSourceDescriptor,\n) {\n const index = list.findIndex((item) => item.value === descriptor.value);\n\n if (index === -1) {\n list.push(descriptor);\n return;\n }\n\n list[index] = descriptor;\n}\n\nexport function registerRKRemoteSelectEnumOptionSource(\n key: string,\n options: RKRemoteSelectOption[],\n descriptor?: Omit<RKRemoteSelectOptionSourceDescriptor, 'value' | 'sourceType'>,\n) {\n enumOptionSourceRegistry[key] = options;\n upsertOptionSourceDescriptor(enumOptionSourceOptions, {\n label: descriptor?.label || key,\n value: key,\n description: descriptor?.description || '',\n sourceType: 'enum',\n });\n}\n\nexport function registerRKRemoteSelectRemoteOptionSource(\n key: string,\n loader: RemoteOptionSourceLoader,\n descriptor?: Omit<RKRemoteSelectOptionSourceDescriptor, 'value' | 'sourceType'>,\n) {\n remoteOptionSourceRegistry[key] = loader;\n upsertOptionSourceDescriptor(remoteOptionSourceOptions, {\n label: descriptor?.label || key,\n value: key,\n description: descriptor?.description || '',\n sourceType: 'remote',\n });\n}\n\nfunction normalizeOptionLabel(value: unknown): RKRemoteSelectOption['label'] | undefined {\n if (typeof value === 'string' || typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'boolean') {\n return String(value);\n }\n\n return undefined;\n}\n\nfunction isOptionValue(value: unknown): value is RKRemoteSelectOptionValue {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\n\nfunction normalizeOptionItems(\n items: Array<Record<string, unknown>>,\n defaults?: OptionFieldDefaults,\n source?: RKRemoteSelectOptionSource,\n): RKRemoteSelectOption[] {\n const labelField = source?.labelField || defaults?.labelField || 'label';\n const valueField = source?.valueField || defaults?.valueField || 'value';\n const childrenField = source?.childrenField || defaults?.childrenField || 'children';\n\n return items\n .map((item): RKRemoteSelectOption | undefined => {\n const label = normalizeOptionLabel(item[labelField]);\n const value = item[valueField];\n const children = item[childrenField];\n\n if (label === undefined || !isOptionValue(value)) {\n return undefined;\n }\n\n return {\n label,\n value,\n disabled: typeof item.disabled === 'boolean' ? item.disabled : undefined,\n children: Array.isArray(children)\n ? normalizeOptionItems(\n children.filter(\n (child): child is Record<string, unknown> =>\n typeof child === 'object' && child !== null,\n ),\n defaults,\n source,\n )\n : undefined,\n };\n })\n .filter((item): item is RKRemoteSelectOption => item !== undefined);\n}\n\nexport async function resolveRKRemoteSelectOptions(\n source?: RKRemoteSelectOptionSource,\n): Promise<RKRemoteSelectOption[]> {\n if (!source?.type || !source.key) {\n return [];\n }\n\n if (source.type === 'enum') {\n return enumOptionSourceRegistry[source.key] || [];\n }\n\n if (source.type === 'remote') {\n const loader = remoteOptionSourceRegistry[source.key];\n if (!loader) return [];\n\n const result = await loader();\n\n return normalizeOptionItems(result.items, result.defaults, source);\n }\n\n return [];\n}\n","import { ProForm, ProFormDependency } from '@ant-design/pro-components';\nimport type { ProFormInstance } from '@ant-design/pro-components';\nimport type { ColProps } from 'antd';\nimport type { Rule } from 'antd/es/form';\nimport type { NamePath } from 'antd/es/form/interface';\nimport { useEffect, useRef } from 'react';\nimport { RKSchemaFieldRegistry } from './fieldRegistry';\nimport type {\n RKSchemaDependencyResetValue,\n RKSchemaDynamicValue,\n RKSchemaFieldProps,\n RKSchemaFormColumn,\n RKSchemaFormProps,\n RKSchemaFormValues,\n} from './type';\n\nconst requiredRule: Rule = {\n required: true,\n message: '此项为必填项',\n};\n\ninterface RKSchemaDependencyFieldProps {\n column: RKSchemaFormColumn;\n values: RKSchemaFormValues;\n form: ProFormInstance;\n renderField: (values: RKSchemaFormValues) => React.ReactNode;\n}\n\nfunction getColProps(columns?: number): ColProps {\n switch (columns) {\n case 1:\n return { span: 24 };\n case 2:\n return { lg: 12, md: 12, sm: 24 };\n case 3:\n return { lg: 8, md: 12, sm: 24 };\n case 6:\n return { lg: 4, md: 6, sm: 12 };\n case 4:\n default:\n return { lg: 6, md: 8, sm: 12 };\n }\n}\n\nfunction resolveDynamicValue<T>(\n value: RKSchemaDynamicValue<T> | undefined,\n values: RKSchemaFormValues,\n) {\n if (typeof value === 'function') {\n return (value as (values: RKSchemaFormValues) => T)(values);\n }\n\n return value;\n}\n\nfunction getColumnKey(column: RKSchemaFormColumn, index: number) {\n return column.key || `${String(column.dataIndex)}-${index}`;\n}\n\nfunction getDependencySnapshot(values: RKSchemaFormValues) {\n return JSON.stringify(values);\n}\n\nfunction resolveDependencyResetValue(\n resetValue: RKSchemaDependencyResetValue | undefined,\n values: RKSchemaFormValues,\n previousValues?: RKSchemaFormValues,\n) {\n if (typeof resetValue === 'function') {\n return resetValue(values, previousValues);\n }\n\n return resetValue;\n}\n\nfunction setFieldValue(form: ProFormInstance, name: NamePath, value: unknown) {\n const setField = form.setFieldValue;\n\n if (setField) {\n setField(name, value);\n return;\n }\n\n form.setFields([{ name, value }]);\n}\n\nfunction RKSchemaDependencyField({\n column,\n values,\n form,\n renderField,\n}: RKSchemaDependencyFieldProps) {\n const isFirstRenderRef = useRef(true);\n const previousValuesRef = useRef<RKSchemaFormValues>();\n const previousSnapshotRef = useRef<string>();\n const dependencySnapshot = getDependencySnapshot(values);\n const shouldResetOnDependencyChange = column.resetOnDependencyChange !== false;\n\n useEffect(() => {\n if (previousSnapshotRef.current === dependencySnapshot) {\n return;\n }\n\n if (!shouldResetOnDependencyChange) {\n previousValuesRef.current = values;\n previousSnapshotRef.current = dependencySnapshot;\n isFirstRenderRef.current = false;\n return;\n }\n\n if (isFirstRenderRef.current) {\n previousValuesRef.current = values;\n previousSnapshotRef.current = dependencySnapshot;\n isFirstRenderRef.current = false;\n return;\n }\n\n setFieldValue(\n form,\n column.dataIndex,\n resolveDependencyResetValue(column.dependencyResetValue, values, previousValuesRef.current),\n );\n previousValuesRef.current = values;\n previousSnapshotRef.current = dependencySnapshot;\n }, [column, dependencySnapshot, form, shouldResetOnDependencyChange, values]);\n\n return <>{renderField(values)}</>;\n}\n\nexport default function RKSchemaForm<T = Record<string, unknown>>(props: RKSchemaFormProps<T>) {\n const { columns, columnCount, fieldColProps, rowProps, ...formProps } = props;\n const defaultColProps = fieldColProps || getColProps(columnCount);\n\n const renderColumn = (\n column: RKSchemaFormColumn,\n index: number,\n values: RKSchemaFormValues = {},\n ) => {\n const {\n title,\n dataIndex,\n valueType = 'text',\n required,\n disabled,\n readonly,\n initialValue,\n rules,\n tooltip,\n extra,\n colProps,\n fieldProps,\n } = column;\n const Component = RKSchemaFieldRegistry[valueType];\n if (!Component) return null;\n\n const nextHidden = resolveDynamicValue(column.hidden, values);\n if (nextHidden === true) return null;\n\n const nextRequired = resolveDynamicValue(required, values);\n const nextDisabled = resolveDynamicValue(disabled, values);\n const nextReadonly = resolveDynamicValue(readonly, values);\n const nextFieldProps =\n resolveDynamicValue<RKSchemaFieldProps>(fieldProps, values) || undefined;\n\n return (\n <Component\n key={getColumnKey(column, index)}\n label={title}\n name={dataIndex}\n disabled={nextDisabled}\n readonly={nextReadonly}\n initialValue={initialValue}\n rules={[...(nextRequired === true ? [requiredRule] : []), ...(rules || [])]}\n tooltip={tooltip}\n extra={extra}\n colProps={colProps || defaultColProps}\n fieldProps={nextFieldProps}\n />\n );\n };\n\n return (\n <ProForm grid rowProps={{ gutter: 24, ...rowProps }} {...formProps}>\n {columns.map((column, index) => {\n if (!column.dependencies?.length) {\n return renderColumn(column, index);\n }\n\n return (\n <ProFormDependency key={getColumnKey(column, index)} name={column.dependencies}>\n {(values, form) => (\n <RKSchemaDependencyField\n column={column}\n values={values}\n form={form}\n renderField={(nextValues) => renderColumn(column, index, nextValues)}\n />\n )}\n </ProFormDependency>\n );\n })}\n </ProForm>\n );\n}\n\nexport * from './fieldRegistry';\nexport * from './optionSourceRegistry';\nexport * from './type';\n","import {\n ProFormCascader,\n ProFormCheckbox,\n ProFormColorPicker,\n ProFormDateMonthRangePicker,\n ProFormDatePicker,\n ProFormDateQuarterRangePicker,\n ProFormDateRangePicker,\n ProFormDateTimePicker,\n ProFormDateTimeRangePicker,\n ProFormDateWeekRangePicker,\n ProFormDateYearRangePicker,\n ProFormDigit,\n ProFormDigitRange,\n ProFormMoney,\n ProFormRadio,\n ProFormRate,\n ProFormSegmented,\n ProFormSelect,\n ProFormSlider,\n ProFormSwitch,\n ProFormText,\n ProFormTextArea,\n ProFormTimePicker,\n ProFormTreeSelect,\n ProFormUploadButton,\n ProFormUploadDragger,\n type ProFormItemProps,\n} from '@ant-design/pro-components';\nimport type { ComponentType } from 'react';\nimport { resolveRKSchemaOptions } from './optionSourceRegistry';\nimport type { RKSchemaFieldProps, RKSchemaOption, RKSchemaOptionSource } from './type';\n\nexport type RKSchemaFieldRenderer = ComponentType<ProFormItemProps & Record<string, unknown>>;\n\nfunction isFieldComponentProps(value: unknown): value is RKSchemaFieldProps {\n return typeof value === 'object' && value !== null;\n}\n\nfunction isDynamicOptionSource(source?: RKSchemaOptionSource) {\n return ['enum', 'remote'].includes(source?.type || '');\n}\n\nfunction getStaticOptions(fieldProps: RKSchemaFieldProps, optionFieldName: 'options' | 'treeData') {\n if (optionFieldName === 'treeData') {\n return fieldProps.treeData || fieldProps.options;\n }\n\n return fieldProps.options;\n}\n\nfunction asField(component: unknown): RKSchemaFieldRenderer {\n return component as RKSchemaFieldRenderer;\n}\n\nfunction createOptionField(\n Component: RKSchemaFieldRenderer,\n options: { optionFieldName?: 'options' | 'treeData' } = {},\n): RKSchemaFieldRenderer {\n const { optionFieldName = 'options' } = options;\n\n return function RKSchemaOptionsField(props: ProFormItemProps & Record<string, unknown>) {\n const fieldProps = isFieldComponentProps(props.fieldProps) ? props.fieldProps : {};\n const { options: staticOptions, treeData, optionSource, ...restFieldProps } = fieldProps;\n const shouldLoadDynamic = isDynamicOptionSource(optionSource);\n const resolvedStaticOptions =\n getStaticOptions({ ...fieldProps, options: staticOptions, treeData }, optionFieldName) || [];\n const request = shouldLoadDynamic\n ? async (): Promise<RKSchemaOption[]> => resolveRKSchemaOptions(optionSource)\n : undefined;\n\n return (\n <Component\n {...props}\n request={request || props.request}\n params={shouldLoadDynamic ? optionSource : props.params}\n fieldProps={{\n ...restFieldProps,\n [optionFieldName]: shouldLoadDynamic ? undefined : resolvedStaticOptions,\n }}\n />\n );\n };\n}\n\nexport const RKSchemaFieldRegistry: Record<string, RKSchemaFieldRenderer> = {\n text: asField(ProFormText),\n password: asField(ProFormText.Password),\n textarea: asField(ProFormTextArea),\n digit: asField(ProFormDigit),\n digitRange: asField(ProFormDigitRange),\n select: createOptionField(asField(ProFormSelect)),\n treeSelect: createOptionField(asField(ProFormTreeSelect), { optionFieldName: 'treeData' }),\n cascader: createOptionField(asField(ProFormCascader)),\n radio: createOptionField(asField(ProFormRadio.Group)),\n checkbox: asField(ProFormCheckbox),\n checkboxGroup: createOptionField(asField(ProFormCheckbox.Group)),\n switch: asField(ProFormSwitch),\n slider: asField(ProFormSlider),\n rate: asField(ProFormRate),\n segmented: createOptionField(asField(ProFormSegmented)),\n color: asField(ProFormColorPicker),\n date: asField(ProFormDatePicker),\n dateRange: asField(ProFormDateRangePicker),\n dateTime: asField(ProFormDateTimePicker),\n dateTimeRange: asField(ProFormDateTimeRangePicker),\n dateWeekRange: asField(ProFormDateWeekRangePicker),\n dateMonthRange: asField(ProFormDateMonthRangePicker),\n dateQuarterRange: asField(ProFormDateQuarterRangePicker),\n dateYearRange: asField(ProFormDateYearRangePicker),\n time: asField(ProFormTimePicker),\n timeRange: asField(ProFormTimePicker.RangePicker),\n money: asField(ProFormMoney),\n uploadButton: asField(ProFormUploadButton),\n uploadDragger: asField(ProFormUploadDragger),\n};\n\nexport function registerRKSchemaField(valueType: string, renderer: RKSchemaFieldRenderer) {\n RKSchemaFieldRegistry[valueType] = renderer;\n}\n","import { ProTable } from '@ant-design/pro-components';\nimport type { ProTableProps } from '@ant-design/pro-components';\nimport type { SortOrder } from 'antd/es/table/interface';\n\nexport type RKTableRequestParams = {\n current?: number;\n pageSize?: number;\n [key: string]: any;\n};\n\nexport type RKTableResponse<DataSource extends Record<string, any>> = {\n code?: number;\n success?: boolean;\n data?:\n | DataSource[]\n | {\n records?: DataSource[];\n list?: DataSource[];\n total?: number;\n [key: string]: unknown;\n };\n records?: DataSource[];\n list?: DataSource[];\n total?: number;\n [key: string]: unknown;\n};\n\nexport type RKTableRequestApi<\n DataSource extends Record<string, any>,\n RequestParams,\n> = (data: RequestParams) => Promise<RKTableResponse<DataSource>>;\n\nexport type RKTableRequestAdapter<DataSource extends Record<string, any>> = (\n response: RKTableResponse<DataSource>,\n) => {\n data: DataSource[];\n success: boolean;\n total?: number;\n};\n\nexport type RKTableProps<\n DataSource extends Record<string, any>,\n Params extends Record<string, any> = Record<string, any>,\n ValueType = 'text',\n RequestParams = RKTableRequestParams,\n> = ProTableProps<DataSource, Params, ValueType> & {\n requestApi?: RKTableRequestApi<DataSource, RequestParams>;\n requestAdapter?: RKTableRequestAdapter<DataSource>;\n requestParamsFormatter?: (\n params: Params & RKTableRequestParams,\n sort: Record<string, SortOrder>,\n filter: Record<string, (string | number)[] | null>,\n ) => RequestParams;\n};\n\nfunction resolveRecords<DataSource extends Record<string, any>>(\n response: RKTableResponse<DataSource>,\n) {\n if (Array.isArray(response.data)) return response.data;\n\n if (response.data && typeof response.data === 'object') {\n if (Array.isArray(response.data.records)) return response.data.records;\n if (Array.isArray(response.data.list)) return response.data.list;\n }\n\n if (Array.isArray(response.records)) return response.records;\n if (Array.isArray(response.list)) return response.list;\n\n return [];\n}\n\nfunction resolveTotal<DataSource extends Record<string, any>>(\n response: RKTableResponse<DataSource>,\n) {\n if (typeof response.total === 'number') return response.total;\n\n if (response.data && !Array.isArray(response.data) && typeof response.data.total === 'number') {\n return response.data.total;\n }\n\n return resolveRecords(response).length;\n}\n\nfunction defaultRequestAdapter<DataSource extends Record<string, any>>(\n response: RKTableResponse<DataSource>,\n) {\n const success =\n typeof response.success === 'boolean'\n ? response.success\n : response.code === undefined || response.code === 200;\n\n return {\n data: resolveRecords(response),\n success,\n total: resolveTotal(response),\n };\n}\n\nconst RKTable = <\n DataSource extends Record<string, any>,\n Params extends Record<string, any> = Record<string, any>,\n ValueType = 'text',\n RequestParams = RKTableRequestParams,\n>({\n request,\n requestApi,\n requestAdapter = defaultRequestAdapter,\n requestParamsFormatter,\n search,\n options,\n pagination,\n scroll,\n form,\n rowKey,\n tableAlertRender,\n ...restProps\n}: RKTableProps<DataSource, Params, ValueType, RequestParams>) => {\n const tableSearch =\n search === false\n ? false\n : {\n filterType: 'query' as const,\n defaultCollapsed: false,\n ...(typeof search === 'object' ? search : {}),\n };\n const tableOptions =\n options === false\n ? false\n : {\n reload: true,\n density: false,\n setting: false,\n ...(typeof options === 'object' ? options : {}),\n };\n const tablePagination =\n pagination === false\n ? false\n : {\n defaultPageSize: 20,\n showSizeChanger: true,\n disabled: false,\n ...(typeof pagination === 'object' ? pagination : {}),\n };\n const tableForm = {\n syncToUrl: true,\n syncToInitialValues: false,\n ...(typeof form === 'object' ? form : {}),\n };\n const tableScroll = {\n x: 'max-content',\n ...(typeof scroll === 'object' ? scroll : {}),\n };\n const tableRequest = requestApi\n ? async (\n params: Params & RKTableRequestParams,\n sort: Record<string, SortOrder>,\n filter: Record<string, (string | number)[] | null>,\n ) => {\n const nextParams = requestParamsFormatter\n ? requestParamsFormatter(params, sort, filter)\n : (params as unknown as RequestParams);\n const response = await requestApi(nextParams);\n\n return requestAdapter(response);\n }\n : request;\n\n return (\n <ProTable<DataSource, Params, ValueType>\n rowKey={rowKey || 'id'}\n tableAlertRender={tableAlertRender ?? false}\n options={tableOptions}\n pagination={tablePagination}\n scroll={tableScroll}\n form={tableForm}\n {...restProps}\n search={tableSearch}\n request={tableRequest}\n />\n );\n};\n\nexport default RKTable;\n"],"mappings":"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","names":["useMemo","jsx","isOptionValue","normalizeOptionLabel","useMemo","requestParams","useRef","ProFormSelect","jsx","isDynamicOptionSource","ProFormSelect","jsx","useRef","jsx"]}
|