@next-libs/cmdb-instances 6.37.0 → 6.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [6.37.1](https://github.com/easyops-cn/next-libs/compare/@next-libs/cmdb-instances@6.37.0...@next-libs/cmdb-instances@6.37.1) (2022-07-22)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **cmdb-instances:** 动态过滤选择在此期间报错 ([2696092](https://github.com/easyops-cn/next-libs/commit/269609255b6e922919db9a47c86646b171f2def7))
12
+
13
+
14
+
15
+
16
+
6
17
  # [6.37.0](https://github.com/easyops-cn/next-libs/compare/@next-libs/cmdb-instances@6.36.0...@next-libs/cmdb-instances@6.37.0) (2022-07-21)
7
18
 
8
19
 
@@ -303,7 +303,7 @@ function getFieldConditionsAndValues(fieldQueryOperatorExpressionsMap, id, value
303
303
  }
304
304
 
305
305
  let queryValuesStr = "";
306
- let values = currentCondition.operations.map(operation => {
306
+ const values = currentCondition.operations.map(operation => {
307
307
  var _expressions;
308
308
 
309
309
  let value; // istanbul ignore else ElementOperators.Exists时直接返回fixedValue
@@ -344,26 +344,7 @@ function getFieldConditionsAndValues(fieldQueryOperatorExpressionsMap, id, value
344
344
 
345
345
  return value;
346
346
  });
347
-
348
- if (!isRelation && !objectId && expressions && Object.keys(expressions) && Object.keys(expressions)[0] === "$gte$lte") {
349
- var _Object$values$;
350
-
351
- // 针对区间的初始化回显
352
- values = (_Object$values$ = Object.values(expressions)[0]) === null || _Object$values$ === void 0 ? void 0 : _Object$values$.split(",");
353
- }
354
-
355
- const disabled = false; // if (
356
- // isRelation &&
357
- // expressions &&
358
- // currentCondition.operations[0].operator === ElementOperators.Exists &&
359
- // isRelationWithNoExpression
360
- // ) {
361
- // disabled = true;
362
- // currentCondition = availableConditions[0];
363
- // values = [null];
364
- // queryValuesStr = "";
365
- // }
366
-
347
+ const disabled = false;
367
348
  return {
368
349
  availableConditions,
369
350
  currentCondition,
@@ -622,8 +603,10 @@ class AdvancedSearchForm extends _react.default.Component {
622
603
  Object.entries(query).forEach(([key, expressions]) => {
623
604
  if (key === _cmdbUtils.LogicalOperators.Or || key === _cmdbUtils.LogicalOperators.And) {
624
605
  const firstSubQuery = expressions[0];
625
- const fieldId = Object.keys(firstSubQuery)[0];
626
- const compareOperator = Object.keys(firstSubQuery[fieldId]).join("");
606
+ const fieldId = Object.keys(firstSubQuery)[0]; // 由于 ConditionType.Between 这边的 operator 是两个,由于需要支持选择一个的时候也要显示出来,这边不能将选择器合并成str吐出去
607
+
608
+ const compareOperators = Object.keys(firstSubQuery[fieldId]);
609
+ const compareOperator = compareOperators.length > 1 ? compareOperators : compareOperators.join("");
627
610
  let subQueryValue = "";
628
611
  let targetField;
629
612
 
@@ -642,16 +625,15 @@ class AdvancedSearchForm extends _react.default.Component {
642
625
 
643
626
  if (compareOperator === _cmdbUtils.ComparisonOperators.Like || compareOperator === _cmdbUtils.ComparisonOperators.NotLike) {
644
627
  return (0, _lodash.isString)(targetValue) && targetValue.includes(" ") ? `${targetValue[0]}"${targetValue.slice(1, targetValue.length - 1)}"${targetValue[targetValue.length - 1]}` : targetValue;
645
- } else if (compareOperator === "$gte$lte") {
646
- return query[fieldId] && Object.values(query[fieldId]).join(",") || "";
647
- } else {
628
+ } // 对于时间选择器有两个的,不用特意将值转换成str,因为不需要这里的值
629
+ else {
648
630
  return (0, _lodash.isString)(targetValue) && targetValue.includes(" ") ? `"${targetValue}"` : targetValue;
649
631
  }
650
632
  }).join(" ");
651
633
  }
652
634
 
653
635
  key = fieldId;
654
- expressions = {
636
+ expressions = Array.isArray(compareOperator) ? firstSubQuery[fieldId] : {
655
637
  [compareOperator]: subQueryValue
656
638
  };
657
639
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"names":["ConditionType","FieldTypeConditionTypesMap","ModelAttributeValueType","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","ComparisonOperators","Like","logicalOperator","LogicalOperators","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_EQUAL_DEFINE","operator","In","OPERATOR_NOT_EQUAL_DEFINE","NotIn","OPERATOR_CONTAIN_DEFINE","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","OPERATOR_IS_EMPTY_DEFINE","ElementOperators","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeys","relatedKey","v","k","relatedExpressions","Object","keys","currentCondition","availableConditions","map","condition","length","operatorsStr","isFixedValueEqual","every","operation","push","undefined","toString","includes","queryValuesStr","values","i","find","multiValueSearchOperator","trim","split","clusterMap","join","startsWith","slice","endsWith","disabled","AdvancedSearchForm","React","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","isArray","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","structId","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","FormControlTypeEnum","SELECT","minWidth","styles","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","Form","create"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n ComparisonOperators,\n ElementOperators,\n forEachAvailableFields,\n getInstanceNameKeys,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.STRUCT]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.IP]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.BOOLEAN]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.JSON]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n};\n\nconst multiValueSearchOperators = [\n {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotLike,\n logicalOperator: LogicalOperators.And,\n },\n {\n comparisonOperator: ComparisonOperators.Equal,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotEqual,\n logicalOperator: LogicalOperators.And,\n },\n];\nFieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT_LIST] =\n FieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT];\n\nexport function getCondition(\n conditionType: ConditionType,\n fieldType: ModelAttributeValueType\n): Condition {\n let label: string;\n let operations: ConditionOperation[];\n\n switch (conditionType) {\n case ConditionType.Equal:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_EQUAL_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n }\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\n },\n ];\n }\n break;\n case ConditionType.Contain:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Like,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.NotContain:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_CONTAIN_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotLike,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.Empty:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_EMPTY_DEFINE}`);\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.NotEmpty:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_NOT_EMPTY_DEFINE}`\n );\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.True:\n label = \"true\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.False:\n label = \"false\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.Between:\n operations = [\n {\n operator: ComparisonOperators.GreaterThanOrEqual,\n },\n {\n operator: ComparisonOperators.LessThanOrEqual,\n },\n ];\n switch (fieldType) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n // label = \"在此区间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_INT}`\n );\n break;\n case ModelAttributeValueType.DATE:\n case ModelAttributeValueType.DATETIME:\n // label = \"在此期间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_TIME}`\n );\n break;\n case ModelAttributeValueType.IP:\n // label = \"范围\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT}`\n );\n break;\n default:\n // label = \"在此之间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_THE}`\n );\n }\n break;\n }\n\n return {\n type: conditionType,\n label,\n operations,\n };\n}\n\nexport function convertValue(valueType: string, value: any): any {\n if (typeof value !== \"boolean\") {\n switch (valueType) {\n case ModelAttributeValueType.INTEGER:\n return parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return parseFloat(value);\n case ModelAttributeValueType.BOOLEAN:\n return value === \"true\";\n }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeys: string[];\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeys = Object.keys(expressions);\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeys?.length) {\n const operatorsStr: string[] = [];\n // 由于当 ConditionType.Between ,operations 有两个,当用户只填选一个时,currentCondition会默认第一个选择器。与实际不符\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr.push(operation.operator);\n\n if (operation.fixedValue !== undefined) {\n return (\n operation.fixedValue?.toString() ===\n expressions[operation?.operator]?.toString()\n );\n } else {\n return true;\n }\n });\n if (\n isFixedValueEqual &&\n expressionsKeys.every((operator) => operatorsStr.includes(operator))\n ) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n let values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else ElementOperators.Exists时直接返回fixedValue\n if (\n expressions?.[operation.operator] !== undefined &&\n operation.operator !== ElementOperators.Exists\n ) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n typeof values[0] === \"boolean\"\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value = [\n ModelAttributeValueType.ENUM,\n ModelAttributeValueType.ARR,\n ].includes(valueType)\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n\n if (\n !isRelation &&\n !objectId &&\n expressions &&\n Object.keys(expressions) &&\n Object.keys(expressions)[0] === \"$gte$lte\"\n ) {\n // 针对区间的初始化回显\n values = Object.values(expressions)[0]?.split(\",\");\n }\n\n const disabled = false;\n\n // if (\n // isRelation &&\n // expressions &&\n // currentCondition.operations[0].operator === ElementOperators.Exists &&\n // isRelationWithNoExpression\n // ) {\n // disabled = true;\n // currentCondition = availableConditions[0];\n // values = [null];\n // queryValuesStr = \"\";\n // }\n\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n const compareOperator = Object.keys(firstSubQuery[fieldId]).join(\n \"\"\n );\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n } else if (compareOperator === \"$gte$lte\") {\n return (\n (query[fieldId] &&\n Object.values(query[fieldId]).join(\",\")) ||\n \"\"\n );\n } else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\n name: `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfShowKey})`,\n attrValue: { type },\n isRelation: true,\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n id,\n type,\n true,\n relation[`${sides.this}_id` as RelationNameKeys]\n ),\n });\n });\n },\n this.props.fieldIds\n );\n\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n acc[`${field.id}[${valueIndex}]`] =\n operation.fixedValue === undefined ? value : \"\";\n });\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (\n value: any,\n valueIndex: number,\n field: Field,\n fieldIndex: number\n ) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n onConditionChange = (\n value: ConditionType,\n field: Field,\n fieldIndex: number\n ) => {\n const hasFixedValues = field.currentCondition.operations.some(\n (operation) => operation.fixedValue !== undefined\n );\n\n const condition = field.availableConditions.find(\n (condition) => condition.type === value\n );\n let newValues = condition.operations.map((operation) =>\n operation.fixedValue !== undefined ? operation.fixedValue : null\n );\n if (\n newValues.every((value) => value === null) &&\n !hasFixedValues &&\n this.state.fields[fieldIndex].values.length === newValues.length\n ) {\n newValues = this.state.fields[fieldIndex].values;\n }\n\n let newFields = update(this.state.fields, {\n [fieldIndex]: {\n currentCondition: { $set: condition },\n values: {\n $set: newValues,\n },\n },\n });\n\n const relatedFieldIndex = newFields.findIndex(\n (f) =>\n f.isRelation &&\n f.relationSideId === field.relationSideId &&\n f.id !== field.id\n );\n if (relatedFieldIndex !== -1) {\n const relatedField = newFields[relatedFieldIndex];\n const relatedCondition = relatedField.availableConditions.find(\n (condition) => condition.type === value\n );\n if (condition.operations[0].operator === ElementOperators.Exists) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedCondition },\n values: {\n $set: [null],\n },\n },\n });\n } else if (\n relatedField.currentCondition.operations[0].operator ===\n ElementOperators.Exists\n ) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedField.availableConditions[0] },\n values: {\n $set: [null],\n },\n },\n });\n }\n }\n\n this.setState({\n fields: newFields,\n });\n\n this.setFormFieldValues(newFields);\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n const hasBetween = this.state.fields.some((field) =>\n [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.DATE,\n ModelAttributeValueType.DATETIME,\n ].includes(field.attrValue.type as ModelAttributeValueType)\n );\n return this.state.fields.map((field, fieldIndex) => {\n let type: string;\n let style: React.CSSProperties;\n let attrValue: any = field.attrValue;\n let multiSelect = false;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: ModelAttributeValueType.STRING,\n };\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n type = FormControlTypeEnum.SELECT;\n multiSelect = true;\n break;\n case ModelAttributeValueType.DATETIME:\n style = { minWidth: \"auto\" };\n break;\n }\n //高级搜索这里即使是json格式,也用input输入框进行搜索\n if ((attrValue as any).type === \"json\") {\n attrValue = { ...attrValue, type: \"str\" };\n }\n return (\n <Col span={hasBetween ? 12 : 8} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select\n dropdownMatchSelectWidth={false}\n value={field.currentCondition.type}\n onChange={(value: ConditionType) =>\n this.onConditionChange(value, field, fieldIndex)\n }\n disabled={field.disabled}\n >\n {field.availableConditions.map((condition) => (\n <Select.Option value={condition.type} key={condition.type}>\n {condition.label}\n </Select.Option>\n ))}\n </Select>\n {field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n\n return (\n <React.Fragment\n key={`${field.currentCondition.type}-${operation.operator}`}\n >\n {valueIndex > 0 && (\n <Input\n className={styles.separatorInput}\n placeholder=\"~\"\n disabled\n />\n )}\n {getFieldDecorator(`${field.id}[${valueIndex}]`, {\n initialValue:\n operation.fixedValue === undefined ? value : \"\",\n })(\n operation.fixedValue === undefined && !field.disabled ? (\n <ModelAttributeFormControl\n type={type}\n attribute={{\n id: field.id,\n name: field.name,\n value: attrValue,\n }}\n objectId={this.props.modelData.objectId}\n multiSelect={multiSelect}\n onChange={(value: any) =>\n this.onValueChange(\n value,\n valueIndex,\n field,\n fieldIndex\n )\n }\n className={styles.conditionInput}\n style={style}\n />\n ) : (\n <Input disabled />\n )\n )}\n </React.Fragment>\n );\n })}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props?.autoSearch) this.props.autoSearch(this.state.fields);\n if (this.props.onSearch) {\n // 当过滤字段为relation并且过滤条件为ElementOperators.Exists的时候,发起后台请求的搜索queries与负责前端展示的query不同。需要额外处理。\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n let fieldQuery: Query = { [field.id]: expressions };\n let fieldQueryToShow: Query = { [field.id]: expressions };\n let hasValue = false;\n let structQueryId: string[];\n const isStruct = !!(field.attrValue as any).isStruct;\n if (isStruct) {\n structQueryId = field.attrValue.struct_define.map(\n (struct_item) => `${field.id}.${struct_item.id}`\n );\n }\n field.values.forEach((value, index) => {\n const operation = field.currentCondition.operations[index];\n const fieldId =\n field.isRelation && ElementOperators.Exists === operation.operator\n ? field.relationSideId\n : field.id;\n fieldQuery = { [fieldId]: expressions };\n\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n const multiValueSearchOperator = multiValueSearchOperators.find(\n (operator) => operator.comparisonOperator === operation.operator\n );\n if (multiValueSearchOperator) {\n let values: any[];\n if (\n field.attrValue.type === ModelAttributeValueType.ENUM ||\n field.attrValue.type === ModelAttributeValueType.ARR\n ) {\n values = value;\n } else if (typeof value === \"string\") {\n if (\n !ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE ||\n !value.includes('\"')\n ) {\n values = value\n .trim()\n .split(/\\s+/)\n .map((value) => convertValue(field.attrValue.type, value));\n } else {\n values = processAttrValueWithQuote(value, []);\n }\n } else {\n values = [value];\n }\n if (values.length) {\n if (isStruct) {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: flatten(\n values.map((value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n\n return structQueryId.map(\n (structId: string | number) => ({\n [structId]: {\n [operation.operator]: value,\n },\n })\n );\n })\n ),\n };\n } else {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldId]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n }\n fieldQueryToShow = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldIdToShow]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n } else {\n value = convertValue(field.attrValue.type, value);\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n expressions[operation.operator] = value;\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n if (this.props.autoSearch) this.props.autoSearch([]);\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.advancedSearch}>\n <Form\n layout=\"vertical\"\n className={styles.advancedSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const AdvancedSearch = Form.create<AdvancedSearchFormProps>({\n name: \"advanced_search\",\n})(AdvancedSearchForm);\n"],"file":"AdvancedSearch.js"}
1
+ {"version":3,"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"names":["ConditionType","FieldTypeConditionTypesMap","ModelAttributeValueType","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","ComparisonOperators","Like","logicalOperator","LogicalOperators","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_EQUAL_DEFINE","operator","In","OPERATOR_NOT_EQUAL_DEFINE","NotIn","OPERATOR_CONTAIN_DEFINE","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","OPERATOR_IS_EMPTY_DEFINE","ElementOperators","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeys","relatedKey","v","k","relatedExpressions","Object","keys","currentCondition","availableConditions","map","condition","length","operatorsStr","isFixedValueEqual","every","operation","push","undefined","toString","includes","queryValuesStr","values","i","find","multiValueSearchOperator","trim","split","clusterMap","join","startsWith","slice","endsWith","disabled","AdvancedSearchForm","React","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","isArray","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","structId","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperators","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","FormControlTypeEnum","SELECT","minWidth","styles","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","Form","create"],"mappings":";;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAUA;;AACA;;AAGA;;AAYA;;AACA;;AACA;;AACA;;AACA;;AAKA;;IAKYA,a;;;WAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;GAAAA,a,6BAAAA,a;;AAyBZ,MAAMC,0BAA2D,GAAG;AAClE,GAACC,mDAAwBC,MAAzB,GAAkC,CAChCH,aAAa,CAACI,OADkB,EAEhCJ,aAAa,CAACK,UAFkB,EAGhCL,aAAa,CAACM,KAHkB,EAIhCN,aAAa,CAACO,QAJkB,EAKhCP,aAAa,CAACQ,KALkB,EAMhCR,aAAa,CAACS,QANkB,CADgC;AASlE,GAACP,mDAAwBQ,OAAzB,GAAmC,CACjCV,aAAa,CAACM,KADmB,EAEjCN,aAAa,CAACO,QAFmB,EAGjCP,aAAa,CAACW,OAHmB,EAIjCX,aAAa,CAACQ,KAJmB,EAKjCR,aAAa,CAACS,QALmB,CAT+B;AAgBlE,GAACP,mDAAwBU,KAAzB,GAAiC,CAC/BZ,aAAa,CAACM,KADiB,EAE/BN,aAAa,CAACO,QAFiB,EAG/BP,aAAa,CAACW,OAHiB,EAI/BX,aAAa,CAACQ,KAJiB,EAK/BR,aAAa,CAACS,QALiB,CAhBiC;AAuBlE,GAACP,mDAAwBW,IAAzB,GAAgC,CAC9Bb,aAAa,CAACM,KADgB,EAE9BN,aAAa,CAACO,QAFgB,EAG9BP,aAAa,CAACW,OAHgB,EAI9BX,aAAa,CAACQ,KAJgB,EAK9BR,aAAa,CAACS,QALgB,CAvBkC;AA8BlE,GAACP,mDAAwBY,QAAzB,GAAoC,CAClCd,aAAa,CAACW,OADoB,EAElCX,aAAa,CAACQ,KAFoB,EAGlCR,aAAa,CAACS,QAHoB,CA9B8B;AAmClE,GAACP,mDAAwBa,IAAzB,GAAgC,CAC9Bf,aAAa,CAACM,KADgB,EAE9BN,aAAa,CAACO,QAFgB,EAG9BP,aAAa,CAACQ,KAHgB,EAI9BR,aAAa,CAACS,QAJgB,CAnCkC;AAyClE,GAACP,mDAAwBc,KAAzB,GAAiC,CAC/BhB,aAAa,CAACI,OADiB,EAE/BJ,aAAa,CAACK,UAFiB,EAG/BL,aAAa,CAACQ,KAHiB,EAI/BR,aAAa,CAACS,QAJiB,CAzCiC;AA+ClE,GAACP,mDAAwBe,GAAzB,GAA+B,CAC7BjB,aAAa,CAACI,OADe,EAE7BJ,aAAa,CAACK,UAFe,EAG7BL,aAAa,CAACM,KAHe,EAI7BN,aAAa,CAACO,QAJe,EAK7BP,aAAa,CAACQ,KALe,EAM7BR,aAAa,CAACS,QANe,CA/CmC;AAuDlE,GAACP,mDAAwBgB,MAAzB,GAAkC,CAChClB,aAAa,CAACI,OADkB,EAEhCJ,aAAa,CAACK,UAFkB,EAGhCL,aAAa,CAACQ,KAHkB,EAIhCR,aAAa,CAACS,QAJkB,CAvDgC;AA6DlE,GAACP,mDAAwBiB,EAAzB,GAA8B,CAC5BnB,aAAa,CAACI,OADc,EAE5BJ,aAAa,CAACK,UAFc,EAG5BL,aAAa,CAACM,KAHc,EAI5BN,aAAa,CAACO,QAJc,EAK5BP,aAAa,CAACW,OALc,EAM5BX,aAAa,CAACQ,KANc,EAO5BR,aAAa,CAACS,QAPc,CA7DoC;AAsElE,GAACP,mDAAwBkB,OAAzB,GAAmC,CACjCpB,aAAa,CAACM,KADmB,EAEjCN,aAAa,CAACO,QAFmB,EAGjCP,aAAa,CAACQ,KAHmB,EAIjCR,aAAa,CAACS,QAJmB,CAtE+B;AA4ElE,GAACP,mDAAwBmB,IAAzB,GAAgC,CAC9BrB,aAAa,CAACI,OADgB,EAE9BJ,aAAa,CAACK,UAFgB,EAG9BL,aAAa,CAACQ,KAHgB,EAI9BR,aAAa,CAACS,QAJgB;AA5EkC,CAApE;AAoFA,MAAMa,yBAAyB,GAAG,CAChC;AACEC,EAAAA,kBAAkB,EAAEC,+BAAoBC,IAD1C;AAEEC,EAAAA,eAAe,EAAEC,4BAAiBC;AAFpC,CADgC,EAKhC;AACEL,EAAAA,kBAAkB,EAAEC,+BAAoBK,OAD1C;AAEEH,EAAAA,eAAe,EAAEC,4BAAiBG;AAFpC,CALgC,EAShC;AACEP,EAAAA,kBAAkB,EAAEC,+BAAoBlB,KAD1C;AAEEoB,EAAAA,eAAe,EAAEC,4BAAiBC;AAFpC,CATgC,EAahC;AACEL,EAAAA,kBAAkB,EAAEC,+BAAoBjB,QAD1C;AAEEmB,EAAAA,eAAe,EAAEC,4BAAiBG;AAFpC,CAbgC,CAAlC;AAkBA7B,0BAA0B,CAACC,mDAAwB6B,WAAzB,CAA1B,GACE9B,0BAA0B,CAACC,mDAAwBgB,MAAzB,CAD5B;;AAGO,SAASc,YAAT,CACLC,aADK,EAELC,SAFK,EAGM;AACX,MAAIC,KAAJ;AACA,MAAIC,UAAJ;;AAEA,UAAQH,aAAR;AACE,SAAKjC,aAAa,CAACM,KAAnB;AACE6B,MAAAA,KAAK,GAAGE,iBAAKC,CAAL,CAAQ,GAAEC,kCAAuB,IAAGC,cAAEC,qBAAsB,EAA5D,CAAR;;AACA,cAAQP,SAAR;AACE,aAAKhC,mDAAwBe,GAA7B;AACEmB,UAAAA,UAAU,GAAG,CACX;AACEM,YAAAA,QAAQ,EAAElB,+BAAoBmB;AADhC,WADW,CAAb;AAKA;;AACF;AACEP,UAAAA,UAAU,GAAG,CACX;AACEM,YAAAA,QAAQ,EAAElB,+BAAoBlB;AADhC,WADW,CAAb;AATJ;;AAeA;;AACF,SAAKN,aAAa,CAACO,QAAnB;AACE4B,MAAAA,KAAK,GAAGE,iBAAKC,CAAL,CACL,GAAEC,kCAAuB,IAAGC,cAAEI,yBAA0B,EADnD,CAAR;;AAGA,cAAQV,SAAR;AACE,aAAKhC,mDAAwBe,GAA7B;AACEmB,UAAAA,UAAU,GAAG,CACX;AACEM,YAAAA,QAAQ,EAAElB,+BAAoBqB;AADhC,WADW,CAAb;AAKA;;AACF;AACET,UAAAA,UAAU,GAAG,CACX;AACEM,YAAAA,QAAQ,EAAElB,+BAAoBjB;AADhC,WADW,CAAb;AATJ;;AAeA;;AACF,SAAKP,aAAa,CAACI,OAAnB;AACE+B,MAAAA,KAAK,GAAGE,iBAAKC,CAAL,CAAQ,GAAEC,kCAAuB,IAAGC,cAAEM,uBAAwB,EAA9D,CAAR;;AACA,cAAQZ,SAAR;AACE,aAAKhC,mDAAwBc,KAA7B;AACEoB,UAAAA,UAAU,GAAG,CACX;AACEM,YAAAA,QAAQ,EAAElB,+BAAoBmB;AADhC,WADW,CAAb;AAKA;;AACF;AACEP,UAAAA,UAAU,GAAG,CACX;AACEM,YAAAA,QAAQ,EAAElB,+BAAoBC,IADhC;AAEEsB,YAAAA,MAAM,EAAE,GAFV;AAGEC,YAAAA,MAAM,EAAE;AAHV,WADW,CAAb;AATJ;;AAiBA;;AACF,SAAKhD,aAAa,CAACK,UAAnB;AACE8B,MAAAA,KAAK,GAAGE,iBAAKC,CAAL,CACL,GAAEC,kCAAuB,IAAGC,cAAES,2BAA4B,EADrD,CAAR;;AAGA,cAAQf,SAAR;AACE,aAAKhC,mDAAwBc,KAA7B;AACEoB,UAAAA,UAAU,GAAG,CACX;AACEM,YAAAA,QAAQ,EAAElB,+BAAoBqB;AADhC,WADW,CAAb;AAKA;;AACF;AACET,UAAAA,UAAU,GAAG,CACX;AACEM,YAAAA,QAAQ,EAAElB,+BAAoBK,OADhC;AAEEkB,YAAAA,MAAM,EAAE,GAFV;AAGEC,YAAAA,MAAM,EAAE;AAHV,WADW,CAAb;AATJ;;AAiBA;;AACF,SAAKhD,aAAa,CAACQ,KAAnB;AACE2B,MAAAA,KAAK,GAAGE,iBAAKC,CAAL,CAAQ,GAAEC,kCAAuB,IAAGC,cAAEU,wBAAyB,EAA/D,CAAR;AACAd,MAAAA,UAAU,GAAG,CACX;AACEM,QAAAA,QAAQ,EAAES,4BAAiBC,MAD7B;AAEEC,QAAAA,UAAU,EAAE;AAFd,OADW,CAAb;AAMA;;AACF,SAAKrD,aAAa,CAACS,QAAnB;AACE0B,MAAAA,KAAK,GAAGE,iBAAKC,CAAL,CACL,GAAEC,kCAAuB,IAAGC,cAAEc,4BAA6B,EADtD,CAAR;AAGAlB,MAAAA,UAAU,GAAG,CACX;AACEM,QAAAA,QAAQ,EAAES,4BAAiBC,MAD7B;AAEEC,QAAAA,UAAU,EAAE;AAFd,OADW,CAAb;AAMA;;AACF,SAAKrD,aAAa,CAACuD,IAAnB;AACEpB,MAAAA,KAAK,GAAG,MAAR;AACAC,MAAAA,UAAU,GAAG,CACX;AACEM,QAAAA,QAAQ,EAAElB,+BAAoBlB,KADhC;AAEE+C,QAAAA,UAAU,EAAE;AAFd,OADW,CAAb;AAMA;;AACF,SAAKrD,aAAa,CAACwD,KAAnB;AACErB,MAAAA,KAAK,GAAG,OAAR;AACAC,MAAAA,UAAU,GAAG,CACX;AACEM,QAAAA,QAAQ,EAAElB,+BAAoBlB,KADhC;AAEE+C,QAAAA,UAAU,EAAE;AAFd,OADW,CAAb;AAMA;;AACF,SAAKrD,aAAa,CAACW,OAAnB;AACEyB,MAAAA,UAAU,GAAG,CACX;AACEM,QAAAA,QAAQ,EAAElB,+BAAoBiC;AADhC,OADW,EAIX;AACEf,QAAAA,QAAQ,EAAElB,+BAAoBkC;AADhC,OAJW,CAAb;;AAQA,cAAQxB,SAAR;AACE,aAAKhC,mDAAwBQ,OAA7B;AACA,aAAKR,mDAAwBU,KAA7B;AACE;AACAuB,UAAAA,KAAK,GAAGE,iBAAKC,CAAL,CACL,GAAEC,kCAAuB,IAAGC,cAAEmB,gCAAiC,EAD1D,CAAR;AAGA;;AACF,aAAKzD,mDAAwBW,IAA7B;AACA,aAAKX,mDAAwBY,QAA7B;AACE;AACAqB,UAAAA,KAAK,GAAGE,iBAAKC,CAAL,CACL,GAAEC,kCAAuB,IAAGC,cAAEoB,iCAAkC,EAD3D,CAAR;AAGA;;AACF,aAAK1D,mDAAwBiB,EAA7B;AACE;AACAgB,UAAAA,KAAK,GAAGE,iBAAKC,CAAL,CACL,GAAEC,kCAAuB,IAAGC,cAAEqB,4BAA6B,EADtD,CAAR;AAGA;;AACF;AACE;AACA1B,UAAAA,KAAK,GAAGE,iBAAKC,CAAL,CACL,GAAEC,kCAAuB,IAAGC,cAAEsB,gCAAiC,EAD1D,CAAR;AAvBJ;;AA2BA;AA3JJ;;AA8JA,SAAO;AACLC,IAAAA,IAAI,EAAE9B,aADD;AAELE,IAAAA,KAFK;AAGLC,IAAAA;AAHK,GAAP;AAKD;;AAEM,SAAS4B,YAAT,CAAsBC,SAAtB,EAAyCC,KAAzC,EAA0D;AAC/D,MAAI,OAAOA,KAAP,KAAiB,SAArB,EAAgC;AAC9B,YAAQD,SAAR;AACE,WAAK/D,mDAAwBQ,OAA7B;AACE,eAAOyD,QAAQ,CAACD,KAAD,CAAf;;AACF,WAAKhE,mDAAwBU,KAA7B;AACE,eAAOwD,UAAU,CAACF,KAAD,CAAjB;;AACF,WAAKhE,mDAAwBkB,OAA7B;AACE,eAAO8C,KAAK,KAAK,MAAjB;AANJ;AAQD;;AACD,SAAOA,KAAP;AACD;;AAEM,SAASG,2BAAT,CACLC,gCADK,EAELC,EAFK,EAGLN,SAHK,EAILO,UAJK,EAKLC,cALK,EAMLC,QANK,EAOLC,MAPK,EAQL;AACA,MAAIC,0BAA0B,GAAG,KAAjC;AACA,MAAIC,WAAW,GAAGP,gCAAgC,CAACC,EAAD,CAAlD;AACA,MAAIO,eAAJ;;AACA,MAAI,CAACD,WAAD,IAAgBL,UAApB,EAAgC;AAC9BI,IAAAA,0BAA0B,GAAG,IAA7B;AACA,UAAMG,UAAU,GAAG,qBACjBT,gCADiB,EAEjB,CAACU,CAAD,EAAIC,CAAJ,KAAU,wBAAWA,CAAX,EAAe,GAAER,cAAe,GAAhC,KAAuCQ,CAAC,KAAKR,cAFtC,CAAnB;AAIA,UAAMS,kBAAkB,GAAGZ,gCAAgC,CAACS,UAAD,CAA3D;;AACA,QACEG,kBAAkB,IAClB,CAAC,mBAAMA,kBAAkB,CAAC/B,4BAAiBC,MAAlB,CAAxB,CAFH,EAGE;AACAyB,MAAAA,WAAW,GAAGP,gCAAgC,CAACS,UAAD,CAA9C;AACD;AACF;;AAED,MAAIF,WAAJ,EAAiB;AACfC,IAAAA,eAAe,GAAGK,MAAM,CAACC,IAAP,CAAYP,WAAZ,CAAlB;AACD;;AACD,MAAIQ,gBAAJ;AACA,QAAMC,mBAAmB,GAAGrF,0BAA0B,CAACgE,SAAD,CAA1B,CAAsCsB,GAAtC,CACzBtD,aAAD,IAAmB;AAAA;;AACjB,UAAMuD,SAAS,GAAGxD,YAAY,CAACC,aAAD,EAAgBgC,SAAhB,CAA9B;;AAEA,4BAAIa,eAAJ,6CAAI,iBAAiBW,MAArB,EAA6B;AAC3B,YAAMC,YAAsB,GAAG,EAA/B,CAD2B,CAE3B;;AACA,YAAMC,iBAAiB,GAAGH,SAAS,CAACpD,UAAV,CAAqBwD,KAArB,CAA4BC,SAAD,IAAe;AAClEH,QAAAA,YAAY,CAACI,IAAb,CAAkBD,SAAS,CAACnD,QAA5B;;AAEA,YAAImD,SAAS,CAACxC,UAAV,KAAyB0C,SAA7B,EAAwC;AAAA;;AACtC,iBACE,0BAAAF,SAAS,CAACxC,UAAV,gFAAsB2C,QAAtB,kCACAnB,WAAW,CAACgB,SAAD,aAACA,SAAD,uBAACA,SAAS,CAAEnD,QAAZ,CADX,0DACA,sBAAkCsD,QAAlC,EADA,CADF;AAID,SALD,MAKO;AACL,iBAAO,IAAP;AACD;AACF,OAXyB,CAA1B;;AAYA,UACEL,iBAAiB,IACjBb,eAAe,CAACc,KAAhB,CAAuBlD,QAAD,IAAcgD,YAAY,CAACO,QAAb,CAAsBvD,QAAtB,CAApC,CAFF,EAGE;AACA2C,QAAAA,gBAAgB,GAAGG,SAAnB;AACD;AACF;;AAED,WAAOA,SAAP;AACD,GA5ByB,CAA5B;;AA8BA,MAAI,CAACH,gBAAL,EAAuB;AACrBA,IAAAA,gBAAgB,GAAGC,mBAAmB,CAAC,CAAD,CAAtC;AACD;;AACD,MAAIY,cAAc,GAAG,EAArB;AACA,QAAMC,MAAM,GAAGd,gBAAgB,CAACjD,UAAjB,CAA4BmD,GAA5B,CAAiCM,SAAD,IAAe;AAAA;;AAC5D,QAAI3B,KAAJ,CAD4D,CAE5D;;AACA,QACE,iBAAAW,WAAW,UAAX,oDAAcgB,SAAS,CAACnD,QAAxB,OAAsCqD,SAAtC,IACAF,SAAS,CAACnD,QAAV,KAAuBS,4BAAiBC,MAF1C,EAGE;AACAc,MAAAA,KAAK,GAAGW,WAAW,CAACgB,SAAS,CAACnD,QAAX,CAAnB;AACA,UAAIyD,MAAM,GAAG,CAACtB,WAAW,CAACgB,SAAS,CAACnD,QAAX,CAAZ,CAAb;AACA,YAAM0D,CAAC,GAAG9E,yBAAyB,CAAC+E,IAA1B,CACPC,wBAAD,IACEA,wBAAwB,CAAC/E,kBAAzB,KAAgDsE,SAAS,CAACnD,QAFpD,CAAV;;AAIA,UAAI0D,CAAJ,EAAO;AACL,YACEnC,SAAS,KAAK/D,mDAAwBa,IAAtC,IACA,OAAO8D,WAAW,CAACgB,SAAS,CAACnD,QAAX,CAAlB,KAA2C,QAF7C,EAGE;AACAyD,UAAAA,MAAM,GAAGtB,WAAW,CAACgB,SAAS,CAACnD,QAAX,CAAX,CACN6D,IADM,GAENC,KAFM,CAEA,KAFA,EAGNjB,GAHM,CAGDrB,KAAD,IAAmBF,YAAY,CAACC,SAAD,EAAYC,KAAZ,CAH7B,CAAT;;AAIA,cAAIQ,QAAQ,KAAK,SAAb,IAA0BC,MAAM,KAAK,MAAzC,EAAiD;AAC/CwB,YAAAA,MAAM,GAAGA,MAAM,CAACZ,GAAP,CAAYrB,KAAD,IAAWuC,sBAAWvC,KAAX,CAAtB,CAAT;AACD;AACF;AACF;;AACD,UACE,OAAOiC,MAAM,CAAC,CAAD,CAAb,KAAqB,QAArB,IACA,OAAOA,MAAM,CAAC,CAAD,CAAb,KAAqB,QADrB,IAEA,OAAOA,MAAM,CAAC,CAAD,CAAb,KAAqB,SAHvB,EAIE;AACAD,QAAAA,cAAc,GAAGC,MAAM,CAACO,IAAP,CAAY,GAAZ,CAAjB;AACAP,QAAAA,MAAM,GAAGA,MAAM,CAACZ,GAAP,CAAYrB,KAAD,IAAmB;AACrC,cAAI2B,SAAS,CAAC9C,MAAV,IAAoBmB,KAAK,CAACyC,UAAN,CAAiBd,SAAS,CAAC9C,MAA3B,CAAxB,EAA4D;AAC1DmB,YAAAA,KAAK,GAAGA,KAAK,CAAC0C,KAAN,CAAYf,SAAS,CAAC9C,MAAV,CAAiB0C,MAA7B,CAAR;AACD;;AACD,cAAII,SAAS,CAAC7C,MAAV,IAAoBkB,KAAK,CAAC2C,QAAN,CAAehB,SAAS,CAAC7C,MAAzB,CAAxB,EAA0D;AACxDkB,YAAAA,KAAK,GAAGA,KAAK,CAAC0C,KAAN,CAAY,CAAZ,EAAe1C,KAAK,CAACuB,MAAN,GAAeI,SAAS,CAAC7C,MAAV,CAAiByC,MAA/C,CAAR;AACD;;AACD,iBAAOvB,KAAP;AACD,SARQ,CAAT;AASAA,QAAAA,KAAK,GAAG,CACNhE,mDAAwBa,IADlB,EAENb,mDAAwBe,GAFlB,EAGNgF,QAHM,CAGGhC,SAHH,IAIJkC,MAJI,GAKJA,MAAM,CAACO,IAAP,CAAY,GAAZ,CALJ;AAMD;AACF,KA9CD,MA8CO;AACLxC,MAAAA,KAAK,GAAG2B,SAAS,CAACxC,UAAV,KAAyB0C,SAAzB,GAAqCF,SAAS,CAACxC,UAA/C,GAA4D,IAApE;AACD;;AAED,WAAOa,KAAP;AACD,GAtDc,CAAf;AAuDA,QAAM4C,QAAQ,GAAG,KAAjB;AACA,SAAO;AACLxB,IAAAA,mBADK;AAELD,IAAAA,gBAFK;AAGLc,IAAAA,MAHK;AAILD,IAAAA,cAJK;AAKLY,IAAAA;AALK,GAAP;AAOD;;AAkCM,MAAMC,kBAAN,SAAiCC,eAAMC,SAAvC,CAGL;AACAC,EAAAA,WAAW,CAACC,KAAD,EAAiC;AAC1C,UAAMA,KAAN;AAD0C,yDA0K5B,CACdjD,KADc,EAEdkD,UAFc,EAGdC,KAHc,EAIdC,UAJc,KAKX;AACH,WAAKC,QAAL,CAAc;AACZC,QAAAA,MAAM,EAAE,iCAAO,KAAKC,KAAL,CAAWD,MAAlB,EAA0B;AAChC,WAACF,UAAD,GAAc;AAAEnB,YAAAA,MAAM,EAAE;AAAE,eAACiB,UAAD,GAAc;AAAEM,gBAAAA,IAAI,EAAExD;AAAR;AAAhB;AAAV;AADkB,SAA1B;AADI,OAAd;AAKD,KArL2C;AAAA,6DAuLxB,CAClBA,KADkB,EAElBmD,KAFkB,EAGlBC,UAHkB,KAIf;AACH,YAAMK,cAAc,GAAGN,KAAK,CAAChC,gBAAN,CAAuBjD,UAAvB,CAAkCwF,IAAlC,CACpB/B,SAAD,IAAeA,SAAS,CAACxC,UAAV,KAAyB0C,SADnB,CAAvB;AAIA,YAAMP,SAAS,GAAG6B,KAAK,CAAC/B,mBAAN,CAA0Be,IAA1B,CACfb,SAAD,IAAeA,SAAS,CAACzB,IAAV,KAAmBG,KADlB,CAAlB;AAGA,UAAI2D,SAAS,GAAGrC,SAAS,CAACpD,UAAV,CAAqBmD,GAArB,CAA0BM,SAAD,IACvCA,SAAS,CAACxC,UAAV,KAAyB0C,SAAzB,GAAqCF,SAAS,CAACxC,UAA/C,GAA4D,IAD9C,CAAhB;;AAGA,UACEwE,SAAS,CAACjC,KAAV,CAAiB1B,KAAD,IAAWA,KAAK,KAAK,IAArC,KACA,CAACyD,cADD,IAEA,KAAKF,KAAL,CAAWD,MAAX,CAAkBF,UAAlB,EAA8BnB,MAA9B,CAAqCV,MAArC,KAAgDoC,SAAS,CAACpC,MAH5D,EAIE;AACAoC,QAAAA,SAAS,GAAG,KAAKJ,KAAL,CAAWD,MAAX,CAAkBF,UAAlB,EAA8BnB,MAA1C;AACD;;AAED,UAAI2B,SAAS,GAAG,iCAAO,KAAKL,KAAL,CAAWD,MAAlB,EAA0B;AACxC,SAACF,UAAD,GAAc;AACZjC,UAAAA,gBAAgB,EAAE;AAAEqC,YAAAA,IAAI,EAAElC;AAAR,WADN;AAEZW,UAAAA,MAAM,EAAE;AACNuB,YAAAA,IAAI,EAAEG;AADA;AAFI;AAD0B,OAA1B,CAAhB;AASA,YAAME,iBAAiB,GAAGD,SAAS,CAACE,SAAV,CACvBC,CAAD,IACEA,CAAC,CAACzD,UAAF,IACAyD,CAAC,CAACxD,cAAF,KAAqB4C,KAAK,CAAC5C,cAD3B,IAEAwD,CAAC,CAAC1D,EAAF,KAAS8C,KAAK,CAAC9C,EAJO,CAA1B;;AAMA,UAAIwD,iBAAiB,KAAK,CAAC,CAA3B,EAA8B;AAC5B,cAAMG,YAAY,GAAGJ,SAAS,CAACC,iBAAD,CAA9B;AACA,cAAMI,gBAAgB,GAAGD,YAAY,CAAC5C,mBAAb,CAAiCe,IAAjC,CACtBb,SAAD,IAAeA,SAAS,CAACzB,IAAV,KAAmBG,KADX,CAAzB;;AAGA,YAAIsB,SAAS,CAACpD,UAAV,CAAqB,CAArB,EAAwBM,QAAxB,KAAqCS,4BAAiBC,MAA1D,EAAkE;AAChE0E,UAAAA,SAAS,GAAG,iCAAOA,SAAP,EAAkB;AAC5B,aAACC,iBAAD,GAAqB;AACnB1C,cAAAA,gBAAgB,EAAE;AAAEqC,gBAAAA,IAAI,EAAES;AAAR,eADC;AAEnBhC,cAAAA,MAAM,EAAE;AACNuB,gBAAAA,IAAI,EAAE,CAAC,IAAD;AADA;AAFW;AADO,WAAlB,CAAZ;AAQD,SATD,MASO,IACLQ,YAAY,CAAC7C,gBAAb,CAA8BjD,UAA9B,CAAyC,CAAzC,EAA4CM,QAA5C,KACAS,4BAAiBC,MAFZ,EAGL;AACA0E,UAAAA,SAAS,GAAG,iCAAOA,SAAP,EAAkB;AAC5B,aAACC,iBAAD,GAAqB;AACnB1C,cAAAA,gBAAgB,EAAE;AAAEqC,gBAAAA,IAAI,EAAEQ,YAAY,CAAC5C,mBAAb,CAAiC,CAAjC;AAAR,eADC;AAEnBa,cAAAA,MAAM,EAAE;AACNuB,gBAAAA,IAAI,EAAE,CAAC,IAAD;AADA;AAFW;AADO,WAAlB,CAAZ;AAQD;AACF;;AAED,WAAKH,QAAL,CAAc;AACZC,QAAAA,MAAM,EAAEM;AADI,OAAd;AAIA,WAAKM,kBAAL,CAAwBN,SAAxB;AACD,KA/P2C;AAAA,wDA0W5BO,CAAD,IAA6B;AAAA;;AAC1CA,MAAAA,CAAC,CAACC,cAAF;AACA,yBAAI,KAAKnB,KAAT,wCAAI,YAAYoB,UAAhB,EAA4B,KAAKpB,KAAL,CAAWoB,UAAX,CAAsB,KAAKd,KAAL,CAAWD,MAAjC;;AAC5B,UAAI,KAAKL,KAAL,CAAWqB,QAAf,EAAyB;AACvB;AACA,YAAIC,OAAgB,GAAG,EAAvB;AACA,YAAIC,aAAsB,GAAG,EAA7B;AACA,cAAMC,WAAoC,GAAG,EAA7C;AACA,aAAKlB,KAAL,CAAWD,MAAX,CAAkBoB,OAAlB,CAA2BvB,KAAD,IAAW;AACnC,gBAAMxC,WAAqC,GAAG,EAA9C;AACA,cAAIgE,UAAiB,GAAG;AAAE,aAACxB,KAAK,CAAC9C,EAAP,GAAYM;AAAd,WAAxB;AACA,cAAIiE,gBAAuB,GAAG;AAAE,aAACzB,KAAK,CAAC9C,EAAP,GAAYM;AAAd,WAA9B;AACA,cAAIkE,QAAQ,GAAG,KAAf;AACA,cAAIC,aAAJ;AACA,gBAAMC,QAAQ,GAAG,CAAC,CAAE5B,KAAK,CAAC6B,SAAP,CAAyBD,QAA5C;;AACA,cAAIA,QAAJ,EAAc;AACZD,YAAAA,aAAa,GAAG3B,KAAK,CAAC6B,SAAN,CAAgBC,aAAhB,CAA8B5D,GAA9B,CACb6D,WAAD,IAAkB,GAAE/B,KAAK,CAAC9C,EAAG,IAAG6E,WAAW,CAAC7E,EAAG,EADjC,CAAhB;AAGD;;AACD8C,UAAAA,KAAK,CAAClB,MAAN,CAAayC,OAAb,CAAqB,CAAC1E,KAAD,EAAQmF,KAAR,KAAkB;AACrC,kBAAMxD,SAAS,GAAGwB,KAAK,CAAChC,gBAAN,CAAuBjD,UAAvB,CAAkCiH,KAAlC,CAAlB;AACA,kBAAMC,OAAO,GACXjC,KAAK,CAAC7C,UAAN,IAAoBrB,4BAAiBC,MAAjB,KAA4ByC,SAAS,CAACnD,QAA1D,GACI2E,KAAK,CAAC5C,cADV,GAEI4C,KAAK,CAAC9C,EAHZ;AAIAsE,YAAAA,UAAU,GAAG;AAAE,eAACS,OAAD,GAAWzE;AAAb,aAAb;AAEA,kBAAM0E,aAAa,GAAGlC,KAAK,CAAC9C,EAA5B;AACAuE,YAAAA,gBAAgB,GAAG;AAAE,eAACS,aAAD,GAAiB1E;AAAnB,aAAnB;;AAEA,gBACEX,KAAK,KAAK,IAAV,IACAA,KAAK,KAAK,EADV,IAEA,EAAEsF,KAAK,CAACC,OAAN,CAAcvF,KAAd,KAAwBA,KAAK,CAACuB,MAAN,KAAiB,CAA3C,CAHF,EAIE;AACA,oBAAMa,wBAAwB,GAAGhF,yBAAyB,CAAC+E,IAA1B,CAC9B3D,QAAD,IAAcA,QAAQ,CAACnB,kBAAT,KAAgCsE,SAAS,CAACnD,QADzB,CAAjC;;AAGA,kBAAI4D,wBAAJ,EAA8B;AAC5B,oBAAIH,MAAJ;;AACA,oBACEkB,KAAK,CAAC6B,SAAN,CAAgBnF,IAAhB,KAAyB7D,mDAAwBa,IAAjD,IACAsG,KAAK,CAAC6B,SAAN,CAAgBnF,IAAhB,KAAyB7D,mDAAwBe,GAFnD,EAGE;AACAkF,kBAAAA,MAAM,GAAGjC,KAAT;AACD,iBALD,MAKO,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AACpC,sBACE,CAACwF,kDAAD,IACA,CAACxF,KAAK,CAAC+B,QAAN,CAAe,GAAf,CAFH,EAGE;AACAE,oBAAAA,MAAM,GAAGjC,KAAK,CACXqC,IADM,GAENC,KAFM,CAEA,KAFA,EAGNjB,GAHM,CAGDrB,KAAD,IAAWF,YAAY,CAACqD,KAAK,CAAC6B,SAAN,CAAgBnF,IAAjB,EAAuBG,KAAvB,CAHrB,CAAT;AAID,mBARD,MAQO;AACLiC,oBAAAA,MAAM,GAAG,2CAA0BjC,KAA1B,EAAiC,EAAjC,CAAT;AACD;AACF,iBAZM,MAYA;AACLiC,kBAAAA,MAAM,GAAG,CAACjC,KAAD,CAAT;AACD;;AACD,oBAAIiC,MAAM,CAACV,MAAX,EAAmB;AACjB,sBAAIwD,QAAJ,EAAc;AACZJ,oBAAAA,UAAU,GAAG;AACX,uBAACvC,wBAAwB,CAAC5E,eAA1B,GAA4C,qBAC1CyE,MAAM,CAACZ,GAAP,CAAYrB,KAAD,IAAW;AACpB,4BAAI2B,SAAS,CAAC9C,MAAd,EAAsB;AACpBmB,0BAAAA,KAAK,GAAG2B,SAAS,CAAC9C,MAAV,GAAmBmB,KAA3B;AACD;;AACD,4BAAI2B,SAAS,CAAC7C,MAAd,EAAsB;AACpBkB,0BAAAA,KAAK,IAAI2B,SAAS,CAAC7C,MAAnB;AACD;;AAED,+BAAOgG,aAAa,CAACzD,GAAd,CACJoE,QAAD,KAAgC;AAC9B,2BAACA,QAAD,GAAY;AACV,6BAAC9D,SAAS,CAACnD,QAAX,GAAsBwB;AADZ;AADkB,yBAAhC,CADK,CAAP;AAOD,uBAfD,CAD0C;AADjC,qBAAb;AAoBD,mBArBD,MAqBO;AACL2E,oBAAAA,UAAU,GAAG;AACX,uBAACvC,wBAAwB,CAAC5E,eAA1B,GAA4CyE,MAAM,CAACZ,GAAP,CACzCrB,KAAD,IAAW;AACT,4BAAI2B,SAAS,CAAC9C,MAAd,EAAsB;AACpBmB,0BAAAA,KAAK,GAAG2B,SAAS,CAAC9C,MAAV,GAAmBmB,KAA3B;AACD;;AACD,4BAAI2B,SAAS,CAAC7C,MAAd,EAAsB;AACpBkB,0BAAAA,KAAK,IAAI2B,SAAS,CAAC7C,MAAnB;AACD;;AACD,+BAAO;AACL,2BAACsG,OAAD,GAAW;AACT,6BAACzD,SAAS,CAACnD,QAAX,GAAsBwB;AADb;AADN,yBAAP;AAKD,uBAbyC;AADjC,qBAAb;AAiBD;;AACD4E,kBAAAA,gBAAgB,GAAG;AACjB,qBAACxC,wBAAwB,CAAC5E,eAA1B,GAA4CyE,MAAM,CAACZ,GAAP,CACzCrB,KAAD,IAAW;AACT,0BAAI2B,SAAS,CAAC9C,MAAd,EAAsB;AACpBmB,wBAAAA,KAAK,GAAG2B,SAAS,CAAC9C,MAAV,GAAmBmB,KAA3B;AACD;;AACD,0BAAI2B,SAAS,CAAC7C,MAAd,EAAsB;AACpBkB,wBAAAA,KAAK,IAAI2B,SAAS,CAAC7C,MAAnB;AACD;;AACD,6BAAO;AACL,yBAACuG,aAAD,GAAiB;AACf,2BAAC1D,SAAS,CAACnD,QAAX,GAAsBwB;AADP;AADZ,uBAAP;AAKD,qBAbyC;AAD3B,mBAAnB;AAiBA6E,kBAAAA,QAAQ,GAAG,IAAX;AACAJ,kBAAAA,WAAW,CAAC7C,IAAZ,CAAiB;AAAE,qBAACuB,KAAK,CAAC9C,EAAP,GAAY8C,KAAK,CAAClB;AAApB,mBAAjB;AACD;AACF,eAnFD,MAmFO;AACLjC,gBAAAA,KAAK,GAAGF,YAAY,CAACqD,KAAK,CAAC6B,SAAN,CAAgBnF,IAAjB,EAAuBG,KAAvB,CAApB;;AACA,oBAAI2B,SAAS,CAAC9C,MAAd,EAAsB;AACpBmB,kBAAAA,KAAK,GAAG2B,SAAS,CAAC9C,MAAV,GAAmBmB,KAA3B;AACD;;AACD,oBAAI2B,SAAS,CAAC7C,MAAd,EAAsB;AACpBkB,kBAAAA,KAAK,IAAI2B,SAAS,CAAC7C,MAAnB;AACD;;AACD6B,gBAAAA,WAAW,CAACgB,SAAS,CAACnD,QAAX,CAAX,GAAkCwB,KAAlC;AACA6E,gBAAAA,QAAQ,GAAG,IAAX;AACAJ,gBAAAA,WAAW,CAAC7C,IAAZ,CAAiB;AAAE,mBAACuB,KAAK,CAAC9C,EAAP,GAAY8C,KAAK,CAAClB;AAApB,iBAAjB;AACD;AACF;AACF,WAnHD;;AAoHA,cAAI4C,QAAJ,EAAc;AACZN,YAAAA,OAAO,CAAC3C,IAAR,CAAa+C,UAAb;AACAH,YAAAA,aAAa,CAAC5C,IAAd,CAAmBgD,gBAAnB;AACD;AACF,SApID;;AAqIA,YAAIL,OAAO,CAAChD,MAAR,KAAmB,CAAvB,EAA0B;AACxBgD,UAAAA,OAAO,GAAG1C,SAAV;AACA2C,UAAAA,aAAa,GAAG3C,SAAhB;AACD;;AACD,YAAI,CAAC,qBAAQ,KAAKoB,KAAL,CAAWyC,CAAnB,EAAsBnB,OAAtB,CAAL,EAAqC;AACnC,eAAKtB,KAAL,CAAWqB,QAAX,CAAoBC,OAApB,EAA6BC,aAA7B,EAA4CC,WAA5C;AACD;AACF;AACF,KA/f2C;AAAA,uDAigB9B,MAAM;AAClB,UAAI,KAAKxB,KAAL,CAAWoB,UAAf,EAA2B,KAAKpB,KAAL,CAAWoB,UAAX,CAAsB,EAAtB;AAC3B,WAAKpB,KAAL,CAAWqB,QAAX,CAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B;AACA,WAAKrB,KAAL,CAAW0C,IAAX,CAAgBC,WAAhB;AACD,KArgB2C;AAG1C,SAAKrC,KAAL,GAAa,KAAKsC,YAAL,EAAb;AACD;;AAEDC,EAAAA,kBAAkB,CAACC,SAAD,EAAqD;AACrE,QAAI,CAAC,qBAAQ,KAAK9C,KAAL,CAAWyC,CAAnB,EAAsBK,SAAS,CAACL,CAAhC,CAAL,EAAyC;AACvC,YAAMM,QAAQ,GAAG,KAAKH,YAAL,EAAjB;AACA,WAAKxC,QAAL,CAAc2C,QAAd;AAEA,WAAK9B,kBAAL,CAAwB8B,QAAQ,CAAC1C,MAAjC;AACD;AACF;;AAEDuC,EAAAA,YAAY,GAAwB;AAClC,UAAMzF,gCAGL,GAAG,EAHJ;AAIA,UAAMkD,MAAe,GAAG,EAAxB;;AACA,QAAI,KAAKL,KAAL,CAAWyC,CAAf,EAAkB;AAChB,WAAKzC,KAAL,CAAWyC,CAAX,CAAahB,OAAb,CAAsBuB,KAAD,IAAW;AAC9BhF,QAAAA,MAAM,CAACiF,OAAP,CAAeD,KAAf,EAAsBvB,OAAtB,CAA8B,CAAC,CAACyB,GAAD,EAAMxF,WAAN,CAAD,KAAwB;AACpD,cAAIwF,GAAG,KAAK1I,4BAAiBC,EAAzB,IAA+ByI,GAAG,KAAK1I,4BAAiBG,GAA5D,EAAiE;AAC/D,kBAAMwI,aAAa,GAAIzF,WAAD,CAAyB,CAAzB,CAAtB;AACA,kBAAMyE,OAAO,GAAGnE,MAAM,CAACC,IAAP,CAAYkF,aAAZ,EAA2B,CAA3B,CAAhB,CAF+D,CAG/D;;AACA,kBAAMC,gBAAgB,GAAGpF,MAAM,CAACC,IAAP,CAAYkF,aAAa,CAAChB,OAAD,CAAzB,CAAzB;AACA,kBAAMkB,eAAe,GACnBD,gBAAgB,CAAC9E,MAAjB,GAA0B,CAA1B,GACI8E,gBADJ,GAEIA,gBAAgB,CAAC7D,IAAjB,CAAsB,EAAtB,CAHN;AAIA,gBAAI+D,aAAa,GAAG,EAApB;AACA,gBAAIC,WAAJ;;AACA,gBAAIhB,kDAAJ,EAA4C;AAAA;;AAC1CgB,cAAAA,WAAW,4BAAG,KAAKvD,KAAL,CAAWwB,WAAd,0DAAG,sBAAwBtC,IAAxB,CACXsE,SAAD,IAAexF,MAAM,CAACC,IAAP,CAAYuF,SAAZ,EAAuB,CAAvB,MAA8BrB,OADjC,CAAd;AAGD;;AACD,gBAAI,CAAC,mBAAMoB,WAAN,CAAL,EAAyB;AACvB;AACAD,cAAAA,aAAa,GAAG,qBAAQC,WAAW,CAACpB,OAAD,CAAnB,IACZoB,WAAW,CAACpB,OAAD,CAAX,CACG/D,GADH,CACQqF,IAAD,IAAW,qBAAQA,IAAR,IAAgBA,IAAI,CAAClE,IAAL,CAAU,GAAV,CAAhB,GAAiCkE,IADnD,EAEGlE,IAFH,CAEQ,EAFR,CADY,GAIXgE,WAAW,CAACpB,OAAD,CAJhB;AAKD,aAPD,MAOO;AACLmB,cAAAA,aAAa,GAAI5F,WAAD,CACbU,GADa,CACR4E,KAAD,IAAW;AACd,sBAAMU,WAAW,GACfV,KAAK,CAACb,OAAD,CADa,CAElBkB,eAFkB,CAApB;;AAGA,oBACEA,eAAe,KAAKhJ,+BAAoBC,IAAxC,IACA+I,eAAe,KAAKhJ,+BAAoBK,OAF1C,EAGE;AACA,yBAAO,sBAASgJ,WAAT,KAAyBA,WAAW,CAAC5E,QAAZ,CAAqB,GAArB,CAAzB,GACF,GAAE4E,WAAW,CAAC,CAAD,CAAI,IAAGA,WAAW,CAACjE,KAAZ,CACnB,CADmB,EAEnBiE,WAAW,CAACpF,MAAZ,GAAqB,CAFF,CAGnB,IAAGoF,WAAW,CAACA,WAAW,CAACpF,MAAZ,GAAqB,CAAtB,CAAyB,EAJtC,GAKHoF,WALJ;AAMD,iBAVD,CAWA;AAXA,qBAYK;AACH,yBAAO,sBAASA,WAAT,KAAyBA,WAAW,CAAC5E,QAAZ,CAAqB,GAArB,CAAzB,GACF,IAAG4E,WAAY,GADb,GAEHA,WAFJ;AAGD;AACF,eAtBa,EAuBbnE,IAvBa,CAuBR,GAvBQ,CAAhB;AAwBD;;AACD2D,YAAAA,GAAG,GAAGf,OAAN;AACAzE,YAAAA,WAAW,GAAG2E,KAAK,CAACC,OAAN,CAAce,eAAd,IACVF,aAAa,CAAChB,OAAD,CADH,GAEV;AACE,eAACkB,eAAD,GAAmBC;AADrB,aAFJ;AAKD;;AAEDnG,UAAAA,gCAAgC,CAAC+F,GAAD,CAAhC,GACExF,WADF;AAED,SA5DD;AA6DD,OA9DD;AA+DD;;AACD,2CACE,KAAKsC,KAAL,CAAW2D,SADb,EAEGC,IAAD,IAAU;AACR,YAAM7B,SAEyB,GAAG,EAFlC;;AAIA,cAAQ6B,IAAI,CAAC7G,KAAL,CAAWH,IAAnB;AACE,aAAK7D,mDAAwBgB,MAA7B;AACA,aAAKhB,mDAAwB6B,WAA7B;AACEmH,UAAAA,SAAS,CAACnF,IAAV,GAAiB7D,mDAAwBC,MAAzC;AACA+I,UAAAA,SAAS,CAACC,aAAV,GAA0B4B,IAAI,CAAC7G,KAAL,CAAWiF,aAArC;AACAD,UAAAA,SAAS,CAACD,QAAV,GAAqB,IAArB;AACA;;AACF,aAAK/I,mDAAwBa,IAA7B;AACA,aAAKb,mDAAwBc,KAA7B;AACEkI,UAAAA,SAAS,CAACnF,IAAV,GAAiBgH,IAAI,CAAC7G,KAAL,CAAWH,IAA5B;AACAmF,UAAAA,SAAS,CAAC8B,KAAV,GAAkBD,IAAI,CAAC7G,KAAL,CAAW8G,KAA7B;AACA;;AACF;AACE9B,UAAAA,SAAS,CAACnF,IAAV,GAAiBgH,IAAI,CAAC7G,KAAL,CAAWH,IAA5B;AAbJ;;AAgBAyD,MAAAA,MAAM,CAAC1B,IAAP,CAAY;AACVvB,QAAAA,EAAE,EAAEwG,IAAI,CAACxG,EADC;AAEV0G,QAAAA,IAAI,EAAEF,IAAI,CAACE,IAFD;AAGV/B,QAAAA,SAHU;AAIV1E,QAAAA,UAAU,EAAE,KAJF;AAKV,WAAGH,2BAA2B,CAC5BC,gCAD4B,EAE5ByG,IAAI,CAACxG,EAFuB,EAG5BwG,IAAI,CAAC7G,KAAL,CAAWH,IAHiB;AALpB,OAAZ;AAWD,KAlCH,EAmCE,CAACmH,QAAD,EAAWC,KAAX,KAAqB;AACnB,YAAMC,cAAc,GAClB,KAAKjE,KAAL,CAAWkE,WAAX,CACEH,QAAQ,CAAE,GAAEC,KAAK,CAACG,IAAK,YAAf,CADV,CADF;AAIA,YAAMC,QAAQ,GAAG,oCAAoBH,cAApB,CAAjB;AACAG,MAAAA,QAAQ,CAAC3C,OAAT,CAAiB,CAAC4C,OAAD,EAAUnC,KAAV,KAAoB;AAAA;;AACnC,cAAMoC,aAAa,0BACjB,kBAAKL,cAAL,aAAKA,cAAL,uBAAKA,cAAc,CAAEM,QAArB,EAA+B,CAAC,IAAD,EAAOF,OAAP,CAA/B,CADiB,0CACjB,MAAiDP,IADhC,mDACwCO,OAD3D;AAEA,cAAMjH,EAAE,GAAI,GACV2G,QAAQ,CAAE,GAAEC,KAAK,CAACQ,IAAK,KAAf,CACT,IAAGH,OAAQ,EAFZ;AAGA,cAAMzH,IAAI,GAAG7D,mDAAwBC,MAArC;AAEAqH,QAAAA,MAAM,CAAC1B,IAAP,CAAY;AACVvB,UAAAA,EADU;AAEV0G,UAAAA,IAAI,EAAG,GACLC,QAAQ,CAAE,GAAEC,KAAK,CAACQ,IAAK,OAAf,CACT,IAAGF,aAAc,GAJR;AAKVvC,UAAAA,SAAS,EAAE;AAAEnF,YAAAA;AAAF,WALD;AAMVS,UAAAA,UAAU,EAAE,IANF;AAOVC,UAAAA,cAAc,EAAEyG,QAAQ,CAAE,GAAEC,KAAK,CAACQ,IAAK,KAAf,CAPd;AAQV,aAAGtH,2BAA2B,CAC5BC,gCAD4B,EAE5BC,EAF4B,EAG5BR,IAH4B,EAI5B,IAJ4B,EAK5BmH,QAAQ,CAAE,GAAEC,KAAK,CAACQ,IAAK,KAAf,CALoB;AARpB,SAAZ;AAgBD,OAxBD;AAyBD,KAlEH,EAmEE,KAAKxE,KAAL,CAAWyE,QAnEb;AAqEA,WAAO;AAAEpE,MAAAA;AAAF,KAAP;AACD;;AAEDY,EAAAA,kBAAkB,CAACZ,MAAD,EAAwB;AACxC,UAAMrB,MAAM,GAAGqB,MAAM,CAACqE,MAAP,CAAsC,CAACC,GAAD,EAAMzE,KAAN,KAAgB;AACnEA,MAAAA,KAAK,CAAClB,MAAN,CAAaZ,GAAb,CAAiB,CAACrB,KAAD,EAAQkD,UAAR,KAAuB;AACtC,cAAMvB,SAAS,GAAGwB,KAAK,CAAChC,gBAAN,CAAuBjD,UAAvB,CAAkCgF,UAAlC,CAAlB;AACA0E,QAAAA,GAAG,CAAE,GAAEzE,KAAK,CAAC9C,EAAG,IAAG6C,UAAW,GAA3B,CAAH,GACEvB,SAAS,CAACxC,UAAV,KAAyB0C,SAAzB,GAAqC7B,KAArC,GAA6C,EAD/C;AAED,OAJD;AAKA,aAAO4H,GAAP;AACD,KAPc,EAOZ,EAPY,CAAf;AAQA,SAAK3E,KAAL,CAAW0C,IAAX,CAAgBkC,cAAhB,CAA+B5F,MAA/B;AACD;;AAyFD6F,EAAAA,SAAS,GAAG;AACV,UAAM;AAAEC,MAAAA;AAAF,QAAwB,KAAK9E,KAAL,CAAW0C,IAAzC;AACA,UAAMqC,UAAU,GAAG,KAAKzE,KAAL,CAAWD,MAAX,CAAkBI,IAAlB,CAAwBP,KAAD,IACxC,CACEnH,mDAAwBiB,EAD1B,EAEEjB,mDAAwBW,IAF1B,EAGEX,mDAAwBY,QAH1B,EAIEmF,QAJF,CAIWoB,KAAK,CAAC6B,SAAN,CAAgBnF,IAJ3B,CADiB,CAAnB;AAOA,WAAO,KAAK0D,KAAL,CAAWD,MAAX,CAAkBjC,GAAlB,CAAsB,CAAC8B,KAAD,EAAQC,UAAR,KAAuB;AAClD,UAAIvD,IAAJ;AACA,UAAIoI,KAAJ;AACA,UAAIjD,SAAc,GAAG7B,KAAK,CAAC6B,SAA3B;AACA,UAAIkD,WAAW,GAAG,KAAlB;;AACA,cAAQ/E,KAAK,CAAC6B,SAAN,CAAgBnF,IAAxB;AACE,aAAK7D,mDAAwBQ,OAA7B;AACA,aAAKR,mDAAwBU,KAA7B;AACEsI,UAAAA,SAAS,GAAG;AACVnF,YAAAA,IAAI,EAAE7D,mDAAwBC;AADpB,WAAZ;AAGA;;AACF,aAAKD,mDAAwBa,IAA7B;AACA,aAAKb,mDAAwBc,KAA7B;AACE+C,UAAAA,IAAI,GAAGsI,+CAAoBC,MAA3B;AACAF,UAAAA,WAAW,GAAG,IAAd;AACA;;AACF,aAAKlM,mDAAwBY,QAA7B;AACEqL,UAAAA,KAAK,GAAG;AAAEI,YAAAA,QAAQ,EAAE;AAAZ,WAAR;AACA;AAdJ,OALkD,CAqBlD;;;AACA,UAAKrD,SAAD,CAAmBnF,IAAnB,KAA4B,MAAhC,EAAwC;AACtCmF,QAAAA,SAAS,GAAG,EAAE,GAAGA,SAAL;AAAgBnF,UAAAA,IAAI,EAAE;AAAtB,SAAZ;AACD;;AACD,0BACE,6BAAC,SAAD;AAAK,QAAA,IAAI,EAAEmI,UAAU,GAAG,EAAH,GAAQ,CAA7B;AAAgC,QAAA,GAAG,EAAE7E,KAAK,CAAC9C;AAA3C,sBACE,6BAAC,gBAAD,CAAM,IAAN;AAAW,QAAA,KAAK,EAAE8C,KAAK,CAAC4D;AAAxB,sBACE,6BAAC,WAAD,CAAO,KAAP;AAAa,QAAA,SAAS,EAAEuB,8BAAOC,mBAA/B;AAAoD,QAAA,OAAO;AAA3D,sBACE,6BAAC,YAAD;AACE,QAAA,wBAAwB,EAAE,KAD5B;AAEE,QAAA,KAAK,EAAEpF,KAAK,CAAChC,gBAAN,CAAuBtB,IAFhC;AAGE,QAAA,QAAQ,EAAGG,KAAD,IACR,KAAKwI,iBAAL,CAAuBxI,KAAvB,EAA8BmD,KAA9B,EAAqCC,UAArC,CAJJ;AAME,QAAA,QAAQ,EAAED,KAAK,CAACP;AANlB,SAQGO,KAAK,CAAC/B,mBAAN,CAA0BC,GAA1B,CAA+BC,SAAD,iBAC7B,6BAAC,YAAD,CAAQ,MAAR;AAAe,QAAA,KAAK,EAAEA,SAAS,CAACzB,IAAhC;AAAsC,QAAA,GAAG,EAAEyB,SAAS,CAACzB;AAArD,SACGyB,SAAS,CAACrD,KADb,CADD,CARH,CADF,EAeGkF,KAAK,CAAClB,MAAN,CAAaZ,GAAb,CAAiB,CAACrB,KAAD,EAAQkD,UAAR,KAAuB;AACvC,cAAMvB,SAAS,GAAGwB,KAAK,CAAChC,gBAAN,CAAuBjD,UAAvB,CAAkCgF,UAAlC,CAAlB;AAEA,4BACE,6BAAC,cAAD,CAAO,QAAP;AACE,UAAA,GAAG,EAAG,GAAEC,KAAK,CAAChC,gBAAN,CAAuBtB,IAAK,IAAG8B,SAAS,CAACnD,QAAS;AAD5D,WAGG0E,UAAU,GAAG,CAAb,iBACC,6BAAC,WAAD;AACE,UAAA,SAAS,EAAEoF,8BAAOG,cADpB;AAEE,UAAA,WAAW,EAAC,GAFd;AAGE,UAAA,QAAQ;AAHV,UAJJ,EAUGV,iBAAiB,CAAE,GAAE5E,KAAK,CAAC9C,EAAG,IAAG6C,UAAW,GAA3B,EAA+B;AAC/CwF,UAAAA,YAAY,EACV/G,SAAS,CAACxC,UAAV,KAAyB0C,SAAzB,GAAqC7B,KAArC,GAA6C;AAFA,SAA/B,CAAjB,CAIC2B,SAAS,CAACxC,UAAV,KAAyB0C,SAAzB,IAAsC,CAACsB,KAAK,CAACP,QAA7C,gBACE,6BAAC,oDAAD;AACE,UAAA,IAAI,EAAE/C,IADR;AAEE,UAAA,SAAS,EAAE;AACTQ,YAAAA,EAAE,EAAE8C,KAAK,CAAC9C,EADD;AAET0G,YAAAA,IAAI,EAAE5D,KAAK,CAAC4D,IAFH;AAGT/G,YAAAA,KAAK,EAAEgF;AAHE,WAFb;AAOE,UAAA,QAAQ,EAAE,KAAK/B,KAAL,CAAW2D,SAAX,CAAqBpG,QAPjC;AAQE,UAAA,WAAW,EAAE0H,WARf;AASE,UAAA,QAAQ,EAAGlI,KAAD,IACR,KAAK2I,aAAL,CACE3I,KADF,EAEEkD,UAFF,EAGEC,KAHF,EAIEC,UAJF,CAVJ;AAiBE,UAAA,SAAS,EAAEkF,8BAAOM,cAjBpB;AAkBE,UAAA,KAAK,EAAEX;AAlBT,UADF,gBAsBE,6BAAC,WAAD;AAAO,UAAA,QAAQ;AAAf,UA1BH,CAVH,CADF;AA0CD,OA7CA,CAfH,CADF,CADF,CADF;AAoED,KA7FM,CAAP;AA8FD;;AA+JDY,EAAAA,MAAM,GAAoB;AACxB,wBACE;AAAK,MAAA,SAAS,EAAEP,8BAAOQ;AAAvB,oBACE,6BAAC,gBAAD;AACE,MAAA,MAAM,EAAC,UADT;AAEE,MAAA,SAAS,EAAER,8BAAOS,kBAFpB;AAGE,MAAA,QAAQ,EAAE,KAAKC;AAHjB,oBAKE,6BAAC,SAAD;AAAK,MAAA,MAAM,EAAE;AAAb,OAAkB,KAAKlB,SAAL,EAAlB,CALF,eAME,6BAAC,SAAD,qBACE,6BAAC,SAAD;AAAK,MAAA,IAAI,EAAE,EAAX;AAAe,MAAA,KAAK,EAAE;AAAEmB,QAAAA,SAAS,EAAE;AAAb;AAAtB,oBACE,6BAAC,YAAD;AACE,MAAA,IAAI,EAAC,SADP;AAEE,MAAA,QAAQ,EAAC,QAFX;AAGE,qBAAY;AAHd,OAKG9K,iBAAKC,CAAL,CAAQ,GAAEC,kCAAuB,IAAGC,cAAE4K,MAAO,EAA7C,CALH,CADF,eAQE,6BAAC,YAAD;AACE,MAAA,KAAK,EAAE;AAAEC,QAAAA,UAAU,EAAE;AAAd,OADT;AAEE,MAAA,OAAO,EAAE,KAAKC,WAFhB;AAGE,qBAAY;AAHd,OAKGjL,iBAAKC,CAAL,CAAQ,GAAEC,kCAAuB,IAAGC,cAAE+K,KAAM,EAA5C,CALH,CARF,CADF,CANF,CADF,CADF;AA6BD;;AAtiBD;;;;AAyiBK,MAAMC,cAAc,GAAGC,iBAAKC,MAAL,CAAqC;AACjEzC,EAAAA,IAAI,EAAE;AAD2D,CAArC,EAE3BlE,kBAF2B,CAAvB","sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n ComparisonOperators,\n ElementOperators,\n forEachAvailableFields,\n getInstanceNameKeys,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.STRUCT]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.IP]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.BOOLEAN]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.JSON]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n};\n\nconst multiValueSearchOperators = [\n {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotLike,\n logicalOperator: LogicalOperators.And,\n },\n {\n comparisonOperator: ComparisonOperators.Equal,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotEqual,\n logicalOperator: LogicalOperators.And,\n },\n];\nFieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT_LIST] =\n FieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT];\n\nexport function getCondition(\n conditionType: ConditionType,\n fieldType: ModelAttributeValueType\n): Condition {\n let label: string;\n let operations: ConditionOperation[];\n\n switch (conditionType) {\n case ConditionType.Equal:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_EQUAL_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n }\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\n },\n ];\n }\n break;\n case ConditionType.Contain:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Like,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.NotContain:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_CONTAIN_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotLike,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.Empty:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_EMPTY_DEFINE}`);\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.NotEmpty:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_NOT_EMPTY_DEFINE}`\n );\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.True:\n label = \"true\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.False:\n label = \"false\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.Between:\n operations = [\n {\n operator: ComparisonOperators.GreaterThanOrEqual,\n },\n {\n operator: ComparisonOperators.LessThanOrEqual,\n },\n ];\n switch (fieldType) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n // label = \"在此区间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_INT}`\n );\n break;\n case ModelAttributeValueType.DATE:\n case ModelAttributeValueType.DATETIME:\n // label = \"在此期间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_TIME}`\n );\n break;\n case ModelAttributeValueType.IP:\n // label = \"范围\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT}`\n );\n break;\n default:\n // label = \"在此之间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_THE}`\n );\n }\n break;\n }\n\n return {\n type: conditionType,\n label,\n operations,\n };\n}\n\nexport function convertValue(valueType: string, value: any): any {\n if (typeof value !== \"boolean\") {\n switch (valueType) {\n case ModelAttributeValueType.INTEGER:\n return parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return parseFloat(value);\n case ModelAttributeValueType.BOOLEAN:\n return value === \"true\";\n }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeys: string[];\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeys = Object.keys(expressions);\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeys?.length) {\n const operatorsStr: string[] = [];\n // 由于当 ConditionType.Between ,operations 有两个,当用户只填选一个时,currentCondition会默认第一个选择器。与实际不符\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr.push(operation.operator);\n\n if (operation.fixedValue !== undefined) {\n return (\n operation.fixedValue?.toString() ===\n expressions[operation?.operator]?.toString()\n );\n } else {\n return true;\n }\n });\n if (\n isFixedValueEqual &&\n expressionsKeys.every((operator) => operatorsStr.includes(operator))\n ) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n const values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else ElementOperators.Exists时直接返回fixedValue\n if (\n expressions?.[operation.operator] !== undefined &&\n operation.operator !== ElementOperators.Exists\n ) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n typeof values[0] === \"boolean\"\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value = [\n ModelAttributeValueType.ENUM,\n ModelAttributeValueType.ARR,\n ].includes(valueType)\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n const disabled = false;\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n // 由于 ConditionType.Between 这边的 operator 是两个,由于需要支持选择一个的时候也要显示出来,这边不能将选择器合并成str吐出去\n const compareOperators = Object.keys(firstSubQuery[fieldId]);\n const compareOperator =\n compareOperators.length > 1\n ? compareOperators\n : compareOperators.join(\"\");\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n }\n // 对于时间选择器有两个的,不用特意将值转换成str,因为不需要这里的值\n else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = Array.isArray(compareOperator)\n ? firstSubQuery[fieldId]\n : {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\n name: `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfShowKey})`,\n attrValue: { type },\n isRelation: true,\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n id,\n type,\n true,\n relation[`${sides.this}_id` as RelationNameKeys]\n ),\n });\n });\n },\n this.props.fieldIds\n );\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n acc[`${field.id}[${valueIndex}]`] =\n operation.fixedValue === undefined ? value : \"\";\n });\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (\n value: any,\n valueIndex: number,\n field: Field,\n fieldIndex: number\n ) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n onConditionChange = (\n value: ConditionType,\n field: Field,\n fieldIndex: number\n ) => {\n const hasFixedValues = field.currentCondition.operations.some(\n (operation) => operation.fixedValue !== undefined\n );\n\n const condition = field.availableConditions.find(\n (condition) => condition.type === value\n );\n let newValues = condition.operations.map((operation) =>\n operation.fixedValue !== undefined ? operation.fixedValue : null\n );\n if (\n newValues.every((value) => value === null) &&\n !hasFixedValues &&\n this.state.fields[fieldIndex].values.length === newValues.length\n ) {\n newValues = this.state.fields[fieldIndex].values;\n }\n\n let newFields = update(this.state.fields, {\n [fieldIndex]: {\n currentCondition: { $set: condition },\n values: {\n $set: newValues,\n },\n },\n });\n\n const relatedFieldIndex = newFields.findIndex(\n (f) =>\n f.isRelation &&\n f.relationSideId === field.relationSideId &&\n f.id !== field.id\n );\n if (relatedFieldIndex !== -1) {\n const relatedField = newFields[relatedFieldIndex];\n const relatedCondition = relatedField.availableConditions.find(\n (condition) => condition.type === value\n );\n if (condition.operations[0].operator === ElementOperators.Exists) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedCondition },\n values: {\n $set: [null],\n },\n },\n });\n } else if (\n relatedField.currentCondition.operations[0].operator ===\n ElementOperators.Exists\n ) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedField.availableConditions[0] },\n values: {\n $set: [null],\n },\n },\n });\n }\n }\n\n this.setState({\n fields: newFields,\n });\n\n this.setFormFieldValues(newFields);\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n const hasBetween = this.state.fields.some((field) =>\n [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.DATE,\n ModelAttributeValueType.DATETIME,\n ].includes(field.attrValue.type as ModelAttributeValueType)\n );\n return this.state.fields.map((field, fieldIndex) => {\n let type: string;\n let style: React.CSSProperties;\n let attrValue: any = field.attrValue;\n let multiSelect = false;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: ModelAttributeValueType.STRING,\n };\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n type = FormControlTypeEnum.SELECT;\n multiSelect = true;\n break;\n case ModelAttributeValueType.DATETIME:\n style = { minWidth: \"auto\" };\n break;\n }\n //高级搜索这里即使是json格式,也用input输入框进行搜索\n if ((attrValue as any).type === \"json\") {\n attrValue = { ...attrValue, type: \"str\" };\n }\n return (\n <Col span={hasBetween ? 12 : 8} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select\n dropdownMatchSelectWidth={false}\n value={field.currentCondition.type}\n onChange={(value: ConditionType) =>\n this.onConditionChange(value, field, fieldIndex)\n }\n disabled={field.disabled}\n >\n {field.availableConditions.map((condition) => (\n <Select.Option value={condition.type} key={condition.type}>\n {condition.label}\n </Select.Option>\n ))}\n </Select>\n {field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n\n return (\n <React.Fragment\n key={`${field.currentCondition.type}-${operation.operator}`}\n >\n {valueIndex > 0 && (\n <Input\n className={styles.separatorInput}\n placeholder=\"~\"\n disabled\n />\n )}\n {getFieldDecorator(`${field.id}[${valueIndex}]`, {\n initialValue:\n operation.fixedValue === undefined ? value : \"\",\n })(\n operation.fixedValue === undefined && !field.disabled ? (\n <ModelAttributeFormControl\n type={type}\n attribute={{\n id: field.id,\n name: field.name,\n value: attrValue,\n }}\n objectId={this.props.modelData.objectId}\n multiSelect={multiSelect}\n onChange={(value: any) =>\n this.onValueChange(\n value,\n valueIndex,\n field,\n fieldIndex\n )\n }\n className={styles.conditionInput}\n style={style}\n />\n ) : (\n <Input disabled />\n )\n )}\n </React.Fragment>\n );\n })}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props?.autoSearch) this.props.autoSearch(this.state.fields);\n if (this.props.onSearch) {\n // 当过滤字段为relation并且过滤条件为ElementOperators.Exists的时候,发起后台请求的搜索queries与负责前端展示的query不同。需要额外处理。\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n let fieldQuery: Query = { [field.id]: expressions };\n let fieldQueryToShow: Query = { [field.id]: expressions };\n let hasValue = false;\n let structQueryId: string[];\n const isStruct = !!(field.attrValue as any).isStruct;\n if (isStruct) {\n structQueryId = field.attrValue.struct_define.map(\n (struct_item) => `${field.id}.${struct_item.id}`\n );\n }\n field.values.forEach((value, index) => {\n const operation = field.currentCondition.operations[index];\n const fieldId =\n field.isRelation && ElementOperators.Exists === operation.operator\n ? field.relationSideId\n : field.id;\n fieldQuery = { [fieldId]: expressions };\n\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n const multiValueSearchOperator = multiValueSearchOperators.find(\n (operator) => operator.comparisonOperator === operation.operator\n );\n if (multiValueSearchOperator) {\n let values: any[];\n if (\n field.attrValue.type === ModelAttributeValueType.ENUM ||\n field.attrValue.type === ModelAttributeValueType.ARR\n ) {\n values = value;\n } else if (typeof value === \"string\") {\n if (\n !ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE ||\n !value.includes('\"')\n ) {\n values = value\n .trim()\n .split(/\\s+/)\n .map((value) => convertValue(field.attrValue.type, value));\n } else {\n values = processAttrValueWithQuote(value, []);\n }\n } else {\n values = [value];\n }\n if (values.length) {\n if (isStruct) {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: flatten(\n values.map((value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n\n return structQueryId.map(\n (structId: string | number) => ({\n [structId]: {\n [operation.operator]: value,\n },\n })\n );\n })\n ),\n };\n } else {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldId]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n }\n fieldQueryToShow = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldIdToShow]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n } else {\n value = convertValue(field.attrValue.type, value);\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n expressions[operation.operator] = value;\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n if (this.props.autoSearch) this.props.autoSearch([]);\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.advancedSearch}>\n <Form\n layout=\"vertical\"\n className={styles.advancedSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const AdvancedSearch = Form.create<AdvancedSearchFormProps>({\n name: \"advanced_search\",\n})(AdvancedSearchForm);\n"],"file":"AdvancedSearch.js"}
@@ -316,26 +316,7 @@ export function getFieldConditionsAndValues(fieldQueryOperatorExpressionsMap, id
316
316
 
317
317
  return value;
318
318
  });
