enabled = $params['enabled'] ? '__return_true' : '__return_false'; } else { $this->enabled = $params['enabled']; } } else if ( !empty($this->mainBinding) ) { $this->enabled = function (?EvaluationContext $context = null) { if ( $context ) { return $context->resolve($this->mainBinding) ->map(fn(Resolution $r) => $r->isEditableByUser($context)) ->getOrElse(true); } else if ( $this->mainBinding instanceof AbstractSetting ) { return $this->mainBinding->isEditableByUser(); } return true; }; } } /** * @param EvaluationContext|null $context * @return bool */ public function isEnabled(?EvaluationContext $context = null) { return call_user_func($this->enabled, $context); } protected function getKoEnableBinding() { if ( $this->enabled instanceof SettingCondition ) { return ['enable' => $this->enabled->getJsKoExpression()]; } return $this->isEnabled() ? [] : ['enable' => false]; } protected function serializeConditionForJs() { if ( $this->enabled instanceof SettingCondition ) { return $this->enabled->serializeForJs(); } return $this->isEnabled(); } }