@diplodoc/client 3.3.4 → 3.4.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.
@@ -1745,10 +1745,12 @@ __webpack_require__.d(__webpack_exports__, {
1745
1745
  A: () => (/* binding */ Controls_default)
1746
1746
  });
1747
1747
 
1748
- // EXTERNAL MODULE: ./node_modules/react/index.js
1749
- var react = __webpack_require__(96540);
1748
+ // UNUSED EXPORTS: ControlsList
1749
+
1750
1750
  // EXTERNAL MODULE: ./node_modules/bem-cn-lite/lib/index.js
1751
1751
  var lib = __webpack_require__(23614);
1752
+ // EXTERNAL MODULE: ./node_modules/react/index.js
1753
+ var react = __webpack_require__(96540);
1752
1754
  // EXTERNAL MODULE: ./node_modules/@diplodoc/components/build/esm/components/Feedback/Feedback.js + 9 modules
1753
1755
  var Feedback = __webpack_require__(8278);
1754
1756
  ;// ./node_modules/@gravity-ui/icons/esm/Envelope.js
@@ -2029,6 +2031,8 @@ var Subscribe_default = Subscribe;
2029
2031
 
2030
2032
  //# sourceMappingURL=Subscribe.js.map
2031
2033
 
2034
+ // EXTERNAL MODULE: ./node_modules/@diplodoc/components/build/esm/hooks/useInterface.js
2035
+ var useInterface = __webpack_require__(40258);
2032
2036
  ;// ./node_modules/@gravity-ui/icons/esm/SquareDashedCircle.js
2033
2037
 
