UNPKG

@silexlabs/grapesjs-data-source

Version:
97 lines 3.09 kB
"use strict"; /** * Liquid Filter Engine * Centralized management of Liquid template filters */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createLiquidEngine = createLiquidEngine; exports.validateFilter = validateFilter; exports.validateFilters = validateFilters; exports.addFiltersToEngine = addFiltersToEngine; exports.removeFiltersFromEngine = removeFiltersFromEngine; exports.initializeFilters = initializeFilters; const liquid_1 = __importDefault(require("./liquid")); /** * Create a Liquid engine with the given filters */ function createLiquidEngine(filters) { const filterMap = new Map(filters.map(f => [f.id, f])); return { filters: filterMap, applyFilter(value, filterId, options) { const filter = filterMap.get(filterId); if (!filter) { throw new Error(`Liquid filter not found: ${filterId}`); } return filter.apply(value, options); }, hasFilter(filterId) { return filterMap.has(filterId); }, }; } /** * Validate that required filter fields are present */ function validateFilter(filter) { if (!filter.id) throw new Error('Filter id is required'); if (!filter.label) throw new Error('Filter label is required'); if (!filter.validate) throw new Error('Filter validate is required'); if (!filter.output) throw new Error('Filter output is required'); if (!filter.apply) throw new Error('Filter apply is required'); } /** * Validate multiple filters */ function validateFilters(filters) { filters.forEach(validateFilter); } /** * Add filters to an existing engine */ function addFiltersToEngine(engine, filters) { validateFilters(filters); const allFilters = [...engine.filters.values(), ...filters]; return createLiquidEngine(allFilters); } /** * Remove filters from an existing engine */ function removeFiltersFromEngine(engine, filterIds) { const remaining = [...engine.filters.values()].filter(f => !filterIds.includes(f.id)); return createLiquidEngine(remaining); } /** * Initialize filters from options */ function initializeFilters(editor, options) { if (typeof options.filters === 'string') { return [ ...(0, liquid_1.default)(editor), ]; } else { return options.filters .flatMap((filter) => { if (typeof filter === 'string') { switch (filter) { case 'liquid': return (0, liquid_1.default)(editor); default: throw new Error(`Unknown filters ${filter}`); } } else { return [Object.assign(Object.assign({}, filter), { type: 'filter' })]; } }) .map((filter) => (Object.assign(Object.assign({}, filter), { type: 'filter' }))); } } //# sourceMappingURL=index.js.map