UNPKG

datocms-structured-text-utils

Version:

A set of Typescript types and helpers to work with DatoCMS Structured Text fields.

113 lines 3.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isEmptyDocument = exports.isDocument = exports.isStructuredText = exports.isNode = exports.isNodeType = exports.isThematicBreak = exports.isInlineItem = exports.isItemLink = exports.isLink = exports.isCode = exports.isInlineBlock = exports.isBlock = exports.isBlockquote = exports.isListItem = exports.isList = exports.isParagraph = exports.isRoot = exports.isSpan = exports.isHeading = exports.isInlineNode = exports.hasChildren = void 0; var definitions_1 = require("./definitions"); function hasChildren(node) { return 'children' in node; } exports.hasChildren = hasChildren; function isInlineNode(node) { return definitions_1.inlineNodeTypes.includes(node.type); } exports.isInlineNode = isInlineNode; function isHeading(node) { return node.type === definitions_1.headingNodeType; } exports.isHeading = isHeading; function isSpan(node) { return node.type === definitions_1.spanNodeType; } exports.isSpan = isSpan; function isRoot(node) { return node.type === definitions_1.rootNodeType; } exports.isRoot = isRoot; function isParagraph(node) { return node.type === definitions_1.paragraphNodeType; } exports.isParagraph = isParagraph; function isList(node) { return node.type === definitions_1.listNodeType; } exports.isList = isList; function isListItem(node) { return node.type === definitions_1.listItemNodeType; } exports.isListItem = isListItem; function isBlockquote(node) { return node.type === definitions_1.blockquoteNodeType; } exports.isBlockquote = isBlockquote; function isBlock(node) { return node.type === definitions_1.blockNodeType; } exports.isBlock = isBlock; function isInlineBlock(node) { return node.type === definitions_1.inlineBlockNodeType; } exports.isInlineBlock = isInlineBlock; function isCode(node) { return node.type === definitions_1.codeNodeType; } exports.isCode = isCode; function isLink(node) { return node.type === definitions_1.linkNodeType; } exports.isLink = isLink; function isItemLink(node) { return node.type === definitions_1.itemLinkNodeType; } exports.isItemLink = isItemLink; function isInlineItem(node) { return node.type === definitions_1.inlineItemNodeType; } exports.isInlineItem = isInlineItem; function isThematicBreak(node) { return node.type === definitions_1.thematicBreakNodeType; } exports.isThematicBreak = isThematicBreak; function isObject(obj) { return Boolean(typeof obj === 'object' && obj); } function isNodeType(value) { return definitions_1.allowedNodeTypes.includes(value); } exports.isNodeType = isNodeType; function isNode(obj) { return Boolean(isObject(obj) && 'type' in obj && typeof obj.type === 'string' && isNodeType(obj.type)); } exports.isNode = isNode; function isStructuredText(obj) { return Boolean(isObject(obj) && 'value' in obj && isDocument(obj.value)); } exports.isStructuredText = isStructuredText; function isDocument(obj) { return Boolean(isObject(obj) && 'schema' in obj && 'document' in obj && obj.schema === 'dast'); } exports.isDocument = isDocument; function isEmptyDocument(obj) { if (!obj) { return true; } var document = isStructuredText(obj) && isDocument(obj.value) ? obj.value : isDocument(obj) ? obj : null; if (!document) { throw new Error('Passed object is neither null, a Structured Text value or a DAST document'); } return (document.document.children.length === 1 && document.document.children[0].type === 'paragraph' && document.document.children[0].children.length === 1 && document.document.children[0].children[0].type === 'span' && document.document.children[0].children[0].value === ''); } exports.isEmptyDocument = isEmptyDocument; //# sourceMappingURL=guards.js.map