@diplodoc/components 5.7.2 → 5.8.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/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/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/SettingsControl/SettingsControl.css.map +1 -1
- 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/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/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/NeuroExpertModal/NeuroExpertModal.js +28 -6
- package/build/cjs/components/NeuroExpertModal/NeuroExpertModal.js.map +2 -2
- 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/Toc/Toc.css.map +1 -1
- package/build/cjs/components/TocItem/TocItem.css.map +1 -1
- package/build/cjs/components/TocItem/TocItem.js +30 -3
- package/build/cjs/components/TocItem/TocItem.js.map +2 -2
- 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/navigation/CustomNavigation/CustomNavigation.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/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/models/index.d.ts +2 -0
- package/build/cjs/models/index.js.map +2 -2
- package/build/cjs/shared/libs/analytics/adapters/yandex-metrika-adapter.d.ts +2 -0
- package/build/cjs/shared/libs/analytics/adapters/yandex-metrika-adapter.js +2 -0
- package/build/cjs/shared/libs/analytics/adapters/yandex-metrika-adapter.js.map +2 -2
- package/build/cjs/shared/libs/analytics/analytics.d.ts +2 -2
- package/build/cjs/shared/libs/analytics/analytics.js +7 -1
- package/build/cjs/shared/libs/analytics/analytics.js.map +2 -2
- package/build/cjs/shared/libs/analytics/constant.d.ts +5 -1
- package/build/cjs/shared/libs/analytics/constant.js +6 -1
- package/build/cjs/shared/libs/analytics/constant.js.map +2 -2
- package/build/cjs/shared/libs/analytics/index.d.ts +2 -2
- package/build/cjs/shared/libs/analytics/index.js +1 -0
- package/build/cjs/shared/libs/analytics/index.js.map +2 -2
- package/build/cjs/shared/libs/analytics/types.d.ts +5 -0
- 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/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/SettingsControl/SettingsControl.css.map +1 -1
- 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/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/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/NeuroExpertModal/NeuroExpertModal.js +29 -7
- package/build/esm/components/NeuroExpertModal/NeuroExpertModal.js.map +2 -2
- 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/Toc/Toc.css.map +1 -1
- package/build/esm/components/TocItem/TocItem.css.map +1 -1
- package/build/esm/components/TocItem/TocItem.js +30 -3
- package/build/esm/components/TocItem/TocItem.js.map +2 -2
- 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/navigation/CustomNavigation/CustomNavigation.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/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/models/index.d.ts +2 -0
- package/build/esm/models/index.js.map +2 -2
- package/build/esm/shared/libs/analytics/adapters/yandex-metrika-adapter.d.ts +2 -0
- package/build/esm/shared/libs/analytics/adapters/yandex-metrika-adapter.js +2 -0
- package/build/esm/shared/libs/analytics/adapters/yandex-metrika-adapter.js.map +2 -2
- package/build/esm/shared/libs/analytics/analytics.d.ts +2 -2
- package/build/esm/shared/libs/analytics/analytics.js +7 -1
- package/build/esm/shared/libs/analytics/analytics.js.map +2 -2
- package/build/esm/shared/libs/analytics/constant.d.ts +5 -1
- package/build/esm/shared/libs/analytics/constant.js +6 -1
- package/build/esm/shared/libs/analytics/constant.js.map +2 -2
- package/build/esm/shared/libs/analytics/index.d.ts +2 -2
- package/build/esm/shared/libs/analytics/index.js +2 -1
- package/build/esm/shared/libs/analytics/index.js.map +2 -2
- package/build/esm/shared/libs/analytics/types.d.ts +5 -0
- package/build/index.css.map +1 -1
- package/build/themes/common/index.css.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/components/navigation/ToMainMenu/ToMainMenu.scss", "../../../../../src/components/navigation/ToMainMenu/%3Cinput css
|
|
3
|
+
"sources": ["../../../../../src/components/navigation/ToMainMenu/ToMainMenu.scss", "../../../../../src/components/navigation/ToMainMenu/%3Cinput css Ncw4XK%3E", "../../../../../src/styles/mixins.scss"],
|
|
4
4
|
"sourcesContent": ["@use 'sass:map';\n@use '../../../styles/mixins';\n@use '../../../styles/variables';\n\n.dc-to-main-menu {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 0 0;\n\n box-sizing: content-box;\n height: #{variables.$toMainMenuHeight};\n width: calc(100% - 2 * #{variables.$toMainMenuHorizontalPadding} - 1px);\n padding: #{variables.$toMainMenuVerticalPadding} #{variables.$toMainMenuHorizontalPadding};\n gap: 4px;\n\n text-decoration: none;\n\n color: var(--g-color-text-primary);\n background: none;\n border-radius: var(--g-border-radius-xs, 3px);\n border: none;\n border-bottom: 1px solid var(--g-color-line-generic);\n outline: none;\n\n transition:\n transform 0.1s ease-out,\n color 0.15s linear;\n transform: scale(1);\n\n touch-action: manipulation;\n\n &:not(&_disabled) {\n &:hover {\n background: var(--g-color-base-simple-hover);\n }\n\n &:active {\n transition: none;\n transform: scale(0.98);\n }\n\n &:focus-visible {\n outline: var(--g-color-line-focus, rgb(78, 121, 235));\n outline-width: 2px;\n outline-style: solid;\n }\n }\n\n &__icon {\n display: flex;\n justify-content: center;\n align-items: center;\n\n height: 100%;\n width: 44px;\n }\n\n &__title {\n @include mixins.text-size(subheader-2);\n color: var(--g-color-text-primary);\n }\n\n &_hidden {\n display: none;\n }\n\n @media (min-width: map.get(variables.$screenBreakpoints, 'md')) {\n display: none;\n }\n}\n", ".dc-to-main-menu {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 0 0;\n box-sizing: content-box;\n height: calc(var(--dc-subnavigation-height, 52px) - 4px - 4px);\n width: calc(100% - 2 * 12px - 1px);\n padding: 4px 12px;\n gap: 4px;\n text-decoration: none;\n color: var(--g-color-text-primary);\n background: none;\n border-radius: var(--g-border-radius-xs, 3px);\n border: none;\n border-bottom: 1px solid var(--g-color-line-generic);\n outline: none;\n transition: transform 0.1s ease-out, color 0.15s linear;\n transform: scale(1);\n touch-action: manipulation;\n}\n.dc-to-main-menu:not(.dc-to-main-menu_disabled):hover {\n background: var(--g-color-base-simple-hover);\n}\n.dc-to-main-menu:not(.dc-to-main-menu_disabled):active {\n transition: none;\n transform: scale(0.98);\n}\n.dc-to-main-menu:not(.dc-to-main-menu_disabled):focus-visible {\n outline: var(--g-color-line-focus, rgb(78, 121, 235));\n outline-width: 2px;\n outline-style: solid;\n}\n.dc-to-main-menu__icon {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n width: 44px;\n}\n.dc-to-main-menu__title {\n font-size: var(--g-text-subheader-2-font-size);\n line-height: var(--g-text-subheader-2-line-height);\n color: var(--g-color-text-primary);\n}\n.dc-to-main-menu_hidden {\n display: none;\n}\n@media (min-width: 769px) {\n .dc-to-main-menu {\n display: none;\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL25hdmlnYXRpb24vVG9NYWluTWVudSIsInNvdXJjZXMiOlsiVG9NYWluTWVudS5zY3NzIiwiLi4vLi4vLi4vc3R5bGVzL21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQSxZQUNJO0VBRUo7RUFFQTs7QUFHSTtFQUNJOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFJUjtFQUNJO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7O0FBR0o7RUN0REE7RUFDQTtFRHVESTs7QUFHSjtFQUNJOztBQUdKO0VBL0RKO0lBZ0VRIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vLi4vLi4vc3R5bGVzL21peGlucyc7XG5AdXNlICcuLi8uLi8uLi9zdHlsZXMvdmFyaWFibGVzJztcblxuLmRjLXRvLW1haW4tbWVudSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBmbGV4OiAxIDAgMDtcblxuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIGhlaWdodDogI3t2YXJpYWJsZXMuJHRvTWFpbk1lbnVIZWlnaHR9O1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyICogI3t2YXJpYWJsZXMuJHRvTWFpbk1lbnVIb3Jpem9udGFsUGFkZGluZ30gLSAxcHgpO1xuICAgIHBhZGRpbmc6ICN7dmFyaWFibGVzLiR0b01haW5NZW51VmVydGljYWxQYWRkaW5nfSAje3ZhcmlhYmxlcy4kdG9NYWluTWVudUhvcml6b250YWxQYWRkaW5nfTtcbiAgICBnYXA6IDRweDtcblxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1nLWJvcmRlci1yYWRpdXMteHMsIDNweCk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1nLWNvbG9yLWxpbmUtZ2VuZXJpYyk7XG4gICAgb3V0bGluZTogbm9uZTtcblxuICAgIHRyYW5zaXRpb246XG4gICAgICAgIHRyYW5zZm9ybSAwLjFzIGVhc2Utb3V0LFxuICAgICAgICBjb2xvciAwLjE1cyBsaW5lYXI7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcblxuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuXG4gICAgJjpub3QoJl9kaXNhYmxlZCkge1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWctY29sb3ItYmFzZS1zaW1wbGUtaG92ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgb3V0bGluZTogdmFyKC0tZy1jb2xvci1saW5lLWZvY3VzLCByZ2IoNzgsIDEyMSwgMjM1KSk7XG4gICAgICAgICAgICBvdXRsaW5lLXdpZHRoOiAycHg7XG4gICAgICAgICAgICBvdXRsaW5lLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2ljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiA0NHB4O1xuICAgIH1cblxuICAgICZfX3RpdGxlIHtcbiAgICAgICAgQGluY2x1ZGUgbWl4aW5zLnRleHQtc2l6ZShzdWJoZWFkZXItMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJl9oaWRkZW4ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAndmFyaWFibGVzJztcblxuQG1peGluIHRleHQtc2l6ZSgkbmFtZSkge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LSN7JG5hbWV9LWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC0jeyRuYW1lfS1saW5lLWhlaWdodCk7XG59XG5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlKCkge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbkBtaXhpbiBmaXhBbmNob3JQb3NpdGlvbigkb2Zmc2V0OiAwcHgpIHtcbiAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAje3ZhcmlhYmxlcy4kaGVhZGVySGVpZ2h0fSkpO1xuICAgIG1hcmdpbi10b3A6IGNhbGMoI3skb2Zmc2V0fSAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7dmFyaWFibGVzLiRoZWFkZXJIZWlnaHR9KSk7XG59XG5cbkBtaXhpbiByZXNldC1saW5rLXN0eWxlKCkge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuQG1peGluIGlzbGFuZHMtZm9jdXMoKSB7XG4gICAgb3V0bGluZTogbm9uZTtcblxuICAgIC51dGlsaXR5Zm9jdXMgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAjZmZkYjRkO1xuICAgIH1cbn1cblxuQG1peGluIGZvY3VzYWJsZSgkb2Zmc2V0OiAwLCAkbW9kZTogJ291dGxpbmUnKSB7XG4gICAgQGlmICRtb2RlID09ICdvdXRsaW5lJyB7XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWctY29sb3ItbGluZS1mb2N1cyk7XG4gICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogJG9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICAmOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkbW9kZSA9PSAnYm94LXNoYWRvdycge1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1nLWNvbG9yLWxpbmUtZm9jdXMpO1xuICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgfVxuICAgICAgICAmOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1peGluIGxpbmsoKSB7XG4gICAgY29sb3I6IHZhcigtLWctY29sb3ItdGV4dC1saW5rKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWctZm9jdXMtYm9yZGVyLXJhZGl1cyk7XG5cbiAgICBAaW5jbHVkZSBpc2xhbmRzLWZvY3VzKCk7XG5cbiAgICBAaW5jbHVkZSBmb2N1c2FibGUoMCwgJ2JveC1zaGFkb3cnKTtcblxuICAgICY6aG92ZXIsXG4gICAgJjphY3RpdmUge1xuICAgICAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LWxpbmstaG92ZXIpO1xuICAgIH1cbn1cblxuQG1peGluIGhlYWRpbmcxKCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0zKTtcblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xuICAgICAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0yKTtcbiAgICB9XG59XG5cbkBtaXhpbiBoZWFkaW5nMigpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMSk7XG59XG5cbkBtaXhpbiBoZWFkaW5nMygpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0yKTtcbn1cblxuQG1peGluIGhlYWRpbmc0KCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTEpO1xufVxuXG5AbWl4aW4gaGVhZGluZzUoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xufVxuXG5AbWl4aW4gaGVhZGluZzYoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xufVxuXG5AbWl4aW4gY29udHJpYnV0b3JzLXRleHQoKSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xufVxuXG5AbWl4aW4gdGV4dC1ib2R5LTEoKSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS1mb250LXdlaWdodCk7XG59XG5cbkBtaXhpbiBkZXNrdG9wLW9ubHkoKSB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gZGVza3RvcC10YWJsZXQtb25seSgpIHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSAtIDEpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBtb2JpbGUtdGFibGV0LW9ubHkoKSB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ21kJykpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBtb2JpbGUtb25seSgpIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIGdyYXZpdHktdWktdGV4dC1zaXplcygkZGVsdGEpIHtcbiAgICAtLWctdGV4dC1ib2R5LTEtZm9udC1zaXplOiAjezEzcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMS1saW5lLWhlaWdodDogI3sxOHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTItZm9udC1zaXplOiAjezE1cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMi1saW5lLWhlaWdodDogI3syMHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LTMtZm9udC1zaXplOiAjezE3cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMy1saW5lLWhlaWdodDogI3syNHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1ib2R5LXNob3J0LWZvbnQtc2l6ZTogI3sxM3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jYXB0aW9uLTEtZm9udC1zaXplOiAjezlweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY2FwdGlvbi0yLWZvbnQtc2l6ZTogI3sxMXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1oZWFkZXItMS1mb250LXNpemU6ICN7MjBweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtaGVhZGVyLTItZm9udC1zaXplOiAjezI0cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LXN1YmhlYWRlci0xLWZvbnQtc2l6ZTogI3sxM3B4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1zdWJoZWFkZXItMi1mb250LXNpemU6ICN7MTVweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtc3ViaGVhZGVyLTMtZm9udC1zaXplOiAjezE3cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWRpc3BsYXktMS1mb250LXNpemU6ICN7MjhweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS0yLWZvbnQtc2l6ZTogI3szMnB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1kaXNwbGF5LTMtZm9udC1zaXplOiAjezQwcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWRpc3BsYXktNC1mb250LXNpemU6ICN7NDhweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS0xLWZvbnQtc2l6ZTogI3sxMnB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLTItZm9udC1zaXplOiAjezE0cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtMy1mb250LXNpemU6ICN7MTZweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS1pbmxpbmUtMS1mb250LXNpemU6ICN7MTJweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS1pbmxpbmUtMi1mb250LXNpemU6ICN7MTRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS1pbmxpbmUtMy1mb250LXNpemU6ICN7MTZweCArICRkZWx0YX07XG5cbiAgICAtLXlmbS1mb250LXNpemU6IHZhcigtLWctdGV4dC1ib2R5LTItZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LWxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS0yLWxpbmUtaGVpZ2h0KTtcbiAgICAtLXlmbS1mb250LXNpemUtaDI6IHZhcigtLWctdGV4dC1oZWFkZXItMi1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oMzogdmFyKC0tZy10ZXh0LWhlYWRlci0xLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWg0OiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLTMtZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LXNpemUtaDU6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItMi1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oNjogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci0xLWZvbnQtc2l6ZSk7XG59XG4iXX0= */", "@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": ";AAIA,CAAA;AACI,WAAA;AACA,eAAA;AACA,mBAAA;AACA,QAAA,EAAA,EAAA;AAEA,cAAA;AACA,UAAA,KAAA,KAAA,EAAA,IAAA,EAAA;AAAA,UAAA,KAAA,IAAA,yBAAA,EAAA,MAAA,EAAA,IAAA,EAAA;AACA,SAAA,KAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA;AACA,WAAA,IAAA;AACA,OAAA;AAEA,2BAAA;AAAA,mBAAA;AAEA,SAAA,IAAA;AACA,cAAA;AACA,iBAAA;AAAA,iBAAA,IAAA,oBAAA,EAAA;AACA,UAAA;AACA,iBAAA,IAAA,MAAA,IAAA;AACA,WAAA;AAEA,cAAA,UAAA,KAAA,QAAA,EAAA,MAAA,MAAA;AAGA,aAAA,MAAA;AAEA,gBAAA;ACVJ;ADaQ,CA7BR,eA6BQ,KAAA,CAAA,yBAAA;AACI,cAAA,IAAA;ACXZ;ADcQ,CAjCR,eAiCQ,KAAA,CAJA,yBAIA;AACI,cAAA;AACA,aAAA,MAAA;ACZZ;ADeQ,CAtCR,eAsCQ,KAAA,CATA,yBASA;AACI,WAAA,IAAA,EAAA,EAAA,GAAA,EAAA;AAAA,WAAA,IAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA;AACA,iBAAA;AACA,iBAAA;ACbZ;ADiBI,CAAA;AACI,WAAA;AACA,mBAAA;AACA,eAAA;AAEA,UAAA;AACA,SAAA;AChBR;ADmBI,CAAA;AEtDA,aAAA,IAAA;AACA,eAAA,IAAA;AFuDI,SAAA,IAAA;AChBR;ADmBI,CAAA;AACI,WAAA;ACjBR;ADoBI,QAAA,WAAA;AA/DJ,GAAA;AAgEQ,aAAA;ACjBN;AACF;",
|
|
6
6
|
"names": []
|
|
@@ -2,6 +2,7 @@ import type { UseTranslationResponse } from 'react-i18next';
|
|
|
2
2
|
import type { Loc } from '../config/i18n';
|
|
3
3
|
import type { SuggestItemType } from '../components/SearchSuggest/types';
|
|
4
4
|
import type { LabelProps } from '@gravity-ui/uikit';
|
|
5
|
+
import type { AnalyticsEventsProp } from '@gravity-ui/page-constructor';
|
|
5
6
|
export type TFunction = UseTranslationResponse<any, undefined>['t'];
|
|
6
7
|
export type OnChangeValue = (value: ControlTypes) => void;
|
|
7
8
|
export type ControlTypes = string | boolean | Theme | Lang | TextSizes | FeedbackSendData | SubscribeData;
|
|
@@ -122,6 +123,7 @@ export interface TocItem {
|
|
|
122
123
|
items?: TocItem[];
|
|
123
124
|
expanded?: boolean;
|
|
124
125
|
labeled?: boolean;
|
|
126
|
+
analyticsEvents?: AnalyticsEventsProp;
|
|
125
127
|
}
|
|
126
128
|
export interface BreadcrumbItem {
|
|
127
129
|
name: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/models/index.ts"],
|
|
4
|
-
"sourcesContent": ["import type {UseTranslationResponse} from 'react-i18next';\nimport type {Loc} from '../config/i18n';\nimport type {SuggestItemType} from '../components/SearchSuggest/types';\nimport type {LabelProps} from '@gravity-ui/uikit';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type TFunction = UseTranslationResponse<any, undefined>['t'];\n\nexport type OnChangeValue = (value: ControlTypes) => void;\nexport type ControlTypes =\n | string\n | boolean\n | Theme\n | Lang\n | TextSizes\n | FeedbackSendData\n | SubscribeData;\n\nexport enum Theme {\n Light = 'light',\n Dark = 'dark',\n}\n\nexport enum TextSizes {\n S = 's', // 13px\n M = 'm', // 15px\n L = 'l', // 17px\n}\n\nexport enum ControlSizes {\n M = 'm',\n L = 'l',\n XL = 'xl',\n}\n\nexport interface Config {\n lang?: string;\n loc?: Loc;\n localeCode?: string;\n}\n\nexport interface DocSettings {\n fullScreen?: boolean;\n singlePage?: boolean;\n wideFormat?: boolean;\n showMiniToc?: boolean;\n bookmarkedPage?: boolean;\n theme?: Theme;\n textSize?: TextSizes;\n isLiked?: boolean;\n isDisliked?: boolean;\n dislikeVariants?: string[];\n}\n\nexport interface DocBasePageData<T extends {} = {}> {\n toc: T & TocData;\n leading?: boolean;\n footer?: React.ReactNode;\n}\n\nexport interface DocLeadingPageData extends DocBasePageData {\n leading: true;\n data: DocLeadingData;\n}\n\nexport interface DocContentPageData<T extends {} = {}> extends DocBasePageData {\n leading: true;\n data: T & {\n fullScreen?: boolean;\n };\n children?: React.ReactNode;\n}\n\nexport interface DocLeadingData {\n title: string;\n description: string | string[];\n links: DocLeadingLinks[];\n meta: DocMeta;\n}\n\nexport interface DocLeadingLinks {\n title: string;\n description?: string;\n href?: string;\n imgSrc?: string;\n links?: DocLeadingLinks[];\n}\n\nexport enum VcsType {\n Github = 'github',\n Arcanum = 'arcanum',\n}\n\nexport interface DocPageData extends DocBasePageData {\n leading?: false;\n breadcrumbs?: BreadcrumbItem[];\n viewerInterface?: Record<string, boolean>;\n html: string;\n title?: string;\n headings: DocHeadingItem[];\n meta: DocMeta;\n vcsUrl?: string;\n vcsType?: VcsType;\n mdxArtifacts?: Record<string, unknown>;\n}\n\nexport interface DocHeadingItem {\n title: string;\n href: string;\n level: number;\n items?: DocHeadingItem[];\n}\n\nexport interface DocMeta {\n title?: string;\n description?: string;\n keywords?: string[];\n stage?: string;\n editable?: boolean;\n contributors?: Contributor[];\n author?: unknown | Contributor;\n __system?: Record<string, unknown>;\n updatedAt?: string;\n canonical?: string;\n alternate?: Alternate[];\n}\n\nexport interface TocLabel {\n title: string;\n description?: string;\n theme?: LabelProps['theme'];\n}\n\nexport interface TocData {\n title?: string;\n href?: string;\n items?: TocItem[];\n stage?: string;\n editable?: boolean;\n singlePage?: boolean;\n label?: TocLabel;\n extraHeader?: React.ReactNode;\n}\n\nexport interface TocItem {\n id: string;\n name: string;\n href?: string;\n items?: TocItem[];\n expanded?: boolean;\n labeled?: boolean;\n}\n\nexport interface BreadcrumbItem {\n name: string;\n url?: string;\n}\n\nexport interface Router {\n hostname?: string;\n pathname: string;\n hash?: string;\n}\n\nexport enum Lang {\n Ru = 'ru',\n En = 'en',\n He = 'he',\n Es = 'es',\n Fr = 'fr',\n Cs = 'cs',\n Ar = 'ar',\n}\n\nexport interface ExtendedLang {\n lang: `${Lang}` | Lang;\n tld: string;\n href: string;\n}\n\nexport interface LangOptions {\n tld?: string;\n href?: string;\n}\n\nexport type Alternate = {\n href: string;\n hreflang?: string;\n};\n\nexport interface Contributor {\n avatar: string;\n login: string;\n url: string;\n name: string | null;\n email: string | null;\n}\n\nexport interface DislikeData {\n answers: string[];\n comment: string;\n}\n\nexport enum FeedbackType {\n like = 'like',\n dislike = 'dislike',\n indeterminate = 'indeterminate',\n}\n\nexport interface FeedbackSendData {\n type: FeedbackType;\n answers?: string[];\n comment?: string;\n}\n\nexport enum SubscribeType {\n documentation = 'documentation',\n page = 'page',\n}\n\nexport interface SubscribeData {\n email: string;\n type: SubscribeType;\n}\n\nexport enum DocumentType {\n Base = 'BASE',\n Leading = 'LEADING',\n PageConstructor = 'PAGE_CONSTRUCTOR',\n}\n\nexport interface ListItem {\n value: string;\n text: string;\n country?: string;\n disabled?: boolean;\n options?: LangOptions;\n}\n\nexport interface ClassNameProps {\n className?: string;\n}\n\nexport interface ISearchProvider {\n init(): void | (() => void);\n suggest(query: string): Promise<ISearchResult[]>;\n onEmptyAction?(query: string): ISearchResultWithAction | null;\n search(\n query: string,\n ): Promise<ISearchResult[]> | Promise<{items: ISearchResult[]; total: number}>;\n link(query: string): string | null;\n}\n\ninterface ISearchResultBase {\n type: SuggestItemType;\n title: string;\n description?: string;\n breadcrumbs?: BreadcrumbItem[];\n icon?: React.ReactNode;\n hint?: React.ReactNode;\n}\n\nexport interface ISearchResultWithAction extends ISearchResultBase {\n type: SuggestItemType.Action;\n onClick: () => void;\n}\n\nexport interface ISearchResultWithLink extends ISearchResultBase {\n type: Exclude<SuggestItemType, SuggestItemType.Action>;\n link: string;\n}\n\nexport type ISearchResult = ISearchResultWithAction | ISearchResultWithLink;\n\nexport type Query = Record<string, number | string | null>;\n\nexport type AvailableLangs = readonly (`${Lang}` | Lang)[];\n"],
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["import type {UseTranslationResponse} from 'react-i18next';\nimport type {Loc} from '../config/i18n';\nimport type {SuggestItemType} from '../components/SearchSuggest/types';\nimport type {LabelProps} from '@gravity-ui/uikit';\nimport type {AnalyticsEventsProp} from '@gravity-ui/page-constructor';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type TFunction = UseTranslationResponse<any, undefined>['t'];\n\nexport type OnChangeValue = (value: ControlTypes) => void;\nexport type ControlTypes =\n | string\n | boolean\n | Theme\n | Lang\n | TextSizes\n | FeedbackSendData\n | SubscribeData;\n\nexport enum Theme {\n Light = 'light',\n Dark = 'dark',\n}\n\nexport enum TextSizes {\n S = 's', // 13px\n M = 'm', // 15px\n L = 'l', // 17px\n}\n\nexport enum ControlSizes {\n M = 'm',\n L = 'l',\n XL = 'xl',\n}\n\nexport interface Config {\n lang?: string;\n loc?: Loc;\n localeCode?: string;\n}\n\nexport interface DocSettings {\n fullScreen?: boolean;\n singlePage?: boolean;\n wideFormat?: boolean;\n showMiniToc?: boolean;\n bookmarkedPage?: boolean;\n theme?: Theme;\n textSize?: TextSizes;\n isLiked?: boolean;\n isDisliked?: boolean;\n dislikeVariants?: string[];\n}\n\nexport interface DocBasePageData<T extends {} = {}> {\n toc: T & TocData;\n leading?: boolean;\n footer?: React.ReactNode;\n}\n\nexport interface DocLeadingPageData extends DocBasePageData {\n leading: true;\n data: DocLeadingData;\n}\n\nexport interface DocContentPageData<T extends {} = {}> extends DocBasePageData {\n leading: true;\n data: T & {\n fullScreen?: boolean;\n };\n children?: React.ReactNode;\n}\n\nexport interface DocLeadingData {\n title: string;\n description: string | string[];\n links: DocLeadingLinks[];\n meta: DocMeta;\n}\n\nexport interface DocLeadingLinks {\n title: string;\n description?: string;\n href?: string;\n imgSrc?: string;\n links?: DocLeadingLinks[];\n}\n\nexport enum VcsType {\n Github = 'github',\n Arcanum = 'arcanum',\n}\n\nexport interface DocPageData extends DocBasePageData {\n leading?: false;\n breadcrumbs?: BreadcrumbItem[];\n viewerInterface?: Record<string, boolean>;\n html: string;\n title?: string;\n headings: DocHeadingItem[];\n meta: DocMeta;\n vcsUrl?: string;\n vcsType?: VcsType;\n mdxArtifacts?: Record<string, unknown>;\n}\n\nexport interface DocHeadingItem {\n title: string;\n href: string;\n level: number;\n items?: DocHeadingItem[];\n}\n\nexport interface DocMeta {\n title?: string;\n description?: string;\n keywords?: string[];\n stage?: string;\n editable?: boolean;\n contributors?: Contributor[];\n author?: unknown | Contributor;\n __system?: Record<string, unknown>;\n updatedAt?: string;\n canonical?: string;\n alternate?: Alternate[];\n}\n\nexport interface TocLabel {\n title: string;\n description?: string;\n theme?: LabelProps['theme'];\n}\n\nexport interface TocData {\n title?: string;\n href?: string;\n items?: TocItem[];\n stage?: string;\n editable?: boolean;\n singlePage?: boolean;\n label?: TocLabel;\n extraHeader?: React.ReactNode;\n}\n\nexport interface TocItem {\n id: string;\n name: string;\n href?: string;\n items?: TocItem[];\n expanded?: boolean;\n labeled?: boolean;\n analyticsEvents?: AnalyticsEventsProp;\n}\n\nexport interface BreadcrumbItem {\n name: string;\n url?: string;\n}\n\nexport interface Router {\n hostname?: string;\n pathname: string;\n hash?: string;\n}\n\nexport enum Lang {\n Ru = 'ru',\n En = 'en',\n He = 'he',\n Es = 'es',\n Fr = 'fr',\n Cs = 'cs',\n Ar = 'ar',\n}\n\nexport interface ExtendedLang {\n lang: `${Lang}` | Lang;\n tld: string;\n href: string;\n}\n\nexport interface LangOptions {\n tld?: string;\n href?: string;\n}\n\nexport type Alternate = {\n href: string;\n hreflang?: string;\n};\n\nexport interface Contributor {\n avatar: string;\n login: string;\n url: string;\n name: string | null;\n email: string | null;\n}\n\nexport interface DislikeData {\n answers: string[];\n comment: string;\n}\n\nexport enum FeedbackType {\n like = 'like',\n dislike = 'dislike',\n indeterminate = 'indeterminate',\n}\n\nexport interface FeedbackSendData {\n type: FeedbackType;\n answers?: string[];\n comment?: string;\n}\n\nexport enum SubscribeType {\n documentation = 'documentation',\n page = 'page',\n}\n\nexport interface SubscribeData {\n email: string;\n type: SubscribeType;\n}\n\nexport enum DocumentType {\n Base = 'BASE',\n Leading = 'LEADING',\n PageConstructor = 'PAGE_CONSTRUCTOR',\n}\n\nexport interface ListItem {\n value: string;\n text: string;\n country?: string;\n disabled?: boolean;\n options?: LangOptions;\n}\n\nexport interface ClassNameProps {\n className?: string;\n}\n\nexport interface ISearchProvider {\n init(): void | (() => void);\n suggest(query: string): Promise<ISearchResult[]>;\n onEmptyAction?(query: string): ISearchResultWithAction | null;\n search(\n query: string,\n ): Promise<ISearchResult[]> | Promise<{items: ISearchResult[]; total: number}>;\n link(query: string): string | null;\n}\n\ninterface ISearchResultBase {\n type: SuggestItemType;\n title: string;\n description?: string;\n breadcrumbs?: BreadcrumbItem[];\n icon?: React.ReactNode;\n hint?: React.ReactNode;\n}\n\nexport interface ISearchResultWithAction extends ISearchResultBase {\n type: SuggestItemType.Action;\n onClick: () => void;\n}\n\nexport interface ISearchResultWithLink extends ISearchResultBase {\n type: Exclude<SuggestItemType, SuggestItemType.Action>;\n link: string;\n}\n\nexport type ISearchResult = ISearchResultWithAction | ISearchResultWithLink;\n\nexport type Query = Record<string, number | string | null>;\n\nexport type AvailableLangs = readonly (`${Lang}` | Lang)[];\n"],
|
|
5
|
+
"mappings": ";AAmBO,IAAK,QAAL,kBAAKA,WAAL;AACH,EAAAA,OAAA,WAAQ;AACR,EAAAA,OAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,YAAL,kBAAKC,eAAL;AACH,EAAAA,WAAA,OAAI;AACJ,EAAAA,WAAA,OAAI;AACJ,EAAAA,WAAA,OAAI;AAHI,SAAAA;AAAA,GAAA;AAML,IAAK,eAAL,kBAAKC,kBAAL;AACH,EAAAA,cAAA,OAAI;AACJ,EAAAA,cAAA,OAAI;AACJ,EAAAA,cAAA,QAAK;AAHG,SAAAA;AAAA,GAAA;AA2DL,IAAK,UAAL,kBAAKC,aAAL;AACH,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,aAAU;AAFF,SAAAA;AAAA,GAAA;AA6EL,IAAK,OAAL,kBAAKC,UAAL;AACH,EAAAA,MAAA,QAAK;AACL,EAAAA,MAAA,QAAK;AACL,EAAAA,MAAA,QAAK;AACL,EAAAA,MAAA,QAAK;AACL,EAAAA,MAAA,QAAK;AACL,EAAAA,MAAA,QAAK;AACL,EAAAA,MAAA,QAAK;AAPG,SAAAA;AAAA,GAAA;AAuCL,IAAK,eAAL,kBAAKC,kBAAL;AACH,EAAAA,cAAA,UAAO;AACP,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,mBAAgB;AAHR,SAAAA;AAAA,GAAA;AAYL,IAAK,gBAAL,kBAAKC,mBAAL;AACH,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAUL,IAAK,eAAL,kBAAKC,kBAAL;AACH,EAAAA,cAAA,UAAO;AACP,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,qBAAkB;AAHV,SAAAA;AAAA,GAAA;",
|
|
6
6
|
"names": ["Theme", "TextSizes", "ControlSizes", "VcsType", "Lang", "FeedbackType", "SubscribeType", "DocumentType"]
|
|
7
7
|
}
|
|
@@ -31,8 +31,10 @@ export interface YandexMetrikaFn {
|
|
|
31
31
|
export interface YandexMetrikaAdapterConfig {
|
|
32
32
|
id: number;
|
|
33
33
|
params?: YandexMetrikaInitParams;
|
|
34
|
+
key?: string;
|
|
34
35
|
}
|
|
35
36
|
export declare class YandexMetrikaAdapter implements AnalyticsAdapter {
|
|
37
|
+
key: string;
|
|
36
38
|
private config;
|
|
37
39
|
private initialized;
|
|
38
40
|
constructor(config: YandexMetrikaAdapterConfig);
|
|
@@ -7,8 +7,10 @@ import { appendScriptOnce } from "../../script-utils";
|
|
|
7
7
|
var METRIKA_SCRIPT_SRC = "https://mc.yandex.ru/metrika/tag.js";
|
|
8
8
|
var YandexMetrikaAdapter = class {
|
|
9
9
|
constructor(config) {
|
|
10
|
+
__publicField(this, "key");
|
|
10
11
|
__publicField(this, "config");
|
|
11
12
|
__publicField(this, "initialized", false);
|
|
13
|
+
this.key = config.key || String(config.id);
|
|
12
14
|
this.config = config;
|
|
13
15
|
}
|
|
14
16
|
async init() {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/shared/libs/analytics/adapters/yandex-metrika-adapter.ts"],
|
|
4
|
-
"sourcesContent": ["import type {AnalyticsAdapter, AnalyticsParams} from '../types';\n\nimport {appendScriptOnce} from '../../script-utils';\n\nconst METRIKA_SCRIPT_SRC = 'https://mc.yandex.ru/metrika/tag.js';\n\nexport interface YandexMetrikaInitParams {\n accurateTrackBounce?: boolean | number;\n childIframe?: boolean;\n clickmap?: boolean;\n defer?: boolean;\n ecommerce?: boolean | string | string[];\n trackHash?: boolean;\n trackLinks?: boolean;\n trustedDomains?: string[];\n webvisor?: boolean;\n triggerEvent?: boolean;\n sendTitle?: boolean;\n ssr?: boolean;\n experiments?: string;\n}\n\nexport interface YandexMetrikaFn {\n (counter: number, method: 'init', params: YandexMetrikaInitParams): void;\n (counter: number, method: 'addFileExtension', extensions: string | string[]): void;\n (counter: number, method: 'extLink', url: string, options?: Record<string, unknown>): void;\n (counter: number, method: 'file', url: string, options?: Record<string, unknown>): void;\n (counter: number, method: 'getClientID', callback: (clientId: string) => void): void;\n (counter: number, method: 'hit', url: string, options?: Record<string, unknown>): void;\n (counter: number, method: 'notBounce', options?: Record<string, unknown>): void;\n (counter: number, method: 'params', params: Record<string, unknown>): void;\n (counter: number, method: 'reachGoal', goal: string, params?: Record<string, unknown>): void;\n (counter: number, method: 'setUserID', uid: string): void;\n (counter: number, method: 'userParams', params: Record<string, unknown>): void;\n (counter: number, method: string, ...args: unknown[]): void;\n}\n\nexport interface YandexMetrikaAdapterConfig {\n id: number;\n params?: YandexMetrikaInitParams;\n}\n\ninterface YandexMetrikaInternalFn extends YandexMetrikaFn {\n a?: unknown[];\n l?: number;\n}\n\nexport class YandexMetrikaAdapter implements AnalyticsAdapter {\n private config: YandexMetrikaAdapterConfig;\n\n private initialized = false;\n\n constructor(config: YandexMetrikaAdapterConfig) {\n this.config = config;\n }\n\n async init() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n\n try {\n const {id, params = {}} = this.config;\n const ym = getMetrikaFn();\n\n ym(id, 'init', params);\n\n await appendScriptOnce({\n url: METRIKA_SCRIPT_SRC,\n element: document.head,\n defer: false,\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Yandex Metrika load failed', error);\n }\n }\n\n send(event: string, params?: AnalyticsParams) {\n const ym = getMetrikaFn();\n\n ym(this.config.id, 'reachGoal', event, params);\n }\n}\n\nfunction getMetrikaFn(): YandexMetrikaFn {\n const key = 'ym';\n const win = window as Window & typeof globalThis & {ym: YandexMetrikaInternalFn};\n\n if (!win[key]) {\n win[key] = ((...args) => {\n (win[key].a = win[key].a || []).push(args);\n }) as YandexMetrikaInternalFn;\n\n win[key].l = new Date().getTime();\n }\n\n return win[key];\n}\n"],
|
|
5
|
-
"mappings": ";;;;;AAEA,SAAQ,wBAAuB;AAE/B,IAAM,qBAAqB;
|
|
4
|
+
"sourcesContent": ["import type {AnalyticsAdapter, AnalyticsParams} from '../types';\n\nimport {appendScriptOnce} from '../../script-utils';\n\nconst METRIKA_SCRIPT_SRC = 'https://mc.yandex.ru/metrika/tag.js';\n\nexport interface YandexMetrikaInitParams {\n accurateTrackBounce?: boolean | number;\n childIframe?: boolean;\n clickmap?: boolean;\n defer?: boolean;\n ecommerce?: boolean | string | string[];\n trackHash?: boolean;\n trackLinks?: boolean;\n trustedDomains?: string[];\n webvisor?: boolean;\n triggerEvent?: boolean;\n sendTitle?: boolean;\n ssr?: boolean;\n experiments?: string;\n}\n\nexport interface YandexMetrikaFn {\n (counter: number, method: 'init', params: YandexMetrikaInitParams): void;\n (counter: number, method: 'addFileExtension', extensions: string | string[]): void;\n (counter: number, method: 'extLink', url: string, options?: Record<string, unknown>): void;\n (counter: number, method: 'file', url: string, options?: Record<string, unknown>): void;\n (counter: number, method: 'getClientID', callback: (clientId: string) => void): void;\n (counter: number, method: 'hit', url: string, options?: Record<string, unknown>): void;\n (counter: number, method: 'notBounce', options?: Record<string, unknown>): void;\n (counter: number, method: 'params', params: Record<string, unknown>): void;\n (counter: number, method: 'reachGoal', goal: string, params?: Record<string, unknown>): void;\n (counter: number, method: 'setUserID', uid: string): void;\n (counter: number, method: 'userParams', params: Record<string, unknown>): void;\n (counter: number, method: string, ...args: unknown[]): void;\n}\n\nexport interface YandexMetrikaAdapterConfig {\n id: number;\n params?: YandexMetrikaInitParams;\n key?: string;\n}\n\ninterface YandexMetrikaInternalFn extends YandexMetrikaFn {\n a?: unknown[];\n l?: number;\n}\n\nexport class YandexMetrikaAdapter implements AnalyticsAdapter {\n key: string;\n private config: YandexMetrikaAdapterConfig;\n\n private initialized = false;\n\n constructor(config: YandexMetrikaAdapterConfig) {\n this.key = config.key || String(config.id);\n this.config = config;\n }\n\n async init() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n\n try {\n const {id, params = {}} = this.config;\n const ym = getMetrikaFn();\n\n ym(id, 'init', params);\n\n await appendScriptOnce({\n url: METRIKA_SCRIPT_SRC,\n element: document.head,\n defer: false,\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Yandex Metrika load failed', error);\n }\n }\n\n send(event: string, params?: AnalyticsParams) {\n const ym = getMetrikaFn();\n\n ym(this.config.id, 'reachGoal', event, params);\n }\n}\n\nfunction getMetrikaFn(): YandexMetrikaFn {\n const key = 'ym';\n const win = window as Window & typeof globalThis & {ym: YandexMetrikaInternalFn};\n\n if (!win[key]) {\n win[key] = ((...args) => {\n (win[key].a = win[key].a || []).push(args);\n }) as YandexMetrikaInternalFn;\n\n win[key].l = new Date().getTime();\n }\n\n return win[key];\n}\n"],
|
|
5
|
+
"mappings": ";;;;;AAEA,SAAQ,wBAAuB;AAE/B,IAAM,qBAAqB;AA4CpB,IAAM,uBAAN,MAAuD;AAAA,EAM1D,YAAY,QAAoC;AALhD;AACA,wBAAQ;AAER,wBAAQ,eAAc;AAGlB,SAAK,MAAM,OAAO,OAAO,OAAO,OAAO,EAAE;AACzC,SAAK,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO;AACT,QAAI,KAAK,aAAa;AAClB;AAAA,IACJ;AAEA,SAAK,cAAc;AAEnB,QAAI;AACA,YAAM,EAAC,IAAI,SAAS,CAAC,EAAC,IAAI,KAAK;AAC/B,YAAM,KAAK,aAAa;AAExB,SAAG,IAAI,QAAQ,MAAM;AAErB,YAAM,iBAAiB;AAAA,QACnB,KAAK;AAAA,QACL,SAAS,SAAS;AAAA,QAClB,OAAO;AAAA,MACX,CAAC;AAAA,IACL,SAAS,OAAO;AAEZ,cAAQ,MAAM,8BAA8B,KAAK;AAAA,IACrD;AAAA,EACJ;AAAA,EAEA,KAAK,OAAe,QAA0B;AAC1C,UAAM,KAAK,aAAa;AAExB,OAAG,KAAK,OAAO,IAAI,aAAa,OAAO,MAAM;AAAA,EACjD;AACJ;AAEA,SAAS,eAAgC;AACrC,QAAM,MAAM;AACZ,QAAM,MAAM;AAEZ,MAAI,CAAC,IAAI,GAAG,GAAG;AACX,QAAI,GAAG,KAAK,IAAI,SAAS;AACrB,OAAC,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,IAAI;AAAA,IAC7C;AAEA,QAAI,GAAG,EAAE,KAAI,oBAAI,KAAK,GAAE,QAAQ;AAAA,EACpC;AAEA,SAAO,IAAI,GAAG;AAClB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnalyticsAdapter, AnalyticsParams } from './types';
|
|
1
|
+
import type { AnalyticsAdapter, AnalyticsParams, AnalyticsTrackOptions } from './types';
|
|
2
2
|
export interface AnalyticsConfig {
|
|
3
3
|
adapters: AnalyticsAdapter[];
|
|
4
4
|
debug?: boolean;
|
|
@@ -8,5 +8,5 @@ export declare class Analytics {
|
|
|
8
8
|
private initialized;
|
|
9
9
|
constructor(config: AnalyticsConfig);
|
|
10
10
|
init(): Promise<void>;
|
|
11
|
-
track(event: string, params?: AnalyticsParams): void;
|
|
11
|
+
track(event: string, params?: AnalyticsParams, options?: AnalyticsTrackOptions): void;
|
|
12
12
|
}
|
|
@@ -34,8 +34,14 @@ var Analytics = class {
|
|
|
34
34
|
console.error("Failed to initialize the analytics service:", error);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
track(event, params) {
|
|
37
|
+
track(event, params, options) {
|
|
38
38
|
for (const adapter of this.adapters) {
|
|
39
|
+
if (adapter.key && (options == null ? void 0 : options.includeKeys) && !options.includeKeys.includes(adapter.key)) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (adapter.key && (options == null ? void 0 : options.excludeKeys) && options.excludeKeys.includes(adapter.key)) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
39
45
|
adapter.send(event, params);
|
|
40
46
|
}
|
|
41
47
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/shared/libs/analytics/analytics.ts"],
|
|
4
|
-
"sourcesContent": ["import type {AnalyticsAdapter, AnalyticsParams} from './types';\n\nimport {ConsoleAnalyticsAdapter} from './adapters/console-analytics-adapter';\nimport {checkDebugMode} from './utils';\n\nexport interface AnalyticsConfig {\n adapters: AnalyticsAdapter[];\n debug?: boolean;\n}\n\nexport class Analytics {\n private adapters: Set<AnalyticsAdapter>;\n\n private initialized = false;\n\n constructor(config: AnalyticsConfig) {\n this.adapters = new Set(config.adapters);\n this.track = this.track.bind(this);\n\n const isDebug = typeof config.debug === 'boolean' ? config.debug : checkDebugMode();\n\n if (isDebug) {\n this.adapters.add(new ConsoleAnalyticsAdapter());\n }\n }\n\n async init() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n\n try {\n const promises = Array.from(this.adapters, (adapter) => {\n if (typeof adapter.init === 'function') {\n return adapter.init();\n }\n\n return null;\n });\n\n await Promise.all(promises);\n } catch (error) {\n this.initialized = false;\n\n // eslint-disable-next-line no-console\n console.error('Failed to initialize the analytics service:', error);\n }\n }\n\n track(event: string, params?: AnalyticsParams) {\n for (const adapter of this.adapters) {\n adapter.send(event, params);\n }\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;AAEA,SAAQ,+BAA8B;AACtC,SAAQ,sBAAqB;AAOtB,IAAM,YAAN,MAAgB;AAAA,EAKnB,YAAY,QAAyB;AAJrC,wBAAQ;AAER,wBAAQ,eAAc;AAGlB,SAAK,WAAW,IAAI,IAAI,OAAO,QAAQ;AACvC,SAAK,QAAQ,KAAK,MAAM,KAAK,IAAI;AAEjC,UAAM,UAAU,OAAO,OAAO,UAAU,YAAY,OAAO,QAAQ,eAAe;AAElF,QAAI,SAAS;AACT,WAAK,SAAS,IAAI,IAAI,wBAAwB,CAAC;AAAA,IACnD;AAAA,EACJ;AAAA,EAEA,MAAM,OAAO;AACT,QAAI,KAAK,aAAa;AAClB;AAAA,IACJ;AAEA,SAAK,cAAc;AAEnB,QAAI;AACA,YAAM,WAAW,MAAM,KAAK,KAAK,UAAU,CAAC,YAAY;AACpD,YAAI,OAAO,QAAQ,SAAS,YAAY;AACpC,iBAAO,QAAQ,KAAK;AAAA,QACxB;AAEA,eAAO;AAAA,MACX,CAAC;AAED,YAAM,QAAQ,IAAI,QAAQ;AAAA,IAC9B,SAAS,OAAO;AACZ,WAAK,cAAc;AAGnB,cAAQ,MAAM,+CAA+C,KAAK;AAAA,IACtE;AAAA,EACJ;AAAA,EAEA,MAAM,OAAe,QAA0B;
|
|
4
|
+
"sourcesContent": ["import type {AnalyticsAdapter, AnalyticsParams, AnalyticsTrackOptions} from './types';\n\nimport {ConsoleAnalyticsAdapter} from './adapters/console-analytics-adapter';\nimport {checkDebugMode} from './utils';\n\nexport interface AnalyticsConfig {\n adapters: AnalyticsAdapter[];\n debug?: boolean;\n}\n\nexport class Analytics {\n private adapters: Set<AnalyticsAdapter>;\n\n private initialized = false;\n\n constructor(config: AnalyticsConfig) {\n this.adapters = new Set(config.adapters);\n this.track = this.track.bind(this);\n\n const isDebug = typeof config.debug === 'boolean' ? config.debug : checkDebugMode();\n\n if (isDebug) {\n this.adapters.add(new ConsoleAnalyticsAdapter());\n }\n }\n\n async init() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n\n try {\n const promises = Array.from(this.adapters, (adapter) => {\n if (typeof adapter.init === 'function') {\n return adapter.init();\n }\n\n return null;\n });\n\n await Promise.all(promises);\n } catch (error) {\n this.initialized = false;\n\n // eslint-disable-next-line no-console\n console.error('Failed to initialize the analytics service:', error);\n }\n }\n\n track(event: string, params?: AnalyticsParams, options?: AnalyticsTrackOptions) {\n for (const adapter of this.adapters) {\n if (adapter.key && options?.includeKeys && !options.includeKeys.includes(adapter.key)) {\n continue;\n }\n if (adapter.key && options?.excludeKeys && options.excludeKeys.includes(adapter.key)) {\n continue;\n }\n adapter.send(event, params);\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;AAEA,SAAQ,+BAA8B;AACtC,SAAQ,sBAAqB;AAOtB,IAAM,YAAN,MAAgB;AAAA,EAKnB,YAAY,QAAyB;AAJrC,wBAAQ;AAER,wBAAQ,eAAc;AAGlB,SAAK,WAAW,IAAI,IAAI,OAAO,QAAQ;AACvC,SAAK,QAAQ,KAAK,MAAM,KAAK,IAAI;AAEjC,UAAM,UAAU,OAAO,OAAO,UAAU,YAAY,OAAO,QAAQ,eAAe;AAElF,QAAI,SAAS;AACT,WAAK,SAAS,IAAI,IAAI,wBAAwB,CAAC;AAAA,IACnD;AAAA,EACJ;AAAA,EAEA,MAAM,OAAO;AACT,QAAI,KAAK,aAAa;AAClB;AAAA,IACJ;AAEA,SAAK,cAAc;AAEnB,QAAI;AACA,YAAM,WAAW,MAAM,KAAK,KAAK,UAAU,CAAC,YAAY;AACpD,YAAI,OAAO,QAAQ,SAAS,YAAY;AACpC,iBAAO,QAAQ,KAAK;AAAA,QACxB;AAEA,eAAO;AAAA,MACX,CAAC;AAED,YAAM,QAAQ,IAAI,QAAQ;AAAA,IAC9B,SAAS,OAAO;AACZ,WAAK,cAAc;AAGnB,cAAQ,MAAM,+CAA+C,KAAK;AAAA,IACtE;AAAA,EACJ;AAAA,EAEA,MAAM,OAAe,QAA0B,SAAiC;AAC5E,eAAW,WAAW,KAAK,UAAU;AACjC,UAAI,QAAQ,QAAO,mCAAS,gBAAe,CAAC,QAAQ,YAAY,SAAS,QAAQ,GAAG,GAAG;AACnF;AAAA,MACJ;AACA,UAAI,QAAQ,QAAO,mCAAS,gBAAe,QAAQ,YAAY,SAAS,QAAQ,GAAG,GAAG;AAClF;AAAA,MACJ;AACA,cAAQ,KAAK,OAAO,MAAM;AAAA,IAC9B;AAAA,EACJ;AACJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -14,5 +14,9 @@ export declare enum CommonAnalyticsEvent {
|
|
|
14
14
|
DOCS_HEADER_SANDWICH_MENU_CLICK = "DOCS_HEADER-SANDWICH-MENU_CLICK",
|
|
15
15
|
DOCS_WIDESCREEN_MODE_CLICK = "DOCS_WIDESCREEN-MODE_CLICK",
|
|
16
16
|
DOCS_HIDE_PAGE_NAV_CLICK = "DOCS_HIDE-PAGE-NAV_CLICK",
|
|
17
|
-
DOCS_FONTSIZE_MODE_CLICK = "DOCS_FONTSIZE-MODE_CLICK"
|
|
17
|
+
DOCS_FONTSIZE_MODE_CLICK = "DOCS_FONTSIZE-MODE_CLICK",
|
|
18
|
+
DOCS_NEUROEXPERT_ACTION = "DOCS_NEUROEXPERT_ACTION"
|
|
18
19
|
}
|
|
20
|
+
export declare const DefaultAnalyticsEventNames: {
|
|
21
|
+
readonly DOCS_TOC_ITEM_CLICK: "DOCS_TOC_ITEM_CLICK";
|
|
22
|
+
};
|
|
@@ -16,9 +16,14 @@ var CommonAnalyticsEvent = /* @__PURE__ */ ((CommonAnalyticsEvent2) => {
|
|
|
16
16
|
CommonAnalyticsEvent2["DOCS_WIDESCREEN_MODE_CLICK"] = "DOCS_WIDESCREEN-MODE_CLICK";
|
|
17
17
|
CommonAnalyticsEvent2["DOCS_HIDE_PAGE_NAV_CLICK"] = "DOCS_HIDE-PAGE-NAV_CLICK";
|
|
18
18
|
CommonAnalyticsEvent2["DOCS_FONTSIZE_MODE_CLICK"] = "DOCS_FONTSIZE-MODE_CLICK";
|
|
19
|
+
CommonAnalyticsEvent2["DOCS_NEUROEXPERT_ACTION"] = "DOCS_NEUROEXPERT_ACTION";
|
|
19
20
|
return CommonAnalyticsEvent2;
|
|
20
21
|
})(CommonAnalyticsEvent || {});
|
|
22
|
+
var DefaultAnalyticsEventNames = {
|
|
23
|
+
DOCS_TOC_ITEM_CLICK: "DOCS_TOC_ITEM_CLICK"
|
|
24
|
+
};
|
|
21
25
|
export {
|
|
22
|
-
CommonAnalyticsEvent
|
|
26
|
+
CommonAnalyticsEvent,
|
|
27
|
+
DefaultAnalyticsEventNames
|
|
23
28
|
};
|
|
24
29
|
//# sourceMappingURL=constant.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/shared/libs/analytics/constant.ts"],
|
|
4
|
-
"sourcesContent": ["export enum CommonAnalyticsEvent {\n DOCS_EDIT_IN_VCS_CLICK = 'DOCS_EDIT-IN-VCS_CLICK',\n DOCS_READING_MODE_CLICK = 'DOCS_READING-MODE_CLICK',\n DOCS_FOOTER_LIKE_CLICK = 'DOCS_FOOTER-LIKE_CLICK',\n DOCS_FOOTER_DISLIKE_CLICK = 'DOCS_FOOTER-DISLIKE_CLICK',\n DOCS_ASIDE_LIKE_CLICK = 'DOCS_ASIDE-LIKE_CLICK',\n DOCS_ASIDE_DISLIKE_CLICK = 'DOCS_ASIDE-DISLIKE_CLICK',\n DOCS_SEARCH_CLICK = 'DOCS_SEARCH_CLICK',\n DOCS_FOOTER_NEXT_CLICK = 'DOCS_FOOTER-NEXT_CLICK',\n DOCS_FOOTER_PREV_CLICK = 'DOCS_FOOTER-PREV_CLICK',\n DOCS_LANG_CLICK = 'DOCS_LANG_CLICK',\n DOCS_HEADER_SETTINGS_CLICK = 'DOCS_HEADER-SETTINGS_CLICK',\n DOCS_HEADER_LOGO_CLICK = 'DOCS_HEADER-LOGO_CLICK',\n DOCS_HEADER_SANDWICH_MENU_CLICK = 'DOCS_HEADER-SANDWICH-MENU_CLICK',\n DOCS_WIDESCREEN_MODE_CLICK = 'DOCS_WIDESCREEN-MODE_CLICK',\n DOCS_HIDE_PAGE_NAV_CLICK = 'DOCS_HIDE-PAGE-NAV_CLICK',\n DOCS_FONTSIZE_MODE_CLICK = 'DOCS_FONTSIZE-MODE_CLICK',\n}\n"],
|
|
5
|
-
"mappings": ";AAAO,IAAK,uBAAL,kBAAKA,0BAAL;AACH,EAAAA,sBAAA,4BAAyB;AACzB,EAAAA,sBAAA,6BAA0B;AAC1B,EAAAA,sBAAA,4BAAyB;AACzB,EAAAA,sBAAA,+BAA4B;AAC5B,EAAAA,sBAAA,2BAAwB;AACxB,EAAAA,sBAAA,8BAA2B;AAC3B,EAAAA,sBAAA,uBAAoB;AACpB,EAAAA,sBAAA,4BAAyB;AACzB,EAAAA,sBAAA,4BAAyB;AACzB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,gCAA6B;AAC7B,EAAAA,sBAAA,4BAAyB;AACzB,EAAAA,sBAAA,qCAAkC;AAClC,EAAAA,sBAAA,gCAA6B;AAC7B,EAAAA,sBAAA,8BAA2B;AAC3B,EAAAA,sBAAA,8BAA2B;
|
|
4
|
+
"sourcesContent": ["export enum CommonAnalyticsEvent {\n DOCS_EDIT_IN_VCS_CLICK = 'DOCS_EDIT-IN-VCS_CLICK',\n DOCS_READING_MODE_CLICK = 'DOCS_READING-MODE_CLICK',\n DOCS_FOOTER_LIKE_CLICK = 'DOCS_FOOTER-LIKE_CLICK',\n DOCS_FOOTER_DISLIKE_CLICK = 'DOCS_FOOTER-DISLIKE_CLICK',\n DOCS_ASIDE_LIKE_CLICK = 'DOCS_ASIDE-LIKE_CLICK',\n DOCS_ASIDE_DISLIKE_CLICK = 'DOCS_ASIDE-DISLIKE_CLICK',\n DOCS_SEARCH_CLICK = 'DOCS_SEARCH_CLICK',\n DOCS_FOOTER_NEXT_CLICK = 'DOCS_FOOTER-NEXT_CLICK',\n DOCS_FOOTER_PREV_CLICK = 'DOCS_FOOTER-PREV_CLICK',\n DOCS_LANG_CLICK = 'DOCS_LANG_CLICK',\n DOCS_HEADER_SETTINGS_CLICK = 'DOCS_HEADER-SETTINGS_CLICK',\n DOCS_HEADER_LOGO_CLICK = 'DOCS_HEADER-LOGO_CLICK',\n DOCS_HEADER_SANDWICH_MENU_CLICK = 'DOCS_HEADER-SANDWICH-MENU_CLICK',\n DOCS_WIDESCREEN_MODE_CLICK = 'DOCS_WIDESCREEN-MODE_CLICK',\n DOCS_HIDE_PAGE_NAV_CLICK = 'DOCS_HIDE-PAGE-NAV_CLICK',\n DOCS_FONTSIZE_MODE_CLICK = 'DOCS_FONTSIZE-MODE_CLICK',\n DOCS_NEUROEXPERT_ACTION = 'DOCS_NEUROEXPERT_ACTION',\n}\n\nexport const DefaultAnalyticsEventNames = {\n DOCS_TOC_ITEM_CLICK: 'DOCS_TOC_ITEM_CLICK',\n} as const;\n"],
|
|
5
|
+
"mappings": ";AAAO,IAAK,uBAAL,kBAAKA,0BAAL;AACH,EAAAA,sBAAA,4BAAyB;AACzB,EAAAA,sBAAA,6BAA0B;AAC1B,EAAAA,sBAAA,4BAAyB;AACzB,EAAAA,sBAAA,+BAA4B;AAC5B,EAAAA,sBAAA,2BAAwB;AACxB,EAAAA,sBAAA,8BAA2B;AAC3B,EAAAA,sBAAA,uBAAoB;AACpB,EAAAA,sBAAA,4BAAyB;AACzB,EAAAA,sBAAA,4BAAyB;AACzB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,gCAA6B;AAC7B,EAAAA,sBAAA,4BAAyB;AACzB,EAAAA,sBAAA,qCAAkC;AAClC,EAAAA,sBAAA,gCAA6B;AAC7B,EAAAA,sBAAA,8BAA2B;AAC3B,EAAAA,sBAAA,8BAA2B;AAC3B,EAAAA,sBAAA,6BAA0B;AAjBlB,SAAAA;AAAA,GAAA;AAoBL,IAAM,6BAA6B;AAAA,EACtC,qBAAqB;AACzB;",
|
|
6
6
|
"names": ["CommonAnalyticsEvent"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export type { AnalyticsAdapter, AnalyticsParams } from './types';
|
|
1
|
+
export type { AnalyticsAdapter, AnalyticsParams, AnalyticsTrackOptions } from './types';
|
|
2
2
|
export { YandexMetrikaAdapter, type YandexMetrikaAdapterConfig, type YandexMetrikaInitParams, } from './adapters/yandex-metrika-adapter';
|
|
3
3
|
export { Analytics, type AnalyticsConfig } from './analytics';
|
|
4
|
-
export { CommonAnalyticsEvent } from './constant';
|
|
4
|
+
export { CommonAnalyticsEvent, DefaultAnalyticsEventNames } from './constant';
|
|
5
5
|
export { AnalyticsProvider, useAnalytics } from './react/analytics-provider';
|
|
@@ -3,12 +3,13 @@ import {
|
|
|
3
3
|
YandexMetrikaAdapter
|
|
4
4
|
} from "./adapters/yandex-metrika-adapter";
|
|
5
5
|
import { Analytics } from "./analytics";
|
|
6
|
-
import { CommonAnalyticsEvent } from "./constant";
|
|
6
|
+
import { CommonAnalyticsEvent, DefaultAnalyticsEventNames } from "./constant";
|
|
7
7
|
import { AnalyticsProvider, useAnalytics } from "./react/analytics-provider";
|
|
8
8
|
export {
|
|
9
9
|
Analytics,
|
|
10
10
|
AnalyticsProvider,
|
|
11
11
|
CommonAnalyticsEvent,
|
|
12
|
+
DefaultAnalyticsEventNames,
|
|
12
13
|
YandexMetrikaAdapter,
|
|
13
14
|
useAnalytics
|
|
14
15
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/shared/libs/analytics/index.ts"],
|
|
4
|
-
"sourcesContent": ["export type {AnalyticsAdapter, AnalyticsParams} from './types';\nexport {\n YandexMetrikaAdapter,\n type YandexMetrikaAdapterConfig,\n type YandexMetrikaInitParams,\n} from './adapters/yandex-metrika-adapter';\nexport {Analytics, type AnalyticsConfig} from './analytics';\nexport {CommonAnalyticsEvent} from './constant';\nexport {AnalyticsProvider, useAnalytics} from './react/analytics-provider';\n"],
|
|
5
|
-
"mappings": ";AACA;AAAA,EACI;AAAA,OAGG;AACP,SAAQ,iBAAsC;AAC9C,SAAQ,
|
|
4
|
+
"sourcesContent": ["export type {AnalyticsAdapter, AnalyticsParams, AnalyticsTrackOptions} from './types';\nexport {\n YandexMetrikaAdapter,\n type YandexMetrikaAdapterConfig,\n type YandexMetrikaInitParams,\n} from './adapters/yandex-metrika-adapter';\nexport {Analytics, type AnalyticsConfig} from './analytics';\nexport {CommonAnalyticsEvent, DefaultAnalyticsEventNames} from './constant';\nexport {AnalyticsProvider, useAnalytics} from './react/analytics-provider';\n"],
|
|
5
|
+
"mappings": ";AACA;AAAA,EACI;AAAA,OAGG;AACP,SAAQ,iBAAsC;AAC9C,SAAQ,sBAAsB,kCAAiC;AAC/D,SAAQ,mBAAmB,oBAAmB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
export type AnalyticsParams = Record<string, unknown>;
|
|
2
|
+
export type AnalyticsTrackOptions = {
|
|
3
|
+
includeKeys?: string[];
|
|
4
|
+
excludeKeys?: string[];
|
|
5
|
+
};
|
|
2
6
|
export interface AnalyticsAdapter {
|
|
3
7
|
init?(): void | PromiseLike<void>;
|
|
8
|
+
key?: string;
|
|
4
9
|
send(event: string, params?: AnalyticsParams): void;
|
|
5
10
|
}
|