@php $blocks = $blocks ?? []; $titleText = $titleText ?? null; $uid = 'syn_stack_' . uniqid(); $preparedBlocks = []; $people = []; $peopleIndex = []; $personSlug = function ($name) { $name = trim((string) $name); if ($name === '') { return ''; } return \Illuminate\Support\Str::slug(mb_strtolower($name, 'UTF-8'), '_'); }; $pairKey = function ($leftSlug, $rightSlug) { $parts = [(string) $leftSlug, (string) $rightSlug]; sort($parts); return implode('__vs__', $parts); }; foreach (array_values($blocks) as $idx => $b) { $leftName = trim((string) ($b['personA']['title'] ?? ($b['personA']['name'] ?? ''))); $rightName = trim((string) ($b['personB']['title'] ?? ($b['personB']['name'] ?? ''))); if ($leftName === '' || $rightName === '') { if (!empty($b['title']) && str_contains($b['title'], '×')) { [$leftFromTitle, $rightFromTitle] = array_map('trim', explode('×', $b['title'], 2)); $leftName = $leftName !== '' ? $leftName : $leftFromTitle; $rightName = $rightName !== '' ? $rightName : $rightFromTitle; } } $leftName = $leftName !== '' ? $leftName : ('Persona ' . ($idx + 1)); $rightName = $rightName !== '' ? $rightName : ('Persona ' . ($idx + 2)); $leftSlug = $personSlug($leftName); $rightSlug = $personSlug($rightName); if ($leftSlug === '' || $rightSlug === '') { continue; } if (!isset($peopleIndex[$leftSlug])) { $peopleIndex[$leftSlug] = true; $people[] = ['slug' => $leftSlug, 'name' => $leftName]; } if (!isset($peopleIndex[$rightSlug])) { $peopleIndex[$rightSlug] = true; $people[] = ['slug' => $rightSlug, 'name' => $rightName]; } $preparedBlocks[] = array_merge($b, [ '_leftName' => $leftName, '_rightName' => $rightName, '_leftSlug' => $leftSlug, '_rightSlug' => $rightSlug, '_pairKey' => $pairKey($leftSlug, $rightSlug), ]); } $defaultLeft = $preparedBlocks[0]['_leftSlug'] ?? ($people[0]['slug'] ?? ''); $defaultRight = $preparedBlocks[0]['_rightSlug'] ?? ($people[1]['slug'] ?? ''); $defaultPairKey = $pairKey($defaultLeft, $defaultRight); @endphp @if (!empty($preparedBlocks))
{{ $titleText ?: '' }}
@if (count($people) > 1)
@endif @foreach ($preparedBlocks as $idx => $b)
@if (!empty($b['grid'])) @include('frontend.panel.tabs.synastry-grid', [ 'synastryGrid' => $b['grid'] ?? null, 'personA' => $b['personA'] ?? [], 'personB' => $b['personB'] ?? [], 'hideHeader' => true, 'wrapCard' => false, ]) @else
{{ t('aspect-grid-not-found') }}
@endif
@endforeach
@endif