( subBlocks: SubBlockConfig[], values: Record<string, unknown>, canonicalIndex: CanonicalIndex )
| 301 | * Check if any advanced-only or canonical advanced values are present. |
| 302 | */ |
| 303 | export function hasAdvancedValues( |
| 304 | subBlocks: SubBlockConfig[], |
| 305 | values: Record<string, unknown>, |
| 306 | canonicalIndex: CanonicalIndex |
| 307 | ): boolean { |
| 308 | const checkedCanonical = new Set<string>() |
| 309 | |
| 310 | for (const subBlock of subBlocks) { |
| 311 | const canonicalId = canonicalIndex.canonicalIdBySubBlockId[subBlock.id] |
| 312 | if (canonicalId) { |
| 313 | const group = canonicalIndex.groupsById[canonicalId] |
| 314 | if (group && isCanonicalPair(group) && !checkedCanonical.has(canonicalId)) { |
| 315 | checkedCanonical.add(canonicalId) |
| 316 | const { advancedValue } = getCanonicalValues(group, values) |
| 317 | if (isNonEmptyValue(advancedValue)) return true |
| 318 | } |
| 319 | continue |
| 320 | } |
| 321 | |
| 322 | if (subBlock.mode === 'advanced' && isNonEmptyValue(values[subBlock.id])) { |
| 323 | return true |
| 324 | } |
| 325 | } |
| 326 | |
| 327 | return false |
| 328 | } |
| 329 | |
| 330 | /** |
| 331 | * Determine whether a subblock is visible based on mode and canonical swaps. |
no test coverage detected