319
-
320
- if (!isRelation && !objectId && expressions && Object.keys(expressions) && Object.keys(expressions)[0] === "$gte$lte") {
321
- var _Object$values$;
322
-
323
- // 针对区间的初始化回显
324
- values = (_Object$values$ = Object.values(expressions)[0]) === null || _Object$values$ === void 0 ? void 0 : _Object$values$.split(",");
325
- }
326
-
327
- var disabled = false; // if (
328
- // isRelation &&
329
- // expressions &&
330
- // currentCondition.operations[0].operator === ElementOperators.Exists &&
331
- // isRelationWithNoExpression
332
- // ) {
333
- // disabled = true;
334
- // currentCondition = availableConditions[0];
335
- // values = [null];
336
- // queryValuesStr = "";
337
- // }
338
-
319
+ var disabled = false;
339
320
  return {
340
321
  availableConditions,
341
322
  currentCondition,
@@ -603,8 +584,10 @@ export class AdvancedSearchForm extends React.Component {
603
584
 
604
585
  if (key === LogicalOperators.Or || key === LogicalOperators.And) {
605
586
  var firstSubQuery = expressions[0];
606
- var fieldId = Object.keys(firstSubQuery)[0];
607
- var compareOperator = Object.keys(firstSubQuery[fieldId]).join("");
587
+ var fieldId = Object.keys(firstSubQuery)[0]; // 由于 ConditionType.Between 这边的 operator 是两个,由于需要支持选择一个的时候也要显示出来,这边不能将选择器合并成str吐出去
588
+
589
+ var compareOperators = Object.keys(firstSubQuery[fieldId]);
590
+ var compareOperator = compareOperators.length > 1 ? compareOperators : compareOperators.join("");
608
591
  var subQueryValue = "";
609
592
  var targetField;
610
593
 
@@ -623,16 +606,15 @@ export class AdvancedSearchForm extends React.Component {
623
606
 
624
607
  if (compareOperator === ComparisonOperators.Like || compareOperator === ComparisonOperators.NotLike) {
625
608
  return isString(targetValue) && targetValue.includes(" ") ? "".concat(targetValue[0], "\"").concat(targetValue.slice(1, targetValue.length - 1), "\"").concat(targetValue[targetValue.length - 1]) : targetValue;
626
- } else if (compareOperator === "$gte$lte") {
627
- return query[fieldId] && Object.values(query[fieldId]).join(",") || "";
628
- } else {
609
+ } // 对于时间选择器有两个的,不用特意将值转换成str,因为不需要这里的值
610
+ else {
629
611
  return isString(targetValue) && targetValue.includes(" ") ? "\"".concat(targetValue, "\"") : targetValue;
630
612
  }
631
613
  }).join(" ");
632
614
  }
633
615
 
634
616
  key = fieldId;
635
- expressions = {
617
+ expressions = Array.isArray(compareOperator) ? firstSubQuery[fieldId] : {
636
618
  [compareOperator]: subQueryValue
637
619
  };
638
620
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"names":["React","update","isEqual","find","startsWith","findKey","isNil","flatten","isString","isArray","Form","Button","Col","Input","Row","Select","ComparisonOperators","ElementOperators","forEachAvailableFields","getInstanceNameKeys","LogicalOperators","clusterMap","styles","i18n","NS_LIBS_CMDB_INSTANCES","K","FormControlTypeEnum","ModelAttributeFormControl","ModelAttributeValueType","processAttrValueWithQuote","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","ConditionType","FieldTypeConditionTypesMap","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","Like","logicalOperator","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","t","OPERATOR_EQUAL_DEFINE","operator","In","OPERATOR_NOT_EQUAL_DEFINE","NotIn","OPERATOR_CONTAIN_DEFINE","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","OPERATOR_IS_EMPTY_DEFINE","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeys","relatedKey","v","k","relatedExpressions","Object","keys","currentCondition","availableConditions","map","condition","length","operatorsStr","isFixedValueEqual","every","operation","push","undefined","toString","includes","queryValuesStr","values","i","multiValueSearchOperator","trim","split","join","slice","endsWith","disabled","AdvancedSearchForm","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","structId","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","SELECT","minWidth","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","create"],"mappings":";;AAAA,OAAOA,KAAP,MAA8C,OAA9C;AACA,OAAOC,MAAP,MAAmB,qBAAnB;AACA,SACEC,OADF,EAEEC,IAFF,EAGEC,UAHF,EAIEC,OAJF,EAKEC,KALF,EAMEC,OANF,EAOEC,QAPF,EAQEC,OARF,QASO,QATP;AAUA,SAASC,IAAT,QAAqB,wBAArB;AACA,SAASC,MAAT,EAAiBC,GAAjB,EAAsBC,KAAtB,EAA6BC,GAA7B,EAAkCC,MAAlC,QAAgD,MAAhD;AAGA,SACEC,mBADF,EAEEC,gBAFF,EAGEC,sBAHF,EAIEC,mBAJF,EAKEC,gBALF,QAWO,uBAXP;AAYA,SAASC,UAAT,QAA2B,aAA3B;AACA,OAAOC,MAAP,MAAmB,6BAAnB;AACA,OAAOC,IAAP,MAAiB,SAAjB;AACA,SAASC,sBAAT,EAAiCC,CAAjC,QAA0C,mBAA1C;AACA,SACEC,mBADF,EAEEC,yBAFF,EAGEC,uBAHF,QAIO,2DAJP;AAKA,SACEC,yBADF,EAEEC,sCAFF,QAGO,eAHP;AAKA,WAAYC,aAAZ;;WAAYA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;GAAAA,a,KAAAA,a;;AAyBZ,IAAMC,0BAA2D,GAAG;AAClE,GAACJ,uBAAuB,CAACK,MAAzB,GAAkC,CAChCF,aAAa,CAACG,OADkB,EAEhCH,aAAa,CAACI,UAFkB,EAGhCJ,aAAa,CAACK,KAHkB,EAIhCL,aAAa,CAACM,QAJkB,EAKhCN,aAAa,CAACO,KALkB,EAMhCP,aAAa,CAACQ,QANkB,CADgC;AASlE,GAACX,uBAAuB,CAACY,OAAzB,GAAmC,CACjCT,aAAa,CAACK,KADmB,EAEjCL,aAAa,CAACM,QAFmB,EAGjCN,aAAa,CAACU,OAHmB,EAIjCV,aAAa,CAACO,KAJmB,EAKjCP,aAAa,CAACQ,QALmB,CAT+B;AAgBlE,GAACX,uBAAuB,CAACc,KAAzB,GAAiC,CAC/BX,aAAa,CAACK,KADiB,EAE/BL,aAAa,CAACM,QAFiB,EAG/BN,aAAa,CAACU,OAHiB,EAI/BV,aAAa,CAACO,KAJiB,EAK/BP,aAAa,CAACQ,QALiB,CAhBiC;AAuBlE,GAACX,uBAAuB,CAACe,IAAzB,GAAgC,CAC9BZ,aAAa,CAACK,KADgB,EAE9BL,aAAa,CAACM,QAFgB,EAG9BN,aAAa,CAACU,OAHgB,EAI9BV,aAAa,CAACO,KAJgB,EAK9BP,aAAa,CAACQ,QALgB,CAvBkC;AA8BlE,GAACX,uBAAuB,CAACgB,QAAzB,GAAoC,CAClCb,aAAa,CAACU,OADoB,EAElCV,aAAa,CAACO,KAFoB,EAGlCP,aAAa,CAACQ,QAHoB,CA9B8B;AAmClE,GAACX,uBAAuB,CAACiB,IAAzB,GAAgC,CAC9Bd,aAAa,CAACK,KADgB,EAE9BL,aAAa,CAACM,QAFgB,EAG9BN,aAAa,CAACO,KAHgB,EAI9BP,aAAa,CAACQ,QAJgB,CAnCkC;AAyClE,GAACX,uBAAuB,CAACkB,KAAzB,GAAiC,CAC/Bf,aAAa,CAACG,OADiB,EAE/BH,aAAa,CAACI,UAFiB,EAG/BJ,aAAa,CAACO,KAHiB,EAI/BP,aAAa,CAACQ,QAJiB,CAzCiC;AA+ClE,GAACX,uBAAuB,CAACmB,GAAzB,GAA+B,CAC7BhB,aAAa,CAACG,OADe,EAE7BH,aAAa,CAACI,UAFe,EAG7BJ,aAAa,CAACK,KAHe,EAI7BL,aAAa,CAACM,QAJe,EAK7BN,aAAa,CAACO,KALe,EAM7BP,aAAa,CAACQ,QANe,CA/CmC;AAuDlE,GAACX,uBAAuB,CAACoB,MAAzB,GAAkC,CAChCjB,aAAa,CAACG,OADkB,EAEhCH,aAAa,CAACI,UAFkB,EAGhCJ,aAAa,CAACO,KAHkB,EAIhCP,aAAa,CAACQ,QAJkB,CAvDgC;AA6DlE,GAACX,uBAAuB,CAACqB,EAAzB,GAA8B,CAC5BlB,aAAa,CAACG,OADc,EAE5BH,aAAa,CAACI,UAFc,EAG5BJ,aAAa,CAACK,KAHc,EAI5BL,aAAa,CAACM,QAJc,EAK5BN,aAAa,CAACU,OALc,EAM5BV,aAAa,CAACO,KANc,EAO5BP,aAAa,CAACQ,QAPc,CA7DoC;AAsElE,GAACX,uBAAuB,CAACsB,OAAzB,GAAmC,CACjCnB,aAAa,CAACK,KADmB,EAEjCL,aAAa,CAACM,QAFmB,EAGjCN,aAAa,CAACO,KAHmB,EAIjCP,aAAa,CAACQ,QAJmB,CAtE+B;AA4ElE,GAACX,uBAAuB,CAACuB,IAAzB,GAAgC,CAC9BpB,aAAa,CAACG,OADgB,EAE9BH,aAAa,CAACI,UAFgB,EAG9BJ,aAAa,CAACO,KAHgB,EAI9BP,aAAa,CAACQ,QAJgB;AA5EkC,CAApE;AAoFA,IAAMa,yBAAyB,GAAG,CAChC;AACEC,EAAAA,kBAAkB,EAAErC,mBAAmB,CAACsC,IAD1C;AAEEC,EAAAA,eAAe,EAAEnC,gBAAgB,CAACoC;AAFpC,CADgC,EAKhC;AACEH,EAAAA,kBAAkB,EAAErC,mBAAmB,CAACyC,OAD1C;AAEEF,EAAAA,eAAe,EAAEnC,gBAAgB,CAACsC;AAFpC,CALgC,EAShC;AACEL,EAAAA,kBAAkB,EAAErC,mBAAmB,CAACoB,KAD1C;AAEEmB,EAAAA,eAAe,EAAEnC,gBAAgB,CAACoC;AAFpC,CATgC,EAahC;AACEH,EAAAA,kBAAkB,EAAErC,mBAAmB,CAACqB,QAD1C;AAEEkB,EAAAA,eAAe,EAAEnC,gBAAgB,CAACsC;AAFpC,CAbgC,CAAlC;AAkBA1B,0BAA0B,CAACJ,uBAAuB,CAAC+B,WAAzB,CAA1B,GACE3B,0BAA0B,CAACJ,uBAAuB,CAACoB,MAAzB,CAD5B;AAGA,OAAO,SAASY,YAAT,CACLC,aADK,EAELC,SAFK,EAGM;AACX,MAAIC,KAAJ;AACA,MAAIC,UAAJ;;AAEA,UAAQH,aAAR;AACE,SAAK9B,aAAa,CAACK,KAAnB;AACE2B,MAAAA,KAAK,GAAGxC,IAAI,CAAC0C,CAAL,WAAUzC,sBAAV,cAAoCC,CAAC,CAACyC,qBAAtC,EAAR;;AACA,cAAQJ,SAAR;AACE,aAAKlC,uBAAuB,CAACmB,GAA7B;AACEiB,UAAAA,UAAU,GAAG,CACX;AACEG,YAAAA,QAAQ,EAAEnD,mBAAmB,CAACoD;AADhC,WADW,CAAb;AAKA;;AACF;AACEJ,UAAAA,UAAU,GAAG,CACX;AACEG,YAAAA,QAAQ,EAAEnD,mBAAmB,CAACoB;AADhC,WADW,CAAb;AATJ;;AAeA;;AACF,SAAKL,aAAa,CAACM,QAAnB;AACE0B,MAAAA,KAAK,GAAGxC,IAAI,CAAC0C,CAAL,WACHzC,sBADG,cACuBC,CAAC,CAAC4C,yBADzB,EAAR;;AAGA,cAAQP,SAAR;AACE,aAAKlC,uBAAuB,CAACmB,GAA7B;AACEiB,UAAAA,UAAU,GAAG,CACX;AACEG,YAAAA,QAAQ,EAAEnD,mBAAmB,CAACsD;AADhC,WADW,CAAb;AAKA;;AACF;AACEN,UAAAA,UAAU,GAAG,CACX;AACEG,YAAAA,QAAQ,EAAEnD,mBAAmB,CAACqB;AADhC,WADW,CAAb;AATJ;;AAeA;;AACF,SAAKN,aAAa,CAACG,OAAnB;AACE6B,MAAAA,KAAK,GAAGxC,IAAI,CAAC0C,CAAL,WAAUzC,sBAAV,cAAoCC,CAAC,CAAC8C,uBAAtC,EAAR;;AACA,cAAQT,SAAR;AACE,aAAKlC,uBAAuB,CAACkB,KAA7B;AACEkB,UAAAA,UAAU,GAAG,CACX;AACEG,YAAAA,QAAQ,EAAEnD,mBAAmB,CAACoD;AADhC,WADW,CAAb;AAKA;;AACF;AACEJ,UAAAA,UAAU,GAAG,CACX;AACEG,YAAAA,QAAQ,EAAEnD,mBAAmB,CAACsC,IADhC;AAEEkB,YAAAA,MAAM,EAAE,GAFV;AAGEC,YAAAA,MAAM,EAAE;AAHV,WADW,CAAb;AATJ;;AAiBA;;AACF,SAAK1C,aAAa,CAACI,UAAnB;AACE4B,MAAAA,KAAK,GAAGxC,IAAI,CAAC0C,CAAL,WACHzC,sBADG,cACuBC,CAAC,CAACiD,2BADzB,EAAR;;AAGA,cAAQZ,SAAR;AACE,aAAKlC,uBAAuB,CAACkB,KAA7B;AACEkB,UAAAA,UAAU,GAAG,CACX;AACEG,YAAAA,QAAQ,EAAEnD,mBAAmB,CAACsD;AADhC,WADW,CAAb;AAKA;;AACF;AACEN,UAAAA,UAAU,GAAG,CACX;AACEG,YAAAA,QAAQ,EAAEnD,mBAAmB,CAACyC,OADhC;AAEEe,YAAAA,MAAM,EAAE,GAFV;AAGEC,YAAAA,MAAM,EAAE;AAHV,WADW,CAAb;AATJ;;AAiBA;;AACF,SAAK1C,aAAa,CAACO,KAAnB;AACEyB,MAAAA,KAAK,GAAGxC,IAAI,CAAC0C,CAAL,WAAUzC,sBAAV,cAAoCC,CAAC,CAACkD,wBAAtC,EAAR;AACAX,MAAAA,UAAU,GAAG,CACX;AACEG,QAAAA,QAAQ,EAAElD,gBAAgB,CAAC2D,MAD7B;AAEEC,QAAAA,UAAU,EAAE;AAFd,OADW,CAAb;AAMA;;AACF,SAAK9C,aAAa,CAACQ,QAAnB;AACEwB,MAAAA,KAAK,GAAGxC,IAAI,CAAC0C,CAAL,WACHzC,sBADG,cACuBC,CAAC,CAACqD,4BADzB,EAAR;AAGAd,MAAAA,UAAU,GAAG,CACX;AACEG,QAAAA,QAAQ,EAAElD,gBAAgB,CAAC2D,MAD7B;AAEEC,QAAAA,UAAU,EAAE;AAFd,OADW,CAAb;AAMA;;AACF,SAAK9C,aAAa,CAACgD,IAAnB;AACEhB,MAAAA,KAAK,GAAG,MAAR;AACAC,MAAAA,UAAU,GAAG,CACX;AACEG,QAAAA,QAAQ,EAAEnD,mBAAmB,CAACoB,KADhC;AAEEyC,QAAAA,UAAU,EAAE;AAFd,OADW,CAAb;AAMA;;AACF,SAAK9C,aAAa,CAACiD,KAAnB;AACEjB,MAAAA,KAAK,GAAG,OAAR;AACAC,MAAAA,UAAU,GAAG,CACX;AACEG,QAAAA,QAAQ,EAAEnD,mBAAmB,CAACoB,KADhC;AAEEyC,QAAAA,UAAU,EAAE;AAFd,OADW,CAAb;AAMA;;AACF,SAAK9C,aAAa,CAACU,OAAnB;AACEuB,MAAAA,UAAU,GAAG,CACX;AACEG,QAAAA,QAAQ,EAAEnD,mBAAmB,CAACiE;AADhC,OADW,EAIX;AACEd,QAAAA,QAAQ,EAAEnD,mBAAmB,CAACkE;AADhC,OAJW,CAAb;;AAQA,cAAQpB,SAAR;AACE,aAAKlC,uBAAuB,CAACY,OAA7B;AACA,aAAKZ,uBAAuB,CAACc,KAA7B;AACE;AACAqB,UAAAA,KAAK,GAAGxC,IAAI,CAAC0C,CAAL,WACHzC,sBADG,cACuBC,CAAC,CAAC0D,gCADzB,EAAR;AAGA;;AACF,aAAKvD,uBAAuB,CAACe,IAA7B;AACA,aAAKf,uBAAuB,CAACgB,QAA7B;AACE;AACAmB,UAAAA,KAAK,GAAGxC,IAAI,CAAC0C,CAAL,WACHzC,sBADG,cACuBC,CAAC,CAAC2D,iCADzB,EAAR;AAGA;;AACF,aAAKxD,uBAAuB,CAACqB,EAA7B;AACE;AACAc,UAAAA,KAAK,GAAGxC,IAAI,CAAC0C,CAAL,WACHzC,sBADG,cACuBC,CAAC,CAAC4D,4BADzB,EAAR;AAGA;;AACF;AACE;AACAtB,UAAAA,KAAK,GAAGxC,IAAI,CAAC0C,CAAL,WACHzC,sBADG,cACuBC,CAAC,CAAC6D,gCADzB,EAAR;AAvBJ;;AA2BA;AA3JJ;;AA8JA,SAAO;AACLC,IAAAA,IAAI,EAAE1B,aADD;AAELE,IAAAA,KAFK;AAGLC,IAAAA;AAHK,GAAP;AAKD;AAED,OAAO,SAASwB,YAAT,CAAsBC,SAAtB,EAAyCC,KAAzC,EAA0D;AAC/D,MAAI,OAAOA,KAAP,KAAiB,SAArB,EAAgC;AAC9B,YAAQD,SAAR;AACE,WAAK7D,uBAAuB,CAACY,OAA7B;AACE,eAAOmD,QAAQ,CAACD,KAAD,CAAf;;AACF,WAAK9D,uBAAuB,CAACc,KAA7B;AACE,eAAOkD,UAAU,CAACF,KAAD,CAAjB;;AACF,WAAK9D,uBAAuB,CAACsB,OAA7B;AACE,eAAOwC,KAAK,KAAK,MAAjB;AANJ;AAQD;;AACD,SAAOA,KAAP;AACD;AAED,OAAO,SAASG,2BAAT,CACLC,gCADK,EAELC,EAFK,EAGLN,SAHK,EAILO,UAJK,EAKLC,cALK,EAMLC,QANK,EAOLC,MAPK,EAQL;AACA,MAAIC,0BAA0B,GAAG,KAAjC;AACA,MAAIC,WAAW,GAAGP,gCAAgC,CAACC,EAAD,CAAlD;AACA,MAAIO,eAAJ;;AACA,MAAI,CAACD,WAAD,IAAgBL,UAApB,EAAgC;AAC9BI,IAAAA,0BAA0B,GAAG,IAA7B;AACA,QAAMG,UAAU,GAAGlG,OAAO,CACxByF,gCADwB,EAExB,CAACU,CAAD,EAAIC,CAAJ,KAAUrG,UAAU,CAACqG,CAAD,YAAOR,cAAP,OAAV,IAAuCQ,CAAC,KAAKR,cAF/B,CAA1B;AAIA,QAAMS,kBAAkB,GAAGZ,gCAAgC,CAACS,UAAD,CAA3D;;AACA,QACEG,kBAAkB,IAClB,CAACpG,KAAK,CAACoG,kBAAkB,CAACzF,gBAAgB,CAAC2D,MAAlB,CAAnB,CAFR,EAGE;AACAyB,MAAAA,WAAW,GAAGP,gCAAgC,CAACS,UAAD,CAA9C;AACD;AACF;;AAED,MAAIF,WAAJ,EAAiB;AACfC,IAAAA,eAAe,GAAGK,MAAM,CAACC,IAAP,CAAYP,WAAZ,CAAlB;AACD;;AACD,MAAIQ,gBAAJ;AACA,MAAMC,mBAAmB,GAAG9E,0BAA0B,CAACyD,SAAD,CAA1B,CAAsCsB,GAAtC,CACzBlD,aAAD,IAAmB;AAAA;;AACjB,QAAMmD,SAAS,GAAGpD,YAAY,CAACC,aAAD,EAAgB4B,SAAhB,CAA9B;;AAEA,4BAAIa,eAAJ,6CAAI,iBAAiBW,MAArB,EAA6B;AAC3B,UAAMC,YAAsB,GAAG,EAA/B,CAD2B,CAE3B;;AACA,UAAMC,iBAAiB,GAAGH,SAAS,CAAChD,UAAV,CAAqBoD,KAArB,CAA4BC,SAAD,IAAe;AAClEH,QAAAA,YAAY,CAACI,IAAb,CAAkBD,SAAS,CAAClD,QAA5B;;AAEA,YAAIkD,SAAS,CAACxC,UAAV,KAAyB0C,SAA7B,EAAwC;AAAA;;AACtC,iBACE,0BAAAF,SAAS,CAACxC,UAAV,gFAAsB2C,QAAtB,kCACAnB,WAAW,CAACgB,SAAD,aAACA,SAAD,uBAACA,SAAS,CAAElD,QAAZ,CADX,0DACA,sBAAkCqD,QAAlC,EADA,CADF;AAID,SALD,MAKO;AACL,iBAAO,IAAP;AACD;AACF,OAXyB,CAA1B;;AAYA,UACEL,iBAAiB,IACjBb,eAAe,CAACc,KAAhB,CAAuBjD,QAAD,IAAc+C,YAAY,CAACO,QAAb,CAAsBtD,QAAtB,CAApC,CAFF,EAGE;AACA0C,QAAAA,gBAAgB,GAAGG,SAAnB;AACD;AACF;;AAED,WAAOA,SAAP;AACD,GA5ByB,CAA5B;;AA8BA,MAAI,CAACH,gBAAL,EAAuB;AACrBA,IAAAA,gBAAgB,GAAGC,mBAAmB,CAAC,CAAD,CAAtC;AACD;;AACD,MAAIY,cAAc,GAAG,EAArB;AACA,MAAIC,MAAM,GAAGd,gBAAgB,CAAC7C,UAAjB,CAA4B+C,GAA5B,CAAiCM,SAAD,IAAe;AAAA;;AAC1D,QAAI3B,KAAJ,CAD0D,CAE1D;;AACA,QACE,iBAAAW,WAAW,UAAX,oDAAcgB,SAAS,CAAClD,QAAxB,OAAsCoD,SAAtC,IACAF,SAAS,CAAClD,QAAV,KAAuBlD,gBAAgB,CAAC2D,MAF1C,EAGE;AACAc,MAAAA,KAAK,GAAGW,WAAW,CAACgB,SAAS,CAAClD,QAAX,CAAnB;AACA,UAAIwD,OAAM,GAAG,CAACtB,WAAW,CAACgB,SAAS,CAAClD,QAAX,CAAZ,CAAb;AACA,UAAMyD,CAAC,GAAGxE,yBAAyB,CAACjD,IAA1B,CACP0H,wBAAD,IACEA,wBAAwB,CAACxE,kBAAzB,KAAgDgE,SAAS,CAAClD,QAFpD,CAAV;;AAIA,UAAIyD,CAAJ,EAAO;AACL,YACEnC,SAAS,KAAK7D,uBAAuB,CAACiB,IAAtC,IACA,OAAOwD,WAAW,CAACgB,SAAS,CAAClD,QAAX,CAAlB,KAA2C,QAF7C,EAGE;AACAwD,UAAAA,OAAM,GAAGtB,WAAW,CAACgB,SAAS,CAAClD,QAAX,CAAX,CACN2D,IADM,GAENC,KAFM,CAEA,KAFA,EAGNhB,GAHM,CAGDrB,KAAD,IAAmBF,YAAY,CAACC,SAAD,EAAYC,KAAZ,CAH7B,CAAT;;AAIA,cAAIQ,QAAQ,KAAK,SAAb,IAA0BC,MAAM,KAAK,MAAzC,EAAiD;AAC/CwB,YAAAA,OAAM,GAAGA,OAAM,CAACZ,GAAP,CAAYrB,KAAD,IAAWrE,UAAU,CAACqE,KAAD,CAAhC,CAAT;AACD;AACF;AACF;;AACD,UACE,OAAOiC,OAAM,CAAC,CAAD,CAAb,KAAqB,QAArB,IACA,OAAOA,OAAM,CAAC,CAAD,CAAb,KAAqB,QADrB,IAEA,OAAOA,OAAM,CAAC,CAAD,CAAb,KAAqB,SAHvB,EAIE;AACAD,QAAAA,cAAc,GAAGC,OAAM,CAACK,IAAP,CAAY,GAAZ,CAAjB;AACAL,QAAAA,OAAM,GAAGA,OAAM,CAACZ,GAAP,CAAYrB,KAAD,IAAmB;AACrC,cAAI2B,SAAS,CAAC7C,MAAV,IAAoBkB,KAAK,CAACtF,UAAN,CAAiBiH,SAAS,CAAC7C,MAA3B,CAAxB,EAA4D;AAC1DkB,YAAAA,KAAK,GAAGA,KAAK,CAACuC,KAAN,CAAYZ,SAAS,CAAC7C,MAAV,CAAiByC,MAA7B,CAAR;AACD;;AACD,cAAII,SAAS,CAAC5C,MAAV,IAAoBiB,KAAK,CAACwC,QAAN,CAAeb,SAAS,CAAC5C,MAAzB,CAAxB,EAA0D;AACxDiB,YAAAA,KAAK,GAAGA,KAAK,CAACuC,KAAN,CAAY,CAAZ,EAAevC,KAAK,CAACuB,MAAN,GAAeI,SAAS,CAAC5C,MAAV,CAAiBwC,MAA/C,CAAR;AACD;;AACD,iBAAOvB,KAAP;AACD,SARQ,CAAT;AASAA,QAAAA,KAAK,GAAG,CACN9D,uBAAuB,CAACiB,IADlB,EAENjB,uBAAuB,CAACmB,GAFlB,EAGN0E,QAHM,CAGGhC,SAHH,IAIJkC,OAJI,GAKJA,OAAM,CAACK,IAAP,CAAY,GAAZ,CALJ;AAMD;AACF,KA9CD,MA8CO;AACLtC,MAAAA,KAAK,GAAG2B,SAAS,CAACxC,UAAV,KAAyB0C,SAAzB,GAAqCF,SAAS,CAACxC,UAA/C,GAA4D,IAApE;AACD;;AAED,WAAOa,KAAP;AACD,GAtDY,CAAb;;AAwDA,MACE,CAACM,UAAD,IACA,CAACE,QADD,IAEAG,WAFA,IAGAM,MAAM,CAACC,IAAP,CAAYP,WAAZ,CAHA,IAIAM,MAAM,CAACC,IAAP,CAAYP,WAAZ,EAAyB,CAAzB,MAAgC,UALlC,EAME;AAAA;;AACA;AACAsB,IAAAA,MAAM,sBAAGhB,MAAM,CAACgB,MAAP,CAActB,WAAd,EAA2B,CAA3B,CAAH,oDAAG,gBAA+B0B,KAA/B,CAAqC,GAArC,CAAT;AACD;;AAED,MAAMI,QAAQ,GAAG,KAAjB,CA5HA,CA8HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAO;AACLrB,IAAAA,mBADK;AAELD,IAAAA,gBAFK;AAGLc,IAAAA,MAHK;AAILD,IAAAA,cAJK;AAKLS,IAAAA;AALK,GAAP;AAOD;AAkCD,OAAO,MAAMC,kBAAN,SAAiCpI,KAAK,CAACqI,SAAvC,CAGL;AACAC,EAAAA,WAAW,CAACC,KAAD,EAAiC;AAC1C,UAAMA,KAAN;;AAD0C,2CA0K5B,CACd7C,KADc,EAEd8C,UAFc,EAGdC,KAHc,EAIdC,UAJc,KAKX;AACH,WAAKC,QAAL,CAAc;AACZC,QAAAA,MAAM,EAAE3I,MAAM,CAAC,KAAK4I,KAAL,CAAWD,MAAZ,EAAoB;AAChC,WAACF,UAAD,GAAc;AAAEf,YAAAA,MAAM,EAAE;AAAE,eAACa,UAAD,GAAc;AAAEM,gBAAAA,IAAI,EAAEpD;AAAR;AAAhB;AAAV;AADkB,SAApB;AADF,OAAd;AAKD,KArL2C;;AAAA,+CAuLxB,CAClBA,KADkB,EAElB+C,KAFkB,EAGlBC,UAHkB,KAIf;AACH,UAAMK,cAAc,GAAGN,KAAK,CAAC5B,gBAAN,CAAuB7C,UAAvB,CAAkCgF,IAAlC,CACpB3B,SAAD,IAAeA,SAAS,CAACxC,UAAV,KAAyB0C,SADnB,CAAvB;AAIA,UAAMP,SAAS,GAAGyB,KAAK,CAAC3B,mBAAN,CAA0B3G,IAA1B,CACf6G,SAAD,IAAeA,SAAS,CAACzB,IAAV,KAAmBG,KADlB,CAAlB;AAGA,UAAIuD,SAAS,GAAGjC,SAAS,CAAChD,UAAV,CAAqB+C,GAArB,CAA0BM,SAAD,IACvCA,SAAS,CAACxC,UAAV,KAAyB0C,SAAzB,GAAqCF,SAAS,CAACxC,UAA/C,GAA4D,IAD9C,CAAhB;;AAGA,UACEoE,SAAS,CAAC7B,KAAV,CAAiB1B,KAAD,IAAWA,KAAK,KAAK,IAArC,KACA,CAACqD,cADD,IAEA,KAAKF,KAAL,CAAWD,MAAX,CAAkBF,UAAlB,EAA8Bf,MAA9B,CAAqCV,MAArC,KAAgDgC,SAAS,CAAChC,MAH5D,EAIE;AACAgC,QAAAA,SAAS,GAAG,KAAKJ,KAAL,CAAWD,MAAX,CAAkBF,UAAlB,EAA8Bf,MAA1C;AACD;;AAED,UAAIuB,SAAS,GAAGjJ,MAAM,CAAC,KAAK4I,KAAL,CAAWD,MAAZ,EAAoB;AACxC,SAACF,UAAD,GAAc;AACZ7B,UAAAA,gBAAgB,EAAE;AAAEiC,YAAAA,IAAI,EAAE9B;AAAR,WADN;AAEZW,UAAAA,MAAM,EAAE;AACNmB,YAAAA,IAAI,EAAEG;AADA;AAFI;AAD0B,OAApB,CAAtB;AASA,UAAME,iBAAiB,GAAGD,SAAS,CAACE,SAAV,CACvBC,CAAD,IACEA,CAAC,CAACrD,UAAF,IACAqD,CAAC,CAACpD,cAAF,KAAqBwC,KAAK,CAACxC,cAD3B,IAEAoD,CAAC,CAACtD,EAAF,KAAS0C,KAAK,CAAC1C,EAJO,CAA1B;;AAMA,UAAIoD,iBAAiB,KAAK,CAAC,CAA3B,EAA8B;AAC5B,YAAMG,YAAY,GAAGJ,SAAS,CAACC,iBAAD,CAA9B;AACA,YAAMI,gBAAgB,GAAGD,YAAY,CAACxC,mBAAb,CAAiC3G,IAAjC,CACtB6G,SAAD,IAAeA,SAAS,CAACzB,IAAV,KAAmBG,KADX,CAAzB;;AAGA,YAAIsB,SAAS,CAAChD,UAAV,CAAqB,CAArB,EAAwBG,QAAxB,KAAqClD,gBAAgB,CAAC2D,MAA1D,EAAkE;AAChEsE,UAAAA,SAAS,GAAGjJ,MAAM,CAACiJ,SAAD,EAAY;AAC5B,aAACC,iBAAD,GAAqB;AACnBtC,cAAAA,gBAAgB,EAAE;AAAEiC,gBAAAA,IAAI,EAAES;AAAR,eADC;AAEnB5B,cAAAA,MAAM,EAAE;AACNmB,gBAAAA,IAAI,EAAE,CAAC,IAAD;AADA;AAFW;AADO,WAAZ,CAAlB;AAQD,SATD,MASO,IACLQ,YAAY,CAACzC,gBAAb,CAA8B7C,UAA9B,CAAyC,CAAzC,EAA4CG,QAA5C,KACAlD,gBAAgB,CAAC2D,MAFZ,EAGL;AACAsE,UAAAA,SAAS,GAAGjJ,MAAM,CAACiJ,SAAD,EAAY;AAC5B,aAACC,iBAAD,GAAqB;AACnBtC,cAAAA,gBAAgB,EAAE;AAAEiC,gBAAAA,IAAI,EAAEQ,YAAY,CAACxC,mBAAb,CAAiC,CAAjC;AAAR,eADC;AAEnBa,cAAAA,MAAM,EAAE;AACNmB,gBAAAA,IAAI,EAAE,CAAC,IAAD;AADA;AAFW;AADO,WAAZ,CAAlB;AAQD;AACF;;AAED,WAAKH,QAAL,CAAc;AACZC,QAAAA,MAAM,EAAEM;AADI,OAAd;AAIA,WAAKM,kBAAL,CAAwBN,SAAxB;AACD,KA/P2C;;AAAA,0CA0W5BO,CAAD,IAA6B;AAAA;;AAC1CA,MAAAA,CAAC,CAACC,cAAF;AACA,yBAAI,KAAKnB,KAAT,wCAAI,YAAYoB,UAAhB,EAA4B,KAAKpB,KAAL,CAAWoB,UAAX,CAAsB,KAAKd,KAAL,CAAWD,MAAjC;;AAC5B,UAAI,KAAKL,KAAL,CAAWqB,QAAf,EAAyB;AACvB;AACA,YAAIC,QAAgB,GAAG,EAAvB;AACA,YAAIC,cAAsB,GAAG,EAA7B;AACA,YAAMC,YAAoC,GAAG,EAA7C;AACA,aAAKlB,KAAL,CAAWD,MAAX,CAAkBoB,OAAlB,CAA2BvB,KAAD,IAAW;AACnC,cAAMpC,WAAqC,GAAG,EAA9C;AACA,cAAI4D,UAAiB,GAAG;AAAE,aAACxB,KAAK,CAAC1C,EAAP,GAAYM;AAAd,WAAxB;AACA,cAAI6D,gBAAuB,GAAG;AAAE,aAACzB,KAAK,CAAC1C,EAAP,GAAYM;AAAd,WAA9B;AACA,cAAI8D,QAAQ,GAAG,KAAf;AACA,cAAIC,aAAJ;AACA,cAAMC,QAAQ,GAAG,CAAC,CAAE5B,KAAK,CAAC6B,SAAP,CAAyBD,QAA5C;;AACA,cAAIA,QAAJ,EAAc;AACZD,YAAAA,aAAa,GAAG3B,KAAK,CAAC6B,SAAN,CAAgBC,aAAhB,CAA8BxD,GAA9B,CACbyD,WAAD,cAAoB/B,KAAK,CAAC1C,EAA1B,cAAgCyE,WAAW,CAACzE,EAA5C,CADc,CAAhB;AAGD;;AACD0C,UAAAA,KAAK,CAACd,MAAN,CAAaqC,OAAb,CAAqB,CAACtE,KAAD,EAAQ+E,KAAR,KAAkB;AACrC,gBAAMpD,SAAS,GAAGoB,KAAK,CAAC5B,gBAAN,CAAuB7C,UAAvB,CAAkCyG,KAAlC,CAAlB;AACA,gBAAMC,OAAO,GACXjC,KAAK,CAACzC,UAAN,IAAoB/E,gBAAgB,CAAC2D,MAAjB,KAA4ByC,SAAS,CAAClD,QAA1D,GACIsE,KAAK,CAACxC,cADV,GAEIwC,KAAK,CAAC1C,EAHZ;AAIAkE,YAAAA,UAAU,GAAG;AAAE,eAACS,OAAD,GAAWrE;AAAb,aAAb;AAEA,gBAAMsE,aAAa,GAAGlC,KAAK,CAAC1C,EAA5B;AACAmE,YAAAA,gBAAgB,GAAG;AAAE,eAACS,aAAD,GAAiBtE;AAAnB,aAAnB;;AAEA,gBACEX,KAAK,KAAK,IAAV,IACAA,KAAK,KAAK,EADV,IAEA,EAAEkF,KAAK,CAACnK,OAAN,CAAciF,KAAd,KAAwBA,KAAK,CAACuB,MAAN,KAAiB,CAA3C,CAHF,EAIE;AACA,kBAAMY,wBAAwB,GAAGzE,yBAAyB,CAACjD,IAA1B,CAC9BgE,QAAD,IAAcA,QAAQ,CAACd,kBAAT,KAAgCgE,SAAS,CAAClD,QADzB,CAAjC;;AAGA,kBAAI0D,wBAAJ,EAA8B;AAC5B,oBAAIF,MAAJ;;AACA,oBACEc,KAAK,CAAC6B,SAAN,CAAgB/E,IAAhB,KAAyB3D,uBAAuB,CAACiB,IAAjD,IACA4F,KAAK,CAAC6B,SAAN,CAAgB/E,IAAhB,KAAyB3D,uBAAuB,CAACmB,GAFnD,EAGE;AACA4E,kBAAAA,MAAM,GAAGjC,KAAT;AACD,iBALD,MAKO,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AACpC,sBACE,CAAC5D,sCAAD,IACA,CAAC4D,KAAK,CAAC+B,QAAN,CAAe,GAAf,CAFH,EAGE;AACAE,oBAAAA,MAAM,GAAGjC,KAAK,CACXoC,IADM,GAENC,KAFM,CAEA,KAFA,EAGNhB,GAHM,CAGDrB,KAAD,IAAWF,YAAY,CAACiD,KAAK,CAAC6B,SAAN,CAAgB/E,IAAjB,EAAuBG,KAAvB,CAHrB,CAAT;AAID,mBARD,MAQO;AACLiC,oBAAAA,MAAM,GAAG9F,yBAAyB,CAAC6D,KAAD,EAAQ,EAAR,CAAlC;AACD;AACF,iBAZM,MAYA;AACLiC,kBAAAA,MAAM,GAAG,CAACjC,KAAD,CAAT;AACD;;AACD,oBAAIiC,MAAM,CAACV,MAAX,EAAmB;AACjB,sBAAIoD,QAAJ,EAAc;AACZJ,oBAAAA,UAAU,GAAG;AACX,uBAACpC,wBAAwB,CAACtE,eAA1B,GAA4ChD,OAAO,CACjDoH,MAAM,CAACZ,GAAP,CAAYrB,KAAD,IAAW;AACpB,4BAAI2B,SAAS,CAAC7C,MAAd,EAAsB;AACpBkB,0BAAAA,KAAK,GAAG2B,SAAS,CAAC7C,MAAV,GAAmBkB,KAA3B;AACD;;AACD,4BAAI2B,SAAS,CAAC5C,MAAd,EAAsB;AACpBiB,0BAAAA,KAAK,IAAI2B,SAAS,CAAC5C,MAAnB;AACD;;AAED,+BAAO2F,aAAa,CAACrD,GAAd,CACJ8D,QAAD,KAAgC;AAC9B,2BAACA,QAAD,GAAY;AACV,6BAACxD,SAAS,CAAClD,QAAX,GAAsBuB;AADZ;AADkB,yBAAhC,CADK,CAAP;AAOD,uBAfD,CADiD;AADxC,qBAAb;AAoBD,mBArBD,MAqBO;AACLuE,oBAAAA,UAAU,GAAG;AACX,uBAACpC,wBAAwB,CAACtE,eAA1B,GAA4CoE,MAAM,CAACZ,GAAP,CACzCrB,KAAD,IAAW;AACT,4BAAI2B,SAAS,CAAC7C,MAAd,EAAsB;AACpBkB,0BAAAA,KAAK,GAAG2B,SAAS,CAAC7C,MAAV,GAAmBkB,KAA3B;AACD;;AACD,4BAAI2B,SAAS,CAAC5C,MAAd,EAAsB;AACpBiB,0BAAAA,KAAK,IAAI2B,SAAS,CAAC5C,MAAnB;AACD;;AACD,+BAAO;AACL,2BAACiG,OAAD,GAAW;AACT,6BAACrD,SAAS,CAAClD,QAAX,GAAsBuB;AADb;AADN,yBAAP;AAKD,uBAbyC;AADjC,qBAAb;AAiBD;;AACDwE,kBAAAA,gBAAgB,GAAG;AACjB,qBAACrC,wBAAwB,CAACtE,eAA1B,GAA4CoE,MAAM,CAACZ,GAAP,CACzCrB,KAAD,IAAW;AACT,0BAAI2B,SAAS,CAAC7C,MAAd,EAAsB;AACpBkB,wBAAAA,KAAK,GAAG2B,SAAS,CAAC7C,MAAV,GAAmBkB,KAA3B;AACD;;AACD,0BAAI2B,SAAS,CAAC5C,MAAd,EAAsB;AACpBiB,wBAAAA,KAAK,IAAI2B,SAAS,CAAC5C,MAAnB;AACD;;AACD,6BAAO;AACL,yBAACkG,aAAD,GAAiB;AACf,2BAACtD,SAAS,CAAClD,QAAX,GAAsBuB;AADP;AADZ,uBAAP;AAKD,qBAbyC;AAD3B,mBAAnB;AAiBAyE,kBAAAA,QAAQ,GAAG,IAAX;;AACAJ,kBAAAA,YAAW,CAACzC,IAAZ,CAAiB;AAAE,qBAACmB,KAAK,CAAC1C,EAAP,GAAY0C,KAAK,CAACd;AAApB,mBAAjB;AACD;AACF,eAnFD,MAmFO;AACLjC,gBAAAA,KAAK,GAAGF,YAAY,CAACiD,KAAK,CAAC6B,SAAN,CAAgB/E,IAAjB,EAAuBG,KAAvB,CAApB;;AACA,oBAAI2B,SAAS,CAAC7C,MAAd,EAAsB;AACpBkB,kBAAAA,KAAK,GAAG2B,SAAS,CAAC7C,MAAV,GAAmBkB,KAA3B;AACD;;AACD,oBAAI2B,SAAS,CAAC5C,MAAd,EAAsB;AACpBiB,kBAAAA,KAAK,IAAI2B,SAAS,CAAC5C,MAAnB;AACD;;AACD4B,gBAAAA,WAAW,CAACgB,SAAS,CAAClD,QAAX,CAAX,GAAkCuB,KAAlC;AACAyE,gBAAAA,QAAQ,GAAG,IAAX;;AACAJ,gBAAAA,YAAW,CAACzC,IAAZ,CAAiB;AAAE,mBAACmB,KAAK,CAAC1C,EAAP,GAAY0C,KAAK,CAACd;AAApB,iBAAjB;AACD;AACF;AACF,WAnHD;;AAoHA,cAAIwC,QAAJ,EAAc;AACZN,YAAAA,QAAO,CAACvC,IAAR,CAAa2C,UAAb;;AACAH,YAAAA,cAAa,CAACxC,IAAd,CAAmB4C,gBAAnB;AACD;AACF,SApID;;AAqIA,YAAIL,QAAO,CAAC5C,MAAR,KAAmB,CAAvB,EAA0B;AACxB4C,UAAAA,QAAO,GAAGtC,SAAV;AACAuC,UAAAA,cAAa,GAAGvC,SAAhB;AACD;;AACD,YAAI,CAACrH,OAAO,CAAC,KAAKqI,KAAL,CAAWuC,CAAZ,EAAejB,QAAf,CAAZ,EAAqC;AACnC,eAAKtB,KAAL,CAAWqB,QAAX,CAAoBC,QAApB,EAA6BC,cAA7B,EAA4CC,YAA5C;AACD;AACF;AACF,KA/f2C;;AAAA,yCAigB9B,MAAM;AAClB,UAAI,KAAKxB,KAAL,CAAWoB,UAAf,EAA2B,KAAKpB,KAAL,CAAWoB,UAAX,CAAsB,EAAtB;AAC3B,WAAKpB,KAAL,CAAWqB,QAAX,CAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B;AACA,WAAKrB,KAAL,CAAWwC,IAAX,CAAgBC,WAAhB;AACD,KArgB2C;;AAG1C,SAAKnC,KAAL,GAAa,KAAKoC,YAAL,EAAb;AACD;;AAEDC,EAAAA,kBAAkB,CAACC,SAAD,EAAqD;AACrE,QAAI,CAACjL,OAAO,CAAC,KAAKqI,KAAL,CAAWuC,CAAZ,EAAeK,SAAS,CAACL,CAAzB,CAAZ,EAAyC;AACvC,UAAMM,QAAQ,GAAG,KAAKH,YAAL,EAAjB;AACA,WAAKtC,QAAL,CAAcyC,QAAd;AAEA,WAAK5B,kBAAL,CAAwB4B,QAAQ,CAACxC,MAAjC;AACD;AACF;;AAEDqC,EAAAA,YAAY,GAAwB;AAClC,QAAMnF,gCAGL,GAAG,EAHJ;AAIA,QAAM8C,MAAe,GAAG,EAAxB;;AACA,QAAI,KAAKL,KAAL,CAAWuC,CAAf,EAAkB;AAChB,WAAKvC,KAAL,CAAWuC,CAAX,CAAad,OAAb,CAAsBqB,KAAD,IAAW;AAC9B1E,QAAAA,MAAM,CAAC2E,OAAP,CAAeD,KAAf,EAAsBrB,OAAtB,CAA8B,QAAwB;AAAA,cAAvB,CAACuB,GAAD,EAAMlF,WAAN,CAAuB;;AACpD,cAAIkF,GAAG,KAAKnK,gBAAgB,CAACoC,EAAzB,IAA+B+H,GAAG,KAAKnK,gBAAgB,CAACsC,GAA5D,EAAiE;AAC/D,gBAAM8H,aAAa,GAAInF,WAAD,CAAyB,CAAzB,CAAtB;AACA,gBAAMqE,OAAO,GAAG/D,MAAM,CAACC,IAAP,CAAY4E,aAAZ,EAA2B,CAA3B,CAAhB;AACA,gBAAMC,eAAe,GAAG9E,MAAM,CAACC,IAAP,CAAY4E,aAAa,CAACd,OAAD,CAAzB,EAAoC1C,IAApC,CACtB,EADsB,CAAxB;AAGA,gBAAI0D,aAAa,GAAG,EAApB;AACA,gBAAIC,WAAJ;;AACA,gBAAI7J,sCAAJ,EAA4C;AAAA;;AAC1C6J,cAAAA,WAAW,4BAAG,KAAKpD,KAAL,CAAWwB,WAAd,0DAAG,sBAAwB5J,IAAxB,CACXyL,SAAD,IAAejF,MAAM,CAACC,IAAP,CAAYgF,SAAZ,EAAuB,CAAvB,MAA8BlB,OADjC,CAAd;AAGD;;AACD,gBAAI,CAACpK,KAAK,CAACqL,WAAD,CAAV,EAAyB;AACvB;AACAD,cAAAA,aAAa,GAAGjL,OAAO,CAACkL,WAAW,CAACjB,OAAD,CAAZ,CAAP,GACZiB,WAAW,CAACjB,OAAD,CAAX,CACG3D,GADH,CACQ8E,IAAD,IAAWpL,OAAO,CAACoL,IAAD,CAAP,GAAgBA,IAAI,CAAC7D,IAAL,CAAU,GAAV,CAAhB,GAAiC6D,IADnD,EAEG7D,IAFH,CAEQ,EAFR,CADY,GAIX2D,WAAW,CAACjB,OAAD,CAJhB;AAKD,aAPD,MAOO;AACLgB,cAAAA,aAAa,GAAIrF,WAAD,CACbU,GADa,CACRsE,KAAD,IAAW;AACd,oBAAMS,WAAW,GACfT,KAAK,CAACX,OAAD,CADa,CAElBe,eAFkB,CAApB;;AAGA,oBACEA,eAAe,KAAKzK,mBAAmB,CAACsC,IAAxC,IACAmI,eAAe,KAAKzK,mBAAmB,CAACyC,OAF1C,EAGE;AACA,yBAAOjD,QAAQ,CAACsL,WAAD,CAAR,IAAyBA,WAAW,CAACrE,QAAZ,CAAqB,GAArB,CAAzB,aACAqE,WAAW,CAAC,CAAD,CADX,eACkBA,WAAW,CAAC7D,KAAZ,CACnB,CADmB,EAEnB6D,WAAW,CAAC7E,MAAZ,GAAqB,CAFF,CADlB,eAIE6E,WAAW,CAACA,WAAW,CAAC7E,MAAZ,GAAqB,CAAtB,CAJb,IAKH6E,WALJ;AAMD,iBAVD,MAUO,IAAIL,eAAe,KAAK,UAAxB,EAAoC;AACzC,yBACGJ,KAAK,CAACX,OAAD,CAAL,IACC/D,MAAM,CAACgB,MAAP,CAAc0D,KAAK,CAACX,OAAD,CAAnB,EAA8B1C,IAA9B,CAAmC,GAAnC,CADF,IAEA,EAHF;AAKD,iBANM,MAMA;AACL,yBAAOxH,QAAQ,CAACsL,WAAD,CAAR,IAAyBA,WAAW,CAACrE,QAAZ,CAAqB,GAArB,CAAzB,eACCqE,WADD,UAEHA,WAFJ;AAGD;AACF,eA1Ba,EA2Bb9D,IA3Ba,CA2BR,GA3BQ,CAAhB;AA4BD;;AACDuD,YAAAA,GAAG,GAAGb,OAAN;AACArE,YAAAA,WAAW,GAAG;AACZ,eAACoF,eAAD,GAAmBC;AADP,aAAd;AAGD;;AAED5F,UAAAA,gCAAgC,CAACyF,GAAD,CAAhC,GACElF,WADF;AAED,SA3DD;AA4DD,OA7DD;AA8DD;;AACDnF,IAAAA,sBAAsB,CACpB,KAAKqH,KAAL,CAAWwD,SADS,EAEnBC,IAAD,IAAU;AACR,UAAM1B,SAEyB,GAAG,EAFlC;;AAIA,cAAQ0B,IAAI,CAACtG,KAAL,CAAWH,IAAnB;AACE,aAAK3D,uBAAuB,CAACoB,MAA7B;AACA,aAAKpB,uBAAuB,CAAC+B,WAA7B;AACE2G,UAAAA,SAAS,CAAC/E,IAAV,GAAiB3D,uBAAuB,CAACK,MAAzC;AACAqI,UAAAA,SAAS,CAACC,aAAV,GAA0ByB,IAAI,CAACtG,KAAL,CAAW6E,aAArC;AACAD,UAAAA,SAAS,CAACD,QAAV,GAAqB,IAArB;AACA;;AACF,aAAKzI,uBAAuB,CAACiB,IAA7B;AACA,aAAKjB,uBAAuB,CAACkB,KAA7B;AACEwH,UAAAA,SAAS,CAAC/E,IAAV,GAAiByG,IAAI,CAACtG,KAAL,CAAWH,IAA5B;AACA+E,UAAAA,SAAS,CAAC2B,KAAV,GAAkBD,IAAI,CAACtG,KAAL,CAAWuG,KAA7B;AACA;;AACF;AACE3B,UAAAA,SAAS,CAAC/E,IAAV,GAAiByG,IAAI,CAACtG,KAAL,CAAWH,IAA5B;AAbJ;;AAgBAqD,MAAAA,MAAM,CAACtB,IAAP;AACEvB,QAAAA,EAAE,EAAEiG,IAAI,CAACjG,EADX;AAEEmG,QAAAA,IAAI,EAAEF,IAAI,CAACE,IAFb;AAGE5B,QAAAA,SAHF;AAIEtE,QAAAA,UAAU,EAAE;AAJd,SAKKH,2BAA2B,CAC5BC,gCAD4B,EAE5BkG,IAAI,CAACjG,EAFuB,EAG5BiG,IAAI,CAACtG,KAAL,CAAWH,IAHiB,CALhC;AAWD,KAlCmB,EAmCpB,CAAC4G,QAAD,EAAWC,KAAX,KAAqB;AACnB,UAAMC,cAAc,GAClB,KAAK9D,KAAL,CAAW+D,WAAX,CACEH,QAAQ,WAAIC,KAAK,CAACG,IAAV,gBADV,CADF;AAIA,UAAMC,QAAQ,GAAGrL,mBAAmB,CAACkL,cAAD,CAApC;AACAG,MAAAA,QAAQ,CAACxC,OAAT,CAAiB,CAACyC,OAAD,EAAUhC,KAAV,KAAoB;AAAA;;AACnC,YAAMiC,aAAa,0BACjBvM,IAAI,CAACkM,cAAD,aAACA,cAAD,uBAACA,cAAc,CAAEM,QAAjB,EAA2B,CAAC,IAAD,EAAOF,OAAP,CAA3B,CADa,0CACjB,MAAiDP,IADhC,mDACwCO,OAD3D;AAEA,YAAM1G,EAAE,aACNoG,QAAQ,WAAIC,KAAK,CAACQ,IAAV,SADF,cAEJH,OAFI,CAAR;AAGA,YAAMlH,IAAI,GAAG3D,uBAAuB,CAACK,MAArC;AAEA2G,QAAAA,MAAM,CAACtB,IAAP;AACEvB,UAAAA,EADF;AAEEmG,UAAAA,IAAI,YACFC,QAAQ,WAAIC,KAAK,CAACQ,IAAV,WADN,cAEAF,aAFA,MAFN;AAKEpC,UAAAA,SAAS,EAAE;AAAE/E,YAAAA;AAAF,WALb;AAMES,UAAAA,UAAU,EAAE,IANd;AAOEC,UAAAA,cAAc,EAAEkG,QAAQ,WAAIC,KAAK,CAACQ,IAAV;AAP1B,WAQK/G,2BAA2B,CAC5BC,gCAD4B,EAE5BC,EAF4B,EAG5BR,IAH4B,EAI5B,IAJ4B,EAK5B4G,QAAQ,WAAIC,KAAK,CAACQ,IAAV,SALoB,CARhC;AAgBD,OAxBD;AAyBD,KAlEmB,EAmEpB,KAAKrE,KAAL,CAAWsE,QAnES,CAAtB;AAsEA,WAAO;AAAEjE,MAAAA;AAAF,KAAP;AACD;;AAEDY,EAAAA,kBAAkB,CAACZ,MAAD,EAAwB;AACxC,QAAMjB,MAAM,GAAGiB,MAAM,CAACkE,MAAP,CAAsC,CAACC,GAAD,EAAMtE,KAAN,KAAgB;AACnEA,MAAAA,KAAK,CAACd,MAAN,CAAaZ,GAAb,CAAiB,CAACrB,KAAD,EAAQ8C,UAAR,KAAuB;AACtC,YAAMnB,SAAS,GAAGoB,KAAK,CAAC5B,gBAAN,CAAuB7C,UAAvB,CAAkCwE,UAAlC,CAAlB;AACAuE,QAAAA,GAAG,WAAItE,KAAK,CAAC1C,EAAV,cAAgByC,UAAhB,OAAH,GACEnB,SAAS,CAACxC,UAAV,KAAyB0C,SAAzB,GAAqC7B,KAArC,GAA6C,EAD/C;AAED,OAJD;AAKA,aAAOqH,GAAP;AACD,KAPc,EAOZ,EAPY,CAAf;AAQA,SAAKxE,KAAL,CAAWwC,IAAX,CAAgBiC,cAAhB,CAA+BrF,MAA/B;AACD;;AAyFDsF,EAAAA,SAAS,GAAG;AACV,QAAM;AAAEC,MAAAA;AAAF,QAAwB,KAAK3E,KAAL,CAAWwC,IAAzC;AACA,QAAMoC,UAAU,GAAG,KAAKtE,KAAL,CAAWD,MAAX,CAAkBI,IAAlB,CAAwBP,KAAD,IACxC,CACE7G,uBAAuB,CAACqB,EAD1B,EAEErB,uBAAuB,CAACe,IAF1B,EAGEf,uBAAuB,CAACgB,QAH1B,EAIE6E,QAJF,CAIWgB,KAAK,CAAC6B,SAAN,CAAgB/E,IAJ3B,CADiB,CAAnB;AAOA,WAAO,KAAKsD,KAAL,CAAWD,MAAX,CAAkB7B,GAAlB,CAAsB,CAAC0B,KAAD,EAAQC,UAAR,KAAuB;AAClD,UAAInD,IAAJ;AACA,UAAI6H,KAAJ;AACA,UAAI9C,SAAc,GAAG7B,KAAK,CAAC6B,SAA3B;AACA,UAAI+C,WAAW,GAAG,KAAlB;;AACA,cAAQ5E,KAAK,CAAC6B,SAAN,CAAgB/E,IAAxB;AACE,aAAK3D,uBAAuB,CAACY,OAA7B;AACA,aAAKZ,uBAAuB,CAACc,KAA7B;AACE4H,UAAAA,SAAS,GAAG;AACV/E,YAAAA,IAAI,EAAE3D,uBAAuB,CAACK;AADpB,WAAZ;AAGA;;AACF,aAAKL,uBAAuB,CAACiB,IAA7B;AACA,aAAKjB,uBAAuB,CAACkB,KAA7B;AACEyC,UAAAA,IAAI,GAAG7D,mBAAmB,CAAC4L,MAA3B;AACAD,UAAAA,WAAW,GAAG,IAAd;AACA;;AACF,aAAKzL,uBAAuB,CAACgB,QAA7B;AACEwK,UAAAA,KAAK,GAAG;AAAEG,YAAAA,QAAQ,EAAE;AAAZ,WAAR;AACA;AAdJ,OALkD,CAqBlD;;;AACA,UAAKjD,SAAD,CAAmB/E,IAAnB,KAA4B,MAAhC,EAAwC;AACtC+E,QAAAA,SAAS,mCAAQA,SAAR;AAAmB/E,UAAAA,IAAI,EAAE;AAAzB,UAAT;AACD;;AACD,0BACE,oBAAC,GAAD;AAAK,QAAA,IAAI,EAAE4H,UAAU,GAAG,EAAH,GAAQ,CAA7B;AAAgC,QAAA,GAAG,EAAE1E,KAAK,CAAC1C;AAA3C,sBACE,oBAAC,IAAD,CAAM,IAAN;AAAW,QAAA,KAAK,EAAE0C,KAAK,CAACyD;AAAxB,sBACE,oBAAC,KAAD,CAAO,KAAP;AAAa,QAAA,SAAS,EAAE5K,MAAM,CAACkM,mBAA/B;AAAoD,QAAA,OAAO;AAA3D,sBACE,oBAAC,MAAD;AACE,QAAA,wBAAwB,EAAE,KAD5B;AAEE,QAAA,KAAK,EAAE/E,KAAK,CAAC5B,gBAAN,CAAuBtB,IAFhC;AAGE,QAAA,QAAQ,EAAGG,KAAD,IACR,KAAK+H,iBAAL,CAAuB/H,KAAvB,EAA8B+C,KAA9B,EAAqCC,UAArC,CAJJ;AAME,QAAA,QAAQ,EAAED,KAAK,CAACN;AANlB,SAQGM,KAAK,CAAC3B,mBAAN,CAA0BC,GAA1B,CAA+BC,SAAD,iBAC7B,oBAAC,MAAD,CAAQ,MAAR;AAAe,QAAA,KAAK,EAAEA,SAAS,CAACzB,IAAhC;AAAsC,QAAA,GAAG,EAAEyB,SAAS,CAACzB;AAArD,SACGyB,SAAS,CAACjD,KADb,CADD,CARH,CADF,EAeG0E,KAAK,CAACd,MAAN,CAAaZ,GAAb,CAAiB,CAACrB,KAAD,EAAQ8C,UAAR,KAAuB;AACvC,YAAMnB,SAAS,GAAGoB,KAAK,CAAC5B,gBAAN,CAAuB7C,UAAvB,CAAkCwE,UAAlC,CAAlB;AAEA,4BACE,oBAAC,KAAD,CAAO,QAAP;AACE,UAAA,GAAG,YAAKC,KAAK,CAAC5B,gBAAN,CAAuBtB,IAA5B,cAAoC8B,SAAS,CAAClD,QAA9C;AADL,WAGGqE,UAAU,GAAG,CAAb,iBACC,oBAAC,KAAD;AACE,UAAA,SAAS,EAAElH,MAAM,CAACoM,cADpB;AAEE,UAAA,WAAW,EAAC,GAFd;AAGE,UAAA,QAAQ;AAHV,UAJJ,EAUGR,iBAAiB,WAAIzE,KAAK,CAAC1C,EAAV,cAAgByC,UAAhB,QAA+B;AAC/CmF,UAAAA,YAAY,EACVtG,SAAS,CAACxC,UAAV,KAAyB0C,SAAzB,GAAqC7B,KAArC,GAA6C;AAFA,SAA/B,CAAjB,CAIC2B,SAAS,CAACxC,UAAV,KAAyB0C,SAAzB,IAAsC,CAACkB,KAAK,CAACN,QAA7C,gBACE,oBAAC,yBAAD;AACE,UAAA,IAAI,EAAE5C,IADR;AAEE,UAAA,SAAS,EAAE;AACTQ,YAAAA,EAAE,EAAE0C,KAAK,CAAC1C,EADD;AAETmG,YAAAA,IAAI,EAAEzD,KAAK,CAACyD,IAFH;AAGTxG,YAAAA,KAAK,EAAE4E;AAHE,WAFb;AAOE,UAAA,QAAQ,EAAE,KAAK/B,KAAL,CAAWwD,SAAX,CAAqB7F,QAPjC;AAQE,UAAA,WAAW,EAAEmH,WARf;AASE,UAAA,QAAQ,EAAG3H,KAAD,IACR,KAAKkI,aAAL,CACElI,KADF,EAEE8C,UAFF,EAGEC,KAHF,EAIEC,UAJF,CAVJ;AAiBE,UAAA,SAAS,EAAEpH,MAAM,CAACuM,cAjBpB;AAkBE,UAAA,KAAK,EAAET;AAlBT,UADF,gBAsBE,oBAAC,KAAD;AAAO,UAAA,QAAQ;AAAf,UA1BH,CAVH,CADF;AA0CD,OA7CA,CAfH,CADF,CADF,CADF;AAoED,KA7FM,CAAP;AA8FD;;AA+JDU,EAAAA,MAAM,GAAoB;AACxB,wBACE;AAAK,MAAA,SAAS,EAAExM,MAAM,CAACyM;AAAvB,oBACE,oBAAC,IAAD;AACE,MAAA,MAAM,EAAC,UADT;AAEE,MAAA,SAAS,EAAEzM,MAAM,CAAC0M,kBAFpB;AAGE,MAAA,QAAQ,EAAE,KAAKC;AAHjB,oBAKE,oBAAC,GAAD;AAAK,MAAA,MAAM,EAAE;AAAb,OAAkB,KAAKhB,SAAL,EAAlB,CALF,eAME,oBAAC,GAAD,qBACE,oBAAC,GAAD;AAAK,MAAA,IAAI,EAAE,EAAX;AAAe,MAAA,KAAK,EAAE;AAAEiB,QAAAA,SAAS,EAAE;AAAb;AAAtB,oBACE,oBAAC,MAAD;AACE,MAAA,IAAI,EAAC,SADP;AAEE,MAAA,QAAQ,EAAC,QAFX;AAGE,qBAAY;AAHd,OAKG3M,IAAI,CAAC0C,CAAL,WAAUzC,sBAAV,cAAoCC,CAAC,CAAC0M,MAAtC,EALH,CADF,eAQE,oBAAC,MAAD;AACE,MAAA,KAAK,EAAE;AAAEC,QAAAA,UAAU,EAAE;AAAd,OADT;AAEE,MAAA,OAAO,EAAE,KAAKC,WAFhB;AAGE,qBAAY;AAHd,OAKG9M,IAAI,CAAC0C,CAAL,WAAUzC,sBAAV,cAAoCC,CAAC,CAAC6M,KAAtC,EALH,CARF,CADF,CANF,CADF,CADF;AA6BD;;AAtiBD;AAyiBF,OAAO,IAAMC,cAAc,GAAG7N,IAAI,CAAC8N,MAAL,CAAqC;AACjEtC,EAAAA,IAAI,EAAE;AAD2D,CAArC,EAE3B9D,kBAF2B,CAAvB","sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n ComparisonOperators,\n ElementOperators,\n forEachAvailableFields,\n getInstanceNameKeys,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.STRUCT]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.IP]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.BOOLEAN]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.JSON]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n};\n\nconst multiValueSearchOperators = [\n {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotLike,\n logicalOperator: LogicalOperators.And,\n },\n {\n comparisonOperator: ComparisonOperators.Equal,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotEqual,\n logicalOperator: LogicalOperators.And,\n },\n];\nFieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT_LIST] =\n FieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT];\n\nexport function getCondition(\n conditionType: ConditionType,\n fieldType: ModelAttributeValueType\n): Condition {\n let label: string;\n let operations: ConditionOperation[];\n\n switch (conditionType) {\n case ConditionType.Equal:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_EQUAL_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n }\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\n },\n ];\n }\n break;\n case ConditionType.Contain:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Like,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.NotContain:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_CONTAIN_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotLike,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.Empty:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_EMPTY_DEFINE}`);\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.NotEmpty:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_NOT_EMPTY_DEFINE}`\n );\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.True:\n label = \"true\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.False:\n label = \"false\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.Between:\n operations = [\n {\n operator: ComparisonOperators.GreaterThanOrEqual,\n },\n {\n operator: ComparisonOperators.LessThanOrEqual,\n },\n ];\n switch (fieldType) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n // label = \"在此区间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_INT}`\n );\n break;\n case ModelAttributeValueType.DATE:\n case ModelAttributeValueType.DATETIME:\n // label = \"在此期间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_TIME}`\n );\n break;\n case ModelAttributeValueType.IP:\n // label = \"范围\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT}`\n );\n break;\n default:\n // label = \"在此之间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_THE}`\n );\n }\n break;\n }\n\n return {\n type: conditionType,\n label,\n operations,\n };\n}\n\nexport function convertValue(valueType: string, value: any): any {\n if (typeof value !== \"boolean\") {\n switch (valueType) {\n case ModelAttributeValueType.INTEGER:\n return parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return parseFloat(value);\n case ModelAttributeValueType.BOOLEAN:\n return value === \"true\";\n }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeys: string[];\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeys = Object.keys(expressions);\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeys?.length) {\n const operatorsStr: string[] = [];\n // 由于当 ConditionType.Between ,operations 有两个,当用户只填选一个时,currentCondition会默认第一个选择器。与实际不符\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr.push(operation.operator);\n\n if (operation.fixedValue !== undefined) {\n return (\n operation.fixedValue?.toString() ===\n expressions[operation?.operator]?.toString()\n );\n } else {\n return true;\n }\n });\n if (\n isFixedValueEqual &&\n expressionsKeys.every((operator) => operatorsStr.includes(operator))\n ) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n let values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else ElementOperators.Exists时直接返回fixedValue\n if (\n expressions?.[operation.operator] !== undefined &&\n operation.operator !== ElementOperators.Exists\n ) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n typeof values[0] === \"boolean\"\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value = [\n ModelAttributeValueType.ENUM,\n ModelAttributeValueType.ARR,\n ].includes(valueType)\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n\n if (\n !isRelation &&\n !objectId &&\n expressions &&\n Object.keys(expressions) &&\n Object.keys(expressions)[0] === \"$gte$lte\"\n ) {\n // 针对区间的初始化回显\n values = Object.values(expressions)[0]?.split(\",\");\n }\n\n const disabled = false;\n\n // if (\n // isRelation &&\n // expressions &&\n // currentCondition.operations[0].operator === ElementOperators.Exists &&\n // isRelationWithNoExpression\n // ) {\n // disabled = true;\n // currentCondition = availableConditions[0];\n // values = [null];\n // queryValuesStr = \"\";\n // }\n\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n const compareOperator = Object.keys(firstSubQuery[fieldId]).join(\n \"\"\n );\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n } else if (compareOperator === \"$gte$lte\") {\n return (\n (query[fieldId] &&\n Object.values(query[fieldId]).join(\",\")) ||\n \"\"\n );\n } else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\n name: `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfShowKey})`,\n attrValue: { type },\n isRelation: true,\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n id,\n type,\n true,\n relation[`${sides.this}_id` as RelationNameKeys]\n ),\n });\n });\n },\n this.props.fieldIds\n );\n\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n acc[`${field.id}[${valueIndex}]`] =\n operation.fixedValue === undefined ? value : \"\";\n });\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (\n value: any,\n valueIndex: number,\n field: Field,\n fieldIndex: number\n ) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n onConditionChange = (\n value: ConditionType,\n field: Field,\n fieldIndex: number\n ) => {\n const hasFixedValues = field.currentCondition.operations.some(\n (operation) => operation.fixedValue !== undefined\n );\n\n const condition = field.availableConditions.find(\n (condition) => condition.type === value\n );\n let newValues = condition.operations.map((operation) =>\n operation.fixedValue !== undefined ? operation.fixedValue : null\n );\n if (\n newValues.every((value) => value === null) &&\n !hasFixedValues &&\n this.state.fields[fieldIndex].values.length === newValues.length\n ) {\n newValues = this.state.fields[fieldIndex].values;\n }\n\n let newFields = update(this.state.fields, {\n [fieldIndex]: {\n currentCondition: { $set: condition },\n values: {\n $set: newValues,\n },\n },\n });\n\n const relatedFieldIndex = newFields.findIndex(\n (f) =>\n f.isRelation &&\n f.relationSideId === field.relationSideId &&\n f.id !== field.id\n );\n if (relatedFieldIndex !== -1) {\n const relatedField = newFields[relatedFieldIndex];\n const relatedCondition = relatedField.availableConditions.find(\n (condition) => condition.type === value\n );\n if (condition.operations[0].operator === ElementOperators.Exists) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedCondition },\n values: {\n $set: [null],\n },\n },\n });\n } else if (\n relatedField.currentCondition.operations[0].operator ===\n ElementOperators.Exists\n ) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedField.availableConditions[0] },\n values: {\n $set: [null],\n },\n },\n });\n }\n }\n\n this.setState({\n fields: newFields,\n });\n\n this.setFormFieldValues(newFields);\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n const hasBetween = this.state.fields.some((field) =>\n [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.DATE,\n ModelAttributeValueType.DATETIME,\n ].includes(field.attrValue.type as ModelAttributeValueType)\n );\n return this.state.fields.map((field, fieldIndex) => {\n let type: string;\n let style: React.CSSProperties;\n let attrValue: any = field.attrValue;\n let multiSelect = false;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: ModelAttributeValueType.STRING,\n };\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n type = FormControlTypeEnum.SELECT;\n multiSelect = true;\n break;\n case ModelAttributeValueType.DATETIME:\n style = { minWidth: \"auto\" };\n break;\n }\n //高级搜索这里即使是json格式,也用input输入框进行搜索\n if ((attrValue as any).type === \"json\") {\n attrValue = { ...attrValue, type: \"str\" };\n }\n return (\n <Col span={hasBetween ? 12 : 8} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select\n dropdownMatchSelectWidth={false}\n value={field.currentCondition.type}\n onChange={(value: ConditionType) =>\n this.onConditionChange(value, field, fieldIndex)\n }\n disabled={field.disabled}\n >\n {field.availableConditions.map((condition) => (\n <Select.Option value={condition.type} key={condition.type}>\n {condition.label}\n </Select.Option>\n ))}\n </Select>\n {field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n\n return (\n <React.Fragment\n key={`${field.currentCondition.type}-${operation.operator}`}\n >\n {valueIndex > 0 && (\n <Input\n className={styles.separatorInput}\n placeholder=\"~\"\n disabled\n />\n )}\n {getFieldDecorator(`${field.id}[${valueIndex}]`, {\n initialValue:\n operation.fixedValue === undefined ? value : \"\",\n })(\n operation.fixedValue === undefined && !field.disabled ? (\n <ModelAttributeFormControl\n type={type}\n attribute={{\n id: field.id,\n name: field.name,\n value: attrValue,\n }}\n objectId={this.props.modelData.objectId}\n multiSelect={multiSelect}\n onChange={(value: any) =>\n this.onValueChange(\n value,\n valueIndex,\n field,\n fieldIndex\n )\n }\n className={styles.conditionInput}\n style={style}\n />\n ) : (\n <Input disabled />\n )\n )}\n </React.Fragment>\n );\n })}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props?.autoSearch) this.props.autoSearch(this.state.fields);\n if (this.props.onSearch) {\n // 当过滤字段为relation并且过滤条件为ElementOperators.Exists的时候,发起后台请求的搜索queries与负责前端展示的query不同。需要额外处理。\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n let fieldQuery: Query = { [field.id]: expressions };\n let fieldQueryToShow: Query = { [field.id]: expressions };\n let hasValue = false;\n let structQueryId: string[];\n const isStruct = !!(field.attrValue as any).isStruct;\n if (isStruct) {\n structQueryId = field.attrValue.struct_define.map(\n (struct_item) => `${field.id}.${struct_item.id}`\n );\n }\n field.values.forEach((value, index) => {\n const operation = field.currentCondition.operations[index];\n const fieldId =\n field.isRelation && ElementOperators.Exists === operation.operator\n ? field.relationSideId\n : field.id;\n fieldQuery = { [fieldId]: expressions };\n\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n const multiValueSearchOperator = multiValueSearchOperators.find(\n (operator) => operator.comparisonOperator === operation.operator\n );\n if (multiValueSearchOperator) {\n let values: any[];\n if (\n field.attrValue.type === ModelAttributeValueType.ENUM ||\n field.attrValue.type === ModelAttributeValueType.ARR\n ) {\n values = value;\n } else if (typeof value === \"string\") {\n if (\n !ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE ||\n !value.includes('\"')\n ) {\n values = value\n .trim()\n .split(/\\s+/)\n .map((value) => convertValue(field.attrValue.type, value));\n } else {\n values = processAttrValueWithQuote(value, []);\n }\n } else {\n values = [value];\n }\n if (values.length) {\n if (isStruct) {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: flatten(\n values.map((value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n\n return structQueryId.map(\n (structId: string | number) => ({\n [structId]: {\n [operation.operator]: value,\n },\n })\n );\n })\n ),\n };\n } else {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldId]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n }\n fieldQueryToShow = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldIdToShow]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n } else {\n value = convertValue(field.attrValue.type, value);\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n expressions[operation.operator] = value;\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n if (this.props.autoSearch) this.props.autoSearch([]);\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.advancedSearch}>\n <Form\n layout=\"vertical\"\n className={styles.advancedSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const AdvancedSearch = Form.create<AdvancedSearchFormProps>({\n name: \"advanced_search\",\n})(AdvancedSearchForm);\n"],"file":"AdvancedSearch.js"}
1
+ {"version":3,"sources":["../../../src/instance-list-table/AdvancedSearch.tsx"],"names":["React","update","isEqual","find","startsWith","findKey","isNil","flatten","isString","isArray","Form","Button","Col","Input","Row","Select","ComparisonOperators","ElementOperators","forEachAvailableFields","getInstanceNameKeys","LogicalOperators","clusterMap","styles","i18n","NS_LIBS_CMDB_INSTANCES","K","FormControlTypeEnum","ModelAttributeFormControl","ModelAttributeValueType","processAttrValueWithQuote","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","ConditionType","FieldTypeConditionTypesMap","STRING","Contain","NotContain","Equal","NotEqual","Empty","NotEmpty","INTEGER","Between","FLOAT","DATE","DATETIME","ENUM","ENUMS","ARR","STRUCT","IP","BOOLEAN","JSON","multiValueSearchOperators","comparisonOperator","Like","logicalOperator","Or","NotLike","And","STRUCT_LIST","getCondition","conditionType","fieldType","label","operations","t","OPERATOR_EQUAL_DEFINE","operator","In","OPERATOR_NOT_EQUAL_DEFINE","NotIn","OPERATOR_CONTAIN_DEFINE","prefix","suffix","OPERATOR_NOT_CONTAIN_DEFINE","OPERATOR_IS_EMPTY_DEFINE","Exists","fixedValue","OPERATOR_IS_NOT_EMPTY_DEFINE","True","False","GreaterThanOrEqual","LessThanOrEqual","OPERATOR_BETWEEN_DEFINE_TEXT_INT","OPERATOR_BETWEEN_DEFINE_TEXT_TIME","OPERATOR_BETWEEN_DEFINE_TEXT","OPERATOR_BETWEEN_DEFINE_TEXT_THE","type","convertValue","valueType","value","parseInt","parseFloat","getFieldConditionsAndValues","fieldQueryOperatorExpressionsMap","id","isRelation","relationSideId","objectId","attrId","isRelationWithNoExpression","expressions","expressionsKeys","relatedKey","v","k","relatedExpressions","Object","keys","currentCondition","availableConditions","map","condition","length","operatorsStr","isFixedValueEqual","every","operation","push","undefined","toString","includes","queryValuesStr","values","i","multiValueSearchOperator","trim","split","join","slice","endsWith","disabled","AdvancedSearchForm","Component","constructor","props","valueIndex","field","fieldIndex","setState","fields","state","$set","hasFixedValues","some","newValues","newFields","relatedFieldIndex","findIndex","f","relatedField","relatedCondition","setFormFieldValues","e","preventDefault","autoSearch","onSearch","queries","queriesToShow","fieldToShow","forEach","fieldQuery","fieldQueryToShow","hasValue","structQueryId","isStruct","attrValue","struct_define","struct_item","index","fieldId","fieldIdToShow","Array","structId","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","query","entries","key","firstSubQuery","compareOperators","compareOperator","subQueryValue","targetField","fieldItem","item","targetValue","modelData","attr","regex","name","relation","sides","relationObject","idObjectMap","that","showKeys","showKey","nameOfShowKey","attrList","this","fieldIds","reduce","acc","setFieldsValue","getFields","getFieldDecorator","hasBetween","style","multiSelect","SELECT","minWidth","conditionInputGroup","onConditionChange","separatorInput","initialValue","onValueChange","conditionInput","render","advancedSearch","advancedSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","AdvancedSearch","create"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport {\n isEqual,\n find,\n startsWith,\n findKey,\n isNil,\n flatten,\n isString,\n isArray,\n} from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport {\n ComparisonOperators,\n ElementOperators,\n forEachAvailableFields,\n getInstanceNameKeys,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n RelationIdKeys,\n RelationNameKeys,\n RelationObjectIdKeys,\n} from \"@next-libs/cmdb-utils\";\nimport { clusterMap } from \"./constants\";\nimport styles from \"./AdvancedSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n FormControlTypeEnum,\n ModelAttributeFormControl,\n ModelAttributeValueType,\n} from \"../model-attribute-form-control/ModelAttributeFormControl\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport enum ConditionType {\n Equal = \"equal\",\n NotEqual = \"notEqual\",\n Contain = \"contain\",\n NotContain = \"notContain\",\n Empty = \"empty\",\n NotEmpty = \"notEmpty\",\n Between = \"between\",\n True = \"true\",\n False = \"false\",\n}\n\ninterface ConditionOperation {\n operator: ComparisonOperators | ElementOperators;\n fixedValue?: any;\n prefix?: string;\n suffix?: string;\n}\n\ninterface Condition {\n type: ConditionType;\n label: string;\n operations: ConditionOperation[];\n}\n\nconst FieldTypeConditionTypesMap: Record<string, ConditionType[]> = {\n [ModelAttributeValueType.STRING]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.INTEGER]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.FLOAT]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATE]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.DATETIME]: [\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUM]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ENUMS]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.ARR]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.STRUCT]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.IP]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Between,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.BOOLEAN]: [\n ConditionType.Equal,\n ConditionType.NotEqual,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n [ModelAttributeValueType.JSON]: [\n ConditionType.Contain,\n ConditionType.NotContain,\n ConditionType.Empty,\n ConditionType.NotEmpty,\n ],\n};\n\nconst multiValueSearchOperators = [\n {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotLike,\n logicalOperator: LogicalOperators.And,\n },\n {\n comparisonOperator: ComparisonOperators.Equal,\n logicalOperator: LogicalOperators.Or,\n },\n {\n comparisonOperator: ComparisonOperators.NotEqual,\n logicalOperator: LogicalOperators.And,\n },\n];\nFieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT_LIST] =\n FieldTypeConditionTypesMap[ModelAttributeValueType.STRUCT];\n\nexport function getCondition(\n conditionType: ConditionType,\n fieldType: ModelAttributeValueType\n): Condition {\n let label: string;\n let operations: ConditionOperation[];\n\n switch (conditionType) {\n case ConditionType.Equal:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_EQUAL_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Equal,\n },\n ];\n }\n break;\n case ConditionType.NotEqual:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_EQUAL_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ARR:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotEqual,\n },\n ];\n }\n break;\n case ConditionType.Contain:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`);\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.In,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.Like,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.NotContain:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_NOT_CONTAIN_DEFINE}`\n );\n switch (fieldType) {\n case ModelAttributeValueType.ENUMS:\n operations = [\n {\n operator: ComparisonOperators.NotIn,\n },\n ];\n break;\n default:\n operations = [\n {\n operator: ComparisonOperators.NotLike,\n prefix: \"%\",\n suffix: \"%\",\n },\n ];\n }\n break;\n case ConditionType.Empty:\n label = i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_EMPTY_DEFINE}`);\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.NotEmpty:\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_IS_NOT_EMPTY_DEFINE}`\n );\n operations = [\n {\n operator: ElementOperators.Exists,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.True:\n label = \"true\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: true,\n },\n ];\n break;\n case ConditionType.False:\n label = \"false\";\n operations = [\n {\n operator: ComparisonOperators.Equal,\n fixedValue: false,\n },\n ];\n break;\n case ConditionType.Between:\n operations = [\n {\n operator: ComparisonOperators.GreaterThanOrEqual,\n },\n {\n operator: ComparisonOperators.LessThanOrEqual,\n },\n ];\n switch (fieldType) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n // label = \"在此区间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_INT}`\n );\n break;\n case ModelAttributeValueType.DATE:\n case ModelAttributeValueType.DATETIME:\n // label = \"在此期间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_TIME}`\n );\n break;\n case ModelAttributeValueType.IP:\n // label = \"范围\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT}`\n );\n break;\n default:\n // label = \"在此之间\";\n label = i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_BETWEEN_DEFINE_TEXT_THE}`\n );\n }\n break;\n }\n\n return {\n type: conditionType,\n label,\n operations,\n };\n}\n\nexport function convertValue(valueType: string, value: any): any {\n if (typeof value !== \"boolean\") {\n switch (valueType) {\n case ModelAttributeValueType.INTEGER:\n return parseInt(value);\n case ModelAttributeValueType.FLOAT:\n return parseFloat(value);\n case ModelAttributeValueType.BOOLEAN:\n return value === \"true\";\n }\n }\n return value;\n}\n\nexport function getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap: Record<string, QueryOperatorExpressions>,\n id: string,\n valueType: ModelAttributeValueType,\n isRelation?: boolean,\n relationSideId?: string,\n objectId?: string,\n attrId?: string\n) {\n let isRelationWithNoExpression = false;\n let expressions = fieldQueryOperatorExpressionsMap[id];\n let expressionsKeys: string[];\n if (!expressions && isRelation) {\n isRelationWithNoExpression = true;\n const relatedKey = findKey(\n fieldQueryOperatorExpressionsMap,\n (v, k) => startsWith(k, `${relationSideId}.`) || k === relationSideId\n );\n const relatedExpressions = fieldQueryOperatorExpressionsMap[relatedKey];\n if (\n relatedExpressions &&\n !isNil(relatedExpressions[ElementOperators.Exists])\n ) {\n expressions = fieldQueryOperatorExpressionsMap[relatedKey];\n }\n }\n\n if (expressions) {\n expressionsKeys = Object.keys(expressions);\n }\n let currentCondition: Condition;\n const availableConditions = FieldTypeConditionTypesMap[valueType].map(\n (conditionType) => {\n const condition = getCondition(conditionType, valueType);\n\n if (expressionsKeys?.length) {\n const operatorsStr: string[] = [];\n // 由于当 ConditionType.Between ,operations 有两个,当用户只填选一个时,currentCondition会默认第一个选择器。与实际不符\n const isFixedValueEqual = condition.operations.every((operation) => {\n operatorsStr.push(operation.operator);\n\n if (operation.fixedValue !== undefined) {\n return (\n operation.fixedValue?.toString() ===\n expressions[operation?.operator]?.toString()\n );\n } else {\n return true;\n }\n });\n if (\n isFixedValueEqual &&\n expressionsKeys.every((operator) => operatorsStr.includes(operator))\n ) {\n currentCondition = condition;\n }\n }\n\n return condition;\n }\n );\n if (!currentCondition) {\n currentCondition = availableConditions[0];\n }\n let queryValuesStr = \"\";\n const values = currentCondition.operations.map((operation) => {\n let value: any;\n // istanbul ignore else ElementOperators.Exists时直接返回fixedValue\n if (\n expressions?.[operation.operator] !== undefined &&\n operation.operator !== ElementOperators.Exists\n ) {\n value = expressions[operation.operator];\n let values = [expressions[operation.operator]];\n const i = multiValueSearchOperators.find(\n (multiValueSearchOperator) =>\n multiValueSearchOperator.comparisonOperator === operation.operator\n );\n if (i) {\n if (\n valueType === ModelAttributeValueType.ENUM ||\n typeof expressions[operation.operator] === \"string\"\n ) {\n values = expressions[operation.operator]\n .trim()\n .split(/\\s+/)\n .map((value: string) => convertValue(valueType, value));\n if (objectId === \"CLUSTER\" && attrId === \"type\") {\n values = values.map((value) => clusterMap[value]);\n }\n }\n }\n if (\n typeof values[0] === \"string\" ||\n typeof values[0] === \"number\" ||\n typeof values[0] === \"boolean\"\n ) {\n queryValuesStr = values.join(\" \");\n values = values.map((value: string) => {\n if (operation.prefix && value.startsWith(operation.prefix)) {\n value = value.slice(operation.prefix.length);\n }\n if (operation.suffix && value.endsWith(operation.suffix)) {\n value = value.slice(0, value.length - operation.suffix.length);\n }\n return value;\n });\n value = [\n ModelAttributeValueType.ENUM,\n ModelAttributeValueType.ARR,\n ].includes(valueType)\n ? values\n : values.join(\" \");\n }\n } else {\n value = operation.fixedValue !== undefined ? operation.fixedValue : null;\n }\n\n return value;\n });\n const disabled = false;\n return {\n availableConditions,\n currentCondition,\n values,\n queryValuesStr,\n disabled,\n };\n}\n\nexport interface Field {\n id: string;\n name: string;\n attrValue: Partial<CmdbModels.ModelObjectAttrValue>;\n values: any[];\n availableConditions: Condition[];\n currentCondition: Condition;\n isRelation: boolean;\n relationSideId?: string;\n disabled?: boolean;\n}\n\nexport interface AdvancedSearchFormProps extends FormComponentProps {\n fieldIds?: string[];\n idObjectMap: Record<string, Partial<CmdbModels.ModelCmdbObject>>;\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n q?: Query[];\n placeholder?: string;\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n autoSearch?: (fields: Field[]) => void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n onChange?(e: ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface AdvancedSearchFormState {\n fields: Field[];\n}\n\nexport class AdvancedSearchForm extends React.Component<\n AdvancedSearchFormProps,\n AdvancedSearchFormState\n> {\n constructor(props: AdvancedSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<AdvancedSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n const fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n // 由于 ConditionType.Between 这边的 operator 是两个,由于需要支持选择一个的时候也要显示出来,这边不能将选择器合并成str吐出去\n const compareOperators = Object.keys(firstSubQuery[fieldId]);\n const compareOperator =\n compareOperators.length > 1\n ? compareOperators\n : compareOperators.join(\"\");\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n }\n // 对于时间选择器有两个的,不用特意将值转换成str,因为不需要这里的值\n else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = Array.isArray(compareOperator)\n ? firstSubQuery[fieldId]\n : {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n forEachAvailableFields(\n this.props.modelData,\n (attr) => {\n const attrValue: Partial<CmdbModels.ModelObjectAttrValue> & {\n isStruct?: boolean;\n } & { isClusterType?: boolean } = {};\n\n switch (attr.value.type) {\n case ModelAttributeValueType.STRUCT:\n case ModelAttributeValueType.STRUCT_LIST:\n attrValue.type = ModelAttributeValueType.STRING;\n attrValue.struct_define = attr.value.struct_define;\n attrValue.isStruct = true;\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n attrValue.type = attr.value.type;\n attrValue.regex = attr.value.regex;\n break;\n default:\n attrValue.type = attr.value.type;\n }\n\n fields.push({\n id: attr.id,\n name: attr.name,\n attrValue,\n isRelation: false,\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n attr.id,\n attr.value.type as ModelAttributeValueType\n ),\n });\n },\n (relation, sides) => {\n const relationObject =\n this.props.idObjectMap[\n relation[`${sides.that}_object_id` as RelationObjectIdKeys]\n ];\n const showKeys = getInstanceNameKeys(relationObject);\n showKeys.forEach((showKey, index) => {\n const nameOfShowKey =\n find(relationObject?.attrList, [\"id\", showKey])?.name ?? showKey;\n const id = `${\n relation[`${sides.this}_id` as RelationIdKeys]\n }.${showKey}`;\n const type = ModelAttributeValueType.STRING;\n\n fields.push({\n id,\n name: `${\n relation[`${sides.this}_name` as RelationNameKeys]\n }(${nameOfShowKey})`,\n attrValue: { type },\n isRelation: true,\n relationSideId: relation[`${sides.this}_id` as RelationIdKeys],\n ...getFieldConditionsAndValues(\n fieldQueryOperatorExpressionsMap,\n id,\n type,\n true,\n relation[`${sides.this}_id` as RelationNameKeys]\n ),\n });\n });\n },\n this.props.fieldIds\n );\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n acc[`${field.id}[${valueIndex}]`] =\n operation.fixedValue === undefined ? value : \"\";\n });\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (\n value: any,\n valueIndex: number,\n field: Field,\n fieldIndex: number\n ) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n onConditionChange = (\n value: ConditionType,\n field: Field,\n fieldIndex: number\n ) => {\n const hasFixedValues = field.currentCondition.operations.some(\n (operation) => operation.fixedValue !== undefined\n );\n\n const condition = field.availableConditions.find(\n (condition) => condition.type === value\n );\n let newValues = condition.operations.map((operation) =>\n operation.fixedValue !== undefined ? operation.fixedValue : null\n );\n if (\n newValues.every((value) => value === null) &&\n !hasFixedValues &&\n this.state.fields[fieldIndex].values.length === newValues.length\n ) {\n newValues = this.state.fields[fieldIndex].values;\n }\n\n let newFields = update(this.state.fields, {\n [fieldIndex]: {\n currentCondition: { $set: condition },\n values: {\n $set: newValues,\n },\n },\n });\n\n const relatedFieldIndex = newFields.findIndex(\n (f) =>\n f.isRelation &&\n f.relationSideId === field.relationSideId &&\n f.id !== field.id\n );\n if (relatedFieldIndex !== -1) {\n const relatedField = newFields[relatedFieldIndex];\n const relatedCondition = relatedField.availableConditions.find(\n (condition) => condition.type === value\n );\n if (condition.operations[0].operator === ElementOperators.Exists) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedCondition },\n values: {\n $set: [null],\n },\n },\n });\n } else if (\n relatedField.currentCondition.operations[0].operator ===\n ElementOperators.Exists\n ) {\n newFields = update(newFields, {\n [relatedFieldIndex]: {\n currentCondition: { $set: relatedField.availableConditions[0] },\n values: {\n $set: [null],\n },\n },\n });\n }\n }\n\n this.setState({\n fields: newFields,\n });\n\n this.setFormFieldValues(newFields);\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n const hasBetween = this.state.fields.some((field) =>\n [\n ModelAttributeValueType.IP,\n ModelAttributeValueType.DATE,\n ModelAttributeValueType.DATETIME,\n ].includes(field.attrValue.type as ModelAttributeValueType)\n );\n return this.state.fields.map((field, fieldIndex) => {\n let type: string;\n let style: React.CSSProperties;\n let attrValue: any = field.attrValue;\n let multiSelect = false;\n switch (field.attrValue.type) {\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n attrValue = {\n type: ModelAttributeValueType.STRING,\n };\n break;\n case ModelAttributeValueType.ENUM:\n case ModelAttributeValueType.ENUMS:\n type = FormControlTypeEnum.SELECT;\n multiSelect = true;\n break;\n case ModelAttributeValueType.DATETIME:\n style = { minWidth: \"auto\" };\n break;\n }\n //高级搜索这里即使是json格式,也用input输入框进行搜索\n if ((attrValue as any).type === \"json\") {\n attrValue = { ...attrValue, type: \"str\" };\n }\n return (\n <Col span={hasBetween ? 12 : 8} key={field.id}>\n <Form.Item label={field.name}>\n <Input.Group className={styles.conditionInputGroup} compact>\n <Select\n dropdownMatchSelectWidth={false}\n value={field.currentCondition.type}\n onChange={(value: ConditionType) =>\n this.onConditionChange(value, field, fieldIndex)\n }\n disabled={field.disabled}\n >\n {field.availableConditions.map((condition) => (\n <Select.Option value={condition.type} key={condition.type}>\n {condition.label}\n </Select.Option>\n ))}\n </Select>\n {field.values.map((value, valueIndex) => {\n const operation = field.currentCondition.operations[valueIndex];\n\n return (\n <React.Fragment\n key={`${field.currentCondition.type}-${operation.operator}`}\n >\n {valueIndex > 0 && (\n <Input\n className={styles.separatorInput}\n placeholder=\"~\"\n disabled\n />\n )}\n {getFieldDecorator(`${field.id}[${valueIndex}]`, {\n initialValue:\n operation.fixedValue === undefined ? value : \"\",\n })(\n operation.fixedValue === undefined && !field.disabled ? (\n <ModelAttributeFormControl\n type={type}\n attribute={{\n id: field.id,\n name: field.name,\n value: attrValue,\n }}\n objectId={this.props.modelData.objectId}\n multiSelect={multiSelect}\n onChange={(value: any) =>\n this.onValueChange(\n value,\n valueIndex,\n field,\n fieldIndex\n )\n }\n className={styles.conditionInput}\n style={style}\n />\n ) : (\n <Input disabled />\n )\n )}\n </React.Fragment>\n );\n })}\n </Input.Group>\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props?.autoSearch) this.props.autoSearch(this.state.fields);\n if (this.props.onSearch) {\n // 当过滤字段为relation并且过滤条件为ElementOperators.Exists的时候,发起后台请求的搜索queries与负责前端展示的query不同。需要额外处理。\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n let fieldQuery: Query = { [field.id]: expressions };\n let fieldQueryToShow: Query = { [field.id]: expressions };\n let hasValue = false;\n let structQueryId: string[];\n const isStruct = !!(field.attrValue as any).isStruct;\n if (isStruct) {\n structQueryId = field.attrValue.struct_define.map(\n (struct_item) => `${field.id}.${struct_item.id}`\n );\n }\n field.values.forEach((value, index) => {\n const operation = field.currentCondition.operations[index];\n const fieldId =\n field.isRelation && ElementOperators.Exists === operation.operator\n ? field.relationSideId\n : field.id;\n fieldQuery = { [fieldId]: expressions };\n\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n const multiValueSearchOperator = multiValueSearchOperators.find(\n (operator) => operator.comparisonOperator === operation.operator\n );\n if (multiValueSearchOperator) {\n let values: any[];\n if (\n field.attrValue.type === ModelAttributeValueType.ENUM ||\n field.attrValue.type === ModelAttributeValueType.ARR\n ) {\n values = value;\n } else if (typeof value === \"string\") {\n if (\n !ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE ||\n !value.includes('\"')\n ) {\n values = value\n .trim()\n .split(/\\s+/)\n .map((value) => convertValue(field.attrValue.type, value));\n } else {\n values = processAttrValueWithQuote(value, []);\n }\n } else {\n values = [value];\n }\n if (values.length) {\n if (isStruct) {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: flatten(\n values.map((value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n\n return structQueryId.map(\n (structId: string | number) => ({\n [structId]: {\n [operation.operator]: value,\n },\n })\n );\n })\n ),\n };\n } else {\n fieldQuery = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldId]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n }\n fieldQueryToShow = {\n [multiValueSearchOperator.logicalOperator]: values.map(\n (value) => {\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n return {\n [fieldIdToShow]: {\n [operation.operator]: value,\n },\n };\n }\n ),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n } else {\n value = convertValue(field.attrValue.type, value);\n if (operation.prefix) {\n value = operation.prefix + value;\n }\n if (operation.suffix) {\n value += operation.suffix;\n }\n expressions[operation.operator] = value;\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n if (this.props.autoSearch) this.props.autoSearch([]);\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.advancedSearch}>\n <Form\n layout=\"vertical\"\n className={styles.advancedSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const AdvancedSearch = Form.create<AdvancedSearchFormProps>({\n name: \"advanced_search\",\n})(AdvancedSearchForm);\n"],"file":"AdvancedSearch.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-libs/cmdb-instances",
3
- "version": "6.37.0",
3
+ "version": "6.37.1",
4
4
  "description": "> TODO: description",
5
5
  "homepage": "https://github.com/easyops-cn/next-libs/tree/master/libs/cmdb-instances",
6
6
  "license": "GPL-3.0",
@@ -50,5 +50,5 @@
50
50
  "immutability-helper": "^3.1.1",
51
51
  "marked": "^2.1.3"
52
52
  },
53
- "gitHead": "14043b43aefbf875bef2c25e65514d9da9c33f5e"
53
+ "gitHead": "c647451d2549afbeeec6e3ba88f825d9bfe74762"
54
54
  }