UNPKG

podlite

Version:

Podlite - a lightweight block-based markup language

74 lines 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.frozenIds = exports.cleanIds = void 0; const schema_1 = require("@podlite/schema"); const nanoid_1 = require("nanoid"); /** * Clean ids from tree * @returns */ const cleanIds = (src = { skipChain: 0, podMode: 1 }) => tree => { const transformerBlocks = (0, schema_1.makeTransformer)({ '*': (node, ctx, visiter) => { if ('id' in node) { if ('content' in node) { node.content = visiter(node.content, ctx); } const { id, ...rest } = node; return { ...rest }; } return node; }, }); return transformerBlocks(tree, {}); }; exports.cleanIds = cleanIds; /** * Add set id to 'id' to each blocks */ const frozenIds = (src = { skipChain: 0, podMode: 1 }) => tree => { const transformerBlocks = (0, schema_1.makeTransformer)({ '*': (node, ctx, visiter) => { if ('id' in node) { if ('content' in node) { node.content = visiter(node.content, ctx); } const { id, ...rest } = node; return { ...rest, id: 'id' }; } return node; }, }); return transformerBlocks(tree, {}); }; exports.frozenIds = frozenIds; const middleware = () => tree => { const transformerBlocks = (0, schema_1.makeTransformer)({ '*': (node, ctx, visiter) => { const addIdField = (node) => { if (typeof node === 'object' && 'type' in node && node.type == 'block') { if (node.name == 'caption') { return node; } else if (node.name == 'head') { return { ...node, id: (0, schema_1.getTextContentFromNode)(node).trim() }; } else { return { ...node, id: (0, nanoid_1.nanoid)() }; } } return node; }; const processContent = (node) => { if (typeof node === 'object' && 'content' in node) { return { ...node, content: visiter(node.content, ctx) }; } return node; }; return processContent(addIdField(node)); }, }); return transformerBlocks(tree, {}); }; exports.default = middleware; //# sourceMappingURL=ids.js.map