UNPKG

nitropage

Version:

A free and open source, extensible visual page builder based on SolidStart.

44 lines (37 loc) 1.09 kB
import { isEqual, uniq } from "es-toolkit"; import { ElementDataRecord } from "../../../../../types"; import { logger } from "../../log"; import { DEBUG_PAGE_UPDATE } from "../../util"; export const omitDisabledElementData = function ( elementData: ElementDataRecord, ) { const filteredData: ElementDataRecord = {}; for (const [key, data] of Object.entries(elementData)) { if (!data.override) { continue; } filteredData[key] = data; } return filteredData; }; export const mergeElementData = ( target: ElementDataRecord = {}, next: ElementDataRecord, prev: ElementDataRecord = {}, logTag: string, ) => { let dirty = false; const result: ElementDataRecord = {}; const keys = uniq([...Object.keys(next), ...Object.keys(prev)]); for (const key of keys) { const nextItem = next[key]; if (isEqual(nextItem, prev[key])) { result[key] = target[key]; continue; } dirty = true; if (DEBUG_PAGE_UPDATE) logger.info(`Update ${logTag} element data`, key); result[key] = nextItem; } return [result, dirty] as const; };