@npio/internals
Version:
A free visual website editor, powered with your own SolidJS components.
56 lines (48 loc) • 1.69 kB
text/typescript
import { BlueprintDefaults, Config, Element, Preset, State } from "../types";
export let lookupRteToolbar = false;
export const setLookupRteToolbar = function (value: boolean) {
lookupRteToolbar = value;
};
export const getElementData = function (
element: Element,
state: State,
declaration: Config,
property: string,
preset?: Preset,
defaults?: BlueprintDefaults[0],
) {
const blueprint = element.blueprintId
? declaration.blueprints[element.blueprintId]
: undefined;
const getter = blueprint?.data[property]?.getter;
if (element.data?.[property]?.override) {
const value = element.data[property].value;
return getter ? getter(value, state) : value;
}
if (element.presetId) {
const p = preset ?? state.presets[element.presetId];
if (p && p.data?.[property]?.override) {
const value = p.data[property].value;
return getter ? getter(value, state) : value;
}
}
const type = element.blueprintId;
if (!type) {
return;
}
/*
const pageSettings = state.blueprintDefaults.page[type];
if (pageSettings && pageSettings[property]?.override) {
// console.log('page', type, property, element.id, pageSettings[property].value)
const value = pageSettings[property].value;
return getter ? getter(value, state) : value;
}
*/
const projectSettings = defaults ?? state.blueprintDefaults.project[type];
// console.log('global', type, property, element.id, globalSettings?.[property]?.value)
const value = projectSettings?.[property]?.value;
const defaultValue = blueprint?.data[property]?.defaultValue;
return getter
? getter(value != null ? value : defaultValue?.(), state)
: value;
};