{"version":3,"file":"conditionalFields.mjs","sources":["../../../admin/src/utils/conditionalFields.ts"],"sourcesContent":["import { type JsonLogicCondition } from '@strapi/admin/strapi-admin';\n\nimport { getIn } from './objects';\n\nconst CONDITIONAL_FIELD_STATIC_SUBSCRIPTION = '__strapi_conditional_static__';\nconst CONDITIONAL_FIELD_MULTI_DEP_SEPARATOR = '||';\n\nconst serializeConditionDependency = (value: unknown) => {\n try {\n return `${typeof value}:${JSON.stringify(value)}`;\n } catch {\n return `${typeof value}:${String(value)}`;\n }\n};\n\n/**\n * `null` means \"fallback to broad subscription\" because we couldn't safely infer\n * dependency paths from the condition.\n */\nconst getVarDependencyPath = (operand: unknown): string | null => {\n if (typeof operand === 'string') {\n return operand.length > 0 ? operand : null;\n }\n\n if (Array.isArray(operand)) {\n const [path] = operand;\n\n if (typeof path === 'string') {\n return path.length > 0 ? path : null;\n }\n\n return null;\n }\n\n return null;\n};\n\nconst getConditionDependencyPaths = (condition: JsonLogicCondition): string[] | null => {\n const dependencies = new Set();\n\n const collectDependencies = (value: unknown): boolean => {\n if (Array.isArray(value)) {\n return value.every(collectDependencies);\n }\n\n if (value === null || typeof value !== 'object') {\n return true;\n }\n\n return Object.entries(value).every(([key, operand]) => {\n if (key === 'var') {\n const dependencyPath = getVarDependencyPath(operand);\n\n if (dependencyPath === null) {\n return false;\n }\n\n if (dependencyPath) {\n dependencies.add(dependencyPath);\n }\n\n return true;\n }\n\n return collectDependencies(operand);\n });\n };\n\n return collectDependencies(condition) ? [...dependencies].sort() : null;\n};\n\nconst getConditionDependencySubscriptionValue = (\n values: unknown,\n conditionDependencyPaths: string[] | null\n) => {\n if (conditionDependencyPaths === null) {\n return values;\n }\n\n if (conditionDependencyPaths.length === 0) {\n return CONDITIONAL_FIELD_STATIC_SUBSCRIPTION;\n }\n\n if (conditionDependencyPaths.length === 1) {\n return serializeConditionDependency(getIn(values, conditionDependencyPaths[0]));\n }\n\n return conditionDependencyPaths\n .map((path) => serializeConditionDependency(getIn(values, path)))\n .join(CONDITIONAL_FIELD_MULTI_DEP_SEPARATOR);\n};\n\nexport {\n CONDITIONAL_FIELD_MULTI_DEP_SEPARATOR,\n CONDITIONAL_FIELD_STATIC_SUBSCRIPTION,\n getConditionDependencyPaths,\n getConditionDependencySubscriptionValue,\n getVarDependencyPath,\n serializeConditionDependency,\n};\nexport type { JsonLogicCondition };\n"],"names":["CONDITIONAL_FIELD_STATIC_SUBSCRIPTION","CONDITIONAL_FIELD_MULTI_DEP_SEPARATOR","serializeConditionDependency","value","JSON","stringify","String","getVarDependencyPath","operand","length","Array","isArray","path","getConditionDependencyPaths","condition","dependencies","Set","collectDependencies","every","Object","entries","key","dependencyPath","add","sort","getConditionDependencySubscriptionValue","values","conditionDependencyPaths","getIn","map","join"],"mappings":"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"}