@diplodoc/components 5.22.0 → 5.23.0
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.
- package/build/cjs/components/BackToTop/BackToTop.css.map +1 -1
- package/build/cjs/components/BookmarkButton/BookmarkButton.css.map +1 -1
- package/build/cjs/components/Breadcrumbs/Breadcrumbs.css.map +1 -1
- package/build/cjs/components/ContributorAvatars/ContributorAvatars.css.map +1 -1
- package/build/cjs/components/Contributors/Contributors.css.map +1 -1
- package/build/cjs/components/Control/Control.css.map +1 -1
- package/build/cjs/components/Controls/Controls.css.map +1 -1
- package/build/cjs/components/Controls/Controls.d.ts +2 -0
- package/build/cjs/components/Controls/Controls.js +3 -1
- package/build/cjs/components/Controls/Controls.js.map +2 -2
- package/build/cjs/components/Controls/single-controls/DividerControl/DividerControl.css.map +1 -1
- package/build/cjs/components/Controls/single-controls/LangControl/LangControl.css.map +1 -1
- package/build/cjs/components/Controls/single-controls/MarkdownControl.d.ts +3 -1
- package/build/cjs/components/Controls/single-controls/MarkdownControl.js +110 -27
- package/build/cjs/components/Controls/single-controls/MarkdownControl.js.map +3 -3
- package/build/cjs/components/Controls/single-controls/SettingsControl/SettingsControl.css.map +1 -1
- package/build/cjs/components/Controls/single-controls/markdown-url.d.ts +4 -0
- package/build/cjs/components/Controls/single-controls/markdown-url.js +56 -0
- package/build/cjs/components/Controls/single-controls/markdown-url.js.map +7 -0
- package/build/cjs/components/DocLayout/DocLayout.css.map +1 -1
- package/build/cjs/components/DocLeadingPage/DocLeadingPage.css.map +1 -1
- package/build/cjs/components/DocPage/DocPage.css.map +1 -1
- package/build/cjs/components/DocPage/DocPage.js +6 -1
- package/build/cjs/components/DocPage/DocPage.js.map +2 -2
- package/build/cjs/components/DocPageTitle/DocPageTitle.css.map +1 -1
- package/build/cjs/components/ErrorPage/ErrorPage.css.map +1 -1
- package/build/cjs/components/Feedback/Feedback.css.map +1 -1
- package/build/cjs/components/Gallery/Gallery.css.map +1 -1
- package/build/cjs/components/Mark/Mark.css.map +1 -1
- package/build/cjs/components/MiniToc/MiniToc.css.map +1 -1
- package/build/cjs/components/MobileControls/MobileControl/MobileControl.css.map +1 -1
- package/build/cjs/components/MobileControls/MobileControlSheet/MobileControlSheet.css.map +1 -1
- package/build/cjs/components/MobileControls/MobileControls.css.map +1 -1
- package/build/cjs/components/NeuroExpertModal/NeuroExpertModal.css.map +1 -1
- package/build/cjs/components/Notification/Notification.css.map +1 -1
- package/build/cjs/components/Paginator/Paginator.css.map +1 -1
- package/build/cjs/components/SearchBar/SearchBar.css.map +1 -1
- package/build/cjs/components/SearchItem/SearchItem.css.map +1 -1
- package/build/cjs/components/SearchPage/SearchPage.css.map +1 -1
- package/build/cjs/components/SearchSuggest/index.css.map +1 -1
- package/build/cjs/components/ShareButton/ShareButton.css.map +1 -1
- package/build/cjs/components/SubNavigation/SubNavigation.css.map +1 -1
- package/build/cjs/components/Subscribe/Subscribe.css.map +1 -1
- package/build/cjs/components/Summary/Summary.css.map +1 -1
- package/build/cjs/components/Tags/Tags.css.map +1 -1
- package/build/cjs/components/TagsFilter/TagsFilter.css.map +1 -1
- package/build/cjs/components/Toc/Toc.css.map +1 -1
- package/build/cjs/components/TocItem/TocItem.css.map +1 -1
- package/build/cjs/components/TocLable/TocLabel.css.map +1 -1
- package/build/cjs/components/TocNavPanel/TocNavPanel.css.map +1 -1
- package/build/cjs/components/ToggleArrow/ToggleArrow.css.map +1 -1
- package/build/cjs/components/UpdatedAtDate/UpdatedAtDate.css.map +1 -1
- package/build/cjs/components/Widgets/Widgets.css.map +1 -1
- package/build/cjs/components/constants.d.ts +1 -0
- package/build/cjs/components/navigation/CustomFooter/CustomFooter.css.map +1 -1
- package/build/cjs/components/navigation/CustomNavigation/CustomNavigation.css.map +1 -1
- package/build/cjs/components/navigation/DropdownContent/Column/Column.css.map +1 -1
- package/build/cjs/components/navigation/DropdownContent/DropdownContent.css.map +1 -1
- package/build/cjs/components/navigation/DropdownContent/Section/Section.css.map +1 -1
- package/build/cjs/components/navigation/Label/Label.css.map +1 -1
- package/build/cjs/components/navigation/MobileDropdown/MobileDropdown.css.map +1 -1
- package/build/cjs/components/navigation/NavigationDropdown/NavigationDropdown.css.map +1 -1
- package/build/cjs/components/navigation/Sidebar/Sidebar.css.map +1 -1
- package/build/cjs/components/navigation/SidebarContent/SidebarContent.css.map +1 -1
- package/build/cjs/components/navigation/SidebarNavigation/SidebarNavigation.css.map +1 -1
- package/build/cjs/components/navigation/ToMainMenu/ToMainMenu.css.map +1 -1
- package/build/cjs/contexts/InterfaceContext.d.ts +5 -1
- package/build/cjs/contexts/InterfaceContext.js.map +2 -2
- package/build/esm/components/BackToTop/BackToTop.css.map +1 -1
- package/build/esm/components/BookmarkButton/BookmarkButton.css.map +1 -1
- package/build/esm/components/Breadcrumbs/Breadcrumbs.css.map +1 -1
- package/build/esm/components/ContributorAvatars/ContributorAvatars.css.map +1 -1
- package/build/esm/components/Contributors/Contributors.css.map +1 -1
- package/build/esm/components/Control/Control.css.map +1 -1
- package/build/esm/components/Controls/Controls.css.map +1 -1
- package/build/esm/components/Controls/Controls.d.ts +2 -0
- package/build/esm/components/Controls/Controls.js +3 -1
- package/build/esm/components/Controls/Controls.js.map +2 -2
- package/build/esm/components/Controls/single-controls/DividerControl/DividerControl.css.map +1 -1
- package/build/esm/components/Controls/single-controls/LangControl/LangControl.css.map +1 -1
- package/build/esm/components/Controls/single-controls/MarkdownControl.d.ts +3 -1
- package/build/esm/components/Controls/single-controls/MarkdownControl.js +103 -30
- package/build/esm/components/Controls/single-controls/MarkdownControl.js.map +3 -3
- package/build/esm/components/Controls/single-controls/SettingsControl/SettingsControl.css.map +1 -1
- package/build/esm/components/Controls/single-controls/markdown-url.d.ts +4 -0
- package/build/esm/components/Controls/single-controls/markdown-url.js +35 -0
- package/build/esm/components/Controls/single-controls/markdown-url.js.map +7 -0
- package/build/esm/components/DocLayout/DocLayout.css.map +1 -1
- package/build/esm/components/DocLeadingPage/DocLeadingPage.css.map +1 -1
- package/build/esm/components/DocPage/DocPage.css.map +1 -1
- package/build/esm/components/DocPage/DocPage.js +6 -1
- package/build/esm/components/DocPage/DocPage.js.map +2 -2
- package/build/esm/components/DocPageTitle/DocPageTitle.css.map +1 -1
- package/build/esm/components/ErrorPage/ErrorPage.css.map +1 -1
- package/build/esm/components/Feedback/Feedback.css.map +1 -1
- package/build/esm/components/Gallery/Gallery.css.map +1 -1
- package/build/esm/components/Mark/Mark.css.map +1 -1
- package/build/esm/components/MiniToc/MiniToc.css.map +1 -1
- package/build/esm/components/MobileControls/MobileControl/MobileControl.css.map +1 -1
- package/build/esm/components/MobileControls/MobileControlSheet/MobileControlSheet.css.map +1 -1
- package/build/esm/components/MobileControls/MobileControls.css.map +1 -1
- package/build/esm/components/NeuroExpertModal/NeuroExpertModal.css.map +1 -1
- package/build/esm/components/Notification/Notification.css.map +1 -1
- package/build/esm/components/Paginator/Paginator.css.map +1 -1
- package/build/esm/components/SearchBar/SearchBar.css.map +1 -1
- package/build/esm/components/SearchItem/SearchItem.css.map +1 -1
- package/build/esm/components/SearchPage/SearchPage.css.map +1 -1
- package/build/esm/components/SearchSuggest/index.css.map +1 -1
- package/build/esm/components/ShareButton/ShareButton.css.map +1 -1
- package/build/esm/components/SubNavigation/SubNavigation.css.map +1 -1
- package/build/esm/components/Subscribe/Subscribe.css.map +1 -1
- package/build/esm/components/Summary/Summary.css.map +1 -1
- package/build/esm/components/Tags/Tags.css.map +1 -1
- package/build/esm/components/TagsFilter/TagsFilter.css.map +1 -1
- package/build/esm/components/Toc/Toc.css.map +1 -1
- package/build/esm/components/TocItem/TocItem.css.map +1 -1
- package/build/esm/components/TocLable/TocLabel.css.map +1 -1
- package/build/esm/components/TocNavPanel/TocNavPanel.css.map +1 -1
- package/build/esm/components/ToggleArrow/ToggleArrow.css.map +1 -1
- package/build/esm/components/UpdatedAtDate/UpdatedAtDate.css.map +1 -1
- package/build/esm/components/Widgets/Widgets.css.map +1 -1
- package/build/esm/components/constants.d.ts +1 -0
- package/build/esm/components/navigation/CustomFooter/CustomFooter.css.map +1 -1
- package/build/esm/components/navigation/CustomNavigation/CustomNavigation.css.map +1 -1
- package/build/esm/components/navigation/DropdownContent/Column/Column.css.map +1 -1
- package/build/esm/components/navigation/DropdownContent/DropdownContent.css.map +1 -1
- package/build/esm/components/navigation/DropdownContent/Section/Section.css.map +1 -1
- package/build/esm/components/navigation/Label/Label.css.map +1 -1
- package/build/esm/components/navigation/MobileDropdown/MobileDropdown.css.map +1 -1
- package/build/esm/components/navigation/NavigationDropdown/NavigationDropdown.css.map +1 -1
- package/build/esm/components/navigation/Sidebar/Sidebar.css.map +1 -1
- package/build/esm/components/navigation/SidebarContent/SidebarContent.css.map +1 -1
- package/build/esm/components/navigation/SidebarNavigation/SidebarNavigation.css.map +1 -1
- package/build/esm/components/navigation/ToMainMenu/ToMainMenu.css.map +1 -1
- package/build/esm/contexts/InterfaceContext.d.ts +5 -1
- package/build/esm/contexts/InterfaceContext.js.map +2 -2
- package/build/index.css.map +1 -1
- package/build/themes/common/index.css.map +1 -1
- package/package.json +1 -1
|
@@ -75,6 +75,7 @@ var ControlsList = (props) => {
|
|
|
75
75
|
availableLangs = [],
|
|
76
76
|
className,
|
|
77
77
|
showMarkdownActions,
|
|
78
|
+
markdownActions = "dropdown",
|
|
78
79
|
mdDocsUrl,
|
|
79
80
|
onMdDocsButtonClick
|
|
80
81
|
} = props;
|
|
@@ -172,9 +173,10 @@ var ControlsList = (props) => {
|
|
|
172
173
|
},
|
|
173
174
|
"subscribe-control"
|
|
174
175
|
),
|
|
175
|
-
showMarkdownActions && /* @__PURE__ */ jsx(
|
|
176
|
+
showMarkdownActions && markdownActions !== "none" && /* @__PURE__ */ jsx(
|
|
176
177
|
MarkdownControl,
|
|
177
178
|
{
|
|
179
|
+
mode: markdownActions,
|
|
178
180
|
mdDocsUrl,
|
|
179
181
|
onClick: onMdDocsButtonClick
|
|
180
182
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/Controls/Controls.tsx"],
|
|
4
|
-
"sourcesContent": ["import type {\n AvailableLangs,\n ControlSizes,\n FeedbackSendData,\n Lang,\n LangOptions,\n SubscribeData,\n TextSizes,\n Theme,\n} from '../../models';\n\nimport React, {memo, useContext} from 'react';\nimport block from 'bem-cn-lite';\n\nimport {Feedback, FeedbackView} from '../Feedback';\nimport {Subscribe, SubscribeView} from '../Subscribe';\nimport {useInterface} from '../../hooks';\n\nimport {ControlsLayoutContext} from './ControlsLayout';\nimport MarkdownControl from './single-controls/MarkdownControl';\n\nimport {\n DividerControl,\n EditControl,\n FullScreenControl,\n LangControl,\n PdfControl,\n SettingsControl,\n SinglePageControl,\n} from './';\n\n// eslint-disable-next-line import/order\nimport './Controls.scss';\n\nexport interface ControlsProps {\n lang?: `${Lang}` | Lang;\n langs?: (`${Lang}` | Lang)[];\n fullScreen?: boolean;\n singlePage?: boolean;\n wideFormat?: boolean;\n showMiniToc?: boolean;\n theme?: Theme;\n textSize?: TextSizes;\n vcsUrl?: string;\n vcsType?: string;\n isLiked?: boolean;\n isDisliked?: boolean;\n onChangeLang?: (lang: `${Lang}` | Lang, options?: LangOptions) => void;\n onChangeFullScreen?: (value: boolean) => void;\n onChangeSinglePage?: (value: boolean) => void;\n onChangeWideFormat?: (value: boolean) => void;\n onChangeShowMiniToc?: (value: boolean) => void;\n onChangeTheme?: (theme: Theme) => void;\n onChangeTextSize?: (textSize: TextSizes) => void;\n onSendFeedback?: (data: FeedbackSendData) => void;\n onSubscribe?: (data: SubscribeData) => void;\n consentContent?: React.ReactNode;\n onEditClick?: () => void;\n pdfLink?: string;\n pdfIconConfig?: {position?: string; size?: 'S' | 'M' | 'L'; icon?: string};\n className?: string;\n hideEditControl?: boolean;\n hideFeedbackControls?: boolean;\n availableLangs?: AvailableLangs;\n showMarkdownActions?: boolean;\n mdDocsUrl?: string;\n onMdDocsButtonClick?: React.MouseEventHandler<HTMLElement>;\n}\n\nconst b = block('dc-controls');\n\ntype Defined = {\n [P in keyof ControlsProps]-?: ControlsProps[P];\n};\n\nfunction hasLangs(langs?: (`${Lang}` | Lang)[]) {\n return langs?.length && langs.length > 1;\n}\n\nexport const ControlsList: React.FC<\n ControlsProps & {isHiddenFeedback: boolean; isHiddenAsideFeedback: boolean}\n> = (props) => {\n const {\n fullScreen,\n singlePage,\n theme,\n wideFormat,\n showMiniToc,\n hideEditControl,\n hideFeedbackControls,\n textSize,\n onChangeFullScreen,\n onChangeTheme,\n onChangeShowMiniToc,\n onChangeTextSize,\n onChangeWideFormat,\n onChangeLang,\n onChangeSinglePage,\n onSendFeedback,\n onSubscribe,\n consentContent,\n onEditClick,\n lang,\n langs,\n pdfLink,\n pdfIconConfig,\n vcsUrl,\n vcsType,\n isLiked,\n isDisliked,\n isHiddenFeedback,\n isHiddenAsideFeedback,\n availableLangs = [],\n className,\n showMarkdownActions,\n mdDocsUrl,\n onMdDocsButtonClick,\n } = props;\n\n const {isVerticalView} = useContext(ControlsLayoutContext);\n\n const withFullscreenControl = Boolean(onChangeFullScreen);\n const withSettingsControl = Boolean(\n onChangeWideFormat || onChangeTheme || onChangeShowMiniToc || onChangeTextSize,\n );\n const withLangControl = Boolean(lang && hasLangs(langs) && onChangeLang);\n const withSinglePageControl = Boolean(onChangeSinglePage);\n const withPdfControl = Boolean(pdfLink);\n const withEditControl = Boolean(!singlePage && !hideEditControl && vcsUrl);\n const withFeedbackControl = Boolean(\n !singlePage &&\n !hideFeedbackControls &&\n !isHiddenFeedback &&\n !isHiddenAsideFeedback &&\n onSendFeedback,\n );\n const withSubscribeControls = Boolean(!singlePage && onSubscribe);\n\n const controls = [\n withFullscreenControl && (\n <FullScreenControl\n key=\"fullscreen-control\"\n value={fullScreen}\n onChange={onChangeFullScreen}\n />\n ),\n withSettingsControl && (\n <SettingsControl\n key=\"settings-control\"\n theme={theme}\n wideFormat={wideFormat}\n showMiniToc={showMiniToc}\n textSize={textSize}\n onChangeTheme={onChangeTheme}\n onChangeShowMiniToc={onChangeShowMiniToc}\n onChangeTextSize={onChangeTextSize}\n onChangeWideFormat={onChangeWideFormat}\n />\n ),\n withLangControl && (\n <LangControl\n key=\"lang-control\"\n lang={lang as Lang}\n langs={langs}\n availableLangs={availableLangs}\n onChangeLang={onChangeLang as Defined['onChangeLang']}\n />\n ),\n withSinglePageControl && (\n <SinglePageControl\n key=\"single-page-control\"\n value={singlePage}\n onChange={onChangeSinglePage as Defined['onChangeSinglePage']}\n />\n ),\n withPdfControl && (\n <PdfControl\n key=\"pdf-control\"\n pdfLink={pdfLink as Defined['pdfLink']}\n icon={pdfIconConfig?.icon}\n size={pdfIconConfig?.size as ControlSizes | undefined}\n />\n ),\n '---',\n withEditControl && (\n <EditControl\n key=\"edit-control\"\n vcsUrl={vcsUrl as Defined['vcsUrl']}\n vcsType={vcsType as Defined['vcsType']}\n onClick={onEditClick}\n />\n ),\n '---',\n withFeedbackControl && (\n <Feedback\n key=\"feedback-control\"\n isLiked={isLiked}\n isDisliked={isDisliked}\n onSendFeedback={onSendFeedback as Defined['onSendFeedback']}\n view={FeedbackView.Regular}\n />\n ),\n '---',\n withSubscribeControls && (\n <Subscribe\n key=\"subscribe-control\"\n onSubscribe={onSubscribe as Defined['onSubscribe']}\n consentContent={consentContent}\n view={SubscribeView.Regular}\n />\n ),\n showMarkdownActions && (\n <MarkdownControl\n key=\"markdown-control\"\n mdDocsUrl={mdDocsUrl}\n onClick={onMdDocsButtonClick}\n />\n ),\n ]\n .filter(Boolean)\n .reduce((result, control, index, array) => {\n if (control === '---') {\n if (array[index - 1] && array[index + 1] && array[index + 1] !== '---') {\n result.push(\n <DividerControl key={'divider-' + index} className={b('divider')} />,\n );\n }\n } else {\n result.push(control as React.ReactElement);\n }\n\n return result;\n }, [] as React.ReactElement[]);\n\n if (!controls.length) {\n return null;\n }\n\n return <div className={b({vertical: isVerticalView}, className)}>{controls}</div>;\n};\n\nconst Controls = memo<ControlsProps>((props) => {\n const isHiddenFeedback = useInterface('feedback');\n const isHiddenAsideFeedback = useInterface('feedback-aside');\n\n return (\n <ControlsList\n {...props}\n isHiddenFeedback={isHiddenFeedback}\n isHiddenAsideFeedback={isHiddenAsideFeedback}\n />\n );\n});\n\nControls.displayName = 'DCControls';\n\nexport default Controls;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;
|
|
4
|
+
"sourcesContent": ["import type {\n AvailableLangs,\n ControlSizes,\n FeedbackSendData,\n Lang,\n LangOptions,\n SubscribeData,\n TextSizes,\n Theme,\n} from '../../models';\nimport type {MarkdownActionsMode} from '../../contexts/InterfaceContext';\n\nimport React, {memo, useContext} from 'react';\nimport block from 'bem-cn-lite';\n\nimport {Feedback, FeedbackView} from '../Feedback';\nimport {Subscribe, SubscribeView} from '../Subscribe';\nimport {useInterface} from '../../hooks';\n\nimport {ControlsLayoutContext} from './ControlsLayout';\nimport MarkdownControl from './single-controls/MarkdownControl';\n\nimport {\n DividerControl,\n EditControl,\n FullScreenControl,\n LangControl,\n PdfControl,\n SettingsControl,\n SinglePageControl,\n} from './';\n\n// eslint-disable-next-line import/order\nimport './Controls.scss';\n\nexport interface ControlsProps {\n lang?: `${Lang}` | Lang;\n langs?: (`${Lang}` | Lang)[];\n fullScreen?: boolean;\n singlePage?: boolean;\n wideFormat?: boolean;\n showMiniToc?: boolean;\n theme?: Theme;\n textSize?: TextSizes;\n vcsUrl?: string;\n vcsType?: string;\n isLiked?: boolean;\n isDisliked?: boolean;\n onChangeLang?: (lang: `${Lang}` | Lang, options?: LangOptions) => void;\n onChangeFullScreen?: (value: boolean) => void;\n onChangeSinglePage?: (value: boolean) => void;\n onChangeWideFormat?: (value: boolean) => void;\n onChangeShowMiniToc?: (value: boolean) => void;\n onChangeTheme?: (theme: Theme) => void;\n onChangeTextSize?: (textSize: TextSizes) => void;\n onSendFeedback?: (data: FeedbackSendData) => void;\n onSubscribe?: (data: SubscribeData) => void;\n consentContent?: React.ReactNode;\n onEditClick?: () => void;\n pdfLink?: string;\n pdfIconConfig?: {position?: string; size?: 'S' | 'M' | 'L'; icon?: string};\n className?: string;\n hideEditControl?: boolean;\n hideFeedbackControls?: boolean;\n availableLangs?: AvailableLangs;\n showMarkdownActions?: boolean;\n markdownActions?: MarkdownActionsMode;\n mdDocsUrl?: string;\n onMdDocsButtonClick?: React.MouseEventHandler<HTMLElement>;\n}\n\nconst b = block('dc-controls');\n\ntype Defined = {\n [P in keyof ControlsProps]-?: ControlsProps[P];\n};\n\nfunction hasLangs(langs?: (`${Lang}` | Lang)[]) {\n return langs?.length && langs.length > 1;\n}\n\nexport const ControlsList: React.FC<\n ControlsProps & {isHiddenFeedback: boolean; isHiddenAsideFeedback: boolean}\n> = (props) => {\n const {\n fullScreen,\n singlePage,\n theme,\n wideFormat,\n showMiniToc,\n hideEditControl,\n hideFeedbackControls,\n textSize,\n onChangeFullScreen,\n onChangeTheme,\n onChangeShowMiniToc,\n onChangeTextSize,\n onChangeWideFormat,\n onChangeLang,\n onChangeSinglePage,\n onSendFeedback,\n onSubscribe,\n consentContent,\n onEditClick,\n lang,\n langs,\n pdfLink,\n pdfIconConfig,\n vcsUrl,\n vcsType,\n isLiked,\n isDisliked,\n isHiddenFeedback,\n isHiddenAsideFeedback,\n availableLangs = [],\n className,\n showMarkdownActions,\n markdownActions = 'dropdown',\n mdDocsUrl,\n onMdDocsButtonClick,\n } = props;\n\n const {isVerticalView} = useContext(ControlsLayoutContext);\n\n const withFullscreenControl = Boolean(onChangeFullScreen);\n const withSettingsControl = Boolean(\n onChangeWideFormat || onChangeTheme || onChangeShowMiniToc || onChangeTextSize,\n );\n const withLangControl = Boolean(lang && hasLangs(langs) && onChangeLang);\n const withSinglePageControl = Boolean(onChangeSinglePage);\n const withPdfControl = Boolean(pdfLink);\n const withEditControl = Boolean(!singlePage && !hideEditControl && vcsUrl);\n const withFeedbackControl = Boolean(\n !singlePage &&\n !hideFeedbackControls &&\n !isHiddenFeedback &&\n !isHiddenAsideFeedback &&\n onSendFeedback,\n );\n const withSubscribeControls = Boolean(!singlePage && onSubscribe);\n\n const controls = [\n withFullscreenControl && (\n <FullScreenControl\n key=\"fullscreen-control\"\n value={fullScreen}\n onChange={onChangeFullScreen}\n />\n ),\n withSettingsControl && (\n <SettingsControl\n key=\"settings-control\"\n theme={theme}\n wideFormat={wideFormat}\n showMiniToc={showMiniToc}\n textSize={textSize}\n onChangeTheme={onChangeTheme}\n onChangeShowMiniToc={onChangeShowMiniToc}\n onChangeTextSize={onChangeTextSize}\n onChangeWideFormat={onChangeWideFormat}\n />\n ),\n withLangControl && (\n <LangControl\n key=\"lang-control\"\n lang={lang as Lang}\n langs={langs}\n availableLangs={availableLangs}\n onChangeLang={onChangeLang as Defined['onChangeLang']}\n />\n ),\n withSinglePageControl && (\n <SinglePageControl\n key=\"single-page-control\"\n value={singlePage}\n onChange={onChangeSinglePage as Defined['onChangeSinglePage']}\n />\n ),\n withPdfControl && (\n <PdfControl\n key=\"pdf-control\"\n pdfLink={pdfLink as Defined['pdfLink']}\n icon={pdfIconConfig?.icon}\n size={pdfIconConfig?.size as ControlSizes | undefined}\n />\n ),\n '---',\n withEditControl && (\n <EditControl\n key=\"edit-control\"\n vcsUrl={vcsUrl as Defined['vcsUrl']}\n vcsType={vcsType as Defined['vcsType']}\n onClick={onEditClick}\n />\n ),\n '---',\n withFeedbackControl && (\n <Feedback\n key=\"feedback-control\"\n isLiked={isLiked}\n isDisliked={isDisliked}\n onSendFeedback={onSendFeedback as Defined['onSendFeedback']}\n view={FeedbackView.Regular}\n />\n ),\n '---',\n withSubscribeControls && (\n <Subscribe\n key=\"subscribe-control\"\n onSubscribe={onSubscribe as Defined['onSubscribe']}\n consentContent={consentContent}\n view={SubscribeView.Regular}\n />\n ),\n showMarkdownActions && markdownActions !== 'none' && (\n <MarkdownControl\n key=\"markdown-control\"\n mode={markdownActions}\n mdDocsUrl={mdDocsUrl}\n onClick={onMdDocsButtonClick}\n />\n ),\n ]\n .filter(Boolean)\n .reduce((result, control, index, array) => {\n if (control === '---') {\n if (array[index - 1] && array[index + 1] && array[index + 1] !== '---') {\n result.push(\n <DividerControl key={'divider-' + index} className={b('divider')} />,\n );\n }\n } else {\n result.push(control as React.ReactElement);\n }\n\n return result;\n }, [] as React.ReactElement[]);\n\n if (!controls.length) {\n return null;\n }\n\n return <div className={b({vertical: isVerticalView}, className)}>{controls}</div>;\n};\n\nconst Controls = memo<ControlsProps>((props) => {\n const isHiddenFeedback = useInterface('feedback');\n const isHiddenAsideFeedback = useInterface('feedback-aside');\n\n return (\n <ControlsList\n {...props}\n isHiddenFeedback={isHiddenFeedback}\n isHiddenAsideFeedback={isHiddenAsideFeedback}\n />\n );\n});\n\nControls.displayName = 'DCControls';\n\nexport default Controls;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../src/components/Controls/single-controls/DividerControl/DividerControl.scss", "../../../../../../src/components/Controls/single-controls/DividerControl/%3Cinput css
|
|
3
|
+
"sources": ["../../../../../../src/components/Controls/single-controls/DividerControl/DividerControl.scss", "../../../../../../src/components/Controls/single-controls/DividerControl/%3Cinput css ZPJDBk%3E"],
|
|
4
4
|
"sourcesContent": [".dc-divider-control {\n background: var(--g-color-line-generic);\n\n &:first-child {\n display: none;\n }\n\n &:not(&_vertical) {\n width: 100%;\n height: 1px;\n }\n\n &_vertical {\n width: 1px;\n }\n\n &#{&}_vertical#{&}_size_m {\n height: 16px;\n }\n &#{&}_vertical#{&}_size_l {\n height: 24px;\n }\n}\n", ".dc-divider-control {\n background: var(--g-color-line-generic);\n}\n.dc-divider-control:first-child {\n display: none;\n}\n.dc-divider-control:not(.dc-divider-control_vertical) {\n width: 100%;\n height: 1px;\n}\n.dc-divider-control_vertical {\n width: 1px;\n}\n.dc-divider-control.dc-divider-control_vertical.dc-divider-control_size_m {\n height: 16px;\n}\n.dc-divider-control.dc-divider-control_vertical.dc-divider-control_size_l {\n height: 24px;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0NvbnRyb2xzL3NpbmdsZS1jb250cm9scy9EaXZpZGVyQ29udHJvbCIsInNvdXJjZXMiOlsiRGl2aWRlckNvbnRyb2wuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJOztBQUVBO0VBQ0k7O0FBR0o7RUFDSTtFQUNBOztBQUdKO0VBQ0k7O0FBR0o7RUFDSTs7QUFFSjtFQUNJIiwic291cmNlc0NvbnRlbnQiOlsiLmRjLWRpdmlkZXItY29udHJvbCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZy1jb2xvci1saW5lLWdlbmVyaWMpO1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpub3QoJl92ZXJ0aWNhbCkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgfVxuXG4gICAgJl92ZXJ0aWNhbCB7XG4gICAgICAgIHdpZHRoOiAxcHg7XG4gICAgfVxuXG4gICAgJiN7Jn1fdmVydGljYWwjeyZ9X3NpemVfbSB7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICB9XG4gICAgJiN7Jn1fdmVydGljYWwjeyZ9X3NpemVfbCB7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICB9XG59XG4iXX0= */"],
|
|
5
5
|
"mappings": ";AAAA,CAAA;AACI,cAAA,IAAA;ACCJ;ADCI,CAHJ,kBAGI;AACI,WAAA;ACCR;ADEI,CAPJ,kBAOI,KAAA,CAAA;AACI,SAAA;AACA,UAAA;ACAR;ADGI,CALA;AAMI,SAAA;ACDR;ADII,CAhBJ,kBAgBI,CATA,2BASA,CAAA;AACI,UAAA;ACFR;ADII,CAnBJ,kBAmBI,CAZA,2BAYA,CAAA;AACI,UAAA;ACFR;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../src/components/Controls/single-controls/LangControl/LangControl.scss", "../../../../../../src/styles/mixins.scss", "../../../../../../src/components/Controls/single-controls/LangControl/%3Cinput css
|
|
3
|
+
"sources": ["../../../../../../src/components/Controls/single-controls/LangControl/LangControl.scss", "../../../../../../src/styles/mixins.scss", "../../../../../../src/components/Controls/single-controls/LangControl/%3Cinput css ax7Qbi%3E"],
|
|
4
4
|
"sourcesContent": ["@use '../../../../styles/mixins';\n@use '../../../../styles/variables';\n\n.dc-lang-control {\n display: flex;\n align-items: center;\n @include mixins.text-size(body-1);\n\n &__popup {\n width: 100px;\n @include mixins.text-size(body-1);\n }\n\n div &__popup-tooltip {\n padding: 0;\n }\n\n &__list {\n padding: 4px 0;\n }\n\n &__list-item {\n --g-focus-border-radius: 4px;\n\n display: flex;\n gap: 8px;\n align-items: center;\n width: 100%;\n height: 100%;\n border-radius: var(--g-focus-border-radius);\n border: 0;\n padding: 0 12px;\n color: inherit;\n cursor: pointer;\n background-color: inherit;\n font-family: inherit;\n\n @include mixins.focusable(-2px);\n }\n\n &__list-item_tld {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n gap: 4px;\n }\n\n &__list-item_tld > span {\n color: var(--g-color-text-hint);\n }\n\n &__list-item_disabled {\n color: var(--g-color-text-secondary);\n cursor: default;\n opacity: 0.7;\n }\n}\n", "@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", ".dc-lang-control {\n display: flex;\n align-items: center;\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n}\n.dc-lang-control__popup {\n width: 100px;\n font-size: var(--g-text-body-1-font-size);\n line-height: var(--g-text-body-1-line-height);\n}\ndiv .dc-lang-control__popup-tooltip {\n padding: 0;\n}\n.dc-lang-control__list {\n padding: 4px 0;\n}\n.dc-lang-control__list-item {\n --g-focus-border-radius: 4px;\n display: flex;\n gap: 8px;\n align-items: center;\n width: 100%;\n height: 100%;\n border-radius: var(--g-focus-border-radius);\n border: 0;\n padding: 0 12px;\n color: inherit;\n cursor: pointer;\n background-color: inherit;\n font-family: inherit;\n}\n.dc-lang-control__list-item:focus {\n outline: 2px solid var(--g-color-line-focus);\n outline-offset: -2px;\n}\n.dc-lang-control__list-item:focus:not(:focus-visible) {\n outline: 0;\n}\n.dc-lang-control__list-item_tld {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n gap: 4px;\n}\n.dc-lang-control__list-item_tld > span {\n color: var(--g-color-text-hint);\n}\n.dc-lang-control__list-item_disabled {\n color: var(--g-color-text-secondary);\n cursor: default;\n opacity: 0.7;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0NvbnRyb2xzL3NpbmdsZS1jb250cm9scy9MYW5nQ29udHJvbCIsInNvdXJjZXMiOlsiTGFuZ0NvbnRyb2wuc2NzcyIsIi4uLy4uLy4uLy4uL3N0eWxlcy9taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJO0VBQ0E7RUNEQTtFQUNBOztBREdBO0VBQ0k7RUNMSjtFQUNBOztBRFFBO0VBQ0k7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQ0RBO0VBQ0k7RUFDQSxnQkRDc0I7O0FDQzFCO0VBQ0k7O0FEQ1I7RUFDSTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7RUFDQTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vLi4vLi4vc3R5bGVzL21peGlucyc7XG5AdXNlICcuLi8uLi8uLi8uLi9zdHlsZXMvdmFyaWFibGVzJztcblxuLmRjLWxhbmctY29udHJvbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIEBpbmNsdWRlIG1peGlucy50ZXh0LXNpemUoYm9keS0xKTtcblxuICAgICZfX3BvcHVwIHtcbiAgICAgICAgd2lkdGg6IDEwMHB4O1xuICAgICAgICBAaW5jbHVkZSBtaXhpbnMudGV4dC1zaXplKGJvZHktMSk7XG4gICAgfVxuXG4gICAgZGl2ICZfX3BvcHVwLXRvb2x0aXAge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgICZfX2xpc3Qge1xuICAgICAgICBwYWRkaW5nOiA0cHggMDtcbiAgICB9XG5cbiAgICAmX19saXN0LWl0ZW0ge1xuICAgICAgICAtLWctZm9jdXMtYm9yZGVyLXJhZGl1czogNHB4O1xuXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1nLWZvY3VzLWJvcmRlci1yYWRpdXMpO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIHBhZGRpbmc6IDAgMTJweDtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cbiAgICAgICAgQGluY2x1ZGUgbWl4aW5zLmZvY3VzYWJsZSgtMnB4KTtcbiAgICB9XG5cbiAgICAmX19saXN0LWl0ZW1fdGxkIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDRweDtcbiAgICB9XG5cbiAgICAmX19saXN0LWl0ZW1fdGxkID4gc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtaGludCk7XG4gICAgfVxuXG4gICAgJl9fbGlzdC1pdGVtX2Rpc2FibGVkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICd2YXJpYWJsZXMnO1xuXG5AbWl4aW4gdGV4dC1zaXplKCRuYW1lKSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtI3skbmFtZX0tZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xuICAgIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7dmFyaWFibGVzLiRoZWFkZXJIZWlnaHR9KSk7XG4gICAgbWFyZ2luLXRvcDogY2FsYygjeyRvZmZzZXR9IC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3t2YXJpYWJsZXMuJGhlYWRlckhlaWdodH0pKTtcbn1cblxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5AbWl4aW4gaXNsYW5kcy1mb2N1cygpIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgLnV0aWxpdHlmb2N1cyAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZm9jdXNhYmxlKCRvZmZzZXQ6IDAsICRtb2RlOiAnb3V0bGluZScpIHtcbiAgICBAaWYgJG1vZGUgPT0gJ291dGxpbmUnIHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZy1jb2xvci1saW5lLWZvY3VzKTtcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAkb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgICY6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRtb2RlID09ICdib3gtc2hhZG93JyB7XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWctY29sb3ItbGluZS1mb2N1cyk7XG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICB9XG4gICAgICAgICY6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gbGluaygpIHtcbiAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LWxpbmspO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZy1mb2N1cy1ib3JkZXItcmFkaXVzKTtcblxuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcblxuICAgIEBpbmNsdWRlIGZvY3VzYWJsZSgwLCAnYm94LXNoYWRvdycpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtbGluay1ob3Zlcik7XG4gICAgfVxufVxuXG5AbWl4aW4gaGVhZGluZzEoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTIpO1xuICAgIH1cbn1cblxuQG1peGluIGhlYWRpbmcyKCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcbn1cblxuQG1peGluIGhlYWRpbmczKCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xufVxuXG5AbWl4aW4gaGVhZGluZzQoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XG59XG5cbkBtaXhpbiBoZWFkaW5nNSgpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XG59XG5cbkBtaXhpbiBoZWFkaW5nNigpIHtcbiAgICBmb250LXdlaWdodDogNDAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XG59XG5cbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG59XG5cbkBtaXhpbiB0ZXh0LWJvZHktMSgpIHtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTtcbn1cblxuQG1peGluIGRlc2t0b3Atb25seSgpIHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIG1vYmlsZS10YWJsZXQtb25seSgpIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIG1vYmlsZS1vbmx5KCkge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdzbScpKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gZ3Jhdml0eS11aS10ZXh0LXNpemVzKCRkZWx0YSkge1xuICAgIC0tZy10ZXh0LWJvZHktMS1mb250LXNpemU6ICN7MTNweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0OiAjezE4cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMi1mb250LXNpemU6ICN7MTVweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0yLWxpbmUtaGVpZ2h0OiAjezIwcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMy1mb250LXNpemU6ICN7MTdweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0zLWxpbmUtaGVpZ2h0OiAjezI0cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplOiAjezEzcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNhcHRpb24tMS1mb250LXNpemU6ICN7OXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jYXB0aW9uLTItZm9udC1zaXplOiAjezExcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWhlYWRlci0xLWZvbnQtc2l6ZTogI3syMHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1oZWFkZXItMi1mb250LXNpemU6ICN7MjRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtc3ViaGVhZGVyLTEtZm9udC1zaXplOiAjezEzcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LXN1YmhlYWRlci0yLWZvbnQtc2l6ZTogI3sxNXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemU6ICN7MTdweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS0xLWZvbnQtc2l6ZTogI3syOHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1kaXNwbGF5LTItZm9udC1zaXplOiAjezMycHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWRpc3BsYXktMy1mb250LXNpemU6ICN7NDBweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS00LWZvbnQtc2l6ZTogI3s0OHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLTEtZm9udC1zaXplOiAjezEycHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtMi1mb250LXNpemU6ICN7MTRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS0zLWZvbnQtc2l6ZTogI3sxNnB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLWlubGluZS0xLWZvbnQtc2l6ZTogI3sxMnB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLWlubGluZS0yLWZvbnQtc2l6ZTogI3sxNHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLWlubGluZS0zLWZvbnQtc2l6ZTogI3sxNnB4ICsgJGRlbHRhfTtcblxuICAgIC0teWZtLWZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktMi1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LTItbGluZS1oZWlnaHQpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oMjogdmFyKC0tZy10ZXh0LWhlYWRlci0yLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWgzOiB2YXIoLS1nLXRleHQtaGVhZGVyLTEtZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LXNpemUtaDQ6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oNTogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci0yLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWg2OiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLTEtZm9udC1zaXplKTtcbn1cbiJdfQ== */"],
|
|
5
5
|
"mappings": ";AAGA,CAAA;AACI,WAAA;AACA,eAAA;ACDA,aAAA,IAAA;AACA,eAAA,IAAA;ACAJ;AFGI,CAAA;AACI,SAAA;ACLJ,aAAA,IAAA;AACA,eAAA,IAAA;ACKJ;AFGI,IAAA,CAAA;AACI,WAAA;AEDR;AFII,CAAA;AACI,WAAA,IAAA;AEFR;AFKI,CAAA;AACI,2BAAA;AAEA,WAAA;AACA,OAAA;AACA,eAAA;AACA,SAAA;AACA,UAAA;AACA,iBAAA;AAAA,iBAAA,IAAA;AACA,UAAA;AACA,WAAA,EAAA;AACA,SAAA;AACA,UAAA;AACA,oBAAA;AACA,eAAA;AEJR;ADGQ,CDbJ,0BCaI;AACI,WAAA,IAAA,MAAA,IAAA;AACA,kBAAA;ACDZ;ADGQ,CDjBJ,0BCiBI,MAAA,KAAA;AACI,WAAA;ACDZ;AFEI,CAAA;AACI,kBAAA;AACA,eAAA;AACA,mBAAA;AACA,OAAA;AEAR;AFGI,CAPA,+BAOA,EAAA;AACI,SAAA,IAAA;AEDR;AFII,CAAA;AACI,SAAA,IAAA;AACA,UAAA;AACA,WAAA;AEFR;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { MarkdownActionsMode } from '../../../contexts/InterfaceContext';
|
|
1
2
|
import React from 'react';
|
|
2
|
-
export
|
|
3
|
+
export { getMarkdownUrl } from './markdown-url';
|
|
3
4
|
export interface MarkdownControlProps {
|
|
5
|
+
mode?: Exclude<MarkdownActionsMode, 'none'>;
|
|
4
6
|
mdDocsUrl?: string;
|
|
5
7
|
onClick?: React.MouseEventHandler<HTMLElement>;
|
|
6
8
|
}
|
|
@@ -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 {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
() =>
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
37
|
-
|
|
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
|
-
|
|
54
|
-
|
|
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
|
-
[
|
|
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\
|
|
5
|
-
"mappings": ";
|
|
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
|
}
|
package/build/esm/components/Controls/single-controls/SettingsControl/SettingsControl.css.map
CHANGED
|
@@ -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
|
|
3
|
+
"sources": ["../../../../../../src/components/Controls/single-controls/SettingsControl/SettingsControl.scss", "../../../../../../src/components/Controls/single-controls/SettingsControl/%3Cinput css PHj_59%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": []
|
|
@@ -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
|
+
}
|