UNPKG

laif-ds

Version:

Design System di Laif con componenti React basati su principi di Atomic Design

69 lines (68 loc) 2.55 kB
"use client"; import { splice as g } from "../../micromark-util-chunked/index.js"; import { classifyCharacter as k } from "../../micromark-util-classify-character/index.js"; import { resolveAll as d } from "../../micromark-util-resolve-all/index.js"; function j(m) { let l = (m || {}).singleTilde; const f = { name: "strikethrough", tokenize: S, resolveAll: y }; return l == null && (l = !0), { text: { 126: f }, insideSpan: { null: [f] }, attentionMarkers: { null: [126] } }; function y(r, i) { let e = -1; for (; ++e < r.length; ) if (r[e][0] === "enter" && r[e][1].type === "strikethroughSequenceTemporary" && r[e][1]._close) { let t = e; for (; t--; ) if (r[t][0] === "exit" && r[t][1].type === "strikethroughSequenceTemporary" && r[t][1]._open && // If the sizes are the same: r[e][1].end.offset - r[e][1].start.offset === r[t][1].end.offset - r[t][1].start.offset) { r[e][1].type = "strikethroughSequence", r[t][1].type = "strikethroughSequence"; const s = { type: "strikethrough", start: Object.assign({}, r[t][1].start), end: Object.assign({}, r[e][1].end) }, u = { type: "strikethroughText", start: Object.assign({}, r[t][1].end), end: Object.assign({}, r[e][1].start) }, o = [["enter", s, i], ["enter", r[t][1], i], ["exit", r[t][1], i], ["enter", u, i]], h = i.parser.constructs.insideSpan.null; h && g(o, o.length, 0, d(h, r.slice(t + 1, e), i)), g(o, o.length, 0, [["exit", u, i], ["enter", r[e][1], i], ["exit", r[e][1], i], ["exit", s, i]]), g(r, t - 1, e - t + 3, o), e = t + o.length - 2; break; } } for (e = -1; ++e < r.length; ) r[e][1].type === "strikethroughSequenceTemporary" && (r[e][1].type = "data"); return r; } function S(r, i, e) { const t = this.previous, s = this.events; let u = 0; return o; function o(n) { return t === 126 && s[s.length - 1][1].type !== "characterEscape" ? e(n) : (r.enter("strikethroughSequenceTemporary"), h(n)); } function h(n) { const a = k(t); if (n === 126) return u > 1 ? e(n) : (r.consume(n), u++, h); if (u < 2 && !l) return e(n); const c = r.exit("strikethroughSequenceTemporary"), p = k(n); return c._open = !p || p === 2 && !!a, c._close = !a || a === 2 && !!p, i(n); } } } export { j as gfmStrikethrough };