diff --git a/app/Providers/DirectiveServiceProvider.php b/app/Providers/DirectiveServiceProvider.php deleted file mode 100644 index 4d1e09e..0000000 --- a/app/Providers/DirectiveServiceProvider.php +++ /dev/null @@ -1,68 +0,0 @@ -registerScopeDirective(); - $this->registerInitialsDirective(); - } - - private function registerInitialsDirective(): void - { - Blade::directive('initials', fn ($expression) => ""); - } - - private function registerScopeDirective(): void - { - /** - * All credits from this blade directive goes to Konrad Kalemba. - * Just copied and modified for my very specific use case. - * - * https://github.com/konradkalemba/blade-components-scoped-slots - */ - Blade::directive('scope', function ($expression) { - // Split the expression by `top-level` commas (not in parentheses) - $directiveArguments = preg_split("/,(?![^\(\(]*[\)\)])/", $expression); - $directiveArguments = array_map('trim', $directiveArguments); - - // PHP 8.5 Safe Unpacking (Prevents "Undefined array key" crashes) - $name = $directiveArguments[0] ?? "''"; - $functionArguments = $directiveArguments[1] ?? ''; - - // Build function "uses" to inject extra external variables - $uses = Arr::except(array_flip($directiveArguments), [$name, $functionArguments]); - $uses = array_flip($uses); - $uses[] = '$__env'; - $uses[] = '$__bladeCompiler'; - $uses = implode(',', $uses); - - /** - * Slot names can`t contains dot , eg: `user.city`. - * So we convert `user.city` to `user___city` - * - * Later, on component it will be replaced back. - */ - $name = str_replace('.', '___', $name); - - // PHP 8.5 Safe Loop Check - return "slot({$name}, function({$functionArguments}) use ({$uses}) { \$loop = !empty(\$__env->getLoopStack()) ? (object) \$__env->getLoopStack()[0] : null; ?>"; - }); - - Blade::directive('endscope', fn () => ''); - } -} diff --git a/bootstrap/providers.php b/bootstrap/providers.php index 6e73c74..e35f6c4 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -5,5 +5,4 @@ return [ App\Providers\AppServiceProvider::class, App\Providers\FortifyServiceProvider::class, - App\Providers\DirectiveServiceProvider::class, ];