UNPKG

@curvenote/schema

Version:

Schema and markdown parser for @curvenote/editor

75 lines 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toTex = exports.toMarkdown = exports.formatDatetime = exports.getDatetime = void 0; const date_fns_1 = require("date-fns"); const types_1 = require("./types"); function getDatetime(object) { if (object == null) { return new Date(); } if (object instanceof Date) { return object; } if (typeof object === 'string') { return new Date(object); } // eslint-disable-next-line no-console console.error(`Could not parse date: ${object}`); return new Date(); } exports.getDatetime = getDatetime; function formatDatetime(datetime) { try { const d = getDatetime(datetime); const f = (0, date_fns_1.format)(d, 'LLL d, yyyy'); return { d, f }; } catch (e) { return formatDatetime(new Date()); } } exports.formatDatetime = formatDatetime; const time = { group: types_1.NodeGroups.inline, inline: true, marks: '', draggable: true, attrs: { datetime: { default: null }, }, toDOM(node) { const { d, f } = formatDatetime(node.attrs.datetime); return ['time', { datetime: d.toISOString() }, f]; }, parseDOM: [ { tag: 'time', getAttrs(dom) { return { datetime: getDatetime(dom.getAttribute('datetime')), }; }, }, ], attrsFromMyst: (token) => ({ datetime: getDatetime(token.time) }), toMyst: (props) => { const { d, f } = formatDatetime(props.datetime); return { type: 'time', time: d.toISOString(), value: f, }; }, }; const toMarkdown = (state, node) => { const { f } = formatDatetime(node.attrs.datetime); state.write(f); }; exports.toMarkdown = toMarkdown; const toTex = (state, node) => { const { f } = formatDatetime(node.attrs.datetime); state.write(f); }; exports.toTex = toTex; exports.default = time; //# sourceMappingURL=time.js.map