feat: lit/divi-colors-set und lit/divi-variables-set in der Divi-Integration; je ein geteilter Farben- und Variablen-Adapter

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Jan-Niclas Loosen
2026-10-19 14:24:55 +02:00
co-authored by Claude Sonnet 5.5
parent 88a939787d
commit 0893b7e184
4 changed files with 29 additions and 4 deletions
+23 -3
View File
@@ -16,6 +16,7 @@ use LIT\MCP\Integrations\Divi\BlockTree\Parser;
use LIT\MCP\Integrations\Divi\Design\ColorRestorePlanner;
use LIT\MCP\Integrations\Divi\Design\DesignSystemReader;
use LIT\MCP\Integrations\Divi\Design\DesignSystemWriter;
use LIT\MCP\Integrations\Divi\Design\DiviColorsSetAbility;
use LIT\MCP\Integrations\Divi\Design\DiviDesignSystemAbility;
use LIT\MCP\Integrations\Divi\Design\DesignChange;
use LIT\MCP\Integrations\Divi\Design\DesignRights;
@@ -28,6 +29,7 @@ use LIT\MCP\Integrations\Divi\Design\GlobalVariablesAdapter;
use LIT\MCP\Integrations\Divi\Design\DiviPresetsAssignAbility;
use LIT\MCP\Integrations\Divi\Design\DiviPresetsDeleteAbility;
use LIT\MCP\Integrations\Divi\Design\DiviPresetsSetAbility;
use LIT\MCP\Integrations\Divi\Design\DiviVariablesSetAbility;
use LIT\MCP\Integrations\Divi\Design\PageRewriter;
use LIT\MCP\Integrations\Divi\Design\PresetAssignment;
use LIT\MCP\Integrations\Divi\Design\PresetComposer;
@@ -91,6 +93,10 @@ final class DiviIntegration implements Integration, Bootable
private ThemeBuilderAccess $themeBuilderAccess;
private DesignSystemWriter $designWriter;
private GlobalColorsAdapter $colorsAdapter;
private GlobalVariablesAdapter $variablesAdapter;
/** @var (Closure(): bool)|null Whether lit/divi-insert is enabled (ruling P9, E9, audit M2); null = always. */
private ?Closure $diviWritable;
@@ -114,6 +120,8 @@ final class DiviIntegration implements Integration, Bootable
$this->modules = new DiviModules();
$this->design = new DesignSystemReader();
$this->designWriter = new DesignSystemWriter();
$this->colorsAdapter = new GlobalColorsAdapter();
$this->variablesAdapter = new GlobalVariablesAdapter();
$this->diviWritable = $this->gate(static fn (ToolAvailability $t): bool => $t->allows('lit/divi-insert'));
$this->libraryInsertable = $this->gate(
static fn (ToolAvailability $t): bool => $t->allows('lit/library-insert')
@@ -270,8 +278,8 @@ final class DiviIntegration implements Integration, Bootable
$this->designChange(),
new SnapshotStore(),
new PresetRestorePlanner($this->designWriter, DesignRights::unfilteredHtml()),
new ColorRestorePlanner($this->designWriter, new GlobalColorsAdapter()),
new VariableRestorePlanner($this->designWriter, new GlobalVariablesAdapter())
new ColorRestorePlanner($this->designWriter, $this->colorsAdapter),
new VariableRestorePlanner($this->designWriter, $this->variablesAdapter)
),
new DiviPresetsAssignAbility(
$this->designWriter,
@@ -280,12 +288,24 @@ final class DiviIntegration implements Integration, Bootable
),
new DiviDesignDetachAbility(
$this->designWriter,
new GlobalVariablesAdapter(),
$this->variablesAdapter,
$this->designChange(),
$this->globalUsages(),
$this->pageRewriter($loader),
DesignRights::unfilteredHtml()
),
new DiviColorsSetAbility(
$this->designWriter,
$this->colorsAdapter,
$this->designChange(),
$this->globalUsages()
),
new DiviVariablesSetAbility(
$this->designWriter,
$this->variablesAdapter,
$this->designChange(),
$this->globalUsages()
),
];
}