conditional-selection 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,205 @@
1
+ {
2
+ // RHook 代码片段 version 1.0.0, 如果和插件版本号不对应,卸载插件重装或手动升级插件
3
+ "获取组件实例": {
4
+ "scope": "javascript,typescript",
5
+ "prefix": "useCompRef",
6
+ "body": ["const ${1:componentInstance} = useCompRef(${2});"],
7
+ "description": "useCompRef ",
8
+ },
9
+ "表单弹窗Hook": {
10
+ "scope": "javascript,typescript",
11
+ "prefix": "useModalForm",
12
+ "body": [
13
+ "const { showModal } = useModalForm<{$1}>({",
14
+ " title: '操作',",
15
+ " layout: 'vertical',",
16
+ " stateDefault: {},",
17
+ " formGroup: [],",
18
+ " onSubmit: async formState => {",
19
+ " console.log('onSubmit:formState -->', formState);",
20
+ " // await apiXXX(formState)",
21
+ " },",
22
+ "});",
23
+ ],
24
+ "description": "表单弹窗Hook",
25
+ },
26
+ "useModal配合RForm,快速实现新增等功能": {
27
+ "scope": "javascript,typescript",
28
+ "prefix": "useModal",
29
+ "body": [
30
+ "const refForm = ref<RFormInstance | null>(null);",
31
+ "const formState = reactive({});",
32
+ "",
33
+ "const { visible, loading, open, close, confirm } = useModal(",
34
+ " async () => {",
35
+ " await refForm.value?.getFormRef()?.validate();",
36
+ " },",
37
+ " {",
38
+ " afterClose() {",
39
+ " refForm.value?.getFormRef()?.resetFields();",
40
+ " },",
41
+ " },",
42
+ ");",
43
+ ],
44
+ "description": "useModal配合RForm,快速实现新增等功能",
45
+ },
46
+ "处理表格行合并场景": {
47
+ "scope": "javascript,typescript",
48
+ "prefix": "useTableMerge",
49
+ "body": [
50
+ "const list = ref<T[]>([]);",
51
+ "const { tableColumns, updateColumns } = useTableMerge(list, {",
52
+ " columns:[],",
53
+ " // ⚠️ 使用后请删除下列注释 !!!!!",
54
+ " mergeColumnFields: ['category_name'],",
55
+ " /* 当前列的行合并默认会比较前所有列,可配置跳过某些前置列的比对 */",
56
+ " excludeColumnFields: ['id'],",
57
+ " /* 默认使用列的dataIndex作为比对字段,dataIndex不存在会取key,可以通过配置修改比对的字段 */",
58
+ " compareMap: { category_name: 'category_id' },",
59
+ " /* 与customCell一样,可自定义处理,自定义返回的配置项与内部配置的customCell方法返回值合并 */",
60
+ " customCellHandler(row, rowIndex, column) {",
61
+ " return {}",
62
+ " }",
63
+ "});",
64
+ ],
65
+ "description": "处理表格行合并场景",
66
+ },
67
+ "便捷处理表格选择项": {
68
+ "scope": "javascript,typescript",
69
+ "prefix": "useTableSelection",
70
+ "body": [
71
+ "// 在 RTable 中添加 :tableProps=\"{ rowSelection }\" 使用后请删除!;",
72
+ "const { rowSelection, selectedRowKeys } = useTableSelection({",
73
+ " key: '${1:id}', // 如果是 id 请删除,默认为 id",
74
+ " /* 禁止选择项,使用后请删除! */",
75
+ " disabledSelect: record => record.td_checkbox_disable,",
76
+ " // 根据需求去定",
77
+ " rowSelection: {",
78
+ " selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT, Table.SELECTION_NONE],",
79
+ " },",
80
+ "});",
81
+ ],
82
+ "description": "便捷处理表格选择项",
83
+ },
84
+ // R组件代码片段
85
+ "表格操作栏组件": {
86
+ "scope": "html",
87
+ "prefix": "RButtonGroup",
88
+ "body": ["<RButtonGroup", " :btn-group=\"btnGroup\"", " :group-handler=\"groupHandler\"", "/>"],
89
+ "description": "表格操作栏组件",
90
+ },
91
+ "通用表单": {
92
+ "scope": "html",
93
+ "prefix": "RForm",
94
+ "body": ["<RForm", " ref=\"formRef\"", " v-model:value=\"formState\"", " :form-group=\"formGroup\"", "/>"],
95
+ "description": "通用表单",
96
+ },
97
+ "通用表单弹窗": {
98
+ "scope": "html",
99
+ "prefix": "RModalForm",
100
+ "body": [
101
+ "<RModalForm",
102
+ " ref=\"refRModalForm\"",
103
+ " :form-group=\"formGroup\"",
104
+ " :submit=\"onSubmit\"",
105
+ " title=\"${1:title}\"",
106
+ "/>",
107
+ ],
108
+ "description": "通用表单弹窗",
109
+ },
110
+ "通用弹窗": {
111
+ "scope": "html",
112
+ "prefix": "RModal",
113
+ "body": ["<RModal", " v-model:value=\"visible\"", " title=\"${1:title}\"", "/>"],
114
+ "description": "通用弹窗",
115
+ },
116
+ "页尾组件": {
117
+ "scope": "html",
118
+ "prefix": "RPageFooter",
119
+ "body": [
120
+ "<RPageFooter",
121
+ " :pagination=\"pagination\"",
122
+ " position=\"absolute\"",
123
+ " show-total",
124
+ " show-total-page",
125
+ " @pagination-change=\"onPageChange\"",
126
+ " @pagination-show-size-change=\"onShowSizeChange\"",
127
+ "/>",
128
+ ],
129
+ "description": "页尾组件",
130
+ },
131
+ "预览组件,可预览图片、视频、pdf等": {
132
+ "scope": "html",
133
+ "prefix": "RPreview",
134
+ "body": ["<RPreview", " v-model:preview=\"preview\"", " type=\"${1:type}\"", " :value=\"previewValue\"", "/>"],
135
+ "description": "预览组件,可预览图片、视频、pdf等",
136
+ },
137
+ "更符合业务的时间选择框": {
138
+ "scope": "html",
139
+ "prefix": "RRangePicker",
140
+ "body": ["<RRangePicker", " v-model:value=\"rangePickerValue\"", " @change=\"onRangePickerChange\"", "/>"],
141
+ "description": "更符合业务的时间选择框",
142
+ },
143
+ "更符合业务的下拉框": {
144
+ "scope": "html",
145
+ "prefix": "RSelect",
146
+ "body": [
147
+ "<RSelect",
148
+ " v-model:value=\"selectValue\"",
149
+ " :config=\"{ $1 }\"",
150
+ " @change=\"onSelectChange\"",
151
+ "/>",
152
+ ],
153
+ "description": "更符合业务的下拉框",
154
+ },
155
+ "数据统计组件": {
156
+ "scope": "html",
157
+ "prefix": "RStatistic",
158
+ "body": ["<RStatistic", " title=\"${1:title}\"", " :value=\"value\"", "/>"],
159
+ "description": "数据统计组件",
160
+ },
161
+ "通用表格": {
162
+ "scope": "html",
163
+ "prefix": "RTable",
164
+ "body": ["<RTable", " :api=\"apiSearchTable\"", " :columns=\"columns\"", "/>"],
165
+ "description": "通用表格",
166
+ },
167
+ "文本框输入的内容转换为标签": {
168
+ "scope": "html",
169
+ "prefix": "RTagInput",
170
+ "body": [
171
+ "<RTagInput",
172
+ " v-model:value=\"value\"",
173
+ " placeholder=\"请输入商品ID,多个商品ID可用空格键分隔\"",
174
+ "/>",
175
+ ],
176
+ "description": "文本框输入的内容转换为标签",
177
+ },
178
+ "可折叠文本组件": {
179
+ "scope": "html",
180
+ "prefix": "RTextCollapse",
181
+ "body": ["<RTextCollapse", " :line=\"2\"", " :text=\"${1:$1}\"", " :width=\"300\"", " />"],
182
+ "description": "可折叠文本组件",
183
+ },
184
+ "通用上传组件": {
185
+ "scope": "html",
186
+ "prefix": "RUpload",
187
+ "body": [
188
+ "<RUpload",
189
+ " v-model:value=\"fileList\"",
190
+ " :oss-config=\"{",
191
+ " uploadApi: generateAndUploadImage2Oss,",
192
+ " }\"",
193
+ " show-text=\"${1:text}\"",
194
+ " template=\"dragger\"",
195
+ "/>",
196
+ ],
197
+ "description": "通用上传组件",
198
+ },
199
+ "视频播放组件": {
200
+ "scope": "html",
201
+ "prefix": "RVideo",
202
+ "body": ["<RVideo", " ref=\"refRVideo\"", " height=\"200px\"", " :src=\"${1:http}\"", " width=\"200px\"", "/>"],
203
+ "description": "视频播放组件",
204
+ },
205
+ }
package/README.md ADDED
@@ -0,0 +1,92 @@
1
+ # Conditional Selection 组件库
2
+
3
+ ## 简介
4
+ 本项目为一个支持条件树编辑的 React 组件库,支持递归嵌套、条件分组、动态增删、禁用控制等功能,适用于复杂表单、规则配置等场景。
5
+
6
+ ## 安装依赖
7
+
8
+ ```bash
9
+ npm install
10
+ ```
11
+
12
+ ## 启动示例项目
13
+
14
+ ```bash
15
+ npm run dev
16
+ ```
17
+
18
+ ## 主要功能
19
+ - 条件树递归编辑
20
+ - 条件分组(AND/OR)切换
21
+ - 条件项动态增删
22
+ - 层级/数量/禁用等参数控制
23
+ - 插槽自定义条件行内容
24
+ - 状态管理采用 useImmer,数据流统一
25
+
26
+ ## 使用方法
27
+
28
+ ### 基本用法
29
+
30
+ ```tsx
31
+ import { ConditionalSelection } from '../packages/ConditionalSelection';
32
+ import type { TConditionalSelection } from '../packages/ConditionalSelection/types';
33
+
34
+ <ConditionalSelection
35
+ conditionalRules={rules}
36
+ maxLevel={3}
37
+ zeroLevelMaxLength={3}
38
+ disabled={false}
39
+ onChange={setRules}
40
+ renderConditionRules={(item, change) => (
41
+ <FlexSelect item={item} onChange={val => change(val)} />
42
+ )}
43
+ />
44
+ ```
45
+
46
+ ### 参数说明
47
+ - `conditionalRules`:条件树数据(可为 null/undefined,自动初始化)
48
+ - `maxLevel`:最大递归层级(默认 1,需大于 0)
49
+ - `zeroLevelMaxLength`:最外层子项最大数量(默认不限,需大于 1)
50
+ - `disabled`:是否禁用全部/部分操作(可传布尔或对象)
51
+ - `onChange`:数据变更回调
52
+ - `renderConditionRules`:插槽,渲染每个条件行内容,参数为当前节点和变更 handler
53
+
54
+ ### 插槽自定义
55
+
56
+ 插槽 `renderConditionRules` 支持自定义条件行内容,推荐用原生表单控件或自定义组件。
57
+
58
+ ```tsx
59
+ const FlexSelect = ({ item, onChange }) => (
60
+ <div>
61
+ {/* 字段选择、函数选择、值选择等 */}
62
+ <select ... onChange={...} />
63
+ ...
64
+ </div>
65
+ );
66
+ ```
67
+
68
+ ### 获取数据
69
+
70
+ 可通过 ref 获取当前条件树数据:
71
+
72
+ ```tsx
73
+ const ref = useRef<any>();
74
+ ...
75
+ <ConditionalSelection ref={ref} ... />
76
+ ...
77
+ const data = await ref.current.getConditionalSelectionData();
78
+ ```
79
+
80
+ ## 性能优化建议
81
+ - 递归 handler 用 useCallback 包裹,减少无谓重渲染
82
+ - 父组件插槽建议也用 useCallback
83
+ - 如需进一步性能分析,建议用 React Profiler
84
+
85
+ ## 贡献与开发
86
+
87
+ 1. 修改源码后可直接运行 `npm run dev` 查看效果
88
+ 2. 支持 monorepo 结构,组件统一从 packages/index.ts 导出
89
+ 3. 支持 less 样式
90
+
91
+ ## License
92
+ MIT
@@ -0,0 +1 @@
1
+ .conditional-selection{width:100%}.conditional-selection .create-box{display:inline-block;margin-bottom:8px;cursor:pointer}.conditional-selection .conditional-content{width:100%}.relative-box{position:relative;width:100%}.relative-box .conditional-list-box{flex:1}.relative-box .conditional-item{display:flex;align-items:center;margin-top:8px}.relative-box .conditional-list:first-child{margin-top:-8px}.relative-box .right-box{margin-left:32px}.link-line{position:absolute;z-index:999;height:100%;margin:0 4px}.link-line .link-label{position:absolute;top:50%;width:22px;color:#c85000;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;background-color:#f9e5e5;border-radius:4px;transform:translateY(-50%)}.link-line:before{position:absolute;top:0;bottom:0;left:10px;width:2px;content:"";background-color:#c85000;opacity:.2}.conditional-handle{display:flex;gap:8px;align-items:center}.conditional-handle .create-handle{display:inline-block;width:50px;cursor:pointer;font-size:14px}.conditional-handle .del-handle{display:inline-block;font-size:14px;width:24px;cursor:pointer}.conditional-handle .del-handle:hover{color:red}
@@ -0,0 +1,58 @@
1
+ import { ForwardRefExoticComponent } from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { RefAttributes } from 'react';
4
+
5
+ export declare const ConditionalSelection: ForwardRefExoticComponent<TConditionalSelectionProps & RefAttributes< {
6
+ getConditionalSelectionData: (validate?: boolean) => Promise<any>;
7
+ }>>;
8
+
9
+ export declare enum EConditionalSelectionFramework {
10
+ /** 内容组 */
11
+ GROUP = "group",
12
+ /** 内容 */
13
+ INDIVIDUAL = "individual"
14
+ }
15
+
16
+ export declare enum EConditionalSelectionLink {
17
+ AND = "and",
18
+ OR = "or"
19
+ }
20
+
21
+ export declare type TConditionalSelection<T = any> = {
22
+ _id: string;
23
+ /** 结构标识 */
24
+ framework: EConditionalSelectionFramework;
25
+ /** 内容关系 */
26
+ link?: EConditionalSelectionLink;
27
+ group?: TConditionalSelection<T>[];
28
+ individual?: Record<string, any>;
29
+ level: number;
30
+ };
31
+
32
+ export declare type TConditionalSelectionDisabledProps = {
33
+ addItem?: boolean;
34
+ delItem?: boolean;
35
+ linkChange?: boolean;
36
+ };
37
+
38
+ export declare type TConditionalSelectionProps = {
39
+ /** 数据内容 */
40
+ conditionalRules?: TConditionalSelection | null;
41
+ /** deep 层级限制,需大于0,默认1 */
42
+ maxLevel?: number;
43
+ /** 最外层子项数量限制,需大于1,默认不限 */
44
+ zeroLevelMaxLength?: number;
45
+ /** 是否禁用新增、删除、关系变更 */
46
+ disabled?: boolean | TConditionalSelectionDisabledProps;
47
+ /** 数据变更回调 */
48
+ onChange?: (value: TConditionalSelection | undefined) => void;
49
+ /** 渲染条件行内容的插槽,参数为当前 INDIVIDUAL 节点和变更 handler */
50
+ renderConditionRules?: (conditionRulesData: TConditionalSelection, change: (data: Record<string, any>) => void) => ReactNode;
51
+ /** 渲染创建条件按钮插槽(createCondition) */
52
+ renderCreateCondition?: (params: {
53
+ createRules: (ruleData: TConditionalSelection) => void;
54
+ rulesData: TConditionalSelection;
55
+ }) => ReactNode;
56
+ };
57
+
58
+ export { }
package/dist/ui.cjs.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=require("react");var ge={exports:{}},ee={};/**
2
+ * @license React
3
+ * react-jsx-runtime.production.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var yt;function Nr(){if(yt)return ee;yt=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(n,a,i){var s=null;if(i!==void 0&&(s=""+i),a.key!==void 0&&(s=""+a.key),"key"in a){i={};for(var c in a)c!=="key"&&(i[c]=a[c])}else i=a;return a=i.ref,{$$typeof:e,type:n,key:s,ref:a!==void 0?a:null,props:i}}return ee.Fragment=t,ee.jsx=r,ee.jsxs=r,ee}var te={};/**
10
+ * @license React
11
+ * react-jsx-runtime.development.js
12
+ *
13
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var bt;function Ir(){return bt||(bt=1,process.env.NODE_ENV!=="production"&&(function(){function e(o){if(o==null)return null;if(typeof o=="function")return o.$$typeof===Rr?null:o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case Q:return"Fragment";case Fe:return"Profiler";case Me:return"StrictMode";case z:return"Suspense";case Er:return"SuspenseList";case Cr:return"Activity"}if(typeof o=="object")switch(typeof o.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),o.$$typeof){case _e:return"Portal";case R:return o.displayName||"Context";case E:return(o._context.displayName||"Context")+".Consumer";case D:var f=o.render;return o=o.displayName,o||(o=f.displayName||f.name||"",o=o!==""?"ForwardRef("+o+")":"ForwardRef"),o;case $r:return f=o.displayName||null,f!==null?f:e(o.type)||"Memo";case ze:f=o._payload,o=o._init;try{return e(o(f))}catch{}}return null}function t(o){return""+o}function r(o){try{t(o);var f=!1}catch{f=!0}if(f){f=console;var v=f.error,j=typeof Symbol=="function"&&Symbol.toStringTag&&o[Symbol.toStringTag]||o.constructor.name||"Object";return v.call(f,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",j),t(o)}}function n(o){if(o===Q)return"<>";if(typeof o=="object"&&o!==null&&o.$$typeof===ze)return"<...>";try{var f=e(o);return f?"<"+f+">":"<...>"}catch{return"<...>"}}function a(){var o=Le.A;return o===null?null:o.getOwner()}function i(){return Error("react-stack-top-frame")}function s(o){if(ft.call(o,"key")){var f=Object.getOwnPropertyDescriptor(o,"key").get;if(f&&f.isReactWarning)return!1}return o.key!==void 0}function c(o,f){function v(){dt||(dt=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",f))}v.isReactWarning=!0,Object.defineProperty(o,"key",{get:v,configurable:!0})}function h(){var o=e(this.type);return pt[o]||(pt[o]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),o=this.props.ref,o!==void 0?o:null}function p(o,f,v,j,he,Ve){var A=v.ref;return o={$$typeof:_,type:o,key:f,props:v,_owner:j},(A!==void 0?A:null)!==null?Object.defineProperty(o,"ref",{enumerable:!1,get:h}):Object.defineProperty(o,"ref",{enumerable:!1,value:null}),o._store={},Object.defineProperty(o._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(o,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(o,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:he}),Object.defineProperty(o,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:Ve}),Object.freeze&&(Object.freeze(o.props),Object.freeze(o)),o}function l(o,f,v,j,he,Ve){var A=f.children;if(A!==void 0)if(j)if(xr(A)){for(j=0;j<A.length;j++)m(A[j]);Object.freeze&&Object.freeze(A)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else m(A);if(ft.call(f,"key")){A=e(o);var W=Object.keys(f).filter(function(kr){return kr!=="key"});j=0<W.length?"{key: someKey, "+W.join(": ..., ")+": ...}":"{key: someKey}",gt[A+j]||(W=0<W.length?"{"+W.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
+ let props = %s;
19
+ <%s {...props} />
20
+ React keys must be passed directly to JSX without using spread:
21
+ let props = %s;
22
+ <%s key={someKey} {...props} />`,j,A,W,A),gt[A+j]=!0)}if(A=null,v!==void 0&&(r(v),A=""+v),s(f)&&(r(f.key),A=""+f.key),"key"in f){v={};for(var Ge in f)Ge!=="key"&&(v[Ge]=f[Ge])}else v=f;return A&&c(v,typeof o=="function"?o.displayName||o.name||"Unknown":o),p(o,A,v,a(),he,Ve)}function m(o){d(o)?o._store&&(o._store.validated=1):typeof o=="object"&&o!==null&&o.$$typeof===ze&&(o._payload.status==="fulfilled"?d(o._payload.value)&&o._payload.value._store&&(o._payload.value._store.validated=1):o._store&&(o._store.validated=1))}function d(o){return typeof o=="object"&&o!==null&&o.$$typeof===_}var u=T,_=Symbol.for("react.transitional.element"),_e=Symbol.for("react.portal"),Q=Symbol.for("react.fragment"),Me=Symbol.for("react.strict_mode"),Fe=Symbol.for("react.profiler"),E=Symbol.for("react.consumer"),R=Symbol.for("react.context"),D=Symbol.for("react.forward_ref"),z=Symbol.for("react.suspense"),Er=Symbol.for("react.suspense_list"),$r=Symbol.for("react.memo"),ze=Symbol.for("react.lazy"),Cr=Symbol.for("react.activity"),Rr=Symbol.for("react.client.reference"),Le=u.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ft=Object.prototype.hasOwnProperty,xr=Array.isArray,Ue=console.createTask?console.createTask:function(){return null};u={react_stack_bottom_frame:function(o){return o()}};var dt,pt={},_t=u.react_stack_bottom_frame.bind(u,i)(),ht=Ue(n(i)),gt={};te.Fragment=Q,te.jsx=function(o,f,v){var j=1e4>Le.recentlyCreatedOwnerStacks++;return l(o,f,v,!1,j?Error("react-stack-top-frame"):_t,j?Ue(n(o)):ht)},te.jsxs=function(o,f,v){var j=1e4>Le.recentlyCreatedOwnerStacks++;return l(o,f,v,!0,j?Error("react-stack-top-frame"):_t,j?Ue(n(o)):ht)}})()),te}var mt;function Dr(){return mt||(mt=1,process.env.NODE_ENV==="production"?ge.exports=Nr():ge.exports=Ir()),ge.exports}var g=Dr(),Qt=typeof global=="object"&&global&&global.Object===Object&&global,Mr=typeof self=="object"&&self&&self.Object===Object&&self,C=Qt||Mr||Function("return this")(),q=C.Symbol,er=Object.prototype,Fr=er.hasOwnProperty,zr=er.toString,re=q?q.toStringTag:void 0;function Lr(e){var t=Fr.call(e,re),r=e[re];try{e[re]=void 0;var n=!0}catch{}var a=zr.call(e);return n&&(t?e[re]=r:delete e[re]),a}var Ur=Object.prototype,Vr=Ur.toString;function Gr(e){return Vr.call(e)}var Br="[object Null]",Yr="[object Undefined]",vt=q?q.toStringTag:void 0;function fe(e){return e==null?e===void 0?Yr:Br:vt&&vt in Object(e)?Lr(e):Gr(e)}function de(e){return e!=null&&typeof e=="object"}var it=Array.isArray;function Pe(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Wr="[object AsyncFunction]",Hr="[object Function]",qr="[object GeneratorFunction]",Jr="[object Proxy]";function tr(e){if(!Pe(e))return!1;var t=fe(e);return t==Hr||t==qr||t==Wr||t==Jr}var Be=C["__core-js_shared__"],Tt=(function(){var e=/[^.]+$/.exec(Be&&Be.keys&&Be.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();function Kr(e){return!!Tt&&Tt in e}var Xr=Function.prototype,Zr=Xr.toString;function B(e){if(e!=null){try{return Zr.call(e)}catch{}try{return e+""}catch{}}return""}var Qr=/[\\^$.*+?()[\]{}|]/g,en=/^\[object .+?Constructor\]$/,tn=Function.prototype,rn=Object.prototype,nn=tn.toString,an=rn.hasOwnProperty,on=RegExp("^"+nn.call(an).replace(Qr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function sn(e){if(!Pe(e)||Kr(e))return!1;var t=tr(e)?on:en;return t.test(B(e))}function cn(e,t){return e==null?void 0:e[t]}function Y(e,t){var r=cn(e,t);return sn(r)?r:void 0}var qe=Y(C,"WeakMap"),jt=Object.create,un=(function(){function e(){}return function(t){if(!Pe(t))return{};if(jt)return jt(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}})(),At=(function(){try{var e=Y(Object,"defineProperty");return e({},"",{}),e}catch{}})();function ln(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}var fn=9007199254740991,dn=/^(?:0|[1-9]\d*)$/;function pn(e,t){var r=typeof e;return t=t??fn,!!t&&(r=="number"||r!="symbol"&&dn.test(e))&&e>-1&&e%1==0&&e<t}function _n(e,t,r){t=="__proto__"&&At?At(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}function rr(e,t){return e===t||e!==e&&t!==t}var hn=Object.prototype,gn=hn.hasOwnProperty;function yn(e,t,r){var n=e[t];(!(gn.call(e,t)&&rr(n,r))||r===void 0&&!(t in e))&&_n(e,t,r)}var bn=9007199254740991;function nr(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=bn}function mn(e){return e!=null&&nr(e.length)&&!tr(e)}var vn=Object.prototype;function ar(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||vn;return e===r}function Tn(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}var jn="[object Arguments]";function wt(e){return de(e)&&fe(e)==jn}var or=Object.prototype,An=or.hasOwnProperty,wn=or.propertyIsEnumerable,On=wt((function(){return arguments})())?wt:function(e){return de(e)&&An.call(e,"callee")&&!wn.call(e,"callee")};function Sn(){return!1}var ir=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ot=ir&&typeof module=="object"&&module&&!module.nodeType&&module,Pn=Ot&&Ot.exports===ir,St=Pn?C.Buffer:void 0,En=St?St.isBuffer:void 0,sr=En||Sn,$n="[object Arguments]",Cn="[object Array]",Rn="[object Boolean]",xn="[object Date]",kn="[object Error]",Nn="[object Function]",In="[object Map]",Dn="[object Number]",Mn="[object Object]",Fn="[object RegExp]",zn="[object Set]",Ln="[object String]",Un="[object WeakMap]",Vn="[object ArrayBuffer]",Gn="[object DataView]",Bn="[object Float32Array]",Yn="[object Float64Array]",Wn="[object Int8Array]",Hn="[object Int16Array]",qn="[object Int32Array]",Jn="[object Uint8Array]",Kn="[object Uint8ClampedArray]",Xn="[object Uint16Array]",Zn="[object Uint32Array]",b={};b[Bn]=b[Yn]=b[Wn]=b[Hn]=b[qn]=b[Jn]=b[Kn]=b[Xn]=b[Zn]=!0;b[$n]=b[Cn]=b[Vn]=b[Rn]=b[Gn]=b[xn]=b[kn]=b[Nn]=b[In]=b[Dn]=b[Mn]=b[Fn]=b[zn]=b[Ln]=b[Un]=!1;function Qn(e){return de(e)&&nr(e.length)&&!!b[fe(e)]}function st(e){return function(t){return e(t)}}var cr=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ne=cr&&typeof module=="object"&&module&&!module.nodeType&&module,ea=ne&&ne.exports===cr,Ye=ea&&Qt.process,J=(function(){try{var e=ne&&ne.require&&ne.require("util").types;return e||Ye&&Ye.binding&&Ye.binding("util")}catch{}})(),Pt=J&&J.isTypedArray,ta=Pt?st(Pt):Qn,ra=Object.prototype,na=ra.hasOwnProperty;function aa(e,t){var r=it(e),n=!r&&On(e),a=!r&&!n&&sr(e),i=!r&&!n&&!a&&ta(e),s=r||n||a||i,c=s?Tn(e.length,String):[],h=c.length;for(var p in e)na.call(e,p)&&!(s&&(p=="length"||a&&(p=="offset"||p=="parent")||i&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||pn(p,h)))&&c.push(p);return c}function ur(e,t){return function(r){return e(t(r))}}var oa=ur(Object.keys,Object),ia=Object.prototype,sa=ia.hasOwnProperty;function ca(e){if(!ar(e))return oa(e);var t=[];for(var r in Object(e))sa.call(e,r)&&r!="constructor"&&t.push(r);return t}function ua(e){return mn(e)?aa(e):ca(e)}var oe=Y(Object,"create");function la(){this.__data__=oe?oe(null):{},this.size=0}function fa(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var da="__lodash_hash_undefined__",pa=Object.prototype,_a=pa.hasOwnProperty;function ha(e){var t=this.__data__;if(oe){var r=t[e];return r===da?void 0:r}return _a.call(t,e)?t[e]:void 0}var ga=Object.prototype,ya=ga.hasOwnProperty;function ba(e){var t=this.__data__;return oe?t[e]!==void 0:ya.call(t,e)}var ma="__lodash_hash_undefined__";function va(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=oe&&t===void 0?ma:t,this}function V(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}V.prototype.clear=la;V.prototype.delete=fa;V.prototype.get=ha;V.prototype.has=ba;V.prototype.set=va;function Ta(){this.__data__=[],this.size=0}function Ee(e,t){for(var r=e.length;r--;)if(rr(e[r][0],t))return r;return-1}var ja=Array.prototype,Aa=ja.splice;function wa(e){var t=this.__data__,r=Ee(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Aa.call(t,r,1),--this.size,!0}function Oa(e){var t=this.__data__,r=Ee(t,e);return r<0?void 0:t[r][1]}function Sa(e){return Ee(this.__data__,e)>-1}function Pa(e,t){var r=this.__data__,n=Ee(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function I(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}I.prototype.clear=Ta;I.prototype.delete=wa;I.prototype.get=Oa;I.prototype.has=Sa;I.prototype.set=Pa;var ie=Y(C,"Map");function Ea(){this.size=0,this.__data__={hash:new V,map:new(ie||I),string:new V}}function $a(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function $e(e,t){var r=e.__data__;return $a(t)?r[typeof t=="string"?"string":"hash"]:r.map}function Ca(e){var t=$e(this,e).delete(e);return this.size-=t?1:0,t}function Ra(e){return $e(this,e).get(e)}function xa(e){return $e(this,e).has(e)}function ka(e,t){var r=$e(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}function X(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}X.prototype.clear=Ea;X.prototype.delete=Ca;X.prototype.get=Ra;X.prototype.has=xa;X.prototype.set=ka;function Na(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}var Ia=ur(Object.getPrototypeOf,Object);function Da(){this.__data__=new I,this.size=0}function Ma(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}function Fa(e){return this.__data__.get(e)}function za(e){return this.__data__.has(e)}var La=200;function Ua(e,t){var r=this.__data__;if(r instanceof I){var n=r.__data__;if(!ie||n.length<La-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new X(n)}return r.set(e,t),this.size=r.size,this}function Z(e){var t=this.__data__=new I(e);this.size=t.size}Z.prototype.clear=Da;Z.prototype.delete=Ma;Z.prototype.get=Fa;Z.prototype.has=za;Z.prototype.set=Ua;var lr=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Et=lr&&typeof module=="object"&&module&&!module.nodeType&&module,Va=Et&&Et.exports===lr,$t=Va?C.Buffer:void 0;$t&&$t.allocUnsafe;function Ga(e,t){return e.slice()}function Ba(e,t){for(var r=-1,n=e==null?0:e.length,a=0,i=[];++r<n;){var s=e[r];t(s,r,e)&&(i[a++]=s)}return i}function Ya(){return[]}var Wa=Object.prototype,Ha=Wa.propertyIsEnumerable,Ct=Object.getOwnPropertySymbols,qa=Ct?function(e){return e==null?[]:(e=Object(e),Ba(Ct(e),function(t){return Ha.call(e,t)}))}:Ya;function Ja(e,t,r){var n=t(e);return it(e)?n:Na(n,r(e))}function Ka(e){return Ja(e,ua,qa)}var Je=Y(C,"DataView"),Ke=Y(C,"Promise"),Xe=Y(C,"Set"),Rt="[object Map]",Xa="[object Object]",xt="[object Promise]",kt="[object Set]",Nt="[object WeakMap]",It="[object DataView]",Za=B(Je),Qa=B(ie),eo=B(Ke),to=B(Xe),ro=B(qe),x=fe;(Je&&x(new Je(new ArrayBuffer(1)))!=It||ie&&x(new ie)!=Rt||Ke&&x(Ke.resolve())!=xt||Xe&&x(new Xe)!=kt||qe&&x(new qe)!=Nt)&&(x=function(e){var t=fe(e),r=t==Xa?e.constructor:void 0,n=r?B(r):"";if(n)switch(n){case Za:return It;case Qa:return Rt;case eo:return xt;case to:return kt;case ro:return Nt}return t});var no=Object.prototype,ao=no.hasOwnProperty;function oo(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&ao.call(e,"index")&&(r.index=e.index,r.input=e.input),r}var Dt=C.Uint8Array;function ct(e){var t=new e.constructor(e.byteLength);return new Dt(t).set(new Dt(e)),t}function io(e,t){var r=ct(e.buffer);return new e.constructor(r,e.byteOffset,e.byteLength)}var so=/\w*$/;function co(e){var t=new e.constructor(e.source,so.exec(e));return t.lastIndex=e.lastIndex,t}var Mt=q?q.prototype:void 0,Ft=Mt?Mt.valueOf:void 0;function uo(e){return Ft?Object(Ft.call(e)):{}}function lo(e,t){var r=ct(e.buffer);return new e.constructor(r,e.byteOffset,e.length)}var fo="[object Boolean]",po="[object Date]",_o="[object Map]",ho="[object Number]",go="[object RegExp]",yo="[object Set]",bo="[object String]",mo="[object Symbol]",vo="[object ArrayBuffer]",To="[object DataView]",jo="[object Float32Array]",Ao="[object Float64Array]",wo="[object Int8Array]",Oo="[object Int16Array]",So="[object Int32Array]",Po="[object Uint8Array]",Eo="[object Uint8ClampedArray]",$o="[object Uint16Array]",Co="[object Uint32Array]";function Ro(e,t,r){var n=e.constructor;switch(t){case vo:return ct(e);case fo:case po:return new n(+e);case To:return io(e);case jo:case Ao:case wo:case Oo:case So:case Po:case Eo:case $o:case Co:return lo(e);case _o:return new n;case ho:case bo:return new n(e);case go:return co(e);case yo:return new n;case mo:return uo(e)}}function xo(e){return typeof e.constructor=="function"&&!ar(e)?un(Ia(e)):{}}var ko="[object Map]";function No(e){return de(e)&&x(e)==ko}var zt=J&&J.isMap,Io=zt?st(zt):No,Do="[object Set]";function Mo(e){return de(e)&&x(e)==Do}var Lt=J&&J.isSet,Fo=Lt?st(Lt):Mo,fr="[object Arguments]",zo="[object Array]",Lo="[object Boolean]",Uo="[object Date]",Vo="[object Error]",dr="[object Function]",Go="[object GeneratorFunction]",Bo="[object Map]",Yo="[object Number]",pr="[object Object]",Wo="[object RegExp]",Ho="[object Set]",qo="[object String]",Jo="[object Symbol]",Ko="[object WeakMap]",Xo="[object ArrayBuffer]",Zo="[object DataView]",Qo="[object Float32Array]",ei="[object Float64Array]",ti="[object Int8Array]",ri="[object Int16Array]",ni="[object Int32Array]",ai="[object Uint8Array]",oi="[object Uint8ClampedArray]",ii="[object Uint16Array]",si="[object Uint32Array]",y={};y[fr]=y[zo]=y[Xo]=y[Zo]=y[Lo]=y[Uo]=y[Qo]=y[ei]=y[ti]=y[ri]=y[ni]=y[Bo]=y[Yo]=y[pr]=y[Wo]=y[Ho]=y[qo]=y[Jo]=y[ai]=y[oi]=y[ii]=y[si]=!0;y[Vo]=y[dr]=y[Ko]=!1;function be(e,t,r,n,a,i){var s;if(s!==void 0)return s;if(!Pe(e))return e;var c=it(e);if(c)s=oo(e);else{var h=x(e),p=h==dr||h==Go;if(sr(e))return Ga(e);if(h==pr||h==fr||p&&!a)s=p?{}:xo(e);else{if(!y[h])return a?e:{};s=Ro(e,h)}}i||(i=new Z);var l=i.get(e);if(l)return l;i.set(e,s),Fo(e)?e.forEach(function(u){s.add(be(u,t,r,u,e,i))}):Io(e)&&e.forEach(function(u,_){s.set(_,be(u,t,r,_,e,i))});var m=Ka,d=c?void 0:m(e);return ln(d||e,function(u,_){d&&(_=u,u=e[_]),yn(s,_,be(u,t,r,_,e,i))}),s}var ci=1,ui=4;function ae(e){return be(e,ci|ui)}var P=(e=>(e.GROUP="group",e.INDIVIDUAL="individual",e))(P||{}),$=(e=>(e.AND="and",e.OR="or",e))($||{});const li={[$.OR]:"或",[$.AND]:"且"},Ut=({value:e,disabled:t,onChange:r})=>{function n(){t||r(e===$.OR?$.AND:$.OR)}return g.jsx("div",{className:"link-line",children:g.jsx("div",{className:"link-label",onClick:n,children:li[e]??"且"})})};function fi(e){return e==null||e===""?!0:Array.isArray(e)?e.length===0:e!==null&&typeof e=="object"?Object.keys(e).length===0:!1}function di(e){return!!e&&Object.keys(e).length>0&&Object.keys(e).every(t=>!fi(e[t]))}const Vt=({level:e,currentItemInfo:t,isLast:r,disabledConfig:n,onCreate:a,onCreateChildRules:i,onDel:s})=>{const c=T.useMemo(()=>t.level>=1&&r,[t.level,r]),h=T.useMemo(()=>e>1&&t.level<e,[e,t.level]),p=T.useMemo(()=>!!(e>1&&di(t.individual)&&!n.addItem),[e,t.individual,n.addItem]);return g.jsxs("div",{className:"conditional-handle",children:[p&&g.jsxs(g.Fragment,{children:[c&&g.jsxs("span",{className:"create-handle",onClick:a,children:[g.jsx("span",{style:{color:"#c85000",marginRight:4},children:"+"}),"同级"]}),h&&g.jsxs("span",{className:"create-handle",onClick:i,children:[g.jsx("span",{style:{color:"#c85000",marginRight:4},children:"+"}),"子级"]})]}),!n.delItem&&g.jsx("span",{className:"del-handle",onClick:s,children:"-"})]})};var _r=Symbol.for("immer-nothing"),Gt=Symbol.for("immer-draftable"),w=Symbol.for("immer-state"),pi=process.env.NODE_ENV!=="production"?[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}]:[];function O(e,...t){if(process.env.NODE_ENV!=="production"){const r=pi[e],n=L(r)?r.apply(null,t):r;throw new Error(`[Immer] ${n}`)}throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var S=Object,K=S.getPrototypeOf,Te="constructor",Ce="prototype",Ze="configurable",je="enumerable",me="writable",se="value",M=e=>!!e&&!!e[w];function N(e){var t;return e?hr(e)||xe(e)||!!e[Gt]||!!((t=e[Te])!=null&&t[Gt])||ke(e)||Ne(e):!1}var _i=S[Ce][Te].toString(),Bt=new WeakMap;function hr(e){if(!e||!ut(e))return!1;const t=K(e);if(t===null||t===S[Ce])return!0;const r=S.hasOwnProperty.call(t,Te)&&t[Te];if(r===Object)return!0;if(!L(r))return!1;let n=Bt.get(r);return n===void 0&&(n=Function.toString.call(r),Bt.set(r,n)),n===_i}function Re(e,t,r=!0){pe(e)===0?(r?Reflect.ownKeys(e):S.keys(e)).forEach(a=>{t(a,e[a],e)}):e.forEach((n,a)=>t(a,n,e))}function pe(e){const t=e[w];return t?t.type_:xe(e)?1:ke(e)?2:Ne(e)?3:0}var Yt=(e,t,r=pe(e))=>r===2?e.has(t):S[Ce].hasOwnProperty.call(e,t),Qe=(e,t,r=pe(e))=>r===2?e.get(t):e[t],Ae=(e,t,r,n=pe(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function hi(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var xe=Array.isArray,ke=e=>e instanceof Map,Ne=e=>e instanceof Set,ut=e=>typeof e=="object",L=e=>typeof e=="function",We=e=>typeof e=="boolean";function gi(e){const t=+e;return Number.isInteger(t)&&String(t)===e}var k=e=>e.copy_||e.base_,lt=e=>e.modified_?e.copy_:e.base_;function et(e,t){if(ke(e))return new Map(e);if(Ne(e))return new Set(e);if(xe(e))return Array[Ce].slice.call(e);const r=hr(e);if(t===!0||t==="class_only"&&!r){const n=S.getOwnPropertyDescriptors(e);delete n[w];let a=Reflect.ownKeys(n);for(let i=0;i<a.length;i++){const s=a[i],c=n[s];c[me]===!1&&(c[me]=!0,c[Ze]=!0),(c.get||c.set)&&(n[s]={[Ze]:!0,[me]:!0,[je]:c[je],[se]:e[s]})}return S.create(K(e),n)}else{const n=K(e);if(n!==null&&r)return{...e};const a=S.create(n);return S.assign(a,e)}}function ce(e,t=!1){return Ie(e)||M(e)||!N(e)||(pe(e)>1&&S.defineProperties(e,{set:ye,add:ye,clear:ye,delete:ye}),S.freeze(e),t&&Re(e,(r,n)=>{ce(n,!0)},!1)),e}function yi(){O(2)}var ye={[se]:yi};function Ie(e){return e===null||!ut(e)?!0:S.isFrozen(e)}var we="MapSet",tt="Patches",Wt="ArrayMethods",gr={};function G(e){const t=gr[e];return t||O(0,e),t}var Ht=e=>!!gr[e],ue,yr=()=>ue,bi=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:Ht(we)?G(we):void 0,arrayMethodsPlugin_:Ht(Wt)?G(Wt):void 0});function qt(e,t){t&&(e.patchPlugin_=G(tt),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function rt(e){nt(e),e.drafts_.forEach(mi),e.drafts_=null}function nt(e){e===ue&&(ue=e.parent_)}var Jt=e=>ue=bi(ue,e);function mi(e){const t=e[w];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Kt(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];if(e!==void 0&&e!==r){r[w].modified_&&(rt(t),O(4)),N(e)&&(e=Xt(t,e));const{patchPlugin_:a}=t;a&&a.generateReplacementPatches_(r[w].base_,e,t)}else e=Xt(t,r);return vi(t,e,!0),rt(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==_r?e:void 0}function Xt(e,t){if(Ie(t))return t;const r=t[w];if(!r)return Oe(t,e.handledSet_,e);if(!De(r,e))return t;if(!r.modified_)return r.base_;if(!r.finalized_){const{callbacks_:n}=r;if(n)for(;n.length>0;)n.pop()(e);vr(r,e)}return r.copy_}function vi(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&ce(t,r)}function br(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var De=(e,t)=>e.scope_===t,Ti=[];function mr(e,t,r,n){const a=k(e),i=e.type_;if(n!==void 0&&Qe(a,n,i)===t){Ae(a,n,r,i);return}if(!e.draftLocations_){const c=e.draftLocations_=new Map;Re(a,(h,p)=>{if(M(p)){const l=c.get(p)||[];l.push(h),c.set(p,l)}})}const s=e.draftLocations_.get(t)??Ti;for(const c of s)Ae(a,c,r,i)}function ji(e,t,r){e.callbacks_.push(function(a){var c;const i=t;if(!i||!De(i,a))return;(c=a.mapSetPlugin_)==null||c.fixSetContents(i);const s=lt(i);mr(e,i.draft_??i,s,r),vr(i,a)})}function vr(e,t){var n;if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(((n=e.assigned_)==null?void 0:n.size)??0)>0)){const{patchPlugin_:a}=t;if(a){const i=a.getPath(e);i&&a.generatePatches_(e,i,t)}br(e)}}function Ai(e,t,r){const{scope_:n}=e;if(M(r)){const a=r[w];De(a,n)&&a.callbacks_.push(function(){ve(e);const s=lt(a);mr(e,r,s,t)})}else N(r)&&e.callbacks_.push(function(){const i=k(e);e.type_===3?i.has(r)&&Oe(r,n.handledSet_,n):Qe(i,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Oe(Qe(e.copy_,t,e.type_),n.handledSet_,n)})}function Oe(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||M(e)||t.has(e)||!N(e)||Ie(e)||(t.add(e),Re(e,(n,a)=>{if(M(a)){const i=a[w];if(De(i,r)){const s=lt(i);Ae(e,n,s,e.type_),br(i)}}else N(a)&&Oe(a,t,r)})),e}function wi(e,t){const r=xe(e),n={type_:r?1:0,scope_:t?t.scope_:yr(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let a=n,i=Se;r&&(a=[n],i=le);const{revoke:s,proxy:c}=Proxy.revocable(a,i);return n.draft_=c,n.revoke_=s,[c,n]}var Se={get(e,t){if(t===w)return e;let r=e.scope_.arrayMethodsPlugin_;const n=e.type_===1&&typeof t=="string";if(n&&r!=null&&r.isArrayOperationMethod(t))return r.createMethodInterceptor(e,t);const a=k(e);if(!Yt(a,t,e.type_))return Oi(e,a,t);const i=a[t];if(e.finalized_||!N(i)||n&&e.operationMethod&&(r!=null&&r.isMutatingArrayMethod(e.operationMethod))&&gi(t))return i;if(i===He(e.base_,t)){ve(e);const s=e.type_===1?+t:t,c=ot(e.scope_,i,e,s);return e.copy_[s]=c}return i},has(e,t){return t in k(e)},ownKeys(e){return Reflect.ownKeys(k(e))},set(e,t,r){const n=Tr(k(e),t);if(n!=null&&n.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const a=He(k(e),t),i=a==null?void 0:a[w];if(i&&i.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(hi(r,a)&&(r!==void 0||Yt(e.base_,t,e.type_)))return!0;ve(e),at(e)}return e.copy_[t]===r&&(r!==void 0||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),Ai(e,t,r)),!0},deleteProperty(e,t){return ve(e),He(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),at(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){const r=k(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[me]:!0,[Ze]:e.type_!==1||t!=="length",[je]:n[je],[se]:r[t]}},defineProperty(){O(11)},getPrototypeOf(e){return K(e.base_)},setPrototypeOf(){O(12)}},le={};for(let e in Se){let t=Se[e];le[e]=function(){const r=arguments;return r[0]=r[0][0],t.apply(this,r)}}le.deleteProperty=function(e,t){return process.env.NODE_ENV!=="production"&&isNaN(parseInt(t))&&O(13),le.set.call(this,e,t,void 0)};le.set=function(e,t,r){return process.env.NODE_ENV!=="production"&&t!=="length"&&isNaN(parseInt(t))&&O(14),Se.set.call(this,e[0],t,r,e[0])};function He(e,t){const r=e[w];return(r?k(r):e)[t]}function Oi(e,t,r){var a;const n=Tr(t,r);return n?se in n?n[se]:(a=n.get)==null?void 0:a.call(e.draft_):void 0}function Tr(e,t){if(!(t in e))return;let r=K(e);for(;r;){const n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=K(r)}}function at(e){e.modified_||(e.modified_=!0,e.parent_&&at(e.parent_))}function ve(e){e.copy_||(e.assigned_=new Map,e.copy_=et(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Si=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(L(t)&&!L(r)){const i=r;r=t;const s=this;return function(h=i,...p){return s.produce(h,l=>r.call(this,l,...p))}}L(r)||O(6),n!==void 0&&!L(n)&&O(7);let a;if(N(t)){const i=Jt(this),s=ot(i,t,void 0);let c=!0;try{a=r(s),c=!1}finally{c?rt(i):nt(i)}return qt(i,n),Kt(a,i)}else if(!t||!ut(t)){if(a=r(t),a===void 0&&(a=t),a===_r&&(a=void 0),this.autoFreeze_&&ce(a,!0),n){const i=[],s=[];G(tt).generateReplacementPatches_(t,a,{patches_:i,inversePatches_:s}),n(i,s)}return a}else O(1,t)},this.produceWithPatches=(t,r)=>{if(L(t))return(s,...c)=>this.produceWithPatches(s,h=>t(h,...c));let n,a;return[this.produce(t,r,(s,c)=>{n=s,a=c}),n,a]},We(e==null?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),We(e==null?void 0:e.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),We(e==null?void 0:e.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){N(e)||O(8),M(e)&&(e=Pi(e));const t=Jt(this),r=ot(t,e,void 0);return r[w].isManual_=!0,nt(t),r}finishDraft(e,t){const r=e&&e[w];(!r||!r.isManual_)&&O(9);const{scope_:n}=r;return qt(n,t),Kt(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const a=t[r];if(a.path.length===0&&a.op==="replace"){e=a.value;break}}r>-1&&(t=t.slice(r+1));const n=G(tt).applyPatches_;return M(e)?n(e,t):this.produce(e,a=>n(a,t))}};function ot(e,t,r,n){const[a,i]=ke(t)?G(we).proxyMap_(t,r):Ne(t)?G(we).proxySet_(t,r):wi(t,r);return((r==null?void 0:r.scope_)??yr()).drafts_.push(a),i.callbacks_=(r==null?void 0:r.callbacks_)??[],i.key_=n,r&&n!==void 0?ji(r,i,n):i.callbacks_.push(function(h){var l;(l=h.mapSetPlugin_)==null||l.fixSetContents(i);const{patchPlugin_:p}=h;i.modified_&&p&&p.generatePatches_(i,[],h)}),a}function Pi(e){return M(e)||O(10,e),jr(e)}function jr(e){if(!N(e)||Ie(e))return e;const t=e[w];let r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=et(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=et(e,!0);return Re(r,(a,i)=>{Ae(r,a,jr(i))},n),t&&(t.finalized_=!1),r}var Ei=new Si,$i=Ei.produce;function Ci(e){var t=T.useState(function(){return ce(typeof e=="function"?e():e,!0)}),r=t[1];return[t[0],T.useCallback(function(n){r(typeof n=="function"?$i(n):ce(n))},[])]}function Ar(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ri(e){return e==null||e===""?!0:Array.isArray(e)?e.length===0:Ar(e)?Object.keys(e).length===0:!1}function H(e=0){return ae({_id:crypto.randomUUID(),framework:P.INDIVIDUAL,individual:{},level:e})}function F(e){return e.framework===P.GROUP}function xi(e){return!!e&&Object.keys(e).length>0&&Object.keys(e).every(t=>!Ri(e[t]))}function wr(e){return F(e)&&Array.isArray(e.group)?e.group.some(t=>wr(t)):!xi(e.individual)}function Or(e){F(e)&&Array.isArray(e.group)&&e.group.length>1&&e.group.forEach(t=>Or(t)),e.level=e.level-1<0?0:e.level-1}function U(e,t){if(e._id===t)return e;if(Array.isArray(e.group))for(const r of e.group){const n=U(r,t);if(n)return n}return null}function ki(e){const[t,r]=Ci(()=>H()),n=T.useCallback(l=>{r(()=>l)},[r]),a=T.useMemo(()=>{const l=Math.abs(Number(e.maxLevel??1))||1;return Number(e.maxLevel??1)<1&&console.warn("[TConditionalSelection] Invalid props.maxLevel: maxLevel must be greater than 0."),l},[e.maxLevel]),i=T.useMemo(()=>{var m,d,u;const l=Ar(e.disabled);return{addItem:!!(l?(m=e.disabled)!=null&&m.addItem:e.disabled),delItem:!!(l?(d=e.disabled)!=null&&d.delItem:e.disabled),linkChange:!!(l?(u=e.disabled)!=null&&u.linkChange:e.disabled)}},[e.disabled]),s=T.useCallback(l=>{if(!F(l))return;const m=Math.abs(Number(e.zeroLevelMaxLength));if(m&&(Number(e.zeroLevelMaxLength)<2&&console.warn("[TConditionalSelection] Invalid props.zeroLevelMaxLength: zeroLevelMaxLength must be greater than 1."),l.level===0&&l.group.length===m)){console.warn(`最外层子项最多添加${m}个条件`);return}r(d=>{const u=U(d,l._id);u&&Array.isArray(u.group)&&u.group.push(H(u.level+1))})},[e.zeroLevelMaxLength,r]),c=T.useCallback(l=>{r(m=>{const d=U(m,l._id);if(d)if(d.framework===P.INDIVIDUAL){const u={_id:crypto.randomUUID(),framework:P.INDIVIDUAL,individual:ae(d.individual??{}),level:d.level+1},_=H(d.level+1);d.framework=P.GROUP,d.link=$.AND,d._id=crypto.randomUUID(),d.group=[u,_],delete d.individual}else Array.isArray(d.group)&&d.group.push(H(d.level+1))})},[r]),h=T.useCallback((l,m)=>{r(d=>{const u=U(d,l._id);if(!(!u||!Array.isArray(u.group))&&(u.group.splice(m,1),u.framework===P.GROUP&&u.group.length===1)){const _=u.group[0];_.framework===P.GROUP&&Array.isArray(_.group)&&_.group.length>1?(u.framework=P.GROUP,u.link=_.link,u._id=_._id,u.group=_.group,delete u.individual):(u.framework=P.INDIVIDUAL,u._id=_._id,u.individual=ae(_.individual??{}),delete u.link,delete u.group),Or(_)}})},[r]),p=T.useCallback((l=!0)=>new Promise((m,d)=>{if(l&&wr(t)){console.error("请填写完整"),d("含有未填写完整的项");return}m(ae(t))}),[t]);return{rulesData:t,setRulesData:n,level:a,disabledConfig:i,createRules:s,createChildRules:c,delRules:h,getConditionalSelectionData:p,isGroup:F,getTempRules:H,updateRulesData:r}}function Zt(e,t){const r=t.length-1,n=t[r];let a=e===r;return!a&&n&&F(n)&&(a=e===t.length-2),a}const Sr=({levelData:e,level:t,disabledConfig:r,onUpdateNode:n,onCreateRules:a,onCreateChildRules:i,onDelRules:s,renderConditionItem:c})=>{const h=e.group;function p(l){n(e._id,{link:l})}return g.jsxs("div",{className:"relative-box",children:[g.jsx(Ut,{value:e.link??$.AND,disabled:r.linkChange,onChange:p}),g.jsx("div",{className:"conditional-list-box right-box",children:h.map((l,m)=>{if(F(l)){const d=l.group;return g.jsx("div",{className:"conditional-list",children:g.jsxs("div",{className:"relative-box",children:[g.jsx(Ut,{value:l.link??$.AND,disabled:r.linkChange,onChange:u=>n(l._id,{link:u})}),d.map((u,_)=>F(u)&&u.group.length>0?g.jsx("div",{className:"conditional-item right-box",children:g.jsx(Sr,{levelData:u,level:t,disabledConfig:r,onUpdateNode:n,onCreateRules:a,onCreateChildRules:i,onDelRules:s,renderConditionItem:c})},u._id):g.jsxs("div",{className:"conditional-item right-box",children:[c==null?void 0:c(u),g.jsx(Vt,{level:t,disabledConfig:r,currentItemInfo:u,isLast:Zt(_,d),onCreate:()=>a(l),onCreateChildRules:()=>i(u),onDel:()=>s(l,_)})]},u._id))]})},l._id)}return g.jsx("div",{className:"conditional-list",children:g.jsxs("div",{className:"conditional-item",children:[c==null?void 0:c(l),g.jsx(Vt,{level:t,disabledConfig:r,currentItemInfo:l,isLast:Zt(m,h),onCreate:()=>a(e),onCreateChildRules:()=>i(l),onDel:()=>s(e,m)})]})},l._id)})})]})},Pr=T.forwardRef((e,t)=>{const{conditionalRules:r,onChange:n,renderConditionRules:a,renderCreateCondition:i}=e,{rulesData:s,setRulesData:c,level:h,disabledConfig:p,createRules:l,createChildRules:m,delRules:d,getConditionalSelectionData:u,updateRulesData:_}=ki(e);T.useImperativeHandle(t,()=>({getConditionalSelectionData:u}),[u]);const _e=T.useRef(!0);T.useEffect(()=>{if(_e.current){_e.current=!1;return}n==null||n(s)},[s]),T.useEffect(()=>{r&&Object.keys(r).length!==0?c(ae(r)):c(H())},[]);const Q=T.useCallback((E,R)=>{_(D=>{const z=U(D,E);z&&Object.assign(z,R)})},[_]),Me=T.useCallback(E=>a==null?void 0:a(E,R=>{_(D=>{const z=U(D,E._id);z&&(z.individual=R)})}),[a,_]),Fe=T.useCallback((E,R)=>a==null?void 0:a(E,R),[a]);return g.jsxs("div",{className:"conditional-selection",children:[!p.addItem&&(i?i({createRules:m,rulesData:s}):g.jsxs("span",{className:"create-box",onClick:()=>m(s),children:[g.jsx("span",{style:{color:"#00c8be",marginRight:4},children:"➕"}),"添加条件"]})),g.jsx("div",{className:"conditional-content",children:F(s)&&s.group.length>0?g.jsx(Sr,{levelData:s,level:h,disabledConfig:p,onUpdateNode:Q,onCreateRules:l,onCreateChildRules:m,onDelRules:d,renderConditionItem:Me}):Fe(s,E=>{_(R=>{const D=U(R,s._id);D&&(D.individual=E)})})})]})});Pr.displayName="ConditionalSelection";exports.ConditionalSelection=Pr;exports.EConditionalSelectionFramework=P;exports.EConditionalSelectionLink=$;