laif-ds
Version:
Design System di Laif con componenti React basati su principi di Atomic Design
225 lines (224 loc) • 5.54 kB
JavaScript
"use client";
import { markdownLineEnding as V } from "../../micromark-util-character/index.js";
import { push as W, splice as X } from "../../micromark-util-chunked/index.js";
import { resolveAll as Y } from "../../micromark-util-resolve-all/index.js";
function re(d, l, o) {
let n = {
_bufferIndex: -1,
_index: 0,
line: o && o.line || 1,
column: o && o.column || 1,
offset: o && o.offset || 0
};
const f = {}, u = [];
let s = [], h = [];
const S = {
attempt: m(J),
check: m(P),
consume: D,
enter: G,
exit: H,
interrupt: m(P, {
interrupt: !0
})
}, t = {
code: null,
containerState: {},
defineSkip: R,
events: [],
now: v,
parser: d,
previous: null,
sliceSerialize: M,
sliceStream: j,
write: L
};
let O = l.tokenize.call(t, S);
return l.resolveAll && u.push(l), t;
function L(e) {
return s = W(s, e), q(), s[s.length - 1] !== null ? [] : (T(l, 0), t.events = Y(u, t.events, t), t.events);
}
function M(e, r) {
return $(j(e), r);
}
function j(e) {
return Z(s, e);
}
function v() {
const {
_bufferIndex: e,
_index: r,
line: c,
column: a,
offset: p
} = n;
return {
_bufferIndex: e,
_index: r,
line: c,
column: a,
offset: p
};
}
function R(e) {
f[e.line] = e.column, g();
}
function q() {
let e;
for (; n._index < s.length; ) {
const r = s[n._index];
if (typeof r == "string")
for (e = n._index, n._bufferIndex < 0 && (n._bufferIndex = 0); n._index === e && n._bufferIndex < r.length; )
z(r.charCodeAt(n._bufferIndex));
else
z(r);
}
}
function z(e) {
O = O(e);
}
function D(e) {
V(e) ? (n.line++, n.column = 1, n.offset += e === -3 ? 2 : 1, g()) : e !== -1 && (n.column++, n.offset++), n._bufferIndex < 0 ? n._index++ : (n._bufferIndex++, n._bufferIndex === // Points w/ non-negative `_bufferIndex` reference
// strings.
/** @type {string} */
s[n._index].length && (n._bufferIndex = -1, n._index++)), t.previous = e;
}
function G(e, r) {
const c = r || {};
return c.type = e, c.start = v(), t.events.push(["enter", c, t]), h.push(c), c;
}
function H(e) {
const r = h.pop();
return r.end = v(), t.events.push(["exit", r, t]), r;
}
function J(e, r) {
T(e, r.from);
}
function P(e, r) {
r.restore();
}
function m(e, r) {
return c;
function c(a, p, _) {
let C, k, B, y;
return Array.isArray(a) ? (
/* c8 ignore next 1 */
A(a)
) : "tokenize" in a ? (
// Looks like a construct.
A([
/** @type {Construct} */
a
])
) : N(a);
function N(i) {
return w;
function w(x) {
const b = x !== null && i[x], I = x !== null && i.null, U = [
// To do: add more extension tests.
/* c8 ignore next 2 */
...Array.isArray(b) ? b : b ? [b] : [],
...Array.isArray(I) ? I : I ? [I] : []
];
return A(U)(x);
}
}
function A(i) {
return C = i, k = 0, i.length === 0 ? _ : E(i[k]);
}
function E(i) {
return w;
function w(x) {
return y = K(), B = i, i.partial || (t.currentConstruct = i), i.name && t.parser.constructs.disable.null.includes(i.name) ? F() : i.tokenize.call(
// If we do have fields, create an object w/ `context` as its
// prototype.
// This allows a “live binding”, which is needed for `interrupt`.
r ? Object.assign(Object.create(t), r) : t,
S,
Q,
F
)(x);
}
}
function Q(i) {
return e(B, y), p;
}
function F(i) {
return y.restore(), ++k < C.length ? E(C[k]) : _;
}
}
}
function T(e, r) {
e.resolveAll && !u.includes(e) && u.push(e), e.resolve && X(t.events, r, t.events.length - r, e.resolve(t.events.slice(r), t)), e.resolveTo && (t.events = e.resolveTo(t.events, t));
}
function K() {
const e = v(), r = t.previous, c = t.currentConstruct, a = t.events.length, p = Array.from(h);
return {
from: a,
restore: _
};
function _() {
n = e, t.previous = r, t.currentConstruct = c, t.events.length = a, h = p, g();
}
}
function g() {
n.line in f && n.column < 2 && (n.column = f[n.line], n.offset += f[n.line] - 1);
}
}
function Z(d, l) {
const o = l.start._index, n = l.start._bufferIndex, f = l.end._index, u = l.end._bufferIndex;
let s;
if (o === f)
s = [d[o].slice(n, u)];
else {
if (s = d.slice(o, f), n > -1) {
const h = s[0];
typeof h == "string" ? s[0] = h.slice(n) : s.shift();
}
u > 0 && s.push(d[f].slice(0, u));
}
return s;
}
function $(d, l) {
let o = -1;
const n = [];
let f;
for (; ++o < d.length; ) {
const u = d[o];
let s;
if (typeof u == "string")
s = u;
else switch (u) {
case -5: {
s = "\r";
break;
}
case -4: {
s = `
`;
break;
}
case -3: {
s = `\r
`;
break;
}
case -2: {
s = l ? " " : " ";
break;
}
case -1: {
if (!l && f) continue;
s = " ";
break;
}
default:
s = String.fromCharCode(u);
}
f = u === -2, n.push(s);
}
return n.join("");
}
export {
re as createTokenizer
};