@diplodoc/components 5.22.0 → 5.23.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.
Files changed (143) hide show
  1. package/build/cjs/components/BackToTop/BackToTop.css.map +1 -1
  2. package/build/cjs/components/BookmarkButton/BookmarkButton.css.map +1 -1
  3. package/build/cjs/components/Breadcrumbs/Breadcrumbs.css.map +1 -1
  4. package/build/cjs/components/ContributorAvatars/ContributorAvatars.css.map +1 -1
  5. package/build/cjs/components/Contributors/Contributors.css.map +1 -1
  6. package/build/cjs/components/Control/Control.css.map +1 -1
  7. package/build/cjs/components/Controls/Controls.css.map +1 -1
  8. package/build/cjs/components/Controls/Controls.d.ts +2 -0
  9. package/build/cjs/components/Controls/Controls.js +3 -1
  10. package/build/cjs/components/Controls/Controls.js.map +2 -2
  11. package/build/cjs/components/Controls/single-controls/DividerControl/DividerControl.css.map +1 -1
  12. package/build/cjs/components/Controls/single-controls/LangControl/LangControl.css.map +1 -1
  13. package/build/cjs/components/Controls/single-controls/MarkdownControl.d.ts +3 -1
  14. package/build/cjs/components/Controls/single-controls/MarkdownControl.js +110 -27
  15. package/build/cjs/components/Controls/single-controls/MarkdownControl.js.map +3 -3
  16. package/build/cjs/components/Controls/single-controls/SettingsControl/SettingsControl.css.map +1 -1
  17. package/build/cjs/components/Controls/single-controls/SettingsControl/SettingsControl.js +2 -2
  18. package/build/cjs/components/Controls/single-controls/SettingsControl/SettingsControl.js.map +2 -2
  19. package/build/cjs/components/Controls/single-controls/markdown-url.d.ts +4 -0
  20. package/build/cjs/components/Controls/single-controls/markdown-url.js +56 -0
  21. package/build/cjs/components/Controls/single-controls/markdown-url.js.map +7 -0
  22. package/build/cjs/components/DocLayout/DocLayout.css.map +1 -1
  23. package/build/cjs/components/DocLeadingPage/DocLeadingPage.css.map +1 -1
  24. package/build/cjs/components/DocPage/DocPage.css.map +1 -1
  25. package/build/cjs/components/DocPage/DocPage.js +6 -1
  26. package/build/cjs/components/DocPage/DocPage.js.map +2 -2
  27. package/build/cjs/components/DocPageTitle/DocPageTitle.css.map +1 -1
  28. package/build/cjs/components/ErrorPage/ErrorPage.css.map +1 -1
  29. package/build/cjs/components/Feedback/Feedback.css.map +1 -1
  30. package/build/cjs/components/Gallery/Gallery.css.map +1 -1
  31. package/build/cjs/components/Mark/Mark.css.map +1 -1
  32. package/build/cjs/components/MiniToc/MiniToc.css.map +1 -1
  33. package/build/cjs/components/MobileControls/MobileControl/MobileControl.css.map +1 -1
  34. package/build/cjs/components/MobileControls/MobileControlSheet/MobileControlSheet.css.map +1 -1
  35. package/build/cjs/components/MobileControls/MobileControls.css.map +1 -1
  36. package/build/cjs/components/NeuroExpertModal/NeuroExpertModal.css.map +1 -1
  37. package/build/cjs/components/Notification/Notification.css.map +1 -1
  38. package/build/cjs/components/Paginator/Paginator.css.map +1 -1
  39. package/build/cjs/components/SearchBar/SearchBar.css.map +1 -1
  40. package/build/cjs/components/SearchItem/SearchItem.css.map +1 -1
  41. package/build/cjs/components/SearchPage/SearchPage.css.map +1 -1
  42. package/build/cjs/components/SearchSuggest/index.css.map +1 -1
  43. package/build/cjs/components/ShareButton/ShareButton.css.map +1 -1
  44. package/build/cjs/components/SubNavigation/SubNavigation.css.map +1 -1
  45. package/build/cjs/components/Subscribe/Subscribe.css.map +1 -1
  46. package/build/cjs/components/Summary/Summary.css.map +1 -1
  47. package/build/cjs/components/Tags/Tags.css.map +1 -1
  48. package/build/cjs/components/TagsFilter/TagsFilter.css.map +1 -1
  49. package/build/cjs/components/Toc/Toc.css.map +1 -1
  50. package/build/cjs/components/TocItem/TocItem.css.map +1 -1
  51. package/build/cjs/components/TocLable/TocLabel.css.map +1 -1
  52. package/build/cjs/components/TocNavPanel/TocNavPanel.css.map +1 -1
  53. package/build/cjs/components/ToggleArrow/ToggleArrow.css.map +1 -1
  54. package/build/cjs/components/UpdatedAtDate/UpdatedAtDate.css.map +1 -1
  55. package/build/cjs/components/Widgets/Widgets.css.map +1 -1
  56. package/build/cjs/components/constants.d.ts +1 -0
  57. package/build/cjs/components/navigation/CustomFooter/CustomFooter.css.map +1 -1
  58. package/build/cjs/components/navigation/CustomNavigation/CustomNavigation.css.map +1 -1
  59. package/build/cjs/components/navigation/DropdownContent/Column/Column.css.map +1 -1
  60. package/build/cjs/components/navigation/DropdownContent/DropdownContent.css.map +1 -1
  61. package/build/cjs/components/navigation/DropdownContent/Section/Section.css.map +1 -1
  62. package/build/cjs/components/navigation/Label/Label.css.map +1 -1
  63. package/build/cjs/components/navigation/MobileDropdown/MobileDropdown.css.map +1 -1
  64. package/build/cjs/components/navigation/NavigationDropdown/NavigationDropdown.css.map +1 -1
  65. package/build/cjs/components/navigation/Sidebar/Sidebar.css.map +1 -1
  66. package/build/cjs/components/navigation/SidebarContent/SidebarContent.css.map +1 -1
  67. package/build/cjs/components/navigation/SidebarNavigation/SidebarNavigation.css.map +1 -1
  68. package/build/cjs/components/navigation/ToMainMenu/ToMainMenu.css.map +1 -1
  69. package/build/cjs/contexts/InterfaceContext.d.ts +5 -1
  70. package/build/cjs/contexts/InterfaceContext.js.map +2 -2
  71. package/build/esm/components/BackToTop/BackToTop.css.map +1 -1
  72. package/build/esm/components/BookmarkButton/BookmarkButton.css.map +1 -1
  73. package/build/esm/components/Breadcrumbs/Breadcrumbs.css.map +1 -1
  74. package/build/esm/components/ContributorAvatars/ContributorAvatars.css.map +1 -1
  75. package/build/esm/components/Contributors/Contributors.css.map +1 -1
  76. package/build/esm/components/Control/Control.css.map +1 -1
  77. package/build/esm/components/Controls/Controls.css.map +1 -1
  78. package/build/esm/components/Controls/Controls.d.ts +2 -0
  79. package/build/esm/components/Controls/Controls.js +3 -1
  80. package/build/esm/components/Controls/Controls.js.map +2 -2
  81. package/build/esm/components/Controls/single-controls/DividerControl/DividerControl.css.map +1 -1
  82. package/build/esm/components/Controls/single-controls/LangControl/LangControl.css.map +1 -1
  83. package/build/esm/components/Controls/single-controls/MarkdownControl.d.ts +3 -1
  84. package/build/esm/components/Controls/single-controls/MarkdownControl.js +103 -30
  85. package/build/esm/components/Controls/single-controls/MarkdownControl.js.map +3 -3
  86. package/build/esm/components/Controls/single-controls/SettingsControl/SettingsControl.css.map +1 -1
  87. package/build/esm/components/Controls/single-controls/SettingsControl/SettingsControl.js +2 -2
  88. package/build/esm/components/Controls/single-controls/SettingsControl/SettingsControl.js.map +2 -2
  89. package/build/esm/components/Controls/single-controls/markdown-url.d.ts +4 -0
  90. package/build/esm/components/Controls/single-controls/markdown-url.js +35 -0
  91. package/build/esm/components/Controls/single-controls/markdown-url.js.map +7 -0
  92. package/build/esm/components/DocLayout/DocLayout.css.map +1 -1
  93. package/build/esm/components/DocLeadingPage/DocLeadingPage.css.map +1 -1
  94. package/build/esm/components/DocPage/DocPage.css.map +1 -1
  95. package/build/esm/components/DocPage/DocPage.js +6 -1
  96. package/build/esm/components/DocPage/DocPage.js.map +2 -2
  97. package/build/esm/components/DocPageTitle/DocPageTitle.css.map +1 -1
  98. package/build/esm/components/ErrorPage/ErrorPage.css.map +1 -1
  99. package/build/esm/components/Feedback/Feedback.css.map +1 -1
  100. package/build/esm/components/Gallery/Gallery.css.map +1 -1
  101. package/build/esm/components/Mark/Mark.css.map +1 -1
  102. package/build/esm/components/MiniToc/MiniToc.css.map +1 -1
  103. package/build/esm/components/MobileControls/MobileControl/MobileControl.css.map +1 -1
  104. package/build/esm/components/MobileControls/MobileControlSheet/MobileControlSheet.css.map +1 -1
  105. package/build/esm/components/MobileControls/MobileControls.css.map +1 -1
  106. package/build/esm/components/NeuroExpertModal/NeuroExpertModal.css.map +1 -1
  107. package/build/esm/components/Notification/Notification.css.map +1 -1
  108. package/build/esm/components/Paginator/Paginator.css.map +1 -1
  109. package/build/esm/components/SearchBar/SearchBar.css.map +1 -1
  110. package/build/esm/components/SearchItem/SearchItem.css.map +1 -1
  111. package/build/esm/components/SearchPage/SearchPage.css.map +1 -1
  112. package/build/esm/components/SearchSuggest/index.css.map +1 -1
  113. package/build/esm/components/ShareButton/ShareButton.css.map +1 -1
  114. package/build/esm/components/SubNavigation/SubNavigation.css.map +1 -1
  115. package/build/esm/components/Subscribe/Subscribe.css.map +1 -1
  116. package/build/esm/components/Summary/Summary.css.map +1 -1
  117. package/build/esm/components/Tags/Tags.css.map +1 -1
  118. package/build/esm/components/TagsFilter/TagsFilter.css.map +1 -1
  119. package/build/esm/components/Toc/Toc.css.map +1 -1
  120. package/build/esm/components/TocItem/TocItem.css.map +1 -1
  121. package/build/esm/components/TocLable/TocLabel.css.map +1 -1
  122. package/build/esm/components/TocNavPanel/TocNavPanel.css.map +1 -1
  123. package/build/esm/components/ToggleArrow/ToggleArrow.css.map +1 -1
  124. package/build/esm/components/UpdatedAtDate/UpdatedAtDate.css.map +1 -1
  125. package/build/esm/components/Widgets/Widgets.css.map +1 -1
  126. package/build/esm/components/constants.d.ts +1 -0
  127. package/build/esm/components/navigation/CustomFooter/CustomFooter.css.map +1 -1
  128. package/build/esm/components/navigation/CustomNavigation/CustomNavigation.css.map +1 -1
  129. package/build/esm/components/navigation/DropdownContent/Column/Column.css.map +1 -1
  130. package/build/esm/components/navigation/DropdownContent/DropdownContent.css.map +1 -1
  131. package/build/esm/components/navigation/DropdownContent/Section/Section.css.map +1 -1
  132. package/build/esm/components/navigation/Label/Label.css.map +1 -1
  133. package/build/esm/components/navigation/MobileDropdown/MobileDropdown.css.map +1 -1
  134. package/build/esm/components/navigation/NavigationDropdown/NavigationDropdown.css.map +1 -1
  135. package/build/esm/components/navigation/Sidebar/Sidebar.css.map +1 -1
  136. package/build/esm/components/navigation/SidebarContent/SidebarContent.css.map +1 -1
  137. package/build/esm/components/navigation/SidebarNavigation/SidebarNavigation.css.map +1 -1
  138. package/build/esm/components/navigation/ToMainMenu/ToMainMenu.css.map +1 -1
  139. package/build/esm/contexts/InterfaceContext.d.ts +5 -1
  140. package/build/esm/contexts/InterfaceContext.js.map +2 -2
  141. package/build/index.css.map +1 -1
  142. package/build/themes/common/index.css.map +1 -1
  143. package/package.json +1 -1
@@ -1,47 +1,83 @@
1
1
  // src/components/Controls/single-controls/MarkdownControl.tsx
2
- import { useCallback, useContext, useMemo } from "react";
3
- import { Copy, LogoMarkdown } from "@gravity-ui/icons";
4
- import { DropdownMenu, Icon } from "@gravity-ui/uikit";
2
+ import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
3
+ import { Copy, LogoMarkdown, SquareCheck } from "@gravity-ui/icons";
4
+ import { ActionTooltip, Button, DropdownMenu, Icon } from "@gravity-ui/uikit";
5
5
  import { useTranslation } from "../../../hooks";
6
6
  import { CommonAnalyticsEvent, useAnalytics } from "../../../shared/libs/analytics";
7
7
  import { ControlsLayoutContext } from "../ControlsLayout";
8
- import { jsx } from "react/jsx-runtime";
9
- function getMarkdownUrl(currentUrl) {
10
- const markdownUrl = new URL(currentUrl);
11
- if (markdownUrl.pathname.endsWith("/")) {
12
- markdownUrl.pathname += "index.md";
13
- } else {
14
- markdownUrl.pathname = markdownUrl.pathname.replace(/\.(?:html?|md)$/i, "") + ".md";
15
- }
16
- return markdownUrl.toString();
17
- }
18
- var MarkdownControl = ({ mdDocsUrl, onClick }) => {
8
+ import { getMarkdownUrl, resolveMarkdownActionUrl } from "./markdown-url";
9
+ import { getMarkdownUrl as getMarkdownUrl2 } from "./markdown-url";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ var COPY_SUCCESS_TIMEOUT = 2e3;
12
+ var MarkdownControl = ({
13
+ mode = "dropdown",
14
+ mdDocsUrl,
15
+ onClick
16
+ }) => {
19
17
  const { t } = useTranslation("markdown-button");
20
18
  const analytics = useAnalytics();
21
19
  const { controlClassName, controlSize } = useContext(ControlsLayoutContext);
20
+ const [copyState, setCopyState] = useState("idle");
21
+ const [dropdownOpen, setDropdownOpen] = useState(false);
22
+ const ignoreNextClose = useRef(false);
23
+ const copySuccessTimer = useRef(void 0);
22
24
  const resolveMarkdownUrl = useCallback(
23
- () => mdDocsUrl || getMarkdownUrl(window.location.href),
25
+ (action) => {
26
+ if (!mdDocsUrl) {
27
+ return getMarkdownUrl(window.location.href, action);
28
+ }
29
+ return resolveMarkdownActionUrl(mdDocsUrl, window.location.href, action);
30
+ },
24
31
  [mdDocsUrl]
25
32
  );
33
+ useEffect(
34
+ () => () => {
35
+ if (copySuccessTimer.current) {
36
+ clearTimeout(copySuccessTimer.current);
37
+ }
38
+ },
39
+ []
40
+ );
26
41
  const copyMarkdown = useCallback(async () => {
27
42
  var _a;
43
+ if (copyState === "pending") {
44
+ return;
45
+ }
28
46
  analytics.track(CommonAnalyticsEvent.DOCS_COPY_AS_MARKDOWN_CLICK);
29
- const response = await fetch(resolveMarkdownUrl(), {
30
- credentials: "same-origin",
31
- headers: { Accept: "text/markdown" }
32
- });
33
- if (!response.ok || !((_a = response.headers.get("content-type")) == null ? void 0 : _a.includes("text/markdown"))) {
34
- throw new Error(`Failed to load Markdown: ${response.status}`);
47
+ if (copySuccessTimer.current) {
48
+ clearTimeout(copySuccessTimer.current);
49
+ copySuccessTimer.current = void 0;
35
50
  }
36
- await navigator.clipboard.writeText(await response.text());
37
- }, [analytics, resolveMarkdownUrl]);
51
+ setCopyState("pending");
52
+ try {
53
+ const response = await fetch(resolveMarkdownUrl("copy"), {
54
+ credentials: "same-origin",
55
+ headers: { Accept: "text/markdown" }
56
+ });
57
+ if (!response.ok || !((_a = response.headers.get("content-type")) == null ? void 0 : _a.includes("text/markdown"))) {
58
+ throw new Error(`Failed to load Markdown: ${response.status}`);
59
+ }
60
+ await navigator.clipboard.writeText(await response.text());
61
+ setCopyState("success");
62
+ copySuccessTimer.current = setTimeout(() => {
63
+ copySuccessTimer.current = void 0;
64
+ setCopyState("idle");
65
+ }, COPY_SUCCESS_TIMEOUT);
66
+ } catch (e) {
67
+ setCopyState("idle");
68
+ }
69
+ }, [analytics, copyState, resolveMarkdownUrl]);
70
+ const handleCopy = useCallback(() => {
71
+ ignoreNextClose.current = mode === "dropdown";
72
+ copyMarkdown();
73
+ }, [copyMarkdown, mode]);
38
74
  const viewMarkdown = useCallback(
39
75
  (event) => {
40
76
  analytics.track(CommonAnalyticsEvent.DOCS_VIEW_AS_MARKDOWN_CLICK);
41
77
  if ("nativeEvent" in event) {
42
78
  onClick == null ? void 0 : onClick(event);
43
79
  }
44
- window.open(resolveMarkdownUrl(), "_blank", "noopener,noreferrer");
80
+ window.open(resolveMarkdownUrl("view"), "_blank", "noopener,noreferrer");
45
81
  },
46
82
  [analytics, onClick, resolveMarkdownUrl]
47
83
  );
@@ -49,10 +85,10 @@ var MarkdownControl = ({ mdDocsUrl, onClick }) => {
49
85
  () => [
50
86
  {
51
87
  text: t("copy-as-markdown"),
52
- iconStart: /* @__PURE__ */ jsx(Icon, { data: Copy, size: 16 }),
53
- action: () => {
54
- copyMarkdown().catch(() => void 0);
55
- }
88
+ iconStart: /* @__PURE__ */ jsx(Icon, { data: copyState === "success" ? SquareCheck : Copy, size: 16 }),
89
+ disabled: copyState === "pending",
90
+ className: `dc-markdown-control__copy_${copyState}`,
91
+ action: handleCopy
56
92
  },
57
93
  {
58
94
  text: t("view-in-markdown"),
@@ -60,12 +96,49 @@ var MarkdownControl = ({ mdDocsUrl, onClick }) => {
60
96
  action: viewMarkdown
61
97
  }
62
98
  ],
63
- [copyMarkdown, t, viewMarkdown]
99
+ [copyState, handleCopy, t, viewMarkdown]
64
100
  );
101
+ const handleDropdownToggle = useCallback((open) => {
102
+ if (!open && ignoreNextClose.current) {
103
+ ignoreNextClose.current = false;
104
+ return;
105
+ }
106
+ setDropdownOpen(open);
107
+ }, []);
108
+ if (mode === "visible") {
109
+ return /* @__PURE__ */ jsxs(React.Fragment, { children: [
110
+ /* @__PURE__ */ jsx(ActionTooltip, { title: t("copy-as-markdown"), children: /* @__PURE__ */ jsx(
111
+ Button,
112
+ {
113
+ "aria-label": t("copy-as-markdown"),
114
+ className: `${controlClassName || ""} dc-markdown-control__copy_${copyState}`.trim(),
115
+ size: controlSize,
116
+ view: "flat-secondary",
117
+ disabled: copyState === "pending",
118
+ "data-copy-state": copyState,
119
+ onClick: handleCopy,
120
+ children: /* @__PURE__ */ jsx(Button.Icon, { children: copyState === "success" ? /* @__PURE__ */ jsx(SquareCheck, {}) : /* @__PURE__ */ jsx(Copy, {}) })
121
+ }
122
+ ) }),
123
+ /* @__PURE__ */ jsx(ActionTooltip, { title: t("view-in-markdown"), children: /* @__PURE__ */ jsx(
124
+ Button,
125
+ {
126
+ "aria-label": t("view-in-markdown"),
127
+ className: controlClassName,
128
+ size: controlSize,
129
+ view: "flat-secondary",
130
+ onClick: viewMarkdown,
131
+ children: /* @__PURE__ */ jsx(Button.Icon, { children: /* @__PURE__ */ jsx(LogoMarkdown, {}) })
132
+ }
133
+ ) })
134
+ ] });
135
+ }
65
136
  return /* @__PURE__ */ jsx(
66
137
  DropdownMenu,
67
138
  {
68
139
  items,
140
+ open: dropdownOpen,
141
+ onOpenToggle: handleDropdownToggle,
69
142
  size: controlSize,
70
143
  switcherWrapperClassName: controlClassName,
71
144
  defaultSwitcherProps: {
@@ -79,6 +152,6 @@ var MarkdownControl = ({ mdDocsUrl, onClick }) => {
79
152
  var MarkdownControl_default = MarkdownControl;
80
153
  export {
81
154
  MarkdownControl_default as default,
82
- getMarkdownUrl
155
+ getMarkdownUrl2 as getMarkdownUrl
83
156
  };
84
157
  //# sourceMappingURL=MarkdownControl.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/Controls/single-controls/MarkdownControl.tsx"],
4
- "sourcesContent": ["import type {DropdownMenuItem} from '@gravity-ui/uikit';\n\nimport React, {useCallback, useContext, useMemo} from 'react';\nimport {Copy, LogoMarkdown} from '@gravity-ui/icons';\nimport {DropdownMenu, Icon} from '@gravity-ui/uikit';\n\nimport {useTranslation} from '../../../hooks';\nimport {CommonAnalyticsEvent, useAnalytics} from '../../../shared/libs/analytics';\nimport {ControlsLayoutContext} from '../ControlsLayout';\n\nexport function getMarkdownUrl(currentUrl: string) {\n const markdownUrl = new URL(currentUrl);\n\n if (markdownUrl.pathname.endsWith('/')) {\n markdownUrl.pathname += 'index.md';\n } else {\n markdownUrl.pathname = markdownUrl.pathname.replace(/\\.(?:html?|md)$/i, '') + '.md';\n }\n\n return markdownUrl.toString();\n}\n\nexport interface MarkdownControlProps {\n mdDocsUrl?: string;\n onClick?: React.MouseEventHandler<HTMLElement>;\n}\n\nconst MarkdownControl: React.FC<MarkdownControlProps> = ({mdDocsUrl, onClick}) => {\n const {t} = useTranslation('markdown-button');\n const analytics = useAnalytics();\n const {controlClassName, controlSize} = useContext(ControlsLayoutContext);\n const resolveMarkdownUrl = useCallback(\n () => mdDocsUrl || getMarkdownUrl(window.location.href),\n [mdDocsUrl],\n );\n\n const copyMarkdown = useCallback(async () => {\n analytics.track(CommonAnalyticsEvent.DOCS_COPY_AS_MARKDOWN_CLICK);\n\n const response = await fetch(resolveMarkdownUrl(), {\n credentials: 'same-origin',\n headers: {Accept: 'text/markdown'},\n });\n\n if (!response.ok || !response.headers.get('content-type')?.includes('text/markdown')) {\n throw new Error(`Failed to load Markdown: ${response.status}`);\n }\n\n await navigator.clipboard.writeText(await response.text());\n }, [analytics, resolveMarkdownUrl]);\n\n const viewMarkdown = useCallback<NonNullable<DropdownMenuItem<unknown>['action']>>(\n (event) => {\n analytics.track(CommonAnalyticsEvent.DOCS_VIEW_AS_MARKDOWN_CLICK);\n\n if ('nativeEvent' in event) {\n onClick?.(event);\n }\n\n window.open(resolveMarkdownUrl(), '_blank', 'noopener,noreferrer');\n },\n [analytics, onClick, resolveMarkdownUrl],\n );\n\n const items = useMemo<DropdownMenuItem<unknown>[]>(\n () => [\n {\n text: t('copy-as-markdown'),\n iconStart: <Icon data={Copy} size={16} />,\n action: () => {\n copyMarkdown().catch(() => undefined);\n },\n },\n {\n text: t('view-in-markdown'),\n iconStart: <Icon data={LogoMarkdown} size={16} />,\n action: viewMarkdown,\n },\n ],\n [copyMarkdown, t, viewMarkdown],\n );\n\n return (\n <DropdownMenu\n items={items}\n size={controlSize}\n switcherWrapperClassName={controlClassName}\n defaultSwitcherProps={{\n 'aria-label': t('markdown-actions'),\n view: 'flat-secondary',\n }}\n popupProps={{placement: ['bottom-end', 'top-end']}}\n />\n );\n};\n\nexport default MarkdownControl;\n"],
5
- "mappings": ";AAEA,SAAe,aAAa,YAAY,eAAc;AACtD,SAAQ,MAAM,oBAAmB;AACjC,SAAQ,cAAc,YAAW;AAEjC,SAAQ,sBAAqB;AAC7B,SAAQ,sBAAsB,oBAAmB;AACjD,SAAQ,6BAA4B;AA4DT;AA1DpB,SAAS,eAAe,YAAoB;AAC/C,QAAM,cAAc,IAAI,IAAI,UAAU;AAEtC,MAAI,YAAY,SAAS,SAAS,GAAG,GAAG;AACpC,gBAAY,YAAY;AAAA,EAC5B,OAAO;AACH,gBAAY,WAAW,YAAY,SAAS,QAAQ,oBAAoB,EAAE,IAAI;AAAA,EAClF;AAEA,SAAO,YAAY,SAAS;AAChC;AAOA,IAAM,kBAAkD,CAAC,EAAC,WAAW,QAAO,MAAM;AAC9E,QAAM,EAAC,EAAC,IAAI,eAAe,iBAAiB;AAC5C,QAAM,YAAY,aAAa;AAC/B,QAAM,EAAC,kBAAkB,YAAW,IAAI,WAAW,qBAAqB;AACxE,QAAM,qBAAqB;AAAA,IACvB,MAAM,aAAa,eAAe,OAAO,SAAS,IAAI;AAAA,IACtD,CAAC,SAAS;AAAA,EACd;AAEA,QAAM,eAAe,YAAY,YAAY;AApCjD;AAqCQ,cAAU,MAAM,qBAAqB,2BAA2B;AAEhE,UAAM,WAAW,MAAM,MAAM,mBAAmB,GAAG;AAAA,MAC/C,aAAa;AAAA,MACb,SAAS,EAAC,QAAQ,gBAAe;AAAA,IACrC,CAAC;AAED,QAAI,CAAC,SAAS,MAAM,GAAC,cAAS,QAAQ,IAAI,cAAc,MAAnC,mBAAsC,SAAS,mBAAkB;AAClF,YAAM,IAAI,MAAM,4BAA4B,SAAS,MAAM,EAAE;AAAA,IACjE;AAEA,UAAM,UAAU,UAAU,UAAU,MAAM,SAAS,KAAK,CAAC;AAAA,EAC7D,GAAG,CAAC,WAAW,kBAAkB,CAAC;AAElC,QAAM,eAAe;AAAA,IACjB,CAAC,UAAU;AACP,gBAAU,MAAM,qBAAqB,2BAA2B;AAEhE,UAAI,iBAAiB,OAAO;AACxB,2CAAU;AAAA,MACd;AAEA,aAAO,KAAK,mBAAmB,GAAG,UAAU,qBAAqB;AAAA,IACrE;AAAA,IACA,CAAC,WAAW,SAAS,kBAAkB;AAAA,EAC3C;AAEA,QAAM,QAAQ;AAAA,IACV,MAAM;AAAA,MACF;AAAA,QACI,MAAM,EAAE,kBAAkB;AAAA,QAC1B,WAAW,oBAAC,QAAK,MAAM,MAAM,MAAM,IAAI;AAAA,QACvC,QAAQ,MAAM;AACV,uBAAa,EAAE,MAAM,MAAM,MAAS;AAAA,QACxC;AAAA,MACJ;AAAA,MACA;AAAA,QACI,MAAM,EAAE,kBAAkB;AAAA,QAC1B,WAAW,oBAAC,QAAK,MAAM,cAAc,MAAM,IAAI;AAAA,QAC/C,QAAQ;AAAA,MACZ;AAAA,IACJ;AAAA,IACA,CAAC,cAAc,GAAG,YAAY;AAAA,EAClC;AAEA,SACI;AAAA,IAAC;AAAA;AAAA,MACG;AAAA,MACA,MAAM;AAAA,MACN,0BAA0B;AAAA,MAC1B,sBAAsB;AAAA,QAClB,cAAc,EAAE,kBAAkB;AAAA,QAClC,MAAM;AAAA,MACV;AAAA,MACA,YAAY,EAAC,WAAW,CAAC,cAAc,SAAS,EAAC;AAAA;AAAA,EACrD;AAER;AAEA,IAAO,0BAAQ;",
6
- "names": []
4
+ "sourcesContent": ["import type {DropdownMenuItem} from '@gravity-ui/uikit';\nimport type {MarkdownActionsMode} from '../../../contexts/InterfaceContext';\n\nimport React, {useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react';\nimport {Copy, LogoMarkdown, SquareCheck} from '@gravity-ui/icons';\nimport {ActionTooltip, Button, DropdownMenu, Icon} from '@gravity-ui/uikit';\n\nimport {useTranslation} from '../../../hooks';\nimport {CommonAnalyticsEvent, useAnalytics} from '../../../shared/libs/analytics';\nimport {ControlsLayoutContext} from '../ControlsLayout';\n\nimport {type MarkdownAction, getMarkdownUrl, resolveMarkdownActionUrl} from './markdown-url';\n\nconst COPY_SUCCESS_TIMEOUT = 2000;\n\nexport {getMarkdownUrl} from './markdown-url';\n\ntype CopyState = 'idle' | 'pending' | 'success';\n\nexport interface MarkdownControlProps {\n mode?: Exclude<MarkdownActionsMode, 'none'>;\n mdDocsUrl?: string;\n onClick?: React.MouseEventHandler<HTMLElement>;\n}\n\nconst MarkdownControl: React.FC<MarkdownControlProps> = ({\n mode = 'dropdown',\n mdDocsUrl,\n onClick,\n}) => {\n const {t} = useTranslation('markdown-button');\n const analytics = useAnalytics();\n const {controlClassName, controlSize} = useContext(ControlsLayoutContext);\n const [copyState, setCopyState] = useState<CopyState>('idle');\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const ignoreNextClose = useRef(false);\n const copySuccessTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n const resolveMarkdownUrl = useCallback(\n (action: MarkdownAction) => {\n if (!mdDocsUrl) {\n return getMarkdownUrl(window.location.href, action);\n }\n\n return resolveMarkdownActionUrl(mdDocsUrl, window.location.href, action);\n },\n [mdDocsUrl],\n );\n\n useEffect(\n () => () => {\n if (copySuccessTimer.current) {\n clearTimeout(copySuccessTimer.current);\n }\n },\n [],\n );\n\n const copyMarkdown = useCallback(async () => {\n if (copyState === 'pending') {\n return;\n }\n\n analytics.track(CommonAnalyticsEvent.DOCS_COPY_AS_MARKDOWN_CLICK);\n if (copySuccessTimer.current) {\n clearTimeout(copySuccessTimer.current);\n copySuccessTimer.current = undefined;\n }\n setCopyState('pending');\n\n try {\n const response = await fetch(resolveMarkdownUrl('copy'), {\n credentials: 'same-origin',\n headers: {Accept: 'text/markdown'},\n });\n\n if (!response.ok || !response.headers.get('content-type')?.includes('text/markdown')) {\n throw new Error(`Failed to load Markdown: ${response.status}`);\n }\n\n await navigator.clipboard.writeText(await response.text());\n setCopyState('success');\n\n copySuccessTimer.current = setTimeout(() => {\n copySuccessTimer.current = undefined;\n setCopyState('idle');\n }, COPY_SUCCESS_TIMEOUT);\n } catch {\n setCopyState('idle');\n }\n }, [analytics, copyState, resolveMarkdownUrl]);\n\n const handleCopy = useCallback(() => {\n ignoreNextClose.current = mode === 'dropdown';\n copyMarkdown();\n }, [copyMarkdown, mode]);\n\n const viewMarkdown = useCallback<NonNullable<DropdownMenuItem<unknown>['action']>>(\n (event) => {\n analytics.track(CommonAnalyticsEvent.DOCS_VIEW_AS_MARKDOWN_CLICK);\n\n if ('nativeEvent' in event) {\n onClick?.(event);\n }\n\n window.open(resolveMarkdownUrl('view'), '_blank', 'noopener,noreferrer');\n },\n [analytics, onClick, resolveMarkdownUrl],\n );\n\n const items = useMemo<DropdownMenuItem<unknown>[]>(\n () => [\n {\n text: t('copy-as-markdown'),\n iconStart: <Icon data={copyState === 'success' ? SquareCheck : Copy} size={16} />,\n disabled: copyState === 'pending',\n className: `dc-markdown-control__copy_${copyState}`,\n action: handleCopy,\n },\n {\n text: t('view-in-markdown'),\n iconStart: <Icon data={LogoMarkdown} size={16} />,\n action: viewMarkdown,\n },\n ],\n [copyState, handleCopy, t, viewMarkdown],\n );\n\n const handleDropdownToggle = useCallback((open: boolean) => {\n if (!open && ignoreNextClose.current) {\n ignoreNextClose.current = false;\n return;\n }\n\n setDropdownOpen(open);\n }, []);\n\n if (mode === 'visible') {\n return (\n <React.Fragment>\n <ActionTooltip title={t('copy-as-markdown')}>\n <Button\n aria-label={t('copy-as-markdown')}\n className={`${controlClassName || ''} dc-markdown-control__copy_${copyState}`.trim()}\n size={controlSize}\n view=\"flat-secondary\"\n disabled={copyState === 'pending'}\n data-copy-state={copyState}\n onClick={handleCopy}\n >\n <Button.Icon>\n {copyState === 'success' ? <SquareCheck /> : <Copy />}\n </Button.Icon>\n </Button>\n </ActionTooltip>\n <ActionTooltip title={t('view-in-markdown')}>\n <Button\n aria-label={t('view-in-markdown')}\n className={controlClassName}\n size={controlSize}\n view=\"flat-secondary\"\n onClick={viewMarkdown}\n >\n <Button.Icon>\n <LogoMarkdown />\n </Button.Icon>\n </Button>\n </ActionTooltip>\n </React.Fragment>\n );\n }\n\n return (\n <DropdownMenu\n items={items}\n open={dropdownOpen}\n onOpenToggle={handleDropdownToggle}\n size={controlSize}\n switcherWrapperClassName={controlClassName}\n defaultSwitcherProps={{\n 'aria-label': t('markdown-actions'),\n view: 'flat-secondary',\n }}\n popupProps={{placement: ['bottom-end', 'top-end']}}\n />\n );\n};\n\nexport default MarkdownControl;\n"],
5
+ "mappings": "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",
6
+ "names": ["getMarkdownUrl"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../src/components/Controls/single-controls/SettingsControl/SettingsControl.scss", "../../../../../../src/components/Controls/single-controls/SettingsControl/%3Cinput css Tvi0sQ%3E", "../../../../../../src/styles/mixins.scss"],
3
+ "sources": ["../../../../../../src/components/Controls/single-controls/SettingsControl/SettingsControl.scss", "../../../../../../src/components/Controls/single-controls/SettingsControl/%3Cinput css TKR5ZT%3E", "../../../../../../src/styles/mixins.scss"],
4
4
  "sourcesContent": ["@use 'sass:map';\n@use '../../../../styles/mixins';\n@use '../../../../styles/variables';\n\n.dc-settings-control {\n &__text-size-control {\n display: flex;\n align-items: center;\n }\n\n &__text-size-button {\n &_s {\n @include mixins.text-size(body-1);\n }\n &_m {\n @include mixins.text-size(body-2);\n }\n &_l {\n @include mixins.text-size(body-3);\n }\n }\n\n &__text-size-button-icon {\n &_active {\n color: var(--g-color-base-brand);\n }\n }\n\n &__popup {\n width: 230px;\n @include mixins.text-size(body-1);\n }\n\n &__popup-tooltip-content {\n padding: 0;\n }\n\n &__list {\n padding: 4px 0;\n width: 230px;\n\n .g-list__item_active {\n background: transparent;\n }\n }\n\n &__list-icon {\n margin-right: 8px;\n }\n\n &__list-item {\n display: flex;\n padding: 12px;\n width: 100%;\n }\n\n &__list-item-description {\n color: var(--g-color-text-secondary);\n }\n\n &__list-item-control {\n display: flex;\n align-items: center;\n margin-left: auto;\n\n [dir='rtl'] & {\n margin: 0 auto 0 0;\n }\n\n [dir='rtl'] & > label {\n transform: rotate(180deg);\n }\n }\n\n @media (max-width: map.get(variables.$screenBreakpoints, 'md')) {\n &__popup {\n width: 100vw;\n }\n\n &__popup-tooltip {\n position: fixed;\n /* stylelint-disable-next-line declaration-no-important */\n inset: var(--header-height) 0px auto 0px !important;\n /* stylelint-disable-next-line declaration-no-important */\n transform: translate3d(0, 0, 0) !important;\n }\n\n &__popup-tooltip-content {\n max-width: 100%;\n }\n\n &__list {\n width: 100%;\n }\n }\n}\n", ".dc-settings-control__text-size-control {\n display: flex;\n align-items: center;\n}\n.dc-settings-control__text-size-button_s {\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n}\n.dc-settings-control__text-size-button_m {\n font-size: var(--g-text-body-2-font-size);\n line-height: var(--g-text-body-2-line-height);\n}\n.dc-settings-control__text-size-button_l {\n font-size: var(--g-text-body-3-font-size);\n line-height: var(--g-text-body-3-line-height);\n}\n.dc-settings-control__text-size-button-icon_active {\n color: var(--g-color-base-brand);\n}\n.dc-settings-control__popup {\n width: 230px;\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n}\n.dc-settings-control__popup-tooltip-content {\n padding: 0;\n}\n.dc-settings-control__list {\n padding: 4px 0;\n width: 230px;\n}\n.dc-settings-control__list .g-list__item_active {\n background: transparent;\n}\n.dc-settings-control__list-icon {\n margin-right: 8px;\n}\n.dc-settings-control__list-item {\n display: flex;\n padding: 12px;\n width: 100%;\n}\n.dc-settings-control__list-item-description {\n color: var(--g-color-text-secondary);\n}\n.dc-settings-control__list-item-control {\n display: flex;\n align-items: center;\n margin-left: auto;\n}\n[dir=rtl] .dc-settings-control__list-item-control {\n margin: 0 auto 0 0;\n}\n[dir=rtl] .dc-settings-control__list-item-control > label {\n transform: rotate(180deg);\n}\n@media (max-width: 769px) {\n .dc-settings-control__popup {\n width: 100vw;\n }\n .dc-settings-control__popup-tooltip {\n position: fixed;\n /* stylelint-disable-next-line declaration-no-important */\n inset: var(--header-height) 0px auto 0px !important;\n /* stylelint-disable-next-line declaration-no-important */\n transform: translate3d(0, 0, 0) !important;\n }\n .dc-settings-control__popup-tooltip-content {\n max-width: 100%;\n }\n .dc-settings-control__list {\n width: 100%;\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0NvbnRyb2xzL3NpbmdsZS1jb250cm9scy9TZXR0aW5nc0NvbnRyb2wiLCJzb3VyY2VzIjpbIlNldHRpbmdzQ29udHJvbC5zY3NzIiwiLi4vLi4vLi4vLi4vc3R5bGVzL21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtJO0VBQ0k7RUFDQTs7QUFJQTtFQ1BKO0VBQ0E7O0FEU0k7RUNWSjtFQUNBOztBRFlJO0VDYko7RUFDQTs7QURrQkk7RUFDSTs7QUFJUjtFQUNJO0VDekJKO0VBQ0E7O0FENEJBO0VBQ0k7O0FBR0o7RUFDSTtFQUNBOztBQUVBO0VBQ0k7O0FBSVI7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBOztBQUVBO0VBQ0k7O0FBR0o7RUFDSTs7QUFJUjtFQUNJO0lBQ0k7O0VBR0o7SUFDSTtBQUNBO0lBQ0E7QUFDQTtJQUNBOztFQUdKO0lBQ0k7O0VBR0o7SUFDSSIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uLy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuQHVzZSAnLi4vLi4vLi4vLi4vc3R5bGVzL3ZhcmlhYmxlcyc7XG5cbi5kYy1zZXR0aW5ncy1jb250cm9sIHtcbiAgICAmX190ZXh0LXNpemUtY29udHJvbCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgJl9fdGV4dC1zaXplLWJ1dHRvbiB7XG4gICAgICAgICZfcyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtaXhpbnMudGV4dC1zaXplKGJvZHktMSk7XG4gICAgICAgIH1cbiAgICAgICAgJl9tIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1peGlucy50ZXh0LXNpemUoYm9keS0yKTtcbiAgICAgICAgfVxuICAgICAgICAmX2wge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWl4aW5zLnRleHQtc2l6ZShib2R5LTMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fdGV4dC1zaXplLWJ1dHRvbi1pY29uIHtcbiAgICAgICAgJl9hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItYmFzZS1icmFuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19wb3B1cCB7XG4gICAgICAgIHdpZHRoOiAyMzBweDtcbiAgICAgICAgQGluY2x1ZGUgbWl4aW5zLnRleHQtc2l6ZShib2R5LTEpO1xuICAgIH1cblxuICAgICZfX3BvcHVwLXRvb2x0aXAtY29udGVudCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgJl9fbGlzdCB7XG4gICAgICAgIHBhZGRpbmc6IDRweCAwO1xuICAgICAgICB3aWR0aDogMjMwcHg7XG5cbiAgICAgICAgLmctbGlzdF9faXRlbV9hY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19saXN0LWljb24ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICB9XG5cbiAgICAmX19saXN0LWl0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAmX19saXN0LWl0ZW0tZGVzY3JpcHRpb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgfVxuXG4gICAgJl9fbGlzdC1pdGVtLWNvbnRyb2wge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcblxuICAgICAgICBbZGlyPSdydGwnXSAmIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDAgMDtcbiAgICAgICAgfVxuXG4gICAgICAgIFtkaXI9J3J0bCddICYgPiBsYWJlbCB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ21kJykpIHtcbiAgICAgICAgJl9fcG9wdXAge1xuICAgICAgICAgICAgd2lkdGg6IDEwMHZ3O1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fcG9wdXAtdG9vbHRpcCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50ICovXG4gICAgICAgICAgICBpbnNldDogdmFyKC0taGVhZGVyLWhlaWdodCkgMHB4IGF1dG8gMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50ICovXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmX19wb3B1cC10b29sdGlwLWNvbnRlbnQge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fbGlzdCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3ZhcmlhYmxlcyc7XG5cbkBtaXhpbiB0ZXh0LXNpemUoJG5hbWUpIHtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC0jeyRuYW1lfS1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtI3skbmFtZX0tbGluZS1oZWlnaHQpO1xufVxuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSgpIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG5AbWl4aW4gZml4QW5jaG9yUG9zaXRpb24oJG9mZnNldDogMHB4KSB7XG4gICAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3t2YXJpYWJsZXMuJGhlYWRlckhlaWdodH0pKTtcbiAgICBtYXJnaW4tdG9wOiBjYWxjKCN7JG9mZnNldH0gLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAje3ZhcmlhYmxlcy4kaGVhZGVySGVpZ2h0fSkpO1xufVxuXG5AbWl4aW4gcmVzZXQtbGluay1zdHlsZSgpIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbkBtaXhpbiBpc2xhbmRzLWZvY3VzKCkge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAudXRpbGl0eWZvY3VzICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgI2ZmZGI0ZDtcbiAgICB9XG59XG5cbkBtaXhpbiBmb2N1c2FibGUoJG9mZnNldDogMCwgJG1vZGU6ICdvdXRsaW5lJykge1xuICAgIEBpZiAkbW9kZSA9PSAnb3V0bGluZScge1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1nLWNvbG9yLWxpbmUtZm9jdXMpO1xuICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6ICRvZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgJjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJG1vZGUgPT0gJ2JveC1zaGFkb3cnIHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZy1jb2xvci1saW5lLWZvY3VzKTtcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgIH1cbiAgICAgICAgJjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBsaW5rKCkge1xuICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtbGluayk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1nLWZvY3VzLWJvcmRlci1yYWRpdXMpO1xuXG4gICAgQGluY2x1ZGUgaXNsYW5kcy1mb2N1cygpO1xuXG4gICAgQGluY2x1ZGUgZm9jdXNhYmxlKDAsICdib3gtc2hhZG93Jyk7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcbiAgICB9XG59XG5cbkBtaXhpbiBoZWFkaW5nMSgpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMyk7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XG4gICAgfVxufVxuXG5AbWl4aW4gaGVhZGluZzIoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTEpO1xufVxuXG5AbWl4aW4gaGVhZGluZzMoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMik7XG59XG5cbkBtaXhpbiBoZWFkaW5nNCgpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0xKTtcbn1cblxuQG1peGluIGhlYWRpbmc1KCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0zKTtcbn1cblxuQG1peGluIGhlYWRpbmc2KCkge1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0zKTtcbn1cblxuQG1peGluIGNvbnRyaWJ1dG9ycy10ZXh0KCkge1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbn1cblxuQG1peGluIHRleHQtYm9keS0xKCkge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktMS1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xufVxuXG5AbWl4aW4gZGVza3RvcC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIGRlc2t0b3AtdGFibGV0LW9ubHkoKSB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykgLSAxKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gbW9iaWxlLW9ubHkoKSB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBncmF2aXR5LXVpLXRleHQtc2l6ZXMoJGRlbHRhKSB7XG4gICAgLS1nLXRleHQtYm9keS0xLWZvbnQtc2l6ZTogI3sxM3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQ6ICN7MThweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0yLWZvbnQtc2l6ZTogI3sxNXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTItbGluZS1oZWlnaHQ6ICN7MjBweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0zLWZvbnQtc2l6ZTogI3sxN3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTMtbGluZS1oZWlnaHQ6ICN7MjRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS1zaG9ydC1mb250LXNpemU6ICN7MTNweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY2FwdGlvbi0xLWZvbnQtc2l6ZTogI3s5cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNhcHRpb24tMi1mb250LXNpemU6ICN7MTFweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtaGVhZGVyLTEtZm9udC1zaXplOiAjezIwcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWhlYWRlci0yLWZvbnQtc2l6ZTogI3syNHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1zdWJoZWFkZXItMS1mb250LXNpemU6ICN7MTNweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtc3ViaGVhZGVyLTItZm9udC1zaXplOiAjezE1cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LXN1YmhlYWRlci0zLWZvbnQtc2l6ZTogI3sxN3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1kaXNwbGF5LTEtZm9udC1zaXplOiAjezI4cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWRpc3BsYXktMi1mb250LXNpemU6ICN7MzJweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS0zLWZvbnQtc2l6ZTogI3s0MHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1kaXNwbGF5LTQtZm9udC1zaXplOiAjezQ4cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtMS1mb250LXNpemU6ICN7MTJweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS0yLWZvbnQtc2l6ZTogI3sxNHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLTMtZm9udC1zaXplOiAjezE2cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtaW5saW5lLTEtZm9udC1zaXplOiAjezEycHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtaW5saW5lLTItZm9udC1zaXplOiAjezE0cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtaW5saW5lLTMtZm9udC1zaXplOiAjezE2cHggKyAkZGVsdGF9O1xuXG4gICAgLS15Zm0tZm9udC1zaXplOiB2YXIoLS1nLXRleHQtYm9keS0yLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1saW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktMi1saW5lLWhlaWdodCk7XG4gICAgLS15Zm0tZm9udC1zaXplLWgyOiB2YXIoLS1nLXRleHQtaGVhZGVyLTItZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LXNpemUtaDM6IHZhcigtLWctdGV4dC1oZWFkZXItMS1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oNDogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci0zLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWg1OiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLTItZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LXNpemUtaDY6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItMS1mb250LXNpemUpO1xufVxuIl19 */", "@use 'sass:map';\n@use 'variables';\n\n@mixin text-size($name) {\n font-size: var(--g-text-#{$name}-font-size);\n line-height: var(--g-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n padding-top: calc(var(--dc-header-height, #{variables.$headerHeight}));\n margin-top: calc(#{$offset} - var(--dc-header-height, #{variables.$headerHeight}));\n}\n\n@mixin reset-link-style() {\n color: inherit;\n text-decoration: none;\n}\n\n@mixin islands-focus() {\n outline: none;\n\n .utilityfocus &:focus {\n outline: 2px solid #ffdb4d;\n }\n}\n\n@mixin focusable($offset: 0, $mode: 'outline') {\n @if $mode == 'outline' {\n &:focus {\n outline: 2px solid var(--g-color-line-focus);\n outline-offset: $offset;\n }\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n }\n\n @if $mode == 'box-shadow' {\n &:focus {\n box-shadow: 0 0 0 2px var(--g-color-line-focus);\n outline: 0;\n }\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n}\n\n@mixin link() {\n color: var(--g-color-text-link);\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--g-focus-border-radius);\n\n @include islands-focus();\n\n @include focusable(0, 'box-shadow');\n\n &:hover,\n &:active {\n color: var(--g-color-text-link-hover);\n }\n}\n\n@mixin heading1() {\n font-weight: 500;\n\n @include text-size(display-3);\n\n @media (max-width: map.get(variables.$screenBreakpoints, 'md') - 1) {\n @include text-size(display-2);\n }\n}\n\n@mixin heading2() {\n font-weight: 500;\n\n @include text-size(display-1);\n}\n\n@mixin heading3() {\n font-weight: 500;\n\n @include text-size(header-2);\n}\n\n@mixin heading4() {\n font-weight: 500;\n\n @include text-size(header-1);\n}\n\n@mixin heading5() {\n font-weight: 500;\n\n @include text-size(body-3);\n}\n\n@mixin heading6() {\n font-weight: 400;\n\n @include text-size(body-3);\n}\n\n@mixin contributors-text() {\n font-size: 13px;\n font-weight: 400;\n margin-right: 5px;\n align-self: center;\n}\n\n@mixin text-body-1() {\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n font-weight: var(--g-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n @media (max-width: map.get(variables.$screenBreakpoints, 'md') - 1) {\n display: none;\n }\n}\n\n@mixin desktop-tablet-only() {\n @media (max-width: map.get(variables.$screenBreakpoints, 'sm') - 1) {\n display: none;\n }\n}\n\n@mixin mobile-tablet-only() {\n @media (min-width: map.get(variables.$screenBreakpoints, 'md')) {\n display: none;\n }\n}\n\n@mixin mobile-only() {\n @media (min-width: map.get(variables.$screenBreakpoints, 'sm')) {\n display: none;\n }\n}\n\n@mixin gravity-ui-text-sizes($delta) {\n --g-text-body-1-font-size: #{13px + $delta};\n --g-text-body-1-line-height: #{18px + $delta};\n --g-text-body-2-font-size: #{15px + $delta};\n --g-text-body-2-line-height: #{20px + $delta};\n --g-text-body-3-font-size: #{17px + $delta};\n --g-text-body-3-line-height: #{24px + $delta};\n --g-text-body-short-font-size: #{13px + $delta};\n --g-text-caption-1-font-size: #{9px + $delta};\n --g-text-caption-2-font-size: #{11px + $delta};\n --g-text-header-1-font-size: #{20px + $delta};\n --g-text-header-2-font-size: #{24px + $delta};\n --g-text-subheader-1-font-size: #{13px + $delta};\n --g-text-subheader-2-font-size: #{15px + $delta};\n --g-text-subheader-3-font-size: #{17px + $delta};\n --g-text-display-1-font-size: #{28px + $delta};\n --g-text-display-2-font-size: #{32px + $delta};\n --g-text-display-3-font-size: #{40px + $delta};\n --g-text-display-4-font-size: #{48px + $delta};\n --g-text-code-1-font-size: #{12px + $delta};\n --g-text-code-2-font-size: #{14px + $delta};\n --g-text-code-3-font-size: #{16px + $delta};\n --g-text-code-inline-1-font-size: #{12px + $delta};\n --g-text-code-inline-2-font-size: #{14px + $delta};\n --g-text-code-inline-3-font-size: #{16px + $delta};\n\n --yfm-font-size: var(--g-text-body-2-font-size);\n --yfm-font-line-height: var(--g-text-body-2-line-height);\n --yfm-font-size-h2: var(--g-text-header-2-font-size);\n --yfm-font-size-h3: var(--g-text-header-1-font-size);\n --yfm-font-size-h4: var(--g-text-subheader-3-font-size);\n --yfm-font-size-h5: var(--g-text-subheader-2-font-size);\n --yfm-font-size-h6: var(--g-text-subheader-1-font-size);\n}\n"],
5
5
  "mappings": ";AAKI,CAAA;AACI,WAAA;AACA,eAAA;ACJR;ADQQ,CAAA;AEPJ,aAAA,IAAA;AACA,eAAA,IAAA;ADEJ;ADOQ,CAAA;AEVJ,aAAA,IAAA;AACA,eAAA,IAAA;ADMJ;ADMQ,CAAA;AEbJ,aAAA,IAAA;AACA,eAAA,IAAA;ADUJ;ADQQ,CAAA;AACI,SAAA,IAAA;ACNZ;ADUI,CAAA;AACI,SAAA;AEzBJ,aAAA,IAAA;AACA,eAAA,IAAA;ADkBJ;ADUI,CAAA;AACI,WAAA;ACRR;ADWI,CAAA;AACI,WAAA,IAAA;AACA,SAAA;ACTR;ADWQ,CAJJ,0BAII,CAAA;AACI,cAAA;ACTZ;ADaI,CAAA;AACI,gBAAA;ACXR;ADcI,CAAA;AACI,WAAA;AACA,WAAA;AACA,SAAA;ACZR;ADeI,CAAA;AACI,SAAA,IAAA;ACbR;ADgBI,CAAA;AACI,WAAA;AACA,eAAA;AACA,eAAA;ACdR;ADgBQ,CAAA,SAAA,CALJ;AAMQ,UAAA,EAAA,KAAA,EAAA;ACdZ;ADiBQ,CAAA,SAAA,CATJ,uCASI,EAAA;AACI,aAAA,OAAA;ACfZ;ADmBI,QAAA,WAAA;AACI,GA/CJ;AAgDQ,WAAA;ACjBV;ADoBM,GAAA;AACI,cAAA;AAEA,SAAA,IAAA;AAAA,WAAA;AAAA,YAAA;AAAA,UAAA;AAEA,eAAA,YAAA,CAAA,EAAA,CAAA,EAAA;AClBV;ADqBM,GAtDJ;AAuDQ,eAAA;ACnBV;ADsBM,GAtDJ;AAuDQ,WAAA;ACpBV;AACF;",
6
6
  "names": []
@@ -104,12 +104,12 @@ var SettingsControl = (props) => {
104
104
  )
105
105
  } : null,
106
106
  onChangeTheme ? {
107
- text: t("label_dark_theme"),
107
+ text: t("full_label_dark_theme"),
108
108
  description: Theme.Light === theme ? t("description_disabled_dark_theme") : t("description_enabled_dark_theme"),
109
109
  control: /* @__PURE__ */ jsx(
110
110
  Switch,
111
111
  {
112
- title: t("label_dark_theme"),
112
+ title: t("full_label_dark_theme"),
113
113
  checked: theme === Theme.Dark,
114
114
  onChange: _onChangeTheme
115
115
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/Controls/single-controls/SettingsControl/SettingsControl.tsx"],
4
- "sourcesContent": ["import type {ReactElement} from 'react';\n\nimport {useCallback, useContext, useRef} from 'react';\nimport {Gear} from '@gravity-ui/icons';\nimport {Button, List, Popover, Switch, useDirection} from '@gravity-ui/uikit';\nimport cn from 'bem-cn-lite';\n\nimport {usePopupState, useTranslation} from '../../../../hooks';\nimport {TextSizes, Theme} from '../../../../models';\nimport {getPopupPosition} from '../../../../utils';\nimport {Control} from '../../../Control';\nimport {ControlsLayoutContext} from '../../ControlsLayout';\nimport {CommonAnalyticsEvent, useAnalytics} from '../../../../shared/libs/analytics';\n\nimport './SettingsControl.scss';\n\nconst ITEM_HEIGHT = 48;\nconst b = cn('dc-settings-control');\n\ninterface ControlProps {\n fullScreen?: boolean;\n singlePage?: boolean;\n wideFormat?: boolean;\n showMiniToc?: boolean;\n theme?: Theme;\n textSize?: TextSizes;\n onChangeWideFormat?: (value: boolean) => void;\n onChangeShowMiniToc?: (value: boolean) => void;\n onChangeTheme?: (theme: Theme) => void;\n onChangeTextSize?: (textSize: TextSizes) => void;\n}\n\ninterface SettingControlItem {\n text: string;\n description: string;\n control: ReactElement;\n}\n\nconst SettingsControl = (props: ControlProps) => {\n const {t} = useTranslation('controls');\n const analytics = useAnalytics();\n const {controlClassName, controlSize, isVerticalView, isWideView, isMobileView, popupPosition} =\n useContext(ControlsLayoutContext);\n const {\n textSize,\n theme,\n wideFormat,\n showMiniToc,\n fullScreen,\n singlePage,\n onChangeTheme,\n onChangeWideFormat,\n onChangeShowMiniToc,\n onChangeTextSize,\n } = props;\n\n const controlRef = useRef<HTMLButtonElement | null>(null);\n const direction = useDirection();\n\n const popupState = usePopupState();\n\n const handleOpenChange = useCallback(\n (opened: boolean) => {\n if (opened) {\n analytics.track(CommonAnalyticsEvent.DOCS_HEADER_SETTINGS_CLICK);\n\n popupState.open();\n } else {\n popupState.close();\n }\n },\n [analytics, popupState],\n );\n\n const _onChangeTextSize = useCallback(\n (textSizeKey: TextSizes) => () => {\n analytics.track(CommonAnalyticsEvent.DOCS_FONTSIZE_MODE_CLICK);\n\n if (onChangeTextSize) {\n onChangeTextSize(textSizeKey);\n }\n },\n [onChangeTextSize, analytics],\n );\n const _onChangeTheme = useCallback(() => {\n if (onChangeTheme) {\n onChangeTheme(theme === Theme.Dark ? Theme.Light : Theme.Dark);\n }\n }, [theme, onChangeTheme]);\n const _onChangeWideFormat = useCallback(() => {\n analytics.track(CommonAnalyticsEvent.DOCS_WIDESCREEN_MODE_CLICK);\n\n if (onChangeWideFormat) {\n onChangeWideFormat(!wideFormat);\n }\n }, [wideFormat, onChangeWideFormat, analytics]);\n const _onChangeShowMiniToc = useCallback(() => {\n analytics.track(CommonAnalyticsEvent.DOCS_HIDE_PAGE_NAV_CLICK);\n\n if (onChangeShowMiniToc) {\n onChangeShowMiniToc(!showMiniToc);\n }\n }, [showMiniToc, onChangeShowMiniToc, analytics]);\n\n const getSettingsItems = useCallback(() => {\n const allTextSizes = Object.values(TextSizes);\n const showMiniTocDisabled = fullScreen || singlePage;\n\n return [\n onChangeWideFormat\n ? {\n text: t('label_wide_format'),\n description: t(\n `description_wide_format_${wideFormat ? 'enabled' : 'disabled'}`,\n ),\n control: (\n <Switch\n title={t('label_wide_format')}\n checked={wideFormat}\n onChange={_onChangeWideFormat}\n />\n ),\n }\n : null,\n onChangeShowMiniToc\n ? {\n text: t('label_show_mini_toc'),\n description: t(\n `description_show_mini_toc_${showMiniToc ? 'enabled' : 'disabled'}`,\n t(`description_show_mini_toc`),\n ),\n control: (\n <Switch\n title={t('label_show_mini_toc')}\n disabled={showMiniTocDisabled}\n checked={showMiniToc}\n onChange={_onChangeShowMiniToc}\n />\n ),\n }\n : null,\n onChangeTheme\n ? {\n text: t('label_dark_theme'),\n description:\n Theme.Light === theme\n ? t('description_disabled_dark_theme')\n : t('description_enabled_dark_theme'),\n control: (\n <Switch\n title={t('label_dark_theme')}\n checked={theme === Theme.Dark}\n onChange={_onChangeTheme}\n />\n ),\n }\n : null,\n onChangeTextSize\n ? {\n text: t('label_text_size'),\n description: t(`description_${textSize}_text_size`),\n control: (\n <div className={b('text-size-control')}>\n {allTextSizes.map((textSizeKey) => (\n <Button\n key={textSizeKey}\n className={b('text-size-button', {\n [textSizeKey]: true,\n })}\n view=\"flat\"\n onClick={_onChangeTextSize(textSizeKey)}\n title={`${t('label_text_size')} ${t(`description_${textSizeKey}_text_size`)}`}\n >\n <Button.Icon\n className={b('text-size-button-icon', {\n active: textSize === textSizeKey,\n })}\n >\n <span aria-hidden={true}>A</span>\n </Button.Icon>\n </Button>\n ))}\n </div>\n ),\n }\n : null,\n ].filter(Boolean) as unknown as SettingControlItem[];\n }, [\n t,\n textSize,\n theme,\n wideFormat,\n showMiniToc,\n fullScreen,\n singlePage,\n _onChangeTheme,\n _onChangeWideFormat,\n _onChangeShowMiniToc,\n _onChangeTextSize,\n onChangeWideFormat,\n onChangeShowMiniToc,\n onChangeTheme,\n onChangeTextSize,\n ]);\n\n const settingsItems = getSettingsItems();\n\n return (\n <Popover\n open={popupState.visible}\n onOpenChange={handleOpenChange}\n trigger=\"click\"\n strategy=\"fixed\"\n placement={getPopupPosition(isVerticalView, direction)}\n hasArrow={!isMobileView}\n returnFocus={true}\n content={\n <div className={b('popup', {tooltip: true, 'tooltip-content': true})}>\n <List\n role={'list'}\n items={settingsItems}\n className={b('list')}\n itemHeight={ITEM_HEIGHT}\n itemsHeight={ITEM_HEIGHT * settingsItems.length}\n filterable={false}\n renderItem={(item: SettingControlItem) => {\n return (\n <div className={b('list-item')}>\n <div className={b('list-item-content')}>\n <div className={b('list-item-text')}>{item.text}</div>\n <div className={b('list-item-description')}>\n {item.description}\n </div>\n </div>\n <div className={b('list-item-control')}>{item.control}</div>\n </div>\n );\n }}\n />\n </div>\n }\n >\n <Control\n ref={controlRef}\n className={controlClassName}\n size={controlSize}\n isWideView={isWideView}\n isVerticalView={isVerticalView}\n tooltipText={t('settings-text')}\n popupPosition={popupPosition}\n icon={Gear}\n isTooltipHidden={popupState.visible}\n />\n </Popover>\n );\n};\n\nexport default SettingsControl;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type {ReactElement} from 'react';\n\nimport {useCallback, useContext, useRef} from 'react';\nimport {Gear} from '@gravity-ui/icons';\nimport {Button, List, Popover, Switch, useDirection} from '@gravity-ui/uikit';\nimport cn from 'bem-cn-lite';\n\nimport {usePopupState, useTranslation} from '../../../../hooks';\nimport {TextSizes, Theme} from '../../../../models';\nimport {getPopupPosition} from '../../../../utils';\nimport {Control} from '../../../Control';\nimport {ControlsLayoutContext} from '../../ControlsLayout';\nimport {CommonAnalyticsEvent, useAnalytics} from '../../../../shared/libs/analytics';\n\nimport './SettingsControl.scss';\n\nconst ITEM_HEIGHT = 48;\nconst b = cn('dc-settings-control');\n\ninterface ControlProps {\n fullScreen?: boolean;\n singlePage?: boolean;\n wideFormat?: boolean;\n showMiniToc?: boolean;\n theme?: Theme;\n textSize?: TextSizes;\n onChangeWideFormat?: (value: boolean) => void;\n onChangeShowMiniToc?: (value: boolean) => void;\n onChangeTheme?: (theme: Theme) => void;\n onChangeTextSize?: (textSize: TextSizes) => void;\n}\n\ninterface SettingControlItem {\n text: string;\n description: string;\n control: ReactElement;\n}\n\nconst SettingsControl = (props: ControlProps) => {\n const {t} = useTranslation('controls');\n const analytics = useAnalytics();\n const {controlClassName, controlSize, isVerticalView, isWideView, isMobileView, popupPosition} =\n useContext(ControlsLayoutContext);\n const {\n textSize,\n theme,\n wideFormat,\n showMiniToc,\n fullScreen,\n singlePage,\n onChangeTheme,\n onChangeWideFormat,\n onChangeShowMiniToc,\n onChangeTextSize,\n } = props;\n\n const controlRef = useRef<HTMLButtonElement | null>(null);\n const direction = useDirection();\n\n const popupState = usePopupState();\n\n const handleOpenChange = useCallback(\n (opened: boolean) => {\n if (opened) {\n analytics.track(CommonAnalyticsEvent.DOCS_HEADER_SETTINGS_CLICK);\n\n popupState.open();\n } else {\n popupState.close();\n }\n },\n [analytics, popupState],\n );\n\n const _onChangeTextSize = useCallback(\n (textSizeKey: TextSizes) => () => {\n analytics.track(CommonAnalyticsEvent.DOCS_FONTSIZE_MODE_CLICK);\n\n if (onChangeTextSize) {\n onChangeTextSize(textSizeKey);\n }\n },\n [onChangeTextSize, analytics],\n );\n const _onChangeTheme = useCallback(() => {\n if (onChangeTheme) {\n onChangeTheme(theme === Theme.Dark ? Theme.Light : Theme.Dark);\n }\n }, [theme, onChangeTheme]);\n const _onChangeWideFormat = useCallback(() => {\n analytics.track(CommonAnalyticsEvent.DOCS_WIDESCREEN_MODE_CLICK);\n\n if (onChangeWideFormat) {\n onChangeWideFormat(!wideFormat);\n }\n }, [wideFormat, onChangeWideFormat, analytics]);\n const _onChangeShowMiniToc = useCallback(() => {\n analytics.track(CommonAnalyticsEvent.DOCS_HIDE_PAGE_NAV_CLICK);\n\n if (onChangeShowMiniToc) {\n onChangeShowMiniToc(!showMiniToc);\n }\n }, [showMiniToc, onChangeShowMiniToc, analytics]);\n\n const getSettingsItems = useCallback(() => {\n const allTextSizes = Object.values(TextSizes);\n const showMiniTocDisabled = fullScreen || singlePage;\n\n return [\n onChangeWideFormat\n ? {\n text: t('label_wide_format'),\n description: t(\n `description_wide_format_${wideFormat ? 'enabled' : 'disabled'}`,\n ),\n control: (\n <Switch\n title={t('label_wide_format')}\n checked={wideFormat}\n onChange={_onChangeWideFormat}\n />\n ),\n }\n : null,\n onChangeShowMiniToc\n ? {\n text: t('label_show_mini_toc'),\n description: t(\n `description_show_mini_toc_${showMiniToc ? 'enabled' : 'disabled'}`,\n t(`description_show_mini_toc`),\n ),\n control: (\n <Switch\n title={t('label_show_mini_toc')}\n disabled={showMiniTocDisabled}\n checked={showMiniToc}\n onChange={_onChangeShowMiniToc}\n />\n ),\n }\n : null,\n onChangeTheme\n ? {\n text: t('full_label_dark_theme'),\n description:\n Theme.Light === theme\n ? t('description_disabled_dark_theme')\n : t('description_enabled_dark_theme'),\n control: (\n <Switch\n title={t('full_label_dark_theme')}\n checked={theme === Theme.Dark}\n onChange={_onChangeTheme}\n />\n ),\n }\n : null,\n onChangeTextSize\n ? {\n text: t('label_text_size'),\n description: t(`description_${textSize}_text_size`),\n control: (\n <div className={b('text-size-control')}>\n {allTextSizes.map((textSizeKey) => (\n <Button\n key={textSizeKey}\n className={b('text-size-button', {\n [textSizeKey]: true,\n })}\n view=\"flat\"\n onClick={_onChangeTextSize(textSizeKey)}\n title={`${t('label_text_size')} ${t(`description_${textSizeKey}_text_size`)}`}\n >\n <Button.Icon\n className={b('text-size-button-icon', {\n active: textSize === textSizeKey,\n })}\n >\n <span aria-hidden={true}>A</span>\n </Button.Icon>\n </Button>\n ))}\n </div>\n ),\n }\n : null,\n ].filter(Boolean) as unknown as SettingControlItem[];\n }, [\n t,\n textSize,\n theme,\n wideFormat,\n showMiniToc,\n fullScreen,\n singlePage,\n _onChangeTheme,\n _onChangeWideFormat,\n _onChangeShowMiniToc,\n _onChangeTextSize,\n onChangeWideFormat,\n onChangeShowMiniToc,\n onChangeTheme,\n onChangeTextSize,\n ]);\n\n const settingsItems = getSettingsItems();\n\n return (\n <Popover\n open={popupState.visible}\n onOpenChange={handleOpenChange}\n trigger=\"click\"\n strategy=\"fixed\"\n placement={getPopupPosition(isVerticalView, direction)}\n hasArrow={!isMobileView}\n returnFocus={true}\n content={\n <div className={b('popup', {tooltip: true, 'tooltip-content': true})}>\n <List\n role={'list'}\n items={settingsItems}\n className={b('list')}\n itemHeight={ITEM_HEIGHT}\n itemsHeight={ITEM_HEIGHT * settingsItems.length}\n filterable={false}\n renderItem={(item: SettingControlItem) => {\n return (\n <div className={b('list-item')}>\n <div className={b('list-item-content')}>\n <div className={b('list-item-text')}>{item.text}</div>\n <div className={b('list-item-description')}>\n {item.description}\n </div>\n </div>\n <div className={b('list-item-control')}>{item.control}</div>\n </div>\n );\n }}\n />\n </div>\n }\n >\n <Control\n ref={controlRef}\n className={controlClassName}\n size={controlSize}\n isWideView={isWideView}\n isVerticalView={isVerticalView}\n tooltipText={t('settings-text')}\n popupPosition={popupPosition}\n icon={Gear}\n isTooltipHidden={popupState.visible}\n />\n </Popover>\n );\n};\n\nexport default SettingsControl;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,4 @@
1
+ export type MarkdownAction = 'copy' | 'view';
2
+ export declare function setMarkdownAction(url: URL, action: MarkdownAction): string;
3
+ export declare function resolveMarkdownActionUrl(sourceUrl: string, baseUrl: string, action: MarkdownAction): string;
4
+ export declare function getMarkdownUrl(currentUrl: string, action?: MarkdownAction): string;
@@ -0,0 +1,35 @@
1
+ // src/components/Controls/single-controls/markdown-url.ts
2
+ var COPY_ACTION_QUERY_PARAM = "__mdAction";
3
+ function setMarkdownAction(url, action) {
4
+ url.hash = "";
5
+ if (action === "copy") {
6
+ url.searchParams.set(COPY_ACTION_QUERY_PARAM, action);
7
+ } else {
8
+ url.searchParams.delete(COPY_ACTION_QUERY_PARAM);
9
+ }
10
+ return url.toString();
11
+ }
12
+ function resolveMarkdownActionUrl(sourceUrl, baseUrl, action) {
13
+ const markdownUrl = new URL(sourceUrl, baseUrl);
14
+ const resolvedUrl = setMarkdownAction(markdownUrl, action);
15
+ if (/^[a-z][a-z\d+.-]*:/iu.test(sourceUrl)) {
16
+ return resolvedUrl;
17
+ }
18
+ const [relativePath] = sourceUrl.split(/[?#]/u, 1);
19
+ return `${relativePath}${markdownUrl.search}`;
20
+ }
21
+ function getMarkdownUrl(currentUrl, action = "view") {
22
+ const markdownUrl = new URL(currentUrl);
23
+ if (markdownUrl.pathname.endsWith("/")) {
24
+ markdownUrl.pathname += "index.md";
25
+ } else {
26
+ markdownUrl.pathname = markdownUrl.pathname.replace(/\.(?:html?|md)$/i, "") + ".md";
27
+ }
28
+ return setMarkdownAction(markdownUrl, action);
29
+ }
30
+ export {
31
+ getMarkdownUrl,
32
+ resolveMarkdownActionUrl,
33
+ setMarkdownAction
34
+ };
35
+ //# sourceMappingURL=markdown-url.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/Controls/single-controls/markdown-url.ts"],
4
+ "sourcesContent": ["export type MarkdownAction = 'copy' | 'view';\n\nconst COPY_ACTION_QUERY_PARAM = '__mdAction';\n\nexport function setMarkdownAction(url: URL, action: MarkdownAction) {\n url.hash = '';\n\n if (action === 'copy') {\n url.searchParams.set(COPY_ACTION_QUERY_PARAM, action);\n } else {\n url.searchParams.delete(COPY_ACTION_QUERY_PARAM);\n }\n\n return url.toString();\n}\n\nexport function resolveMarkdownActionUrl(\n sourceUrl: string,\n baseUrl: string,\n action: MarkdownAction,\n) {\n const markdownUrl = new URL(sourceUrl, baseUrl);\n const resolvedUrl = setMarkdownAction(markdownUrl, action);\n\n if (/^[a-z][a-z\\d+.-]*:/iu.test(sourceUrl)) {\n return resolvedUrl;\n }\n\n const [relativePath] = sourceUrl.split(/[?#]/u, 1);\n\n return `${relativePath}${markdownUrl.search}`;\n}\n\nexport function getMarkdownUrl(currentUrl: string, action: MarkdownAction = 'view') {\n const markdownUrl = new URL(currentUrl);\n\n if (markdownUrl.pathname.endsWith('/')) {\n markdownUrl.pathname += 'index.md';\n } else {\n markdownUrl.pathname = markdownUrl.pathname.replace(/\\.(?:html?|md)$/i, '') + '.md';\n }\n\n return setMarkdownAction(markdownUrl, action);\n}\n"],
5
+ "mappings": ";AAEA,IAAM,0BAA0B;AAEzB,SAAS,kBAAkB,KAAU,QAAwB;AAChE,MAAI,OAAO;AAEX,MAAI,WAAW,QAAQ;AACnB,QAAI,aAAa,IAAI,yBAAyB,MAAM;AAAA,EACxD,OAAO;AACH,QAAI,aAAa,OAAO,uBAAuB;AAAA,EACnD;AAEA,SAAO,IAAI,SAAS;AACxB;AAEO,SAAS,yBACZ,WACA,SACA,QACF;AACE,QAAM,cAAc,IAAI,IAAI,WAAW,OAAO;AAC9C,QAAM,cAAc,kBAAkB,aAAa,MAAM;AAEzD,MAAI,uBAAuB,KAAK,SAAS,GAAG;AACxC,WAAO;AAAA,EACX;AAEA,QAAM,CAAC,YAAY,IAAI,UAAU,MAAM,SAAS,CAAC;AAEjD,SAAO,GAAG,YAAY,GAAG,YAAY,MAAM;AAC/C;AAEO,SAAS,eAAe,YAAoB,SAAyB,QAAQ;AAChF,QAAM,cAAc,IAAI,IAAI,UAAU;AAEtC,MAAI,YAAY,SAAS,SAAS,GAAG,GAAG;AACpC,gBAAY,YAAY;AAAA,EAC5B,OAAO;AACH,gBAAY,WAAW,YAAY,SAAS,QAAQ,oBAAoB,EAAE,IAAI;AAAA,EAClF;AAEA,SAAO,kBAAkB,aAAa,MAAM;AAChD;",
6
+ "names": []
7
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/DocLayout/DocLayout.scss", "../../../../src/components/DocLayout/%3Cinput css RKZ5_x%3E", "../../../../src/styles/mixins.scss", "../../../../node_modules/@gravity-ui/uikit/styles/mixins.scss"],
3
+ "sources": ["../../../../src/components/DocLayout/DocLayout.scss", "../../../../src/components/DocLayout/%3Cinput css OlETS0%3E", "../../../../src/styles/mixins.scss", "../../../../node_modules/@gravity-ui/uikit/styles/mixins.scss"],
4
4
  "sourcesContent": ["@use 'sass:map';\n@use '@gravity-ui/uikit/styles/mixins' as gravityMixins;\n@use '../../styles/variables';\n@use '../../styles/mixins';\n\n.dc-doc-layout {\n display: flex;\n align-items: center;\n margin: 0 auto;\n height: 100%;\n background: var(--g-color-base-background);\n\n @media (max-width: map.get(variables.$screenBreakpoints, 'md') - 1) {\n align-items: normal;\n }\n\n &__left,\n &__right {\n order: 3;\n flex: 0 0 auto;\n box-sizing: content-box;\n }\n\n &__right {\n width: 176px;\n padding-right: 24px;\n &_full-screen,\n &_hidden-right {\n flex: initial;\n }\n }\n\n &__left {\n order: 1;\n width: 276px;\n transition: width 150ms ease-out;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n &_full-screen {\n flex: initial;\n }\n\n &_toc-collapsed {\n width: 56px;\n }\n }\n\n &__center {\n order: 2;\n flex: 1 1 auto;\n position: relative;\n min-width: 0;\n\n &#{&}_hidden-right#{&}_regular-page-width:not(#{&}_full-screen) {\n max-width: calc(736px + 176px / 2);\n }\n\n &_full-screen {\n flex: 0 0 auto;\n width: 100%;\n }\n\n &_loading {\n height: calc(100vh - var(--dc-header-height, #{variables.$headerHeight}));\n overflow: hidden;\n }\n }\n\n &__toc {\n position: fixed;\n z-index: 100;\n top: var(--dc-header-height, #{variables.$headerHeight});\n padding-left: 24px;\n width: 252px;\n box-sizing: content-box;\n background-color: var(--g-color-base-background);\n @include mixins.text-size(body-1);\n\n &_collapsible {\n display: flex;\n flex-direction: column;\n height: calc(100vh - var(--dc-header-height, #{variables.$headerHeight}));\n border-right: 1px solid var(--g-color-line-generic);\n\n > .dc-toc {\n flex: 1 1 auto;\n min-height: 0;\n height: auto;\n border-right: none;\n }\n }\n\n &_toc-collapsed {\n width: 56px;\n padding-left: 0;\n\n > .dc-toc {\n display: none;\n }\n }\n }\n\n &__toc-collapse-button {\n --_--focus-outline-color: var(--g-color-line-focus);\n --_--focus-outline-offset: 0;\n\n @include gravityMixins.button-reset();\n\n flex: 0 0 auto;\n min-height: 20px;\n width: calc(100% + 24px);\n margin-left: -24px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n box-sizing: content-box;\n\n &::before {\n content: '';\n position: absolute;\n z-index: -1;\n inset: 0 2px 2px;\n }\n\n &:focus-visible::before {\n outline: var(--_--focus-outline-color) solid 2px;\n outline-offset: var(--_--focus-outline-offset);\n }\n\n &:not(&_collapsed) &-icon {\n transform: rotate(180deg);\n }\n\n &:hover &-icon {\n color: var(--g-color-text-primary);\n }\n\n &_collapsed {\n width: 100%;\n margin-left: 0;\n margin-top: auto;\n }\n\n &-icon {\n color: var(--g-color-text-secondary);\n }\n }\n\n &__desktop-only {\n .mobile & {\n display: none;\n }\n }\n\n &__mobile-only {\n .desktop & {\n display: none;\n }\n }\n\n @media (max-width: map.get(variables.$screenBreakpoints, 'md') - 1) {\n flex-direction: column-reverse;\n\n &__right {\n position: sticky;\n top: calc(var(--dc-header-height, #{variables.$headerHeight}));\n left: 0;\n z-index: 118;\n\n height: fit-content;\n width: 100%;\n padding: 0;\n }\n\n &__left {\n position: fixed;\n top: calc(\n var(--dc-header-height, #{variables.$headerHeight}) +\n var(--dc-subnavigation-height, #{variables.$subNavigationHeight}) + 1px\n );\n left: calc(0px - 105vw);\n z-index: 119;\n\n box-sizing: border-box;\n max-height: calc(\n 100vh - var(--dc-header-height, #{variables.$headerHeight}) - var(\n --dc-subnavigation-height,\n #{variables.$subNavigationHeight}\n ) +\n 1px\n );\n height: 100%;\n width: 100vw;\n\n padding: 0;\n\n background-color: var(--g-color-base-background, #fff);\n border-right: 1px solid var(--g-color-line-generic, #0000001a);\n\n transition: left 300ms 0ms;\n\n &_visible {\n left: 0;\n\n body:has(&) {\n overflow-y: hidden;\n }\n }\n }\n\n &__legacy-toc {\n position: static;\n left: auto;\n width: 100%;\n max-height: none;\n\n border-right: none;\n }\n\n &__toc {\n position: static;\n width: 100%;\n height: 100%;\n padding: 0;\n border-right: none;\n\n @include mixins.text-size(body-2);\n\n .dc-toc {\n /* stylelint-disable-next-line declaration-no-important */\n height: 100% !important;\n }\n\n &_toc-collapsed > .dc-toc {\n display: flex;\n }\n }\n\n &__toc-collapse-button {\n display: none;\n }\n }\n\n @media screen and (min-width: 1280px) {\n &__center &#{&}_hidden-right#{&}_regular-page-width:not(#{&}_full-screen) {\n max-width: calc(736px + 200px / 2);\n }\n\n &__right {\n width: 200px;\n }\n\n &__toc {\n width: 252px;\n\n &_toc-collapsed {\n width: 56px;\n }\n }\n\n &__left {\n width: 276px;\n\n &_toc-collapsed {\n width: 56px;\n }\n }\n }\n}\n", ".dc-doc-layout {\n display: flex;\n align-items: center;\n margin: 0 auto;\n height: 100%;\n background: var(--g-color-base-background);\n}\n@media (max-width: 768px) {\n .dc-doc-layout {\n align-items: normal;\n }\n}\n.dc-doc-layout__left, .dc-doc-layout__right {\n order: 3;\n flex: 0 0 auto;\n box-sizing: content-box;\n}\n.dc-doc-layout__right {\n width: 176px;\n padding-right: 24px;\n}\n.dc-doc-layout__right_full-screen, .dc-doc-layout__right_hidden-right {\n flex: initial;\n}\n.dc-doc-layout__left {\n order: 1;\n width: 276px;\n transition: width 150ms ease-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .dc-doc-layout__left {\n transition: none;\n }\n}\n.dc-doc-layout__left_full-screen {\n flex: initial;\n}\n.dc-doc-layout__left_toc-collapsed {\n width: 56px;\n}\n.dc-doc-layout__center {\n order: 2;\n flex: 1 1 auto;\n position: relative;\n min-width: 0;\n}\n.dc-doc-layout__center.dc-doc-layout__center_hidden-right.dc-doc-layout__center_regular-page-width:not(.dc-doc-layout__center_full-screen) {\n max-width: 824px;\n}\n.dc-doc-layout__center_full-screen {\n flex: 0 0 auto;\n width: 100%;\n}\n.dc-doc-layout__center_loading {\n height: calc(100vh - var(--dc-header-height, 0px));\n overflow: hidden;\n}\n.dc-doc-layout__toc {\n position: fixed;\n z-index: 100;\n top: var(--dc-header-height, 0px);\n padding-left: 24px;\n width: 252px;\n box-sizing: content-box;\n background-color: var(--g-color-base-background);\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n}\n.dc-doc-layout__toc_collapsible {\n display: flex;\n flex-direction: column;\n height: calc(100vh - var(--dc-header-height, 0px));\n border-right: 1px solid var(--g-color-line-generic);\n}\n.dc-doc-layout__toc_collapsible > .dc-toc {\n flex: 1 1 auto;\n min-height: 0;\n height: auto;\n border-right: none;\n}\n.dc-doc-layout__toc_toc-collapsed {\n width: 56px;\n padding-left: 0;\n}\n.dc-doc-layout__toc_toc-collapsed > .dc-toc {\n display: none;\n}\n.dc-doc-layout__toc-collapse-button {\n --_--focus-outline-color: var(--g-color-line-focus);\n --_--focus-outline-offset: 0;\n padding: 0;\n font-family: var(--g-text-body-font-family);\n font-size: inherit;\n font-weight: var(--g-text-body-font-weight);\n color: inherit;\n background: none;\n border: none;\n outline: none;\n cursor: pointer;\n flex: 0 0 auto;\n min-height: 20px;\n width: calc(100% + 24px);\n margin-left: -24px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n box-sizing: content-box;\n}\n.dc-doc-layout__toc-collapse-button::before {\n content: \"\";\n position: absolute;\n z-index: -1;\n inset: 0 2px 2px;\n}\n.dc-doc-layout__toc-collapse-button:focus-visible::before {\n outline: var(--_--focus-outline-color) solid 2px;\n outline-offset: var(--_--focus-outline-offset);\n}\n.dc-doc-layout__toc-collapse-button:not(.dc-doc-layout__toc-collapse-button_collapsed) .dc-doc-layout__toc-collapse-button-icon {\n transform: rotate(180deg);\n}\n.dc-doc-layout__toc-collapse-button:hover .dc-doc-layout__toc-collapse-button-icon {\n color: var(--g-color-text-primary);\n}\n.dc-doc-layout__toc-collapse-button_collapsed {\n width: 100%;\n margin-left: 0;\n margin-top: auto;\n}\n.dc-doc-layout__toc-collapse-button-icon {\n color: var(--g-color-text-secondary);\n}\n.mobile .dc-doc-layout__desktop-only {\n display: none;\n}\n.desktop .dc-doc-layout__mobile-only {\n display: none;\n}\n@media (max-width: 768px) {\n .dc-doc-layout {\n flex-direction: column-reverse;\n }\n .dc-doc-layout__right {\n position: sticky;\n top: calc(var(--dc-header-height, 0px));\n left: 0;\n z-index: 118;\n height: fit-content;\n width: 100%;\n padding: 0;\n }\n .dc-doc-layout__left {\n position: fixed;\n top: calc(var(--dc-header-height, 0px) + var(--dc-subnavigation-height, 52px) + 1px);\n left: calc(0px - 105vw);\n z-index: 119;\n box-sizing: border-box;\n max-height: calc(100vh - var(--dc-header-height, 0px) - var(--dc-subnavigation-height, 52px) + 1px);\n height: 100%;\n width: 100vw;\n padding: 0;\n background-color: var(--g-color-base-background, #fff);\n border-right: 1px solid var(--g-color-line-generic, rgba(0, 0, 0, 0.1019607843));\n transition: left 300ms 0ms;\n }\n .dc-doc-layout__left_visible {\n left: 0;\n }\n body:has(.dc-doc-layout__left_visible) {\n overflow-y: hidden;\n }\n .dc-doc-layout__legacy-toc {\n position: static;\n left: auto;\n width: 100%;\n max-height: none;\n border-right: none;\n }\n .dc-doc-layout__toc {\n position: static;\n width: 100%;\n height: 100%;\n padding: 0;\n border-right: none;\n font-size: var(--g-text-body-2-font-size);\n line-height: var(--g-text-body-2-line-height);\n }\n .dc-doc-layout__toc .dc-toc {\n /* stylelint-disable-next-line declaration-no-important */\n height: 100% !important;\n }\n .dc-doc-layout__toc_toc-collapsed > .dc-toc {\n display: flex;\n }\n .dc-doc-layout__toc-collapse-button {\n display: none;\n }\n}\n@media screen and (min-width: 1280px) {\n .dc-doc-layout__center .dc-doc-layout.dc-doc-layout_hidden-right.dc-doc-layout_regular-page-width:not(.dc-doc-layout_full-screen) {\n max-width: 836px;\n }\n .dc-doc-layout__right {\n width: 200px;\n }\n .dc-doc-layout__toc {\n width: 252px;\n }\n .dc-doc-layout__toc_toc-collapsed {\n width: 56px;\n }\n .dc-doc-layout__left {\n width: 276px;\n }\n .dc-doc-layout__left_toc-collapsed {\n width: 56px;\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0RvY0xheW91dCIsInNvdXJjZXMiOlsiRG9jTGF5b3V0LnNjc3MiLCIuLi8uLi9zdHlsZXMvbWl4aW5zLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQVBKO0lBUVE7OztBQUdKO0VBRUk7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFDQTtFQUVJOztBQUlSO0VBQ0k7RUFDQTtFQUNBOztBQUVBO0VBTEo7SUFNUTs7O0FBR0o7RUFDSTs7QUFHSjtFQUNJOztBQUlSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTtFQUNBOztBQUlSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUMxRUo7RUFDQTs7QUQ0RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUlSO0VBQ0k7RUFDQTs7QUFFQTtFQUNJOztBQUtaO0VBQ0k7RUFDQTtFRWpHSjtFQUVBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUYyRkk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJOztBQUtKO0VBQ0k7O0FBS0o7RUFDSTs7QUFJUjtFQS9KSjtJQWdLUTs7RUFFQTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBRUE7SUFDQTtJQUNBOztFQUdKO0lBQ0k7SUFDQTtJQUlBO0lBQ0E7SUFFQTtJQUNBO0lBT0E7SUFDQTtJQUVBO0lBRUE7SUFDQTtJQUVBOztFQUVBO0lBQ0k7O0VBRUE7SUFDSTs7RUFLWjtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBRUE7O0VBR0o7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lDaE9SO0lBQ0E7O0VEbU9RO0FBQ0k7SUFDQTs7RUFHSjtJQUNJOztFQUlSO0lBQ0k7OztBQUlSO0VBQ0k7SUFDSTs7RUFHSjtJQUNJOztFQUdKO0lBQ0k7O0VBRUE7SUFDSTs7RUFJUjtJQUNJOztFQUVBO0lBQ0kiLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdAZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvbWl4aW5zJyBhcyBncmF2aXR5TWl4aW5zO1xuQHVzZSAnLi4vLi4vc3R5bGVzL3ZhcmlhYmxlcyc7XG5AdXNlICcuLi8uLi9zdHlsZXMvbWl4aW5zJztcblxuLmRjLWRvYy1sYXlvdXQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZy1jb2xvci1iYXNlLWJhY2tncm91bmQpO1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBub3JtYWw7XG4gICAgfVxuXG4gICAgJl9fbGVmdCxcbiAgICAmX19yaWdodCB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgfVxuXG4gICAgJl9fcmlnaHQge1xuICAgICAgICB3aWR0aDogMTc2cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDI0cHg7XG4gICAgICAgICZfZnVsbC1zY3JlZW4sXG4gICAgICAgICZfaGlkZGVuLXJpZ2h0IHtcbiAgICAgICAgICAgIGZsZXg6IGluaXRpYWw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19sZWZ0IHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgIHdpZHRoOiAyNzZweDtcbiAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMTUwbXMgZWFzZS1vdXQ7XG5cbiAgICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmX2Z1bGwtc2NyZWVuIHtcbiAgICAgICAgICAgIGZsZXg6IGluaXRpYWw7XG4gICAgICAgIH1cblxuICAgICAgICAmX3RvYy1jb2xsYXBzZWQge1xuICAgICAgICAgICAgd2lkdGg6IDU2cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jZW50ZXIge1xuICAgICAgICBvcmRlcjogMjtcbiAgICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuXG4gICAgICAgICYjeyZ9X2hpZGRlbi1yaWdodCN7Jn1fcmVndWxhci1wYWdlLXdpZHRoOm5vdCgjeyZ9X2Z1bGwtc2NyZWVuKSB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IGNhbGMoNzM2cHggKyAxNzZweCAvIDIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9mdWxsLXNjcmVlbiB7XG4gICAgICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9sb2FkaW5nIHtcbiAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7dmFyaWFibGVzLiRoZWFkZXJIZWlnaHR9KSk7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fdG9jIHtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICB6LWluZGV4OiAxMDA7XG4gICAgICAgIHRvcDogdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3t2YXJpYWJsZXMuJGhlYWRlckhlaWdodH0pO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XG4gICAgICAgIHdpZHRoOiAyNTJweDtcbiAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWctY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtcbiAgICAgICAgQGluY2x1ZGUgbWl4aW5zLnRleHQtc2l6ZShib2R5LTEpO1xuXG4gICAgICAgICZfY29sbGFwc2libGUge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAje3ZhcmlhYmxlcy4kaGVhZGVySGVpZ2h0fSkpO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tZy1jb2xvci1saW5lLWdlbmVyaWMpO1xuXG4gICAgICAgICAgICA+IC5kYy10b2Mge1xuICAgICAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfdG9jLWNvbGxhcHNlZCB7XG4gICAgICAgICAgICB3aWR0aDogNTZweDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcblxuICAgICAgICAgICAgPiAuZGMtdG9jIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fdG9jLWNvbGxhcHNlLWJ1dHRvbiB7XG4gICAgICAgIC0tXy0tZm9jdXMtb3V0bGluZS1jb2xvcjogdmFyKC0tZy1jb2xvci1saW5lLWZvY3VzKTtcbiAgICAgICAgLS1fLS1mb2N1cy1vdXRsaW5lLW9mZnNldDogMDtcblxuICAgICAgICBAaW5jbHVkZSBncmF2aXR5TWl4aW5zLmJ1dHRvbi1yZXNldCgpO1xuXG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBtaW4taGVpZ2h0OiAyMHB4O1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgMjRweCk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMjRweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgei1pbmRleDogLTE7XG4gICAgICAgICAgICBpbnNldDogMCAycHggMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cy12aXNpYmxlOjpiZWZvcmUge1xuICAgICAgICAgICAgb3V0bGluZTogdmFyKC0tXy0tZm9jdXMtb3V0bGluZS1jb2xvcikgc29saWQgMnB4O1xuICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IHZhcigtLV8tLWZvY3VzLW91dGxpbmUtb2Zmc2V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bm90KCZfY29sbGFwc2VkKSAmLWljb24ge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIgJi1pY29uIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAmX2NvbGxhcHNlZCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgICYtaWNvbiB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19kZXNrdG9wLW9ubHkge1xuICAgICAgICAubW9iaWxlICYge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX21vYmlsZS1vbmx5IHtcbiAgICAgICAgLmRlc2t0b3AgJiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcblxuICAgICAgICAmX19yaWdodCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICAgICAgdG9wOiBjYWxjKHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7dmFyaWFibGVzLiRoZWFkZXJIZWlnaHR9KSk7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgei1pbmRleDogMTE4O1xuXG4gICAgICAgICAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fbGVmdCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgICAgICB0b3A6IGNhbGMoXG4gICAgICAgICAgICAgICAgdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3t2YXJpYWJsZXMuJGhlYWRlckhlaWdodH0pICtcbiAgICAgICAgICAgICAgICAgICAgdmFyKC0tZGMtc3VibmF2aWdhdGlvbi1oZWlnaHQsICN7dmFyaWFibGVzLiRzdWJOYXZpZ2F0aW9uSGVpZ2h0fSkgKyAxcHhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBsZWZ0OiBjYWxjKDBweCAtIDEwNXZ3KTtcbiAgICAgICAgICAgIHotaW5kZXg6IDExOTtcblxuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoXG4gICAgICAgICAgICAgICAgMTAwdmggLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAje3ZhcmlhYmxlcy4kaGVhZGVySGVpZ2h0fSkgLSB2YXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAtLWRjLXN1Ym5hdmlnYXRpb24taGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgI3t2YXJpYWJsZXMuJHN1Yk5hdmlnYXRpb25IZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgICAgICAgICAxcHhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICB3aWR0aDogMTAwdnc7XG5cbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWctY29sb3ItYmFzZS1iYWNrZ3JvdW5kLCAjZmZmKTtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWctY29sb3ItbGluZS1nZW5lcmljLCAjMDAwMDAwMWEpO1xuXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBsZWZ0IDMwMG1zIDBtcztcblxuICAgICAgICAgICAgJl92aXNpYmxlIHtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuXG4gICAgICAgICAgICAgICAgYm9keTpoYXMoJikge1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJl9fbGVnYWN5LXRvYyB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogbm9uZTtcblxuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fdG9jIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1peGlucy50ZXh0LXNpemUoYm9keS0yKTtcblxuICAgICAgICAgICAgLmRjLXRvYyB7XG4gICAgICAgICAgICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudCAqL1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX3RvYy1jb2xsYXBzZWQgPiAuZGMtdG9jIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJl9fdG9jLWNvbGxhcHNlLWJ1dHRvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gICAgICAgICZfX2NlbnRlciAmI3smfV9oaWRkZW4tcmlnaHQjeyZ9X3JlZ3VsYXItcGFnZS13aWR0aDpub3QoI3smfV9mdWxsLXNjcmVlbikge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDczNnB4ICsgMjAwcHggLyAyKTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX3JpZ2h0IHtcbiAgICAgICAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX3RvYyB7XG4gICAgICAgICAgICB3aWR0aDogMjUycHg7XG5cbiAgICAgICAgICAgICZfdG9jLWNvbGxhcHNlZCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDU2cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmX19sZWZ0IHtcbiAgICAgICAgICAgIHdpZHRoOiAyNzZweDtcblxuICAgICAgICAgICAgJl90b2MtY29sbGFwc2VkIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNTZweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3ZhcmlhYmxlcyc7XG5cbkBtaXhpbiB0ZXh0LXNpemUoJG5hbWUpIHtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC0jeyRuYW1lfS1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtI3skbmFtZX0tbGluZS1oZWlnaHQpO1xufVxuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSgpIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG5AbWl4aW4gZml4QW5jaG9yUG9zaXRpb24oJG9mZnNldDogMHB4KSB7XG4gICAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3t2YXJpYWJsZXMuJGhlYWRlckhlaWdodH0pKTtcbiAgICBtYXJnaW4tdG9wOiBjYWxjKCN7JG9mZnNldH0gLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAje3ZhcmlhYmxlcy4kaGVhZGVySGVpZ2h0fSkpO1xufVxuXG5AbWl4aW4gcmVzZXQtbGluay1zdHlsZSgpIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbkBtaXhpbiBpc2xhbmRzLWZvY3VzKCkge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAudXRpbGl0eWZvY3VzICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgI2ZmZGI0ZDtcbiAgICB9XG59XG5cbkBtaXhpbiBmb2N1c2FibGUoJG9mZnNldDogMCwgJG1vZGU6ICdvdXRsaW5lJykge1xuICAgIEBpZiAkbW9kZSA9PSAnb3V0bGluZScge1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1nLWNvbG9yLWxpbmUtZm9jdXMpO1xuICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6ICRvZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgJjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJG1vZGUgPT0gJ2JveC1zaGFkb3cnIHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZy1jb2xvci1saW5lLWZvY3VzKTtcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgIH1cbiAgICAgICAgJjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBsaW5rKCkge1xuICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtbGluayk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1nLWZvY3VzLWJvcmRlci1yYWRpdXMpO1xuXG4gICAgQGluY2x1ZGUgaXNsYW5kcy1mb2N1cygpO1xuXG4gICAgQGluY2x1ZGUgZm9jdXNhYmxlKDAsICdib3gtc2hhZG93Jyk7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcbiAgICB9XG59XG5cbkBtaXhpbiBoZWFkaW5nMSgpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMyk7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XG4gICAgfVxufVxuXG5AbWl4aW4gaGVhZGluZzIoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTEpO1xufVxuXG5AbWl4aW4gaGVhZGluZzMoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMik7XG59XG5cbkBtaXhpbiBoZWFkaW5nNCgpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0xKTtcbn1cblxuQG1peGluIGhlYWRpbmc1KCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0zKTtcbn1cblxuQG1peGluIGhlYWRpbmc2KCkge1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0zKTtcbn1cblxuQG1peGluIGNvbnRyaWJ1dG9ycy10ZXh0KCkge1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbn1cblxuQG1peGluIHRleHQtYm9keS0xKCkge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktMS1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xufVxuXG5AbWl4aW4gZGVza3RvcC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIGRlc2t0b3AtdGFibGV0LW9ubHkoKSB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykgLSAxKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gbW9iaWxlLW9ubHkoKSB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBncmF2aXR5LXVpLXRleHQtc2l6ZXMoJGRlbHRhKSB7XG4gICAgLS1nLXRleHQtYm9keS0xLWZvbnQtc2l6ZTogI3sxM3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQ6ICN7MThweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0yLWZvbnQtc2l6ZTogI3sxNXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTItbGluZS1oZWlnaHQ6ICN7MjBweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0zLWZvbnQtc2l6ZTogI3sxN3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTMtbGluZS1oZWlnaHQ6ICN7MjRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS1zaG9ydC1mb250LXNpemU6ICN7MTNweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY2FwdGlvbi0xLWZvbnQtc2l6ZTogI3s5cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNhcHRpb24tMi1mb250LXNpemU6ICN7MTFweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtaGVhZGVyLTEtZm9udC1zaXplOiAjezIwcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWhlYWRlci0yLWZvbnQtc2l6ZTogI3syNHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1zdWJoZWFkZXItMS1mb250LXNpemU6ICN7MTNweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtc3ViaGVhZGVyLTItZm9udC1zaXplOiAjezE1cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LXN1YmhlYWRlci0zLWZvbnQtc2l6ZTogI3sxN3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1kaXNwbGF5LTEtZm9udC1zaXplOiAjezI4cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWRpc3BsYXktMi1mb250LXNpemU6ICN7MzJweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS0zLWZvbnQtc2l6ZTogI3s0MHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1kaXNwbGF5LTQtZm9udC1zaXplOiAjezQ4cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtMS1mb250LXNpemU6ICN7MTJweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS0yLWZvbnQtc2l6ZTogI3sxNHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLTMtZm9udC1zaXplOiAjezE2cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtaW5saW5lLTEtZm9udC1zaXplOiAjezEycHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtaW5saW5lLTItZm9udC1zaXplOiAjezE0cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtaW5saW5lLTMtZm9udC1zaXplOiAjezE2cHggKyAkZGVsdGF9O1xuXG4gICAgLS15Zm0tZm9udC1zaXplOiB2YXIoLS1nLXRleHQtYm9keS0yLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1saW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktMi1saW5lLWhlaWdodCk7XG4gICAgLS15Zm0tZm9udC1zaXplLWgyOiB2YXIoLS1nLXRleHQtaGVhZGVyLTItZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LXNpemUtaDM6IHZhcigtLWctdGV4dC1oZWFkZXItMS1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oNDogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci0zLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWg1OiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLTItZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LXNpemUtaDY6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItMS1mb250LXNpemUpO1xufVxuIiwiQHVzZSAnc2FzczpsaXN0JztcbkB1c2UgJ3Nhc3M6c2VsZWN0b3InO1xuXG5AbWl4aW4gb3ZlcmZsb3ctZWxsaXBzaXMoJHR5cGU6IGVsbGlwc2lzKSB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6ICR0eXBlO1xufVxuXG5AbWl4aW4gYnV0dG9uLXJlc2V0KCkge1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICBmb250LWZhbWlseTogdmFyKC0tZy10ZXh0LWJvZHktZm9udC1mYW1pbHkpO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xuXG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbkBtaXhpbiBsaW5rLXJlc2V0KCkge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbn1cblxuQG1peGluIGV4cGFuZC1pbnRlcmFjdGl2ZS1hcmVhKCRoOiA0cHgsICR2OiAkaCkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IGxvZ2ljYWwgKC0kdikgKC0kaCk7XG4gICAgfVxufVxuXG5AbWl4aW4gbWF4LWhlaWdodCgkaGVpZ2h0KSB7XG4gICAgbWF4LWhlaWdodDogJGhlaWdodDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG5AbWl4aW4gbWF4LXRleHQtd2lkdGgoJHdpZHRoOiAxMDAlKSB7XG4gICAgQGluY2x1ZGUgb3ZlcmZsb3ctZWxsaXBzaXMoKTtcblxuICAgIG1heC13aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gYXNwZWN0LXJhdGlvKCRyYXRpbykge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICRyYXRpbyAqIDEwMCU7XG4gICAgfVxuXG4gICAgPiAqOm9ubHktY2hpbGQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgIH1cbn1cblxuQGZ1bmN0aW9uIGdldC1waW4tc2VsZWN0b3IoJG1vZCwgJHNlbGVjdG9yLCAkYXBwZW5kOiB0cnVlKSB7XG4gICAgQGlmICRhcHBlbmQge1xuICAgICAgICBAcmV0dXJuIHNlbGVjdG9yLmFwcGVuZCgkbW9kLCAkc2VsZWN0b3IpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgICBAcmV0dXJuIGxpc3Quam9pbigkbW9kLCAkc2VsZWN0b3IsICRzZXBhcmF0b3I6IHNwYWNlKTtcbiAgICB9XG59XG5cbkBtaXhpbiBwaW4oJGJsb2NrLCAkc2VsZWN0b3JzLCAkcmFkaXVzLCAkYXBwZW5kOiB0cnVlKSB7XG4gICAgQGVhY2ggJHNlbGVjdG9yIGluICRzZWxlY3RvcnMge1xuICAgICAgICBAYXQtcm9vdCAje2dldC1waW4tc2VsZWN0b3IoI3skYmxvY2t9X3Bpbl9yb3VuZC1yb3VuZCwgJHNlbGVjdG9yLCAkYXBwZW5kKX0ge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgICAgICAgfVxuXG4gICAgICAgIEBhdC1yb290ICN7Z2V0LXBpbi1zZWxlY3RvcigjeyRibG9ja31fcGluX2JyaWNrLWJyaWNrLCAkc2VsZWN0b3IsICRhcHBlbmQpfSB7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgQGF0LXJvb3QgI3tnZXQtcGluLXNlbGVjdG9yKCN7JGJsb2NrfV9waW5fY2xlYXItY2xlYXIsICRzZWxlY3RvciwgJGFwcGVuZCl9IHtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgICAgICBib3JkZXItaW5saW5lOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgQGF0LXJvb3QgI3tnZXQtcGluLXNlbGVjdG9yKCN7JGJsb2NrfV9waW5fY2lyY2xlLWNpcmNsZSwgJHNlbGVjdG9yLCAkYXBwZW5kKX0ge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICBAYXQtcm9vdCAje2dldC1waW4tc2VsZWN0b3IoI3skYmxvY2t9X3Bpbl9yb3VuZC1icmljaywgJHNlbGVjdG9yLCAkYXBwZW5kKX0ge1xuICAgICAgICAgICAgYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1czogJHJhZGl1cztcbiAgICAgICAgICAgIGJvcmRlci1zdGFydC1lbmQtcmFkaXVzOiAwO1xuICAgICAgICAgICAgYm9yZGVyLWVuZC1zdGFydC1yYWRpdXM6ICRyYWRpdXM7XG4gICAgICAgICAgICBib3JkZXItZW5kLWVuZC1yYWRpdXM6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBAYXQtcm9vdCAje2dldC1waW4tc2VsZWN0b3IoI3skYmxvY2t9X3Bpbl9icmljay1yb3VuZCwgJHNlbGVjdG9yLCAkYXBwZW5kKX0ge1xuICAgICAgICAgICAgYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1czogMDtcbiAgICAgICAgICAgIGJvcmRlci1zdGFydC1lbmQtcmFkaXVzOiAkcmFkaXVzO1xuICAgICAgICAgICAgYm9yZGVyLWVuZC1zdGFydC1yYWRpdXM6IDA7XG4gICAgICAgICAgICBib3JkZXItZW5kLWVuZC1yYWRpdXM6ICRyYWRpdXM7XG4gICAgICAgIH1cblxuICAgICAgICBAYXQtcm9vdCAje2dldC1waW4tc2VsZWN0b3IoI3skYmxvY2t9X3Bpbl9yb3VuZC1jbGVhciwgJHNlbGVjdG9yLCAkYXBwZW5kKX0ge1xuICAgICAgICAgICAgYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1czogJHJhZGl1cztcbiAgICAgICAgICAgIGJvcmRlci1zdGFydC1lbmQtcmFkaXVzOiAwO1xuICAgICAgICAgICAgYm9yZGVyLWVuZC1zdGFydC1yYWRpdXM6ICRyYWRpdXM7XG4gICAgICAgICAgICBib3JkZXItZW5kLWVuZC1yYWRpdXM6IDA7XG4gICAgICAgICAgICBib3JkZXItaW5saW5lLWVuZDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBhdC1yb290ICN7Z2V0LXBpbi1zZWxlY3RvcigjeyRibG9ja31fcGluX2NsZWFyLXJvdW5kLCAkc2VsZWN0b3IsICRhcHBlbmQpfSB7XG4gICAgICAgICAgICBib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVzOiAwO1xuICAgICAgICAgICAgYm9yZGVyLXN0YXJ0LWVuZC1yYWRpdXM6ICRyYWRpdXM7XG4gICAgICAgICAgICBib3JkZXItZW5kLXN0YXJ0LXJhZGl1czogMDtcbiAgICAgICAgICAgIGJvcmRlci1lbmQtZW5kLXJhZGl1czogJHJhZGl1cztcbiAgICAgICAgICAgIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBAYXQtcm9vdCAje2dldC1waW4tc2VsZWN0b3IoI3skYmxvY2t9X3Bpbl9icmljay1jbGVhciwgJHNlbGVjdG9yLCAkYXBwZW5kKX0ge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgIGJvcmRlci1pbmxpbmUtZW5kOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgQGF0LXJvb3QgI3tnZXQtcGluLXNlbGVjdG9yKCN7JGJsb2NrfV9waW5fY2xlYXItYnJpY2ssICRzZWxlY3RvciwgJGFwcGVuZCl9IHtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgICAgICBib3JkZXItaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgQGF0LXJvb3QgI3tnZXQtcGluLXNlbGVjdG9yKCN7JGJsb2NrfV9waW5fY2lyY2xlLWJyaWNrLCAkc2VsZWN0b3IsICRhcHBlbmQpfSB7XG4gICAgICAgICAgICBib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVzOiAxMDBweDtcbiAgICAgICAgICAgIGJvcmRlci1zdGFydC1lbmQtcmFkaXVzOiAwO1xuICAgICAgICAgICAgYm9yZGVyLWVuZC1zdGFydC1yYWRpdXM6IDEwMHB4O1xuICAgICAgICAgICAgYm9yZGVyLWVuZC1lbmQtcmFkaXVzOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgQGF0LXJvb3QgI3tnZXQtcGluLXNlbGVjdG9yKCN7JGJsb2NrfV9waW5fYnJpY2stY2lyY2xlLCAkc2VsZWN0b3IsICRhcHBlbmQpfSB7XG4gICAgICAgICAgICBib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVzOiAwO1xuICAgICAgICAgICAgYm9yZGVyLXN0YXJ0LWVuZC1yYWRpdXM6IDEwMHB4O1xuICAgICAgICAgICAgYm9yZGVyLWVuZC1zdGFydC1yYWRpdXM6IDA7XG4gICAgICAgICAgICBib3JkZXItZW5kLWVuZC1yYWRpdXM6IDEwMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgQGF0LXJvb3QgI3tnZXQtcGluLXNlbGVjdG9yKCN7JGJsb2NrfV9waW5fY2lyY2xlLWNsZWFyLCAkc2VsZWN0b3IsICRhcHBlbmQpfSB7XG4gICAgICAgICAgICBib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVzOiAxMDBweDtcbiAgICAgICAgICAgIGJvcmRlci1zdGFydC1lbmQtcmFkaXVzOiAwO1xuICAgICAgICAgICAgYm9yZGVyLWVuZC1zdGFydC1yYWRpdXM6IDEwMHB4O1xuICAgICAgICAgICAgYm9yZGVyLWVuZC1lbmQtcmFkaXVzOiAwO1xuICAgICAgICAgICAgYm9yZGVyLWlubGluZS1lbmQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBAYXQtcm9vdCAje2dldC1waW4tc2VsZWN0b3IoI3skYmxvY2t9X3Bpbl9jbGVhci1jaXJjbGUsICRzZWxlY3RvciwgJGFwcGVuZCl9IHtcbiAgICAgICAgICAgIGJvcmRlci1zdGFydC1zdGFydC1yYWRpdXM6IDA7XG4gICAgICAgICAgICBib3JkZXItc3RhcnQtZW5kLXJhZGl1czogMTAwcHg7XG4gICAgICAgICAgICBib3JkZXItZW5kLXN0YXJ0LXJhZGl1czogMDtcbiAgICAgICAgICAgIGJvcmRlci1lbmQtZW5kLXJhZGl1czogMTAwcHg7XG4gICAgICAgICAgICBib3JkZXItaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUeXBvZ3JhcGh5XG5cbkBtaXhpbiB0ZXh0LWJvZHktMSgpIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZy10ZXh0LWJvZHktZm9udC1mYW1pbHkpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS1mb250LXdlaWdodCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQpO1xufVxuXG5AbWl4aW4gdGV4dC1ib2R5LTIoKSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWctdGV4dC1ib2R5LWZvbnQtZmFtaWx5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktMi1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS0yLWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHRleHQtYm9keS0zKCkge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1nLXRleHQtYm9keS1mb250LWZhbWlseSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1ib2R5LTMtZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktMy1saW5lLWhlaWdodCk7XG59XG5cbkBtaXhpbiB0ZXh0LWJvZHktc2hvcnQoKSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWctdGV4dC1ib2R5LWZvbnQtZmFtaWx5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktc2hvcnQtbGluZS1oZWlnaHQpO1xufVxuXG5AbWl4aW4gdGV4dC1jYXB0aW9uLTEoKSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWctdGV4dC1jYXB0aW9uLWZvbnQtZmFtaWx5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWNhcHRpb24tZm9udC13ZWlnaHQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWNhcHRpb24tMS1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtY2FwdGlvbi0xLWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHRleHQtY2FwdGlvbi0yKCkge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1nLXRleHQtY2FwdGlvbi1mb250LWZhbWlseSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWctdGV4dC1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1jYXB0aW9uLTItZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWNhcHRpb24tMi1saW5lLWhlaWdodCk7XG59XG5cbkBtaXhpbiB0ZXh0LWhlYWRlci0xKCkge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1nLXRleHQtaGVhZGVyLWZvbnQtZmFtaWx5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWhlYWRlci1mb250LXdlaWdodCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtaGVhZGVyLTEtZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWhlYWRlci0xLWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHRleHQtaGVhZGVyLTIoKSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWctdGV4dC1oZWFkZXItZm9udC1mYW1pbHkpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1nLXRleHQtaGVhZGVyLWZvbnQtd2VpZ2h0KTtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1oZWFkZXItMi1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtaGVhZGVyLTItbGluZS1oZWlnaHQpO1xufVxuXG5AbWl4aW4gdGV4dC1zdWJoZWFkZXItMSgpIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci1mb250LWZhbWlseSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItZm9udC13ZWlnaHQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci0xLWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItMS1saW5lLWhlaWdodCk7XG59XG5cbkBtaXhpbiB0ZXh0LXN1YmhlYWRlci0yKCkge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLWZvbnQtZmFtaWx5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci1mb250LXdlaWdodCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLTItZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci0yLWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHRleHQtc3ViaGVhZGVyLTMoKSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItZm9udC1mYW1pbHkpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLWZvbnQtd2VpZ2h0KTtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLTMtbGluZS1oZWlnaHQpO1xufVxuXG5AbWl4aW4gdGV4dC1kaXNwbGF5LTEoKSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWctdGV4dC1kaXNwbGF5LWZvbnQtZmFtaWx5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWRpc3BsYXktZm9udC13ZWlnaHQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWRpc3BsYXktMS1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtZGlzcGxheS0xLWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHRleHQtZGlzcGxheS0yKCkge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1nLXRleHQtZGlzcGxheS1mb250LWZhbWlseSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWctdGV4dC1kaXNwbGF5LWZvbnQtd2VpZ2h0KTtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1kaXNwbGF5LTItZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWRpc3BsYXktMi1saW5lLWhlaWdodCk7XG59XG5cbkBtaXhpbiB0ZXh0LWRpc3BsYXktMygpIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZy10ZXh0LWRpc3BsYXktZm9udC1mYW1pbHkpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1nLXRleHQtZGlzcGxheS1mb250LXdlaWdodCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtZGlzcGxheS0zLWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1kaXNwbGF5LTMtbGluZS1oZWlnaHQpO1xufVxuXG5AbWl4aW4gdGV4dC1kaXNwbGF5LTQoKSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWctdGV4dC1kaXNwbGF5LWZvbnQtZmFtaWx5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWRpc3BsYXktZm9udC13ZWlnaHQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWRpc3BsYXktNC1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtZGlzcGxheS00LWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHRleHQtY29kZS0xKCkge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1nLXRleHQtY29kZS1mb250LWZhbWlseSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWctdGV4dC1jb2RlLWZvbnQtd2VpZ2h0KTtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1jb2RlLTEtZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWNvZGUtMS1saW5lLWhlaWdodCk7XG59XG5cbkBtaXhpbiB0ZXh0LWNvZGUtMigpIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZy10ZXh0LWNvZGUtZm9udC1mYW1pbHkpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1nLXRleHQtY29kZS1mb250LXdlaWdodCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtY29kZS0yLWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1jb2RlLTItbGluZS1oZWlnaHQpO1xufVxuXG5AbWl4aW4gdGV4dC1jb2RlLTMoKSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWctdGV4dC1jb2RlLWZvbnQtZmFtaWx5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWNvZGUtZm9udC13ZWlnaHQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWNvZGUtMy1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtY29kZS0zLWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHRleHQtY29kZS1pbmxpbmUtMSgpIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZy10ZXh0LWNvZGUtZm9udC1mYW1pbHkpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1nLXRleHQtY29kZS1mb250LXdlaWdodCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtY29kZS1pbmxpbmUtMS1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtY29kZS1pbmxpbmUtMS1saW5lLWhlaWdodCk7XG59XG5cbkBtaXhpbiB0ZXh0LWNvZGUtaW5saW5lLTIoKSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWctdGV4dC1jb2RlLWZvbnQtZmFtaWx5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZy10ZXh0LWNvZGUtZm9udC13ZWlnaHQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWNvZGUtaW5saW5lLTItZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWNvZGUtaW5saW5lLTItbGluZS1oZWlnaHQpO1xufVxuXG5AbWl4aW4gdGV4dC1jb2RlLWlubGluZS0zKCkge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1nLXRleHQtY29kZS1mb250LWZhbWlseSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWctdGV4dC1jb2RlLWZvbnQtd2VpZ2h0KTtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1jb2RlLWlubGluZS0zLWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1jb2RlLWlubGluZS0zLWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHRleHQtYWNjZW50KCkge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1nLXRleHQtYWNjZW50LWZvbnQtd2VpZ2h0KTtcbn1cblxuQG1peGluIGxvYWRpbmcoJGxvYWRpbmctY29sb3ItMTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpLCAkbG9hZGluZy1jb2xvci0yOiB0cmFuc3BhcmVudCkge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoXG4gICAgICAgIC00NWRlZyxcbiAgICAgICAgJGxvYWRpbmctY29sb3ItMSxcbiAgICAgICAgJGxvYWRpbmctY29sb3ItMSA0cHgsXG4gICAgICAgICRsb2FkaW5nLWNvbG9yLTIgNHB4LFxuICAgICAgICAkbG9hZGluZy1jb2xvci0yIDhweFxuICAgICk7XG4gICAgYmFja2dyb3VuZC1zaXplOiAxNTAlO1xuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG5cbiAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5rbm93bi1hbmltYXRpb25zXG4gICAgYW5pbWF0aW9uOiBnLWxvYWRpbmctYW5pbWF0aW9uIDAuNXMgbGluZWFyIGluZmluaXRlO1xuXG4gICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIHNjcm9sbGJhcigpIHtcbiAgICAmOjotd2Via2l0LXNjcm9sbGJhcixcbiAgICAqOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1nLXNjcm9sbGJhci13aWR0aCk7XG4gICAgICAgIGhlaWdodDogdmFyKC0tZy1zY3JvbGxiYXItd2lkdGgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nLWNvbG9yLXNjcm9sbC10cmFjayk7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2ssXG4gICAgKjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nLWNvbG9yLXNjcm9sbC10cmFjayk7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyLFxuICAgICo6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWctY29sb3Itc2Nyb2xsLWNvcm5lcik7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIsXG4gICAgKjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nLWNvbG9yLXNjcm9sbC1oYW5kbGUpO1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyLFxuICAgICo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZy1jb2xvci1zY3JvbGwtaGFuZGxlLWhvdmVyKTtcbiAgICB9XG59XG5cbkBtaXhpbiBmb2N1cy1vdXRsaW5lKCkge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1nLWNvbG9yLWxpbmUtZm9jdXMpO1xufVxuIl19 */", "@use 'sass:map';\n@use 'variables';\n\n@mixin text-size($name) {\n font-size: var(--g-text-#{$name}-font-size);\n line-height: var(--g-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n padding-top: calc(var(--dc-header-height, #{variables.$headerHeight}));\n margin-top: calc(#{$offset} - var(--dc-header-height, #{variables.$headerHeight}));\n}\n\n@mixin reset-link-style() {\n color: inherit;\n text-decoration: none;\n}\n\n@mixin islands-focus() {\n outline: none;\n\n .utilityfocus &:focus {\n outline: 2px solid #ffdb4d;\n }\n}\n\n@mixin focusable($offset: 0, $mode: 'outline') {\n @if $mode == 'outline' {\n &:focus {\n outline: 2px solid var(--g-color-line-focus);\n outline-offset: $offset;\n }\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n }\n\n @if $mode == 'box-shadow' {\n &:focus {\n box-shadow: 0 0 0 2px var(--g-color-line-focus);\n outline: 0;\n }\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n}\n\n@mixin link() {\n color: var(--g-color-text-link);\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--g-focus-border-radius);\n\n @include islands-focus();\n\n @include focusable(0, 'box-shadow');\n\n &:hover,\n &:active {\n color: var(--g-color-text-link-hover);\n }\n}\n\n@mixin heading1() {\n font-weight: 500;\n\n @include text-size(display-3);\n\n @media (max-width: map.get(variables.$screenBreakpoints, 'md') - 1) {\n @include text-size(display-2);\n }\n}\n\n@mixin heading2() {\n font-weight: 500;\n\n @include text-size(display-1);\n}\n\n@mixin heading3() {\n font-weight: 500;\n\n @include text-size(header-2);\n}\n\n@mixin heading4() {\n font-weight: 500;\n\n @include text-size(header-1);\n}\n\n@mixin heading5() {\n font-weight: 500;\n\n @include text-size(body-3);\n}\n\n@mixin heading6() {\n font-weight: 400;\n\n @include text-size(body-3);\n}\n\n@mixin contributors-text() {\n font-size: 13px;\n font-weight: 400;\n margin-right: 5px;\n align-self: center;\n}\n\n@mixin text-body-1() {\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n font-weight: var(--g-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n @media (max-width: map.get(variables.$screenBreakpoints, 'md') - 1) {\n display: none;\n }\n}\n\n@mixin desktop-tablet-only() {\n @media (max-width: map.get(variables.$screenBreakpoints, 'sm') - 1) {\n display: none;\n }\n}\n\n@mixin mobile-tablet-only() {\n @media (min-width: map.get(variables.$screenBreakpoints, 'md')) {\n display: none;\n }\n}\n\n@mixin mobile-only() {\n @media (min-width: map.get(variables.$screenBreakpoints, 'sm')) {\n display: none;\n }\n}\n\n@mixin gravity-ui-text-sizes($delta) {\n --g-text-body-1-font-size: #{13px + $delta};\n --g-text-body-1-line-height: #{18px + $delta};\n --g-text-body-2-font-size: #{15px + $delta};\n --g-text-body-2-line-height: #{20px + $delta};\n --g-text-body-3-font-size: #{17px + $delta};\n --g-text-body-3-line-height: #{24px + $delta};\n --g-text-body-short-font-size: #{13px + $delta};\n --g-text-caption-1-font-size: #{9px + $delta};\n --g-text-caption-2-font-size: #{11px + $delta};\n --g-text-header-1-font-size: #{20px + $delta};\n --g-text-header-2-font-size: #{24px + $delta};\n --g-text-subheader-1-font-size: #{13px + $delta};\n --g-text-subheader-2-font-size: #{15px + $delta};\n --g-text-subheader-3-font-size: #{17px + $delta};\n --g-text-display-1-font-size: #{28px + $delta};\n --g-text-display-2-font-size: #{32px + $delta};\n --g-text-display-3-font-size: #{40px + $delta};\n --g-text-display-4-font-size: #{48px + $delta};\n --g-text-code-1-font-size: #{12px + $delta};\n --g-text-code-2-font-size: #{14px + $delta};\n --g-text-code-3-font-size: #{16px + $delta};\n --g-text-code-inline-1-font-size: #{12px + $delta};\n --g-text-code-inline-2-font-size: #{14px + $delta};\n --g-text-code-inline-3-font-size: #{16px + $delta};\n\n --yfm-font-size: var(--g-text-body-2-font-size);\n --yfm-font-line-height: var(--g-text-body-2-line-height);\n --yfm-font-size-h2: var(--g-text-header-2-font-size);\n --yfm-font-size-h3: var(--g-text-header-1-font-size);\n --yfm-font-size-h4: var(--g-text-subheader-3-font-size);\n --yfm-font-size-h5: var(--g-text-subheader-2-font-size);\n --yfm-font-size-h6: var(--g-text-subheader-1-font-size);\n}\n", "@use 'sass:list';\n@use 'sass:selector';\n\n@mixin overflow-ellipsis($type: ellipsis) {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: $type;\n}\n\n@mixin button-reset() {\n padding: 0;\n\n font-family: var(--g-text-body-font-family);\n font-size: inherit;\n font-weight: var(--g-text-body-font-weight);\n\n color: inherit;\n background: none;\n border: none;\n outline: none;\n cursor: pointer;\n}\n\n@mixin link-reset() {\n color: inherit;\n text-decoration: inherit;\n}\n\n@mixin expand-interactive-area($h: 4px, $v: $h) {\n position: relative;\n\n &::after {\n content: '';\n position: absolute;\n inset: logical (-$v) (-$h);\n }\n}\n\n@mixin max-height($height) {\n max-height: $height;\n overflow-y: auto;\n}\n\n@mixin max-text-width($width: 100%) {\n @include overflow-ellipsis();\n\n max-width: $width;\n}\n\n@mixin aspect-ratio($ratio) {\n position: relative;\n\n &::before {\n display: block;\n content: '';\n width: 100%;\n padding-block-start: $ratio * 100%;\n }\n\n > *:only-child {\n position: absolute;\n inset: 0;\n }\n}\n\n@function get-pin-selector($mod, $selector, $append: true) {\n @if $append {\n @return selector.append($mod, $selector);\n } @else {\n @return list.join($mod, $selector, $separator: space);\n }\n}\n\n@mixin pin($block, $selectors, $radius, $append: true) {\n @each $selector in $selectors {\n @at-root #{get-pin-selector(#{$block}_pin_round-round, $selector, $append)} {\n border-radius: $radius;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_brick-brick, $selector, $append)} {\n border-radius: 0;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_clear-clear, $selector, $append)} {\n border-radius: 0;\n border-inline: 0;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_circle-circle, $selector, $append)} {\n border-radius: 100px;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_round-brick, $selector, $append)} {\n border-start-start-radius: $radius;\n border-start-end-radius: 0;\n border-end-start-radius: $radius;\n border-end-end-radius: 0;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_brick-round, $selector, $append)} {\n border-start-start-radius: 0;\n border-start-end-radius: $radius;\n border-end-start-radius: 0;\n border-end-end-radius: $radius;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_round-clear, $selector, $append)} {\n border-start-start-radius: $radius;\n border-start-end-radius: 0;\n border-end-start-radius: $radius;\n border-end-end-radius: 0;\n border-inline-end: 0;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_clear-round, $selector, $append)} {\n border-start-start-radius: 0;\n border-start-end-radius: $radius;\n border-end-start-radius: 0;\n border-end-end-radius: $radius;\n border-inline-start: 0;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_brick-clear, $selector, $append)} {\n border-radius: 0;\n border-inline-end: 0;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_clear-brick, $selector, $append)} {\n border-radius: 0;\n border-inline-start: 0;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_circle-brick, $selector, $append)} {\n border-start-start-radius: 100px;\n border-start-end-radius: 0;\n border-end-start-radius: 100px;\n border-end-end-radius: 0;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_brick-circle, $selector, $append)} {\n border-start-start-radius: 0;\n border-start-end-radius: 100px;\n border-end-start-radius: 0;\n border-end-end-radius: 100px;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_circle-clear, $selector, $append)} {\n border-start-start-radius: 100px;\n border-start-end-radius: 0;\n border-end-start-radius: 100px;\n border-end-end-radius: 0;\n border-inline-end: 0;\n }\n\n @at-root #{get-pin-selector(#{$block}_pin_clear-circle, $selector, $append)} {\n border-start-start-radius: 0;\n border-start-end-radius: 100px;\n border-end-start-radius: 0;\n border-end-end-radius: 100px;\n border-inline-start: 0;\n }\n }\n}\n\n// Typography\n\n@mixin text-body-1() {\n font-family: var(--g-text-body-font-family);\n font-weight: var(--g-text-body-font-weight);\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n}\n\n@mixin text-body-2() {\n font-family: var(--g-text-body-font-family);\n font-weight: var(--g-text-body-font-weight);\n font-size: var(--g-text-body-2-font-size);\n line-height: var(--g-text-body-2-line-height);\n}\n\n@mixin text-body-3() {\n font-family: var(--g-text-body-font-family);\n font-weight: var(--g-text-body-font-weight);\n font-size: var(--g-text-body-3-font-size);\n line-height: var(--g-text-body-3-line-height);\n}\n\n@mixin text-body-short() {\n font-family: var(--g-text-body-font-family);\n font-weight: var(--g-text-body-font-weight);\n font-size: var(--g-text-body-short-font-size);\n line-height: var(--g-text-body-short-line-height);\n}\n\n@mixin text-caption-1() {\n font-family: var(--g-text-caption-font-family);\n font-weight: var(--g-text-caption-font-weight);\n font-size: var(--g-text-caption-1-font-size);\n line-height: var(--g-text-caption-1-line-height);\n}\n\n@mixin text-caption-2() {\n font-family: var(--g-text-caption-font-family);\n font-weight: var(--g-text-caption-font-weight);\n font-size: var(--g-text-caption-2-font-size);\n line-height: var(--g-text-caption-2-line-height);\n}\n\n@mixin text-header-1() {\n font-family: var(--g-text-header-font-family);\n font-weight: var(--g-text-header-font-weight);\n font-size: var(--g-text-header-1-font-size);\n line-height: var(--g-text-header-1-line-height);\n}\n\n@mixin text-header-2() {\n font-family: var(--g-text-header-font-family);\n font-weight: var(--g-text-header-font-weight);\n font-size: var(--g-text-header-2-font-size);\n line-height: var(--g-text-header-2-line-height);\n}\n\n@mixin text-subheader-1() {\n font-family: var(--g-text-subheader-font-family);\n font-weight: var(--g-text-subheader-font-weight);\n font-size: var(--g-text-subheader-1-font-size);\n line-height: var(--g-text-subheader-1-line-height);\n}\n\n@mixin text-subheader-2() {\n font-family: var(--g-text-subheader-font-family);\n font-weight: var(--g-text-subheader-font-weight);\n font-size: var(--g-text-subheader-2-font-size);\n line-height: var(--g-text-subheader-2-line-height);\n}\n\n@mixin text-subheader-3() {\n font-family: var(--g-text-subheader-font-family);\n font-weight: var(--g-text-subheader-font-weight);\n font-size: var(--g-text-subheader-3-font-size);\n line-height: var(--g-text-subheader-3-line-height);\n}\n\n@mixin text-display-1() {\n font-family: var(--g-text-display-font-family);\n font-weight: var(--g-text-display-font-weight);\n font-size: var(--g-text-display-1-font-size);\n line-height: var(--g-text-display-1-line-height);\n}\n\n@mixin text-display-2() {\n font-family: var(--g-text-display-font-family);\n font-weight: var(--g-text-display-font-weight);\n font-size: var(--g-text-display-2-font-size);\n line-height: var(--g-text-display-2-line-height);\n}\n\n@mixin text-display-3() {\n font-family: var(--g-text-display-font-family);\n font-weight: var(--g-text-display-font-weight);\n font-size: var(--g-text-display-3-font-size);\n line-height: var(--g-text-display-3-line-height);\n}\n\n@mixin text-display-4() {\n font-family: var(--g-text-display-font-family);\n font-weight: var(--g-text-display-font-weight);\n font-size: var(--g-text-display-4-font-size);\n line-height: var(--g-text-display-4-line-height);\n}\n\n@mixin text-code-1() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-1-font-size);\n line-height: var(--g-text-code-1-line-height);\n}\n\n@mixin text-code-2() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-2-font-size);\n line-height: var(--g-text-code-2-line-height);\n}\n\n@mixin text-code-3() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-3-font-size);\n line-height: var(--g-text-code-3-line-height);\n}\n\n@mixin text-code-inline-1() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-inline-1-font-size);\n line-height: var(--g-text-code-inline-1-line-height);\n}\n\n@mixin text-code-inline-2() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-inline-2-font-size);\n line-height: var(--g-text-code-inline-2-line-height);\n}\n\n@mixin text-code-inline-3() {\n font-family: var(--g-text-code-font-family);\n font-weight: var(--g-text-code-font-weight);\n font-size: var(--g-text-code-inline-3-font-size);\n line-height: var(--g-text-code-inline-3-line-height);\n}\n\n@mixin text-accent() {\n font-weight: var(--g-text-accent-font-weight);\n}\n\n@mixin loading($loading-color-1: rgba(255, 255, 255, 0.3), $loading-color-2: transparent) {\n background-image: repeating-linear-gradient(\n -45deg,\n $loading-color-1,\n $loading-color-1 4px,\n $loading-color-2 4px,\n $loading-color-2 8px\n );\n background-size: 150%;\n background-clip: padding-box;\n\n // stylelint-disable-next-line no-unknown-animations\n animation: g-loading-animation 0.5s linear infinite;\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n}\n\n@mixin scrollbar() {\n &::-webkit-scrollbar,\n *::-webkit-scrollbar {\n width: var(--g-scrollbar-width);\n height: var(--g-scrollbar-width);\n background: var(--g-color-scroll-track);\n }\n\n &::-webkit-scrollbar-track,\n *::-webkit-scrollbar-track {\n background: var(--g-color-scroll-track);\n }\n\n &::-webkit-scrollbar-corner,\n *::-webkit-scrollbar-corner {\n background: var(--g-color-scroll-corner);\n }\n\n &::-webkit-scrollbar-thumb,\n *::-webkit-scrollbar-thumb {\n background: var(--g-color-scroll-handle);\n }\n\n &::-webkit-scrollbar-thumb:hover,\n *::-webkit-scrollbar-thumb:hover {\n background: var(--g-color-scroll-handle-hover);\n }\n}\n\n@mixin focus-outline() {\n outline: 2px solid var(--g-color-line-focus);\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []