public function data()
{
$data = $this->data;
$defaults = $this->defaults();
if (lab::$mode == 'preview') {
$callback = a::get($this->config(), 'preview');
$previewData = (array) call($callback);
$defaults = array_merge($defaults, $previewData);
}
foreach ($defaults as $key => $value) {
if (!isset($this->data[$key]) and !isset(tpl::$data[$key])) {
if (is_a($value, 'Closure')) {
$data[$key] = call($value, [$this]);
} else {
$data[$key] = $value;
}
} else {
if (isset($this->data[$key])) {
$data[$key] = $this->data[$key];
} else {
$data[$key] = tpl::$data[$key];
}
}
}
return $data;
}