2034
2038
  const SquareDashedCircle = (props) => (react.createElement("svg", Object.assign({ xmlns: "http://www.w3.org/2000/svg", width: 16, height: 16, fill: "none", viewBox: "0 0 16 16" }, props),
@@ -2587,6 +2591,26 @@ var DividerControl_default = DividerControl;
2587
2591
  // extracted by mini-css-extract-plugin
2588
2592
 
2589
2593
  ;// ./node_modules/@diplodoc/components/build/esm/components/Controls/Controls.js
2594
+ var Controls_defProp = Object.defineProperty;
2595
+ var __defProps = Object.defineProperties;
2596
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
2597
+ var Controls_getOwnPropSymbols = Object.getOwnPropertySymbols;
2598
+ var Controls_hasOwnProp = Object.prototype.hasOwnProperty;
2599
+ var Controls_propIsEnum = Object.prototype.propertyIsEnumerable;
2600
+ var Controls_defNormalProp = (obj, key, value) => key in obj ? Controls_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2601
+ var Controls_spreadValues = (a, b2) => {
2602
+ for (var prop in b2 || (b2 = {}))
2603
+ if (Controls_hasOwnProp.call(b2, prop))
2604
+ Controls_defNormalProp(a, prop, b2[prop]);
2605
+ if (Controls_getOwnPropSymbols)
2606
+ for (var prop of Controls_getOwnPropSymbols(b2)) {
2607
+ if (Controls_propIsEnum.call(b2, prop))
2608
+ Controls_defNormalProp(a, prop, b2[prop]);
2609
+ }
2610
+ return a;
2611
+ };
2612
+ var __spreadProps = (a, b2) => __defProps(a, __getOwnPropDescs(b2));
2613
+
2590
2614
  // src/components/Controls/Controls.tsx
2591
2615
 
2592
2616
 
@@ -2595,14 +2619,13 @@ var DividerControl_default = DividerControl;
2595
2619
 
2596
2620
 
2597
2621
 
2622
+
2598
2623
  var Controls_b = (0,lib/* default */.A)("dc-controls");
2599
2624
  function hasLangs(langs) {
2600
2625
  return (langs == null ? void 0 : langs.length) && langs.length > 1;
2601
2626
  }
2602
- var Controls = (0,react.memo)((props) => {
2603
- const { isVerticalView } = (0,react.useContext)(ControlsLayout/* ControlsLayoutContext */.s);
2627
+ var ControlsList = (props) => {
2604
2628
  const {
2605
- className,
2606
2629
  fullScreen,
2607
2630
  singlePage,
2608
2631
  theme,
@@ -2627,7 +2650,8 @@ var Controls = (0,react.memo)((props) => {
2627
2650
  vcsUrl,
2628
2651
  vcsType,
2629
2652
  isLiked,
2630
- isDisliked
2653
+ isDisliked,
2654
+ isHiddenFeedback
2631
2655
  } = props;
2632
2656
  const withFullscreenControl = Boolean(onChangeFullScreen);
2633
2657
  const withSettingsControl = Boolean(
@@ -2637,7 +2661,9 @@ var Controls = (0,react.memo)((props) => {
2637
2661
  const withSinglePageControl = Boolean(onChangeSinglePage);
2638
2662
  const withPdfControl = Boolean(pdfLink);
2639
2663
  const withEditControl = Boolean(!singlePage && !hideEditControl && vcsUrl);
2640
- const withFeedbackControl = Boolean(!singlePage && !hideFeedbackControls && onSendFeedback);
2664
+ const withFeedbackControl = Boolean(
2665
+ !singlePage && !hideFeedbackControls && !isHiddenFeedback && onSendFeedback
2666
+ );
2641
2667
  const withSubscribeControls = Boolean(!singlePage && onSubscribe);
2642
2668
  const controls = [
2643
2669
  withFullscreenControl && /* @__PURE__ */ react.createElement(
@@ -2722,7 +2748,14 @@ var Controls = (0,react.memo)((props) => {
2722
2748
  }
2723
2749
  return result;
2724
2750
  }, []);
2725
- if (!controls.length) {
2751
+ return controls;
2752
+ };
2753
+ var Controls = (0,react.memo)((props) => {
2754
+ const { isVerticalView } = (0,react.useContext)(ControlsLayout/* ControlsLayoutContext */.s);
2755
+ const isHiddenFeedback = (0,useInterface/* useInterface */.j)("feedback");
2756
+ const { className } = props;
2757
+ const controls = /* @__PURE__ */ react.createElement(ControlsList, __spreadProps(Controls_spreadValues({}, props), { isHiddenFeedback }));
2758
+ if (!controls) {
2726
2759
  return null;
2727
2760
  }
2728
2761
  return /* @__PURE__ */ react.createElement("div", { className: Controls_b({ vertical: isVerticalView }, className) }, controls);
@@ -2886,6 +2919,8 @@ var lib = __webpack_require__(23614);
2886
2919
  var useTranslation = __webpack_require__(62438);
2887
2920
  // EXTERNAL MODULE: ./node_modules/@diplodoc/components/build/esm/hooks/usePopupState.js + 1 modules
2888
2921
  var usePopupState = __webpack_require__(70806);
2922
+ // EXTERNAL MODULE: ./node_modules/@diplodoc/components/build/esm/hooks/useInterface.js
2923
+ var useInterface = __webpack_require__(40258);
2889
2924
  // EXTERNAL MODULE: ./node_modules/@diplodoc/components/build/esm/models/index.js
2890
2925
  var models = __webpack_require__(78184);
2891
2926
  ;// ./node_modules/@gravity-ui/icons/esm/ThumbsDownFill.js
@@ -3300,6 +3335,10 @@ var Feedback = (props) => {
3300
3335
  [onSendFeedback, setInnerState, dislikeSuccessPopup, hideFeedbackPopups]
3301
3336
  );
3302
3337
  const isDislikePopupVisible = dislikeSuccessPopup.visible || dislikeVariantsPopup.visible;
3338
+ const isFeedbackHidden = (0,useInterface/* useInterface */.j)("feedback");
3339
+ if (isFeedbackHidden) {
3340
+ return null;
3341
+ }
3303
3342
  return /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(Feedback_ControlsLayout, { view }, /* @__PURE__ */ react.createElement(
3304
3343
  LikeControl_default,
3305
3344
  {
@@ -4493,7 +4532,7 @@ var Toc = class extends react.Component {
4493
4532
  }
4494
4533
  getInitialState() {
4495
4534
  return {
4496
- registry: new TocItemRegistry(this.props.items, this.normalizeUrl),
4535
+ registry: new TocItemRegistry(this.props.items || [], this.normalizeUrl),
4497
4536
  fixedById: {},
4498
4537
  activeId: null,
4499
4538
  contentScrolled: false
@@ -5670,6 +5709,8 @@ var ToMainMenu_default = ToMainMenu;
5670
5709
 
5671
5710
  //# sourceMappingURL=ToMainMenu.js.map
5672
5711
 
5712
+ // EXTERNAL MODULE: ./node_modules/@diplodoc/components/build/esm/hooks/useInterface.js
5713
+ var useInterface = __webpack_require__(40258);
5673
5714
  ;// ./node_modules/@diplodoc/components/build/esm/components/navigation/SidebarContent/SidebarContent.css
5674
5715
  // extracted by mini-css-extract-plugin
5675
5716
 
@@ -5702,6 +5743,7 @@ var __spreadProps = (a, b2) => __defProps(a, __getOwnPropDescs(b2));
5702
5743
 
5703
5744
 
5704
5745
 
5746
+
5705
5747
  var SidebarContent_b = (0,lib/* default */.A)("dc-sidebar-content");
5706
5748
  var SidebarContent = ({
5707
5749
  mainMenuOpenessData,
@@ -5710,16 +5752,18 @@ var SidebarContent = ({
5710
5752
  mobileControlsData,
5711
5753
  children
5712
5754
  }) => {
5713
- var _a;
5755
+ var _a, _b;
5714
5756
  const mainMenuIsOpened = mainMenuOpenessData && mainMenuOpenessData.isMainMenuOpened;
5715
5757
  const mainMenuIsClosed = mainMenuOpenessData && !mainMenuOpenessData.isMainMenuOpened;
5716
- const toc = navigationTocData && navigationTocData.toc && navigationTocData.toc.items.length > 0 && mainMenuIsClosed && /* @__PURE__ */ react.createElement(react.Fragment, null, pcNavigationData && Boolean((_a = pcNavigationData == null ? void 0 : pcNavigationData.leftItemsWithIconSize) == null ? void 0 : _a.length) && /* @__PURE__ */ react.createElement("div", { className: SidebarContent_b("to-main-menu") }, /* @__PURE__ */ react.createElement(
5758
+ const tocItems = ((_a = navigationTocData == null ? void 0 : navigationTocData.toc) == null ? void 0 : _a.items) || [];
5759
+ const isTocHidden = (0,useInterface/* useInterface */.j)("toc");
5760
+ const toc = navigationTocData && tocItems.length > 0 && mainMenuIsClosed && /* @__PURE__ */ react.createElement(react.Fragment, null, pcNavigationData && Boolean((_b = pcNavigationData == null ? void 0 : pcNavigationData.leftItemsWithIconSize) == null ? void 0 : _b.length) && /* @__PURE__ */ react.createElement("div", { className: SidebarContent_b("to-main-menu") }, /* @__PURE__ */ react.createElement(
5717
5761
  ToMainMenu_default,
5718
5762
  {
5719
5763
  mainMenuIsOpen: mainMenuIsOpened,
5720
5764
  openMainMenu: mainMenuOpenessData.openMainMenu
5721
5765
  }
5722
- )), /* @__PURE__ */ react.createElement("div", { className: SidebarContent_b("toc") }, /* @__PURE__ */ react.createElement(
5766
+ )), !isTocHidden && /* @__PURE__ */ react.createElement("div", { className: SidebarContent_b("toc") }, /* @__PURE__ */ react.createElement(
5723
5767
  Toc/* default */.A,
5724
5768
  __spreadProps(__spreadValues({}, navigationTocData.toc), {
5725
5769
  router: navigationTocData.router,
@@ -5727,7 +5771,7 @@ var SidebarContent = ({
5727
5771
  hideTocHeader: true
5728
5772
  })
5729
5773
  )));
5730
- const withoutToc = !navigationTocData || !navigationTocData.toc || typeof navigationTocData.toc.items.length === "number" && navigationTocData.toc.items.length === 0;
5774
+ const withoutToc = tocItems.length === 0;
5731
5775
  const mainMenu = pcNavigationData && (mainMenuIsOpened || withoutToc) && /* @__PURE__ */ react.createElement("div", { className: SidebarContent_b("main-menu") }, pcNavigationData.leftItemsWithIconSize && /* @__PURE__ */ react.createElement(
5732
5776
  NavigationList/* NavigationList */.r,
5733
5777
  {
@@ -8149,6 +8193,71 @@ var SUPPORTED_LANGS = Object.keys(_i18n__WEBPACK_IMPORTED_MODULE_1__/* ["default
8149
8193
  //# sourceMappingURL=constants.js.map
8150
8194
 
8151
8195
 
8196
+ /***/ }),
8197
+
8198
+ /***/ 6790:
8199
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8200
+
8201
+ "use strict";
8202
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8203
+ /* harmony export */ Z: () => (/* binding */ InterfaceContext),
8204
+ /* harmony export */ p: () => (/* binding */ InterfaceProvider)
8205
+ /* harmony export */ });
8206
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(96540);
8207
+ // src/contexts/InterfaceContext.tsx
8208
+
8209
+ var InterfaceContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({
8210
+ interface: {},
8211
+ isHidden: () => false
8212
+ });
8213
+ var InterfaceProvider = ({
8214
+ interface: viewerInterface,
8215
+ children
8216
+ }) => {
8217
+ const isHidden = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(
8218
+ (name) => {
8219
+ if (viewerInterface && name in viewerInterface) {
8220
+ return !viewerInterface[name];
8221
+ }
8222
+ return false;
8223
+ },
8224
+ [viewerInterface]
8225
+ );
8226
+ const value = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(
8227
+ () => ({
8228
+ interface: viewerInterface,
8229
+ isHidden
8230
+ }),
8231
+ [viewerInterface, isHidden]
8232
+ );
8233
+ return /* @__PURE__ */ react__WEBPACK_IMPORTED_MODULE_0__.createElement(InterfaceContext.Provider, { value }, children);
8234
+ };
8235
+
8236
+ //# sourceMappingURL=InterfaceContext.js.map
8237
+
8238
+
8239
+ /***/ }),
8240
+
8241
+ /***/ 40258:
8242
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8243
+
8244
+ "use strict";
8245
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8246
+ /* harmony export */ j: () => (/* binding */ useInterface)
8247
+ /* harmony export */ });
8248
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(96540);
8249
+ /* harmony import */ var _contexts_InterfaceContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6790);
8250
+ // src/hooks/useInterface.ts
8251
+
8252
+
8253
+ function useInterface(name) {
8254
+ const { isHidden } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_contexts_InterfaceContext__WEBPACK_IMPORTED_MODULE_1__/* .InterfaceContext */ .Z);
8255
+ return isHidden(name);
8256
+ }
8257
+
8258
+ //# sourceMappingURL=useInterface.js.map
8259
+
8260
+
8152
8261
  /***/ }),
8153
8262
 
8154
8263
  /***/ 26591:
@@ -9106,6 +9215,8 @@ var ContentWrapper = (_a) => {
9106
9215
 
9107
9216
  // EXTERNAL MODULE: ./node_modules/@diplodoc/components/build/esm/components/Toc/Toc.js + 9 modules
9108
9217
  var Toc = __webpack_require__(54821);
9218
+ // EXTERNAL MODULE: ./node_modules/@diplodoc/components/build/esm/hooks/useInterface.js
9219
+ var useInterface = __webpack_require__(40258);
9109
9220
  ;// ./node_modules/@diplodoc/components/build/esm/components/DocLayout/DocLayout.css
9110
9221
  // extracted by mini-css-extract-plugin
9111
9222
 
@@ -9129,7 +9240,6 @@ var DocLayout_spreadValues = (a, b2) => {
9129
9240
  return a;
9130
9241
  };
9131
9242
  var __spreadProps = (a, b2) => __defProps(a, __getOwnPropDescs(b2));
9132
- var __publicField = (obj, key, value) => DocLayout_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
9133
9243
 
9134
9244
  // src/components/DocLayout/DocLayout.tsx
9135
9245
 
@@ -9137,83 +9247,72 @@ var __publicField = (obj, key, value) => DocLayout_defNormalProp(obj, typeof key
9137
9247
 
9138
9248
 
9139
9249
 
9250
+
9140
9251
  var b = (0,lib/* default */.A)("dc-doc-layout");
9141
9252
  var Left = () => null;
9142
9253
  var Center = () => null;
9143
9254
  var Right = () => null;
9144
- var DocLayout = class extends react.Component {
9145
- render() {
9146
- const {
9147
- children,
9148
- className,
9149
- fullScreen = false,
9150
- wideFormat = false,
9151
- hideRight = false,
9152
- loading = false,
9153
- footer = null,
9154
- legacyToc = false
9155
- } = this.props;
9156
- let left, center, right;
9157
- const modes = {
9158
- "regular-page-width": !wideFormat,
9159
- "full-screen": fullScreen,
9160
- "hidden-right": hideRight,
9161
- loading
9162
- };
9163
- react.Children.forEach(children, (child) => {
9164
- if (!child) {
9165
- return;
9166
- }
9167
- switch (child.type) {
9168
- case Left:
9169
- left = child.props.children;
9170
- break;
9171
- case Center:
9172
- center = child.props.children;
9173
- break;
9174
- case Right:
9175
- right = child.props.children;
9176
- break;
9177
- }
9178
- });
9179
- return /* @__PURE__ */ react.createElement("div", { className: b(null, className) }, /* @__PURE__ */ react.createElement("div", { className: b("mobile-only") }, footer), fullScreen ? null : /* @__PURE__ */ react.createElement("div", { className: b("left", modes, legacyToc ? b("legacy-toc") : void 0) }, this.renderToc(), left), fullScreen || hideRight ? null : /* @__PURE__ */ react.createElement("div", { className: b("right", modes) }, right), /* @__PURE__ */ react.createElement("div", { className: b("center", modes) }, center, /* @__PURE__ */ react.createElement("div", { className: b("desktop-only") }, footer)));
9180
- }
9181
- renderToc() {
9182
- const {
9183
- toc,
9255
+ var DocLayout = ({
9256
+ children,
9257
+ className,
9258
+ fullScreen = false,
9259
+ wideFormat = false,
9260
+ hideRight = false,
9261
+ loading = false,
9262
+ footer = null,
9263
+ legacyToc = false,
9264
+ toc,
9265
+ router,
9266
+ headerHeight,
9267
+ tocTitleIcon,
9268
+ hideTocHeader,
9269
+ hideToc,
9270
+ singlePage,
9271
+ onChangeSinglePage,
9272
+ pdfLink
9273
+ }) => {
9274
+ const isTocHidden = (0,useInterface/* useInterface */.j)("toc");
9275
+ let left, center, right;
9276
+ const modes = {
9277
+ "regular-page-width": !wideFormat,
9278
+ "full-screen": fullScreen,
9279
+ "hidden-right": hideRight,
9280
+ loading
9281
+ };
9282
+ react.Children.forEach(children, (child) => {
9283
+ if (!child) {
9284
+ return;
9285
+ }
9286
+ switch (child.type) {
9287
+ case Left:
9288
+ left = child.props.children;
9289
+ break;
9290
+ case Center:
9291
+ center = child.props.children;
9292
+ break;
9293
+ case Right:
9294
+ right = child.props.children;
9295
+ break;
9296
+ }
9297
+ });
9298
+ return /* @__PURE__ */ react.createElement("div", { className: b(null, className) }, /* @__PURE__ */ react.createElement("div", { className: b("mobile-only") }, footer), fullScreen ? null : !isTocHidden && /* @__PURE__ */ react.createElement("div", { className: b("left", modes, legacyToc ? b("legacy-toc") : void 0) }, toc && !hideToc && /* @__PURE__ */ react.createElement("div", { className: b("toc") }, /* @__PURE__ */ react.createElement(
9299
+ Toc/* default */.A,
9300
+ __spreadProps(DocLayout_spreadValues({
9301
+ key: getStateKey(hideRight, wideFormat, toc.singlePage)
9302
+ }, toc), {
9184
9303
  router,
9185
9304
  headerHeight,
9186
9305
  tocTitleIcon,
9187
- hideRight,
9188
- wideFormat,
9189
9306
  hideTocHeader,
9190
- hideToc,
9191
9307
  singlePage,
9192
9308
  onChangeSinglePage,
9193
9309
  pdfLink
9194
- } = this.props;
9195
- if (!toc || hideToc) {
9196
- return null;
9197
- }
9198
- return /* @__PURE__ */ react.createElement("div", { className: b("toc") }, /* @__PURE__ */ react.createElement(
9199
- Toc/* default */.A,
9200
- __spreadProps(DocLayout_spreadValues({
9201
- key: getStateKey(hideRight, wideFormat, toc.singlePage)
9202
- }, toc), {
9203
- router,
9204
- headerHeight,
9205
- tocTitleIcon,
9206
- hideTocHeader,
9207
- singlePage,
9208
- onChangeSinglePage,
9209
- pdfLink
9210
- })
9211
- ));
9212
- }
9310
+ })
9311
+ )), left), fullScreen || hideRight ? null : /* @__PURE__ */ react.createElement("div", { className: b("right", modes) }, right), /* @__PURE__ */ react.createElement("div", { className: b("center", modes) }, center, /* @__PURE__ */ react.createElement("div", { className: b("desktop-only") }, footer)));
9213
9312
  };
9214
- __publicField(DocLayout, "Left", Left);
9215
- __publicField(DocLayout, "Center", Center);
9216
- __publicField(DocLayout, "Right", Right);
9313
+ DocLayout.Left = Left;
9314
+ DocLayout.Center = Center;
9315
+ DocLayout.Right = Right;
9217
9316
 
9218
9317
  //# sourceMappingURL=DocLayout.js.map
9219
9318
 
@@ -9252,7 +9351,7 @@ var DocContentPage = ({
9252
9351
  headerHeight,
9253
9352
  className: DocContentPage_b(modes),
9254
9353
  hideTocHeader,
9255
- hideToc: hideToc || (data == null ? void 0 : data.fullScreen),
9354
+ hideToc,
9256
9355
  fullScreen: fullScreen || (data == null ? void 0 : data.fullScreen),
9257
9356
  tocTitleIcon,
9258
9357
  footer,
@@ -9564,6 +9663,8 @@ const Link_Link = (props) => (react.createElement("svg", Object.assign({ xmlns:
9564
9663
 
9565
9664
  // EXTERNAL MODULE: ./node_modules/react-dom/index.js
9566
9665
  var react_dom = __webpack_require__(40961);
9666
+ // EXTERNAL MODULE: ./node_modules/@diplodoc/components/build/esm/contexts/InterfaceContext.js
9667
+ var InterfaceContext = __webpack_require__(6790);
9567
9668
  // EXTERNAL MODULE: ./node_modules/@diplodoc/components/build/esm/models/index.js
9568
9669
  var models = __webpack_require__(78184);
9569
9670
  ;// ./node_modules/@gravity-ui/icons/esm/StarFill.js
@@ -10238,6 +10339,7 @@ var SubNavigation_spreadProps = (a, b2) => SubNavigation_defProps(a, SubNavigati
10238
10339
 
10239
10340
 
10240
10341
 
10342
+
10241
10343
  var SubNavigation_b = (0,lib/* default */.A)("dc-subnavigation");
10242
10344
  var SubNavigation_ICON_SIZE = {
10243
10345
  width: 20,
@@ -10259,6 +10361,7 @@ var SubNavigation = (0,react.memo)(
10259
10361
  }) => {
10260
10362
  var _a;
10261
10363
  const ref = (0,react.useRef)(null);
10364
+ const isTocHidden = (0,useInterface/* useInterface */.j)("toc");
10262
10365
  const [menuOpen, setMenuOpen] = (0,react.useState)(false);
10263
10366
  const { miniTocOpen, closeMiniToc, miniTocHandler } = useMiniTocData_default(hideMiniToc, menuOpen);
10264
10367
  const [visible, setVisibility] = useVisibility_default(menuOpen, miniTocOpen);
@@ -10288,7 +10391,7 @@ var SubNavigation = (0,react.memo)(
10288
10391
  onSidebarOpenedChange,
10289
10392
  mobileControlsData
10290
10393
  },
10291
- /* @__PURE__ */ react.createElement("div", { className: SubNavigation_b("toc") }, /* @__PURE__ */ react.createElement(
10394
+ !isTocHidden && /* @__PURE__ */ react.createElement("div", { className: SubNavigation_b("toc") }, /* @__PURE__ */ react.createElement(
10292
10395
  Toc/* default */.A,
10293
10396
  SubNavigation_spreadProps(SubNavigation_spreadValues({}, toc), {
10294
10397
  router,
@@ -11521,7 +11624,7 @@ var TocNavControl = (0,react.memo)(({ item, isNext, onClick }) => {
11521
11624
  });
11522
11625
  TocNavControl.displayName = "TocNavControl";
11523
11626
  var TocNavPanel = (0,react.memo)(({ items, router, fixed, className, onClick }) => {
11524
- const flatToc = (0,react.useMemo)(() => getFlatToc(items), [items]);
11627
+ const flatToc = (0,react.useMemo)(() => getFlatToc(items || []), [items]);
11525
11628
  const { prevItem, nextItem } = (0,react.useMemo)(
11526
11629
  () => getBoundingItems(flatToc, router),
11527
11630
  [flatToc, router]
@@ -11654,7 +11757,7 @@ var DocPage_spreadValues = (a, b2) => {
11654
11757
  return a;
11655
11758
  };
11656
11759
  var DocPage_spreadProps = (a, b2) => DocPage_defProps(a, DocPage_getOwnPropDescs(b2));
11657
- var DocPage_publicField = (obj, key, value) => DocPage_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
11760
+ var __publicField = (obj, key, value) => DocPage_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
11658
11761
 
11659
11762
  // src/components/DocPage/DocPage.tsx
11660
11763
 
@@ -11678,16 +11781,17 @@ var DocPage_publicField = (obj, key, value) => DocPage_defNormalProp(obj, typeof
11678
11781
 
11679
11782
 
11680
11783
 
11784
+
11681
11785
 
11682
11786
 
11683
11787
  var DocPage_b = (0,lib/* default */.A)("dc-doc-page");
11684
11788
  var DocPage = class extends react.Component {
11685
11789
  constructor(props) {
11686
11790
  super(props);
11687
- DocPage_publicField(this, "state");
11688
- DocPage_publicField(this, "bodyRef", null);
11689
- DocPage_publicField(this, "bodyObserver", null);
11690
- DocPage_publicField(this, "handleBodyMutation", (mutationsList) => {
11791
+ __publicField(this, "state");
11792
+ __publicField(this, "bodyRef", null);
11793
+ __publicField(this, "bodyObserver", null);
11794
+ __publicField(this, "handleBodyMutation", (mutationsList) => {
11691
11795
  const { onContentMutation, onContentLoaded } = this.props;
11692
11796
  if (this.props.singlePage && this.bodyObserver && this.bodyRef) {
11693
11797
  this.bodyObserver.disconnect();
@@ -11714,10 +11818,10 @@ var DocPage = class extends react.Component {
11714
11818
  });
11715
11819
  }, 0);
11716
11820
  });
11717
- DocPage_publicField(this, "setBodyRef", (ref) => {
11821
+ __publicField(this, "setBodyRef", (ref) => {
11718
11822
  this.bodyRef = ref;
11719
11823
  });
11720
- DocPage_publicField(this, "addLinksToOriginalArticle", () => {
11824
+ __publicField(this, "addLinksToOriginalArticle", () => {
11721
11825
  const { singlePage, generatePathToVcs } = this.props;
11722
11826
  if (!this.bodyRef || !singlePage) {
11723
11827
  return;
@@ -11735,11 +11839,11 @@ var DocPage = class extends react.Component {
11735
11839
  }
11736
11840
  }
11737
11841
  });
11738
- DocPage_publicField(this, "getIsVerticalView", () => {
11842
+ __publicField(this, "getIsVerticalView", () => {
11739
11843
  const { fullScreen } = this.props;
11740
11844
  return !this.showMiniToc || fullScreen;
11741
11845
  });
11742
- DocPage_publicField(this, "renderSearchBar", () => {
11846
+ __publicField(this, "renderSearchBar", () => {
11743
11847
  const {
11744
11848
  showSearchBar,
11745
11849
  searchQuery,
@@ -11750,7 +11854,9 @@ var DocPage = class extends react.Component {
11750
11854
  onCloseSearchBar,
11751
11855
  singlePage
11752
11856
  } = this.props;
11753
- if (!showSearchBar || singlePage) {
11857
+ const { isHidden } = this.context;
11858
+ const isTocHidden = isHidden("toc");
11859
+ if (isTocHidden || !showSearchBar || singlePage) {
11754
11860
  return null;
11755
11861
  }
11756
11862
  return /* @__PURE__ */ react.createElement("div", { className: DocPage_b("search-bar") }, /* @__PURE__ */ react.createElement(
@@ -12039,7 +12145,9 @@ var DocPage = class extends react.Component {
12039
12145
  }
12040
12146
  renderFeedback() {
12041
12147
  const { singlePage, isLiked, isDisliked, onSendFeedback, hideFeedbackControls } = this.props;
12042
- if (singlePage || hideFeedbackControls || !onSendFeedback) {
12148
+ const { isHidden } = this.context;
12149
+ const isFeedbackHidden = isHidden("feedback");
12150
+ if (isFeedbackHidden || singlePage || hideFeedbackControls || !onSendFeedback) {
12043
12151
  return null;
12044
12152
  }
12045
12153
  return /* @__PURE__ */ react.createElement("div", { className: DocPage_b("feedback") }, /* @__PURE__ */ react.createElement(
@@ -12054,7 +12162,9 @@ var DocPage = class extends react.Component {
12054
12162
  }
12055
12163
  renderTocNavPanel() {
12056
12164
  const { toc, singlePage, router, fullScreen, onTocNavPanelClick } = this.props;
12057
- if (!toc || singlePage) {
12165
+ const { isHidden } = this.context;
12166
+ const isTocHidden = isHidden("toc");
12167
+ if (isTocHidden || !toc || singlePage) {
12058
12168
  return null;
12059
12169
  }
12060
12170
  return /* @__PURE__ */ react.createElement(
@@ -12130,7 +12240,8 @@ var DocPage = class extends react.Component {
12130
12240
  )));
12131
12241
  }
12132
12242
  };
12133
- DocPage_publicField(DocPage, "defaultProps", constants/* DEFAULT_SETTINGS */.a$);
12243
+ __publicField(DocPage, "defaultProps", constants/* DEFAULT_SETTINGS */.a$);
12244
+ __publicField(DocPage, "contextType", InterfaceContext/* InterfaceContext */.Z);
12134
12245
  var DocPage_default = withHighlightedSearchWords_default(DocPage);
12135
12246
 
12136
12247
  //# sourceMappingURL=DocPage.js.map
@@ -12628,7 +12739,8 @@ function registerInlineDirective(md, name, handler) {
12628
12739
  return handler(args.state, params);
12629
12740
  };
12630
12741
  }
12631
- function registerLeafBlockDirective(md, name, handler) {
12742
+ function registerLeafBlockDirective(md, nameOrConfig, maybeHandler) {
12743
+ const [name, handler] = isString(nameOrConfig) ? [nameOrConfig, maybeHandler] : [nameOrConfig.name, buildLeafBlockHandler(nameOrConfig)];
12632
12744
  md[LEAF_BLOCK_KEY] ||= {};
12633
12745
  md[LEAF_BLOCK_KEY][name] = handler;
12634
12746
  md.blockDirectives[name] = getBlockDefaultHandler(md, name);
@@ -12656,6 +12768,19 @@ function getBlockDefaultHandler(md, name) {
12656
12768
  return false;
12657
12769
  };
12658
12770
  }
12771
+ function buildLeafBlockHandler(config) {
12772
+ return (state, params) => {
12773
+ if (!config.match(params, state)) {
12774
+ return false;
12775
+ }
12776
+ const { container } = config;
12777
+ const token = state.push(container.token, container.tag, 0);
12778
+ token.map = [params.startLine, params.endLine];
12779
+ token.markup = "::" + config.name;
12780
+ applyTokenFields(token, container, params, state.env);
12781
+ return true;
12782
+ };
12783
+ }
12659
12784
  function buildContainerHandler(config) {
12660
12785
  return (state, params) => {
12661
12786
  if (!params.content) {
@@ -12671,26 +12796,17 @@ function buildContainerHandler(config) {
12671
12796
  let token = state.push(container.token + "_open", container.tag, 1);
12672
12797
  token.map = [params.startLine, params.endLine];
12673
12798
  token.markup = ":::" + config.name;
12674
- if (container.attrs) {
12675
- const attrs = isFunction(container.attrs) ? container.attrs(params) : container.attrs;
12676
- token.attrs = Object.entries(attrs);
12677
- }
12799
+ applyTokenFields(token, container, params, state.env);
12678
12800
  if (inlineContent) {
12679
12801
  token = state.push(inlineContent.token + "_open", inlineContent.tag, 1);
12680
- if (inlineContent.attrs) {
12681
- const attrs = isFunction(inlineContent.attrs) ? inlineContent.attrs(params) : inlineContent.attrs;
12682
- token.attrs = Object.entries(attrs);
12683
- }
12802
+ applyTokenFields(token, inlineContent, params, state.env);
12684
12803
  token = createBlockInlineToken(state, params);
12685
12804
  token = state.push(inlineContent.token + "_close", inlineContent.tag, -1);
12686
12805
  }
12687
12806
  if (content) {
12688
12807
  token = state.push(content.token + "_open", content.tag, 1);
12689
12808
  token.map = [params.startLine + 1, params.endLine - 1];
12690
- if (content.attrs) {
12691
- const attrs = isFunction(content.attrs) ? content.attrs(params) : content.attrs;
12692
- token.attrs = Object.entries(attrs);
12693
- }
12809
+ applyTokenFields(token, content, params, state.env);
12694
12810
  }
12695
12811
  if (contentTokenizer) {
12696
12812
  contentTokenizer(state, params.content, params);
@@ -12718,10 +12834,7 @@ function buildCodeContainerHandler(config) {
12718
12834
  token.content = params.content.raw;
12719
12835
  token.markup = ":::";
12720
12836
  token.info = name;
12721
- if (container.attrs) {
12722
- const attrs = isFunction(container.attrs) ? container.attrs(params) : container.attrs;
12723
- token.attrs = Object.entries(attrs);
12724
- }
12837
+ applyTokenFields(token, container, params, state.env);
12725
12838
  return true;
12726
12839
  };
12727
12840
  }
@@ -12788,6 +12901,16 @@ function buildDests(orig) {
12788
12901
  }
12789
12902
  return dests;
12790
12903
  }
12904
+ function applyTokenFields(token, { attrs, meta }, params, env) {
12905
+ if (attrs !== void 0) {
12906
+ const value = isFunction(attrs) ? attrs(params, env) : attrs;
12907
+ token.attrs = Object.entries(value);
12908
+ }
12909
+ if (meta !== void 0) {
12910
+ const value = isFunction(meta) ? meta(params, env) : meta;
12911
+ token.meta = value;
12912
+ }
12913
+ }
12791
12914
 
12792
12915
  // src/index.ts
12793
12916
  var directiveParser = () => {
@@ -13646,6 +13769,25 @@ bem-cn/lib/index.js:
13646
13769
  //# sourceMappingURL=index.min.js.map
13647
13770
 
13648
13771
 
13772
+ /***/ }),
13773
+
13774
+ /***/ 81452:
13775
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
13776
+
13777
+ "use strict";
13778
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13779
+ /* harmony export */ UQ: () => (/* binding */ rg)
13780
+ /* harmony export */ });
13781
+ /* unused harmony exports usePageConstructor, usePageConstructorController */
13782
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(96540);
13783
+ /* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5338);
13784
+ /* harmony import */ var _gravity_ui_page_constructor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(47658);
13785
+ /* harmony import */ var _gravity_ui_page_constructor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(95168);
13786
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(74848);
13787
+ var x=Object.defineProperty;var C=(I,g)=>x(I,"name",{value:g,configurable:!0});var p=C((I,g,A)=>new Promise((t,c)=>{var b=C(l=>{try{i(A.next(l))}catch(e){c(e)}},"fulfilled"),G=C(l=>{try{i(A.throw(l))}catch(e){c(e)}},"rejected"),i=C(l=>l.done?t(l.value):Promise.resolve(l.value).then(b,G),"step");i((A=A.apply(I,g)).next())}),"__async"),R,Y,k,v,f,V,L;R=new WeakMap;Y=new WeakMap;k=new WeakMap;v=new WeakMap;f=new WeakMap;V=new WeakMap;L=new WeakMap;var W=C(()=>typeof window<"u"&&typeof window.document<"u","isBrowser"),o=Symbol.for("extension-load-queues"),J=Symbol.for("single-queue"),u=C(I=>{if(W()){if(!window[I])window[I]=[];else if(!Array.isArray(window[I]))throw new Error(`Expected window[${String(I)}] to be an array`);return window[I]}else throw new Error("Cannot initialize QueueStore in a non-browser environment.")},"getScriptStore"),Z=C(()=>{if(W())(typeof window[o]!="object"||window[o]===null)&&(window[o]={});else throw new Error("Cannot initialize QueueStore in a non-browser environment.")},"ensureQueuesSymbolInitialized"),N=C(I=>{var g;return Z(),((g=window[o])==null?void 0:g[I])||!1},"getQueueStore"),H=C(I=>(Z(),g=>{window[o][I]=g}),"createHandleQueueCreated"),s=C(({store:I,createController:g,queueKey:A=J,isQueueCreated:t=N(A),onQueueCreated:c=H(A)})=>{if(!I||t)return;c(!0);let b=g(),G=I.splice(0,I.length);I.push=function(...n){return n.forEach(h=>{G.push(h),l()}),G.length};let i=!1;function l(){i||e()}C(l,"unqueue");function e(){return p(this,null,function*(){i=!0;let n=G.shift();if(n)return yield n(b),e();i=!1})}C(e,"next"),l()},"createLoadQueue");function r(I,g){return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_gravity_ui_page_constructor__WEBPACK_IMPORTED_MODULE_3__/* .PageConstructorProvider */ .Z,{ssrConfig:{isServer:g===void 0?typeof window>"u"&&typeof global<"u":g},children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_gravity_ui_page_constructor__WEBPACK_IMPORTED_MODULE_4__/* .PageConstructor */ .i,{content:I})})}C(r,"createPageConstructorElement");var B={PageConstructor:"yfm-page-constructor"};var a=Symbol.for("page-constructor-store"),z=Symbol.for("page-constructor-queue"),d=class{static{C(this,"PageConstructorController")}renderContainer(g){try{let A=g.getAttribute("data-hydrated")==="true",t=g.getAttribute("data-rendered")==="true";if(A||t)return;let c=g.getAttribute("data-content-encoded");if(!c)return;let b=decodeURIComponent(c),G=JSON.parse(b);!A&&g.innerHTML.trim()!==""?((0,react_dom_client__WEBPACK_IMPORTED_MODULE_1__/* .hydrateRoot */ .c)(g,r(G,!1)),g.setAttribute("data-hydrated","true")):t||((0,react_dom_client__WEBPACK_IMPORTED_MODULE_1__/* .createRoot */ .H)(g).render(r(G,!1)),g.setAttribute("data-rendered","true"))}catch(A){console.error("Failed to render component:",A)}}getContainers(){return typeof document>"u"?[]:Array.from(document.querySelectorAll(`.${B.PageConstructor}`))}render(){this.getContainers().forEach(A=>this.renderContainer(A))}},X={render:C(()=>{u(a).push(g=>{g.render()})},"render")};if(typeof document<"u"){let I=u(a);s({store:I,createController:C(()=>{let g=new d;return document.readyState==="complete"||document.readyState==="interactive"?g.render():document.addEventListener("DOMContentLoaded",()=>{g.render()}),g},"createController"),queueKey:z})}function D(I){let[g,A]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);return (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{let t=u(I),c=C(b=>{A(b)},"callback");return t.push(c),()=>{let b=t.indexOf(c);b>-1&&t.splice(b,1)}},[I]),g}C(D,"useController");function ng(){return D(a)}C(ng,"usePageConstructorController");function ag(){return (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(()=>{X.render()},[])}C(ag,"usePageConstructor");function rg(){return (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{X.render()},[]),null}C(rg,"PageConstructorRuntime");
13788
+ //# sourceMappingURL=index.js.map
13789
+
13790
+
13649
13791
  /***/ }),
13650
13792
 
13651
13793
  /***/ 26269:
@@ -20470,7 +20612,8 @@ __export(common_exports, {
20470
20612
  createLoadQueue: () => createLoadQueue,
20471
20613
  getQueueStore: () => getQueueStore,
20472
20614
  getScriptStore: () => getScriptStore,
20473
- isBrowser: () => isBrowser
20615
+ isBrowser: () => isBrowser,
20616
+ parseMdAttrs: () => parseMdAttrs
20474
20617
  });
20475
20618
  module.exports = __toCommonJS(common_exports);
20476
20619
 
@@ -20645,6 +20788,140 @@ _currentKeyType = new WeakMap();
20645
20788
  _selectors = new WeakMap();
20646
20789
  _handlers = new WeakMap();
20647
20790
 
20791
+ // src/lib/common/parse-md-attrs.ts
20792
+ function parseMdAttrs(md, src, pos, max) {
20793
+ if (pos >= max) {
20794
+ return null;
20795
+ }
20796
+ if (src.charCodeAt(pos) !== 123) {
20797
+ return null;
20798
+ }
20799
+ const attrs = {};
20800
+ ++pos;
20801
+ pos = skipBlanks(src, pos, max);
20802
+ for (; pos < max; pos = skipBlanks(src, pos, max)) {
20803
+ if (src.charCodeAt(pos) === 125) {
20804
+ ++pos;
20805
+ return { pos, attrs };
20806
+ }
20807
+ const c = src.charCodeAt(pos);
20808
+ if (c === 35) {
20809
+ ++pos;
20810
+ const rst = parseUnsurroundedName(src, pos, max);
20811
+ if (rst === null) {
20812
+ return null;
20813
+ }
20814
+ pos = rst.pos;
20815
+ const key = "id", value = rst.name;
20816
+ if (typeof attrs[key] === "undefined") {
20817
+ attrs[key] = [value];
20818
+ } else {
20819
+ attrs[key].push(value);
20820
+ }
20821
+ } else if (c === 46) {
20822
+ ++pos;
20823
+ const rst = parseUnsurroundedName(src, pos, max);
20824
+ if (rst === null) {
20825
+ return null;
20826
+ }
20827
+ pos = rst.pos;
20828
+ const key = "class", value = rst.name;
20829
+ if (typeof attrs[key] === "undefined") {
20830
+ attrs[key] = [value];
20831
+ } else {
20832
+ attrs[key].push(value);
20833
+ }
20834
+ } else {
20835
+ let rst = parseAttrName(src, pos, max);
20836
+ if (rst === null) {
20837
+ return null;
20838
+ }
20839
+ const key = rst.name;
20840
+ pos = rst.pos;
20841
+ pos = skipBlanks(src, pos, max);
20842
+ if (pos >= max) {
20843
+ return null;
20844
+ }
20845
+ let value;
20846
+ if (src.charCodeAt(pos) === 61) {
20847
+ ++pos;
20848
+ pos = skipBlanks(src, pos, max);
20849
+ if (pos >= max) {
20850
+ return null;
20851
+ }
20852
+ const c2 = src.charCodeAt(pos);
20853
+ if (c2 === 34 || c2 === 39) {
20854
+ const rst2 = md.helpers.parseLinkTitle(src, pos, max);
20855
+ if (!rst2.ok) {
20856
+ return null;
20857
+ }
20858
+ value = rst2.str;
20859
+ pos = rst2.pos;
20860
+ } else {
20861
+ rst = parseUnsurroundedName(src, pos, max);
20862
+ if (rst === null) {
20863
+ return null;
20864
+ }
20865
+ value = rst.name;
20866
+ pos = rst.pos;
20867
+ }
20868
+ } else {
20869
+ if (isBlank(src.charCodeAt(pos - 1))) {
20870
+ --pos;
20871
+ }
20872
+ value = "";
20873
+ }
20874
+ if (typeof value !== "undefined") {
20875
+ if (typeof attrs[key] === "undefined") {
20876
+ attrs[key] = [value];
20877
+ } else {
20878
+ attrs[key].push(value);
20879
+ }
20880
+ }
20881
+ }
20882
+ if (pos >= max) {
20883
+ return null;
20884
+ }
20885
+ const charBetween = src.charCodeAt(pos);
20886
+ if (!isBlank(charBetween) && charBetween !== 125) {
20887
+ return null;
20888
+ }
20889
+ }
20890
+ return null;
20891
+ function isBlank(code) {
20892
+ return md.utils.isSpace(code) || code === 10;
20893
+ }
20894
+ function skipBlanks(src2, pos2, max2) {
20895
+ for (; pos2 < max2; pos2++) {
20896
+ const code = src2.charCodeAt(pos2);
20897
+ if (!isBlank(code)) {
20898
+ break;
20899
+ }
20900
+ }
20901
+ return pos2;
20902
+ }
20903
+ }
20904
+ var ATTR_NAME_RE = /^[a-z][a-z0-9\-_]*/;
20905
+ function parseAttrName(src, pos, max) {
20906
+ const oldPos = pos;
20907
+ const rst = src.slice(pos, max).match(ATTR_NAME_RE);
20908
+ if (rst === null) {
20909
+ return null;
20910
+ }
20911
+ pos += rst[0].length;
20912
+ return { pos, name: src.slice(oldPos, pos) };
20913
+ }
20914
+ var UNSURROUNDED_STRING_RE = /^[a-z0-9\-_]+/i;
20915
+ function parseUnsurroundedName(src, pos, max) {
20916
+ const oldPos = pos;
20917
+ const rst = src.slice(pos, max).match(UNSURROUNDED_STRING_RE);
20918
+ if (rst === null) {
20919
+ return null;
20920
+ }
20921
+ pos += rst[0].length;
20922
+ return { pos, name: src.slice(oldPos, pos) };
20923
+ }
20924
+
20648
20925
  // src/lib/common/browser.ts
20649
20926
  var isBrowser = () => {
20650
20927
  return typeof window !== "undefined" && typeof window.document !== "undefined";
@@ -105490,12 +105767,18 @@ function findNextLine(src, startLine, endLine, state) {
105490
105767
  const max = state.eMarks[line];
105491
105768
  let pos = state.bMarks[line] + state.tShift[line];
105492
105769
  let pos2 = state.skipChars(pos, 0x3A);
105493
- if (pos2 - pos < 3) continue; // not a start mark or a close mark
105494
- if (pos2 === max) {
105495
- // close mark
105496
- --level;
105497
- } else {
105498
- // open mark
105770
+ let colonsCount = pos2 - pos;
105771
+
105772
+ if (colonsCount >= 3) {
105773
+ pos2 = skipBlanks(src, pos2, max);
105774
+ if (pos2 === max) {
105775
+ --level; // close mark
105776
+ continue;
105777
+ }
105778
+ }
105779
+
105780
+ // if it's an opening marker, increase nesting level
105781
+ if (colonsCount >= 3 && pos2 < max) {
105499
105782
  ++level;
105500
105783
  }
105501
105784
  }