@diplodoc/client 3.3.0 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14866,9 +14866,22 @@ function TabsRuntime(props = {}) {
14866
14866
  var __defProp = Object.defineProperty;
14867
14867
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
14868
14868
  var __getOwnPropNames = Object.getOwnPropertyNames;
14869
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
14869
14870
  var __getProtoOf = Object.getPrototypeOf;
14870
14871
  var __hasOwnProp = Object.prototype.hasOwnProperty;
14872
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
14871
14873
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14874
+ var __spreadValues = (a, b) => {
14875
+ for (var prop in b || (b = {}))
14876
+ if (__hasOwnProp.call(b, prop))
14877
+ __defNormalProp(a, prop, b[prop]);
14878
+ if (__getOwnPropSymbols)
14879
+ for (var prop of __getOwnPropSymbols(b)) {
14880
+ if (__propIsEnum.call(b, prop))
14881
+ __defNormalProp(a, prop, b[prop]);
14882
+ }
14883
+ return a;
14884
+ };
14872
14885
  var __commonJS = (cb, mod) => function __require() {
14873
14886
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
14874
14887
  };
@@ -14970,38 +14983,40 @@ function TabsRuntime(props = {}) {
14970
14983
 
14971
14984
  // node_modules/@diplodoc/tabs-extension/build/runtime/index.js
14972
14985
  (() => {
14973
- var W = "yfm-tabs", R = "yfm-tab", O = "yfm-tab-panel", L = "yfm-tab-list", r = "active";
14974
- var T = "data-diplodoc-group", G = "data-diplodoc-key", x = "data-diplodoc-variant", v = "data-diplodoc-id", H = "defaultTabsGroup-";
14975
- var h = "data-diplodoc-forced";
14976
- var N = "yfm-tabs-dropdown-select";
14977
- var U = "yfm-tabs-vertical";
14978
- var F = Symbol.for("diplodocTabs");
14979
- var y = (s) => {
14980
- let t = s.composedPath();
14981
- return Array.isArray(t) && t.length > 0 ? t[0] : s.target;
14982
- }, Z = (s) => {
14983
- let t = y(s);
14986
+ var x = "yfm-tabs", H = "yfm-tab", F = "yfm-tab-panel", D = "yfm-tab-list", l = "active";
14987
+ var B = "data-diplodoc-group", G = "data-diplodoc-key", y = "data-diplodoc-variant", U = "data-diplodoc-id", L = "defaultTabsGroup-";
14988
+ var R = "data-diplodoc-forced";
14989
+ var w = "yfm-tabs-dropdown-select";
14990
+ var W = "yfm-tabs-vertical";
14991
+ var O = ((g) => (g.Regular = "regular", g.Radio = "radio", g.Dropdown = "dropdown", g.Accordion = "accordion", g))(O || {}), X = Symbol.for("diplodocTabs");
14992
+ var f = (C) => {
14993
+ let t = C.composedPath();
14994
+ return Array.isArray(t) && t.length > 0 ? t[0] : C.target;
14995
+ }, Z = (C) => {
14996
+ let t = f(C);
14984
14997
  return !t || !t.matches;
14985
- }, Q = (s) => Math.abs(s.scrollHeight - s.clientHeight) > 1 ? s : s.parentElement ? Q(s.parentElement) : void 0, X = (s, t) => {
14986
- let e = s.getBoundingClientRect(), g = t.getBoundingClientRect();
14987
- return { top: e.top - g.top, left: e.left - g.left, scrollTop: t.scrollTop, scrollLeft: t.scrollLeft };
14998
+ }, v = (C) => Math.abs(C.scrollHeight - C.clientHeight) > 1 ? C : C.parentElement ? v(C.parentElement) : void 0, Q = (C, t) => {
14999
+ let e = C.getBoundingClientRect(), o = t.getBoundingClientRect();
15000
+ return { top: e.top - o.top, left: e.left - o.left, scrollTop: t.scrollTop, scrollLeft: t.scrollLeft };
14988
15001
  };
14989
- var n = { TABS: `.${W}`, TAB_LIST: `.${L}`, TAB: `.${R}`, TAB_PANEL: `.${O}`, VERTICAL_TABS: `.${U}` }, f = class {
14990
- constructor(t) {
15002
+ var n = { TABS: `.${x}`, TAB_LIST: `.${D}`, TAB: `.${H}`, TAB_PANEL: `.${F}`, VERTICAL_TABS: `.${W}` }, h = class {
15003
+ constructor(t, e = {}) {
14991
15004
  this._onSelectTabHandlers = /* @__PURE__ */ new Set();
14992
- this._document = t, this._document.addEventListener("click", (e) => {
14993
- let g = y(e);
14994
- if (e.target && this.hideAllDropdown(e.target), Z(e)) return;
15005
+ this._currentPageTabGroups = [];
15006
+ this._isRestoringTabs = false;
15007
+ this._document = t, this._options = Object.assign({ saveTabsToLocalStorage: false, saveTabsToQueryStateMode: "none" }, e), this._document.addEventListener("click", (o) => {
15008
+ let g = f(o);
15009
+ if (o.target && this.hideAllDropdown(o.target), Z(o)) return;
14995
15010
  if (this.isElementDropdownSelect(g)) {
14996
- g.classList.toggle(r);
15011
+ g.classList.toggle(l);
14997
15012
  return;
14998
15013
  }
14999
15014
  if (!this.isValidTabElement(g)) return;
15000
- let o = this.getTabDataFromHTMLElement(g);
15001
- o && this._selectTab(o, g);
15002
- }), this._document.addEventListener("keydown", (e) => {
15015
+ let I = this.getTabDataFromHTMLElement(g);
15016
+ I && this._selectTab(I, g);
15017
+ }), this._document.addEventListener("keydown", (o) => {
15003
15018
  let g = null;
15004
- switch (e.key) {
15019
+ switch (o.key) {
15005
15020
  case "ArrowLeft": {
15006
15021
  g = "left";
15007
15022
  break;
@@ -15020,36 +15035,90 @@ function TabsRuntime(props = {}) {
15020
15035
  }
15021
15036
  }
15022
15037
  if (!g) return;
15023
- let o = y(e);
15024
- if (Z(e) || !this.isValidTabElement(o)) return;
15025
- let { tabs: c, nodes: a } = this.getTabs(o), I = this.getTabDataFromHTMLElement(o), A = c.findIndex(({ key: C }) => (I == null ? void 0 : I.key) && C === I.key);
15026
- if (!I || c.length <= 1 || A === -1) return;
15027
- let i = (A + (g === "left" ? -1 : 1) + c.length) % c.length;
15028
- this.selectTab(c[i]), a[i].focus();
15038
+ let I = f(o);
15039
+ if (Z(o) || !this.isValidTabElement(I)) return;
15040
+ let { tabs: a, nodes: r } = this.getTabs(I), i = this.getTabDataFromHTMLElement(I), c = a.findIndex(({ key: A }) => (i == null ? void 0 : i.key) && A === i.key);
15041
+ if (!i || a.length <= 1 || c === -1) return;
15042
+ let s = (c + (g === "left" ? -1 : 1) + a.length) % a.length;
15043
+ this.selectTab(a[s]), r[s].focus();
15029
15044
  });
15030
15045
  }
15046
+ configure(t) {
15047
+ this._options = Object.assign(this._options, t);
15048
+ }
15031
15049
  onSelectTab(t) {
15032
15050
  return this._onSelectTabHandlers.add(t), () => {
15033
15051
  this._onSelectTabHandlers.delete(t);
15034
15052
  };
15035
15053
  }
15036
15054
  selectTabById(t, e) {
15037
- let g = this._document.querySelector(`${n.TAB}[${v}="${t}"]`);
15038
- if (!g || !this.isValidTabElement(g)) return;
15039
- let o = this.getTabDataFromHTMLElement(g);
15040
- o && this._selectTab(o, g), e != null && e.scrollToElement && g.scrollIntoView();
15055
+ let o = this._document.querySelector(`${n.TAB}[${U}="${t}"]`);
15056
+ if (!o || !this.isValidTabElement(o)) return;
15057
+ let g = this.getTabDataFromHTMLElement(o);
15058
+ g && this._selectTab(g, o), e != null && e.scrollToElement && o.scrollIntoView();
15041
15059
  }
15042
15060
  selectTab(t) {
15043
15061
  this._selectTab(t);
15044
15062
  }
15045
- _selectTab(t, e) {
15046
- let { group: g, key: o, variant: c } = t;
15047
- if (!g) return;
15048
- let a = e && Q(e), I = a && X(e, a);
15049
- this.updateHTML({ group: g, key: o, variant: c }, e, c) > 0 && (this.fireSelectTabEvent({ group: g, key: o, variant: c }, e == null ? void 0 : e.dataset.diplodocId), I && this.resetScroll(e, a, I));
15063
+ restoreTabs(t) {
15064
+ this._isRestoringTabs = true;
15065
+ try {
15066
+ for (let [e, o] of Object.entries(t)) if (e) {
15067
+ let g = __spreadValues({ group: e }, o);
15068
+ this.selectTab(g);
15069
+ }
15070
+ } finally {
15071
+ this._isRestoringTabs = false;
15072
+ }
15073
+ }
15074
+ getTabsFromLocalStorage() {
15075
+ return JSON.parse(localStorage.getItem("tabsHistory") || "{}");
15076
+ }
15077
+ getTabsFromSearchQuery() {
15078
+ let t = {}, e = new URLSearchParams(window.location.search);
15079
+ return e.has("tabs") && (e.get("tabs") || "").split(",").forEach((I) => {
15080
+ let a = I.split("_"), [r, i] = a, c = "regular";
15081
+ if (a.length === 3 && (c = a[2]), r && i && Object.values(O).includes(c)) {
15082
+ let s = i;
15083
+ t[r] = { key: s, variant: c };
15084
+ }
15085
+ }), t;
15086
+ }
15087
+ updateLocalStorageWithTabs(t) {
15088
+ this._options.saveTabsToLocalStorage && (this._isRestoringTabs || localStorage.setItem("tabsHistory", JSON.stringify(t)));
15089
+ }
15090
+ updateQueryParamWithTabs(t) {
15091
+ if (this._isRestoringTabs) return;
15092
+ let e = new URLSearchParams(window.location.search), o = Object.entries(t).map(([a, { key: r, variant: i }]) => i === "regular" ? `${a}_${r}` : `${a}_${r}_${i}`);
15093
+ o.length > 0 ? e.set("tabs", o.join(",")) : e.delete("tabs");
15094
+ let g = history.state || {}, I = new URL(window.location.href);
15095
+ I.search = e.toString(), window.history.replaceState(__spreadValues({}, g), document.title, I.href);
15096
+ }
15097
+ getCurrentPageTabHistory(t) {
15098
+ return Object.fromEntries(Object.entries(t).filter(([e]) => this._currentPageTabGroups.includes(e)));
15050
15099
  }
15051
- updateHTML(t, e, g) {
15052
- switch (g) {
15100
+ onPageChanged() {
15101
+ this._currentPageTabGroups = this.getCurrentPageTabGroups();
15102
+ }
15103
+ getCurrentPageTabGroups() {
15104
+ let t = this._document.getElementsByClassName(x), e = /* @__PURE__ */ new Set();
15105
+ return Array.from(t).forEach((o) => {
15106
+ let g = o.getAttribute(B);
15107
+ g && e.add(g);
15108
+ }), Array.from(e);
15109
+ }
15110
+ clearTabsPreferred() {
15111
+ localStorage.removeItem("tabsHistory"), this.updateQueryParamWithTabs({});
15112
+ }
15113
+ _selectTab(t, e) {
15114
+ let { group: o, key: g, variant: I } = t;
15115
+ if (!o) return;
15116
+ this.saveTabPreferred({ group: o, key: g, variant: I });
15117
+ let a = e && v(e), r = a && Q(e, a);
15118
+ this.updateHTML({ group: o, key: g, variant: I }, e, I) > 0 && (this.fireSelectTabEvent({ group: o, key: g, variant: I }, e == null ? void 0 : e.dataset.diplodocId), r && this.resetScroll(e, a, r));
15119
+ }
15120
+ updateHTML(t, e, o) {
15121
+ switch (o) {
15053
15122
  case "radio":
15054
15123
  return this.updateHTMLRadio(t, e);
15055
15124
  case "accordion":
@@ -15058,131 +15127,145 @@ function TabsRuntime(props = {}) {
15058
15127
  return this.updateHTMLRegular(t);
15059
15128
  case "dropdown":
15060
15129
  return this.updateHTMLDropdown(t);
15130
+ default:
15131
+ return 0;
15132
+ }
15133
+ }
15134
+ saveTabPreferred(t) {
15135
+ let e = {};
15136
+ switch (this._options.saveTabsToLocalStorage && (e = JSON.parse(localStorage.getItem("tabsHistory") || "{}")), e[t.group] = { key: t.key, variant: t.variant }, this._options.saveTabsToLocalStorage && this.updateLocalStorageWithTabs(e), this._options.saveTabsToQueryStateMode) {
15137
+ case "all": {
15138
+ this.updateQueryParamWithTabs(e);
15139
+ break;
15140
+ }
15141
+ case "page": {
15142
+ this.updateQueryParamWithTabs(this.getCurrentPageTabHistory(e));
15143
+ break;
15144
+ }
15061
15145
  }
15062
- return 0;
15063
15146
  }
15064
15147
  updateHTMLRadio(t, e) {
15065
- let { group: g, key: o } = t, { isForced: c, root: a } = this.didTabOpenForce(e), I = c ? `.yfm-vertical-tab[${h}="true"]` : "", A = this._document.querySelectorAll(`${n.TABS}[${T}="${g}"] ${n.TAB}[${G}="${o}"]${I}`);
15066
- c && (a == null || a.removeAttribute(h));
15067
- let i = 0;
15068
- return A.forEach((C) => {
15069
- let m = C.parentNode.children;
15148
+ let { group: o, key: g } = t, { isForced: I, root: a } = this.didTabOpenForce(e), r = I ? `.yfm-vertical-tab[${R}="true"]` : "", i = this._document.querySelectorAll(`${n.TABS}[${B}="${o}"] ${n.TAB}[${G}="${g}"]${r}`);
15149
+ I && (a == null || a.removeAttribute(R));
15150
+ let c = 0;
15151
+ return i.forEach((s) => {
15152
+ let m = s.parentNode.children;
15070
15153
  for (let p = 0; p < m.length; p += 2) {
15071
15154
  let [d, b] = [m.item(p), m.item(p + 1)], u = d.children.item(0);
15072
- if (d === C) {
15155
+ if (d === s) {
15073
15156
  u.checked ? (d.classList.remove("active"), b == null || b.classList.remove("active"), u.removeAttribute("checked")) : (d.classList.add("active"), b == null || b.classList.add("active"), u.setAttribute("checked", "true"));
15074
15157
  continue;
15075
15158
  }
15076
- u.hasAttribute("checked") && (d.classList.remove("active"), b == null || b.classList.remove("active"), u.removeAttribute("checked")), i++;
15159
+ u.hasAttribute("checked") && (d.classList.remove("active"), b == null || b.classList.remove("active"), u.removeAttribute("checked")), c++;
15077
15160
  }
15078
- }), i;
15161
+ }), c;
15079
15162
  }
15080
15163
  updateHTMLRegular(t) {
15081
- let { group: e, key: g } = t, o = this._document.querySelectorAll(`${n.TABS}[${T}="${e}"] ${n.TAB}[${G}="${g}"]`), c = 0;
15082
- return o.forEach((a) => {
15083
- let I = a;
15084
- if (!this.isValidTabElement(I) || I.dataset.diplodocIsActive === "true") return;
15085
- c++;
15086
- let A = a, i = A.parentNode, C = i == null ? void 0 : i.parentNode, l = Array.from((i == null ? void 0 : i.querySelectorAll(n.TAB)) || []), m = Array.from((C == null ? void 0 : C.children) || []).filter((d) => d.classList.contains(O)), p = l.indexOf(A);
15087
- l.forEach((d, b) => {
15088
- let u = m[b], B = b === p, D = d;
15089
- D.dataset.diplodocIsActive = B ? "true" : "false", d.classList.toggle(r, B), d.setAttribute("aria-selected", B.toString()), d.setAttribute("tabindex", B ? "0" : "-1"), u.classList.toggle(r, B);
15164
+ let { group: e, key: o } = t, g = this._document.querySelectorAll(`${n.TABS}[${B}="${e}"] ${n.TAB}[${G}="${o}"]`), I = 0;
15165
+ return g.forEach((a) => {
15166
+ let r = a;
15167
+ if (!this.isValidTabElement(r) || r.dataset.diplodocIsActive === "true") return;
15168
+ I++;
15169
+ let i = a, c = i.parentNode, s = c == null ? void 0 : c.parentNode, A = Array.from((c == null ? void 0 : c.querySelectorAll(n.TAB)) || []), m = Array.from((s == null ? void 0 : s.children) || []).filter((d) => d.classList.contains(F)), p = A.indexOf(i);
15170
+ A.forEach((d, b) => {
15171
+ let u = m[b], T = b === p, S = d;
15172
+ S.dataset.diplodocIsActive = T ? "true" : "false", d.classList.toggle(l, T), d.setAttribute("aria-selected", T.toString()), d.setAttribute("tabindex", T ? "0" : "-1"), u.classList.toggle(l, T);
15090
15173
  });
15091
- }), c;
15174
+ }), I;
15092
15175
  }
15093
15176
  updateHTMLDropdown(t) {
15094
- let { group: e, key: g } = t, o = this._document.querySelectorAll(`${n.TABS}[${T}="${e}"] ${n.TAB}[${G}="${g}"]`), c = 0;
15095
- return o.forEach((a) => {
15096
- let I = a.closest(`[${x}=dropdown]`);
15097
- if (!(I != null && I.children)) return;
15098
- let A = I.children.item(0), i = I.children.item(1);
15099
- A == null || A.classList.remove(r);
15100
- let C = Array.from((i == null ? void 0 : i.children) || []).indexOf(a) + 2;
15101
- for (let l = 2; l < I.children.length; l++) {
15102
- let m = I.children.item(l), p = i == null ? void 0 : i.children.item(l - 2);
15103
- if (c++, C === l) {
15104
- m == null || m.classList.add(r), p.classList.add(r), A.innerHTML = a.innerHTML, A.classList.add("filled");
15177
+ let { group: e, key: o } = t, g = this._document.querySelectorAll(`${n.TABS}[${B}="${e}"] ${n.TAB}[${G}="${o}"]`), I = 0;
15178
+ return g.forEach((a) => {
15179
+ let r = a.closest(`[${y}=dropdown]`);
15180
+ if (!(r != null && r.children)) return;
15181
+ let i = r.children.item(0), c = r.children.item(1);
15182
+ i == null || i.classList.remove(l);
15183
+ let s = Array.from((c == null ? void 0 : c.children) || []).indexOf(a) + 2;
15184
+ for (let A = 2; A < r.children.length; A++) {
15185
+ let m = r.children.item(A), p = c == null ? void 0 : c.children.item(A - 2);
15186
+ if (I++, s === A) {
15187
+ m == null || m.classList.add(l), p.classList.add(l), i.innerHTML = a.innerHTML, i.classList.add("filled");
15105
15188
  continue;
15106
15189
  }
15107
- p.classList.remove(r), m.classList.remove(r);
15190
+ p.classList.remove(l), m.classList.remove(l);
15108
15191
  }
15109
- }), c;
15192
+ }), I;
15110
15193
  }
15111
15194
  updateHTMLAccordion(t, e) {
15112
- let { group: g, key: o } = t, c = this._document.querySelectorAll(`${n.TABS}[${T}="${g}"] ${n.TAB}[${G}="${o}"]`), a = 0;
15113
- return c.forEach((I) => {
15114
- let A = I.closest(`[${x}=accordion]`);
15115
- if (A != null && A.children) for (let i = 0; i < A.children.length; i += 2) {
15116
- let C = A.children.item(i), l = A.children.item(i + 1);
15117
- if (a++, I === C) {
15118
- C == null || C.classList.toggle(r), l == null || l.classList.toggle(r);
15195
+ let { group: o, key: g } = t, I = this._document.querySelectorAll(`${n.TABS}[${B}="${o}"] ${n.TAB}[${G}="${g}"]`), a = 0;
15196
+ return I.forEach((r) => {
15197
+ let i = r.closest(`[${y}=accordion]`);
15198
+ if (i != null && i.children) for (let c = 0; c < i.children.length; c += 2) {
15199
+ let s = i.children.item(c), A = i.children.item(c + 1);
15200
+ if (a++, r === s) {
15201
+ s == null || s.classList.toggle(l), A == null || A.classList.toggle(l);
15119
15202
  continue;
15120
15203
  }
15121
- C == null || C.classList.remove(r), l == null || l.classList.remove(r);
15204
+ s == null || s.classList.remove(l), A == null || A.classList.remove(l);
15122
15205
  }
15123
15206
  }), e && !this.checkVisible(e) && setTimeout(() => {
15124
15207
  e.scrollIntoView({ block: "nearest" });
15125
15208
  }), a;
15126
15209
  }
15127
15210
  checkVisible(t) {
15128
- let e = t.getBoundingClientRect(), g = Math.max(document.documentElement.clientHeight, window.innerHeight);
15129
- return !(e.bottom < 0 || e.top - g >= 0);
15211
+ let e = t.getBoundingClientRect(), o = Math.max(document.documentElement.clientHeight, window.innerHeight);
15212
+ return !(e.bottom < 0 || e.top - o >= 0);
15130
15213
  }
15131
15214
  hideAllDropdown(t) {
15132
- this._document.querySelectorAll(".yfm-tabs-dropdown-select.active").forEach((g) => {
15133
- g.contains(t) || g.classList.remove(r);
15215
+ this._document.querySelectorAll(".yfm-tabs-dropdown-select.active").forEach((o) => {
15216
+ o.contains(t) || o.classList.remove(l);
15134
15217
  });
15135
15218
  }
15136
- resetScroll(t, e, g) {
15137
- let o = X(t, e), c = o.top - g.top, a = o.left - g.left, I = o.scrollTop - g.scrollTop, A = o.scrollLeft - g.scrollLeft;
15138
- e.scrollTo(e.scrollLeft + a - A, e.scrollTop + c - I);
15219
+ resetScroll(t, e, o) {
15220
+ let g = Q(t, e), I = g.top - o.top, a = g.left - o.left, r = g.scrollTop - o.scrollTop, i = g.scrollLeft - o.scrollLeft;
15221
+ e.scrollTo(e.scrollLeft + a - i, e.scrollTop + I - r);
15139
15222
  }
15140
15223
  didTabOpenForce(t) {
15141
15224
  if (!t) return {};
15142
15225
  if (t.dataset.diplodocForced) return { root: t, isForced: true };
15143
- let e = t.dataset.diplodocVerticalTab ? t : t.parentElement, g = typeof (e == null ? void 0 : e.dataset.diplodocForced) != "undefined";
15144
- return { root: e, isForced: g };
15226
+ let e = t.dataset.diplodocVerticalTab ? t : t.parentElement, o = typeof (e == null ? void 0 : e.dataset.diplodocForced) != "undefined";
15227
+ return { root: e, isForced: o };
15145
15228
  }
15146
15229
  fireSelectTabEvent(t, e) {
15147
- let { group: g, key: o, variant: c } = t, a = g.startsWith(H) ? { key: o, variant: c } : t;
15148
- this._onSelectTabHandlers.forEach((I) => {
15149
- I({ tab: a, currentTabId: e });
15230
+ let { group: o, key: g, variant: I } = t, a = o.startsWith(L) ? { key: g, variant: I } : t;
15231
+ this._onSelectTabHandlers.forEach((r) => {
15232
+ r({ tab: a, currentTabId: e });
15150
15233
  });
15151
15234
  }
15152
15235
  getTabsType(t) {
15153
- let e = t.closest(`[${x}]`);
15236
+ let e = t.closest(`[${y}]`);
15154
15237
  if (e) return e.dataset.diplodocVariant;
15155
15238
  }
15156
15239
  isValidTabElement(t) {
15157
15240
  return !!this.getTabsType(t);
15158
15241
  }
15159
15242
  isElementDropdownSelect(t) {
15160
- return t.classList.contains(N);
15243
+ return t.classList.contains(w);
15161
15244
  }
15162
15245
  getTabDataFromHTMLElement(t) {
15163
- var c, a, I;
15246
+ var I, a, r;
15164
15247
  let e = this.getTabsType(t);
15165
15248
  if (e === "radio") {
15166
- let A = t.dataset.diplodocVerticalTab ? t : t.parentElement, i = A.dataset.diplodocKey, C = (c = A.closest(n.TABS)) == null ? void 0 : c.dataset.diplodocGroup;
15167
- return i && C ? { group: C, key: i, variant: "radio" } : null;
15249
+ let i = t.dataset.diplodocVerticalTab ? t : t.parentElement, c = i.dataset.diplodocKey, s = (I = i.closest(n.TABS)) == null ? void 0 : I.dataset.diplodocGroup;
15250
+ return c && s ? { group: s, key: c, variant: "radio" } : null;
15168
15251
  }
15169
15252
  if (e === "dropdown" || e === "accordion") {
15170
- let A = t.dataset.diplodocKey, i = (a = t.closest(n.TABS)) == null ? void 0 : a.dataset.diplodocGroup;
15171
- return A && i ? { group: i, key: A, variant: e } : null;
15253
+ let i = t.dataset.diplodocKey, c = (a = t.closest(n.TABS)) == null ? void 0 : a.dataset.diplodocGroup;
15254
+ return i && c ? { group: c, key: i, variant: e } : null;
15172
15255
  }
15173
- let g = t.dataset.diplodocKey, o = (I = t.closest(n.TABS)) == null ? void 0 : I.dataset.diplodocGroup;
15174
- return g && o ? { group: o, key: g, variant: "regular" } : null;
15256
+ let o = t.dataset.diplodocKey, g = (r = t.closest(n.TABS)) == null ? void 0 : r.dataset.diplodocGroup;
15257
+ return o && g ? { group: g, key: o, variant: "regular" } : null;
15175
15258
  }
15176
15259
  getTabs(t) {
15177
- var c, a;
15178
- let e = (c = t.closest(n.TABS)) == null ? void 0 : c.dataset.diplodocGroup, g = (a = t.closest(n.TAB_LIST)) == null ? void 0 : a.querySelectorAll(n.TAB), o = [];
15179
- return g.forEach((I) => {
15180
- let A = I == null ? void 0 : I.dataset.diplodocKey;
15181
- A && o.push({ group: e, key: A, variant: "regular" });
15182
- }), { tabs: o, nodes: g };
15260
+ var I, a;
15261
+ let e = (I = t.closest(n.TABS)) == null ? void 0 : I.dataset.diplodocGroup, o = (a = t.closest(n.TAB_LIST)) == null ? void 0 : a.querySelectorAll(n.TAB), g = [];
15262
+ return o.forEach((r) => {
15263
+ let i = r == null ? void 0 : r.dataset.diplodocKey;
15264
+ i && g.push({ group: e, key: i, variant: "regular" });
15265
+ }), { tabs: g, nodes: o };
15183
15266
  }
15184
15267
  };
15185
- typeof window != "undefined" && typeof document != "undefined" && !window[F] && (window[F] = new f(document));
15268
+ typeof window != "undefined" && typeof document != "undefined" && !window[X] && (window[X] = new h(document));
15186
15269
  })();
15187
15270
 
15188
15271
  // src/js/polyfill.js
@@ -15857,36 +15940,20 @@ function emitResult(html, env) {
15857
15940
  logs: log_1.log.get(),
15858
15941
  };
15859
15942
  }
15860
- // eslint-disable-next-line consistent-return
15861
- const transform = (originInput, options = {}) => {
15943
+ function transform(originInput, options = {}) {
15862
15944
  const input = applyLiquid(originInput, options);
15863
15945
  const { parse, compile, env } = (0, md_1.default)(options);
15864
15946
  try {
15865
- return emitResult(compile(parse(input)), env);
15947
+ const tokens = parse(input);
15948
+ if (options.tokens === true) {
15949
+ return tokens;
15950
+ }
15951
+ return emitResult(compile(tokens), env);
15866
15952
  }
15867
15953
  catch (error) {
15868
15954
  handleError(error, options.path);
15869
15955
  }
15870
- };
15871
- transform.collect = (input,
15872
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
15873
- { mdItInitOptions, pluginCollectOptions, parserPluginsOverride }) => {
15874
- var _a;
15875
- const maybeLiquidedInput = applyLiquid(input, mdItInitOptions);
15876
- const { parse } = (0, md_1.default)(Object.assign(Object.assign({}, mdItInitOptions), { plugins: parserPluginsOverride !== null && parserPluginsOverride !== void 0 ? parserPluginsOverride : mdItInitOptions.plugins }));
15877
- const plugins = (_a = mdItInitOptions.plugins) !== null && _a !== void 0 ? _a : [];
15878
- try {
15879
- const tokenStream = parse(maybeLiquidedInput);
15880
- return plugins.reduce((collected, plugin) => {
15881
- var _a;
15882
- const collectOutput = (_a = plugin.collect) === null || _a === void 0 ? void 0 : _a.call(plugin, collected, Object.assign(Object.assign({}, pluginCollectOptions), { tokenStream }));
15883
- return collectOutput !== null && collectOutput !== void 0 ? collectOutput : collected;
15884
- }, maybeLiquidedInput);
15885
- }
15886
- catch (error) {
15887
- handleError(error, mdItInitOptions.path);
15888
- }
15889
- };
15956
+ }
15890
15957
  module.exports = transform;
15891
15958
  //# sourceMappingURL=index.js.map
15892
15959
 
@@ -17181,6 +17248,7 @@ const highlight_1 = __importDefault(__webpack_require__(44370));
17181
17248
  const title_1 = __importDefault(__webpack_require__(50440));
17182
17249
  const headings_1 = __importDefault(__webpack_require__(70235));
17183
17250
  const sanitize_1 = __importDefault(__webpack_require__(44891));
17251
+ const ol_attr_conversion_1 = __webpack_require__(37985);
17184
17252
  function initMarkdownIt(options) {
17185
17253
  const { allowHTML = false, linkify = false, breaks = true, highlightLangs = {}, disableRules = [], } = options;
17186
17254
  const highlight = (0, highlight_1.default)(highlightLangs);
@@ -17226,9 +17294,13 @@ function getPluginOptions(options) {
17226
17294
  log: log_1.log });
17227
17295
  }
17228
17296
  function initPlugins(md, options, pluginOptions) {
17229
- const { linkify = false, linkifyTlds, leftDelimiter = '{', rightDelimiter = '}', plugins = plugins_1.default, } = options;
17230
- // Need for ids of headers
17231
- md.use(markdown_it_attrs_1.default, { leftDelimiter, rightDelimiter });
17297
+ const { linkify = false, linkifyTlds, leftDelimiter = '{', rightDelimiter = '}', plugins = plugins_1.default, enableMarkdownAttrs, } = options;
17298
+ // TODO: set enableMarkdownAttrs to false by default in next major
17299
+ if (enableMarkdownAttrs !== false) {
17300
+ // Need for ids of headers
17301
+ md.use(markdown_it_attrs_1.default, { leftDelimiter, rightDelimiter });
17302
+ }
17303
+ md.use(ol_attr_conversion_1.olAttrConversion);
17232
17304
  plugins.forEach((plugin) => md.use(plugin, pluginOptions));
17233
17305
  if (linkify && linkifyTlds) {
17234
17306
  md.linkify.tlds(linkifyTlds, true);
@@ -17555,7 +17627,12 @@ exports.renderTokens = renderTokens;
17555
17627
 
17556
17628
  const block_anchor_1 = __webpack_require__(48782);
17557
17629
  const blockAnchor = (md) => {
17558
- md.core.ruler.before('curly_attributes', block_anchor_1.TOKEN_NAME, block_anchor_1.replaceTokens);
17630
+ try {
17631
+ md.core.ruler.before('curly_attributes', block_anchor_1.TOKEN_NAME, block_anchor_1.replaceTokens);
17632
+ }
17633
+ catch (e) {
17634
+ md.core.ruler.push(block_anchor_1.TOKEN_NAME, block_anchor_1.replaceTokens);
17635
+ }
17559
17636
  md.renderer.rules[block_anchor_1.TOKEN_NAME] = block_anchor_1.renderTokens;
17560
17637
  return md;
17561
17638
  };
@@ -17612,9 +17689,10 @@ const wrapInClipboard = (element, id) => {
17612
17689
  </div>
17613
17690
  `;
17614
17691
  };
17615
- function termReplace(str, env) {
17692
+ function termReplace(str, env, escape) {
17616
17693
  const regTerms = Object.keys(env.terms)
17617
17694
  .map((el) => el.substr(1))
17695
+ .map(escape)
17618
17696
  .join('|');
17619
17697
  const regText = '\\[([^\\[]+)\\](\\(\\*(' + regTerms + ')\\))';
17620
17698
  const reg = new RegExp(regText, 'g');
@@ -17625,7 +17703,7 @@ const code = (md) => {
17625
17703
  const superCodeRenderer = md.renderer.rules.fence;
17626
17704
  md.renderer.rules.fence = function (tokens, idx, options, env, self) {
17627
17705
  const superCode = superCodeRenderer === null || superCodeRenderer === void 0 ? void 0 : superCodeRenderer(tokens, idx, options, env, self);
17628
- const superCodeWithTerms = superCode && (env === null || env === void 0 ? void 0 : env.terms) ? termReplace(superCode, env) : superCode;
17706
+ const superCodeWithTerms = superCode && (env === null || env === void 0 ? void 0 : env.terms) ? termReplace(superCode, env, md.utils.escapeRE) : superCode;
17629
17707
  return wrapInClipboard(superCodeWithTerms, idx);
17630
17708
  };
17631
17709
  };
@@ -18347,6 +18425,34 @@ module.exports = index;
18347
18425
 
18348
18426
  /***/ }),
18349
18427
 
18428
+ /***/ 37985:
18429
+ /***/ ((__unused_webpack_module, exports) => {
18430
+
18431
+ "use strict";
18432
+
18433
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
18434
+ exports.olAttrConversion = void 0;
18435
+ const cssWhitelist = {
18436
+ '--hier-list-start': true,
18437
+ };
18438
+ const olAttrConversion = (md) => {
18439
+ md.core.ruler.after('block', 'olAttrs', (state) => {
18440
+ var _a;
18441
+ state.tokens.forEach((token) => {
18442
+ const maybeStart = token.attrGet('start');
18443
+ if (token.type === 'ordered_list_open' && maybeStart) {
18444
+ token.attrSet('style', `--hier-list-start: ${Number(maybeStart) - 1};`);
18445
+ }
18446
+ });
18447
+ (_a = state.env).additionalOptionsCssWhiteList || (_a.additionalOptionsCssWhiteList = {});
18448
+ Object.assign(state.env.additionalOptionsCssWhiteList, cssWhitelist);
18449
+ });
18450
+ };
18451
+ exports.olAttrConversion = olAttrConversion;
18452
+ //# sourceMappingURL=ol-attr-conversion.js.map
18453
+
18454
+ /***/ }),
18455
+
18350
18456
  /***/ 53257:
18351
18457
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
18352
18458
 
@@ -20434,10 +20540,11 @@ exports.getRealPath = exports.getRelativePath = exports.getPublicPath = exports.
20434
20540
  const fs_1 = __webpack_require__(79896);
20435
20541
  const escapeRegExp_1 = __importDefault(__webpack_require__(60680));
20436
20542
  const path_1 = __webpack_require__(16928);
20543
+ const quick_lru_1 = __importDefault(__webpack_require__(87392));
20437
20544
  const liquid_1 = __importDefault(__webpack_require__(64151));
20438
20545
  const utils_1 = __webpack_require__(82811);
20439
20546
  const preprocessors_1 = __webpack_require__(55529);
20440
- const filesCache = {};
20547
+ const filesCache = new quick_lru_1.default({ maxSize: 1000 });
20441
20548
  function isFileExists(file) {
20442
20549
  try {
20443
20550
  const stats = (0, fs_1.statSync)(file);
@@ -20458,12 +20565,12 @@ function getFileTokens(path, state, options, content) {
20458
20565
  const builtVars = (getVarsPerFile && !inheritVars ? getVarsPerFile(path) : vars) || {};
20459
20566
  // Read the content only if we dont have one in the args
20460
20567
  if (!content) {
20461
- if (filesCache[path]) {
20462
- content = filesCache[path];
20568
+ if (filesCache.has(path)) {
20569
+ content = filesCache.get(path);
20463
20570
  }
20464
20571
  else {
20465
20572
  content = (0, fs_1.readFileSync)(path, 'utf8');
20466
- filesCache[path] = content;
20573
+ filesCache.set(path, content);
20467
20574
  }
20468
20575
  }
20469
20576
  let sourceMap;
@@ -122621,6 +122728,137 @@ module.exports = Warning
122621
122728
  Warning.default = Warning
122622
122729
 
122623
122730
 
122731
+ /***/ }),
122732
+
122733
+ /***/ 87392:
122734
+ /***/ ((module) => {
122735
+
122736
+ "use strict";
122737
+
122738
+
122739
+ class QuickLRU {
122740
+ constructor(options = {}) {
122741
+ if (!(options.maxSize && options.maxSize > 0)) {
122742
+ throw new TypeError('`maxSize` must be a number greater than 0');
122743
+ }
122744
+
122745
+ this.maxSize = options.maxSize;
122746
+ this.onEviction = options.onEviction;
122747
+ this.cache = new Map();
122748
+ this.oldCache = new Map();
122749
+ this._size = 0;
122750
+ }
122751
+
122752
+ _set(key, value) {
122753
+ this.cache.set(key, value);
122754
+ this._size++;
122755
+
122756
+ if (this._size >= this.maxSize) {
122757
+ this._size = 0;
122758
+
122759
+ if (typeof this.onEviction === 'function') {
122760
+ for (const [key, value] of this.oldCache.entries()) {
122761
+ this.onEviction(key, value);
122762
+ }
122763
+ }
122764
+
122765
+ this.oldCache = this.cache;
122766
+ this.cache = new Map();
122767
+ }
122768
+ }
122769
+
122770
+ get(key) {
122771
+ if (this.cache.has(key)) {
122772
+ return this.cache.get(key);
122773
+ }
122774
+
122775
+ if (this.oldCache.has(key)) {
122776
+ const value = this.oldCache.get(key);
122777
+ this.oldCache.delete(key);
122778
+ this._set(key, value);
122779
+ return value;
122780
+ }
122781
+ }
122782
+
122783
+ set(key, value) {
122784
+ if (this.cache.has(key)) {
122785
+ this.cache.set(key, value);
122786
+ } else {
122787
+ this._set(key, value);
122788
+ }
122789
+
122790
+ return this;
122791
+ }
122792
+
122793
+ has(key) {
122794
+ return this.cache.has(key) || this.oldCache.has(key);
122795
+ }
122796
+
122797
+ peek(key) {
122798
+ if (this.cache.has(key)) {
122799
+ return this.cache.get(key);
122800
+ }
122801
+
122802
+ if (this.oldCache.has(key)) {
122803
+ return this.oldCache.get(key);
122804
+ }
122805
+ }
122806
+
122807
+ delete(key) {
122808
+ const deleted = this.cache.delete(key);
122809
+ if (deleted) {
122810
+ this._size--;
122811
+ }
122812
+
122813
+ return this.oldCache.delete(key) || deleted;
122814
+ }
122815
+
122816
+ clear() {
122817
+ this.cache.clear();
122818
+ this.oldCache.clear();
122819
+ this._size = 0;
122820
+ }
122821
+
122822
+ * keys() {
122823
+ for (const [key] of this) {
122824
+ yield key;
122825
+ }
122826
+ }
122827
+
122828
+ * values() {
122829
+ for (const [, value] of this) {
122830
+ yield value;
122831
+ }
122832
+ }
122833
+
122834
+ * [Symbol.iterator]() {
122835
+ for (const item of this.cache) {
122836
+ yield item;
122837
+ }
122838
+
122839
+ for (const item of this.oldCache) {
122840
+ const [key] = item;
122841
+ if (!this.cache.has(key)) {
122842
+ yield item;
122843
+ }
122844
+ }
122845
+ }
122846
+
122847
+ get size() {
122848
+ let oldCacheSize = 0;
122849
+ for (const key of this.oldCache.keys()) {
122850
+ if (!this.cache.has(key)) {
122851
+ oldCacheSize++;
122852
+ }
122853
+ }
122854
+
122855
+ return Math.min(this._size + oldCacheSize, this.maxSize);
122856
+ }
122857
+ }
122858
+
122859
+ module.exports = QuickLRU;
122860
+
122861
+
122624
122862
  /***/ }),
122625
122863
 
122626
122864
  /***/ 25264: