@diplodoc/client 3.2.0 → 3.3.1

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.
@@ -14743,7 +14743,21 @@ function transform({
14743
14743
  var __defProp = Object.defineProperty;
14744
14744
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
14745
14745
  var __getOwnPropNames = Object.getOwnPropertyNames;
14746
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
14746
14747
  var __hasOwnProp = Object.prototype.hasOwnProperty;
14748
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
14749
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14750
+ var __spreadValues = (a, b) => {
14751
+ for (var prop in b || (b = {}))
14752
+ if (__hasOwnProp.call(b, prop))
14753
+ __defNormalProp(a, prop, b[prop]);
14754
+ if (__getOwnPropSymbols)
14755
+ for (var prop of __getOwnPropSymbols(b)) {
14756
+ if (__propIsEnum.call(b, prop))
14757
+ __defNormalProp(a, prop, b[prop]);
14758
+ }
14759
+ return a;
14760
+ };
14747
14761
  var __export = (target, all) => {
14748
14762
  for (var name in all)
14749
14763
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -14761,6 +14775,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
14761
14775
  // src/react/index.ts
14762
14776
  var react_exports = {};
14763
14777
  __export(react_exports, {
14778
+ TabsRuntime: () => TabsRuntime,
14764
14779
  useDiplodocTabs: () => useDiplodocTabs
14765
14780
  });
14766
14781
  module.exports = __toCommonJS(react_exports);
@@ -14819,6 +14834,23 @@ function useDiplodocTabs(callback = void 0) {
14819
14834
  )
14820
14835
  };
14821
14836
  }
14837
+
14838
+ // src/react/TabsRuntime.ts
14839
+ var import_react2 = __webpack_require__(96540);
14840
+ function TabsRuntime(props = {}) {
14841
+ if (typeof window === "undefined") {
14842
+ return null;
14843
+ }
14844
+ const tabs = useDiplodocTabs();
14845
+ (0, import_react2.useEffect)(() => {
14846
+ tabs.configure(__spreadValues({}, props));
14847
+ }, [props, tabs]);
14848
+ (0, import_react2.useEffect)(() => {
14849
+ tabs.onPageChanged();
14850
+ tabs.restoreTabs(__spreadValues(__spreadValues({}, tabs.getTabsFromLocalStorage()), tabs.getTabsFromSearchQuery()));
14851
+ }, [props.router]);
14852
+ return null;
14853
+ }
14822
14854
  //# sourceMappingURL=index.js.map
14823
14855
 
14824
14856
 
@@ -14834,9 +14866,22 @@ function useDiplodocTabs(callback = void 0) {
14834
14866
  var __defProp = Object.defineProperty;
14835
14867
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
14836
14868
  var __getOwnPropNames = Object.getOwnPropertyNames;
14869
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
14837
14870
  var __getProtoOf = Object.getPrototypeOf;
14838
14871
  var __hasOwnProp = Object.prototype.hasOwnProperty;
14872
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
14839
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
+ };
14840
14885
  var __commonJS = (cb, mod) => function __require() {
14841
14886
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
14842
14887
  };
@@ -14938,38 +14983,40 @@ function useDiplodocTabs(callback = void 0) {
14938
14983
 
14939
14984
  // node_modules/@diplodoc/tabs-extension/build/runtime/index.js
14940
14985
  (() => {
14941
- var W = "yfm-tabs", R = "yfm-tab", O = "yfm-tab-panel", L = "yfm-tab-list", r = "active";
14942
- var T = "data-diplodoc-group", G = "data-diplodoc-key", x = "data-diplodoc-variant", v = "data-diplodoc-id", H = "defaultTabsGroup-";
14943
- var h = "data-diplodoc-forced";
14944
- var N = "yfm-tabs-dropdown-select";
14945
- var U = "yfm-tabs-vertical";
14946
- var F = Symbol.for("diplodocTabs");
14947
- var y = (s) => {
14948
- let t = s.composedPath();
14949
- return Array.isArray(t) && t.length > 0 ? t[0] : s.target;
14950
- }, Z = (s) => {
14951
- 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);
14952
14997
  return !t || !t.matches;
14953
- }, Q = (s) => Math.abs(s.scrollHeight - s.clientHeight) > 1 ? s : s.parentElement ? Q(s.parentElement) : void 0, X = (s, t) => {
14954
- let e = s.getBoundingClientRect(), g = t.getBoundingClientRect();
14955
- 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 };
14956
15001
  };
14957
- var n = { TABS: `.${W}`, TAB_LIST: `.${L}`, TAB: `.${R}`, TAB_PANEL: `.${O}`, VERTICAL_TABS: `.${U}` }, f = class {
14958
- constructor(t) {
15002
+ var n = { TABS: `.${x}`, TAB_LIST: `.${D}`, TAB: `.${H}`, TAB_PANEL: `.${F}`, VERTICAL_TABS: `.${W}` }, h = class {
15003
+ constructor(t, e = {}) {
14959
15004
  this._onSelectTabHandlers = /* @__PURE__ */ new Set();
14960
- this._document = t, this._document.addEventListener("click", (e) => {
14961
- let g = y(e);
14962
- 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;
14963
15010
  if (this.isElementDropdownSelect(g)) {
14964
- g.classList.toggle(r);
15011
+ g.classList.toggle(l);
14965
15012
  return;
14966
15013
  }
14967
15014
  if (!this.isValidTabElement(g)) return;
14968
- let o = this.getTabDataFromHTMLElement(g);
14969
- o && this._selectTab(o, g);
14970
- }), this._document.addEventListener("keydown", (e) => {
15015
+ let I = this.getTabDataFromHTMLElement(g);
15016
+ I && this._selectTab(I, g);
15017
+ }), this._document.addEventListener("keydown", (o) => {
14971
15018
  let g = null;
14972
- switch (e.key) {
15019
+ switch (o.key) {
14973
15020
  case "ArrowLeft": {
14974
15021
  g = "left";
14975
15022
  break;
@@ -14988,36 +15035,90 @@ function useDiplodocTabs(callback = void 0) {
14988
15035
  }
14989
15036
  }
14990
15037
  if (!g) return;
14991
- let o = y(e);
14992
- if (Z(e) || !this.isValidTabElement(o)) return;
14993
- 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);
14994
- if (!I || c.length <= 1 || A === -1) return;
14995
- let i = (A + (g === "left" ? -1 : 1) + c.length) % c.length;
14996
- 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();
14997
15044
  });
14998
15045
  }
15046
+ configure(t) {
15047
+ this._options = Object.assign(this._options, t);
15048
+ }
14999
15049
  onSelectTab(t) {
15000
15050
  return this._onSelectTabHandlers.add(t), () => {
15001
15051
  this._onSelectTabHandlers.delete(t);
15002
15052
  };
15003
15053
  }
15004
15054
  selectTabById(t, e) {
15005
- let g = this._document.querySelector(`${n.TAB}[${v}="${t}"]`);
15006
- if (!g || !this.isValidTabElement(g)) return;
15007
- let o = this.getTabDataFromHTMLElement(g);
15008
- 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();
15009
15059
  }
15010
15060
  selectTab(t) {
15011
15061
  this._selectTab(t);
15012
15062
  }
15013
- _selectTab(t, e) {
15014
- let { group: g, key: o, variant: c } = t;
15015
- if (!g) return;
15016
- let a = e && Q(e), I = a && X(e, a);
15017
- 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)));
15099
+ }
15100
+ onPageChanged() {
15101
+ this._currentPageTabGroups = this.getCurrentPageTabGroups();
15018
15102
  }
15019
- updateHTML(t, e, g) {
15020
- switch (g) {
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) {
15021
15122
  case "radio":
15022
15123
  return this.updateHTMLRadio(t, e);
15023
15124
  case "accordion":
@@ -15026,131 +15127,145 @@ function useDiplodocTabs(callback = void 0) {
15026
15127
  return this.updateHTMLRegular(t);
15027
15128
  case "dropdown":
15028
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
+ }
15029
15145
  }
15030
- return 0;
15031
15146
  }
15032
15147
  updateHTMLRadio(t, e) {
15033
- 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}`);
15034
- c && (a == null || a.removeAttribute(h));
15035
- let i = 0;
15036
- return A.forEach((C) => {
15037
- 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;
15038
15153
  for (let p = 0; p < m.length; p += 2) {
15039
15154
  let [d, b] = [m.item(p), m.item(p + 1)], u = d.children.item(0);
15040
- if (d === C) {
15155
+ if (d === s) {
15041
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"));
15042
15157
  continue;
15043
15158
  }
15044
- 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++;
15045
15160
  }
15046
- }), i;
15161
+ }), c;
15047
15162
  }
15048
15163
  updateHTMLRegular(t) {
15049
- let { group: e, key: g } = t, o = this._document.querySelectorAll(`${n.TABS}[${T}="${e}"] ${n.TAB}[${G}="${g}"]`), c = 0;
15050
- return o.forEach((a) => {
15051
- let I = a;
15052
- if (!this.isValidTabElement(I) || I.dataset.diplodocIsActive === "true") return;
15053
- c++;
15054
- 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);
15055
- l.forEach((d, b) => {
15056
- let u = m[b], B = b === p, D = d;
15057
- 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);
15058
15173
  });
15059
- }), c;
15174
+ }), I;
15060
15175
  }
15061
15176
  updateHTMLDropdown(t) {
15062
- let { group: e, key: g } = t, o = this._document.querySelectorAll(`${n.TABS}[${T}="${e}"] ${n.TAB}[${G}="${g}"]`), c = 0;
15063
- return o.forEach((a) => {
15064
- let I = a.closest(`[${x}=dropdown]`);
15065
- if (!(I != null && I.children)) return;
15066
- let A = I.children.item(0), i = I.children.item(1);
15067
- A == null || A.classList.remove(r);
15068
- let C = Array.from((i == null ? void 0 : i.children) || []).indexOf(a) + 2;
15069
- for (let l = 2; l < I.children.length; l++) {
15070
- let m = I.children.item(l), p = i == null ? void 0 : i.children.item(l - 2);
15071
- if (c++, C === l) {
15072
- 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");
15073
15188
  continue;
15074
15189
  }
15075
- p.classList.remove(r), m.classList.remove(r);
15190
+ p.classList.remove(l), m.classList.remove(l);
15076
15191
  }
15077
- }), c;
15192
+ }), I;
15078
15193
  }
15079
15194
  updateHTMLAccordion(t, e) {
15080
- let { group: g, key: o } = t, c = this._document.querySelectorAll(`${n.TABS}[${T}="${g}"] ${n.TAB}[${G}="${o}"]`), a = 0;
15081
- return c.forEach((I) => {
15082
- let A = I.closest(`[${x}=accordion]`);
15083
- if (A != null && A.children) for (let i = 0; i < A.children.length; i += 2) {
15084
- let C = A.children.item(i), l = A.children.item(i + 1);
15085
- if (a++, I === C) {
15086
- 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);
15087
15202
  continue;
15088
15203
  }
15089
- 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);
15090
15205
  }
15091
15206
  }), e && !this.checkVisible(e) && setTimeout(() => {
15092
15207
  e.scrollIntoView({ block: "nearest" });
15093
15208
  }), a;
15094
15209
  }
15095
15210
  checkVisible(t) {
15096
- let e = t.getBoundingClientRect(), g = Math.max(document.documentElement.clientHeight, window.innerHeight);
15097
- 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);
15098
15213
  }
15099
15214
  hideAllDropdown(t) {
15100
- this._document.querySelectorAll(".yfm-tabs-dropdown-select.active").forEach((g) => {
15101
- 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);
15102
15217
  });
15103
15218
  }
15104
- resetScroll(t, e, g) {
15105
- 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;
15106
- 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);
15107
15222
  }
15108
15223
  didTabOpenForce(t) {
15109
15224
  if (!t) return {};
15110
15225
  if (t.dataset.diplodocForced) return { root: t, isForced: true };
15111
- let e = t.dataset.diplodocVerticalTab ? t : t.parentElement, g = typeof (e == null ? void 0 : e.dataset.diplodocForced) != "undefined";
15112
- 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 };
15113
15228
  }
15114
15229
  fireSelectTabEvent(t, e) {
15115
- let { group: g, key: o, variant: c } = t, a = g.startsWith(H) ? { key: o, variant: c } : t;
15116
- this._onSelectTabHandlers.forEach((I) => {
15117
- 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 });
15118
15233
  });
15119
15234
  }
15120
15235
  getTabsType(t) {
15121
- let e = t.closest(`[${x}]`);
15236
+ let e = t.closest(`[${y}]`);
15122
15237
  if (e) return e.dataset.diplodocVariant;
15123
15238
  }
15124
15239
  isValidTabElement(t) {
15125
15240
  return !!this.getTabsType(t);
15126
15241
  }
15127
15242
  isElementDropdownSelect(t) {
15128
- return t.classList.contains(N);
15243
+ return t.classList.contains(w);
15129
15244
  }
15130
15245
  getTabDataFromHTMLElement(t) {
15131
- var c, a, I;
15246
+ var I, a, r;
15132
15247
  let e = this.getTabsType(t);
15133
15248
  if (e === "radio") {
15134
- let A = t.dataset.diplodocVerticalTab ? t : t.parentElement, i = A.dataset.diplodocKey, C = (c = A.closest(n.TABS)) == null ? void 0 : c.dataset.diplodocGroup;
15135
- 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;
15136
15251
  }
15137
15252
  if (e === "dropdown" || e === "accordion") {
15138
- let A = t.dataset.diplodocKey, i = (a = t.closest(n.TABS)) == null ? void 0 : a.dataset.diplodocGroup;
15139
- 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;
15140
15255
  }
15141
- let g = t.dataset.diplodocKey, o = (I = t.closest(n.TABS)) == null ? void 0 : I.dataset.diplodocGroup;
15142
- 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;
15143
15258
  }
15144
15259
  getTabs(t) {
15145
- var c, a;
15146
- 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 = [];
15147
- return g.forEach((I) => {
15148
- let A = I == null ? void 0 : I.dataset.diplodocKey;
15149
- A && o.push({ group: e, key: A, variant: "regular" });
15150
- }), { 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 };
15151
15266
  }
15152
15267
  };
15153
- 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));
15154
15269
  })();
15155
15270
 
15156
15271
  // src/js/polyfill.js
@@ -15825,36 +15940,20 @@ function emitResult(html, env) {
15825
15940
  logs: log_1.log.get(),
15826
15941
  };
15827
15942
  }
15828
- // eslint-disable-next-line consistent-return
15829
- const transform = (originInput, options = {}) => {
15943
+ function transform(originInput, options = {}) {
15830
15944
  const input = applyLiquid(originInput, options);
15831
15945
  const { parse, compile, env } = (0, md_1.default)(options);
15832
15946
  try {
15833
- 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);
15834
15952
  }
15835
15953
  catch (error) {
15836
15954
  handleError(error, options.path);
15837
15955
  }
15838
- };
15839
- transform.collect = (input,
15840
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
15841
- { mdItInitOptions, pluginCollectOptions, parserPluginsOverride }) => {
15842
- var _a;
15843
- const maybeLiquidedInput = applyLiquid(input, mdItInitOptions);
15844
- const { parse } = (0, md_1.default)(Object.assign(Object.assign({}, mdItInitOptions), { plugins: parserPluginsOverride !== null && parserPluginsOverride !== void 0 ? parserPluginsOverride : mdItInitOptions.plugins }));
15845
- const plugins = (_a = mdItInitOptions.plugins) !== null && _a !== void 0 ? _a : [];
15846
- try {
15847
- const tokenStream = parse(maybeLiquidedInput);
15848
- return plugins.reduce((collected, plugin) => {
15849
- var _a;
15850
- const collectOutput = (_a = plugin.collect) === null || _a === void 0 ? void 0 : _a.call(plugin, collected, Object.assign(Object.assign({}, pluginCollectOptions), { tokenStream }));
15851
- return collectOutput !== null && collectOutput !== void 0 ? collectOutput : collected;
15852
- }, maybeLiquidedInput);
15853
- }
15854
- catch (error) {
15855
- handleError(error, mdItInitOptions.path);
15856
- }
15857
- };
15956
+ }
15858
15957
  module.exports = transform;
15859
15958
  //# sourceMappingURL=index.js.map
15860
15959
 
@@ -17149,6 +17248,7 @@ const highlight_1 = __importDefault(__webpack_require__(44370));
17149
17248
  const title_1 = __importDefault(__webpack_require__(50440));
17150
17249
  const headings_1 = __importDefault(__webpack_require__(70235));
17151
17250
  const sanitize_1 = __importDefault(__webpack_require__(44891));
17251
+ const ol_attr_conversion_1 = __webpack_require__(37985);
17152
17252
  function initMarkdownIt(options) {
17153
17253
  const { allowHTML = false, linkify = false, breaks = true, highlightLangs = {}, disableRules = [], } = options;
17154
17254
  const highlight = (0, highlight_1.default)(highlightLangs);
@@ -17194,9 +17294,13 @@ function getPluginOptions(options) {
17194
17294
  log: log_1.log });
17195
17295
  }
17196
17296
  function initPlugins(md, options, pluginOptions) {
17197
- const { linkify = false, linkifyTlds, leftDelimiter = '{', rightDelimiter = '}', plugins = plugins_1.default, } = options;
17198
- // Need for ids of headers
17199
- 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);
17200
17304
  plugins.forEach((plugin) => md.use(plugin, pluginOptions));
17201
17305
  if (linkify && linkifyTlds) {
17202
17306
  md.linkify.tlds(linkifyTlds, true);
@@ -17523,7 +17627,12 @@ exports.renderTokens = renderTokens;
17523
17627
 
17524
17628
  const block_anchor_1 = __webpack_require__(48782);
17525
17629
  const blockAnchor = (md) => {
17526
- 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
+ }
17527
17636
  md.renderer.rules[block_anchor_1.TOKEN_NAME] = block_anchor_1.renderTokens;
17528
17637
  return md;
17529
17638
  };
@@ -17580,9 +17689,10 @@ const wrapInClipboard = (element, id) => {
17580
17689
  </div>
17581
17690
  `;
17582
17691
  };
17583
- function termReplace(str, env) {
17692
+ function termReplace(str, env, escape) {
17584
17693
  const regTerms = Object.keys(env.terms)
17585
17694
  .map((el) => el.substr(1))
17695
+ .map(escape)
17586
17696
  .join('|');
17587
17697
  const regText = '\\[([^\\[]+)\\](\\(\\*(' + regTerms + ')\\))';
17588
17698
  const reg = new RegExp(regText, 'g');
@@ -17593,7 +17703,7 @@ const code = (md) => {
17593
17703
  const superCodeRenderer = md.renderer.rules.fence;
17594
17704
  md.renderer.rules.fence = function (tokens, idx, options, env, self) {
17595
17705
  const superCode = superCodeRenderer === null || superCodeRenderer === void 0 ? void 0 : superCodeRenderer(tokens, idx, options, env, self);
17596
- 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;
17597
17707
  return wrapInClipboard(superCodeWithTerms, idx);
17598
17708
  };
17599
17709
  };
@@ -18315,6 +18425,34 @@ module.exports = index;
18315
18425
 
18316
18426
  /***/ }),
18317
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
+
18318
18456
  /***/ 53257:
18319
18457
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
18320
18458
 
@@ -20402,10 +20540,11 @@ exports.getRealPath = exports.getRelativePath = exports.getPublicPath = exports.
20402
20540
  const fs_1 = __webpack_require__(79896);
20403
20541
  const escapeRegExp_1 = __importDefault(__webpack_require__(60680));
20404
20542
  const path_1 = __webpack_require__(16928);
20543
+ const quick_lru_1 = __importDefault(__webpack_require__(87392));
20405
20544
  const liquid_1 = __importDefault(__webpack_require__(64151));
20406
20545
  const utils_1 = __webpack_require__(82811);
20407
20546
  const preprocessors_1 = __webpack_require__(55529);
20408
- const filesCache = {};
20547
+ const filesCache = new quick_lru_1.default({ maxSize: 1000 });
20409
20548
  function isFileExists(file) {
20410
20549
  try {
20411
20550
  const stats = (0, fs_1.statSync)(file);
@@ -20426,12 +20565,12 @@ function getFileTokens(path, state, options, content) {
20426
20565
  const builtVars = (getVarsPerFile && !inheritVars ? getVarsPerFile(path) : vars) || {};
20427
20566
  // Read the content only if we dont have one in the args
20428
20567
  if (!content) {
20429
- if (filesCache[path]) {
20430
- content = filesCache[path];
20568
+ if (filesCache.has(path)) {
20569
+ content = filesCache.get(path);
20431
20570
  }
20432
20571
  else {
20433
20572
  content = (0, fs_1.readFileSync)(path, 'utf8');
20434
- filesCache[path] = content;
20573
+ filesCache.set(path, content);
20435
20574
  }
20436
20575
  }
20437
20576
  let sourceMap;
@@ -122589,6 +122728,137 @@ module.exports = Warning
122589
122728
  Warning.default = Warning
122590
122729
 
122591
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
+
122592
122862
  /***/ }),
122593
122863
 
122594
122864
  /***/ 25264: