conditional-selection 1.1.3 → 1.1.5

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 CHANGED
@@ -1,163 +1,197 @@
1
- # Conditional Selection 组件库
1
+ # conditional-selection
2
2
 
3
- ## 简介
4
- 本项目为一个支持条件树编辑的 React 组件库,支持递归嵌套、条件分组、动态增删、禁用控制等功能,适用于复杂表单、规则配置等场景。
3
+ <p>
4
+ <a href="./README.md">English</a> | <a href="./README.zh-CN.md">中文</a>
5
+ </p>
5
6
 
6
- ## 主要功能
7
- - 条件树递归编辑
8
- - 条件分组(AND/OR)切换
9
- - 条件项动态增删
10
- - 层级/数量/禁用等参数控制
11
- - 插槽自定义条件行内容
12
- - 状态管理采用 useImmer,数据流统一
7
+ A lightweight React component library for building conditional rule trees. Supports recursive nesting, AND/OR grouping, dynamic add/remove, and fully customizable condition rows via render props.
13
8
 
14
- ## 使用方法
9
+ ## Installation
15
10
 
16
- ### 基本用法
11
+ ```bash
12
+ npm install conditional-selection
13
+ ```
17
14
 
18
- ```tsx
19
- import React, { useMemo, useRef, useState } from 'react';
20
- import { ConditionalSelection } from '../packages/ConditionalSelection';
21
- import type { TConditionalSelection } from '../packages/ConditionalSelection/types';
22
-
23
- const fieldOptions = [
24
- { label: '测试字段1', value: 1 },
25
- { label: '测试字段2', value: 2 },
26
- ];
27
- const functionOptions = [
28
- { label: '等于', value: 1 },
29
- { label: '不等于', value: 2 },
30
- ];
31
- const valueOptions = [
32
- { label: '测试值1', value: 1 },
33
- { label: '测试值2', value: 2 },
34
- ];
35
-
36
- const FlexSelect: React.FC<{ item: TConditionalSelection; onChange: (val: Record<string, any>) => void }> = ({ item, onChange }) => {
37
- // field / function / value 存放在节点的 individual 里
38
- const data = useMemo(() => item.individual ?? {}, [item.individual]);
39
-
40
- const handleFieldChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
41
- const val = e.target.value ? Number(e.target.value) : undefined;
42
- onChange({ field: val, function: '', value: undefined });
43
- };
44
-
45
- const handleFunctionChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
46
- const val = e.target.value ? Number(e.target.value) : undefined;
47
- onChange({ ...data, function: val, value: undefined });
48
- };
49
-
50
- const handleValueChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
51
- const val = e.target.value ? Number(e.target.value) : undefined;
52
- onChange({ ...data, value: val });
53
- };
15
+ > **Peer dependencies:** `react >= 16.8.0`, `react-dom >= 16.8.0`
54
16
 
55
- return (
56
- <div style={{ display: 'flex', width: '100%' }}>
57
- <select style={{ width: '33%', marginRight: 16 }} value={data.field ?? ''} onChange={handleFieldChange}>
58
- <option value="">请选择字段</option>
59
- {fieldOptions.map(opt => (
60
- <option key={opt.value} value={opt.value}>{opt.label}</option>
61
- ))}
62
- </select>
63
- {data.field && (
64
- <select style={{ width: '33%', marginRight: 16 }} value={data.function ?? ''} onChange={handleFunctionChange}>
65
- <option value="">请选择函数</option>
66
- {functionOptions.map(opt => (
67
- <option key={opt.value} value={opt.value}>{opt.label}</option>
68
- ))}
69
- </select>
70
- )}
71
- {data.function && (
72
- <select style={{ width: '33%', marginRight: 16 }} value={data.value ?? ''} onChange={handleValueChange}>
73
- <option value="">请选择值</option>
74
- {valueOptions.map(opt => (
75
- <option key={opt.value} value={opt.value}>{opt.label}</option>
76
- ))}
77
- </select>
78
- )}
79
- </div>
80
- );
81
- }
17
+ ## Quick Start
18
+
19
+ ```tsx
20
+ import { ConditionalSelection } from 'conditional-selection';
21
+ import type { TConditionalSelection } from 'conditional-selection';
82
22
 
83
23
  export default function App() {
84
- const refConditionalSelection = useRef<any>(null);
85
24
  const [rules, setRules] = useState<TConditionalSelection | undefined>();
86
- const [maxDeep, setMaxLevel] = useState(3);
87
- const [disabled, setDisabled] = useState(false);
88
- const [disabledConfig, setDisabledConfig] = useState({
89
- addItem: false,
90
- delItem: false,
91
- linkChange: false,
92
- });
93
-
94
- const getResult = async () => {
95
- const data = await refConditionalSelection.current.getConditionalSelectionData()
96
- console.log('当前数据:', data);
97
- }
98
25
 
99
26
  return (
100
- <ConditionalSelection
101
- ref={refConditionalSelection}
102
- conditionalRules={rules}
103
- maxDeep={maxDeep}
104
- disabled={disabled || disabledConfig}
105
- onChange={setRules}
106
- renderConditionRules={(item, change) => (
107
- <FlexSelect
108
- item={item}
109
- onChange={val => change(val)}
110
- />
111
- )}
112
- />
27
+ <ConditionalSelection
28
+ conditionalRules={rules}
29
+ maxDeep={3}
30
+ onChange={setRules}
31
+ renderConditionRules={(item, change) => (
32
+ <MyConditionRow item={item} onChange={change} />
33
+ )}
34
+ />
113
35
  );
114
36
  }
115
37
  ```
116
38
 
117
- ### 参数说明
118
- - `conditionalRules`:条件树数据(可为 null/undefined,自动初始化)
119
- - `maxDeep`:最大递归层级(默认 1,需大于 0)
120
- - `disabled`:是否禁用全部/部分操作(可传布尔或对象)
121
- - `onChange`:数据变更回调
122
- - `renderConditionRules`:插槽,渲染每个条件行内容,参数为当前节点和变更 handler
123
-
124
- ### 插槽自定义
39
+ ## Props
40
+
41
+ | Prop | Type | Default | Description |
42
+ |------|------|---------|-------------|
43
+ | `conditionalRules` | `TConditionalSelection \| null` | `undefined` | The condition tree data. Automatically initialized if `null` or `undefined`. |
44
+ | `maxDeep` | `number` | `1` | Maximum recursion depth. Must be greater than `0`. |
45
+ | `disabled` | `boolean \| TConditionalSelectionDisabledProps` | `false` | Disable all or specific operations. |
46
+ | `onChange` | `(value: TConditionalSelection \| undefined) => void` | — | Callback fired when the tree data changes. |
47
+ | `renderConditionRules` | `(item, change) => ReactNode` | — | Render prop for each condition row. Receives the current `INDIVIDUAL` node and an update handler. |
48
+ | `renderCreateCondition` | `(params) => ReactNode` | — | Render prop to customize the "Add condition" button. |
49
+
50
+ ### `disabled` object shape
51
+
52
+ ```ts
53
+ type TConditionalSelectionDisabledProps = {
54
+ addItem?: boolean; // disable adding new conditions
55
+ delItem?: boolean; // disable deleting conditions
56
+ linkChange?: boolean; // disable AND/OR toggle
57
+ };
58
+ ```
125
59
 
126
- 插槽 `renderConditionRules` 支持自定义条件行内容,推荐用原生表单控件或自定义组件。
60
+ ## Data Structure
61
+
62
+ ```ts
63
+ type TConditionalSelection<T = any> = {
64
+ _id: string;
65
+ framework: 'group' | 'individual';
66
+ link?: 'and' | 'or';
67
+ group?: TConditionalSelection<T>[];
68
+ individual?: Record<string, any>;
69
+ level: number;
70
+ };
71
+ ```
127
72
 
128
- ```tsx
129
- const FlexSelect = ({ item, onChange }) => (
130
- <div>
131
- {/* 字段选择、函数选择、值选择等 */}
132
- <select ... onChange={...} />
133
- ...
134
- </div>
135
- );
73
+ - **`group`** node — contains child nodes and an AND/OR relationship toggle.
74
+ - **`individual`** node a single condition row; its data lives in the `individual` field.
75
+
76
+ ### Example Output
77
+
78
+ **Flat structure** — two `individual` conditions joined by AND:
79
+
80
+ ```json
81
+ {
82
+ "_id": "2dfd8d9d-4bbf-4bc3-aae6-6c747ccbdd10",
83
+ "framework": "group",
84
+ "level": 0,
85
+ "link": "and",
86
+ "group": [
87
+ {
88
+ "_id": "02399b6c-10a3-41d4-9722-cce2db9ae056",
89
+ "framework": "individual",
90
+ "individual": { "field": 1, "function": 1, "value": 1 },
91
+ "level": 1
92
+ },
93
+ {
94
+ "_id": "6c627903-b970-43a8-a3f5-f5aba89f2200",
95
+ "framework": "individual",
96
+ "individual": { "field": 1, "function": 1, "value": 1 },
97
+ "level": 1
98
+ }
99
+ ]
100
+ }
136
101
  ```
137
102
 
138
- ### 获取数据
103
+ **Nested structure** — an `individual` AND a nested `group` (OR) at level 1:
104
+
105
+ ```json
106
+ {
107
+ "_id": "2dfd8d9d-4bbf-4bc3-aae6-6c747ccbdd10",
108
+ "framework": "group",
109
+ "level": 0,
110
+ "link": "and",
111
+ "group": [
112
+ {
113
+ "_id": "02399b6c-10a3-41d4-9722-cce2db9ae056",
114
+ "framework": "individual",
115
+ "individual": { "field": 1, "function": 1, "value": 1 },
116
+ "level": 1
117
+ },
118
+ {
119
+ "_id": "2f808fe6-4dd8-488d-9b79-d2888915fddc",
120
+ "framework": "group",
121
+ "level": 1,
122
+ "link": "or",
123
+ "group": [
124
+ {
125
+ "_id": "17336bf2-2885-4350-8055-233b0058ec39",
126
+ "framework": "individual",
127
+ "individual": { "field": 1, "function": 1, "value": 1 },
128
+ "level": 2
129
+ },
130
+ {
131
+ "_id": "6e21bd9a-f994-474a-bba5-d77ac9013a65",
132
+ "framework": "individual",
133
+ "individual": { "field": 1, "function": 1, "value": 1 },
134
+ "level": 2
135
+ }
136
+ ]
137
+ }
138
+ ]
139
+ }
140
+ ```
139
141
 
140
- 可通过 ref 获取当前条件树数据:
142
+ ## Accessing Data via Ref
141
143
 
142
144
  ```tsx
143
- const ref = useRef<any>();
144
- ...
145
+ const ref = useRef<any>(null);
146
+
145
147
  <ConditionalSelection ref={ref} ... />
146
- ...
148
+
149
+ // Returns a deep clone of the current tree
147
150
  const data = await ref.current.getConditionalSelectionData();
148
151
  ```
149
152
 
150
- ## 性能优化建议
151
- - 递归 handler 用 useCallback 包裹,减少无谓重渲染
152
- - 父组件插槽建议也用 useCallback
153
- - 如需进一步性能分析,建议用 React Profiler
153
+ ## Custom Condition Row Example
154
+
155
+ ```tsx
156
+ const MyConditionRow = ({ item, onChange }) => {
157
+ const data = item.individual ?? {};
158
+ return (
159
+ <div style={{ display: 'flex', gap: 8 }}>
160
+ <select value={data.field ?? ''} onChange={e => onChange({ field: e.target.value })}>
161
+ <option value="">Select field</option>
162
+ <option value="name">Name</option>
163
+ </select>
164
+ <select value={data.operator ?? ''} onChange={e => onChange({ ...data, operator: e.target.value })}>
165
+ <option value="">Select operator</option>
166
+ <option value="eq">Equals</option>
167
+ <option value="ne">Not equals</option>
168
+ </select>
169
+ <input
170
+ value={data.value ?? ''}
171
+ onChange={e => onChange({ ...data, value: e.target.value })}
172
+ placeholder="Value"
173
+ />
174
+ </div>
175
+ );
176
+ };
177
+ ```
178
+
179
+ ## Performance Tips
154
180
 
155
- ## 贡献与开发
181
+ - Wrap handlers and render props with `useCallback` to avoid unnecessary re-renders.
182
+ - Use [React Profiler](https://react.dev/reference/react/Profiler) for deeper performance analysis.
156
183
 
157
- https://github.com/1512-Yolo/conditional-selection.git
158
- 1. 修改源码后可直接运行 `npm run dev` 查看效果
159
- 2. 支持 monorepo 结构,组件统一从 packages/index.ts 导出
160
- 3. 支持 less 样式
184
+ ## Contributing
185
+
186
+ ```bash
187
+ git clone https://github.com/1512-Yolo/conditional-selection.git
188
+ cd conditional-selection
189
+ npm install
190
+ npm run dev
191
+ ```
192
+
193
+ Components are exported from `packages/index.ts`. Styles are written in Less (`packages/ConditionalSelection/index.less`).
161
194
 
162
195
  ## License
196
+
163
197
  MIT
@@ -0,0 +1,197 @@
1
+ # conditional-selection
2
+
3
+ <p>
4
+ <a href="./README.md">English</a> | <a href="./README.zh-CN.md">中文</a>
5
+ </p>
6
+
7
+ 一个轻量级的 React 条件规则树组件库,支持递归嵌套、AND/OR 分组、动态增删,以及通过 render props 完全自定义条件行内容。
8
+
9
+ ## 安装
10
+
11
+ ```bash
12
+ npm install conditional-selection
13
+ ```
14
+
15
+ > **同级依赖(peerDependencies):** `react >= 16.8.0`,`react-dom >= 16.8.0`
16
+
17
+ ## 快速开始
18
+
19
+ ```tsx
20
+ import { ConditionalSelection } from 'conditional-selection';
21
+ import type { TConditionalSelection } from 'conditional-selection';
22
+
23
+ export default function App() {
24
+ const [rules, setRules] = useState<TConditionalSelection | undefined>();
25
+
26
+ return (
27
+ <ConditionalSelection
28
+ conditionalRules={rules}
29
+ maxDeep={3}
30
+ onChange={setRules}
31
+ renderConditionRules={(item, change) => (
32
+ <MyConditionRow item={item} onChange={change} />
33
+ )}
34
+ />
35
+ );
36
+ }
37
+ ```
38
+
39
+ ## Props 参数说明
40
+
41
+ | 参数 | 类型 | 默认值 | 说明 |
42
+ |------|------|--------|------|
43
+ | `conditionalRules` | `TConditionalSelection \| null` | `undefined` | 条件树数据,传入 `null` 或 `undefined` 时自动初始化 |
44
+ | `maxDeep` | `number` | `1` | 最大递归层级,必须大于 `0` |
45
+ | `disabled` | `boolean \| TConditionalSelectionDisabledProps` | `false` | 禁用全部或部分操作 |
46
+ | `onChange` | `(value: TConditionalSelection \| undefined) => void` | — | 数据变更回调 |
47
+ | `renderConditionRules` | `(item, change) => ReactNode` | — | 条件行渲染插槽,参数为当前 `INDIVIDUAL` 节点和更新 handler |
48
+ | `renderCreateCondition` | `(params) => ReactNode` | — | 自定义"添加条件"按钮的渲染插槽 |
49
+
50
+ ### `disabled` 对象格式
51
+
52
+ ```ts
53
+ type TConditionalSelectionDisabledProps = {
54
+ addItem?: boolean; // 禁用添加条件
55
+ delItem?: boolean; // 禁用删除条件
56
+ linkChange?: boolean; // 禁用 AND/OR 切换
57
+ };
58
+ ```
59
+
60
+ ## 数据结构
61
+
62
+ ```ts
63
+ type TConditionalSelection<T = any> = {
64
+ _id: string;
65
+ framework: 'group' | 'individual';
66
+ link?: 'and' | 'or';
67
+ group?: TConditionalSelection<T>[];
68
+ individual?: Record<string, any>;
69
+ level: number;
70
+ };
71
+ ```
72
+
73
+ - **`group`** 节点 — 包含子节点,支持 AND/OR 关系切换
74
+ - **`individual`** 节点 — 单个条件行,自定义数据存放在 `individual` 字段中
75
+
76
+ ### 数据示例
77
+
78
+ **扁平结构** — 两个 `individual` 条件以 AND 连接:
79
+
80
+ ```json
81
+ {
82
+ "_id": "2dfd8d9d-4bbf-4bc3-aae6-6c747ccbdd10",
83
+ "framework": "group",
84
+ "level": 0,
85
+ "link": "and",
86
+ "group": [
87
+ {
88
+ "_id": "02399b6c-10a3-41d4-9722-cce2db9ae056",
89
+ "framework": "individual",
90
+ "individual": { "field": 1, "function": 1, "value": 1 },
91
+ "level": 1
92
+ },
93
+ {
94
+ "_id": "6c627903-b970-43a8-a3f5-f5aba89f2200",
95
+ "framework": "individual",
96
+ "individual": { "field": 1, "function": 1, "value": 1 },
97
+ "level": 1
98
+ }
99
+ ]
100
+ }
101
+ ```
102
+
103
+ **嵌套结构** — 一个 `individual` 与一个嵌套 `group`(OR)并列于第 1 层:
104
+
105
+ ```json
106
+ {
107
+ "_id": "2dfd8d9d-4bbf-4bc3-aae6-6c747ccbdd10",
108
+ "framework": "group",
109
+ "level": 0,
110
+ "link": "and",
111
+ "group": [
112
+ {
113
+ "_id": "02399b6c-10a3-41d4-9722-cce2db9ae056",
114
+ "framework": "individual",
115
+ "individual": { "field": 1, "function": 1, "value": 1 },
116
+ "level": 1
117
+ },
118
+ {
119
+ "_id": "2f808fe6-4dd8-488d-9b79-d2888915fddc",
120
+ "framework": "group",
121
+ "level": 1,
122
+ "link": "or",
123
+ "group": [
124
+ {
125
+ "_id": "17336bf2-2885-4350-8055-233b0058ec39",
126
+ "framework": "individual",
127
+ "individual": { "field": 1, "function": 1, "value": 1 },
128
+ "level": 2
129
+ },
130
+ {
131
+ "_id": "6e21bd9a-f994-474a-bba5-d77ac9013a65",
132
+ "framework": "individual",
133
+ "individual": { "field": 1, "function": 1, "value": 1 },
134
+ "level": 2
135
+ }
136
+ ]
137
+ }
138
+ ]
139
+ }
140
+ ```
141
+
142
+ ## 通过 Ref 获取数据
143
+
144
+ ```tsx
145
+ const ref = useRef<any>(null);
146
+
147
+ <ConditionalSelection ref={ref} ... />
148
+
149
+ // 返回当前条件树的深拷贝
150
+ const data = await ref.current.getConditionalSelectionData();
151
+ ```
152
+
153
+ ## 自定义条件行示例
154
+
155
+ ```tsx
156
+ const MyConditionRow = ({ item, onChange }) => {
157
+ const data = item.individual ?? {};
158
+ return (
159
+ <div style={{ display: 'flex', gap: 8 }}>
160
+ <select value={data.field ?? ''} onChange={e => onChange({ field: e.target.value })}>
161
+ <option value="">选择字段</option>
162
+ <option value="name">名称</option>
163
+ </select>
164
+ <select value={data.operator ?? ''} onChange={e => onChange({ ...data, operator: e.target.value })}>
165
+ <option value="">选择操作符</option>
166
+ <option value="eq">等于</option>
167
+ <option value="ne">不等于</option>
168
+ </select>
169
+ <input
170
+ value={data.value ?? ''}
171
+ onChange={e => onChange({ ...data, value: e.target.value })}
172
+ placeholder="输入值"
173
+ />
174
+ </div>
175
+ );
176
+ };
177
+ ```
178
+
179
+ ## 性能优化建议
180
+
181
+ - 将 handler 和 render props 用 `useCallback` 包裹,避免不必要的重渲染
182
+ - 如需深度性能分析,可借助 [React Profiler](https://react.dev/reference/react/Profiler)
183
+
184
+ ## 贡献与开发
185
+
186
+ ```bash
187
+ git clone https://github.com/1512-Yolo/conditional-selection.git
188
+ cd conditional-selection
189
+ npm install
190
+ npm run dev
191
+ ```
192
+
193
+ 组件统一从 `packages/index.ts` 导出,样式使用 Less(`packages/ConditionalSelection/index.less`)编写。
194
+
195
+ ## License
196
+
197
+ MIT
@@ -3,7 +3,7 @@ import { ReactNode } from 'react';
3
3
  import { RefAttributes } from 'react';
4
4
 
5
5
  export declare const ConditionalSelection: ForwardRefExoticComponent<TConditionalSelectionProps & RefAttributes< {
6
- getConditionalSelectionData: (validate?: boolean) => Promise<any>;
6
+ getConditionalSelectionData: (validate?: boolean) => Promise<any>;
7
7
  }>>;
8
8
 
9
9
  export declare enum EConditionalSelectionFramework {
package/dist/ui.cjs.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("react");var K={exports:{}},Y={};/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const y=require("react");var K={exports:{}},Y={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.js
4
4
  *
package/dist/ui.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import kr, { useMemo as G, useState as Pr, useCallback as w, forwardRef as Er, useImperativeHandle as Ar, useRef as Sr, useEffect as Ve } from "react";
2
- var Q = { exports: {} }, Y = {};
2
+ import './index.css';var Q = { exports: {} }, Y = {};
3
3
  /**
4
4
  * @license React
5
5
  * react-jsx-runtime.production.js
package/dist/ui.iife.js CHANGED
@@ -1,4 +1,5 @@
1
- var ui=(function(Y,y){"use strict";var Q={exports:{}},W={};/**
1
+ var ui=(function(Y,m){"use strict";var Ie=document.createElement("style");Ie.textContent=`.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}
2
+ /*$vite$:1*/`,document.head.appendChild(Ie);var Q={exports:{}},W={};/**
2
3
  * @license React
3
4
  * react-jsx-runtime.production.js
4
5
  *
@@ -6,7 +7,7 @@ var ui=(function(Y,y){"use strict";var Q={exports:{}},W={};/**
6
7
  *
7
8
  * This source code is licensed under the MIT license found in the
8
9
  * LICENSE file in the root directory of this source tree.
9
- */var Ie;function yr(){if(Ie)return W;Ie=1;var e=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function t(n,i,a){var s=null;if(a!==void 0&&(s=""+a),i.key!==void 0&&(s=""+i.key),"key"in i){a={};for(var c in i)c!=="key"&&(a[c]=i[c])}else a=i;return i=a.ref,{$$typeof:e,type:n,key:s,ref:i!==void 0?i:null,props:a}}return W.Fragment=r,W.jsx=t,W.jsxs=t,W}var G={};/**
10
+ */var ze;function yt(){if(ze)return W;ze=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(n,i,a){var s=null;if(a!==void 0&&(s=""+a),i.key!==void 0&&(s=""+i.key),"key"in i){a={};for(var c in i)c!=="key"&&(a[c]=i[c])}else a=i;return i=a.ref,{$$typeof:e,type:n,key:s,ref:i!==void 0?i:null,props:a}}return W.Fragment=t,W.jsx=r,W.jsxs=r,W}var G={};/**
10
11
  * @license React
11
12
  * react-jsx-runtime.development.js
12
13
  *
@@ -14,9 +15,9 @@ var ui=(function(Y,y){"use strict";var Q={exports:{}},W={};/**
14
15
  *
15
16
  * This source code is licensed under the MIT license found in the
16
17
  * LICENSE file in the root directory of this source tree.
17
- */var Fe;function pr(){return Fe||(Fe=1,process.env.NODE_ENV!=="production"&&(function(){function e(o){if(o==null)return null;if(typeof o=="function")return o.$$typeof===Hr?null:o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case K:return"Fragment";case Ce:return"Profiler";case we:return"StrictMode";case z:return"Suspense";case Wr:return"SuspenseList";case Br: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 he:return"Portal";case N:return o.displayName||"Context";case O: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 Gr:return f=o.displayName||null,f!==null?f:e(o.type)||"Memo";case Ne:f=o._payload,o=o._init;try{return e(o(f))}catch{}}return null}function r(o){return""+o}function t(o){try{r(o);var f=!1}catch{f=!0}if(f){f=console;var m=f.error,b=typeof Symbol=="function"&&Symbol.toStringTag&&o[Symbol.toStringTag]||o.constructor.name||"Object";return m.call(f,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",b),r(o)}}function n(o){if(o===K)return"<>";if(typeof o=="object"&&o!==null&&o.$$typeof===Ne)return"<...>";try{var f=e(o);return f?"<"+f+">":"<...>"}catch{return"<...>"}}function i(){var o=Te.A;return o===null?null:o.getOwner()}function a(){return Error("react-stack-top-frame")}function s(o){if(ur.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 m(){fr||(fr=!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))}m.isReactWarning=!0,Object.defineProperty(o,"key",{get:m,configurable:!0})}function p(){var o=e(this.type);return dr[o]||(dr[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 v(o,f,m,b,me,De){var k=m.ref;return o={$$typeof:h,type:o,key:f,props:m,_owner:b},(k!==void 0?k:null)!==null?Object.defineProperty(o,"ref",{enumerable:!1,get:p}):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:me}),Object.defineProperty(o,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:De}),Object.freeze&&(Object.freeze(o.props),Object.freeze(o)),o}function l(o,f,m,b,me,De){var k=f.children;if(k!==void 0)if(b)if(Jr(k)){for(b=0;b<k.length;b++)g(k[b]);Object.freeze&&Object.freeze(k)}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 g(k);if(ur.call(f,"key")){k=e(o);var V=Object.keys(f).filter(function(Xr){return Xr!=="key"});b=0<V.length?"{key: someKey, "+V.join(": ..., ")+": ...}":"{key: someKey}",mr[k+b]||(V=0<V.length?"{"+V.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
+ */var Fe;function gt(){return Fe||(Fe=1,process.env.NODE_ENV!=="production"&&(function(){function e(o){if(o==null)return null;if(typeof o=="function")return o.$$typeof===Jt?null:o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case K:return"Fragment";case Oe:return"Profiler";case Ae:return"StrictMode";case M:return"Suspense";case Gt:return"SuspenseList";case Ht: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 he:return"Portal";case C:return o.displayName||"Context";case w: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 Bt:return f=o.displayName||null,f!==null?f:e(o.type)||"Memo";case Ce: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 p=f.error,v=typeof Symbol=="function"&&Symbol.toStringTag&&o[Symbol.toStringTag]||o.constructor.name||"Object";return p.call(f,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",v),t(o)}}function n(o){if(o===K)return"<>";if(typeof o=="object"&&o!==null&&o.$$typeof===Ce)return"<...>";try{var f=e(o);return f?"<"+f+">":"<...>"}catch{return"<...>"}}function i(){var o=Ne.A;return o===null?null:o.getOwner()}function a(){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 p(){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))}p.isReactWarning=!0,Object.defineProperty(o,"key",{get:p,configurable:!0})}function y(){var o=e(this.type);return _t[o]||(_t[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 b(o,f,p,v,pe,De){var k=p.ref;return o={$$typeof:h,type:o,key:f,props:p,_owner:v},(k!==void 0?k:null)!==null?Object.defineProperty(o,"ref",{enumerable:!1,get:y}):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:pe}),Object.defineProperty(o,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:De}),Object.freeze&&(Object.freeze(o.props),Object.freeze(o)),o}function l(o,f,p,v,pe,De){var k=f.children;if(k!==void 0)if(v)if(Xt(k)){for(v=0;v<k.length;v++)g(k[v]);Object.freeze&&Object.freeze(k)}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 g(k);if(ft.call(f,"key")){k=e(o);var V=Object.keys(f).filter(function(Zt){return Zt!=="key"});v=0<V.length?"{key: someKey, "+V.join(": ..., ")+": ...}":"{key: someKey}",mt[k+v]||(V=0<V.length?"{"+V.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
19
  let props = %s;
19
20
  <%s {...props} />
20
21
  React keys must be passed directly to JSX without using spread:
21
22
  let props = %s;
22
- <%s key={someKey} {...props} />`,b,k,V,k),mr[k+b]=!0)}if(k=null,m!==void 0&&(t(m),k=""+m),s(f)&&(t(f.key),k=""+f.key),"key"in f){m={};for(var je in f)je!=="key"&&(m[je]=f[je])}else m=f;return k&&c(m,typeof o=="function"?o.displayName||o.name||"Unknown":o),v(o,k,m,i(),me,De)}function g(o){d(o)?o._store&&(o._store.validated=1):typeof o=="object"&&o!==null&&o.$$typeof===Ne&&(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===h}var u=y,h=Symbol.for("react.transitional.element"),he=Symbol.for("react.portal"),K=Symbol.for("react.fragment"),we=Symbol.for("react.strict_mode"),Ce=Symbol.for("react.profiler"),O=Symbol.for("react.consumer"),N=Symbol.for("react.context"),D=Symbol.for("react.forward_ref"),z=Symbol.for("react.suspense"),Wr=Symbol.for("react.suspense_list"),Gr=Symbol.for("react.memo"),Ne=Symbol.for("react.lazy"),Br=Symbol.for("react.activity"),Hr=Symbol.for("react.client.reference"),Te=u.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ur=Object.prototype.hasOwnProperty,Jr=Array.isArray,xe=console.createTask?console.createTask:function(){return null};u={react_stack_bottom_frame:function(o){return o()}};var fr,dr={},_r=u.react_stack_bottom_frame.bind(u,a)(),hr=xe(n(a)),mr={};G.Fragment=K,G.jsx=function(o,f,m){var b=1e4>Te.recentlyCreatedOwnerStacks++;return l(o,f,m,!1,b?Error("react-stack-top-frame"):_r,b?xe(n(o)):hr)},G.jsxs=function(o,f,m){var b=1e4>Te.recentlyCreatedOwnerStacks++;return l(o,f,m,!0,b?Error("react-stack-top-frame"):_r,b?xe(n(o)):hr)}})()),G}var Me;function gr(){return Me||(Me=1,process.env.NODE_ENV==="production"?Q.exports=yr():Q.exports=pr()),Q.exports}var _=gr();function j(e){if(e===null||typeof e!="object")return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e);if(Array.isArray(e)){const t=[];for(let n=0;n<e.length;n++)t[n]=j(e[n]);return t}const r={};for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=j(e[t]));return r}var S=(e=>(e.GROUP="group",e.INDIVIDUAL="individual",e))(S||{}),A=(e=>(e.AND="and",e.OR="or",e))(A||{});const vr={[A.OR]:"或",[A.AND]:"且"},ze=({value:e,disabled:r,onChange:t})=>{function n(){r||t(e===A.OR?A.AND:A.OR)}return _.jsx("div",{className:"link-line",children:_.jsx("div",{className:"link-label",onClick:n,children:vr[e]??"且"})})};function br(e){return e==null||e===""?!0:Array.isArray(e)?e.length===0:e!==null&&typeof e=="object"?Object.keys(e).length===0:!1}function kr(e){return!!e&&Object.keys(e).length>0&&Object.keys(e).every(r=>!br(e[r]))}const Ue=({level:e,currentItemInfo:r,isLast:t,disabledConfig:n,onCreate:i,onCreateChildRules:a,onDel:s})=>{const c=y.useMemo(()=>r.level>=1&&t,[r.level,t]),p=y.useMemo(()=>e>1&&r.level<e,[e,r.level]),v=y.useMemo(()=>!!(e>1&&kr(r.individual)&&!n.addItem),[e,r.individual,n.addItem]);return _.jsxs("div",{className:"conditional-handle",children:[v&&_.jsxs(_.Fragment,{children:[c&&_.jsxs("span",{className:"create-handle",onClick:i,children:[_.jsx("span",{style:{color:"#c85000",marginRight:4},children:"+"}),"同级"]}),p&&_.jsxs("span",{className:"create-handle",onClick:a,children:[_.jsx("span",{style:{color:"#c85000",marginRight:4},children:"+"}),"子级"]})]}),!n.delItem&&_.jsx("span",{className:"del-handle",onClick:s,children:"-"})]})};var Le=Symbol.for("immer-nothing"),Ve=Symbol.for("immer-draftable"),R=Symbol.for("immer-state"),Rr=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 E(e,...r){if(process.env.NODE_ENV!=="production"){const t=Rr[e],n=I(t)?t.apply(null,r):t;throw new Error(`[Immer] ${n}`)}throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var P=Object,U=P.getPrototypeOf,q="constructor",$="prototype",ye="configurable",ee="enumerable",re="writable",B="value",T=e=>!!e&&!!e[R];function w(e){var r;return e?We(e)||ie(e)||!!e[Ve]||!!((r=e[q])!=null&&r[Ve])||oe(e)||ae(e):!1}var Er=P[$][q].toString(),Ye=new WeakMap;function We(e){if(!e||!ge(e))return!1;const r=U(e);if(r===null||r===P[$])return!0;const t=P.hasOwnProperty.call(r,q)&&r[q];if(t===Object)return!0;if(!I(t))return!1;let n=Ye.get(t);return n===void 0&&(n=Function.toString.call(t),Ye.set(t,n)),n===Er}function te(e,r,t=!0){H(e)===0?(t?Reflect.ownKeys(e):P.keys(e)).forEach(i=>{r(i,e[i],e)}):e.forEach((n,i)=>r(i,n,e))}function H(e){const r=e[R];return r?r.type_:ie(e)?1:oe(e)?2:ae(e)?3:0}var Ge=(e,r,t=H(e))=>t===2?e.has(r):P[$].hasOwnProperty.call(e,r),pe=(e,r,t=H(e))=>t===2?e.get(r):e[r],ne=(e,r,t,n=H(e))=>{n===2?e.set(r,t):n===3?e.add(t):e[r]=t};function Pr(e,r){return e===r?e!==0||1/e===1/r:e!==e&&r!==r}var ie=Array.isArray,oe=e=>e instanceof Map,ae=e=>e instanceof Set,ge=e=>typeof e=="object",I=e=>typeof e=="function",ve=e=>typeof e=="boolean";function Sr(e){const r=+e;return Number.isInteger(r)&&String(r)===e}var C=e=>e.copy_||e.base_,be=e=>e.modified_?e.copy_:e.base_;function ke(e,r){if(oe(e))return new Map(e);if(ae(e))return new Set(e);if(ie(e))return Array[$].slice.call(e);const t=We(e);if(r===!0||r==="class_only"&&!t){const n=P.getOwnPropertyDescriptors(e);delete n[R];let i=Reflect.ownKeys(n);for(let a=0;a<i.length;a++){const s=i[a],c=n[s];c[re]===!1&&(c[re]=!0,c[ye]=!0),(c.get||c.set)&&(n[s]={[ye]:!0,[re]:!0,[ee]:c[ee],[B]:e[s]})}return P.create(U(e),n)}else{const n=U(e);if(n!==null&&t)return{...e};const i=P.create(n);return P.assign(i,e)}}function J(e,r=!1){return ce(e)||T(e)||!w(e)||(H(e)>1&&P.defineProperties(e,{set:se,add:se,clear:se,delete:se}),P.freeze(e),r&&te(e,(t,n)=>{J(n,!0)},!1)),e}function Ar(){E(2)}var se={[B]:Ar};function ce(e){return e===null||!ge(e)?!0:P.isFrozen(e)}var le="MapSet",Re="Patches",Be="ArrayMethods",He={};function F(e){const r=He[e];return r||E(0,e),r}var Je=e=>!!He[e],X,Xe=()=>X,Or=(e,r)=>({drafts_:[],parent_:e,immer_:r,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:Je(le)?F(le):void 0,arrayMethodsPlugin_:Je(Be)?F(Be):void 0});function Ze(e,r){r&&(e.patchPlugin_=F(Re),e.patches_=[],e.inversePatches_=[],e.patchListener_=r)}function Ee(e){Pe(e),e.drafts_.forEach(wr),e.drafts_=null}function Pe(e){e===X&&(X=e.parent_)}var Ke=e=>X=Or(X,e);function wr(e){const r=e[R];r.type_===0||r.type_===1?r.revoke_():r.revoked_=!0}function Qe(e,r){r.unfinalizedDrafts_=r.drafts_.length;const t=r.drafts_[0];if(e!==void 0&&e!==t){t[R].modified_&&(Ee(r),E(4)),w(e)&&(e=qe(r,e));const{patchPlugin_:i}=r;i&&i.generateReplacementPatches_(t[R].base_,e,r)}else e=qe(r,t);return Cr(r,e,!0),Ee(r),r.patches_&&r.patchListener_(r.patches_,r.inversePatches_),e!==Le?e:void 0}function qe(e,r){if(ce(r))return r;const t=r[R];if(!t)return fe(r,e.handledSet_,e);if(!ue(t,e))return r;if(!t.modified_)return t.base_;if(!t.finalized_){const{callbacks_:n}=t;if(n)for(;n.length>0;)n.pop()(e);rr(t,e)}return t.copy_}function Cr(e,r,t=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&J(r,t)}function $e(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var ue=(e,r)=>e.scope_===r,Nr=[];function er(e,r,t,n){const i=C(e),a=e.type_;if(n!==void 0&&pe(i,n,a)===r){ne(i,n,t,a);return}if(!e.draftLocations_){const c=e.draftLocations_=new Map;te(i,(p,v)=>{if(T(v)){const l=c.get(v)||[];l.push(p),c.set(v,l)}})}const s=e.draftLocations_.get(r)??Nr;for(const c of s)ne(i,c,t,a)}function Tr(e,r,t){e.callbacks_.push(function(i){var c;const a=r;if(!a||!ue(a,i))return;(c=i.mapSetPlugin_)==null||c.fixSetContents(a);const s=be(a);er(e,a.draft_??a,s,t),rr(a,i)})}function rr(e,r){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_:i}=r;if(i){const a=i.getPath(e);a&&i.generatePatches_(e,a,r)}$e(e)}}function xr(e,r,t){const{scope_:n}=e;if(T(t)){const i=t[R];ue(i,n)&&i.callbacks_.push(function(){_e(e);const s=be(i);er(e,t,s,r)})}else w(t)&&e.callbacks_.push(function(){const a=C(e);e.type_===3?a.has(t)&&fe(t,n.handledSet_,n):pe(a,r,e.type_)===t&&n.drafts_.length>1&&(e.assigned_.get(r)??!1)===!0&&e.copy_&&fe(pe(e.copy_,r,e.type_),n.handledSet_,n)})}function fe(e,r,t){return!t.immer_.autoFreeze_&&t.unfinalizedDrafts_<1||T(e)||r.has(e)||!w(e)||ce(e)||(r.add(e),te(e,(n,i)=>{if(T(i)){const a=i[R];if(ue(a,t)){const s=be(a);ne(e,n,s,e.type_),$e(a)}}else w(i)&&fe(i,r,t)})),e}function Dr(e,r){const t=ie(e),n={type_:t?1:0,scope_:r?r.scope_:Xe(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:r,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let i=n,a=de;t&&(i=[n],a=Z);const{revoke:s,proxy:c}=Proxy.revocable(i,a);return n.draft_=c,n.revoke_=s,[c,n]}var de={get(e,r){if(r===R)return e;let t=e.scope_.arrayMethodsPlugin_;const n=e.type_===1&&typeof r=="string";if(n&&t!=null&&t.isArrayOperationMethod(r))return t.createMethodInterceptor(e,r);const i=C(e);if(!Ge(i,r,e.type_))return jr(e,i,r);const a=i[r];if(e.finalized_||!w(a)||n&&e.operationMethod&&(t!=null&&t.isMutatingArrayMethod(e.operationMethod))&&Sr(r))return a;if(a===Se(e.base_,r)){_e(e);const s=e.type_===1?+r:r,c=Oe(e.scope_,a,e,s);return e.copy_[s]=c}return a},has(e,r){return r in C(e)},ownKeys(e){return Reflect.ownKeys(C(e))},set(e,r,t){const n=tr(C(e),r);if(n!=null&&n.set)return n.set.call(e.draft_,t),!0;if(!e.modified_){const i=Se(C(e),r),a=i==null?void 0:i[R];if(a&&a.base_===t)return e.copy_[r]=t,e.assigned_.set(r,!1),!0;if(Pr(t,i)&&(t!==void 0||Ge(e.base_,r,e.type_)))return!0;_e(e),Ae(e)}return e.copy_[r]===t&&(t!==void 0||r in e.copy_)||Number.isNaN(t)&&Number.isNaN(e.copy_[r])||(e.copy_[r]=t,e.assigned_.set(r,!0),xr(e,r,t)),!0},deleteProperty(e,r){return _e(e),Se(e.base_,r)!==void 0||r in e.base_?(e.assigned_.set(r,!1),Ae(e)):e.assigned_.delete(r),e.copy_&&delete e.copy_[r],!0},getOwnPropertyDescriptor(e,r){const t=C(e),n=Reflect.getOwnPropertyDescriptor(t,r);return n&&{[re]:!0,[ye]:e.type_!==1||r!=="length",[ee]:n[ee],[B]:t[r]}},defineProperty(){E(11)},getPrototypeOf(e){return U(e.base_)},setPrototypeOf(){E(12)}},Z={};for(let e in de){let r=de[e];Z[e]=function(){const t=arguments;return t[0]=t[0][0],r.apply(this,t)}}Z.deleteProperty=function(e,r){return process.env.NODE_ENV!=="production"&&isNaN(parseInt(r))&&E(13),Z.set.call(this,e,r,void 0)},Z.set=function(e,r,t){return process.env.NODE_ENV!=="production"&&r!=="length"&&isNaN(parseInt(r))&&E(14),de.set.call(this,e[0],r,t,e[0])};function Se(e,r){const t=e[R];return(t?C(t):e)[r]}function jr(e,r,t){var i;const n=tr(r,t);return n?B in n?n[B]:(i=n.get)==null?void 0:i.call(e.draft_):void 0}function tr(e,r){if(!(r in e))return;let t=U(e);for(;t;){const n=Object.getOwnPropertyDescriptor(t,r);if(n)return n;t=U(t)}}function Ae(e){e.modified_||(e.modified_=!0,e.parent_&&Ae(e.parent_))}function _e(e){e.copy_||(e.assigned_=new Map,e.copy_=ke(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Ir=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(r,t,n)=>{if(I(r)&&!I(t)){const a=t;t=r;const s=this;return function(p=a,...v){return s.produce(p,l=>t.call(this,l,...v))}}I(t)||E(6),n!==void 0&&!I(n)&&E(7);let i;if(w(r)){const a=Ke(this),s=Oe(a,r,void 0);let c=!0;try{i=t(s),c=!1}finally{c?Ee(a):Pe(a)}return Ze(a,n),Qe(i,a)}else if(!r||!ge(r)){if(i=t(r),i===void 0&&(i=r),i===Le&&(i=void 0),this.autoFreeze_&&J(i,!0),n){const a=[],s=[];F(Re).generateReplacementPatches_(r,i,{patches_:a,inversePatches_:s}),n(a,s)}return i}else E(1,r)},this.produceWithPatches=(r,t)=>{if(I(r))return(s,...c)=>this.produceWithPatches(s,p=>r(p,...c));let n,i;return[this.produce(r,t,(s,c)=>{n=s,i=c}),n,i]},ve(e==null?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),ve(e==null?void 0:e.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),ve(e==null?void 0:e.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){w(e)||E(8),T(e)&&(e=Fr(e));const r=Ke(this),t=Oe(r,e,void 0);return t[R].isManual_=!0,Pe(r),t}finishDraft(e,r){const t=e&&e[R];(!t||!t.isManual_)&&E(9);const{scope_:n}=t;return Ze(n,r),Qe(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,r){let t;for(t=r.length-1;t>=0;t--){const i=r[t];if(i.path.length===0&&i.op==="replace"){e=i.value;break}}t>-1&&(r=r.slice(t+1));const n=F(Re).applyPatches_;return T(e)?n(e,r):this.produce(e,i=>n(i,r))}};function Oe(e,r,t,n){const[i,a]=oe(r)?F(le).proxyMap_(r,t):ae(r)?F(le).proxySet_(r,t):Dr(r,t);return((t==null?void 0:t.scope_)??Xe()).drafts_.push(i),a.callbacks_=(t==null?void 0:t.callbacks_)??[],a.key_=n,t&&n!==void 0?Tr(t,a,n):a.callbacks_.push(function(p){var l;(l=p.mapSetPlugin_)==null||l.fixSetContents(a);const{patchPlugin_:v}=p;a.modified_&&v&&v.generatePatches_(a,[],p)}),i}function Fr(e){return T(e)||E(10,e),nr(e)}function nr(e){if(!w(e)||ce(e))return e;const r=e[R];let t,n=!0;if(r){if(!r.modified_)return r.base_;r.finalized_=!0,t=ke(e,r.scope_.immer_.useStrictShallowCopy_),n=r.scope_.immer_.shouldUseStrictIteration()}else t=ke(e,!0);return te(t,(i,a)=>{ne(t,i,nr(a))},n),r&&(r.finalized_=!1),t}var Mr=new Ir,zr=Mr.produce;function Ur(e){var r=y.useState(function(){return J(typeof e=="function"?e():e,!0)}),t=r[1];return[r[0],y.useCallback(function(n){t(typeof n=="function"?zr(n):J(n))},[])]}function ir(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Lr(e){return e==null||e===""?!0:Array.isArray(e)?e.length===0:ir(e)?Object.keys(e).length===0:!1}function L(e=0){return j({_id:crypto.randomUUID(),framework:S.INDIVIDUAL,individual:{},level:e})}function x(e){return e.framework===S.GROUP}function Vr(e){return!!e&&Object.keys(e).length>0&&Object.keys(e).every(r=>!Lr(e[r]))}function or(e){return x(e)&&Array.isArray(e.group)?e.group.some(r=>or(r)):!Vr(e.individual)}function ar(e){x(e)&&Array.isArray(e.group)&&e.group.length>1&&e.group.forEach(r=>ar(r)),e.level=e.level-1<0?0:e.level-1}function M(e,r){if(e._id===r)return e;if(Array.isArray(e.group))for(const t of e.group){const n=M(t,r);if(n)return n}return null}function Yr(e){const[r,t]=Ur(()=>L()),n=y.useCallback(l=>{t(()=>l)},[t]),i=y.useMemo(()=>{const l=Math.abs(Number(e.maxDeep??1))||1;return Number(e.maxDeep??1)<1&&console.warn("[TConditionalSelection] Invalid props.maxDeep: maxDeep must be greater than 0."),l},[e.maxDeep]),a=y.useMemo(()=>{var g,d,u;const l=ir(e.disabled);return{addItem:!!(l?(g=e.disabled)!=null&&g.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=y.useCallback(l=>{x(l)&&t(g=>{const d=M(g,l._id);d&&Array.isArray(d.group)&&d.group.push(L(d.level+1))})},[t]),c=y.useCallback(l=>{t(g=>{const d=M(g,l._id);if(d)if(d.framework===S.INDIVIDUAL){const u={_id:crypto.randomUUID(),framework:S.INDIVIDUAL,individual:j(d.individual??{}),level:d.level+1},h=L(d.level+1);d.framework=S.GROUP,d.link=A.AND,d._id=crypto.randomUUID(),d.group=[u,h],delete d.individual}else Array.isArray(d.group)&&d.group.push(L(d.level+1))})},[t]),p=y.useCallback((l,g)=>{t(d=>{const u=M(d,l._id);if(!(!u||!Array.isArray(u.group))&&(u.group.splice(g,1),u.framework===S.GROUP&&u.group.length===1)){const h=u.group[0];h.framework===S.GROUP&&Array.isArray(h.group)&&h.group.length>1?(u.framework=S.GROUP,u.link=h.link,u._id=h._id,u.group=h.group,delete u.individual):(u.framework=S.INDIVIDUAL,u._id=h._id,u.individual=j(h.individual??{}),delete u.link,delete u.group),ar(h)}})},[t]),v=y.useCallback((l=!0)=>new Promise((g,d)=>{if(l&&or(r)){console.error("请填写完整"),d("含有未填写完整的项");return}g(j(r))}),[r]);return{rulesData:r,setRulesData:n,level:i,disabledConfig:a,createRules:s,createChildRules:c,delRules:p,getConditionalSelectionData:v,isGroup:x,getTempRules:L,updateRulesData:t}}function sr(e,r){const t=r.length-1,n=r[t];let i=e===t;return!i&&n&&x(n)&&(i=e===r.length-2),i}const cr=({levelData:e,level:r,disabledConfig:t,onUpdateNode:n,onCreateRules:i,onCreateChildRules:a,onDelRules:s,renderConditionItem:c})=>{const p=e.group;function v(l){n(e._id,{link:l})}return _.jsxs("div",{className:"relative-box",children:[_.jsx(ze,{value:e.link??A.AND,disabled:t.linkChange,onChange:v}),_.jsx("div",{className:"conditional-list-box right-box",children:p.map((l,g)=>{if(x(l)){const d=l.group;return _.jsx("div",{className:"conditional-list",children:_.jsxs("div",{className:"relative-box",children:[_.jsx(ze,{value:l.link??A.AND,disabled:t.linkChange,onChange:u=>n(l._id,{link:u})}),d.map((u,h)=>x(u)&&u.group.length>0?_.jsx("div",{className:"conditional-item right-box",children:_.jsx(cr,{levelData:u,level:r,disabledConfig:t,onUpdateNode:n,onCreateRules:i,onCreateChildRules:a,onDelRules:s,renderConditionItem:c})},u._id):_.jsxs("div",{className:"conditional-item right-box",children:[c==null?void 0:c(u),_.jsx(Ue,{level:r,disabledConfig:t,currentItemInfo:u,isLast:sr(h,d),onCreate:()=>i(l),onCreateChildRules:()=>a(u),onDel:()=>s(l,h)})]},u._id))]})},l._id)}return _.jsx("div",{className:"conditional-list",children:_.jsxs("div",{className:"conditional-item",children:[c==null?void 0:c(l),_.jsx(Ue,{level:r,disabledConfig:t,currentItemInfo:l,isLast:sr(g,p),onCreate:()=>i(e),onCreateChildRules:()=>a(l),onDel:()=>s(e,g)})]})},l._id)})})]})},lr=y.forwardRef((e,r)=>{const{conditionalRules:t,onChange:n,renderConditionRules:i,renderCreateCondition:a}=e,{rulesData:s,setRulesData:c,level:p,disabledConfig:v,createRules:l,createChildRules:g,delRules:d,getConditionalSelectionData:u,updateRulesData:h}=Yr(e);y.useImperativeHandle(r,()=>({getConditionalSelectionData:u}),[u]);const he=y.useRef(!0);y.useEffect(()=>{if(he.current){he.current=!1;return}n==null||n(s)},[s]),y.useEffect(()=>{t&&Object.keys(t).length!==0?c(j(t)):c(L())},[]);const K=y.useCallback((O,N)=>{h(D=>{const z=M(D,O);z&&Object.assign(z,N)})},[h]),we=y.useCallback(O=>i==null?void 0:i(O,N=>{h(D=>{const z=M(D,O._id);z&&(z.individual=N)})}),[i,h]),Ce=y.useCallback((O,N)=>i==null?void 0:i(O,N),[i]);return _.jsxs("div",{className:"conditional-selection",children:[!v.addItem&&(a?a({createRules:g,rulesData:s}):_.jsxs("span",{className:"create-box",onClick:()=>g(s),children:[_.jsx("span",{style:{color:"#00c8be",marginRight:4},children:"➕"}),"添加条件"]})),_.jsx("div",{className:"conditional-content",children:x(s)&&s.group.length>0?_.jsx(cr,{levelData:s,level:p,disabledConfig:v,onUpdateNode:K,onCreateRules:l,onCreateChildRules:g,onDelRules:d,renderConditionItem:we}):Ce(s,O=>{h(N=>{const D=M(N,s._id);D&&(D.individual=O)})})})]})});return lr.displayName="ConditionalSelection",Y.ConditionalSelection=lr,Y.EConditionalSelectionFramework=S,Y.EConditionalSelectionLink=A,Object.defineProperty(Y,Symbol.toStringTag,{value:"Module"}),Y})({},React);
23
+ <%s key={someKey} {...props} />`,v,k,V,k),mt[k+v]=!0)}if(k=null,p!==void 0&&(r(p),k=""+p),s(f)&&(r(f.key),k=""+f.key),"key"in f){p={};for(var je in f)je!=="key"&&(p[je]=f[je])}else p=f;return k&&c(p,typeof o=="function"?o.displayName||o.name||"Unknown":o),b(o,k,p,i(),pe,De)}function g(o){d(o)?o._store&&(o._store.validated=1):typeof o=="object"&&o!==null&&o.$$typeof===Ce&&(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===h}var u=m,h=Symbol.for("react.transitional.element"),he=Symbol.for("react.portal"),K=Symbol.for("react.fragment"),Ae=Symbol.for("react.strict_mode"),Oe=Symbol.for("react.profiler"),w=Symbol.for("react.consumer"),C=Symbol.for("react.context"),D=Symbol.for("react.forward_ref"),M=Symbol.for("react.suspense"),Gt=Symbol.for("react.suspense_list"),Bt=Symbol.for("react.memo"),Ce=Symbol.for("react.lazy"),Ht=Symbol.for("react.activity"),Jt=Symbol.for("react.client.reference"),Ne=u.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ft=Object.prototype.hasOwnProperty,Xt=Array.isArray,Te=console.createTask?console.createTask:function(){return null};u={react_stack_bottom_frame:function(o){return o()}};var dt,_t={},ht=u.react_stack_bottom_frame.bind(u,a)(),pt=Te(n(a)),mt={};G.Fragment=K,G.jsx=function(o,f,p){var v=1e4>Ne.recentlyCreatedOwnerStacks++;return l(o,f,p,!1,v?Error("react-stack-top-frame"):ht,v?Te(n(o)):pt)},G.jsxs=function(o,f,p){var v=1e4>Ne.recentlyCreatedOwnerStacks++;return l(o,f,p,!0,v?Error("react-stack-top-frame"):ht,v?Te(n(o)):pt)}})()),G}var Me;function bt(){return Me||(Me=1,process.env.NODE_ENV==="production"?Q.exports=yt():Q.exports=gt()),Q.exports}var _=bt();function j(e){if(e===null||typeof e!="object")return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e);if(Array.isArray(e)){const r=[];for(let n=0;n<e.length;n++)r[n]=j(e[n]);return r}const t={};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=j(e[r]));return t}var x=(e=>(e.GROUP="group",e.INDIVIDUAL="individual",e))(x||{}),S=(e=>(e.AND="and",e.OR="or",e))(S||{});const vt={[S.OR]:"或",[S.AND]:"且"},Ue=({value:e,disabled:t,onChange:r})=>{function n(){t||r(e===S.OR?S.AND:S.OR)}return _.jsx("div",{className:"link-line",children:_.jsx("div",{className:"link-label",onClick:n,children:vt[e]??"且"})})};function kt(e){return e==null||e===""?!0:Array.isArray(e)?e.length===0:e!==null&&typeof e=="object"?Object.keys(e).length===0:!1}function Rt(e){return!!e&&Object.keys(e).length>0&&Object.keys(e).every(t=>!kt(e[t]))}const Le=({level:e,currentItemInfo:t,isLast:r,disabledConfig:n,onCreate:i,onCreateChildRules:a,onDel:s})=>{const c=m.useMemo(()=>t.level>=1&&r,[t.level,r]),y=m.useMemo(()=>e>1&&t.level<e,[e,t.level]),b=m.useMemo(()=>!!(e>1&&Rt(t.individual)&&!n.addItem),[e,t.individual,n.addItem]);return _.jsxs("div",{className:"conditional-handle",children:[b&&_.jsxs(_.Fragment,{children:[c&&_.jsxs("span",{className:"create-handle",onClick:i,children:[_.jsx("span",{style:{color:"#c85000",marginRight:4},children:"+"}),"同级"]}),y&&_.jsxs("span",{className:"create-handle",onClick:a,children:[_.jsx("span",{style:{color:"#c85000",marginRight:4},children:"+"}),"子级"]})]}),!n.delItem&&_.jsx("span",{className:"del-handle",onClick:s,children:"-"})]})};var Ve=Symbol.for("immer-nothing"),Ye=Symbol.for("immer-draftable"),R=Symbol.for("immer-state"),Et=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 E(e,...t){if(process.env.NODE_ENV!=="production"){const r=Et[e],n=I(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 P=Object,U=P.getPrototypeOf,q="constructor",$="prototype",me="configurable",ee="enumerable",te="writable",B="value",N=e=>!!e&&!!e[R];function A(e){var t;return e?Ge(e)||ie(e)||!!e[Ye]||!!((t=e[q])!=null&&t[Ye])||oe(e)||ae(e):!1}var Pt=P[$][q].toString(),We=new WeakMap;function Ge(e){if(!e||!ge(e))return!1;const t=U(e);if(t===null||t===P[$])return!0;const r=P.hasOwnProperty.call(t,q)&&t[q];if(r===Object)return!0;if(!I(r))return!1;let n=We.get(r);return n===void 0&&(n=Function.toString.call(r),We.set(r,n)),n===Pt}function re(e,t,r=!0){H(e)===0?(r?Reflect.ownKeys(e):P.keys(e)).forEach(i=>{t(i,e[i],e)}):e.forEach((n,i)=>t(i,n,e))}function H(e){const t=e[R];return t?t.type_:ie(e)?1:oe(e)?2:ae(e)?3:0}var Be=(e,t,r=H(e))=>r===2?e.has(t):P[$].hasOwnProperty.call(e,t),ye=(e,t,r=H(e))=>r===2?e.get(t):e[t],ne=(e,t,r,n=H(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function xt(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var ie=Array.isArray,oe=e=>e instanceof Map,ae=e=>e instanceof Set,ge=e=>typeof e=="object",I=e=>typeof e=="function",be=e=>typeof e=="boolean";function St(e){const t=+e;return Number.isInteger(t)&&String(t)===e}var O=e=>e.copy_||e.base_,ve=e=>e.modified_?e.copy_:e.base_;function ke(e,t){if(oe(e))return new Map(e);if(ae(e))return new Set(e);if(ie(e))return Array[$].slice.call(e);const r=Ge(e);if(t===!0||t==="class_only"&&!r){const n=P.getOwnPropertyDescriptors(e);delete n[R];let i=Reflect.ownKeys(n);for(let a=0;a<i.length;a++){const s=i[a],c=n[s];c[te]===!1&&(c[te]=!0,c[me]=!0),(c.get||c.set)&&(n[s]={[me]:!0,[te]:!0,[ee]:c[ee],[B]:e[s]})}return P.create(U(e),n)}else{const n=U(e);if(n!==null&&r)return{...e};const i=P.create(n);return P.assign(i,e)}}function J(e,t=!1){return ce(e)||N(e)||!A(e)||(H(e)>1&&P.defineProperties(e,{set:se,add:se,clear:se,delete:se}),P.freeze(e),t&&re(e,(r,n)=>{J(n,!0)},!1)),e}function wt(){E(2)}var se={[B]:wt};function ce(e){return e===null||!ge(e)?!0:P.isFrozen(e)}var le="MapSet",Re="Patches",He="ArrayMethods",Je={};function z(e){const t=Je[e];return t||E(0,e),t}var Xe=e=>!!Je[e],X,Ze=()=>X,At=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:Xe(le)?z(le):void 0,arrayMethodsPlugin_:Xe(He)?z(He):void 0});function Ke(e,t){t&&(e.patchPlugin_=z(Re),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Ee(e){Pe(e),e.drafts_.forEach(Ot),e.drafts_=null}function Pe(e){e===X&&(X=e.parent_)}var Qe=e=>X=At(X,e);function Ot(e){const t=e[R];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function qe(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];if(e!==void 0&&e!==r){r[R].modified_&&(Ee(t),E(4)),A(e)&&(e=$e(t,e));const{patchPlugin_:i}=t;i&&i.generateReplacementPatches_(r[R].base_,e,t)}else e=$e(t,r);return Ct(t,e,!0),Ee(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==Ve?e:void 0}function $e(e,t){if(ce(t))return t;const r=t[R];if(!r)return fe(t,e.handledSet_,e);if(!ue(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);rt(r,e)}return r.copy_}function Ct(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&J(t,r)}function et(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var ue=(e,t)=>e.scope_===t,Nt=[];function tt(e,t,r,n){const i=O(e),a=e.type_;if(n!==void 0&&ye(i,n,a)===t){ne(i,n,r,a);return}if(!e.draftLocations_){const c=e.draftLocations_=new Map;re(i,(y,b)=>{if(N(b)){const l=c.get(b)||[];l.push(y),c.set(b,l)}})}const s=e.draftLocations_.get(t)??Nt;for(const c of s)ne(i,c,r,a)}function Tt(e,t,r){e.callbacks_.push(function(i){var c;const a=t;if(!a||!ue(a,i))return;(c=i.mapSetPlugin_)==null||c.fixSetContents(a);const s=ve(a);tt(e,a.draft_??a,s,r),rt(a,i)})}function rt(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_:i}=t;if(i){const a=i.getPath(e);a&&i.generatePatches_(e,a,t)}et(e)}}function Dt(e,t,r){const{scope_:n}=e;if(N(r)){const i=r[R];ue(i,n)&&i.callbacks_.push(function(){_e(e);const s=ve(i);tt(e,r,s,t)})}else A(r)&&e.callbacks_.push(function(){const a=O(e);e.type_===3?a.has(r)&&fe(r,n.handledSet_,n):ye(a,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&fe(ye(e.copy_,t,e.type_),n.handledSet_,n)})}function fe(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||N(e)||t.has(e)||!A(e)||ce(e)||(t.add(e),re(e,(n,i)=>{if(N(i)){const a=i[R];if(ue(a,r)){const s=ve(a);ne(e,n,s,e.type_),et(a)}}else A(i)&&fe(i,t,r)})),e}function jt(e,t){const r=ie(e),n={type_:r?1:0,scope_:t?t.scope_:Ze(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let i=n,a=de;r&&(i=[n],a=Z);const{revoke:s,proxy:c}=Proxy.revocable(i,a);return n.draft_=c,n.revoke_=s,[c,n]}var de={get(e,t){if(t===R)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 i=O(e);if(!Be(i,t,e.type_))return It(e,i,t);const a=i[t];if(e.finalized_||!A(a)||n&&e.operationMethod&&(r!=null&&r.isMutatingArrayMethod(e.operationMethod))&&St(t))return a;if(a===xe(e.base_,t)){_e(e);const s=e.type_===1?+t:t,c=we(e.scope_,a,e,s);return e.copy_[s]=c}return a},has(e,t){return t in O(e)},ownKeys(e){return Reflect.ownKeys(O(e))},set(e,t,r){const n=nt(O(e),t);if(n!=null&&n.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const i=xe(O(e),t),a=i==null?void 0:i[R];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(xt(r,i)&&(r!==void 0||Be(e.base_,t,e.type_)))return!0;_e(e),Se(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),Dt(e,t,r)),!0},deleteProperty(e,t){return _e(e),xe(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Se(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){const r=O(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[te]:!0,[me]:e.type_!==1||t!=="length",[ee]:n[ee],[B]:r[t]}},defineProperty(){E(11)},getPrototypeOf(e){return U(e.base_)},setPrototypeOf(){E(12)}},Z={};for(let e in de){let t=de[e];Z[e]=function(){const r=arguments;return r[0]=r[0][0],t.apply(this,r)}}Z.deleteProperty=function(e,t){return process.env.NODE_ENV!=="production"&&isNaN(parseInt(t))&&E(13),Z.set.call(this,e,t,void 0)},Z.set=function(e,t,r){return process.env.NODE_ENV!=="production"&&t!=="length"&&isNaN(parseInt(t))&&E(14),de.set.call(this,e[0],t,r,e[0])};function xe(e,t){const r=e[R];return(r?O(r):e)[t]}function It(e,t,r){var i;const n=nt(t,r);return n?B in n?n[B]:(i=n.get)==null?void 0:i.call(e.draft_):void 0}function nt(e,t){if(!(t in e))return;let r=U(e);for(;r;){const n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=U(r)}}function Se(e){e.modified_||(e.modified_=!0,e.parent_&&Se(e.parent_))}function _e(e){e.copy_||(e.assigned_=new Map,e.copy_=ke(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var zt=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(I(t)&&!I(r)){const a=r;r=t;const s=this;return function(y=a,...b){return s.produce(y,l=>r.call(this,l,...b))}}I(r)||E(6),n!==void 0&&!I(n)&&E(7);let i;if(A(t)){const a=Qe(this),s=we(a,t,void 0);let c=!0;try{i=r(s),c=!1}finally{c?Ee(a):Pe(a)}return Ke(a,n),qe(i,a)}else if(!t||!ge(t)){if(i=r(t),i===void 0&&(i=t),i===Ve&&(i=void 0),this.autoFreeze_&&J(i,!0),n){const a=[],s=[];z(Re).generateReplacementPatches_(t,i,{patches_:a,inversePatches_:s}),n(a,s)}return i}else E(1,t)},this.produceWithPatches=(t,r)=>{if(I(t))return(s,...c)=>this.produceWithPatches(s,y=>t(y,...c));let n,i;return[this.produce(t,r,(s,c)=>{n=s,i=c}),n,i]},be(e==null?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),be(e==null?void 0:e.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),be(e==null?void 0:e.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){A(e)||E(8),N(e)&&(e=Ft(e));const t=Qe(this),r=we(t,e,void 0);return r[R].isManual_=!0,Pe(t),r}finishDraft(e,t){const r=e&&e[R];(!r||!r.isManual_)&&E(9);const{scope_:n}=r;return Ke(n,t),qe(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 i=t[r];if(i.path.length===0&&i.op==="replace"){e=i.value;break}}r>-1&&(t=t.slice(r+1));const n=z(Re).applyPatches_;return N(e)?n(e,t):this.produce(e,i=>n(i,t))}};function we(e,t,r,n){const[i,a]=oe(t)?z(le).proxyMap_(t,r):ae(t)?z(le).proxySet_(t,r):jt(t,r);return((r==null?void 0:r.scope_)??Ze()).drafts_.push(i),a.callbacks_=(r==null?void 0:r.callbacks_)??[],a.key_=n,r&&n!==void 0?Tt(r,a,n):a.callbacks_.push(function(y){var l;(l=y.mapSetPlugin_)==null||l.fixSetContents(a);const{patchPlugin_:b}=y;a.modified_&&b&&b.generatePatches_(a,[],y)}),i}function Ft(e){return N(e)||E(10,e),it(e)}function it(e){if(!A(e)||ce(e))return e;const t=e[R];let r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=ke(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=ke(e,!0);return re(r,(i,a)=>{ne(r,i,it(a))},n),t&&(t.finalized_=!1),r}var Mt=new zt,Ut=Mt.produce;function Lt(e){var t=m.useState(function(){return J(typeof e=="function"?e():e,!0)}),r=t[1];return[t[0],m.useCallback(function(n){r(typeof n=="function"?Ut(n):J(n))},[])]}function ot(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Vt(e){return e==null||e===""?!0:Array.isArray(e)?e.length===0:ot(e)?Object.keys(e).length===0:!1}function L(e=0){return j({_id:crypto.randomUUID(),framework:x.INDIVIDUAL,individual:{},level:e})}function T(e){return e.framework===x.GROUP}function Yt(e){return!!e&&Object.keys(e).length>0&&Object.keys(e).every(t=>!Vt(e[t]))}function at(e){return T(e)&&Array.isArray(e.group)?e.group.some(t=>at(t)):!Yt(e.individual)}function st(e){T(e)&&Array.isArray(e.group)&&e.group.length>1&&e.group.forEach(t=>st(t)),e.level=e.level-1<0?0:e.level-1}function F(e,t){if(e._id===t)return e;if(Array.isArray(e.group))for(const r of e.group){const n=F(r,t);if(n)return n}return null}function Wt(e){const[t,r]=Lt(()=>L()),n=m.useCallback(l=>{r(()=>l)},[r]),i=m.useMemo(()=>{const l=Math.abs(Number(e.maxDeep??1))||1;return Number(e.maxDeep??1)<1&&console.warn("[TConditionalSelection] Invalid props.maxDeep: maxDeep must be greater than 0."),l},[e.maxDeep]),a=m.useMemo(()=>{var g,d,u;const l=ot(e.disabled);return{addItem:!!(l?(g=e.disabled)!=null&&g.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=m.useCallback(l=>{T(l)&&r(g=>{const d=F(g,l._id);d&&Array.isArray(d.group)&&d.group.push(L(d.level+1))})},[r]),c=m.useCallback(l=>{r(g=>{const d=F(g,l._id);if(d)if(d.framework===x.INDIVIDUAL){const u={_id:crypto.randomUUID(),framework:x.INDIVIDUAL,individual:j(d.individual??{}),level:d.level+1},h=L(d.level+1);d.framework=x.GROUP,d.link=S.AND,d._id=crypto.randomUUID(),d.group=[u,h],delete d.individual}else Array.isArray(d.group)&&d.group.push(L(d.level+1))})},[r]),y=m.useCallback((l,g)=>{r(d=>{const u=F(d,l._id);if(!(!u||!Array.isArray(u.group))&&(u.group.splice(g,1),u.framework===x.GROUP&&u.group.length===1)){const h=u.group[0];h.framework===x.GROUP&&Array.isArray(h.group)&&h.group.length>1?(u.framework=x.GROUP,u.link=h.link,u._id=h._id,u.group=h.group,delete u.individual):(u.framework=x.INDIVIDUAL,u._id=h._id,u.individual=j(h.individual??{}),delete u.link,delete u.group),st(h)}})},[r]),b=m.useCallback((l=!0)=>new Promise((g,d)=>{if(l&&at(t)){console.error("请填写完整"),d("含有未填写完整的项");return}g(j(t))}),[t]);return{rulesData:t,setRulesData:n,level:i,disabledConfig:a,createRules:s,createChildRules:c,delRules:y,getConditionalSelectionData:b,isGroup:T,getTempRules:L,updateRulesData:r}}function ct(e,t){const r=t.length-1,n=t[r];let i=e===r;return!i&&n&&T(n)&&(i=e===t.length-2),i}const lt=({levelData:e,level:t,disabledConfig:r,onUpdateNode:n,onCreateRules:i,onCreateChildRules:a,onDelRules:s,renderConditionItem:c})=>{const y=e.group;function b(l){n(e._id,{link:l})}return _.jsxs("div",{className:"relative-box",children:[_.jsx(Ue,{value:e.link??S.AND,disabled:r.linkChange,onChange:b}),_.jsx("div",{className:"conditional-list-box right-box",children:y.map((l,g)=>{if(T(l)){const d=l.group;return _.jsx("div",{className:"conditional-list",children:_.jsxs("div",{className:"relative-box",children:[_.jsx(Ue,{value:l.link??S.AND,disabled:r.linkChange,onChange:u=>n(l._id,{link:u})}),d.map((u,h)=>T(u)&&u.group.length>0?_.jsx("div",{className:"conditional-item right-box",children:_.jsx(lt,{levelData:u,level:t,disabledConfig:r,onUpdateNode:n,onCreateRules:i,onCreateChildRules:a,onDelRules:s,renderConditionItem:c})},u._id):_.jsxs("div",{className:"conditional-item right-box",children:[c==null?void 0:c(u),_.jsx(Le,{level:t,disabledConfig:r,currentItemInfo:u,isLast:ct(h,d),onCreate:()=>i(l),onCreateChildRules:()=>a(u),onDel:()=>s(l,h)})]},u._id))]})},l._id)}return _.jsx("div",{className:"conditional-list",children:_.jsxs("div",{className:"conditional-item",children:[c==null?void 0:c(l),_.jsx(Le,{level:t,disabledConfig:r,currentItemInfo:l,isLast:ct(g,y),onCreate:()=>i(e),onCreateChildRules:()=>a(l),onDel:()=>s(e,g)})]})},l._id)})})]})},ut=m.forwardRef((e,t)=>{const{conditionalRules:r,onChange:n,renderConditionRules:i,renderCreateCondition:a}=e,{rulesData:s,setRulesData:c,level:y,disabledConfig:b,createRules:l,createChildRules:g,delRules:d,getConditionalSelectionData:u,updateRulesData:h}=Wt(e);m.useImperativeHandle(t,()=>({getConditionalSelectionData:u}),[u]);const he=m.useRef(!0);m.useEffect(()=>{if(he.current){he.current=!1;return}n==null||n(s)},[s]),m.useEffect(()=>{r&&Object.keys(r).length!==0?c(j(r)):c(L())},[]);const K=m.useCallback((w,C)=>{h(D=>{const M=F(D,w);M&&Object.assign(M,C)})},[h]),Ae=m.useCallback(w=>i==null?void 0:i(w,C=>{h(D=>{const M=F(D,w._id);M&&(M.individual=C)})}),[i,h]),Oe=m.useCallback((w,C)=>i==null?void 0:i(w,C),[i]);return _.jsxs("div",{className:"conditional-selection",children:[!b.addItem&&(a?a({createRules:g,rulesData:s}):_.jsxs("span",{className:"create-box",onClick:()=>g(s),children:[_.jsx("span",{style:{color:"#00c8be",marginRight:4},children:"➕"}),"添加条件"]})),_.jsx("div",{className:"conditional-content",children:T(s)&&s.group.length>0?_.jsx(lt,{levelData:s,level:y,disabledConfig:b,onUpdateNode:K,onCreateRules:l,onCreateChildRules:g,onDelRules:d,renderConditionItem:Ae}):Oe(s,w=>{h(C=>{const D=F(C,s._id);D&&(D.individual=w)})})})]})});return ut.displayName="ConditionalSelection",Y.ConditionalSelection=ut,Y.EConditionalSelectionFramework=x,Y.EConditionalSelectionLink=S,Object.defineProperty(Y,Symbol.toStringTag,{value:"Module"}),Y})({},React);
package/dist/ui.umd.js CHANGED
@@ -1,4 +1,5 @@
1
- (function(w,h){typeof exports=="object"&&typeof module<"u"?h(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],h):(w=typeof globalThis<"u"?globalThis:w||self,h(w.ui={},w.React))})(this,(function(w,h){"use strict";var Q={exports:{}},W={};/**
1
+ (function(A,h){typeof exports=="object"&&typeof module<"u"?h(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],h):(A=typeof globalThis<"u"?globalThis:A||self,h(A.ui={},A.React))})(this,(function(A,h){"use strict";var Ie=document.createElement("style");Ie.textContent=`.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}
2
+ /*$vite$:1*/`,document.head.appendChild(Ie);var Q={exports:{}},W={};/**
2
3
  * @license React
3
4
  * react-jsx-runtime.production.js
4
5
  *
@@ -6,7 +7,7 @@
6
7
  *
7
8
  * This source code is licensed under the MIT license found in the
8
9
  * LICENSE file in the root directory of this source tree.
9
- */var Ie;function yr(){if(Ie)return W;Ie=1;var e=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function t(n,i,a){var s=null;if(a!==void 0&&(s=""+a),i.key!==void 0&&(s=""+i.key),"key"in i){a={};for(var c in i)c!=="key"&&(a[c]=i[c])}else a=i;return i=a.ref,{$$typeof:e,type:n,key:s,ref:i!==void 0?i:null,props:a}}return W.Fragment=r,W.jsx=t,W.jsxs=t,W}var G={};/**
10
+ */var ze;function yt(){if(ze)return W;ze=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(n,i,a){var s=null;if(a!==void 0&&(s=""+a),i.key!==void 0&&(s=""+i.key),"key"in i){a={};for(var c in i)c!=="key"&&(a[c]=i[c])}else a=i;return i=a.ref,{$$typeof:e,type:n,key:s,ref:i!==void 0?i:null,props:a}}return W.Fragment=t,W.jsx=r,W.jsxs=r,W}var G={};/**
10
11
  * @license React
11
12
  * react-jsx-runtime.development.js
12
13
  *
@@ -14,9 +15,9 @@
14
15
  *
15
16
  * This source code is licensed under the MIT license found in the
16
17
  * LICENSE file in the root directory of this source tree.
17
- */var Fe;function pr(){return Fe||(Fe=1,process.env.NODE_ENV!=="production"&&(function(){function e(o){if(o==null)return null;if(typeof o=="function")return o.$$typeof===Hr?null:o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case K:return"Fragment";case Ce:return"Profiler";case we:return"StrictMode";case U:return"Suspense";case Wr:return"SuspenseList";case Br: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 he:return"Portal";case T:return o.displayName||"Context";case O:return(o._context.displayName||"Context")+".Consumer";case j:var f=o.render;return o=o.displayName,o||(o=f.displayName||f.name||"",o=o!==""?"ForwardRef("+o+")":"ForwardRef"),o;case Gr:return f=o.displayName||null,f!==null?f:e(o.type)||"Memo";case Ne:f=o._payload,o=o._init;try{return e(o(f))}catch{}}return null}function r(o){return""+o}function t(o){try{r(o);var f=!1}catch{f=!0}if(f){f=console;var y=f.error,b=typeof Symbol=="function"&&Symbol.toStringTag&&o[Symbol.toStringTag]||o.constructor.name||"Object";return y.call(f,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",b),r(o)}}function n(o){if(o===K)return"<>";if(typeof o=="object"&&o!==null&&o.$$typeof===Ne)return"<...>";try{var f=e(o);return f?"<"+f+">":"<...>"}catch{return"<...>"}}function i(){var o=Te.A;return o===null?null:o.getOwner()}function a(){return Error("react-stack-top-frame")}function s(o){if(ur.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 y(){fr||(fr=!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))}y.isReactWarning=!0,Object.defineProperty(o,"key",{get:y,configurable:!0})}function p(){var o=e(this.type);return dr[o]||(dr[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 v(o,f,y,b,me,De){var k=y.ref;return o={$$typeof:m,type:o,key:f,props:y,_owner:b},(k!==void 0?k:null)!==null?Object.defineProperty(o,"ref",{enumerable:!1,get:p}):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:me}),Object.defineProperty(o,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:De}),Object.freeze&&(Object.freeze(o.props),Object.freeze(o)),o}function l(o,f,y,b,me,De){var k=f.children;if(k!==void 0)if(b)if(Jr(k)){for(b=0;b<k.length;b++)g(k[b]);Object.freeze&&Object.freeze(k)}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 g(k);if(ur.call(f,"key")){k=e(o);var Y=Object.keys(f).filter(function(Xr){return Xr!=="key"});b=0<Y.length?"{key: someKey, "+Y.join(": ..., ")+": ...}":"{key: someKey}",mr[k+b]||(Y=0<Y.length?"{"+Y.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
+ */var Fe;function gt(){return Fe||(Fe=1,process.env.NODE_ENV!=="production"&&(function(){function e(o){if(o==null)return null;if(typeof o=="function")return o.$$typeof===Jt?null:o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case K:return"Fragment";case Oe:return"Profiler";case Ae:return"StrictMode";case U:return"Suspense";case Gt:return"SuspenseList";case Ht: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 he:return"Portal";case N:return o.displayName||"Context";case w:return(o._context.displayName||"Context")+".Consumer";case j:var f=o.render;return o=o.displayName,o||(o=f.displayName||f.name||"",o=o!==""?"ForwardRef("+o+")":"ForwardRef"),o;case Bt:return f=o.displayName||null,f!==null?f:e(o.type)||"Memo";case Ce: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 m=f.error,v=typeof Symbol=="function"&&Symbol.toStringTag&&o[Symbol.toStringTag]||o.constructor.name||"Object";return m.call(f,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",v),t(o)}}function n(o){if(o===K)return"<>";if(typeof o=="object"&&o!==null&&o.$$typeof===Ce)return"<...>";try{var f=e(o);return f?"<"+f+">":"<...>"}catch{return"<...>"}}function i(){var o=Ne.A;return o===null?null:o.getOwner()}function a(){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 m(){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))}m.isReactWarning=!0,Object.defineProperty(o,"key",{get:m,configurable:!0})}function y(){var o=e(this.type);return _t[o]||(_t[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 b(o,f,m,v,pe,De){var k=m.ref;return o={$$typeof:p,type:o,key:f,props:m,_owner:v},(k!==void 0?k:null)!==null?Object.defineProperty(o,"ref",{enumerable:!1,get:y}):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:pe}),Object.defineProperty(o,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:De}),Object.freeze&&(Object.freeze(o.props),Object.freeze(o)),o}function l(o,f,m,v,pe,De){var k=f.children;if(k!==void 0)if(v)if(Xt(k)){for(v=0;v<k.length;v++)g(k[v]);Object.freeze&&Object.freeze(k)}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 g(k);if(ft.call(f,"key")){k=e(o);var Y=Object.keys(f).filter(function(Zt){return Zt!=="key"});v=0<Y.length?"{key: someKey, "+Y.join(": ..., ")+": ...}":"{key: someKey}",mt[k+v]||(Y=0<Y.length?"{"+Y.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
19
  let props = %s;
19
20
  <%s {...props} />
20
21
  React keys must be passed directly to JSX without using spread:
21
22
  let props = %s;
22
- <%s key={someKey} {...props} />`,b,k,Y,k),mr[k+b]=!0)}if(k=null,y!==void 0&&(t(y),k=""+y),s(f)&&(t(f.key),k=""+f.key),"key"in f){y={};for(var je in f)je!=="key"&&(y[je]=f[je])}else y=f;return k&&c(y,typeof o=="function"?o.displayName||o.name||"Unknown":o),v(o,k,y,i(),me,De)}function g(o){d(o)?o._store&&(o._store.validated=1):typeof o=="object"&&o!==null&&o.$$typeof===Ne&&(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===m}var u=h,m=Symbol.for("react.transitional.element"),he=Symbol.for("react.portal"),K=Symbol.for("react.fragment"),we=Symbol.for("react.strict_mode"),Ce=Symbol.for("react.profiler"),O=Symbol.for("react.consumer"),T=Symbol.for("react.context"),j=Symbol.for("react.forward_ref"),U=Symbol.for("react.suspense"),Wr=Symbol.for("react.suspense_list"),Gr=Symbol.for("react.memo"),Ne=Symbol.for("react.lazy"),Br=Symbol.for("react.activity"),Hr=Symbol.for("react.client.reference"),Te=u.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ur=Object.prototype.hasOwnProperty,Jr=Array.isArray,xe=console.createTask?console.createTask:function(){return null};u={react_stack_bottom_frame:function(o){return o()}};var fr,dr={},_r=u.react_stack_bottom_frame.bind(u,a)(),hr=xe(n(a)),mr={};G.Fragment=K,G.jsx=function(o,f,y){var b=1e4>Te.recentlyCreatedOwnerStacks++;return l(o,f,y,!1,b?Error("react-stack-top-frame"):_r,b?xe(n(o)):hr)},G.jsxs=function(o,f,y){var b=1e4>Te.recentlyCreatedOwnerStacks++;return l(o,f,y,!0,b?Error("react-stack-top-frame"):_r,b?xe(n(o)):hr)}})()),G}var Me;function gr(){return Me||(Me=1,process.env.NODE_ENV==="production"?Q.exports=yr():Q.exports=pr()),Q.exports}var _=gr();function I(e){if(e===null||typeof e!="object")return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e);if(Array.isArray(e)){const t=[];for(let n=0;n<e.length;n++)t[n]=I(e[n]);return t}const r={};for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=I(e[t]));return r}var S=(e=>(e.GROUP="group",e.INDIVIDUAL="individual",e))(S||{}),A=(e=>(e.AND="and",e.OR="or",e))(A||{});const vr={[A.OR]:"或",[A.AND]:"且"},ze=({value:e,disabled:r,onChange:t})=>{function n(){r||t(e===A.OR?A.AND:A.OR)}return _.jsx("div",{className:"link-line",children:_.jsx("div",{className:"link-label",onClick:n,children:vr[e]??"且"})})};function br(e){return e==null||e===""?!0:Array.isArray(e)?e.length===0:e!==null&&typeof e=="object"?Object.keys(e).length===0:!1}function kr(e){return!!e&&Object.keys(e).length>0&&Object.keys(e).every(r=>!br(e[r]))}const Ue=({level:e,currentItemInfo:r,isLast:t,disabledConfig:n,onCreate:i,onCreateChildRules:a,onDel:s})=>{const c=h.useMemo(()=>r.level>=1&&t,[r.level,t]),p=h.useMemo(()=>e>1&&r.level<e,[e,r.level]),v=h.useMemo(()=>!!(e>1&&kr(r.individual)&&!n.addItem),[e,r.individual,n.addItem]);return _.jsxs("div",{className:"conditional-handle",children:[v&&_.jsxs(_.Fragment,{children:[c&&_.jsxs("span",{className:"create-handle",onClick:i,children:[_.jsx("span",{style:{color:"#c85000",marginRight:4},children:"+"}),"同级"]}),p&&_.jsxs("span",{className:"create-handle",onClick:a,children:[_.jsx("span",{style:{color:"#c85000",marginRight:4},children:"+"}),"子级"]})]}),!n.delItem&&_.jsx("span",{className:"del-handle",onClick:s,children:"-"})]})};var Le=Symbol.for("immer-nothing"),Ve=Symbol.for("immer-draftable"),R=Symbol.for("immer-state"),Rr=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 E(e,...r){if(process.env.NODE_ENV!=="production"){const t=Rr[e],n=F(t)?t.apply(null,r):t;throw new Error(`[Immer] ${n}`)}throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var P=Object,L=P.getPrototypeOf,q="constructor",$="prototype",ye="configurable",ee="enumerable",re="writable",B="value",x=e=>!!e&&!!e[R];function C(e){var r;return e?We(e)||ie(e)||!!e[Ve]||!!((r=e[q])!=null&&r[Ve])||oe(e)||ae(e):!1}var Er=P[$][q].toString(),Ye=new WeakMap;function We(e){if(!e||!ge(e))return!1;const r=L(e);if(r===null||r===P[$])return!0;const t=P.hasOwnProperty.call(r,q)&&r[q];if(t===Object)return!0;if(!F(t))return!1;let n=Ye.get(t);return n===void 0&&(n=Function.toString.call(t),Ye.set(t,n)),n===Er}function te(e,r,t=!0){H(e)===0?(t?Reflect.ownKeys(e):P.keys(e)).forEach(i=>{r(i,e[i],e)}):e.forEach((n,i)=>r(i,n,e))}function H(e){const r=e[R];return r?r.type_:ie(e)?1:oe(e)?2:ae(e)?3:0}var Ge=(e,r,t=H(e))=>t===2?e.has(r):P[$].hasOwnProperty.call(e,r),pe=(e,r,t=H(e))=>t===2?e.get(r):e[r],ne=(e,r,t,n=H(e))=>{n===2?e.set(r,t):n===3?e.add(t):e[r]=t};function Pr(e,r){return e===r?e!==0||1/e===1/r:e!==e&&r!==r}var ie=Array.isArray,oe=e=>e instanceof Map,ae=e=>e instanceof Set,ge=e=>typeof e=="object",F=e=>typeof e=="function",ve=e=>typeof e=="boolean";function Sr(e){const r=+e;return Number.isInteger(r)&&String(r)===e}var N=e=>e.copy_||e.base_,be=e=>e.modified_?e.copy_:e.base_;function ke(e,r){if(oe(e))return new Map(e);if(ae(e))return new Set(e);if(ie(e))return Array[$].slice.call(e);const t=We(e);if(r===!0||r==="class_only"&&!t){const n=P.getOwnPropertyDescriptors(e);delete n[R];let i=Reflect.ownKeys(n);for(let a=0;a<i.length;a++){const s=i[a],c=n[s];c[re]===!1&&(c[re]=!0,c[ye]=!0),(c.get||c.set)&&(n[s]={[ye]:!0,[re]:!0,[ee]:c[ee],[B]:e[s]})}return P.create(L(e),n)}else{const n=L(e);if(n!==null&&t)return{...e};const i=P.create(n);return P.assign(i,e)}}function J(e,r=!1){return ce(e)||x(e)||!C(e)||(H(e)>1&&P.defineProperties(e,{set:se,add:se,clear:se,delete:se}),P.freeze(e),r&&te(e,(t,n)=>{J(n,!0)},!1)),e}function Ar(){E(2)}var se={[B]:Ar};function ce(e){return e===null||!ge(e)?!0:P.isFrozen(e)}var le="MapSet",Re="Patches",Be="ArrayMethods",He={};function M(e){const r=He[e];return r||E(0,e),r}var Je=e=>!!He[e],X,Xe=()=>X,Or=(e,r)=>({drafts_:[],parent_:e,immer_:r,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:Je(le)?M(le):void 0,arrayMethodsPlugin_:Je(Be)?M(Be):void 0});function Ze(e,r){r&&(e.patchPlugin_=M(Re),e.patches_=[],e.inversePatches_=[],e.patchListener_=r)}function Ee(e){Pe(e),e.drafts_.forEach(wr),e.drafts_=null}function Pe(e){e===X&&(X=e.parent_)}var Ke=e=>X=Or(X,e);function wr(e){const r=e[R];r.type_===0||r.type_===1?r.revoke_():r.revoked_=!0}function Qe(e,r){r.unfinalizedDrafts_=r.drafts_.length;const t=r.drafts_[0];if(e!==void 0&&e!==t){t[R].modified_&&(Ee(r),E(4)),C(e)&&(e=qe(r,e));const{patchPlugin_:i}=r;i&&i.generateReplacementPatches_(t[R].base_,e,r)}else e=qe(r,t);return Cr(r,e,!0),Ee(r),r.patches_&&r.patchListener_(r.patches_,r.inversePatches_),e!==Le?e:void 0}function qe(e,r){if(ce(r))return r;const t=r[R];if(!t)return fe(r,e.handledSet_,e);if(!ue(t,e))return r;if(!t.modified_)return t.base_;if(!t.finalized_){const{callbacks_:n}=t;if(n)for(;n.length>0;)n.pop()(e);rr(t,e)}return t.copy_}function Cr(e,r,t=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&J(r,t)}function $e(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var ue=(e,r)=>e.scope_===r,Nr=[];function er(e,r,t,n){const i=N(e),a=e.type_;if(n!==void 0&&pe(i,n,a)===r){ne(i,n,t,a);return}if(!e.draftLocations_){const c=e.draftLocations_=new Map;te(i,(p,v)=>{if(x(v)){const l=c.get(v)||[];l.push(p),c.set(v,l)}})}const s=e.draftLocations_.get(r)??Nr;for(const c of s)ne(i,c,t,a)}function Tr(e,r,t){e.callbacks_.push(function(i){var c;const a=r;if(!a||!ue(a,i))return;(c=i.mapSetPlugin_)==null||c.fixSetContents(a);const s=be(a);er(e,a.draft_??a,s,t),rr(a,i)})}function rr(e,r){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_:i}=r;if(i){const a=i.getPath(e);a&&i.generatePatches_(e,a,r)}$e(e)}}function xr(e,r,t){const{scope_:n}=e;if(x(t)){const i=t[R];ue(i,n)&&i.callbacks_.push(function(){_e(e);const s=be(i);er(e,t,s,r)})}else C(t)&&e.callbacks_.push(function(){const a=N(e);e.type_===3?a.has(t)&&fe(t,n.handledSet_,n):pe(a,r,e.type_)===t&&n.drafts_.length>1&&(e.assigned_.get(r)??!1)===!0&&e.copy_&&fe(pe(e.copy_,r,e.type_),n.handledSet_,n)})}function fe(e,r,t){return!t.immer_.autoFreeze_&&t.unfinalizedDrafts_<1||x(e)||r.has(e)||!C(e)||ce(e)||(r.add(e),te(e,(n,i)=>{if(x(i)){const a=i[R];if(ue(a,t)){const s=be(a);ne(e,n,s,e.type_),$e(a)}}else C(i)&&fe(i,r,t)})),e}function Dr(e,r){const t=ie(e),n={type_:t?1:0,scope_:r?r.scope_:Xe(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:r,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let i=n,a=de;t&&(i=[n],a=Z);const{revoke:s,proxy:c}=Proxy.revocable(i,a);return n.draft_=c,n.revoke_=s,[c,n]}var de={get(e,r){if(r===R)return e;let t=e.scope_.arrayMethodsPlugin_;const n=e.type_===1&&typeof r=="string";if(n&&t!=null&&t.isArrayOperationMethod(r))return t.createMethodInterceptor(e,r);const i=N(e);if(!Ge(i,r,e.type_))return jr(e,i,r);const a=i[r];if(e.finalized_||!C(a)||n&&e.operationMethod&&(t!=null&&t.isMutatingArrayMethod(e.operationMethod))&&Sr(r))return a;if(a===Se(e.base_,r)){_e(e);const s=e.type_===1?+r:r,c=Oe(e.scope_,a,e,s);return e.copy_[s]=c}return a},has(e,r){return r in N(e)},ownKeys(e){return Reflect.ownKeys(N(e))},set(e,r,t){const n=tr(N(e),r);if(n!=null&&n.set)return n.set.call(e.draft_,t),!0;if(!e.modified_){const i=Se(N(e),r),a=i==null?void 0:i[R];if(a&&a.base_===t)return e.copy_[r]=t,e.assigned_.set(r,!1),!0;if(Pr(t,i)&&(t!==void 0||Ge(e.base_,r,e.type_)))return!0;_e(e),Ae(e)}return e.copy_[r]===t&&(t!==void 0||r in e.copy_)||Number.isNaN(t)&&Number.isNaN(e.copy_[r])||(e.copy_[r]=t,e.assigned_.set(r,!0),xr(e,r,t)),!0},deleteProperty(e,r){return _e(e),Se(e.base_,r)!==void 0||r in e.base_?(e.assigned_.set(r,!1),Ae(e)):e.assigned_.delete(r),e.copy_&&delete e.copy_[r],!0},getOwnPropertyDescriptor(e,r){const t=N(e),n=Reflect.getOwnPropertyDescriptor(t,r);return n&&{[re]:!0,[ye]:e.type_!==1||r!=="length",[ee]:n[ee],[B]:t[r]}},defineProperty(){E(11)},getPrototypeOf(e){return L(e.base_)},setPrototypeOf(){E(12)}},Z={};for(let e in de){let r=de[e];Z[e]=function(){const t=arguments;return t[0]=t[0][0],r.apply(this,t)}}Z.deleteProperty=function(e,r){return process.env.NODE_ENV!=="production"&&isNaN(parseInt(r))&&E(13),Z.set.call(this,e,r,void 0)},Z.set=function(e,r,t){return process.env.NODE_ENV!=="production"&&r!=="length"&&isNaN(parseInt(r))&&E(14),de.set.call(this,e[0],r,t,e[0])};function Se(e,r){const t=e[R];return(t?N(t):e)[r]}function jr(e,r,t){var i;const n=tr(r,t);return n?B in n?n[B]:(i=n.get)==null?void 0:i.call(e.draft_):void 0}function tr(e,r){if(!(r in e))return;let t=L(e);for(;t;){const n=Object.getOwnPropertyDescriptor(t,r);if(n)return n;t=L(t)}}function Ae(e){e.modified_||(e.modified_=!0,e.parent_&&Ae(e.parent_))}function _e(e){e.copy_||(e.assigned_=new Map,e.copy_=ke(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Ir=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(r,t,n)=>{if(F(r)&&!F(t)){const a=t;t=r;const s=this;return function(p=a,...v){return s.produce(p,l=>t.call(this,l,...v))}}F(t)||E(6),n!==void 0&&!F(n)&&E(7);let i;if(C(r)){const a=Ke(this),s=Oe(a,r,void 0);let c=!0;try{i=t(s),c=!1}finally{c?Ee(a):Pe(a)}return Ze(a,n),Qe(i,a)}else if(!r||!ge(r)){if(i=t(r),i===void 0&&(i=r),i===Le&&(i=void 0),this.autoFreeze_&&J(i,!0),n){const a=[],s=[];M(Re).generateReplacementPatches_(r,i,{patches_:a,inversePatches_:s}),n(a,s)}return i}else E(1,r)},this.produceWithPatches=(r,t)=>{if(F(r))return(s,...c)=>this.produceWithPatches(s,p=>r(p,...c));let n,i;return[this.produce(r,t,(s,c)=>{n=s,i=c}),n,i]},ve(e==null?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),ve(e==null?void 0:e.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),ve(e==null?void 0:e.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){C(e)||E(8),x(e)&&(e=Fr(e));const r=Ke(this),t=Oe(r,e,void 0);return t[R].isManual_=!0,Pe(r),t}finishDraft(e,r){const t=e&&e[R];(!t||!t.isManual_)&&E(9);const{scope_:n}=t;return Ze(n,r),Qe(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,r){let t;for(t=r.length-1;t>=0;t--){const i=r[t];if(i.path.length===0&&i.op==="replace"){e=i.value;break}}t>-1&&(r=r.slice(t+1));const n=M(Re).applyPatches_;return x(e)?n(e,r):this.produce(e,i=>n(i,r))}};function Oe(e,r,t,n){const[i,a]=oe(r)?M(le).proxyMap_(r,t):ae(r)?M(le).proxySet_(r,t):Dr(r,t);return((t==null?void 0:t.scope_)??Xe()).drafts_.push(i),a.callbacks_=(t==null?void 0:t.callbacks_)??[],a.key_=n,t&&n!==void 0?Tr(t,a,n):a.callbacks_.push(function(p){var l;(l=p.mapSetPlugin_)==null||l.fixSetContents(a);const{patchPlugin_:v}=p;a.modified_&&v&&v.generatePatches_(a,[],p)}),i}function Fr(e){return x(e)||E(10,e),nr(e)}function nr(e){if(!C(e)||ce(e))return e;const r=e[R];let t,n=!0;if(r){if(!r.modified_)return r.base_;r.finalized_=!0,t=ke(e,r.scope_.immer_.useStrictShallowCopy_),n=r.scope_.immer_.shouldUseStrictIteration()}else t=ke(e,!0);return te(t,(i,a)=>{ne(t,i,nr(a))},n),r&&(r.finalized_=!1),t}var Mr=new Ir,zr=Mr.produce;function Ur(e){var r=h.useState(function(){return J(typeof e=="function"?e():e,!0)}),t=r[1];return[r[0],h.useCallback(function(n){t(typeof n=="function"?zr(n):J(n))},[])]}function ir(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Lr(e){return e==null||e===""?!0:Array.isArray(e)?e.length===0:ir(e)?Object.keys(e).length===0:!1}function V(e=0){return I({_id:crypto.randomUUID(),framework:S.INDIVIDUAL,individual:{},level:e})}function D(e){return e.framework===S.GROUP}function Vr(e){return!!e&&Object.keys(e).length>0&&Object.keys(e).every(r=>!Lr(e[r]))}function or(e){return D(e)&&Array.isArray(e.group)?e.group.some(r=>or(r)):!Vr(e.individual)}function ar(e){D(e)&&Array.isArray(e.group)&&e.group.length>1&&e.group.forEach(r=>ar(r)),e.level=e.level-1<0?0:e.level-1}function z(e,r){if(e._id===r)return e;if(Array.isArray(e.group))for(const t of e.group){const n=z(t,r);if(n)return n}return null}function Yr(e){const[r,t]=Ur(()=>V()),n=h.useCallback(l=>{t(()=>l)},[t]),i=h.useMemo(()=>{const l=Math.abs(Number(e.maxDeep??1))||1;return Number(e.maxDeep??1)<1&&console.warn("[TConditionalSelection] Invalid props.maxDeep: maxDeep must be greater than 0."),l},[e.maxDeep]),a=h.useMemo(()=>{var g,d,u;const l=ir(e.disabled);return{addItem:!!(l?(g=e.disabled)!=null&&g.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=h.useCallback(l=>{D(l)&&t(g=>{const d=z(g,l._id);d&&Array.isArray(d.group)&&d.group.push(V(d.level+1))})},[t]),c=h.useCallback(l=>{t(g=>{const d=z(g,l._id);if(d)if(d.framework===S.INDIVIDUAL){const u={_id:crypto.randomUUID(),framework:S.INDIVIDUAL,individual:I(d.individual??{}),level:d.level+1},m=V(d.level+1);d.framework=S.GROUP,d.link=A.AND,d._id=crypto.randomUUID(),d.group=[u,m],delete d.individual}else Array.isArray(d.group)&&d.group.push(V(d.level+1))})},[t]),p=h.useCallback((l,g)=>{t(d=>{const u=z(d,l._id);if(!(!u||!Array.isArray(u.group))&&(u.group.splice(g,1),u.framework===S.GROUP&&u.group.length===1)){const m=u.group[0];m.framework===S.GROUP&&Array.isArray(m.group)&&m.group.length>1?(u.framework=S.GROUP,u.link=m.link,u._id=m._id,u.group=m.group,delete u.individual):(u.framework=S.INDIVIDUAL,u._id=m._id,u.individual=I(m.individual??{}),delete u.link,delete u.group),ar(m)}})},[t]),v=h.useCallback((l=!0)=>new Promise((g,d)=>{if(l&&or(r)){console.error("请填写完整"),d("含有未填写完整的项");return}g(I(r))}),[r]);return{rulesData:r,setRulesData:n,level:i,disabledConfig:a,createRules:s,createChildRules:c,delRules:p,getConditionalSelectionData:v,isGroup:D,getTempRules:V,updateRulesData:t}}function sr(e,r){const t=r.length-1,n=r[t];let i=e===t;return!i&&n&&D(n)&&(i=e===r.length-2),i}const cr=({levelData:e,level:r,disabledConfig:t,onUpdateNode:n,onCreateRules:i,onCreateChildRules:a,onDelRules:s,renderConditionItem:c})=>{const p=e.group;function v(l){n(e._id,{link:l})}return _.jsxs("div",{className:"relative-box",children:[_.jsx(ze,{value:e.link??A.AND,disabled:t.linkChange,onChange:v}),_.jsx("div",{className:"conditional-list-box right-box",children:p.map((l,g)=>{if(D(l)){const d=l.group;return _.jsx("div",{className:"conditional-list",children:_.jsxs("div",{className:"relative-box",children:[_.jsx(ze,{value:l.link??A.AND,disabled:t.linkChange,onChange:u=>n(l._id,{link:u})}),d.map((u,m)=>D(u)&&u.group.length>0?_.jsx("div",{className:"conditional-item right-box",children:_.jsx(cr,{levelData:u,level:r,disabledConfig:t,onUpdateNode:n,onCreateRules:i,onCreateChildRules:a,onDelRules:s,renderConditionItem:c})},u._id):_.jsxs("div",{className:"conditional-item right-box",children:[c==null?void 0:c(u),_.jsx(Ue,{level:r,disabledConfig:t,currentItemInfo:u,isLast:sr(m,d),onCreate:()=>i(l),onCreateChildRules:()=>a(u),onDel:()=>s(l,m)})]},u._id))]})},l._id)}return _.jsx("div",{className:"conditional-list",children:_.jsxs("div",{className:"conditional-item",children:[c==null?void 0:c(l),_.jsx(Ue,{level:r,disabledConfig:t,currentItemInfo:l,isLast:sr(g,p),onCreate:()=>i(e),onCreateChildRules:()=>a(l),onDel:()=>s(e,g)})]})},l._id)})})]})},lr=h.forwardRef((e,r)=>{const{conditionalRules:t,onChange:n,renderConditionRules:i,renderCreateCondition:a}=e,{rulesData:s,setRulesData:c,level:p,disabledConfig:v,createRules:l,createChildRules:g,delRules:d,getConditionalSelectionData:u,updateRulesData:m}=Yr(e);h.useImperativeHandle(r,()=>({getConditionalSelectionData:u}),[u]);const he=h.useRef(!0);h.useEffect(()=>{if(he.current){he.current=!1;return}n==null||n(s)},[s]),h.useEffect(()=>{t&&Object.keys(t).length!==0?c(I(t)):c(V())},[]);const K=h.useCallback((O,T)=>{m(j=>{const U=z(j,O);U&&Object.assign(U,T)})},[m]),we=h.useCallback(O=>i==null?void 0:i(O,T=>{m(j=>{const U=z(j,O._id);U&&(U.individual=T)})}),[i,m]),Ce=h.useCallback((O,T)=>i==null?void 0:i(O,T),[i]);return _.jsxs("div",{className:"conditional-selection",children:[!v.addItem&&(a?a({createRules:g,rulesData:s}):_.jsxs("span",{className:"create-box",onClick:()=>g(s),children:[_.jsx("span",{style:{color:"#00c8be",marginRight:4},children:"➕"}),"添加条件"]})),_.jsx("div",{className:"conditional-content",children:D(s)&&s.group.length>0?_.jsx(cr,{levelData:s,level:p,disabledConfig:v,onUpdateNode:K,onCreateRules:l,onCreateChildRules:g,onDelRules:d,renderConditionItem:we}):Ce(s,O=>{m(T=>{const j=z(T,s._id);j&&(j.individual=O)})})})]})});lr.displayName="ConditionalSelection",w.ConditionalSelection=lr,w.EConditionalSelectionFramework=S,w.EConditionalSelectionLink=A,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})}));
23
+ <%s key={someKey} {...props} />`,v,k,Y,k),mt[k+v]=!0)}if(k=null,m!==void 0&&(r(m),k=""+m),s(f)&&(r(f.key),k=""+f.key),"key"in f){m={};for(var je in f)je!=="key"&&(m[je]=f[je])}else m=f;return k&&c(m,typeof o=="function"?o.displayName||o.name||"Unknown":o),b(o,k,m,i(),pe,De)}function g(o){d(o)?o._store&&(o._store.validated=1):typeof o=="object"&&o!==null&&o.$$typeof===Ce&&(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===p}var u=h,p=Symbol.for("react.transitional.element"),he=Symbol.for("react.portal"),K=Symbol.for("react.fragment"),Ae=Symbol.for("react.strict_mode"),Oe=Symbol.for("react.profiler"),w=Symbol.for("react.consumer"),N=Symbol.for("react.context"),j=Symbol.for("react.forward_ref"),U=Symbol.for("react.suspense"),Gt=Symbol.for("react.suspense_list"),Bt=Symbol.for("react.memo"),Ce=Symbol.for("react.lazy"),Ht=Symbol.for("react.activity"),Jt=Symbol.for("react.client.reference"),Ne=u.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ft=Object.prototype.hasOwnProperty,Xt=Array.isArray,Te=console.createTask?console.createTask:function(){return null};u={react_stack_bottom_frame:function(o){return o()}};var dt,_t={},ht=u.react_stack_bottom_frame.bind(u,a)(),pt=Te(n(a)),mt={};G.Fragment=K,G.jsx=function(o,f,m){var v=1e4>Ne.recentlyCreatedOwnerStacks++;return l(o,f,m,!1,v?Error("react-stack-top-frame"):ht,v?Te(n(o)):pt)},G.jsxs=function(o,f,m){var v=1e4>Ne.recentlyCreatedOwnerStacks++;return l(o,f,m,!0,v?Error("react-stack-top-frame"):ht,v?Te(n(o)):pt)}})()),G}var Me;function bt(){return Me||(Me=1,process.env.NODE_ENV==="production"?Q.exports=yt():Q.exports=gt()),Q.exports}var _=bt();function I(e){if(e===null||typeof e!="object")return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e);if(Array.isArray(e)){const r=[];for(let n=0;n<e.length;n++)r[n]=I(e[n]);return r}const t={};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=I(e[r]));return t}var P=(e=>(e.GROUP="group",e.INDIVIDUAL="individual",e))(P||{}),S=(e=>(e.AND="and",e.OR="or",e))(S||{});const vt={[S.OR]:"或",[S.AND]:"且"},Ue=({value:e,disabled:t,onChange:r})=>{function n(){t||r(e===S.OR?S.AND:S.OR)}return _.jsx("div",{className:"link-line",children:_.jsx("div",{className:"link-label",onClick:n,children:vt[e]??"且"})})};function kt(e){return e==null||e===""?!0:Array.isArray(e)?e.length===0:e!==null&&typeof e=="object"?Object.keys(e).length===0:!1}function Rt(e){return!!e&&Object.keys(e).length>0&&Object.keys(e).every(t=>!kt(e[t]))}const Le=({level:e,currentItemInfo:t,isLast:r,disabledConfig:n,onCreate:i,onCreateChildRules:a,onDel:s})=>{const c=h.useMemo(()=>t.level>=1&&r,[t.level,r]),y=h.useMemo(()=>e>1&&t.level<e,[e,t.level]),b=h.useMemo(()=>!!(e>1&&Rt(t.individual)&&!n.addItem),[e,t.individual,n.addItem]);return _.jsxs("div",{className:"conditional-handle",children:[b&&_.jsxs(_.Fragment,{children:[c&&_.jsxs("span",{className:"create-handle",onClick:i,children:[_.jsx("span",{style:{color:"#c85000",marginRight:4},children:"+"}),"同级"]}),y&&_.jsxs("span",{className:"create-handle",onClick:a,children:[_.jsx("span",{style:{color:"#c85000",marginRight:4},children:"+"}),"子级"]})]}),!n.delItem&&_.jsx("span",{className:"del-handle",onClick:s,children:"-"})]})};var Ve=Symbol.for("immer-nothing"),Ye=Symbol.for("immer-draftable"),R=Symbol.for("immer-state"),xt=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 x(e,...t){if(process.env.NODE_ENV!=="production"){const r=xt[e],n=z(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 E=Object,L=E.getPrototypeOf,q="constructor",$="prototype",me="configurable",ee="enumerable",te="writable",B="value",T=e=>!!e&&!!e[R];function O(e){var t;return e?Ge(e)||ie(e)||!!e[Ye]||!!((t=e[q])!=null&&t[Ye])||oe(e)||ae(e):!1}var Et=E[$][q].toString(),We=new WeakMap;function Ge(e){if(!e||!ge(e))return!1;const t=L(e);if(t===null||t===E[$])return!0;const r=E.hasOwnProperty.call(t,q)&&t[q];if(r===Object)return!0;if(!z(r))return!1;let n=We.get(r);return n===void 0&&(n=Function.toString.call(r),We.set(r,n)),n===Et}function re(e,t,r=!0){H(e)===0?(r?Reflect.ownKeys(e):E.keys(e)).forEach(i=>{t(i,e[i],e)}):e.forEach((n,i)=>t(i,n,e))}function H(e){const t=e[R];return t?t.type_:ie(e)?1:oe(e)?2:ae(e)?3:0}var Be=(e,t,r=H(e))=>r===2?e.has(t):E[$].hasOwnProperty.call(e,t),ye=(e,t,r=H(e))=>r===2?e.get(t):e[t],ne=(e,t,r,n=H(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function Pt(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var ie=Array.isArray,oe=e=>e instanceof Map,ae=e=>e instanceof Set,ge=e=>typeof e=="object",z=e=>typeof e=="function",be=e=>typeof e=="boolean";function St(e){const t=+e;return Number.isInteger(t)&&String(t)===e}var C=e=>e.copy_||e.base_,ve=e=>e.modified_?e.copy_:e.base_;function ke(e,t){if(oe(e))return new Map(e);if(ae(e))return new Set(e);if(ie(e))return Array[$].slice.call(e);const r=Ge(e);if(t===!0||t==="class_only"&&!r){const n=E.getOwnPropertyDescriptors(e);delete n[R];let i=Reflect.ownKeys(n);for(let a=0;a<i.length;a++){const s=i[a],c=n[s];c[te]===!1&&(c[te]=!0,c[me]=!0),(c.get||c.set)&&(n[s]={[me]:!0,[te]:!0,[ee]:c[ee],[B]:e[s]})}return E.create(L(e),n)}else{const n=L(e);if(n!==null&&r)return{...e};const i=E.create(n);return E.assign(i,e)}}function J(e,t=!1){return ce(e)||T(e)||!O(e)||(H(e)>1&&E.defineProperties(e,{set:se,add:se,clear:se,delete:se}),E.freeze(e),t&&re(e,(r,n)=>{J(n,!0)},!1)),e}function wt(){x(2)}var se={[B]:wt};function ce(e){return e===null||!ge(e)?!0:E.isFrozen(e)}var le="MapSet",Re="Patches",He="ArrayMethods",Je={};function F(e){const t=Je[e];return t||x(0,e),t}var Xe=e=>!!Je[e],X,Ze=()=>X,At=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:Xe(le)?F(le):void 0,arrayMethodsPlugin_:Xe(He)?F(He):void 0});function Ke(e,t){t&&(e.patchPlugin_=F(Re),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function xe(e){Ee(e),e.drafts_.forEach(Ot),e.drafts_=null}function Ee(e){e===X&&(X=e.parent_)}var Qe=e=>X=At(X,e);function Ot(e){const t=e[R];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function qe(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];if(e!==void 0&&e!==r){r[R].modified_&&(xe(t),x(4)),O(e)&&(e=$e(t,e));const{patchPlugin_:i}=t;i&&i.generateReplacementPatches_(r[R].base_,e,t)}else e=$e(t,r);return Ct(t,e,!0),xe(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==Ve?e:void 0}function $e(e,t){if(ce(t))return t;const r=t[R];if(!r)return fe(t,e.handledSet_,e);if(!ue(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);rt(r,e)}return r.copy_}function Ct(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&J(t,r)}function et(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var ue=(e,t)=>e.scope_===t,Nt=[];function tt(e,t,r,n){const i=C(e),a=e.type_;if(n!==void 0&&ye(i,n,a)===t){ne(i,n,r,a);return}if(!e.draftLocations_){const c=e.draftLocations_=new Map;re(i,(y,b)=>{if(T(b)){const l=c.get(b)||[];l.push(y),c.set(b,l)}})}const s=e.draftLocations_.get(t)??Nt;for(const c of s)ne(i,c,r,a)}function Tt(e,t,r){e.callbacks_.push(function(i){var c;const a=t;if(!a||!ue(a,i))return;(c=i.mapSetPlugin_)==null||c.fixSetContents(a);const s=ve(a);tt(e,a.draft_??a,s,r),rt(a,i)})}function rt(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_:i}=t;if(i){const a=i.getPath(e);a&&i.generatePatches_(e,a,t)}et(e)}}function Dt(e,t,r){const{scope_:n}=e;if(T(r)){const i=r[R];ue(i,n)&&i.callbacks_.push(function(){_e(e);const s=ve(i);tt(e,r,s,t)})}else O(r)&&e.callbacks_.push(function(){const a=C(e);e.type_===3?a.has(r)&&fe(r,n.handledSet_,n):ye(a,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&fe(ye(e.copy_,t,e.type_),n.handledSet_,n)})}function fe(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||T(e)||t.has(e)||!O(e)||ce(e)||(t.add(e),re(e,(n,i)=>{if(T(i)){const a=i[R];if(ue(a,r)){const s=ve(a);ne(e,n,s,e.type_),et(a)}}else O(i)&&fe(i,t,r)})),e}function jt(e,t){const r=ie(e),n={type_:r?1:0,scope_:t?t.scope_:Ze(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let i=n,a=de;r&&(i=[n],a=Z);const{revoke:s,proxy:c}=Proxy.revocable(i,a);return n.draft_=c,n.revoke_=s,[c,n]}var de={get(e,t){if(t===R)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 i=C(e);if(!Be(i,t,e.type_))return It(e,i,t);const a=i[t];if(e.finalized_||!O(a)||n&&e.operationMethod&&(r!=null&&r.isMutatingArrayMethod(e.operationMethod))&&St(t))return a;if(a===Pe(e.base_,t)){_e(e);const s=e.type_===1?+t:t,c=we(e.scope_,a,e,s);return e.copy_[s]=c}return a},has(e,t){return t in C(e)},ownKeys(e){return Reflect.ownKeys(C(e))},set(e,t,r){const n=nt(C(e),t);if(n!=null&&n.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const i=Pe(C(e),t),a=i==null?void 0:i[R];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(Pt(r,i)&&(r!==void 0||Be(e.base_,t,e.type_)))return!0;_e(e),Se(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),Dt(e,t,r)),!0},deleteProperty(e,t){return _e(e),Pe(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Se(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){const r=C(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[te]:!0,[me]:e.type_!==1||t!=="length",[ee]:n[ee],[B]:r[t]}},defineProperty(){x(11)},getPrototypeOf(e){return L(e.base_)},setPrototypeOf(){x(12)}},Z={};for(let e in de){let t=de[e];Z[e]=function(){const r=arguments;return r[0]=r[0][0],t.apply(this,r)}}Z.deleteProperty=function(e,t){return process.env.NODE_ENV!=="production"&&isNaN(parseInt(t))&&x(13),Z.set.call(this,e,t,void 0)},Z.set=function(e,t,r){return process.env.NODE_ENV!=="production"&&t!=="length"&&isNaN(parseInt(t))&&x(14),de.set.call(this,e[0],t,r,e[0])};function Pe(e,t){const r=e[R];return(r?C(r):e)[t]}function It(e,t,r){var i;const n=nt(t,r);return n?B in n?n[B]:(i=n.get)==null?void 0:i.call(e.draft_):void 0}function nt(e,t){if(!(t in e))return;let r=L(e);for(;r;){const n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=L(r)}}function Se(e){e.modified_||(e.modified_=!0,e.parent_&&Se(e.parent_))}function _e(e){e.copy_||(e.assigned_=new Map,e.copy_=ke(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var zt=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(z(t)&&!z(r)){const a=r;r=t;const s=this;return function(y=a,...b){return s.produce(y,l=>r.call(this,l,...b))}}z(r)||x(6),n!==void 0&&!z(n)&&x(7);let i;if(O(t)){const a=Qe(this),s=we(a,t,void 0);let c=!0;try{i=r(s),c=!1}finally{c?xe(a):Ee(a)}return Ke(a,n),qe(i,a)}else if(!t||!ge(t)){if(i=r(t),i===void 0&&(i=t),i===Ve&&(i=void 0),this.autoFreeze_&&J(i,!0),n){const a=[],s=[];F(Re).generateReplacementPatches_(t,i,{patches_:a,inversePatches_:s}),n(a,s)}return i}else x(1,t)},this.produceWithPatches=(t,r)=>{if(z(t))return(s,...c)=>this.produceWithPatches(s,y=>t(y,...c));let n,i;return[this.produce(t,r,(s,c)=>{n=s,i=c}),n,i]},be(e==null?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),be(e==null?void 0:e.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),be(e==null?void 0:e.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){O(e)||x(8),T(e)&&(e=Ft(e));const t=Qe(this),r=we(t,e,void 0);return r[R].isManual_=!0,Ee(t),r}finishDraft(e,t){const r=e&&e[R];(!r||!r.isManual_)&&x(9);const{scope_:n}=r;return Ke(n,t),qe(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 i=t[r];if(i.path.length===0&&i.op==="replace"){e=i.value;break}}r>-1&&(t=t.slice(r+1));const n=F(Re).applyPatches_;return T(e)?n(e,t):this.produce(e,i=>n(i,t))}};function we(e,t,r,n){const[i,a]=oe(t)?F(le).proxyMap_(t,r):ae(t)?F(le).proxySet_(t,r):jt(t,r);return((r==null?void 0:r.scope_)??Ze()).drafts_.push(i),a.callbacks_=(r==null?void 0:r.callbacks_)??[],a.key_=n,r&&n!==void 0?Tt(r,a,n):a.callbacks_.push(function(y){var l;(l=y.mapSetPlugin_)==null||l.fixSetContents(a);const{patchPlugin_:b}=y;a.modified_&&b&&b.generatePatches_(a,[],y)}),i}function Ft(e){return T(e)||x(10,e),it(e)}function it(e){if(!O(e)||ce(e))return e;const t=e[R];let r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=ke(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=ke(e,!0);return re(r,(i,a)=>{ne(r,i,it(a))},n),t&&(t.finalized_=!1),r}var Mt=new zt,Ut=Mt.produce;function Lt(e){var t=h.useState(function(){return J(typeof e=="function"?e():e,!0)}),r=t[1];return[t[0],h.useCallback(function(n){r(typeof n=="function"?Ut(n):J(n))},[])]}function ot(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Vt(e){return e==null||e===""?!0:Array.isArray(e)?e.length===0:ot(e)?Object.keys(e).length===0:!1}function V(e=0){return I({_id:crypto.randomUUID(),framework:P.INDIVIDUAL,individual:{},level:e})}function D(e){return e.framework===P.GROUP}function Yt(e){return!!e&&Object.keys(e).length>0&&Object.keys(e).every(t=>!Vt(e[t]))}function at(e){return D(e)&&Array.isArray(e.group)?e.group.some(t=>at(t)):!Yt(e.individual)}function st(e){D(e)&&Array.isArray(e.group)&&e.group.length>1&&e.group.forEach(t=>st(t)),e.level=e.level-1<0?0:e.level-1}function M(e,t){if(e._id===t)return e;if(Array.isArray(e.group))for(const r of e.group){const n=M(r,t);if(n)return n}return null}function Wt(e){const[t,r]=Lt(()=>V()),n=h.useCallback(l=>{r(()=>l)},[r]),i=h.useMemo(()=>{const l=Math.abs(Number(e.maxDeep??1))||1;return Number(e.maxDeep??1)<1&&console.warn("[TConditionalSelection] Invalid props.maxDeep: maxDeep must be greater than 0."),l},[e.maxDeep]),a=h.useMemo(()=>{var g,d,u;const l=ot(e.disabled);return{addItem:!!(l?(g=e.disabled)!=null&&g.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=h.useCallback(l=>{D(l)&&r(g=>{const d=M(g,l._id);d&&Array.isArray(d.group)&&d.group.push(V(d.level+1))})},[r]),c=h.useCallback(l=>{r(g=>{const d=M(g,l._id);if(d)if(d.framework===P.INDIVIDUAL){const u={_id:crypto.randomUUID(),framework:P.INDIVIDUAL,individual:I(d.individual??{}),level:d.level+1},p=V(d.level+1);d.framework=P.GROUP,d.link=S.AND,d._id=crypto.randomUUID(),d.group=[u,p],delete d.individual}else Array.isArray(d.group)&&d.group.push(V(d.level+1))})},[r]),y=h.useCallback((l,g)=>{r(d=>{const u=M(d,l._id);if(!(!u||!Array.isArray(u.group))&&(u.group.splice(g,1),u.framework===P.GROUP&&u.group.length===1)){const p=u.group[0];p.framework===P.GROUP&&Array.isArray(p.group)&&p.group.length>1?(u.framework=P.GROUP,u.link=p.link,u._id=p._id,u.group=p.group,delete u.individual):(u.framework=P.INDIVIDUAL,u._id=p._id,u.individual=I(p.individual??{}),delete u.link,delete u.group),st(p)}})},[r]),b=h.useCallback((l=!0)=>new Promise((g,d)=>{if(l&&at(t)){console.error("请填写完整"),d("含有未填写完整的项");return}g(I(t))}),[t]);return{rulesData:t,setRulesData:n,level:i,disabledConfig:a,createRules:s,createChildRules:c,delRules:y,getConditionalSelectionData:b,isGroup:D,getTempRules:V,updateRulesData:r}}function ct(e,t){const r=t.length-1,n=t[r];let i=e===r;return!i&&n&&D(n)&&(i=e===t.length-2),i}const lt=({levelData:e,level:t,disabledConfig:r,onUpdateNode:n,onCreateRules:i,onCreateChildRules:a,onDelRules:s,renderConditionItem:c})=>{const y=e.group;function b(l){n(e._id,{link:l})}return _.jsxs("div",{className:"relative-box",children:[_.jsx(Ue,{value:e.link??S.AND,disabled:r.linkChange,onChange:b}),_.jsx("div",{className:"conditional-list-box right-box",children:y.map((l,g)=>{if(D(l)){const d=l.group;return _.jsx("div",{className:"conditional-list",children:_.jsxs("div",{className:"relative-box",children:[_.jsx(Ue,{value:l.link??S.AND,disabled:r.linkChange,onChange:u=>n(l._id,{link:u})}),d.map((u,p)=>D(u)&&u.group.length>0?_.jsx("div",{className:"conditional-item right-box",children:_.jsx(lt,{levelData:u,level:t,disabledConfig:r,onUpdateNode:n,onCreateRules:i,onCreateChildRules:a,onDelRules:s,renderConditionItem:c})},u._id):_.jsxs("div",{className:"conditional-item right-box",children:[c==null?void 0:c(u),_.jsx(Le,{level:t,disabledConfig:r,currentItemInfo:u,isLast:ct(p,d),onCreate:()=>i(l),onCreateChildRules:()=>a(u),onDel:()=>s(l,p)})]},u._id))]})},l._id)}return _.jsx("div",{className:"conditional-list",children:_.jsxs("div",{className:"conditional-item",children:[c==null?void 0:c(l),_.jsx(Le,{level:t,disabledConfig:r,currentItemInfo:l,isLast:ct(g,y),onCreate:()=>i(e),onCreateChildRules:()=>a(l),onDel:()=>s(e,g)})]})},l._id)})})]})},ut=h.forwardRef((e,t)=>{const{conditionalRules:r,onChange:n,renderConditionRules:i,renderCreateCondition:a}=e,{rulesData:s,setRulesData:c,level:y,disabledConfig:b,createRules:l,createChildRules:g,delRules:d,getConditionalSelectionData:u,updateRulesData:p}=Wt(e);h.useImperativeHandle(t,()=>({getConditionalSelectionData:u}),[u]);const he=h.useRef(!0);h.useEffect(()=>{if(he.current){he.current=!1;return}n==null||n(s)},[s]),h.useEffect(()=>{r&&Object.keys(r).length!==0?c(I(r)):c(V())},[]);const K=h.useCallback((w,N)=>{p(j=>{const U=M(j,w);U&&Object.assign(U,N)})},[p]),Ae=h.useCallback(w=>i==null?void 0:i(w,N=>{p(j=>{const U=M(j,w._id);U&&(U.individual=N)})}),[i,p]),Oe=h.useCallback((w,N)=>i==null?void 0:i(w,N),[i]);return _.jsxs("div",{className:"conditional-selection",children:[!b.addItem&&(a?a({createRules:g,rulesData:s}):_.jsxs("span",{className:"create-box",onClick:()=>g(s),children:[_.jsx("span",{style:{color:"#00c8be",marginRight:4},children:"➕"}),"添加条件"]})),_.jsx("div",{className:"conditional-content",children:D(s)&&s.group.length>0?_.jsx(lt,{levelData:s,level:y,disabledConfig:b,onUpdateNode:K,onCreateRules:l,onCreateChildRules:g,onDelRules:d,renderConditionItem:Ae}):Oe(s,w=>{p(N=>{const j=M(N,s._id);j&&(j.individual=w)})})})]})});ut.displayName="ConditionalSelection",A.ConditionalSelection=ut,A.EConditionalSelectionFramework=P,A.EConditionalSelectionLink=S,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -8,10 +8,11 @@
8
8
  "less": "^4.5.1",
9
9
  "typescript": "^5.9.3",
10
10
  "vite": "^6.4.1",
11
- "vite-plugin-dts": "^4.5.4"
11
+ "vite-plugin-dts": "^4.5.4",
12
+ "vite-plugin-lib-inject-css": "^2.2.2"
12
13
  },
13
14
  "name": "conditional-selection",
14
- "version": "1.1.3",
15
+ "version": "1.1.5",
15
16
  "description": "",
16
17
  "main": "dist/ui.cjs.js",
17
18
  "module": "dist/ui.es.js",
File without changes